Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / screenlock_private / screenlock_private_api.h
1 // Copyright 2013 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_EXTENSIONS_API_SCREENLOCK_PRIVATE_SCREENLOCK_PRIVATE_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_SCREENLOCK_PRIVATE_SCREENLOCK_PRIVATE_API_H_
7
8 #include <string>
9
10 #include "chrome/browser/extensions/chrome_extension_function.h"
11 #include "chrome/browser/signin/screenlock_bridge.h"
12 #include "extensions/browser/browser_context_keyed_api_factory.h"
13
14 namespace extensions {
15
16 class ScreenlockPrivateGetLockedFunction : public ChromeAsyncExtensionFunction {
17  public:
18   DECLARE_EXTENSION_FUNCTION("screenlockPrivate.getLocked",
19                              SCREENLOCKPRIVATE_GETLOCKED)
20   ScreenlockPrivateGetLockedFunction();
21   virtual bool RunAsync() OVERRIDE;
22
23  private:
24   virtual ~ScreenlockPrivateGetLockedFunction();
25   DISALLOW_COPY_AND_ASSIGN(ScreenlockPrivateGetLockedFunction);
26 };
27
28 class ScreenlockPrivateSetLockedFunction : public ChromeAsyncExtensionFunction {
29  public:
30   DECLARE_EXTENSION_FUNCTION("screenlockPrivate.setLocked",
31                              SCREENLOCKPRIVATE_SETLOCKED)
32   ScreenlockPrivateSetLockedFunction();
33   virtual bool RunAsync() OVERRIDE;
34
35  private:
36   virtual ~ScreenlockPrivateSetLockedFunction();
37   DISALLOW_COPY_AND_ASSIGN(ScreenlockPrivateSetLockedFunction);
38 };
39
40 class ScreenlockPrivateAcceptAuthAttemptFunction
41     : public ChromeSyncExtensionFunction {
42  public:
43   DECLARE_EXTENSION_FUNCTION("screenlockPrivate.acceptAuthAttempt",
44                              SCREENLOCKPRIVATE_ACCEPTAUTHATTEMPT)
45   ScreenlockPrivateAcceptAuthAttemptFunction();
46   virtual bool RunSync() OVERRIDE;
47
48  private:
49   virtual ~ScreenlockPrivateAcceptAuthAttemptFunction();
50   DISALLOW_COPY_AND_ASSIGN(ScreenlockPrivateAcceptAuthAttemptFunction);
51 };
52
53 class ScreenlockPrivateEventRouter : public extensions::BrowserContextKeyedAPI,
54                                      public ScreenlockBridge::Observer {
55  public:
56   explicit ScreenlockPrivateEventRouter(content::BrowserContext* context);
57   virtual ~ScreenlockPrivateEventRouter();
58
59   bool OnAuthAttempted(ScreenlockBridge::LockHandler::AuthType auth_type,
60                        const std::string& value);
61
62   // BrowserContextKeyedAPI
63   static extensions::BrowserContextKeyedAPIFactory<
64       ScreenlockPrivateEventRouter>*
65       GetFactoryInstance();
66   virtual void Shutdown() OVERRIDE;
67
68   // ScreenlockBridge::Observer
69   virtual void OnScreenDidLock() OVERRIDE;
70   virtual void OnScreenDidUnlock() OVERRIDE;
71   virtual void OnFocusedUserChanged(const std::string& user_id) OVERRIDE;
72
73  private:
74   friend class extensions::BrowserContextKeyedAPIFactory<
75       ScreenlockPrivateEventRouter>;
76
77   // BrowserContextKeyedAPI
78   static const char* service_name() {
79     return "ScreenlockPrivateEventRouter";
80   }
81   static const bool kServiceIsNULLWhileTesting = true;
82   static const bool kServiceRedirectedInIncognito = true;
83
84   void DispatchEvent(const std::string& event_name, base::Value* arg);
85
86   content::BrowserContext* browser_context_;
87   DISALLOW_COPY_AND_ASSIGN(ScreenlockPrivateEventRouter);
88 };
89
90 }  // namespace extensions
91
92 #endif  // CHROME_BROWSER_EXTENSIONS_API_SCREENLOCK_PRIVATE_SCREENLOCK_PRIVATE_API_H_