| 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 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| (...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 905 ReportUserActionHistogram(FALLBACK_TO_ADVANCED_SETTINGS_DIALOG); | 905 ReportUserActionHistogram(FALLBACK_TO_ADVANCED_SETTINGS_DIALOG); |
| 906 } else { | 906 } else { |
| 907 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter", page_count); | 907 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPrinter", page_count); |
| 908 ReportUserActionHistogram(PRINT_TO_PRINTER); | 908 ReportUserActionHistogram(PRINT_TO_PRINTER); |
| 909 } | 909 } |
| 910 | 910 |
| 911 // This tries to activate the initiator as well, so do not clear the | 911 // This tries to activate the initiator as well, so do not clear the |
| 912 // association with the initiator yet. | 912 // association with the initiator yet. |
| 913 print_preview_ui()->OnHidePreviewDialog(); | 913 print_preview_ui()->OnHidePreviewDialog(); |
| 914 | 914 |
| 915 // Grab the current initiator before calling ClearInitiatorDetails() below. |
| 916 // Otherwise calling GetInitiator() later will return the wrong WebContents. |
| 917 // https://crbug.com/407080 |
| 918 WebContents* initiator = GetInitiator(); |
| 919 if (initiator) { |
| 920 // Save initiator IDs. PrintMsg_PrintForPrintPreview below should cause |
| 921 // the renderer to send PrintHostMsg_UpdatePrintSettings and trigger |
| 922 // PrintingMessageFilter::OnUpdatePrintSettings(), which needs this info. |
| 923 auto* main_render_frame = initiator->GetMainFrame(); |
| 924 settings->SetInteger(printing::kPreviewInitiatorHostId, |
| 925 main_render_frame->GetProcess()->GetID()); |
| 926 settings->SetInteger(printing::kPreviewInitiatorRoutingId, |
| 927 main_render_frame->GetRoutingID()); |
| 928 } |
| 929 |
| 915 // Do this so the initiator can open a new print preview dialog, while the | 930 // Do this so the initiator can open a new print preview dialog, while the |
| 916 // current print preview dialog is still handling its print job. | 931 // current print preview dialog is still handling its print job. |
| 917 WebContents* initiator = GetInitiator(); | |
| 918 if (initiator) { | |
| 919 // Save initiator IDs. |PrintingMessageFilter::OnUpdatePrintSettings| | |
| 920 // would be called when initiator info is cleared. | |
| 921 settings->SetInteger(printing::kPreviewInitiatorHostId, | |
| 922 initiator->GetRenderProcessHost()->GetID()); | |
| 923 settings->SetInteger(printing::kPreviewInitiatorRoutingId, | |
| 924 initiator->GetRoutingID()); | |
| 925 } | |
| 926 | |
| 927 ClearInitiatorDetails(); | 932 ClearInitiatorDetails(); |
| 928 | 933 |
| 929 // The PDF being printed contains only the pages that the user selected, | 934 // The PDF being printed contains only the pages that the user selected, |
| 930 // so ignore the page range and print all pages. | 935 // so ignore the page range and print all pages. |
| 931 settings->Remove(printing::kSettingPageRange, NULL); | 936 settings->Remove(printing::kSettingPageRange, nullptr); |
| 932 // Reset selection only flag for the same reason. | 937 // Reset selection only flag for the same reason. |
| 933 settings->SetBoolean(printing::kSettingShouldPrintSelectionOnly, false); | 938 settings->SetBoolean(printing::kSettingShouldPrintSelectionOnly, false); |
| 934 | 939 |
| 935 // Set ID to know whether printing is for preview. | 940 // Set ID to know whether printing is for preview. |
| 936 settings->SetInteger(printing::kPreviewUIID, | 941 settings->SetInteger(printing::kPreviewUIID, |
| 937 print_preview_ui()->GetIDForPrintPreviewUI()); | 942 print_preview_ui()->GetIDForPrintPreviewUI()); |
| 938 RenderFrameHost* rfh = preview_web_contents()->GetMainFrame(); | 943 RenderFrameHost* rfh = preview_web_contents()->GetMainFrame(); |
| 939 rfh->Send( | 944 rfh->Send( |
| 940 new PrintMsg_PrintForPrintPreview(rfh->GetRoutingID(), *settings)); | 945 new PrintMsg_PrintForPrintPreview(rfh->GetRoutingID(), *settings)); |
| 941 | 946 |
| (...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1697 | 1702 |
| 1698 void PrintPreviewHandler::UnregisterForGaiaCookieChanges() { | 1703 void PrintPreviewHandler::UnregisterForGaiaCookieChanges() { |
| 1699 if (gaia_cookie_manager_service_) | 1704 if (gaia_cookie_manager_service_) |
| 1700 gaia_cookie_manager_service_->RemoveObserver(this); | 1705 gaia_cookie_manager_service_->RemoveObserver(this); |
| 1701 } | 1706 } |
| 1702 | 1707 |
| 1703 void PrintPreviewHandler::SetPdfSavedClosureForTesting( | 1708 void PrintPreviewHandler::SetPdfSavedClosureForTesting( |
| 1704 const base::Closure& closure) { | 1709 const base::Closure& closure) { |
| 1705 pdf_file_saved_closure_ = closure; | 1710 pdf_file_saved_closure_ = closure; |
| 1706 } | 1711 } |
| OLD | NEW |