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

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

Issue 17500003: Close web contents modal dialogs on content load start (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Compilation fixes, change "inhibit" variable names Created 7 years, 5 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) 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 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 // The cloud print OAuth2 scope. 85 // The cloud print OAuth2 scope.
86 const char kCloudPrintAuth[] = "https://www.googleapis.com/auth/cloudprint"; 86 const char kCloudPrintAuth[] = "https://www.googleapis.com/auth/cloudprint";
87 87
88 enum UserActionBuckets { 88 enum UserActionBuckets {
89 PRINT_TO_PRINTER, 89 PRINT_TO_PRINTER,
90 PRINT_TO_PDF, 90 PRINT_TO_PDF,
91 CANCEL, 91 CANCEL,
92 FALLBACK_TO_ADVANCED_SETTINGS_DIALOG, 92 FALLBACK_TO_ADVANCED_SETTINGS_DIALOG,
93 PREVIEW_FAILED, 93 PREVIEW_FAILED,
94 PREVIEW_STARTED, 94 PREVIEW_STARTED,
95 INITIATOR_TAB_CRASHED, // UNUSED 95 INITIATOR_CRASHED, // UNUSED
96 INITIATOR_TAB_CLOSED, 96 INITIATOR_CLOSED,
97 PRINT_WITH_CLOUD_PRINT, 97 PRINT_WITH_CLOUD_PRINT,
98 USERACTION_BUCKET_BOUNDARY 98 USERACTION_BUCKET_BOUNDARY
99 }; 99 };
100 100
101 enum PrintSettingsBuckets { 101 enum PrintSettingsBuckets {
102 LANDSCAPE = 0, 102 LANDSCAPE = 0,
103 PORTRAIT, 103 PORTRAIT,
104 COLOR, 104 COLOR,
105 BLACK_AND_WHITE, 105 BLACK_AND_WHITE,
106 COLLATE, 106 COLLATE,
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 PRINT_DESTINATION_BUCKET_BOUNDARY); 150 PRINT_DESTINATION_BUCKET_BOUNDARY);
151 } 151 }
152 152
153 void ReportGcpPromoHistogram(enum GcpPromoBuckets event) { 153 void ReportGcpPromoHistogram(enum GcpPromoBuckets event) {
154 UMA_HISTOGRAM_ENUMERATION("PrintPreview.GcpPromo", event, 154 UMA_HISTOGRAM_ENUMERATION("PrintPreview.GcpPromo", event,
155 GCP_PROMO_BUCKET_BOUNDARY); 155 GCP_PROMO_BUCKET_BOUNDARY);
156 } 156 }
157 157
158 // Name of a dictionary field holding cloud print related data; 158 // Name of a dictionary field holding cloud print related data;
159 const char kAppState[] = "appState"; 159 const char kAppState[] = "appState";
160 // Name of a dictionary field holding the initiator tab title. 160 // Name of a dictionary field holding the initiator title.
161 const char kInitiatorTabTitle[] = "initiatorTabTitle"; 161 const char kInitiatorTitle[] = "initiatorTitle";
162 // Name of a dictionary field holding the measurement system according to the 162 // Name of a dictionary field holding the measurement system according to the
163 // locale. 163 // locale.
164 const char kMeasurementSystem[] = "measurementSystem"; 164 const char kMeasurementSystem[] = "measurementSystem";
165 // Name of a dictionary field holding the number format according to the locale. 165 // Name of a dictionary field holding the number format according to the locale.
166 const char kNumberFormat[] = "numberFormat"; 166 const char kNumberFormat[] = "numberFormat";
167 // Name of a dictionary field specifying whether to print automatically in 167 // Name of a dictionary field specifying whether to print automatically in
168 // kiosk mode. See http://crbug.com/31395. 168 // kiosk mode. See http://crbug.com/31395.
169 const char kPrintAutomaticallyInKioskMode[] = "printAutomaticallyInKioskMode"; 169 const char kPrintAutomaticallyInKioskMode[] = "printAutomaticallyInKioskMode";
170 // Name of a dictionary field holding the state of selection for document. 170 // Name of a dictionary field holding the state of selection for document.
171 const char kDocumentHasSelection[] = "documentHasSelection"; 171 const char kDocumentHasSelection[] = "documentHasSelection";
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 print_preview_ui->OnPrintPreviewRequest(request_id); 438 print_preview_ui->OnPrintPreviewRequest(request_id);
439 // Add an additional key in order to identify |print_preview_ui| later on 439 // Add an additional key in order to identify |print_preview_ui| later on
440 // when calling PrintPreviewUI::GetCurrentPrintPreviewStatus() on the IO 440 // when calling PrintPreviewUI::GetCurrentPrintPreviewStatus() on the IO
441 // thread. 441 // thread.
442 settings->SetInteger(printing::kPreviewUIID, 442 settings->SetInteger(printing::kPreviewUIID,
443 print_preview_ui->GetIDForPrintPreviewUI()); 443 print_preview_ui->GetIDForPrintPreviewUI());
444 444
445 // Increment request count. 445 // Increment request count.
446 ++regenerate_preview_request_count_; 446 ++regenerate_preview_request_count_;
447 447
448 WebContents* initiator_tab = GetInitiatorTab(); 448 WebContents* initiator = GetInitiator();
449 if (!initiator_tab) { 449 if (!initiator) {
450 ReportUserActionHistogram(INITIATOR_TAB_CLOSED); 450 ReportUserActionHistogram(INITIATOR_CLOSED);
451 print_preview_ui->OnClosePrintPreviewDialog(); 451 print_preview_ui->OnClosePrintPreviewDialog();
452 return; 452 return;
453 } 453 }
454 454
455 // Retrieve the page title and url and send it to the renderer process if 455 // Retrieve the page title and url and send it to the renderer process if
456 // headers and footers are to be displayed. 456 // headers and footers are to be displayed.
457 bool display_header_footer = false; 457 bool display_header_footer = false;
458 if (!settings->GetBoolean(printing::kSettingHeaderFooterEnabled, 458 if (!settings->GetBoolean(printing::kSettingHeaderFooterEnabled,
459 &display_header_footer)) { 459 &display_header_footer)) {
460 NOTREACHED(); 460 NOTREACHED();
461 } 461 }
462 if (display_header_footer) { 462 if (display_header_footer) {
463 settings->SetString(printing::kSettingHeaderFooterTitle, 463 settings->SetString(printing::kSettingHeaderFooterTitle,
464 initiator_tab->GetTitle()); 464 initiator->GetTitle());
465 std::string url; 465 std::string url;
466 NavigationEntry* entry = initiator_tab->GetController().GetActiveEntry(); 466 NavigationEntry* entry = initiator->GetController().GetActiveEntry();
467 if (entry) 467 if (entry)
468 url = entry->GetVirtualURL().spec(); 468 url = entry->GetVirtualURL().spec();
469 settings->SetString(printing::kSettingHeaderFooterURL, url); 469 settings->SetString(printing::kSettingHeaderFooterURL, url);
470 } 470 }
471 471
472 bool generate_draft_data = false; 472 bool generate_draft_data = false;
473 bool success = settings->GetBoolean(printing::kSettingGenerateDraftData, 473 bool success = settings->GetBoolean(printing::kSettingGenerateDraftData,
474 &generate_draft_data); 474 &generate_draft_data);
475 DCHECK(success); 475 DCHECK(success);
476 476
477 if (!generate_draft_data) { 477 if (!generate_draft_data) {
478 double draft_page_count_double = -1; 478 double draft_page_count_double = -1;
479 success = args->GetDouble(1, &draft_page_count_double); 479 success = args->GetDouble(1, &draft_page_count_double);
480 DCHECK(success); 480 DCHECK(success);
481 int draft_page_count = static_cast<int>(draft_page_count_double); 481 int draft_page_count = static_cast<int>(draft_page_count_double);
482 482
483 bool preview_modifiable = false; 483 bool preview_modifiable = false;
484 success = args->GetBoolean(2, &preview_modifiable); 484 success = args->GetBoolean(2, &preview_modifiable);
485 DCHECK(success); 485 DCHECK(success);
486 486
487 if (draft_page_count != -1 && preview_modifiable && 487 if (draft_page_count != -1 && preview_modifiable &&
488 print_preview_ui->GetAvailableDraftPageCount() != draft_page_count) { 488 print_preview_ui->GetAvailableDraftPageCount() != draft_page_count) {
489 settings->SetBoolean(printing::kSettingGenerateDraftData, true); 489 settings->SetBoolean(printing::kSettingGenerateDraftData, true);
490 } 490 }
491 } 491 }
492 492
493 VLOG(1) << "Print preview request start"; 493 VLOG(1) << "Print preview request start";
494 RenderViewHost* rvh = initiator_tab->GetRenderViewHost(); 494 RenderViewHost* rvh = initiator->GetRenderViewHost();
495 rvh->Send(new PrintMsg_PrintPreview(rvh->GetRoutingID(), *settings)); 495 rvh->Send(new PrintMsg_PrintPreview(rvh->GetRoutingID(), *settings));
496 } 496 }
497 497
498 void PrintPreviewHandler::HandlePrint(const ListValue* args) { 498 void PrintPreviewHandler::HandlePrint(const ListValue* args) {
499 ReportStats(); 499 ReportStats();
500 500
501 // Record the number of times the user requests to regenerate preview data 501 // Record the number of times the user requests to regenerate preview data
502 // before printing. 502 // before printing.
503 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint", 503 UMA_HISTOGRAM_COUNTS("PrintPreview.RegeneratePreviewRequest.BeforePrint",
504 regenerate_preview_request_count_); 504 regenerate_preview_request_count_);
505 505
506 WebContents* initiator_tab = GetInitiatorTab(); 506 WebContents* initiator = GetInitiator();
507 if (initiator_tab) { 507 if (initiator) {
508 RenderViewHost* rvh = initiator_tab->GetRenderViewHost(); 508 RenderViewHost* rvh = initiator->GetRenderViewHost();
509 rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->GetRoutingID())); 509 rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->GetRoutingID()));
510 } 510 }
511 511
512 scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args)); 512 scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args));
513 if (!settings.get()) 513 if (!settings.get())
514 return; 514 return;
515 515
516 // Never try to add headers/footers here. It's already in the generated PDF. 516 // Never try to add headers/footers here. It's already in the generated PDF.
517 settings->SetBoolean(printing::kSettingHeaderFooterEnabled, false); 517 settings->SetBoolean(printing::kSettingHeaderFooterEnabled, false);
518 518
(...skipping 30 matching lines...) Expand all
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.get()); 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 as well, so do not clear the
560 // association with the initiator tab yet. 560 // association with the initiator 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();
564 564
565 // Do this so the initiator tab can open a new print preview dialog, while 565 // Do this so the initiator can open a new print preview dialog, while the
566 // the current print preview dialog is still handling its print job. 566 // current print preview dialog is still handling its print job.
567 ClearInitiatorTabDetails(); 567 ClearInitiatorDetails();
568 568
569 // The PDF being printed contains only the pages that the user selected, 569 // The PDF being printed contains only the pages that the user selected,
570 // so ignore the page range and print all pages. 570 // so ignore the page range and print all pages.
571 settings->Remove(printing::kSettingPageRange, NULL); 571 settings->Remove(printing::kSettingPageRange, NULL);
572 // Remove selection only flag for the same reason. 572 // Remove selection only flag for the same reason.
573 settings->Remove(printing::kSettingShouldPrintSelectionOnly, NULL); 573 settings->Remove(printing::kSettingShouldPrintSelectionOnly, NULL);
574 574
575 // Set ID to know whether printing is for preview. 575 // Set ID to know whether printing is for preview.
576 settings->SetInteger(printing::kPreviewUIID, 576 settings->SetInteger(printing::kPreviewUIID,
577 print_preview_ui->GetIDForPrintPreviewUI()); 577 print_preview_ui->GetIDForPrintPreviewUI());
578 RenderViewHost* rvh = preview_web_contents()->GetRenderViewHost(); 578 RenderViewHost* rvh = preview_web_contents()->GetRenderViewHost();
579 rvh->Send(new PrintMsg_PrintForPrintPreview(rvh->GetRoutingID(), 579 rvh->Send(new PrintMsg_PrintForPrintPreview(rvh->GetRoutingID(),
580 *settings)); 580 *settings));
581 581
582 // For all other cases above, the preview dialog will stay open until the 582 // For all other cases above, the preview dialog will stay open until the
583 // printing has finished. Then the dialog closes and PrintPreviewDone() gets 583 // printing has finished. Then the dialog closes and PrintPreviewDone() gets
584 // called. In the case below, since the preview dialog will be hidden and 584 // called. In the case below, since the preview dialog will be hidden and
585 // not closed, we need to make this call. 585 // not closed, we need to make this call.
586 if (initiator_tab) { 586 if (initiator) {
587 printing::PrintViewManager* print_view_manager = 587 printing::PrintViewManager* print_view_manager =
588 printing::PrintViewManager::FromWebContents(initiator_tab); 588 printing::PrintViewManager::FromWebContents(initiator);
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_.get() || 598 } else if (!select_file_dialog_.get() ||
599 !select_file_dialog_->IsRunning(platform_util::GetTopLevel( 599 !select_file_dialog_->IsRunning(platform_util::GetTopLevel(
600 preview_web_contents()->GetView()->GetNativeView()))) { 600 preview_web_contents()->GetView()->GetNativeView()))) {
601 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( 601 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
602 web_ui()->GetController()); 602 web_ui()->GetController());
603 // Pre-populating select file dialog with print job title. 603 // Pre-populating select file dialog with print job title.
604 string16 print_job_title_utf16 = print_preview_ui->initiator_tab_title(); 604 string16 print_job_title_utf16 = print_preview_ui->initiator_title();
605 605
606 #if defined(OS_WIN) 606 #if defined(OS_WIN)
607 base::FilePath::StringType print_job_title(print_job_title_utf16); 607 base::FilePath::StringType print_job_title(print_job_title_utf16);
608 #elif defined(OS_POSIX) 608 #elif defined(OS_POSIX)
609 base::FilePath::StringType print_job_title = 609 base::FilePath::StringType print_job_title =
610 UTF16ToUTF8(print_job_title_utf16); 610 UTF16ToUTF8(print_job_title_utf16);
611 #endif 611 #endif
612 612
613 file_util::ReplaceIllegalCharactersInPath(&print_job_title, '_'); 613 file_util::ReplaceIllegalCharactersInPath(&print_job_title, '_');
614 base::FilePath default_filename(print_job_title); 614 base::FilePath default_filename(print_job_title);
615 default_filename = 615 default_filename =
616 default_filename.ReplaceExtension(FILE_PATH_LITERAL("pdf")); 616 default_filename.ReplaceExtension(FILE_PATH_LITERAL("pdf"));
617 617
618 SelectFile(default_filename); 618 SelectFile(default_filename);
619 } 619 }
620 } 620 }
621 621
622 void PrintPreviewHandler::HandleHidePreview(const ListValue* /*args*/) { 622 void PrintPreviewHandler::HandleHidePreview(const ListValue* /*args*/) {
623 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( 623 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
624 web_ui()->GetController()); 624 web_ui()->GetController());
625 print_preview_ui->OnHidePreviewDialog(); 625 print_preview_ui->OnHidePreviewDialog();
626 } 626 }
627 627
628 void PrintPreviewHandler::HandleCancelPendingPrintRequest( 628 void PrintPreviewHandler::HandleCancelPendingPrintRequest(
629 const ListValue* /*args*/) { 629 const ListValue* /*args*/) {
630 WebContents* initiator_tab = GetInitiatorTab(); 630 WebContents* initiator = GetInitiator();
631 if (initiator_tab) 631 if (initiator)
632 ClearInitiatorTabDetails(); 632 ClearInitiatorDetails();
633 gfx::NativeWindow parent = initiator_tab ? 633 gfx::NativeWindow parent = initiator ?
634 initiator_tab->GetView()->GetTopLevelNativeWindow() : 634 initiator->GetView()->GetTopLevelNativeWindow() :
635 NULL; 635 NULL;
636 chrome::ShowPrintErrorDialog(parent); 636 chrome::ShowPrintErrorDialog(parent);
637 } 637 }
638 638
639 void PrintPreviewHandler::HandleSaveAppState(const ListValue* args) { 639 void PrintPreviewHandler::HandleSaveAppState(const ListValue* args) {
640 std::string data_to_save; 640 std::string data_to_save;
641 printing::StickySettings* sticky_settings = GetStickySettings(); 641 printing::StickySettings* sticky_settings = GetStickySettings();
642 if (args->GetString(0, &data_to_save) && !data_to_save.empty()) 642 if (args->GetString(0, &data_to_save) && !data_to_save.empty())
643 sticky_settings->StoreAppState(data_to_save); 643 sticky_settings->StoreAppState(data_to_save);
644 sticky_settings->SaveInPrefs(Profile::FromBrowserContext( 644 sticky_settings->SaveInPrefs(Profile::FromBrowserContext(
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 Referrer(), 730 Referrer(),
731 NEW_FOREGROUND_TAB, 731 NEW_FOREGROUND_TAB,
732 content::PAGE_TRANSITION_LINK, 732 content::PAGE_TRANSITION_LINK,
733 false)); 733 false));
734 } 734 }
735 735
736 void PrintPreviewHandler::HandleShowSystemDialog(const ListValue* /*args*/) { 736 void PrintPreviewHandler::HandleShowSystemDialog(const ListValue* /*args*/) {
737 ReportStats(); 737 ReportStats();
738 ReportUserActionHistogram(FALLBACK_TO_ADVANCED_SETTINGS_DIALOG); 738 ReportUserActionHistogram(FALLBACK_TO_ADVANCED_SETTINGS_DIALOG);
739 739
740 WebContents* initiator_tab = GetInitiatorTab(); 740 WebContents* initiator = GetInitiator();
741 if (!initiator_tab) 741 if (!initiator)
742 return; 742 return;
743 743
744 printing::PrintViewManager* print_view_manager = 744 printing::PrintViewManager* print_view_manager =
745 printing::PrintViewManager::FromWebContents(initiator_tab); 745 printing::PrintViewManager::FromWebContents(initiator);
746 print_view_manager->set_observer(this); 746 print_view_manager->set_observer(this);
747 print_view_manager->PrintForSystemDialogNow(); 747 print_view_manager->PrintForSystemDialogNow();
748 748
749 // Cancel the pending preview request if exists. 749 // Cancel the pending preview request if exists.
750 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( 750 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
751 web_ui()->GetController()); 751 web_ui()->GetController());
752 print_preview_ui->OnCancelPendingPreviewRequest(); 752 print_preview_ui->OnCancelPendingPreviewRequest();
753 } 753 }
754 754
755 void PrintPreviewHandler::HandleManagePrinters(const ListValue* /*args*/) { 755 void PrintPreviewHandler::HandleManagePrinters(const ListValue* /*args*/) {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 } 841 }
842 default: 842 default:
843 break; 843 break;
844 } 844 }
845 } 845 }
846 846
847 void PrintPreviewHandler::HandleForceOpenNewTab(const ListValue* args) { 847 void PrintPreviewHandler::HandleForceOpenNewTab(const ListValue* args) {
848 std::string url; 848 std::string url;
849 if (!args->GetString(0, &url)) 849 if (!args->GetString(0, &url))
850 return; 850 return;
851 Browser* browser = chrome::FindBrowserWithWebContents(GetInitiatorTab()); 851 Browser* browser = chrome::FindBrowserWithWebContents(GetInitiator());
852 if (!browser) 852 if (!browser)
853 return; 853 return;
854 chrome::AddSelectedTabWithURL(browser, 854 chrome::AddSelectedTabWithURL(browser,
855 GURL(url), 855 GURL(url),
856 content::PAGE_TRANSITION_LINK); 856 content::PAGE_TRANSITION_LINK);
857 } 857 }
858 858
859 void PrintPreviewHandler::SendInitialSettings( 859 void PrintPreviewHandler::SendInitialSettings(
860 const std::string& default_printer, 860 const std::string& default_printer,
861 const std::string& cloud_print_data) { 861 const std::string& cloud_print_data) {
862 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( 862 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
863 web_ui()->GetController()); 863 web_ui()->GetController());
864 864
865 base::DictionaryValue initial_settings; 865 base::DictionaryValue initial_settings;
866 initial_settings.SetString(kInitiatorTabTitle, 866 initial_settings.SetString(kInitiatorTitle,
867 print_preview_ui->initiator_tab_title()); 867 print_preview_ui->initiator_title());
868 initial_settings.SetBoolean(printing::kSettingPreviewModifiable, 868 initial_settings.SetBoolean(printing::kSettingPreviewModifiable,
869 print_preview_ui->source_is_modifiable()); 869 print_preview_ui->source_is_modifiable());
870 initial_settings.SetString(printing::kSettingPrinterName, default_printer); 870 initial_settings.SetString(printing::kSettingPrinterName, default_printer);
871 initial_settings.SetBoolean(kDocumentHasSelection, 871 initial_settings.SetBoolean(kDocumentHasSelection,
872 print_preview_ui->source_has_selection()); 872 print_preview_ui->source_has_selection());
873 initial_settings.SetBoolean(printing::kSettingShouldPrintSelectionOnly, 873 initial_settings.SetBoolean(printing::kSettingShouldPrintSelectionOnly,
874 print_preview_ui->print_selection_only()); 874 print_preview_ui->print_selection_only());
875 printing::StickySettings* sticky_settings = GetStickySettings(); 875 printing::StickySettings* sticky_settings = GetStickySettings();
876 sticky_settings->RestoreFromPrefs(Profile::FromBrowserContext( 876 sticky_settings->RestoreFromPrefs(Profile::FromBrowserContext(
877 preview_web_contents()->GetBrowserContext())->GetPrefs()); 877 preview_web_contents()->GetBrowserContext())->GetPrefs());
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 data->size()); 937 data->size());
938 std::string base64_data; 938 std::string base64_data;
939 if (!base::Base64Encode(raw_data, &base64_data)) { 939 if (!base::Base64Encode(raw_data, &base64_data)) {
940 NOTREACHED() << "Base64 encoding PDF data."; 940 NOTREACHED() << "Base64 encoding PDF data.";
941 } 941 }
942 StringValue data_value(base64_data); 942 StringValue data_value(base64_data);
943 943
944 web_ui()->CallJavascriptFunction("printToCloud", data_value); 944 web_ui()->CallJavascriptFunction("printToCloud", data_value);
945 } 945 }
946 946
947 WebContents* PrintPreviewHandler::GetInitiatorTab() const { 947 WebContents* PrintPreviewHandler::GetInitiator() const {
948 printing::PrintPreviewDialogController* dialog_controller = 948 printing::PrintPreviewDialogController* dialog_controller =
949 printing::PrintPreviewDialogController::GetInstance(); 949 printing::PrintPreviewDialogController::GetInstance();
950 if (!dialog_controller) 950 if (!dialog_controller)
951 return NULL; 951 return NULL;
952 return dialog_controller->GetInitiatorTab(preview_web_contents()); 952 return dialog_controller->GetInitiator(preview_web_contents());
953 } 953 }
954 954
955 void PrintPreviewHandler::OnPrintDialogShown() { 955 void PrintPreviewHandler::OnPrintDialogShown() {
956 ClosePreviewDialog(); 956 ClosePreviewDialog();
957 } 957 }
958 958
959 void PrintPreviewHandler::SelectFile(const base::FilePath& default_filename) { 959 void PrintPreviewHandler::SelectFile(const base::FilePath& default_filename) {
960 ui::SelectFileDialog::FileTypeInfo file_type_info; 960 ui::SelectFileDialog::FileTypeInfo file_type_info;
961 file_type_info.extensions.resize(1); 961 file_type_info.extensions.resize(1);
962 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("pdf")); 962 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("pdf"));
(...skipping 21 matching lines...) Expand all
984 sticky_settings->save_path()->Append(default_filename), 984 sticky_settings->save_path()->Append(default_filename),
985 &file_type_info, 985 &file_type_info,
986 0, 986 0,
987 base::FilePath::StringType(), 987 base::FilePath::StringType(),
988 platform_util::GetTopLevel( 988 platform_util::GetTopLevel(
989 preview_web_contents()->GetView()->GetNativeView()), 989 preview_web_contents()->GetView()->GetNativeView()),
990 NULL); 990 NULL);
991 } 991 }
992 992
993 void PrintPreviewHandler::OnPrintPreviewDialogDestroyed() { 993 void PrintPreviewHandler::OnPrintPreviewDialogDestroyed() {
994 WebContents* initiator_tab = GetInitiatorTab(); 994 WebContents* initiator = GetInitiator();
995 if (!initiator_tab) 995 if (!initiator)
996 return; 996 return;
997 997
998 printing::PrintViewManager* print_view_manager = 998 printing::PrintViewManager* print_view_manager =
999 printing::PrintViewManager::FromWebContents(initiator_tab); 999 printing::PrintViewManager::FromWebContents(initiator);
1000 print_view_manager->set_observer(NULL); 1000 print_view_manager->set_observer(NULL);
1001 } 1001 }
1002 1002
1003 void PrintPreviewHandler::OnPrintPreviewFailed() { 1003 void PrintPreviewHandler::OnPrintPreviewFailed() {
1004 if (reported_failed_preview_) 1004 if (reported_failed_preview_)
1005 return; 1005 return;
1006 reported_failed_preview_ = true; 1006 reported_failed_preview_ = true;
1007 ReportUserActionHistogram(PREVIEW_FAILED); 1007 ReportUserActionHistogram(PREVIEW_FAILED);
1008 } 1008 }
1009 1009
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1048 print_to_pdf_path_.reset(); 1048 print_to_pdf_path_.reset();
1049 ClosePreviewDialog(); 1049 ClosePreviewDialog();
1050 } 1050 }
1051 1051
1052 void PrintPreviewHandler::FileSelectionCanceled(void* params) { 1052 void PrintPreviewHandler::FileSelectionCanceled(void* params) {
1053 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( 1053 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
1054 web_ui()->GetController()); 1054 web_ui()->GetController());
1055 print_preview_ui->OnFileSelectionCancelled(); 1055 print_preview_ui->OnFileSelectionCancelled();
1056 } 1056 }
1057 1057
1058 void PrintPreviewHandler::ClearInitiatorTabDetails() { 1058 void PrintPreviewHandler::ClearInitiatorDetails() {
1059 WebContents* initiator_tab = GetInitiatorTab(); 1059 WebContents* initiator = GetInitiator();
1060 if (!initiator_tab) 1060 if (!initiator)
1061 return; 1061 return;
1062 1062
1063 // We no longer require the initiator tab details. Remove those details 1063 // We no longer require the initiator details. Remove those details associated
1064 // associated with the preview dialog to allow the initiator tab to create 1064 // with the preview dialog to allow the initiator to create another preview
1065 // another preview dialog. 1065 // dialog.
1066 printing::PrintPreviewDialogController* dialog_controller = 1066 printing::PrintPreviewDialogController* dialog_controller =
1067 printing::PrintPreviewDialogController::GetInstance(); 1067 printing::PrintPreviewDialogController::GetInstance();
1068 if (dialog_controller) 1068 if (dialog_controller)
1069 dialog_controller->EraseInitiatorTabInfo(preview_web_contents()); 1069 dialog_controller->EraseInitiatorInfo(preview_web_contents());
1070 } 1070 }
1071 1071
1072 bool PrintPreviewHandler::GetPreviewDataAndTitle( 1072 bool PrintPreviewHandler::GetPreviewDataAndTitle(
1073 scoped_refptr<base::RefCountedBytes>* data, 1073 scoped_refptr<base::RefCountedBytes>* data,
1074 string16* title) const { 1074 string16* title) const {
1075 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( 1075 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
1076 web_ui()->GetController()); 1076 web_ui()->GetController());
1077 scoped_refptr<base::RefCountedBytes> tmp_data; 1077 scoped_refptr<base::RefCountedBytes> tmp_data;
1078 print_preview_ui->GetPrintPreviewDataForIndex( 1078 print_preview_ui->GetPrintPreviewDataForIndex(
1079 printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, &tmp_data); 1079 printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, &tmp_data);
1080 1080
1081 if (!tmp_data.get()) { 1081 if (!tmp_data.get()) {
1082 // Nothing to print, no preview available. 1082 // Nothing to print, no preview available.
1083 return false; 1083 return false;
1084 } 1084 }
1085 DCHECK(tmp_data->size() && tmp_data->front()); 1085 DCHECK(tmp_data->size() && tmp_data->front());
1086 1086
1087 *data = tmp_data; 1087 *data = tmp_data;
1088 *title = print_preview_ui->initiator_tab_title(); 1088 *title = print_preview_ui->initiator_title();
1089 return true; 1089 return true;
1090 } 1090 }
1091 1091
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698