Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / gcd_private / gcd_private_api.h
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_EXTENSIONS_API_GCD_PRIVATE_GCD_PRIVATE_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_GCD_PRIVATE_GCD_PRIVATE_API_H_
7
8 #include "base/memory/scoped_ptr.h"
9 #include "chrome/browser/extensions/chrome_extension_function.h"
10 #include "chrome/browser/local_discovery/cloud_device_list_delegate.h"
11 #include "chrome/common/extensions/api/gcd_private.h"
12 #include "extensions/browser/browser_context_keyed_api_factory.h"
13
14 namespace local_discovery {
15 class GCDApiFlow;
16 }
17
18 namespace extensions {
19
20 class GcdPrivateAPIImpl;
21
22 class GcdPrivateAPI : public BrowserContextKeyedAPI {
23  public:
24   class GCDApiFlowFactoryForTests {
25    public:
26     virtual ~GCDApiFlowFactoryForTests() {}
27
28     virtual scoped_ptr<local_discovery::GCDApiFlow> CreateGCDApiFlow() = 0;
29   };
30
31   explicit GcdPrivateAPI(content::BrowserContext* context);
32   virtual ~GcdPrivateAPI();
33
34   static void SetGCDApiFlowFactoryForTests(GCDApiFlowFactoryForTests* factory);
35
36   // BrowserContextKeyedAPI implementation.
37   static BrowserContextKeyedAPIFactory<GcdPrivateAPI>* GetFactoryInstance();
38
39  private:
40   friend class BrowserContextKeyedAPIFactory<GcdPrivateAPI>;
41   friend class GcdPrivateAPIImpl;
42
43   // BrowserContextKeyedAPI implementation.
44   static const char* service_name() { return "GcdPrivateAPI"; }
45
46   scoped_ptr<GcdPrivateAPIImpl> impl_;
47 };
48
49 class GcdPrivateGetCloudDeviceListFunction
50     : public ChromeAsyncExtensionFunction,
51       public local_discovery::CloudDeviceListDelegate {
52  public:
53   DECLARE_EXTENSION_FUNCTION("gcdPrivate.getCloudDeviceList",
54                              GCDPRIVATE_GETCLOUDDEVICELIST)
55
56   GcdPrivateGetCloudDeviceListFunction();
57
58  protected:
59   virtual ~GcdPrivateGetCloudDeviceListFunction();
60
61   // AsyncExtensionFunction overrides.
62   virtual bool RunAsync() OVERRIDE;
63
64  private:
65   // CloudDeviceListDelegate implementation
66   virtual void OnDeviceListReady(const DeviceList& devices) OVERRIDE;
67   virtual void OnDeviceListUnavailable() OVERRIDE;
68
69   void CheckListingDone();
70
71   int requests_succeeded_;
72   int requests_failed_;
73   DeviceList devices_;
74
75   scoped_ptr<local_discovery::GCDApiFlow> printer_list_;
76   scoped_ptr<local_discovery::GCDApiFlow> device_list_;
77 };
78
79 class GcdPrivateQueryForNewLocalDevicesFunction
80     : public ChromeSyncExtensionFunction {
81  public:
82   DECLARE_EXTENSION_FUNCTION("gcdPrivate.queryForNewLocalDevices",
83                              GCDPRIVATE_QUERYFORNEWLOCALDEVICES)
84
85   GcdPrivateQueryForNewLocalDevicesFunction();
86
87  protected:
88   virtual ~GcdPrivateQueryForNewLocalDevicesFunction();
89
90   // SyncExtensionFunction overrides.
91   virtual bool RunSync() OVERRIDE;
92 };
93
94 class GcdPrivatePrefetchWifiPasswordFunction
95     : public ChromeAsyncExtensionFunction {
96  public:
97   DECLARE_EXTENSION_FUNCTION("gcdPrivate.prefetchWifiPassword",
98                              GCDPRIVATE_PREFETCHWIFIPASSWORD)
99
100   GcdPrivatePrefetchWifiPasswordFunction();
101
102  protected:
103   virtual ~GcdPrivatePrefetchWifiPasswordFunction();
104
105   // AsyncExtensionFunction overrides.
106   virtual bool RunAsync() OVERRIDE;
107
108   void OnResponse(bool response);
109 };
110
111 class GcdPrivateGetPrefetchedWifiNameListFunction
112     : public ChromeSyncExtensionFunction {
113  public:
114   DECLARE_EXTENSION_FUNCTION("gcdPrivate.getPrefetchedWifiNameList",
115                              GCDPRIVATE_GETPREFETCHEDWIFINAMELIST);
116
117   GcdPrivateGetPrefetchedWifiNameListFunction();
118
119  protected:
120   virtual ~GcdPrivateGetPrefetchedWifiNameListFunction();
121
122   // SyncExtensionFunction overrides.
123   virtual bool RunSync() OVERRIDE;
124 };
125
126 class GcdPrivateEstablishSessionFunction : public ChromeAsyncExtensionFunction {
127  public:
128   DECLARE_EXTENSION_FUNCTION("gcdPrivate.establishSession",
129                              GCDPRIVATE_ESTABLISHSESSION)
130
131   GcdPrivateEstablishSessionFunction();
132
133  protected:
134   virtual ~GcdPrivateEstablishSessionFunction();
135
136   // AsyncExtensionFunction overrides.
137   virtual bool RunAsync() OVERRIDE;
138
139  private:
140   void OnConfirmCodeCallback(
141       int session_id,
142       api::gcd_private::Status status,
143       const std::string& confirm_code,
144       api::gcd_private::ConfirmationType confirmation_type);
145 };
146
147 class GcdPrivateConfirmCodeFunction : public ChromeAsyncExtensionFunction {
148  public:
149   DECLARE_EXTENSION_FUNCTION("gcdPrivate.confirmCode", GCDPRIVATE_CONFIRMCODE)
150
151   GcdPrivateConfirmCodeFunction();
152
153  protected:
154   virtual ~GcdPrivateConfirmCodeFunction();
155
156   // AsyncExtensionFunction overrides.
157   virtual bool RunAsync() OVERRIDE;
158
159  private:
160   void OnSessionEstablishedCallback(api::gcd_private::Status status);
161 };
162
163 class GcdPrivateSendMessageFunction : public ChromeAsyncExtensionFunction {
164  public:
165   DECLARE_EXTENSION_FUNCTION("gcdPrivate.sendMessage", GCDPRIVATE_SENDMESSAGE)
166
167   GcdPrivateSendMessageFunction();
168
169  protected:
170   virtual ~GcdPrivateSendMessageFunction();
171
172   // AsyncExtensionFunction overrides.
173   virtual bool RunAsync() OVERRIDE;
174
175  private:
176   void OnMessageSentCallback(api::gcd_private::Status status,
177                              const base::DictionaryValue& value);
178 };
179
180 class GcdPrivateTerminateSessionFunction : public ChromeAsyncExtensionFunction {
181  public:
182   DECLARE_EXTENSION_FUNCTION("gcdPrivate.terminateSession",
183                              GCDPRIVATE_TERMINATESESSION)
184
185   GcdPrivateTerminateSessionFunction();
186
187  protected:
188   virtual ~GcdPrivateTerminateSessionFunction();
189
190   // AsyncExtensionFunction overrides.
191   virtual bool RunAsync() OVERRIDE;
192 };
193
194 class GcdPrivateGetCommandDefinitionsFunction
195     : public ChromeAsyncExtensionFunction {
196  public:
197   DECLARE_EXTENSION_FUNCTION("gcdPrivate.getCommandDefinitions",
198                              GCDPRIVATE_GETCOMMANDDEFINITIONS)
199
200   GcdPrivateGetCommandDefinitionsFunction();
201
202  protected:
203   virtual ~GcdPrivateGetCommandDefinitionsFunction();
204
205   // AsyncExtensionFunction overrides.
206   virtual bool RunAsync() OVERRIDE;
207
208  private:
209 };
210
211 class GcdPrivateInsertCommandFunction : public ChromeAsyncExtensionFunction {
212  public:
213   DECLARE_EXTENSION_FUNCTION("gcdPrivate.insertCommand",
214                              GCDPRIVATE_INSERTCOMMAND)
215
216   GcdPrivateInsertCommandFunction();
217
218  protected:
219   virtual ~GcdPrivateInsertCommandFunction();
220
221   // AsyncExtensionFunction overrides.
222   virtual bool RunAsync() OVERRIDE;
223
224  private:
225 };
226
227 class GcdPrivateGetCommandFunction : public ChromeAsyncExtensionFunction {
228  public:
229   DECLARE_EXTENSION_FUNCTION("gcdPrivate.getCommand", GCDPRIVATE_GETCOMMAND)
230
231   GcdPrivateGetCommandFunction();
232
233  protected:
234   virtual ~GcdPrivateGetCommandFunction();
235
236   // AsyncExtensionFunction overrides.
237   virtual bool RunAsync() OVERRIDE;
238
239  private:
240 };
241
242 class GcdPrivateCancelCommandFunction : public ChromeAsyncExtensionFunction {
243  public:
244   DECLARE_EXTENSION_FUNCTION("gcdPrivate.cancelCommand",
245                              GCDPRIVATE_CANCELCOMMAND)
246
247   GcdPrivateCancelCommandFunction();
248
249  protected:
250   virtual ~GcdPrivateCancelCommandFunction();
251
252   // AsyncExtensionFunction overrides.
253   virtual bool RunAsync() OVERRIDE;
254
255  private:
256 };
257
258 class GcdPrivateGetCommandsListFunction : public ChromeAsyncExtensionFunction {
259  public:
260   DECLARE_EXTENSION_FUNCTION("gcdPrivate.getCommandsList",
261                              GCDPRIVATE_GETCOMMANDSLIST)
262
263   GcdPrivateGetCommandsListFunction();
264
265  protected:
266   virtual ~GcdPrivateGetCommandsListFunction();
267
268   // AsyncExtensionFunction overrides.
269   virtual bool RunAsync() OVERRIDE;
270
271  private:
272 };
273
274 }  // namespace extensions
275
276 #endif  // CHROME_BROWSER_EXTENSIONS_API_GCD_PRIVATE_GCD_PRIVATE_API_H_