| 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 |
| 10 #include <map> | 10 #include <map> |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 #include "printing/printing_context.h" | 83 #include "printing/printing_context.h" |
| 84 #include "printing/units.h" | 84 #include "printing/units.h" |
| 85 #include "third_party/icu/source/i18n/unicode/ulocdata.h" | 85 #include "third_party/icu/source/i18n/unicode/ulocdata.h" |
| 86 | 86 |
| 87 #if defined(OS_CHROMEOS) | 87 #if defined(OS_CHROMEOS) |
| 88 #include "chrome/browser/chromeos/settings/device_oauth2_token_service.h" | 88 #include "chrome/browser/chromeos/settings/device_oauth2_token_service.h" |
| 89 #include "chrome/browser/chromeos/settings/device_oauth2_token_service_factory.h
" | 89 #include "chrome/browser/chromeos/settings/device_oauth2_token_service_factory.h
" |
| 90 #include "chrome/common/url_constants.h" | 90 #include "chrome/common/url_constants.h" |
| 91 #endif | 91 #endif |
| 92 | 92 |
| 93 #if defined(ENABLE_SERVICE_DISCOVERY) | 93 #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY) |
| 94 #include "chrome/browser/printing/cloud_print/privet_constants.h" | 94 #include "chrome/browser/printing/cloud_print/privet_constants.h" |
| 95 #endif | 95 #endif |
| 96 | 96 |
| 97 using content::BrowserThread; | 97 using content::BrowserThread; |
| 98 using content::RenderViewHost; | 98 using content::RenderViewHost; |
| 99 using content::WebContents; | 99 using content::WebContents; |
| 100 | 100 |
| 101 namespace { | 101 namespace { |
| 102 | 102 |
| 103 enum UserActionBuckets { | 103 enum UserActionBuckets { |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 494 base::FilePath unique_path = path; | 494 base::FilePath unique_path = path; |
| 495 int uniquifier = | 495 int uniquifier = |
| 496 base::GetUniquePathNumber(path, base::FilePath::StringType()); | 496 base::GetUniquePathNumber(path, base::FilePath::StringType()); |
| 497 if (uniquifier > 0) { | 497 if (uniquifier > 0) { |
| 498 unique_path = unique_path.InsertBeforeExtensionASCII( | 498 unique_path = unique_path.InsertBeforeExtensionASCII( |
| 499 base::StringPrintf(" (%d)", uniquifier)); | 499 base::StringPrintf(" (%d)", uniquifier)); |
| 500 } | 500 } |
| 501 return unique_path; | 501 return unique_path; |
| 502 } | 502 } |
| 503 | 503 |
| 504 bool PrivetPrintingEnabled() { |
| 505 #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY) |
| 506 return true; |
| 507 #else |
| 508 return false; |
| 509 #endif |
| 510 } |
| 511 |
| 504 } // namespace | 512 } // namespace |
| 505 | 513 |
| 506 class PrintPreviewHandler::AccessTokenService | 514 class PrintPreviewHandler::AccessTokenService |
| 507 : public OAuth2TokenService::Consumer { | 515 : public OAuth2TokenService::Consumer { |
| 508 public: | 516 public: |
| 509 explicit AccessTokenService(PrintPreviewHandler* handler) | 517 explicit AccessTokenService(PrintPreviewHandler* handler) |
| 510 : OAuth2TokenService::Consumer("print_preview"), | 518 : OAuth2TokenService::Consumer("print_preview"), |
| 511 handler_(handler) { | 519 handler_(handler) { |
| 512 } | 520 } |
| 513 | 521 |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 "getExtensionPrinterCapabilities", | 670 "getExtensionPrinterCapabilities", |
| 663 base::Bind(&PrintPreviewHandler::HandleGetExtensionPrinterCapabilities, | 671 base::Bind(&PrintPreviewHandler::HandleGetExtensionPrinterCapabilities, |
| 664 base::Unretained(this))); | 672 base::Unretained(this))); |
| 665 web_ui()->RegisterMessageCallback( | 673 web_ui()->RegisterMessageCallback( |
| 666 "grantExtensionPrinterAccess", | 674 "grantExtensionPrinterAccess", |
| 667 base::Bind(&PrintPreviewHandler::HandleGrantExtensionPrinterAccess, | 675 base::Bind(&PrintPreviewHandler::HandleGrantExtensionPrinterAccess, |
| 668 base::Unretained(this))); | 676 base::Unretained(this))); |
| 669 RegisterForGaiaCookieChanges(); | 677 RegisterForGaiaCookieChanges(); |
| 670 } | 678 } |
| 671 | 679 |
| 672 bool PrintPreviewHandler::PrivetPrintingEnabled() { | |
| 673 #if defined(ENABLE_SERVICE_DISCOVERY) | |
| 674 return true; | |
| 675 #else | |
| 676 return false; | |
| 677 #endif | |
| 678 } | |
| 679 | |
| 680 WebContents* PrintPreviewHandler::preview_web_contents() const { | 680 WebContents* PrintPreviewHandler::preview_web_contents() const { |
| 681 return web_ui()->GetWebContents(); | 681 return web_ui()->GetWebContents(); |
| 682 } | 682 } |
| 683 | 683 |
| 684 PrintPreviewUI* PrintPreviewHandler::print_preview_ui() const { | 684 PrintPreviewUI* PrintPreviewHandler::print_preview_ui() const { |
| 685 return static_cast<PrintPreviewUI*>(web_ui()->GetController()); | 685 return static_cast<PrintPreviewUI*>(web_ui()->GetController()); |
| 686 } | 686 } |
| 687 | 687 |
| 688 void PrintPreviewHandler::HandleGetPrinters(const base::ListValue* /*args*/) { | 688 void PrintPreviewHandler::HandleGetPrinters(const base::ListValue* /*args*/) { |
| 689 base::ListValue* results = new base::ListValue; | 689 base::ListValue* results = new base::ListValue; |
| 690 BrowserThread::PostBlockingPoolTaskAndReply( | 690 BrowserThread::PostBlockingPoolTaskAndReply( |
| 691 FROM_HERE, base::Bind(&EnumeratePrintersOnBlockingPoolThread, | 691 FROM_HERE, base::Bind(&EnumeratePrintersOnBlockingPoolThread, |
| 692 base::Unretained(results)), | 692 base::Unretained(results)), |
| 693 base::Bind(&PrintPreviewHandler::SetupPrinterList, | 693 base::Bind(&PrintPreviewHandler::SetupPrinterList, |
| 694 weak_factory_.GetWeakPtr(), base::Owned(results))); | 694 weak_factory_.GetWeakPtr(), base::Owned(results))); |
| 695 } | 695 } |
| 696 | 696 |
| 697 void PrintPreviewHandler::HandleGetPrivetPrinters(const base::ListValue* args) { | 697 void PrintPreviewHandler::HandleGetPrivetPrinters(const base::ListValue* args) { |
| 698 if (!PrivetPrintingEnabled()) | 698 if (!PrivetPrintingEnabled()) |
| 699 return web_ui()->CallJavascriptFunctionUnsafe("onPrivetPrinterSearchDone"); | 699 return web_ui()->CallJavascriptFunctionUnsafe("onPrivetPrinterSearchDone"); |
| 700 #if defined(ENABLE_SERVICE_DISCOVERY) | 700 #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY) |
| 701 using local_discovery::ServiceDiscoverySharedClient; | 701 using local_discovery::ServiceDiscoverySharedClient; |
| 702 scoped_refptr<ServiceDiscoverySharedClient> service_discovery = | 702 scoped_refptr<ServiceDiscoverySharedClient> service_discovery = |
| 703 ServiceDiscoverySharedClient::GetInstance(); | 703 ServiceDiscoverySharedClient::GetInstance(); |
| 704 StartPrivetLister(service_discovery); | 704 StartPrivetLister(service_discovery); |
| 705 #endif // ENABLE_SERVICE_DISCOVERY | 705 #endif |
| 706 } | 706 } |
| 707 | 707 |
| 708 void PrintPreviewHandler::HandleStopGetPrivetPrinters( | 708 void PrintPreviewHandler::HandleStopGetPrivetPrinters( |
| 709 const base::ListValue* args) { | 709 const base::ListValue* args) { |
| 710 #if defined(ENABLE_SERVICE_DISCOVERY) | 710 #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY) |
| 711 if (PrivetPrintingEnabled() && printer_lister_) { | 711 if (PrivetPrintingEnabled() && printer_lister_) { |
| 712 printer_lister_->Stop(); | 712 printer_lister_->Stop(); |
| 713 } | 713 } |
| 714 #endif | 714 #endif |
| 715 } | 715 } |
| 716 | 716 |
| 717 void PrintPreviewHandler::HandleGetPrivetPrinterCapabilities( | 717 void PrintPreviewHandler::HandleGetPrivetPrinterCapabilities( |
| 718 const base::ListValue* args) { | 718 const base::ListValue* args) { |
| 719 #if defined(ENABLE_SERVICE_DISCOVERY) | 719 #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY) |
| 720 std::string name; | 720 std::string name; |
| 721 bool success = args->GetString(0, &name); | 721 bool success = args->GetString(0, &name); |
| 722 DCHECK(success); | 722 DCHECK(success); |
| 723 | 723 |
| 724 CreatePrivetHTTP( | 724 CreatePrivetHTTP( |
| 725 name, | 725 name, |
| 726 base::Bind(&PrintPreviewHandler::PrivetCapabilitiesUpdateClient, | 726 base::Bind(&PrintPreviewHandler::PrivetCapabilitiesUpdateClient, |
| 727 base::Unretained(this))); | 727 base::Unretained(this))); |
| 728 #endif | 728 #endif |
| 729 } | 729 } |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 883 int page_count = 0; | 883 int page_count = 0; |
| 884 settings->GetInteger(printing::kSettingPreviewPageCount, &page_count); | 884 settings->GetInteger(printing::kSettingPreviewPageCount, &page_count); |
| 885 | 885 |
| 886 if (print_to_pdf) { | 886 if (print_to_pdf) { |
| 887 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPDF", page_count); | 887 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPDF", page_count); |
| 888 ReportUserActionHistogram(PRINT_TO_PDF); | 888 ReportUserActionHistogram(PRINT_TO_PDF); |
| 889 PrintToPdf(); | 889 PrintToPdf(); |
| 890 return; | 890 return; |
| 891 } | 891 } |
| 892 | 892 |
| 893 #if defined(ENABLE_SERVICE_DISCOVERY) | 893 #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY) |
| 894 if (print_with_privet && PrivetPrintingEnabled()) { | 894 if (print_with_privet && PrivetPrintingEnabled()) { |
| 895 std::string printer_name; | 895 std::string printer_name; |
| 896 std::string print_ticket; | 896 std::string print_ticket; |
| 897 std::string capabilities; | 897 std::string capabilities; |
| 898 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintWithPrivet", page_count); | 898 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintWithPrivet", page_count); |
| 899 ReportUserActionHistogram(PRINT_WITH_PRIVET); | 899 ReportUserActionHistogram(PRINT_WITH_PRIVET); |
| 900 | 900 |
| 901 int width = 0; | 901 int width = 0; |
| 902 int height = 0; | 902 int height = 0; |
| 903 if (!settings->GetString(printing::kSettingDeviceName, &printer_name) || | 903 if (!settings->GetString(printing::kSettingDeviceName, &printer_name) || |
| (...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1478 // Nothing to print, no preview available. | 1478 // Nothing to print, no preview available. |
| 1479 return false; | 1479 return false; |
| 1480 } | 1480 } |
| 1481 DCHECK(tmp_data->size() && tmp_data->front()); | 1481 DCHECK(tmp_data->size() && tmp_data->front()); |
| 1482 | 1482 |
| 1483 *data = tmp_data; | 1483 *data = tmp_data; |
| 1484 *title = print_preview_ui()->initiator_title(); | 1484 *title = print_preview_ui()->initiator_title(); |
| 1485 return true; | 1485 return true; |
| 1486 } | 1486 } |
| 1487 | 1487 |
| 1488 #if defined(ENABLE_SERVICE_DISCOVERY) | 1488 #if BUILDFLAG(ENABLE_SERVICE_DISCOVERY) |
| 1489 | |
| 1490 void PrintPreviewHandler::StartPrivetLister(const scoped_refptr< | 1489 void PrintPreviewHandler::StartPrivetLister(const scoped_refptr< |
| 1491 local_discovery::ServiceDiscoverySharedClient>& client) { | 1490 local_discovery::ServiceDiscoverySharedClient>& client) { |
| 1492 if (!PrivetPrintingEnabled()) | 1491 if (!PrivetPrintingEnabled()) |
| 1493 return web_ui()->CallJavascriptFunctionUnsafe("onPrivetPrinterSearchDone"); | 1492 return web_ui()->CallJavascriptFunctionUnsafe("onPrivetPrinterSearchDone"); |
| 1494 | 1493 |
| 1495 Profile* profile = Profile::FromWebUI(web_ui()); | 1494 Profile* profile = Profile::FromWebUI(web_ui()); |
| 1496 DCHECK(!service_discovery_client_.get() || | 1495 DCHECK(!service_discovery_client_.get() || |
| 1497 service_discovery_client_.get() == client.get()); | 1496 service_discovery_client_.get() == client.get()); |
| 1498 service_discovery_client_ = client; | 1497 service_discovery_client_ = client; |
| 1499 printer_lister_.reset(new cloud_print::PrivetLocalPrinterLister( | 1498 printer_lister_.reset(new cloud_print::PrivetLocalPrinterLister( |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1687 | 1686 |
| 1688 printer_value->SetString("serviceName", name); | 1687 printer_value->SetString("serviceName", name); |
| 1689 printer_value->SetString("name", description.name); | 1688 printer_value->SetString("name", description.name); |
| 1690 printer_value->SetBoolean("hasLocalPrinting", has_local_printing); | 1689 printer_value->SetBoolean("hasLocalPrinting", has_local_printing); |
| 1691 printer_value->SetBoolean( | 1690 printer_value->SetBoolean( |
| 1692 "isUnregistered", | 1691 "isUnregistered", |
| 1693 description.id.empty() && | 1692 description.id.empty() && |
| 1694 command_line->HasSwitch(switches::kEnablePrintPreviewRegisterPromos)); | 1693 command_line->HasSwitch(switches::kEnablePrintPreviewRegisterPromos)); |
| 1695 printer_value->SetString("cloudID", description.id); | 1694 printer_value->SetString("cloudID", description.id); |
| 1696 } | 1695 } |
| 1697 | 1696 #endif // BUILDFLAG(ENABLE_SERVICE_DISCOVERY) |
| 1698 #endif // defined(ENABLE_SERVICE_DISCOVERY) | |
| 1699 | 1697 |
| 1700 void PrintPreviewHandler::EnsureExtensionPrinterHandlerSet() { | 1698 void PrintPreviewHandler::EnsureExtensionPrinterHandlerSet() { |
| 1701 if (extension_printer_handler_) | 1699 if (extension_printer_handler_) |
| 1702 return; | 1700 return; |
| 1703 | 1701 |
| 1704 extension_printer_handler_ = | 1702 extension_printer_handler_ = |
| 1705 PrinterHandler::CreateForExtensionPrinters(Profile::FromWebUI(web_ui())); | 1703 PrinterHandler::CreateForExtensionPrinters(Profile::FromWebUI(web_ui())); |
| 1706 } | 1704 } |
| 1707 | 1705 |
| 1708 void PrintPreviewHandler::OnGotPrintersForExtension( | 1706 void PrintPreviewHandler::OnGotPrintersForExtension( |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1767 | 1765 |
| 1768 void PrintPreviewHandler::UnregisterForGaiaCookieChanges() { | 1766 void PrintPreviewHandler::UnregisterForGaiaCookieChanges() { |
| 1769 if (gaia_cookie_manager_service_) | 1767 if (gaia_cookie_manager_service_) |
| 1770 gaia_cookie_manager_service_->RemoveObserver(this); | 1768 gaia_cookie_manager_service_->RemoveObserver(this); |
| 1771 } | 1769 } |
| 1772 | 1770 |
| 1773 void PrintPreviewHandler::SetPdfSavedClosureForTesting( | 1771 void PrintPreviewHandler::SetPdfSavedClosureForTesting( |
| 1774 const base::Closure& closure) { | 1772 const base::Closure& closure) { |
| 1775 pdf_file_saved_closure_ = closure; | 1773 pdf_file_saved_closure_ = closure; |
| 1776 } | 1774 } |
| OLD | NEW |