Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / cloud_print_private / cloud_print_private_api.h
1 // Copyright (c) 2012 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_CLOUD_PRINT_PRIVATE_CLOUD_PRINT_PRIVATE_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_CLOUD_PRINT_PRIVATE_CLOUD_PRINT_PRIVATE_API_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "chrome/browser/extensions/chrome_extension_function.h"
12
13 namespace extensions {
14
15 namespace api {
16 namespace cloud_print_private {
17
18 struct UserSettings;
19
20 }  // namespace cloud_print_private
21 }  // namespace api
22
23
24 // For use only in tests.
25 class CloudPrintTestsDelegate {
26  public:
27   CloudPrintTestsDelegate();
28   virtual ~CloudPrintTestsDelegate();
29
30   virtual void SetupConnector(
31       const std::string& user_email,
32       const std::string& robot_email,
33       const std::string& credentials,
34       const api::cloud_print_private::UserSettings& user_settings) = 0;
35
36   virtual std::string GetHostName() = 0;
37
38   virtual std::string GetClientId() = 0;
39
40   virtual std::vector<std::string> GetPrinters() = 0;
41
42   static CloudPrintTestsDelegate* instance();
43
44  private:
45   // Points to single instance of this class during testing.
46   static CloudPrintTestsDelegate* instance_;
47 };
48
49 class CloudPrintPrivateSetupConnectorFunction
50     : public ChromeAsyncExtensionFunction {
51  public:
52   DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.setupConnector",
53                              CLOUDPRINTPRIVATE_SETUPCONNECTOR)
54
55   CloudPrintPrivateSetupConnectorFunction();
56
57  protected:
58   ~CloudPrintPrivateSetupConnectorFunction() override;
59
60   // ExtensionFunction:
61   bool RunAsync() override;
62 };
63
64 class CloudPrintPrivateGetHostNameFunction
65     : public ChromeAsyncExtensionFunction {
66  public:
67   DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getHostName",
68                              CLOUDPRINTPRIVATE_GETHOSTNAME)
69
70   CloudPrintPrivateGetHostNameFunction();
71
72  protected:
73   ~CloudPrintPrivateGetHostNameFunction() override;
74
75   // ExtensionFunction:
76   bool RunAsync() override;
77 };
78
79 class CloudPrintPrivateGetPrintersFunction
80     : public ChromeAsyncExtensionFunction {
81  public:
82   DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getPrinters",
83                              CLOUDPRINTPRIVATE_GETPRINTERS)
84
85   CloudPrintPrivateGetPrintersFunction();
86
87  protected:
88   ~CloudPrintPrivateGetPrintersFunction() override;
89
90  private:
91   void SendResults(const std::vector<std::string>& printers);
92
93   // ExtensionFunction:
94   bool RunAsync() override;
95 };
96
97 class CloudPrintPrivateGetClientIdFunction
98     : public ChromeAsyncExtensionFunction {
99  public:
100   DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getClientId",
101                              CLOUDPRINTPRIVATE_GETCLIENTID);
102
103   CloudPrintPrivateGetClientIdFunction();
104
105  protected:
106   ~CloudPrintPrivateGetClientIdFunction() override;
107
108   // ExtensionFunction:
109   bool RunAsync() override;
110 };
111
112 }  // namespace extensions
113
114 #endif  // CHROME_BROWSER_EXTENSIONS_API_CLOUD_PRINT_PRIVATE_CLOUD_PRINT_PRIVATE_API_H_