| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_handler.h" | 5 #include "chrome/browser/ui/webui/print_preview_handler.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/i18n/file_util_icu.h" | 9 #include "base/i18n/file_util_icu.h" |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 web_ui_->RegisterMessageCallback("print", | 363 web_ui_->RegisterMessageCallback("print", |
| 364 NewCallback(this, &PrintPreviewHandler::HandlePrint)); | 364 NewCallback(this, &PrintPreviewHandler::HandlePrint)); |
| 365 web_ui_->RegisterMessageCallback("getPrinterCapabilities", | 365 web_ui_->RegisterMessageCallback("getPrinterCapabilities", |
| 366 NewCallback(this, &PrintPreviewHandler::HandleGetPrinterCapabilities)); | 366 NewCallback(this, &PrintPreviewHandler::HandleGetPrinterCapabilities)); |
| 367 web_ui_->RegisterMessageCallback("showSystemDialog", | 367 web_ui_->RegisterMessageCallback("showSystemDialog", |
| 368 NewCallback(this, &PrintPreviewHandler::HandleShowSystemDialog)); | 368 NewCallback(this, &PrintPreviewHandler::HandleShowSystemDialog)); |
| 369 web_ui_->RegisterMessageCallback("managePrinters", | 369 web_ui_->RegisterMessageCallback("managePrinters", |
| 370 NewCallback(this, &PrintPreviewHandler::HandleManagePrinters)); | 370 NewCallback(this, &PrintPreviewHandler::HandleManagePrinters)); |
| 371 web_ui_->RegisterMessageCallback("closePrintPreviewTab", | 371 web_ui_->RegisterMessageCallback("closePrintPreviewTab", |
| 372 NewCallback(this, &PrintPreviewHandler::HandleClosePreviewTab)); | 372 NewCallback(this, &PrintPreviewHandler::HandleClosePreviewTab)); |
| 373 web_ui_->RegisterMessageCallback("hidePreview", |
| 374 NewCallback(this, &PrintPreviewHandler::HandleHidePreview)); |
| 373 } | 375 } |
| 374 | 376 |
| 375 TabContents* PrintPreviewHandler::preview_tab() { | 377 TabContents* PrintPreviewHandler::preview_tab() { |
| 376 return web_ui_->tab_contents(); | 378 return web_ui_->tab_contents(); |
| 377 } | 379 } |
| 378 | 380 |
| 379 void PrintPreviewHandler::HandleGetDefaultPrinter(const ListValue*) { | 381 void PrintPreviewHandler::HandleGetDefaultPrinter(const ListValue*) { |
| 380 scoped_refptr<PrintSystemTaskProxy> task = | 382 scoped_refptr<PrintSystemTaskProxy> task = |
| 381 new PrintSystemTaskProxy(AsWeakPtr(), | 383 new PrintSystemTaskProxy(AsWeakPtr(), |
| 382 print_backend_.get(), | 384 print_backend_.get(), |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 423 } | 425 } |
| 424 | 426 |
| 425 void PrintPreviewHandler::HandlePrint(const ListValue* args) { | 427 void PrintPreviewHandler::HandlePrint(const ListValue* args) { |
| 426 ReportStats(); | 428 ReportStats(); |
| 427 | 429 |
| 428 // Record the number of times the user requests to regenerate preview data | 430 // Record the number of times the user requests to regenerate preview data |
| 429 // before printing. | 431 // before printing. |
| 430 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint", | 432 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint", |
| 431 regenerate_preview_request_count_); | 433 regenerate_preview_request_count_); |
| 432 | 434 |
| 433 TabContents* initiator_tab = GetInitiatorTab(); | 435 ClearInitiatorTabDetails(); |
| 434 if (initiator_tab) { | |
| 435 RenderViewHost* rvh = initiator_tab->render_view_host(); | |
| 436 rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->routing_id())); | |
| 437 } | |
| 438 | 436 |
| 439 scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args)); | 437 scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args)); |
| 440 if (!settings.get()) | 438 if (!settings.get()) |
| 441 return; | 439 return; |
| 442 | 440 |
| 443 bool print_to_pdf = false; | 441 bool print_to_pdf = false; |
| 444 settings->GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf); | 442 settings->GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf); |
| 445 | 443 |
| 446 TabContentsWrapper* preview_tab_wrapper = | 444 TabContentsWrapper* preview_tab_wrapper = |
| 447 TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); | 445 TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 465 FilePath default_filename(print_job_title); | 463 FilePath default_filename(print_job_title); |
| 466 default_filename = | 464 default_filename = |
| 467 default_filename.ReplaceExtension(FILE_PATH_LITERAL("pdf")); | 465 default_filename.ReplaceExtension(FILE_PATH_LITERAL("pdf")); |
| 468 | 466 |
| 469 SelectFile(default_filename); | 467 SelectFile(default_filename); |
| 470 } else { | 468 } else { |
| 471 ReportPrintSettingsStats(*settings); | 469 ReportPrintSettingsStats(*settings); |
| 472 ReportUserActionHistogram(PRINT_TO_PRINTER); | 470 ReportUserActionHistogram(PRINT_TO_PRINTER); |
| 473 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter", | 471 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter", |
| 474 GetPageCountFromSettingsDictionary(*settings)); | 472 GetPageCountFromSettingsDictionary(*settings)); |
| 475 g_browser_process->background_printing_manager()->OwnTabContents( | 473 |
| 476 preview_tab_wrapper); | 474 HidePreviewTab(); |
| 477 | 475 |
| 478 // The PDF being printed contains only the pages that the user selected, | 476 // The PDF being printed contains only the pages that the user selected, |
| 479 // so ignore the page range and print all pages. | 477 // so ignore the page range and print all pages. |
| 480 settings->Remove(printing::kSettingPageRange, NULL); | 478 settings->Remove(printing::kSettingPageRange, NULL); |
| 481 RenderViewHost* rvh = web_ui_->GetRenderViewHost(); | 479 RenderViewHost* rvh = web_ui_->GetRenderViewHost(); |
| 482 rvh->Send(new PrintMsg_PrintForPrintPreview(rvh->routing_id(), *settings)); | 480 rvh->Send(new PrintMsg_PrintForPrintPreview(rvh->routing_id(), *settings)); |
| 483 } | 481 } |
| 484 } | 482 } |
| 485 | 483 |
| 484 void PrintPreviewHandler::HandleHidePreview(const ListValue* args) { |
| 485 HidePreviewTab(); |
| 486 } |
| 487 |
| 486 void PrintPreviewHandler::HandleGetPrinterCapabilities( | 488 void PrintPreviewHandler::HandleGetPrinterCapabilities( |
| 487 const ListValue* args) { | 489 const ListValue* args) { |
| 488 std::string printer_name; | 490 std::string printer_name; |
| 489 bool ret = args->GetString(0, &printer_name); | 491 bool ret = args->GetString(0, &printer_name); |
| 490 if (!ret || printer_name.empty()) | 492 if (!ret || printer_name.empty()) |
| 491 return; | 493 return; |
| 492 | 494 |
| 493 scoped_refptr<PrintSystemTaskProxy> task = | 495 scoped_refptr<PrintSystemTaskProxy> task = |
| 494 new PrintSystemTaskProxy(AsWeakPtr(), | 496 new PrintSystemTaskProxy(AsWeakPtr(), |
| 495 print_backend_.get(), | 497 print_backend_.get(), |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 631 metafile->InitFromData(static_cast<const void*>(data->front()), data->size()); | 633 metafile->InitFromData(static_cast<const void*>(data->front()), data->size()); |
| 632 | 634 |
| 633 // Updating last_saved_path_ to the newly selected folder. | 635 // Updating last_saved_path_ to the newly selected folder. |
| 634 *last_saved_path_ = path.DirName(); | 636 *last_saved_path_ = path.DirName(); |
| 635 | 637 |
| 636 PrintToPdfTask* task = new PrintToPdfTask(metafile, path); | 638 PrintToPdfTask* task = new PrintToPdfTask(metafile, path); |
| 637 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, task); | 639 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, task); |
| 638 | 640 |
| 639 ActivateInitiatorTabAndClosePreviewTab(); | 641 ActivateInitiatorTabAndClosePreviewTab(); |
| 640 } | 642 } |
| 643 |
| 644 void PrintPreviewHandler::HidePreviewTab() { |
| 645 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_); |
| 646 if (print_preview_ui->isHidden()) |
| 647 return; |
| 648 |
| 649 TabContentsWrapper* preview_tab_wrapper = |
| 650 TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); |
| 651 g_browser_process->background_printing_manager()->OwnTabContents( |
| 652 preview_tab_wrapper); |
| 653 print_preview_ui->setTabHiddenForPrint(); |
| 654 } |
| 655 |
| 656 void PrintPreviewHandler::ClearInitiatorTabDetails() { |
| 657 TabContents* initiator_tab = GetInitiatorTab(); |
| 658 if (initiator_tab) { |
| 659 RenderViewHost* rvh = initiator_tab->render_view_host(); |
| 660 rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->routing_id())); |
| 661 |
| 662 // Remove initiator tab association with the preview tab. |
| 663 printing::PrintPreviewTabController* tab_controller = |
| 664 printing::PrintPreviewTabController::GetInstance(); |
| 665 if (tab_controller) |
| 666 tab_controller->EraseInitiatorTabInfo(preview_tab()); |
| 667 } |
| 668 } |
| OLD | NEW |