Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(119)

Side by Side Diff: chrome/browser/ui/webui/print_preview_handler.cc

Issue 7056070: PrintPreview: Preview generation should not block print button. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698