| OLD | NEW |
| 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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 UMA_HISTOGRAM_ENUMERATION("PrintPreview.PrintSettings", setting, | 121 UMA_HISTOGRAM_ENUMERATION("PrintPreview.PrintSettings", setting, |
| 122 PRINT_SETTINGS_BUCKET_BOUNDARY); | 122 PRINT_SETTINGS_BUCKET_BOUNDARY); |
| 123 } | 123 } |
| 124 | 124 |
| 125 void ReportPrintDestinationHistogram(enum PrintDestinationBuckets event) { | 125 void ReportPrintDestinationHistogram(enum PrintDestinationBuckets event) { |
| 126 UMA_HISTOGRAM_ENUMERATION("PrintPreview.DestinationAction", event, | 126 UMA_HISTOGRAM_ENUMERATION("PrintPreview.DestinationAction", event, |
| 127 PRINT_DESTINATION_BUCKET_BOUNDARY); | 127 PRINT_DESTINATION_BUCKET_BOUNDARY); |
| 128 } | 128 } |
| 129 | 129 |
| 130 // Name of a dictionary field holding cloud print related data; | 130 // Name of a dictionary field holding cloud print related data; |
| 131 const char kCloudPrintData[] = "cloudPrintData"; | 131 const char kAppState[] = "appState"; |
| 132 // Name of a dictionary field holding the initiator tab title. | 132 // Name of a dictionary field holding the initiator tab title. |
| 133 const char kInitiatorTabTitle[] = "initiatorTabTitle"; | 133 const char kInitiatorTabTitle[] = "initiatorTabTitle"; |
| 134 // Name of a dictionary field holding the measurement system according to the | 134 // Name of a dictionary field holding the measurement system according to the |
| 135 // locale. | 135 // locale. |
| 136 const char kMeasurementSystem[] = "measurementSystem"; | 136 const char kMeasurementSystem[] = "measurementSystem"; |
| 137 // Name of a dictionary field holding the number format according to the locale. | 137 // Name of a dictionary field holding the number format according to the locale. |
| 138 const char kNumberFormat[] = "numberFormat"; | 138 const char kNumberFormat[] = "numberFormat"; |
| 139 // Name of a dictionary field specifying whether to print automatically in | 139 // Name of a dictionary field specifying whether to print automatically in |
| 140 // kiosk mode. See http://crbug.com/31395. | 140 // kiosk mode. See http://crbug.com/31395. |
| 141 const char kPrintAutomaticallyInKioskMode[] = "printAutomaticallyInKioskMode"; | 141 const char kPrintAutomaticallyInKioskMode[] = "printAutomaticallyInKioskMode"; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 } | 229 } |
| 230 // |metafile| must be deleted on the UI thread. | 230 // |metafile| must be deleted on the UI thread. |
| 231 BrowserThread::PostTask( | 231 BrowserThread::PostTask( |
| 232 BrowserThread::UI, FROM_HERE, | 232 BrowserThread::UI, FROM_HERE, |
| 233 base::Bind(&base::DeletePointer<Metafile>, metafile)); | 233 base::Bind(&base::DeletePointer<Metafile>, metafile)); |
| 234 } | 234 } |
| 235 #endif | 235 #endif |
| 236 | 236 |
| 237 static base::LazyInstance<printing::StickySettings> sticky_settings = | 237 static base::LazyInstance<printing::StickySettings> sticky_settings = |
| 238 LAZY_INSTANCE_INITIALIZER; | 238 LAZY_INSTANCE_INITIALIZER; |
| 239 | |
| 240 } // namespace | 239 } // namespace |
| 241 | 240 |
| 242 // static | 241 // static |
| 243 printing::StickySettings* PrintPreviewHandler::GetStickySettings() { | 242 printing::StickySettings* PrintPreviewHandler::GetStickySettings() { |
| 244 return sticky_settings.Pointer(); | 243 return sticky_settings.Pointer(); |
| 245 } | 244 } |
| 246 | 245 |
| 247 PrintPreviewHandler::PrintPreviewHandler() | 246 PrintPreviewHandler::PrintPreviewHandler() |
| 248 : print_backend_(printing::PrintBackend::CreateInstance(NULL)), | 247 : print_backend_(printing::PrintBackend::CreateInstance(NULL)), |
| 249 regenerate_preview_request_count_(0), | 248 regenerate_preview_request_count_(0), |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 base::Unretained(this))); | 285 base::Unretained(this))); |
| 287 web_ui()->RegisterMessageCallback("closePrintPreviewTab", | 286 web_ui()->RegisterMessageCallback("closePrintPreviewTab", |
| 288 base::Bind(&PrintPreviewHandler::HandleClosePreviewTab, | 287 base::Bind(&PrintPreviewHandler::HandleClosePreviewTab, |
| 289 base::Unretained(this))); | 288 base::Unretained(this))); |
| 290 web_ui()->RegisterMessageCallback("hidePreview", | 289 web_ui()->RegisterMessageCallback("hidePreview", |
| 291 base::Bind(&PrintPreviewHandler::HandleHidePreview, | 290 base::Bind(&PrintPreviewHandler::HandleHidePreview, |
| 292 base::Unretained(this))); | 291 base::Unretained(this))); |
| 293 web_ui()->RegisterMessageCallback("cancelPendingPrintRequest", | 292 web_ui()->RegisterMessageCallback("cancelPendingPrintRequest", |
| 294 base::Bind(&PrintPreviewHandler::HandleCancelPendingPrintRequest, | 293 base::Bind(&PrintPreviewHandler::HandleCancelPendingPrintRequest, |
| 295 base::Unretained(this))); | 294 base::Unretained(this))); |
| 296 web_ui()->RegisterMessageCallback("saveLastPrinter", | 295 web_ui()->RegisterMessageCallback("saveAppState", |
| 297 base::Bind(&PrintPreviewHandler::HandleSaveLastPrinter, | 296 base::Bind(&PrintPreviewHandler::HandleSaveAppState, |
| 298 base::Unretained(this))); | 297 base::Unretained(this))); |
| 299 web_ui()->RegisterMessageCallback("getInitialSettings", | 298 web_ui()->RegisterMessageCallback("getInitialSettings", |
| 300 base::Bind(&PrintPreviewHandler::HandleGetInitialSettings, | 299 base::Bind(&PrintPreviewHandler::HandleGetInitialSettings, |
| 301 base::Unretained(this))); | 300 base::Unretained(this))); |
| 302 web_ui()->RegisterMessageCallback("reportDestinationEvent", | 301 web_ui()->RegisterMessageCallback("reportDestinationEvent", |
| 303 base::Bind(&PrintPreviewHandler::HandleReportDestinationEvent, | 302 base::Bind(&PrintPreviewHandler::HandleReportDestinationEvent, |
| 304 base::Unretained(this))); | 303 base::Unretained(this))); |
| 305 web_ui()->RegisterMessageCallback("printWithCloudPrint", | 304 web_ui()->RegisterMessageCallback("printWithCloudPrint", |
| 306 base::Bind(&PrintPreviewHandler::HandlePrintWithCloudPrint, | 305 base::Bind(&PrintPreviewHandler::HandlePrintWithCloudPrint, |
| 307 base::Unretained(this))); | 306 base::Unretained(this))); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 TabContents* initiator_tab = GetInitiatorTab(); | 409 TabContents* initiator_tab = GetInitiatorTab(); |
| 411 if (initiator_tab) { | 410 if (initiator_tab) { |
| 412 RenderViewHost* rvh = initiator_tab->web_contents()->GetRenderViewHost(); | 411 RenderViewHost* rvh = initiator_tab->web_contents()->GetRenderViewHost(); |
| 413 rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->GetRoutingID())); | 412 rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->GetRoutingID())); |
| 414 } | 413 } |
| 415 | 414 |
| 416 scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args)); | 415 scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args)); |
| 417 if (!settings.get()) | 416 if (!settings.get()) |
| 418 return; | 417 return; |
| 419 | 418 |
| 420 // Storing last used settings. | |
| 421 printing::StickySettings* sticky_settings = GetStickySettings(); | |
| 422 sticky_settings->Store(*settings); | |
| 423 sticky_settings->SaveInPrefs(Profile::FromBrowserContext( | |
| 424 preview_web_contents()->GetBrowserContext())->GetPrefs()); | |
| 425 // Never try to add headers/footers here. It's already in the generated PDF. | 419 // Never try to add headers/footers here. It's already in the generated PDF. |
| 426 settings->SetBoolean(printing::kSettingHeaderFooterEnabled, false); | 420 settings->SetBoolean(printing::kSettingHeaderFooterEnabled, false); |
| 427 | 421 |
| 428 bool print_to_pdf = false; | 422 bool print_to_pdf = false; |
| 429 bool is_cloud_printer = false; | 423 bool is_cloud_printer = false; |
| 430 bool is_cloud_dialog = false; | 424 bool is_cloud_dialog = false; |
| 431 | 425 |
| 432 bool open_pdf_in_preview = false; | 426 bool open_pdf_in_preview = false; |
| 433 #if defined(OS_MACOSX) | 427 #if defined(OS_MACOSX) |
| 434 open_pdf_in_preview = settings->HasKey(printing::kSettingOpenPDFInPreview); | 428 open_pdf_in_preview = settings->HasKey(printing::kSettingOpenPDFInPreview); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 524 const ListValue* /*args*/) { | 518 const ListValue* /*args*/) { |
| 525 TabContents* initiator_tab = GetInitiatorTab(); | 519 TabContents* initiator_tab = GetInitiatorTab(); |
| 526 if (initiator_tab) | 520 if (initiator_tab) |
| 527 ClearInitiatorTabDetails(); | 521 ClearInitiatorTabDetails(); |
| 528 gfx::NativeWindow parent = initiator_tab ? | 522 gfx::NativeWindow parent = initiator_tab ? |
| 529 initiator_tab->web_contents()->GetView()->GetTopLevelNativeWindow() : | 523 initiator_tab->web_contents()->GetView()->GetTopLevelNativeWindow() : |
| 530 NULL; | 524 NULL; |
| 531 chrome::ShowPrintErrorDialog(parent); | 525 chrome::ShowPrintErrorDialog(parent); |
| 532 } | 526 } |
| 533 | 527 |
| 534 void PrintPreviewHandler::HandleSaveLastPrinter(const ListValue* args) { | 528 void PrintPreviewHandler::HandleSaveAppState(const ListValue* args) { |
| 535 std::string data_to_save; | 529 std::string data_to_save; |
| 530 printing::StickySettings* sticky_settings = GetStickySettings(); |
| 536 if (args->GetString(0, &data_to_save) && !data_to_save.empty()) | 531 if (args->GetString(0, &data_to_save) && !data_to_save.empty()) |
| 537 GetStickySettings()->StorePrinterName(data_to_save); | 532 sticky_settings->StoreAppState(data_to_save); |
| 538 | 533 sticky_settings->SaveInPrefs(Profile::FromBrowserContext( |
| 539 if (args->GetString(1, &data_to_save) && !data_to_save.empty()) | 534 preview_web_contents()->GetBrowserContext())->GetPrefs()); |
| 540 GetStickySettings()->StoreCloudPrintData(data_to_save); | |
| 541 } | 535 } |
| 542 | 536 |
| 543 void PrintPreviewHandler::HandleGetPrinterCapabilities(const ListValue* args) { | 537 void PrintPreviewHandler::HandleGetPrinterCapabilities(const ListValue* args) { |
| 544 std::string printer_name; | 538 std::string printer_name; |
| 545 bool ret = args->GetString(0, &printer_name); | 539 bool ret = args->GetString(0, &printer_name); |
| 546 if (!ret || printer_name.empty()) | 540 if (!ret || printer_name.empty()) |
| 547 return; | 541 return; |
| 548 | 542 |
| 549 scoped_refptr<PrintSystemTaskProxy> task = | 543 scoped_refptr<PrintSystemTaskProxy> task = |
| 550 new PrintSystemTaskProxy(AsWeakPtr(), | 544 new PrintSystemTaskProxy(AsWeakPtr(), |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 if (errorCode > U_ZERO_ERROR || system == UMS_LIMIT) | 667 if (errorCode > U_ZERO_ERROR || system == UMS_LIMIT) |
| 674 system = UMS_SI; | 668 system = UMS_SI; |
| 675 | 669 |
| 676 // Getting the number formatting based on the locale and writing to | 670 // Getting the number formatting based on the locale and writing to |
| 677 // dictionary. | 671 // dictionary. |
| 678 settings->SetString(kNumberFormat, base::FormatDouble(123456.78, 2)); | 672 settings->SetString(kNumberFormat, base::FormatDouble(123456.78, 2)); |
| 679 settings->SetInteger(kMeasurementSystem, system); | 673 settings->SetInteger(kMeasurementSystem, system); |
| 680 } | 674 } |
| 681 | 675 |
| 682 void PrintPreviewHandler::HandleGetInitialSettings(const ListValue* /*args*/) { | 676 void PrintPreviewHandler::HandleGetInitialSettings(const ListValue* /*args*/) { |
| 683 printing::StickySettings* sticky_settings = GetStickySettings(); | 677 scoped_refptr<PrintSystemTaskProxy> task = |
| 684 sticky_settings->RestoreFromPrefs(Profile::FromBrowserContext( | 678 new PrintSystemTaskProxy(AsWeakPtr(), |
| 685 preview_web_contents()->GetBrowserContext())->GetPrefs()); | 679 print_backend_.get(), |
| 686 if (sticky_settings->printer_name()) { | 680 has_logged_printers_count_); |
| 687 std::string cloud_print_data; | 681 BrowserThread::PostTask( |
| 688 if (sticky_settings->printer_cloud_print_data()) | 682 BrowserThread::FILE, FROM_HERE, |
| 689 cloud_print_data = *sticky_settings->printer_cloud_print_data(); | 683 base::Bind(&PrintSystemTaskProxy::GetDefaultPrinter, task.get())); |
| 690 SendInitialSettings(*sticky_settings->printer_name(), cloud_print_data); | |
| 691 } else { | |
| 692 scoped_refptr<PrintSystemTaskProxy> task = | |
| 693 new PrintSystemTaskProxy(AsWeakPtr(), | |
| 694 print_backend_.get(), | |
| 695 has_logged_printers_count_); | |
| 696 BrowserThread::PostTask( | |
| 697 BrowserThread::FILE, FROM_HERE, | |
| 698 base::Bind(&PrintSystemTaskProxy::GetDefaultPrinter, task.get())); | |
| 699 } | |
| 700 SendCloudPrintEnabled(); | 684 SendCloudPrintEnabled(); |
| 701 } | 685 } |
| 702 | 686 |
| 703 void PrintPreviewHandler::HandleReportDestinationEvent(const ListValue* args) { | 687 void PrintPreviewHandler::HandleReportDestinationEvent(const ListValue* args) { |
| 704 int event_number; | 688 int event_number; |
| 705 bool ret = args->GetInteger(0, &event_number); | 689 bool ret = args->GetInteger(0, &event_number); |
| 706 if (!ret) | 690 if (!ret) |
| 707 return; | 691 return; |
| 708 enum PrintDestinationBuckets event = | 692 enum PrintDestinationBuckets event = |
| 709 static_cast<enum PrintDestinationBuckets>(event_number); | 693 static_cast<enum PrintDestinationBuckets>(event_number); |
| 710 if (event >= PRINT_DESTINATION_BUCKET_BOUNDARY) | 694 if (event >= PRINT_DESTINATION_BUCKET_BOUNDARY) |
| 711 return; | 695 return; |
| 712 ReportPrintDestinationHistogram(event); | 696 ReportPrintDestinationHistogram(event); |
| 713 } | 697 } |
| 714 | 698 |
| 715 void PrintPreviewHandler::SendInitialSettings( | 699 void PrintPreviewHandler::SendInitialSettings( |
| 716 const std::string& default_printer, | 700 const std::string& default_printer, |
| 717 const std::string& cloud_print_data) { | 701 const std::string& cloud_print_data) { |
| 718 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( | 702 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( |
| 719 web_ui()->GetController()); | 703 web_ui()->GetController()); |
| 720 | 704 |
| 721 base::DictionaryValue initial_settings; | 705 base::DictionaryValue initial_settings; |
| 722 initial_settings.SetString(kInitiatorTabTitle, | 706 initial_settings.SetString(kInitiatorTabTitle, |
| 723 print_preview_ui->initiator_tab_title()); | 707 print_preview_ui->initiator_tab_title()); |
| 724 initial_settings.SetBoolean(printing::kSettingPreviewModifiable, | 708 initial_settings.SetBoolean(printing::kSettingPreviewModifiable, |
| 725 print_preview_ui->source_is_modifiable()); | 709 print_preview_ui->source_is_modifiable()); |
| 726 initial_settings.SetString(printing::kSettingPrinterName, | 710 initial_settings.SetString(printing::kSettingPrinterName, |
| 727 default_printer); | 711 default_printer); |
| 728 initial_settings.SetString(kCloudPrintData, cloud_print_data); | 712 printing::StickySettings* sticky_settings = GetStickySettings(); |
| 729 initial_settings.SetBoolean(printing::kSettingHeaderFooterEnabled, | 713 sticky_settings->RestoreFromPrefs(Profile::FromBrowserContext( |
| 730 GetStickySettings()->headers_footers()); | 714 preview_web_contents()->GetBrowserContext())->GetPrefs()); |
| 731 initial_settings.SetInteger(printing::kSettingDuplexMode, | 715 if (sticky_settings->printer_app_state()) |
| 732 GetStickySettings()->duplex_mode()); | 716 initial_settings.SetString(kAppState, |
| 733 | 717 *sticky_settings->printer_app_state()); |
| 734 | 718 |
| 735 #if defined(OS_MACOSX) | 719 #if defined(OS_MACOSX) |
| 736 bool kiosk_mode = false; // No kiosk mode on Mac yet. | 720 bool kiosk_mode = false; // No kiosk mode on Mac yet. |
| 737 #else | 721 #else |
| 738 CommandLine* cmdline = CommandLine::ForCurrentProcess(); | 722 CommandLine* cmdline = CommandLine::ForCurrentProcess(); |
| 739 bool kiosk_mode = (cmdline->HasSwitch(switches::kKioskMode) && | 723 bool kiosk_mode = (cmdline->HasSwitch(switches::kKioskMode) && |
| 740 cmdline->HasSwitch(switches::kKioskModePrinting)); | 724 cmdline->HasSwitch(switches::kKioskModePrinting)); |
| 741 #endif | 725 #endif |
| 742 initial_settings.SetBoolean(kPrintAutomaticallyInKioskMode, kiosk_mode); | 726 initial_settings.SetBoolean(kPrintAutomaticallyInKioskMode, kiosk_mode); |
| 743 | 727 |
| 744 if (print_preview_ui->source_is_modifiable()) { | 728 if (print_preview_ui->source_is_modifiable()) { |
| 745 GetStickySettings()->GetLastUsedMarginSettings(&initial_settings); | |
| 746 GetNumberFormatAndMeasurementSystem(&initial_settings); | 729 GetNumberFormatAndMeasurementSystem(&initial_settings); |
| 747 } | 730 } |
| 748 web_ui()->CallJavascriptFunction("setInitialSettings", initial_settings); | 731 web_ui()->CallJavascriptFunction("setInitialSettings", initial_settings); |
| 749 } | 732 } |
| 750 | 733 |
| 751 void PrintPreviewHandler::ActivateInitiatorTabAndClosePreviewTab() { | 734 void PrintPreviewHandler::ActivateInitiatorTabAndClosePreviewTab() { |
| 752 TabContents* initiator_tab = GetInitiatorTab(); | 735 TabContents* initiator_tab = GetInitiatorTab(); |
| 753 if (initiator_tab) { | 736 if (initiator_tab) { |
| 754 WebContents* web_contents = initiator_tab->web_contents(); | 737 WebContents* web_contents = initiator_tab->web_contents(); |
| 755 web_contents->GetDelegate()->ActivateContents(web_contents); | 738 web_contents->GetDelegate()->ActivateContents(web_contents); |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 860 void PrintPreviewHandler::OnPrintDialogShown() { | 843 void PrintPreviewHandler::OnPrintDialogShown() { |
| 861 ActivateInitiatorTabAndClosePreviewTab(); | 844 ActivateInitiatorTabAndClosePreviewTab(); |
| 862 } | 845 } |
| 863 | 846 |
| 864 void PrintPreviewHandler::SelectFile(const FilePath& default_filename) { | 847 void PrintPreviewHandler::SelectFile(const FilePath& default_filename) { |
| 865 ui::SelectFileDialog::FileTypeInfo file_type_info; | 848 ui::SelectFileDialog::FileTypeInfo file_type_info; |
| 866 file_type_info.extensions.resize(1); | 849 file_type_info.extensions.resize(1); |
| 867 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("pdf")); | 850 file_type_info.extensions[0].push_back(FILE_PATH_LITERAL("pdf")); |
| 868 | 851 |
| 869 // Initializing save_path_ if it is not already initialized. | 852 // Initializing save_path_ if it is not already initialized. |
| 870 if (!GetStickySettings()->save_path()) { | 853 printing::StickySettings* sticky_settings = GetStickySettings(); |
| 854 if (!sticky_settings->save_path()) { |
| 871 // Allowing IO operation temporarily. It is ok to do so here because | 855 // Allowing IO operation temporarily. It is ok to do so here because |
| 872 // the select file dialog performs IO anyway in order to display the | 856 // the select file dialog performs IO anyway in order to display the |
| 873 // folders and also it is modal. | 857 // folders and also it is modal. |
| 874 base::ThreadRestrictions::ScopedAllowIO allow_io; | 858 base::ThreadRestrictions::ScopedAllowIO allow_io; |
| 875 FilePath file_path; | 859 FilePath file_path; |
| 876 PathService::Get(chrome::DIR_USER_DOCUMENTS, &file_path); | 860 PathService::Get(chrome::DIR_USER_DOCUMENTS, &file_path); |
| 877 GetStickySettings()->StoreSavePath(file_path); | 861 sticky_settings->StoreSavePath(file_path); |
| 862 sticky_settings->SaveInPrefs(Profile::FromBrowserContext( |
| 863 preview_web_contents()->GetBrowserContext())->GetPrefs()); |
| 878 } | 864 } |
| 879 | 865 |
| 880 select_file_dialog_ = ui::SelectFileDialog::Create( | 866 select_file_dialog_ = ui::SelectFileDialog::Create( |
| 881 this, new ChromeSelectFilePolicy(preview_web_contents())), | 867 this, new ChromeSelectFilePolicy(preview_web_contents())), |
| 882 select_file_dialog_->SelectFile( | 868 select_file_dialog_->SelectFile( |
| 883 ui::SelectFileDialog::SELECT_SAVEAS_FILE, | 869 ui::SelectFileDialog::SELECT_SAVEAS_FILE, |
| 884 string16(), | 870 string16(), |
| 885 GetStickySettings()->save_path()->Append(default_filename), | 871 GetStickySettings()->save_path()->Append(default_filename), |
| 886 &file_type_info, | 872 &file_type_info, |
| 887 0, | 873 0, |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 960 return; | 946 return; |
| 961 | 947 |
| 962 // We no longer require the initiator tab details. Remove those details | 948 // We no longer require the initiator tab details. Remove those details |
| 963 // associated with the preview tab to allow the initiator tab to create | 949 // associated with the preview tab to allow the initiator tab to create |
| 964 // another preview tab. | 950 // another preview tab. |
| 965 printing::PrintPreviewTabController* tab_controller = | 951 printing::PrintPreviewTabController* tab_controller = |
| 966 printing::PrintPreviewTabController::GetInstance(); | 952 printing::PrintPreviewTabController::GetInstance(); |
| 967 if (tab_controller) | 953 if (tab_controller) |
| 968 tab_controller->EraseInitiatorTabInfo(preview_tab_contents()); | 954 tab_controller->EraseInitiatorTabInfo(preview_tab_contents()); |
| 969 } | 955 } |
| OLD | NEW |