| 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 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 543 string16 title; | 543 string16 title; |
| 544 if (!GetPreviewDataAndTitle(&data, &title)) { | 544 if (!GetPreviewDataAndTitle(&data, &title)) { |
| 545 // Nothing to print, no preview available. | 545 // Nothing to print, no preview available. |
| 546 return; | 546 return; |
| 547 } | 547 } |
| 548 | 548 |
| 549 if (is_cloud_printer) { | 549 if (is_cloud_printer) { |
| 550 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToCloudPrint", | 550 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToCloudPrint", |
| 551 page_count); | 551 page_count); |
| 552 ReportUserActionHistogram(PRINT_WITH_CLOUD_PRINT); | 552 ReportUserActionHistogram(PRINT_WITH_CLOUD_PRINT); |
| 553 SendCloudPrintJob(data); | 553 SendCloudPrintJob(data.get()); |
| 554 } else { | 554 } else { |
| 555 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter", page_count); | 555 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter", page_count); |
| 556 ReportUserActionHistogram(PRINT_TO_PRINTER); | 556 ReportUserActionHistogram(PRINT_TO_PRINTER); |
| 557 ReportPrintSettingsStats(*settings); | 557 ReportPrintSettingsStats(*settings); |
| 558 | 558 |
| 559 // This tries to activate the initiator tab as well, so do not clear the | 559 // This tries to activate the initiator tab as well, so do not clear the |
| 560 // association with the initiator tab yet. | 560 // association with the initiator tab yet. |
| 561 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( | 561 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( |
| 562 web_ui()->GetController()); | 562 web_ui()->GetController()); |
| 563 print_preview_ui->OnHidePreviewDialog(); | 563 print_preview_ui->OnHidePreviewDialog(); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 588 printing::PrintViewManager::FromWebContents(initiator_tab); | 588 printing::PrintViewManager::FromWebContents(initiator_tab); |
| 589 print_view_manager->PrintPreviewDone(); | 589 print_view_manager->PrintPreviewDone(); |
| 590 } | 590 } |
| 591 } | 591 } |
| 592 } | 592 } |
| 593 | 593 |
| 594 void PrintPreviewHandler::PrintToPdf() { | 594 void PrintPreviewHandler::PrintToPdf() { |
| 595 if (print_to_pdf_path_.get()) { | 595 if (print_to_pdf_path_.get()) { |
| 596 // User has already selected a path, no need to show the dialog again. | 596 // User has already selected a path, no need to show the dialog again. |
| 597 PostPrintToPdfTask(); | 597 PostPrintToPdfTask(); |
| 598 } else if (!select_file_dialog_ || | 598 } else if (!select_file_dialog_.get() || |
| 599 !select_file_dialog_->IsRunning( | 599 !select_file_dialog_->IsRunning(platform_util::GetTopLevel( |
| 600 platform_util::GetTopLevel( | 600 preview_web_contents()->GetView()->GetNativeView()))) { |
| 601 preview_web_contents()->GetView()->GetNativeView()))) { | |
| 602 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( | 601 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( |
| 603 web_ui()->GetController()); | 602 web_ui()->GetController()); |
| 604 // Pre-populating select file dialog with print job title. | 603 // Pre-populating select file dialog with print job title. |
| 605 string16 print_job_title_utf16 = print_preview_ui->initiator_tab_title(); | 604 string16 print_job_title_utf16 = print_preview_ui->initiator_tab_title(); |
| 606 | 605 |
| 607 #if defined(OS_WIN) | 606 #if defined(OS_WIN) |
| 608 base::FilePath::StringType print_job_title(print_job_title_utf16); | 607 base::FilePath::StringType print_job_title(print_job_title_utf16); |
| 609 #elif defined(OS_POSIX) | 608 #elif defined(OS_POSIX) |
| 610 base::FilePath::StringType print_job_title = | 609 base::FilePath::StringType print_job_title = |
| 611 UTF16ToUTF8(print_job_title_utf16); | 610 UTF16ToUTF8(print_job_title_utf16); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 702 if (!GetPreviewDataAndTitle(&data, &title)) { | 701 if (!GetPreviewDataAndTitle(&data, &title)) { |
| 703 // Nothing to print, no preview available. | 702 // Nothing to print, no preview available. |
| 704 return; | 703 return; |
| 705 } | 704 } |
| 706 | 705 |
| 707 gfx::NativeWindow modal_parent = platform_util::GetTopLevel( | 706 gfx::NativeWindow modal_parent = platform_util::GetTopLevel( |
| 708 preview_web_contents()->GetView()->GetNativeView()); | 707 preview_web_contents()->GetView()->GetNativeView()); |
| 709 print_dialog_cloud::CreatePrintDialogForBytes( | 708 print_dialog_cloud::CreatePrintDialogForBytes( |
| 710 preview_web_contents()->GetBrowserContext(), | 709 preview_web_contents()->GetBrowserContext(), |
| 711 modal_parent, | 710 modal_parent, |
| 712 data, | 711 data.get(), |
| 713 title, | 712 title, |
| 714 string16(), | 713 string16(), |
| 715 std::string("application/pdf")); | 714 std::string("application/pdf")); |
| 716 | 715 |
| 717 // Once the cloud print dialog comes up we're no longer in a background | 716 // Once the cloud print dialog comes up we're no longer in a background |
| 718 // printing situation. Close the print preview. | 717 // printing situation. Close the print preview. |
| 719 // TODO(abodenha@chromium.org) The flow should be changed as described in | 718 // TODO(abodenha@chromium.org) The flow should be changed as described in |
| 720 // http://code.google.com/p/chromium/issues/detail?id=44093 | 719 // http://code.google.com/p/chromium/issues/detail?id=44093 |
| 721 ClosePreviewDialog(); | 720 ClosePreviewDialog(); |
| 722 } | 721 } |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1072 | 1071 |
| 1073 bool PrintPreviewHandler::GetPreviewDataAndTitle( | 1072 bool PrintPreviewHandler::GetPreviewDataAndTitle( |
| 1074 scoped_refptr<base::RefCountedBytes>* data, | 1073 scoped_refptr<base::RefCountedBytes>* data, |
| 1075 string16* title) const { | 1074 string16* title) const { |
| 1076 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( | 1075 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( |
| 1077 web_ui()->GetController()); | 1076 web_ui()->GetController()); |
| 1078 scoped_refptr<base::RefCountedBytes> tmp_data; | 1077 scoped_refptr<base::RefCountedBytes> tmp_data; |
| 1079 print_preview_ui->GetPrintPreviewDataForIndex( | 1078 print_preview_ui->GetPrintPreviewDataForIndex( |
| 1080 printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, &tmp_data); | 1079 printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, &tmp_data); |
| 1081 | 1080 |
| 1082 if (!tmp_data) { | 1081 if (!tmp_data.get()) { |
| 1083 // Nothing to print, no preview available. | 1082 // Nothing to print, no preview available. |
| 1084 return false; | 1083 return false; |
| 1085 } | 1084 } |
| 1086 DCHECK(tmp_data->size() && tmp_data->front()); | 1085 DCHECK(tmp_data->size() && tmp_data->front()); |
| 1087 | 1086 |
| 1088 *data = tmp_data; | 1087 *data = tmp_data; |
| 1089 *title = print_preview_ui->initiator_tab_title(); | 1088 *title = print_preview_ui->initiator_tab_title(); |
| 1090 return true; | 1089 return true; |
| 1091 } | 1090 } |
| 1092 | 1091 |
| OLD | NEW |