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.
5 #ifndef CHROME_SERVICE_CLOUD_PRINT_CLOUD_PRINT_PROXY_H_
6 #define CHROME_SERVICE_CLOUD_PRINT_CLOUD_PRINT_PROXY_H_
12 #include "base/basictypes.h"
13 #include "base/memory/scoped_ptr.h"
14 #include "base/threading/non_thread_safe.h"
15 #include "chrome/service/cloud_print/cloud_print_proxy_backend.h"
16 #include "chrome/service/cloud_print/cloud_print_wipeout.h"
18 class ServiceProcessPrefs
;
20 namespace cloud_print
{
22 struct CloudPrintProxyInfo
;
24 // CloudPrintProxy is the layer between the service process UI thread
25 // and the cloud print proxy backend.
26 class CloudPrintProxy
: public CloudPrintProxyFrontend
,
27 public CloudPrintWipeout::Client
,
28 public base::NonThreadSafe
{
33 virtual void OnCloudPrintProxyEnabled(bool persist_state
) {}
34 virtual void OnCloudPrintProxyDisabled(bool persist_state
) {}
37 virtual ~CloudPrintProxy();
39 // Initializes the object. This should be called every time an object of this
40 // class is constructed.
41 void Initialize(ServiceProcessPrefs
* service_prefs
, Client
* client
);
43 // Enables/disables cloud printing for the user
45 void EnableForUserWithRobot(
46 const std::string
& robot_auth_code
,
47 const std::string
& robot_email
,
48 const std::string
& user_email
,
49 const base::DictionaryValue
& user_settings
);
50 void UnregisterPrintersAndDisableForUser();
51 void DisableForUser();
52 // Returns the proxy info.
53 void GetProxyInfo(CloudPrintProxyInfo
* info
);
54 // Return accessible printers.
55 void GetPrinters(std::vector
<std::string
>* printers
);
57 // Launches a browser to see if the proxy policy has been set.
58 void CheckCloudPrintProxyPolicy();
60 const std::string
& user_email() const {
64 // CloudPrintProxyFrontend implementation. Called on UI thread.
65 virtual void OnAuthenticated(const std::string
& robot_oauth_refresh_token
,
66 const std::string
& robot_email
,
67 const std::string
& user_email
) OVERRIDE
;
68 virtual void OnAuthenticationFailed() OVERRIDE
;
69 virtual void OnPrintSystemUnavailable() OVERRIDE
;
70 virtual void OnUnregisterPrinters(
71 const std::string
& auth_token
,
72 const std::list
<std::string
>& printer_ids
) OVERRIDE
;
73 virtual void OnXmppPingUpdated(int ping_timeout
) OVERRIDE
;
75 // CloudPrintWipeout::Client implementation.
76 virtual void OnUnregisterPrintersComplete() OVERRIDE
;
79 void ShutdownBackend();
82 // Our asynchronous backend to communicate with sync components living on
84 scoped_ptr
<CloudPrintProxyBackend
> backend_
;
85 // This class does not own this. It is guaranteed to remain valid for the
86 // lifetime of this class.
87 ServiceProcessPrefs
* service_prefs_
;
88 // This class does not own this. If non-NULL, It is guaranteed to remain
89 // valid for the lifetime of this class.
91 // The email address of the account used to authenticate to the Cloud Print
93 std::string user_email_
;
94 // This is set to true when the Cloud Print proxy is enabled and after
95 // successful authentication with the Cloud Print service.
97 // This is a cleanup class for unregistering printers on proxy disable.
98 scoped_ptr
<CloudPrintWipeout
> wipeout_
;
100 DISALLOW_COPY_AND_ASSIGN(CloudPrintProxy
);
103 } // namespace cloud_print
105 #endif // CHROME_SERVICE_CLOUD_PRINT_CLOUD_PRINT_PROXY_H_