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
13namespace extensions {
14
15namespace api {
16namespace cloud_print_private {
17
18struct UserSettings;
19
20}  // namespace cloud_print_private
21}  // namespace api
22
23
24// For use only in tests.
25class 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
49class CloudPrintPrivateSetupConnectorFunction
50    : public ChromeAsyncExtensionFunction {
51 public:
52  DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.setupConnector",
53                             CLOUDPRINTPRIVATE_SETUPCONNECTOR)
54
55  CloudPrintPrivateSetupConnectorFunction();
56
57 protected:
58  virtual ~CloudPrintPrivateSetupConnectorFunction();
59
60  // ExtensionFunction:
61  virtual bool RunAsync() OVERRIDE;
62};
63
64class CloudPrintPrivateGetHostNameFunction
65    : public ChromeAsyncExtensionFunction {
66 public:
67  DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getHostName",
68                             CLOUDPRINTPRIVATE_GETHOSTNAME)
69
70  CloudPrintPrivateGetHostNameFunction();
71
72 protected:
73  virtual ~CloudPrintPrivateGetHostNameFunction();
74
75  // ExtensionFunction:
76  virtual bool RunAsync() OVERRIDE;
77};
78
79class CloudPrintPrivateGetPrintersFunction
80    : public ChromeAsyncExtensionFunction {
81 public:
82  DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getPrinters",
83                             CLOUDPRINTPRIVATE_GETPRINTERS)
84
85  CloudPrintPrivateGetPrintersFunction();
86
87 protected:
88  virtual ~CloudPrintPrivateGetPrintersFunction();
89
90 private:
91  void SendResults(const std::vector<std::string>& printers);
92
93  // ExtensionFunction:
94  virtual bool RunAsync() OVERRIDE;
95};
96
97class CloudPrintPrivateGetClientIdFunction
98    : public ChromeAsyncExtensionFunction {
99 public:
100  DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getClientId",
101                             CLOUDPRINTPRIVATE_GETCLIENTID);
102
103  CloudPrintPrivateGetClientIdFunction();
104
105 protected:
106  virtual ~CloudPrintPrivateGetClientIdFunction();
107
108  // ExtensionFunction:
109  virtual bool RunAsync() OVERRIDE;
110};
111
112}  // namespace extensions
113
114#endif  // CHROME_BROWSER_EXTENSIONS_API_CLOUD_PRINT_PRIVATE_CLOUD_PRINT_PRIVATE_API_H_
115