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

Side by Side Diff: chrome/service/cloud_print/printer_job_handler.cc

Issue 9443007: Add Chrome To Mobile Service and Views Page Action. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Bail on empty GetOAuth2LoginRefreshToken(). Created 8 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/service/cloud_print/printer_job_handler.h" 5 #include "chrome/service/cloud_print/printer_job_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
11 #include "base/md5.h" 11 #include "base/md5.h"
12 #include "base/stringprintf.h" 12 #include "base/stringprintf.h"
13 #include "base/utf_string_conversions.h" 13 #include "base/utf_string_conversions.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "chrome/common/cloud_print/cloud_print_helpers.h"
15 #include "chrome/service/cloud_print/cloud_print_consts.h" 16 #include "chrome/service/cloud_print/cloud_print_consts.h"
16 #include "chrome/service/cloud_print/cloud_print_helpers.h" 17 #include "chrome/service/cloud_print/cloud_print_helpers.h"
17 #include "chrome/service/cloud_print/job_status_updater.h" 18 #include "chrome/service/cloud_print/job_status_updater.h"
18 #include "googleurl/src/gurl.h" 19 #include "googleurl/src/gurl.h"
19 #include "net/http/http_response_headers.h" 20 #include "net/http/http_response_headers.h"
20 #include "net/http/http_status_code.h" 21 #include "net/http/http_status_code.h"
21 22
22 PrinterJobHandler::JobDetails::JobDetails() {} 23 PrinterJobHandler::JobDetails::JobDetails() {}
23 24
24 PrinterJobHandler::JobDetails::~JobDetails() {} 25 PrinterJobHandler::JobDetails::~JobDetails() {}
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 void PrinterJobHandler::OnReceivePrinterCaps( 179 void PrinterJobHandler::OnReceivePrinterCaps(
179 bool succeeded, 180 bool succeeded,
180 const std::string& printer_name, 181 const std::string& printer_name,
181 const printing::PrinterCapsAndDefaults& caps_and_defaults) { 182 const printing::PrinterCapsAndDefaults& caps_and_defaults) {
182 printing::PrinterBasicInfo printer_info; 183 printing::PrinterBasicInfo printer_info;
183 if (printer_watcher_) 184 if (printer_watcher_)
184 printer_watcher_->GetCurrentPrinterInfo(&printer_info); 185 printer_watcher_->GetCurrentPrinterInfo(&printer_info);
185 186
186 std::string post_data; 187 std::string post_data;
187 std::string mime_boundary; 188 std::string mime_boundary;
188 CloudPrintHelpers::CreateMimeBoundaryForUpload(&mime_boundary); 189 cloud_print::CreateMimeBoundaryForUpload(&mime_boundary);
189 190
190 if (succeeded) { 191 if (succeeded) {
191 std::string caps_hash = 192 std::string caps_hash =
192 base::MD5String(caps_and_defaults.printer_capabilities); 193 base::MD5String(caps_and_defaults.printer_capabilities);
193 if (caps_hash != printer_info_cloud_.caps_hash) { 194 if (caps_hash != printer_info_cloud_.caps_hash) {
194 // Hashes don't match, we need to upload new capabilities (the defaults 195 // Hashes don't match, we need to upload new capabilities (the defaults
195 // go for free along with the capabilities) 196 // go for free along with the capabilities)
196 printer_info_cloud_.caps_hash = caps_hash; 197 printer_info_cloud_.caps_hash = caps_hash;
197 CloudPrintHelpers::AddMultipartValueForUpload( 198 cloud_print::AddMultipartValueForUpload(kPrinterCapsValue,
198 kPrinterCapsValue, caps_and_defaults.printer_capabilities, 199 caps_and_defaults.printer_capabilities, mime_boundary,
199 mime_boundary, caps_and_defaults.caps_mime_type, &post_data); 200 caps_and_defaults.caps_mime_type, &post_data);
200 CloudPrintHelpers::AddMultipartValueForUpload( 201 cloud_print::AddMultipartValueForUpload(kPrinterDefaultsValue,
201 kPrinterDefaultsValue, caps_and_defaults.printer_defaults, 202 caps_and_defaults.printer_defaults, mime_boundary,
202 mime_boundary, caps_and_defaults.defaults_mime_type, 203 caps_and_defaults.defaults_mime_type, &post_data);
203 &post_data); 204 cloud_print::AddMultipartValueForUpload(kPrinterCapsHashValue,
204 CloudPrintHelpers::AddMultipartValueForUpload( 205 caps_hash, mime_boundary, std::string(), &post_data);
205 kPrinterCapsHashValue, caps_hash, mime_boundary, std::string(),
206 &post_data);
207 } 206 }
208 } else { 207 } else {
209 LOG(ERROR) << "Failed to get printer caps and defaults for printer: " 208 LOG(ERROR) << "Failed to get printer caps and defaults for printer: "
210 << printer_name; 209 << printer_name;
211 } 210 }
212 211
213 std::string tags_hash = 212 std::string tags_hash =
214 CloudPrintHelpers::GenerateHashOfStringMap(printer_info.options); 213 CloudPrintHelpers::GenerateHashOfStringMap(printer_info.options);
215 if (tags_hash != printer_info_cloud_.tags_hash) { 214 if (tags_hash != printer_info_cloud_.tags_hash) {
216 printer_info_cloud_.tags_hash = tags_hash; 215 printer_info_cloud_.tags_hash = tags_hash;
217 CloudPrintHelpers::GenerateMultipartPostDataForPrinterTags( 216 CloudPrintHelpers::GenerateMultipartPostDataForPrinterTags(
218 printer_info.options, mime_boundary, &post_data); 217 printer_info.options, mime_boundary, &post_data);
219 // Remove all the exising proxy tags. 218 // Remove all the exising proxy tags.
220 std::string cp_tag_wildcard(kProxyTagPrefix); 219 std::string cp_tag_wildcard(kProxyTagPrefix);
221 cp_tag_wildcard += ".*"; 220 cp_tag_wildcard += ".*";
222 CloudPrintHelpers::AddMultipartValueForUpload( 221 cloud_print::AddMultipartValueForUpload(kPrinterRemoveTagValue,
223 kPrinterRemoveTagValue, cp_tag_wildcard, mime_boundary, std::string(), 222 cp_tag_wildcard, mime_boundary, std::string(), &post_data);
224 &post_data);
225 } 223 }
226 224
227 if (printer_info.printer_name != printer_info_.printer_name) { 225 if (printer_info.printer_name != printer_info_.printer_name) {
228 CloudPrintHelpers::AddMultipartValueForUpload(kPrinterNameValue, 226 cloud_print::AddMultipartValueForUpload(kPrinterNameValue,
229 printer_info.printer_name, 227 printer_info.printer_name, mime_boundary, std::string(), &post_data);
230 mime_boundary,
231 std::string(), &post_data);
232 } 228 }
233 if (printer_info.printer_description != printer_info_.printer_description) { 229 if (printer_info.printer_description != printer_info_.printer_description) {
234 CloudPrintHelpers::AddMultipartValueForUpload( 230 cloud_print::AddMultipartValueForUpload(kPrinterDescValue,
235 kPrinterDescValue, printer_info.printer_description, mime_boundary, 231 printer_info.printer_description, mime_boundary,
236 std::string() , &post_data); 232 std::string(), &post_data);
237 } 233 }
238 if (printer_info.printer_status != printer_info_.printer_status) { 234 if (printer_info.printer_status != printer_info_.printer_status) {
239 CloudPrintHelpers::AddMultipartValueForUpload( 235 cloud_print::AddMultipartValueForUpload(kPrinterStatusValue,
240 kPrinterStatusValue, 236 base::StringPrintf("%d", printer_info.printer_status), mime_boundary,
241 base::StringPrintf("%d", printer_info.printer_status), 237 std::string(), &post_data);
242 mime_boundary,
243 std::string(),
244 &post_data);
245 } 238 }
246 printer_info_ = printer_info; 239 printer_info_ = printer_info;
247 if (!post_data.empty()) { 240 if (!post_data.empty()) {
248 // Terminate the request body 241 // Terminate the request body
249 post_data.append("--" + mime_boundary + "--\r\n"); 242 post_data.append("--" + mime_boundary + "--\r\n");
250 std::string mime_type("multipart/form-data; boundary="); 243 std::string mime_type("multipart/form-data; boundary=");
251 mime_type += mime_boundary; 244 mime_type += mime_boundary;
252 SetNextJSONHandler(&PrinterJobHandler::HandlePrinterUpdateResponse); 245 SetNextJSONHandler(&PrinterJobHandler::HandlePrinterUpdateResponse);
253 request_ = new CloudPrintURLFetcher; 246 request_ = new CloudPrintURLFetcher;
254 request_->StartPostRequest( 247 request_->StartPostRequest(
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 job_handler_message_loop_proxy_->PostTask( 635 job_handler_message_loop_proxy_->PostTask(
643 FROM_HERE, base::Bind(&PrinterJobHandler::JobSpooled, this, job_id)); 636 FROM_HERE, base::Bind(&PrinterJobHandler::JobSpooled, this, job_id));
644 } 637 }
645 638
646 void PrinterJobHandler::OnJobSpoolFailed() { 639 void PrinterJobHandler::OnJobSpoolFailed() {
647 DCHECK(MessageLoop::current() == print_thread_.message_loop()); 640 DCHECK(MessageLoop::current() == print_thread_.message_loop());
648 job_spooler_ = NULL; 641 job_spooler_ = NULL;
649 job_handler_message_loop_proxy_->PostTask( 642 job_handler_message_loop_proxy_->PostTask(
650 FROM_HERE, base::Bind(&PrinterJobHandler::JobFailed, this, PRINT_FAILED)); 643 FROM_HERE, base::Bind(&PrinterJobHandler::JobFailed, this, PRINT_FAILED));
651 } 644 }
OLDNEW
« no previous file with comments | « chrome/service/cloud_print/cloud_print_url_fetcher.cc ('k') | chrome/test/base/test_browser_window.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698