cloud_print_private_api.h revision 1e9bf3e0803691d0a228da41fc608347b6db4340
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 RunImpl() 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 RunImpl() 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  void CollectPrinters();
91
92  // ExtensionFunction:
93  virtual bool RunImpl() OVERRIDE;
94};
95
96class CloudPrintPrivateGetClientIdFunction
97    : public ChromeAsyncExtensionFunction {
98 public:
99  DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getClientId",
100                             CLOUDPRINTPRIVATE_GETCLIENTID);
101
102  CloudPrintPrivateGetClientIdFunction();
103
104 protected:
105  virtual ~CloudPrintPrivateGetClientIdFunction();
106
107  // ExtensionFunction:
108  virtual bool RunImpl() OVERRIDE;
109};
110
111}  // namespace extensions
112
113#endif  // CHROME_BROWSER_EXTENSIONS_API_CLOUD_PRINT_PRIVATE_CLOUD_PRINT_PRIVATE_API_H_
114