10e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org// Copyright (c) 2012 The Chromium Authors. All rights reserved.
20e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org// Use of this source code is governed by a BSD-style license that can be
30e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org// found in the LICENSE file.
40e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
50e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org#ifndef CHROME_BROWSER_EXTENSIONS_API_CLOUD_PRINT_PRIVATE_CLOUD_PRINT_PRIVATE_API_H_
60e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org#define CHROME_BROWSER_EXTENSIONS_API_CLOUD_PRINT_PRIVATE_CLOUD_PRINT_PRIVATE_API_H_
70e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
80e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org#include <string>
90e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org#include <vector>
100e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
110e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org#include "chrome/browser/extensions/chrome_extension_function.h"
120e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
130e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgnamespace extensions {
140e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
150e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgnamespace api {
160e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgnamespace cloud_print_private {
170e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
180e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgstruct UserSettings;
190e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
200e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}  // namespace cloud_print_private
210e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}  // namespace api
220e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
230e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
240e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org// For use only in tests.
250e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgclass CloudPrintTestsDelegate {
260e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org public:
270e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  CloudPrintTestsDelegate();
28cf81adffe15fa8ea0f333432e41f6d504148f18abuildbot@webrtc.org  virtual ~CloudPrintTestsDelegate();
290e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
300e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual void SetupConnector(
31cf81adffe15fa8ea0f333432e41f6d504148f18abuildbot@webrtc.org      const std::string& user_email,
320e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      const std::string& robot_email,
330e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      const std::string& credentials,
340e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org      const api::cloud_print_private::UserSettings& user_settings) = 0;
350e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
360e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual std::string GetHostName() = 0;
370e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
380e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual std::string GetClientId() = 0;
390e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
400e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual std::vector<std::string> GetPrinters() = 0;
410e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
420e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  static CloudPrintTestsDelegate* instance();
430e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
440e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org private:
450e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  // Points to single instance of this class during testing.
460e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  static CloudPrintTestsDelegate* instance_;
470e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org};
480e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
490e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgclass CloudPrintPrivateSetupConnectorFunction
500e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    : public ChromeAsyncExtensionFunction {
510e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org public:
520e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.setupConnector",
530e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org                             CLOUDPRINTPRIVATE_SETUPCONNECTOR)
540e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
550e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  CloudPrintPrivateSetupConnectorFunction();
560e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
570e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org protected:
580e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual ~CloudPrintPrivateSetupConnectorFunction();
590e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
600e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  // ExtensionFunction:
610e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual bool RunAsync() OVERRIDE;
620e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org};
630e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
640e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgclass CloudPrintPrivateGetHostNameFunction
650e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    : public ChromeAsyncExtensionFunction {
660e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org public:
670e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getHostName",
680e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org                             CLOUDPRINTPRIVATE_GETHOSTNAME)
690e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
700e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  CloudPrintPrivateGetHostNameFunction();
710e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
720e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org protected:
730e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual ~CloudPrintPrivateGetHostNameFunction();
740e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
750e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  // ExtensionFunction:
760e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual bool RunAsync() OVERRIDE;
770e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org};
780e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
790e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgclass CloudPrintPrivateGetPrintersFunction
800e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    : public ChromeAsyncExtensionFunction {
810e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org public:
820e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getPrinters",
830e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org                             CLOUDPRINTPRIVATE_GETPRINTERS)
840e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
850e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  CloudPrintPrivateGetPrintersFunction();
860e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
870e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org protected:
880e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual ~CloudPrintPrivateGetPrintersFunction();
890e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
900e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org private:
910e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  void SendResults(const std::vector<std::string>& printers);
920e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
930e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  // ExtensionFunction:
940e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual bool RunAsync() OVERRIDE;
950e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org};
960e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
970e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgclass CloudPrintPrivateGetClientIdFunction
980e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org    : public ChromeAsyncExtensionFunction {
990e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org public:
1000e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  DECLARE_EXTENSION_FUNCTION("cloudPrintPrivate.getClientId",
1010e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org                             CLOUDPRINTPRIVATE_GETCLIENTID);
1020e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
1030e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  CloudPrintPrivateGetClientIdFunction();
1040e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
1050e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org protected:
1060e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual ~CloudPrintPrivateGetClientIdFunction();
1070e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
1080e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  // ExtensionFunction:
1090e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org  virtual bool RunAsync() OVERRIDE;
1100e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org};
1110e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
1120e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org}  // namespace extensions
1130e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org
1140e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org#endif  // CHROME_BROWSER_EXTENSIONS_API_CLOUD_PRINT_PRIVATE_CLOUD_PRINT_PRIVATE_API_H_
1150e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org