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 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
367 web_ui_->RegisterMessageCallback("print", | 367 web_ui_->RegisterMessageCallback("print", |
368 NewCallback(this, &PrintPreviewHandler::HandlePrint)); | 368 NewCallback(this, &PrintPreviewHandler::HandlePrint)); |
369 web_ui_->RegisterMessageCallback("getPrinterCapabilities", | 369 web_ui_->RegisterMessageCallback("getPrinterCapabilities", |
370 NewCallback(this, &PrintPreviewHandler::HandleGetPrinterCapabilities)); | 370 NewCallback(this, &PrintPreviewHandler::HandleGetPrinterCapabilities)); |
371 web_ui_->RegisterMessageCallback("showSystemDialog", | 371 web_ui_->RegisterMessageCallback("showSystemDialog", |
372 NewCallback(this, &PrintPreviewHandler::HandleShowSystemDialog)); | 372 NewCallback(this, &PrintPreviewHandler::HandleShowSystemDialog)); |
373 web_ui_->RegisterMessageCallback("managePrinters", | 373 web_ui_->RegisterMessageCallback("managePrinters", |
374 NewCallback(this, &PrintPreviewHandler::HandleManagePrinters)); | 374 NewCallback(this, &PrintPreviewHandler::HandleManagePrinters)); |
375 web_ui_->RegisterMessageCallback("closePrintPreviewTab", | 375 web_ui_->RegisterMessageCallback("closePrintPreviewTab", |
376 NewCallback(this, &PrintPreviewHandler::HandleClosePreviewTab)); | 376 NewCallback(this, &PrintPreviewHandler::HandleClosePreviewTab)); |
377 web_ui_->RegisterMessageCallback("hidePreview", | |
378 NewCallback(this, &PrintPreviewHandler::HandleHidePreview)); | |
377 } | 379 } |
378 | 380 |
379 TabContents* PrintPreviewHandler::preview_tab() { | 381 TabContents* PrintPreviewHandler::preview_tab() { |
380 return web_ui_->tab_contents(); | 382 return web_ui_->tab_contents(); |
381 } | 383 } |
382 | 384 |
383 void PrintPreviewHandler::HandleGetDefaultPrinter(const ListValue*) { | 385 void PrintPreviewHandler::HandleGetDefaultPrinter(const ListValue*) { |
384 scoped_refptr<PrintSystemTaskProxy> task = | 386 scoped_refptr<PrintSystemTaskProxy> task = |
385 new PrintSystemTaskProxy(AsWeakPtr(), | 387 new PrintSystemTaskProxy(AsWeakPtr(), |
386 print_backend_.get(), | 388 print_backend_.get(), |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
427 } | 429 } |
428 | 430 |
429 void PrintPreviewHandler::HandlePrint(const ListValue* args) { | 431 void PrintPreviewHandler::HandlePrint(const ListValue* args) { |
430 ReportStats(); | 432 ReportStats(); |
431 | 433 |
432 // Record the number of times the user requests to regenerate preview data | 434 // Record the number of times the user requests to regenerate preview data |
433 // before printing. | 435 // before printing. |
434 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint", | 436 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint", |
435 regenerate_preview_request_count_); | 437 regenerate_preview_request_count_); |
436 | 438 |
437 TabContents* initiator_tab = GetInitiatorTab(); | |
Lei Zhang
2011/06/09 09:54:55
Why did you move this code?
kmadhusu
2011/06/09 18:11:44
oops. My bad. Reverted this change.
| |
438 if (initiator_tab) { | |
439 RenderViewHost* rvh = initiator_tab->render_view_host(); | |
440 rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->routing_id())); | |
441 } | |
442 | |
443 scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args)); | 439 scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args)); |
444 if (!settings.get()) | 440 if (!settings.get()) |
445 return; | 441 return; |
446 | 442 |
447 // Initializing last_used_printer_ if it is not already initialized. | 443 // Initializing last_used_printer_ if it is not already initialized. |
448 if (!last_used_printer_) | 444 if (!last_used_printer_) |
449 last_used_printer_ = new std::string(); | 445 last_used_printer_ = new std::string(); |
450 // Storing last used printer. | 446 // Storing last used printer. |
451 settings->GetString("deviceName", last_used_printer_); | 447 settings->GetString("deviceName", last_used_printer_); |
452 | 448 |
(...skipping 18 matching lines...) Expand all Loading... | |
471 FilePath::StringType print_job_title = UTF16ToUTF8(print_job_title_utf16); | 467 FilePath::StringType print_job_title = UTF16ToUTF8(print_job_title_utf16); |
472 #endif | 468 #endif |
473 | 469 |
474 file_util::ReplaceIllegalCharactersInPath(&print_job_title, '_'); | 470 file_util::ReplaceIllegalCharactersInPath(&print_job_title, '_'); |
475 FilePath default_filename(print_job_title); | 471 FilePath default_filename(print_job_title); |
476 default_filename = | 472 default_filename = |
477 default_filename.ReplaceExtension(FILE_PATH_LITERAL("pdf")); | 473 default_filename.ReplaceExtension(FILE_PATH_LITERAL("pdf")); |
478 | 474 |
479 SelectFile(default_filename); | 475 SelectFile(default_filename); |
480 } else { | 476 } else { |
477 ClearInitiatorTabDetails(); | |
481 ReportPrintSettingsStats(*settings); | 478 ReportPrintSettingsStats(*settings); |
482 ReportUserActionHistogram(PRINT_TO_PRINTER); | 479 ReportUserActionHistogram(PRINT_TO_PRINTER); |
483 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter", | 480 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter", |
484 GetPageCountFromSettingsDictionary(*settings)); | 481 GetPageCountFromSettingsDictionary(*settings)); |
485 g_browser_process->background_printing_manager()->OwnTabContents( | 482 |
486 preview_tab_wrapper); | 483 HidePreviewTab(); |
487 | 484 |
488 // The PDF being printed contains only the pages that the user selected, | 485 // The PDF being printed contains only the pages that the user selected, |
489 // so ignore the page range and print all pages. | 486 // so ignore the page range and print all pages. |
490 settings->Remove(printing::kSettingPageRange, NULL); | 487 settings->Remove(printing::kSettingPageRange, NULL); |
491 RenderViewHost* rvh = web_ui_->GetRenderViewHost(); | 488 RenderViewHost* rvh = web_ui_->GetRenderViewHost(); |
492 rvh->Send(new PrintMsg_PrintForPrintPreview(rvh->routing_id(), *settings)); | 489 rvh->Send(new PrintMsg_PrintForPrintPreview(rvh->routing_id(), *settings)); |
493 } | 490 } |
494 } | 491 } |
495 | 492 |
493 void PrintPreviewHandler::HandleHidePreview(const ListValue* args) { | |
494 HidePreviewTab(); | |
495 } | |
496 | |
496 void PrintPreviewHandler::HandleGetPrinterCapabilities( | 497 void PrintPreviewHandler::HandleGetPrinterCapabilities( |
497 const ListValue* args) { | 498 const ListValue* args) { |
498 std::string printer_name; | 499 std::string printer_name; |
499 bool ret = args->GetString(0, &printer_name); | 500 bool ret = args->GetString(0, &printer_name); |
500 if (!ret || printer_name.empty()) | 501 if (!ret || printer_name.empty()) |
501 return; | 502 return; |
502 | 503 |
503 scoped_refptr<PrintSystemTaskProxy> task = | 504 scoped_refptr<PrintSystemTaskProxy> task = |
504 new PrintSystemTaskProxy(AsWeakPtr(), | 505 new PrintSystemTaskProxy(AsWeakPtr(), |
505 print_backend_.get(), | 506 print_backend_.get(), |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
638 metafile->InitFromData(static_cast<const void*>(data->front()), data->size()); | 639 metafile->InitFromData(static_cast<const void*>(data->front()), data->size()); |
639 | 640 |
640 // Updating last_saved_path_ to the newly selected folder. | 641 // Updating last_saved_path_ to the newly selected folder. |
641 *last_saved_path_ = path.DirName(); | 642 *last_saved_path_ = path.DirName(); |
642 | 643 |
643 PrintToPdfTask* task = new PrintToPdfTask(metafile, path); | 644 PrintToPdfTask* task = new PrintToPdfTask(metafile, path); |
644 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, task); | 645 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, task); |
645 | 646 |
646 ActivateInitiatorTabAndClosePreviewTab(); | 647 ActivateInitiatorTabAndClosePreviewTab(); |
647 } | 648 } |
649 | |
650 void PrintPreviewHandler::HidePreviewTab() { | |
651 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_); | |
652 if (print_preview_ui->isHidden()) | |
653 return; | |
654 | |
655 TabContentsWrapper* preview_tab_wrapper = | |
656 TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); | |
657 g_browser_process->background_printing_manager()->OwnTabContents( | |
658 preview_tab_wrapper); | |
659 print_preview_ui->setTabHiddenForPrint(); | |
660 } | |
661 | |
662 void PrintPreviewHandler::ClearInitiatorTabDetails() { | |
663 TabContents* initiator_tab = GetInitiatorTab(); | |
664 if (initiator_tab) { | |
665 RenderViewHost* rvh = initiator_tab->render_view_host(); | |
666 rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->routing_id())); | |
667 | |
668 // Remove initiator tab association with the preview tab. | |
Lei Zhang
2011/06/09 09:54:55
You should mention why we do this here.
kmadhusu
2011/06/09 18:11:44
Done.
| |
669 printing::PrintPreviewTabController* tab_controller = | |
670 printing::PrintPreviewTabController::GetInstance(); | |
671 if (tab_controller) | |
672 tab_controller->EraseInitiatorTabInfo(preview_tab()); | |
673 } | |
674 } | |
OLD | NEW |