Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: chrome/browser/local_discovery/privet_http.h

Issue 1553333002: Move cloud print specific files out of local_discovery (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@moveprn
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2013 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_LOCAL_DISCOVERY_PRIVET_HTTP_H_
6 #define CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_HTTP_H_
7
8 #include <string>
9
10 #include "base/callback.h"
11 #include "chrome/browser/local_discovery/privet_url_fetcher.h"
12 #include "net/base/host_port_pair.h"
13
14 namespace base {
15 class RefCountedBytes;
16 }
17
18 namespace gfx {
19 class Size;
20 }
21
22 namespace printing {
23 class PdfRenderSettings;
24 }
25
26 namespace local_discovery {
27
28 class PWGRasterConverter;
29 class PrivetHTTPClient;
30
31 // Represents a simple request that returns pure JSON.
32 class PrivetJSONOperation {
33 public:
34 // If value is null, the operation failed.
35 typedef base::Callback<void(
36 const base::DictionaryValue* /*value*/)> ResultCallback;
37
38 virtual ~PrivetJSONOperation() {}
39
40 virtual void Start() = 0;
41
42 virtual PrivetHTTPClient* GetHTTPClient() = 0;
43 };
44
45 // Privet HTTP client. Must outlive the operations it creates.
46 class PrivetHTTPClient {
47 public:
48 virtual ~PrivetHTTPClient() {}
49
50 // A name for the HTTP client, e.g. the device name for the privet device.
51 virtual const std::string& GetName() = 0;
52
53 // Creates operation to query basic information about local device.
54 virtual scoped_ptr<PrivetJSONOperation> CreateInfoOperation(
55 const PrivetJSONOperation::ResultCallback& callback) = 0;
56
57 // Creates a URL fetcher for PrivetV1.
58 virtual scoped_ptr<PrivetURLFetcher> CreateURLFetcher(
59 const GURL& url,
60 net::URLFetcher::RequestType request_type,
61 PrivetURLFetcher::Delegate* delegate) = 0;
62
63 virtual void RefreshPrivetToken(
64 const PrivetURLFetcher::TokenCallback& token_callback) = 0;
65 };
66
67 class PrivetDataReadOperation {
68 public:
69 enum ResponseType {
70 RESPONSE_TYPE_ERROR,
71 RESPONSE_TYPE_STRING,
72 RESPONSE_TYPE_FILE
73 };
74
75 // If value is null, the operation failed.
76 typedef base::Callback<void(
77 ResponseType /*response_type*/,
78 const std::string& /*response_str*/,
79 const base::FilePath& /*response_file_path*/)> ResultCallback;
80
81 virtual ~PrivetDataReadOperation() {}
82
83 virtual void Start() = 0;
84
85 virtual void SetDataRange(int range_start, int range_end) = 0;
86
87 virtual void SaveDataToFile() = 0;
88
89 virtual PrivetHTTPClient* GetHTTPClient() = 0;
90 };
91
92 // Represents a full registration flow (/privet/register), normally consisting
93 // of calling the start action, the getClaimToken action, and calling the
94 // complete action. Some intervention from the caller is required to display the
95 // claim URL to the user (noted in OnPrivetRegisterClaimURL).
96 class PrivetRegisterOperation {
97 public:
98 enum FailureReason {
99 FAILURE_NETWORK,
100 FAILURE_HTTP_ERROR,
101 FAILURE_JSON_ERROR,
102 FAILURE_MALFORMED_RESPONSE,
103 FAILURE_TOKEN,
104 FAILURE_UNKNOWN,
105 };
106
107 class Delegate {
108 public:
109 ~Delegate() {}
110
111 // Called when a user needs to claim the printer by visiting the given URL.
112 virtual void OnPrivetRegisterClaimToken(
113 PrivetRegisterOperation* operation,
114 const std::string& token,
115 const GURL& url) = 0;
116
117 // TODO(noamsml): Remove all unnecessary parameters.
118 // Called in case of an error while registering. |action| is the
119 // registration action taken during the error. |reason| is the reason for
120 // the failure. |printer_http_code| is the http code returned from the
121 // printer. If it is -1, an internal error occurred while trying to complete
122 // the request. |json| may be null if printer_http_code signifies an error.
123 virtual void OnPrivetRegisterError(PrivetRegisterOperation* operation,
124 const std::string& action,
125 FailureReason reason,
126 int printer_http_code,
127 const base::DictionaryValue* json) = 0;
128
129 // Called when the registration is done.
130 virtual void OnPrivetRegisterDone(PrivetRegisterOperation* operation,
131 const std::string& device_id) = 0;
132 };
133
134 virtual ~PrivetRegisterOperation() {}
135
136 virtual void Start() = 0;
137 // Owner SHOULD call explicitly before destroying operation.
138 virtual void Cancel() = 0;
139 virtual void CompleteRegistration() = 0;
140
141 virtual PrivetHTTPClient* GetHTTPClient() = 0;
142 };
143
144 class PrivetLocalPrintOperation {
145 public:
146 class Delegate {
147 public:
148 virtual ~Delegate() {}
149 virtual void OnPrivetPrintingDone(
150 const PrivetLocalPrintOperation* print_operation) = 0;
151 virtual void OnPrivetPrintingError(
152 const PrivetLocalPrintOperation* print_operation, int http_code) = 0;
153 };
154
155 virtual ~PrivetLocalPrintOperation() {}
156
157 virtual void Start() = 0;
158
159
160 // Required print data. MUST be called before calling |Start()|.
161 virtual void SetData(const scoped_refptr<base::RefCountedBytes>& data) = 0;
162
163 // Optional attributes for /submitdoc. Call before calling |Start()|
164 // |ticket| should be in CJT format.
165 virtual void SetTicket(const std::string& ticket) = 0;
166 // |capabilities| should be in CDD format.
167 virtual void SetCapabilities(const std::string& capabilities) = 0;
168 // Username and jobname are for display only.
169 virtual void SetUsername(const std::string& username) = 0;
170 virtual void SetJobname(const std::string& jobname) = 0;
171 // If |offline| is true, we will indicate to the printer not to post the job
172 // to Google Cloud Print.
173 virtual void SetOffline(bool offline) = 0;
174 // Document page size.
175 virtual void SetPageSize(const gfx::Size& page_size) = 0;
176
177 // For testing, inject an alternative PWG raster converter.
178 virtual void SetPWGRasterConverterForTesting(
179 scoped_ptr<PWGRasterConverter> pwg_raster_converter) = 0;
180
181 virtual PrivetHTTPClient* GetHTTPClient() = 0;
182 };
183
184 // Privet HTTP client. Must outlive the operations it creates.
185 class PrivetV1HTTPClient {
186 public:
187 virtual ~PrivetV1HTTPClient() {}
188
189 static scoped_ptr<PrivetV1HTTPClient> CreateDefault(
190 scoped_ptr<PrivetHTTPClient> info_client);
191
192 // A name for the HTTP client, e.g. the device name for the privet device.
193 virtual const std::string& GetName() = 0;
194
195 // Creates operation to query basic information about local device.
196 virtual scoped_ptr<PrivetJSONOperation> CreateInfoOperation(
197 const PrivetJSONOperation::ResultCallback& callback) = 0;
198
199 // Creates operation to register local device using Privet v1 protocol.
200 virtual scoped_ptr<PrivetRegisterOperation> CreateRegisterOperation(
201 const std::string& user,
202 PrivetRegisterOperation::Delegate* delegate) = 0;
203
204 // Creates operation to query capabilities of local printer.
205 virtual scoped_ptr<PrivetJSONOperation> CreateCapabilitiesOperation(
206 const PrivetJSONOperation::ResultCallback& callback) = 0;
207
208 // Creates operation to submit print job to local printer.
209 virtual scoped_ptr<PrivetLocalPrintOperation> CreateLocalPrintOperation(
210 PrivetLocalPrintOperation::Delegate* delegate) = 0;
211 };
212
213 } // namespace local_discovery
214 #endif // CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_HTTP_H_
OLDNEW
« no previous file with comments | « chrome/browser/local_discovery/privet_device_lister_unittest.cc ('k') | chrome/browser/local_discovery/privet_http.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698