Chromium Code Reviews| 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 |