| OLD | NEW |
| 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/browser/ui/webui/print_preview/print_preview_handler.h" | 5 #include "chrome/browser/ui/webui/print_preview/print_preview_handler.h" |
| 6 | 6 |
| 7 #include <ctype.h> | 7 #include <ctype.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 |
| 9 #include <map> | 10 #include <map> |
| 11 #include <memory> |
| 10 #include <string> | 12 #include <string> |
| 11 #include <utility> | 13 #include <utility> |
| 12 | 14 |
| 13 #include "base/base64.h" | 15 #include "base/base64.h" |
| 14 #include "base/bind.h" | 16 #include "base/bind.h" |
| 15 #include "base/bind_helpers.h" | 17 #include "base/bind_helpers.h" |
| 16 #include "base/command_line.h" | 18 #include "base/command_line.h" |
| 17 #include "base/i18n/file_util_icu.h" | 19 #include "base/i18n/file_util_icu.h" |
| 18 #include "base/i18n/number_formatting.h" | 20 #include "base/i18n/number_formatting.h" |
| 19 #include "base/json/json_reader.h" | 21 #include "base/json/json_reader.h" |
| 20 #include "base/lazy_instance.h" | 22 #include "base/lazy_instance.h" |
| 21 #include "base/macros.h" | 23 #include "base/macros.h" |
| 22 #include "base/memory/ref_counted_memory.h" | 24 #include "base/memory/ref_counted_memory.h" |
| 23 #include "base/memory/scoped_ptr.h" | |
| 24 #include "base/metrics/histogram.h" | 25 #include "base/metrics/histogram.h" |
| 25 #include "base/path_service.h" | 26 #include "base/path_service.h" |
| 26 #include "base/strings/string_number_conversions.h" | 27 #include "base/strings/string_number_conversions.h" |
| 27 #include "base/strings/stringprintf.h" | 28 #include "base/strings/stringprintf.h" |
| 28 #include "base/strings/utf_string_conversions.h" | 29 #include "base/strings/utf_string_conversions.h" |
| 29 #include "base/threading/thread.h" | 30 #include "base/threading/thread.h" |
| 30 #include "base/threading/thread_restrictions.h" | 31 #include "base/threading/thread_restrictions.h" |
| 31 #include "base/values.h" | 32 #include "base/values.h" |
| 32 #include "build/build_config.h" | 33 #include "build/build_config.h" |
| 33 #include "chrome/browser/app_mode/app_mode_utils.h" | 34 #include "chrome/browser/app_mode/app_mode_utils.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 | 176 |
| 176 // Id of the predefined PDF printer. | 177 // Id of the predefined PDF printer. |
| 177 const char kLocalPdfPrinterId[] = "Save as PDF"; | 178 const char kLocalPdfPrinterId[] = "Save as PDF"; |
| 178 | 179 |
| 179 // Additional printer capability setting keys. | 180 // Additional printer capability setting keys. |
| 180 const char kPrinterId[] = "printerId"; | 181 const char kPrinterId[] = "printerId"; |
| 181 const char kPrinterCapabilities[] = "capabilities"; | 182 const char kPrinterCapabilities[] = "capabilities"; |
| 182 | 183 |
| 183 // Get the print job settings dictionary from |args|. The caller takes | 184 // Get the print job settings dictionary from |args|. The caller takes |
| 184 // ownership of the returned DictionaryValue. Returns NULL on failure. | 185 // ownership of the returned DictionaryValue. Returns NULL on failure. |
| 185 scoped_ptr<base::DictionaryValue> GetSettingsDictionary( | 186 std::unique_ptr<base::DictionaryValue> GetSettingsDictionary( |
| 186 const base::ListValue* args) { | 187 const base::ListValue* args) { |
| 187 std::string json_str; | 188 std::string json_str; |
| 188 if (!args->GetString(0, &json_str)) { | 189 if (!args->GetString(0, &json_str)) { |
| 189 NOTREACHED() << "Could not read JSON argument"; | 190 NOTREACHED() << "Could not read JSON argument"; |
| 190 return NULL; | 191 return NULL; |
| 191 } | 192 } |
| 192 if (json_str.empty()) { | 193 if (json_str.empty()) { |
| 193 NOTREACHED() << "Empty print job settings"; | 194 NOTREACHED() << "Empty print job settings"; |
| 194 return NULL; | 195 return NULL; |
| 195 } | 196 } |
| 196 scoped_ptr<base::DictionaryValue> settings = | 197 std::unique_ptr<base::DictionaryValue> settings = |
| 197 base::DictionaryValue::From(base::JSONReader::Read(json_str)); | 198 base::DictionaryValue::From(base::JSONReader::Read(json_str)); |
| 198 if (!settings) { | 199 if (!settings) { |
| 199 NOTREACHED() << "Print job settings must be a dictionary."; | 200 NOTREACHED() << "Print job settings must be a dictionary."; |
| 200 return NULL; | 201 return NULL; |
| 201 } | 202 } |
| 202 | 203 |
| 203 if (settings->empty()) { | 204 if (settings->empty()) { |
| 204 NOTREACHED() << "Print job settings dictionary is empty"; | 205 NOTREACHED() << "Print job settings dictionary is empty"; |
| 205 return NULL; | 206 return NULL; |
| 206 } | 207 } |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 public: | 320 public: |
| 320 // PrintingContext::Delegate methods. | 321 // PrintingContext::Delegate methods. |
| 321 gfx::NativeView GetParentView() override { return NULL; } | 322 gfx::NativeView GetParentView() override { return NULL; } |
| 322 std::string GetAppLocale() override { | 323 std::string GetAppLocale() override { |
| 323 return g_browser_process->GetApplicationLocale(); | 324 return g_browser_process->GetApplicationLocale(); |
| 324 } | 325 } |
| 325 }; | 326 }; |
| 326 | 327 |
| 327 gfx::Size GetDefaultPdfMediaSizeMicrons() { | 328 gfx::Size GetDefaultPdfMediaSizeMicrons() { |
| 328 PrintingContextDelegate delegate; | 329 PrintingContextDelegate delegate; |
| 329 scoped_ptr<printing::PrintingContext> printing_context( | 330 std::unique_ptr<printing::PrintingContext> printing_context( |
| 330 printing::PrintingContext::Create(&delegate)); | 331 printing::PrintingContext::Create(&delegate)); |
| 331 if (printing::PrintingContext::OK != printing_context->UsePdfSettings() || | 332 if (printing::PrintingContext::OK != printing_context->UsePdfSettings() || |
| 332 printing_context->settings().device_units_per_inch() <= 0) { | 333 printing_context->settings().device_units_per_inch() <= 0) { |
| 333 return gfx::Size(); | 334 return gfx::Size(); |
| 334 } | 335 } |
| 335 gfx::Size pdf_media_size = printing_context->GetPdfPaperSizeDeviceUnits(); | 336 gfx::Size pdf_media_size = printing_context->GetPdfPaperSizeDeviceUnits(); |
| 336 float deviceMicronsPerDeviceUnit = | 337 float deviceMicronsPerDeviceUnit = |
| 337 (printing::kHundrethsMMPerInch * 10.0f) / | 338 (printing::kHundrethsMMPerInch * 10.0f) / |
| 338 printing_context->settings().device_units_per_inch(); | 339 printing_context->settings().device_units_per_inch(); |
| 339 return gfx::Size(pdf_media_size.width() * deviceMicronsPerDeviceUnit, | 340 return gfx::Size(pdf_media_size.width() * deviceMicronsPerDeviceUnit, |
| 340 pdf_media_size.height() * deviceMicronsPerDeviceUnit); | 341 pdf_media_size.height() * deviceMicronsPerDeviceUnit); |
| 341 } | 342 } |
| 342 | 343 |
| 343 typedef base::Callback<void(const base::DictionaryValue*)> | 344 typedef base::Callback<void(const base::DictionaryValue*)> |
| 344 GetPdfCapabilitiesCallback; | 345 GetPdfCapabilitiesCallback; |
| 345 | 346 |
| 346 scoped_ptr<base::DictionaryValue> GetPdfCapabilitiesOnFileThread( | 347 std::unique_ptr<base::DictionaryValue> GetPdfCapabilitiesOnFileThread( |
| 347 const std::string& locale) { | 348 const std::string& locale) { |
| 348 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 349 DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
| 349 | 350 |
| 350 cloud_devices::CloudDeviceDescription description; | 351 cloud_devices::CloudDeviceDescription description; |
| 351 using namespace cloud_devices::printer; | 352 using namespace cloud_devices::printer; |
| 352 | 353 |
| 353 OrientationCapability orientation; | 354 OrientationCapability orientation; |
| 354 orientation.AddOption(cloud_devices::printer::PORTRAIT); | 355 orientation.AddOption(cloud_devices::printer::PORTRAIT); |
| 355 orientation.AddOption(cloud_devices::printer::LANDSCAPE); | 356 orientation.AddOption(cloud_devices::printer::LANDSCAPE); |
| 356 orientation.AddDefaultOption(AUTO_ORIENTATION, true); | 357 orientation.AddDefaultOption(AUTO_ORIENTATION, true); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 385 default_media = Media(locale == "en-US" ? NA_LETTER : ISO_A4); | 386 default_media = Media(locale == "en-US" ? NA_LETTER : ISO_A4); |
| 386 } | 387 } |
| 387 MediaCapability media; | 388 MediaCapability media; |
| 388 for (size_t i = 0; i < arraysize(kPdfMedia); ++i) { | 389 for (size_t i = 0; i < arraysize(kPdfMedia); ++i) { |
| 389 Media media_option(kPdfMedia[i]); | 390 Media media_option(kPdfMedia[i]); |
| 390 media.AddDefaultOption(media_option, | 391 media.AddDefaultOption(media_option, |
| 391 default_media.type == media_option.type); | 392 default_media.type == media_option.type); |
| 392 } | 393 } |
| 393 media.SaveTo(&description); | 394 media.SaveTo(&description); |
| 394 | 395 |
| 395 return scoped_ptr<base::DictionaryValue>(description.root().DeepCopy()); | 396 return std::unique_ptr<base::DictionaryValue>(description.root().DeepCopy()); |
| 396 } | 397 } |
| 397 | 398 |
| 398 scoped_ptr<base::DictionaryValue> GetLocalPrinterCapabilitiesOnFileThread( | 399 std::unique_ptr<base::DictionaryValue> GetLocalPrinterCapabilitiesOnFileThread( |
| 399 const std::string& printer_name) { | 400 const std::string& printer_name) { |
| 400 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 401 DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
| 401 | 402 |
| 402 scoped_refptr<printing::PrintBackend> print_backend( | 403 scoped_refptr<printing::PrintBackend> print_backend( |
| 403 printing::PrintBackend::CreateInstance(NULL)); | 404 printing::PrintBackend::CreateInstance(NULL)); |
| 404 | 405 |
| 405 VLOG(1) << "Get printer capabilities start for " << printer_name; | 406 VLOG(1) << "Get printer capabilities start for " << printer_name; |
| 406 crash_keys::ScopedPrinterInfo crash_key( | 407 crash_keys::ScopedPrinterInfo crash_key( |
| 407 print_backend->GetPrinterDriverInfo(printer_name)); | 408 print_backend->GetPrinterDriverInfo(printer_name)); |
| 408 | 409 |
| 409 if (!print_backend->IsValidPrinter(printer_name)) { | 410 if (!print_backend->IsValidPrinter(printer_name)) { |
| 410 LOG(WARNING) << "Invalid printer " << printer_name; | 411 LOG(WARNING) << "Invalid printer " << printer_name; |
| 411 return scoped_ptr<base::DictionaryValue>(); | 412 return std::unique_ptr<base::DictionaryValue>(); |
| 412 } | 413 } |
| 413 | 414 |
| 414 printing::PrinterSemanticCapsAndDefaults info; | 415 printing::PrinterSemanticCapsAndDefaults info; |
| 415 if (!print_backend->GetPrinterSemanticCapsAndDefaults(printer_name, &info)) { | 416 if (!print_backend->GetPrinterSemanticCapsAndDefaults(printer_name, &info)) { |
| 416 LOG(WARNING) << "Failed to get capabilities for " << printer_name; | 417 LOG(WARNING) << "Failed to get capabilities for " << printer_name; |
| 417 return scoped_ptr<base::DictionaryValue>(); | 418 return std::unique_ptr<base::DictionaryValue>(); |
| 418 } | 419 } |
| 419 | 420 |
| 420 scoped_ptr<base::DictionaryValue> description( | 421 std::unique_ptr<base::DictionaryValue> description( |
| 421 cloud_print::PrinterSemanticCapsAndDefaultsToCdd(info)); | 422 cloud_print::PrinterSemanticCapsAndDefaultsToCdd(info)); |
| 422 if (!description) { | 423 if (!description) { |
| 423 LOG(WARNING) << "Failed to convert capabilities for " << printer_name; | 424 LOG(WARNING) << "Failed to convert capabilities for " << printer_name; |
| 424 return scoped_ptr<base::DictionaryValue>(); | 425 return std::unique_ptr<base::DictionaryValue>(); |
| 425 } | 426 } |
| 426 | 427 |
| 427 return description; | 428 return description; |
| 428 } | 429 } |
| 429 | 430 |
| 430 void EnumeratePrintersOnFileThread(base::ListValue* printers) { | 431 void EnumeratePrintersOnFileThread(base::ListValue* printers) { |
| 431 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 432 DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
| 432 | 433 |
| 433 scoped_refptr<printing::PrintBackend> print_backend( | 434 scoped_refptr<printing::PrintBackend> print_backend( |
| 434 printing::PrintBackend::CreateInstance(NULL)); | 435 printing::PrintBackend::CreateInstance(NULL)); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 481 GetPrinterCapabilitiesFailureCallback; | 482 GetPrinterCapabilitiesFailureCallback; |
| 482 | 483 |
| 483 void GetPrinterCapabilitiesOnFileThread( | 484 void GetPrinterCapabilitiesOnFileThread( |
| 484 const std::string& printer_name, | 485 const std::string& printer_name, |
| 485 const std::string& locale, | 486 const std::string& locale, |
| 486 const GetPrinterCapabilitiesSuccessCallback& success_cb, | 487 const GetPrinterCapabilitiesSuccessCallback& success_cb, |
| 487 const GetPrinterCapabilitiesFailureCallback& failure_cb) { | 488 const GetPrinterCapabilitiesFailureCallback& failure_cb) { |
| 488 DCHECK_CURRENTLY_ON(BrowserThread::FILE); | 489 DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
| 489 DCHECK(!printer_name.empty()); | 490 DCHECK(!printer_name.empty()); |
| 490 | 491 |
| 491 scoped_ptr<base::DictionaryValue> printer_capabilities( | 492 std::unique_ptr<base::DictionaryValue> printer_capabilities( |
| 492 printer_name == kLocalPdfPrinterId ? | 493 printer_name == kLocalPdfPrinterId |
| 493 GetPdfCapabilitiesOnFileThread(locale) : | 494 ? GetPdfCapabilitiesOnFileThread(locale) |
| 494 GetLocalPrinterCapabilitiesOnFileThread(printer_name)); | 495 : GetLocalPrinterCapabilitiesOnFileThread(printer_name)); |
| 495 if (!printer_capabilities) { | 496 if (!printer_capabilities) { |
| 496 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 497 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 497 base::Bind(failure_cb, printer_name)); | 498 base::Bind(failure_cb, printer_name)); |
| 498 return; | 499 return; |
| 499 } | 500 } |
| 500 | 501 |
| 501 scoped_ptr<base::DictionaryValue> printer_info(new base::DictionaryValue); | 502 std::unique_ptr<base::DictionaryValue> printer_info( |
| 503 new base::DictionaryValue); |
| 502 printer_info->SetString(kPrinterId, printer_name); | 504 printer_info->SetString(kPrinterId, printer_name); |
| 503 printer_info->Set(kPrinterCapabilities, printer_capabilities.release()); | 505 printer_info->Set(kPrinterCapabilities, printer_capabilities.release()); |
| 504 | 506 |
| 505 BrowserThread::PostTask( | 507 BrowserThread::PostTask( |
| 506 BrowserThread::UI, FROM_HERE, | 508 BrowserThread::UI, FROM_HERE, |
| 507 base::Bind(success_cb, base::Owned(printer_info.release()))); | 509 base::Bind(success_cb, base::Owned(printer_info.release()))); |
| 508 } | 510 } |
| 509 | 511 |
| 510 base::LazyInstance<printing::StickySettings> g_sticky_settings = | 512 base::LazyInstance<printing::StickySettings> g_sticky_settings = |
| 511 LAZY_INSTANCE_INITIALIZER; | 513 LAZY_INSTANCE_INITIALIZER; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 557 chromeos::DeviceOAuth2TokenService* token_service = | 559 chromeos::DeviceOAuth2TokenService* token_service = |
| 558 chromeos::DeviceOAuth2TokenServiceFactory::Get(); | 560 chromeos::DeviceOAuth2TokenServiceFactory::Get(); |
| 559 account_id = token_service->GetRobotAccountId(); | 561 account_id = token_service->GetRobotAccountId(); |
| 560 service = token_service; | 562 service = token_service; |
| 561 #endif | 563 #endif |
| 562 } | 564 } |
| 563 | 565 |
| 564 if (service) { | 566 if (service) { |
| 565 OAuth2TokenService::ScopeSet oauth_scopes; | 567 OAuth2TokenService::ScopeSet oauth_scopes; |
| 566 oauth_scopes.insert(cloud_devices::kCloudPrintAuthScope); | 568 oauth_scopes.insert(cloud_devices::kCloudPrintAuthScope); |
| 567 scoped_ptr<OAuth2TokenService::Request> request( | 569 std::unique_ptr<OAuth2TokenService::Request> request( |
| 568 service->StartRequest(account_id, oauth_scopes, this)); | 570 service->StartRequest(account_id, oauth_scopes, this)); |
| 569 requests_[type].reset(request.release()); | 571 requests_[type].reset(request.release()); |
| 570 } else { | 572 } else { |
| 571 handler_->SendAccessToken(type, std::string()); // Unknown type. | 573 handler_->SendAccessToken(type, std::string()); // Unknown type. |
| 572 } | 574 } |
| 573 } | 575 } |
| 574 | 576 |
| 575 void OnGetTokenSuccess(const OAuth2TokenService::Request* request, | 577 void OnGetTokenSuccess(const OAuth2TokenService::Request* request, |
| 576 const std::string& access_token, | 578 const std::string& access_token, |
| 577 const base::Time& expiration_time) override { | 579 const base::Time& expiration_time) override { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 590 if (i->second.get() == request) { | 592 if (i->second.get() == request) { |
| 591 handler_->SendAccessToken(i->first, access_token); | 593 handler_->SendAccessToken(i->first, access_token); |
| 592 requests_.erase(i); | 594 requests_.erase(i); |
| 593 return; | 595 return; |
| 594 } | 596 } |
| 595 } | 597 } |
| 596 NOTREACHED(); | 598 NOTREACHED(); |
| 597 } | 599 } |
| 598 | 600 |
| 599 using Requests = | 601 using Requests = |
| 600 std::map<std::string, scoped_ptr<OAuth2TokenService::Request>>; | 602 std::map<std::string, std::unique_ptr<OAuth2TokenService::Request>>; |
| 601 Requests requests_; | 603 Requests requests_; |
| 602 PrintPreviewHandler* handler_; | 604 PrintPreviewHandler* handler_; |
| 603 | 605 |
| 604 DISALLOW_COPY_AND_ASSIGN(AccessTokenService); | 606 DISALLOW_COPY_AND_ASSIGN(AccessTokenService); |
| 605 }; | 607 }; |
| 606 | 608 |
| 607 PrintPreviewHandler::PrintPreviewHandler() | 609 PrintPreviewHandler::PrintPreviewHandler() |
| 608 : regenerate_preview_request_count_(0), | 610 : regenerate_preview_request_count_(0), |
| 609 manage_printers_dialog_request_count_(0), | 611 manage_printers_dialog_request_count_(0), |
| 610 manage_cloud_printers_dialog_request_count_(0), | 612 manage_cloud_printers_dialog_request_count_(0), |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 785 | 787 |
| 786 EnsureExtensionPrinterHandlerSet(); | 788 EnsureExtensionPrinterHandlerSet(); |
| 787 extension_printer_handler_->StartGetCapability( | 789 extension_printer_handler_->StartGetCapability( |
| 788 printer_id, | 790 printer_id, |
| 789 base::Bind(&PrintPreviewHandler::OnGotExtensionPrinterCapabilities, | 791 base::Bind(&PrintPreviewHandler::OnGotExtensionPrinterCapabilities, |
| 790 base::Unretained(this))); | 792 base::Unretained(this))); |
| 791 } | 793 } |
| 792 | 794 |
| 793 void PrintPreviewHandler::HandleGetPreview(const base::ListValue* args) { | 795 void PrintPreviewHandler::HandleGetPreview(const base::ListValue* args) { |
| 794 DCHECK_EQ(3U, args->GetSize()); | 796 DCHECK_EQ(3U, args->GetSize()); |
| 795 scoped_ptr<base::DictionaryValue> settings = GetSettingsDictionary(args); | 797 std::unique_ptr<base::DictionaryValue> settings = GetSettingsDictionary(args); |
| 796 if (!settings) | 798 if (!settings) |
| 797 return; | 799 return; |
| 798 int request_id = -1; | 800 int request_id = -1; |
| 799 if (!settings->GetInteger(printing::kPreviewRequestID, &request_id)) | 801 if (!settings->GetInteger(printing::kPreviewRequestID, &request_id)) |
| 800 return; | 802 return; |
| 801 | 803 |
| 802 print_preview_ui()->OnPrintPreviewRequest(request_id); | 804 print_preview_ui()->OnPrintPreviewRequest(request_id); |
| 803 // Add an additional key in order to identify |print_preview_ui| later on | 805 // Add an additional key in order to identify |print_preview_ui| later on |
| 804 // when calling PrintPreviewUI::GetCurrentPrintPreviewStatus() on the IO | 806 // when calling PrintPreviewUI::GetCurrentPrintPreviewStatus() on the IO |
| 805 // thread. | 807 // thread. |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 881 } | 883 } |
| 882 | 884 |
| 883 void PrintPreviewHandler::HandlePrint(const base::ListValue* args) { | 885 void PrintPreviewHandler::HandlePrint(const base::ListValue* args) { |
| 884 ReportStats(); | 886 ReportStats(); |
| 885 | 887 |
| 886 // Record the number of times the user requests to regenerate preview data | 888 // Record the number of times the user requests to regenerate preview data |
| 887 // before printing. | 889 // before printing. |
| 888 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint", | 890 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint", |
| 889 regenerate_preview_request_count_); | 891 regenerate_preview_request_count_); |
| 890 | 892 |
| 891 scoped_ptr<base::DictionaryValue> settings = GetSettingsDictionary(args); | 893 std::unique_ptr<base::DictionaryValue> settings = GetSettingsDictionary(args); |
| 892 if (!settings) | 894 if (!settings) |
| 893 return; | 895 return; |
| 894 | 896 |
| 895 ReportPrintSettingsStats(*settings); | 897 ReportPrintSettingsStats(*settings); |
| 896 | 898 |
| 897 // Never try to add headers/footers here. It's already in the generated PDF. | 899 // Never try to add headers/footers here. It's already in the generated PDF. |
| 898 settings->SetBoolean(printing::kSettingHeaderFooterEnabled, false); | 900 settings->SetBoolean(printing::kSettingHeaderFooterEnabled, false); |
| 899 | 901 |
| 900 bool print_to_pdf = false; | 902 bool print_to_pdf = false; |
| 901 bool is_cloud_printer = false; | 903 bool is_cloud_printer = false; |
| (...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1551 } | 1553 } |
| 1552 } | 1554 } |
| 1553 | 1555 |
| 1554 void PrintPreviewHandler::LocalPrinterRemoved(const std::string& name) { | 1556 void PrintPreviewHandler::LocalPrinterRemoved(const std::string& name) { |
| 1555 } | 1557 } |
| 1556 | 1558 |
| 1557 void PrintPreviewHandler::LocalPrinterCacheFlushed() { | 1559 void PrintPreviewHandler::LocalPrinterCacheFlushed() { |
| 1558 } | 1560 } |
| 1559 | 1561 |
| 1560 void PrintPreviewHandler::PrivetCapabilitiesUpdateClient( | 1562 void PrintPreviewHandler::PrivetCapabilitiesUpdateClient( |
| 1561 scoped_ptr<cloud_print::PrivetHTTPClient> http_client) { | 1563 std::unique_ptr<cloud_print::PrivetHTTPClient> http_client) { |
| 1562 if (!PrivetUpdateClient(std::move(http_client))) | 1564 if (!PrivetUpdateClient(std::move(http_client))) |
| 1563 return; | 1565 return; |
| 1564 | 1566 |
| 1565 privet_capabilities_operation_ = | 1567 privet_capabilities_operation_ = |
| 1566 privet_http_client_->CreateCapabilitiesOperation( | 1568 privet_http_client_->CreateCapabilitiesOperation( |
| 1567 base::Bind(&PrintPreviewHandler::OnPrivetCapabilities, | 1569 base::Bind(&PrintPreviewHandler::OnPrivetCapabilities, |
| 1568 base::Unretained(this))); | 1570 base::Unretained(this))); |
| 1569 privet_capabilities_operation_->Start(); | 1571 privet_capabilities_operation_->Start(); |
| 1570 } | 1572 } |
| 1571 | 1573 |
| 1572 bool PrintPreviewHandler::PrivetUpdateClient( | 1574 bool PrintPreviewHandler::PrivetUpdateClient( |
| 1573 scoped_ptr<cloud_print::PrivetHTTPClient> http_client) { | 1575 std::unique_ptr<cloud_print::PrivetHTTPClient> http_client) { |
| 1574 if (!http_client) { | 1576 if (!http_client) { |
| 1575 SendPrivetCapabilitiesError(privet_http_resolution_->GetName()); | 1577 SendPrivetCapabilitiesError(privet_http_resolution_->GetName()); |
| 1576 privet_http_resolution_.reset(); | 1578 privet_http_resolution_.reset(); |
| 1577 return false; | 1579 return false; |
| 1578 } | 1580 } |
| 1579 | 1581 |
| 1580 privet_local_print_operation_.reset(); | 1582 privet_local_print_operation_.reset(); |
| 1581 privet_capabilities_operation_.reset(); | 1583 privet_capabilities_operation_.reset(); |
| 1582 privet_http_client_ = cloud_print::PrivetV1HTTPClient::CreateDefault( | 1584 privet_http_client_ = cloud_print::PrivetV1HTTPClient::CreateDefault( |
| 1583 std::move(http_client)); | 1585 std::move(http_client)); |
| 1584 | 1586 |
| 1585 privet_http_resolution_.reset(); | 1587 privet_http_resolution_.reset(); |
| 1586 | 1588 |
| 1587 return true; | 1589 return true; |
| 1588 } | 1590 } |
| 1589 | 1591 |
| 1590 void PrintPreviewHandler::PrivetLocalPrintUpdateClient( | 1592 void PrintPreviewHandler::PrivetLocalPrintUpdateClient( |
| 1591 std::string print_ticket, | 1593 std::string print_ticket, |
| 1592 std::string capabilities, | 1594 std::string capabilities, |
| 1593 gfx::Size page_size, | 1595 gfx::Size page_size, |
| 1594 scoped_ptr<cloud_print::PrivetHTTPClient> http_client) { | 1596 std::unique_ptr<cloud_print::PrivetHTTPClient> http_client) { |
| 1595 if (!PrivetUpdateClient(std::move(http_client))) | 1597 if (!PrivetUpdateClient(std::move(http_client))) |
| 1596 return; | 1598 return; |
| 1597 | 1599 |
| 1598 StartPrivetLocalPrint(print_ticket, capabilities, page_size); | 1600 StartPrivetLocalPrint(print_ticket, capabilities, page_size); |
| 1599 } | 1601 } |
| 1600 | 1602 |
| 1601 void PrintPreviewHandler::StartPrivetLocalPrint(const std::string& print_ticket, | 1603 void PrintPreviewHandler::StartPrivetLocalPrint(const std::string& print_ticket, |
| 1602 const std::string& capabilities, | 1604 const std::string& capabilities, |
| 1603 const gfx::Size& page_size) { | 1605 const gfx::Size& page_size) { |
| 1604 privet_local_print_operation_ = | 1606 privet_local_print_operation_ = |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1803 | 1805 |
| 1804 void PrintPreviewHandler::UnregisterForGaiaCookieChanges() { | 1806 void PrintPreviewHandler::UnregisterForGaiaCookieChanges() { |
| 1805 if (gaia_cookie_manager_service_) | 1807 if (gaia_cookie_manager_service_) |
| 1806 gaia_cookie_manager_service_->RemoveObserver(this); | 1808 gaia_cookie_manager_service_->RemoveObserver(this); |
| 1807 } | 1809 } |
| 1808 | 1810 |
| 1809 void PrintPreviewHandler::SetPdfSavedClosureForTesting( | 1811 void PrintPreviewHandler::SetPdfSavedClosureForTesting( |
| 1810 const base::Closure& closure) { | 1812 const base::Closure& closure) { |
| 1811 pdf_file_saved_closure_ = closure; | 1813 pdf_file_saved_closure_ = closure; |
| 1812 } | 1814 } |
| OLD | NEW |