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

Side by Side Diff: android_webview/browser/aw_printing_message_filter.cc

Issue 2508923003: Make printing work better with OOPIF. (try 2) (Closed)
Patch Set: Fix android_webview Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "android_webview/browser/aw_printing_message_filter.h" 5 #include "android_webview/browser/aw_printing_message_filter.h"
6 6
7 #include "android_webview/browser/aw_print_manager.h" 7 #include "android_webview/browser/aw_print_manager.h"
8 #include "base/file_descriptor_posix.h" 8 #include "base/file_descriptor_posix.h"
9 #include "components/printing/common/print_messages.h" 9 #include "components/printing/common/print_messages.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
11 #include "content/public/browser/render_view_host.h" 11 #include "content/public/browser/render_frame_host.h"
12 #include "content/public/browser/web_contents.h" 12 #include "content/public/browser/web_contents.h"
13 13
14 using content::BrowserThread; 14 using content::BrowserThread;
15 using content::WebContents; 15 using content::WebContents;
16 16
17 namespace android_webview { 17 namespace android_webview {
18 18
19 namespace { 19 namespace {
20 20
21 AwPrintManager* GetPrintManager(int render_process_id, int render_view_id) { 21 AwPrintManager* GetPrintManager(int render_process_id, int render_frame_id) {
22 DCHECK_CURRENTLY_ON(BrowserThread::UI); 22 DCHECK_CURRENTLY_ON(BrowserThread::UI);
23 content::RenderViewHost* view = content::RenderViewHost::FromID( 23 content::RenderFrameHost* frame =
24 render_process_id, render_view_id); 24 content::RenderFrameHost::FromID(render_process_id, render_frame_id);
25 if (!view) 25 if (!frame)
26 return nullptr; 26 return nullptr;
27 WebContents* web_contents = WebContents::FromRenderViewHost(view); 27 WebContents* web_contents = WebContents::FromRenderFrameHost(frame);
28 return web_contents ? AwPrintManager::FromWebContents(web_contents) 28 return web_contents ? AwPrintManager::FromWebContents(web_contents) : nullptr;
29 : nullptr;
30 } 29 }
31 30
32 } // namespace 31 } // namespace
33 32
34 AwPrintingMessageFilter::AwPrintingMessageFilter(int render_process_id) 33 AwPrintingMessageFilter::AwPrintingMessageFilter(int render_process_id)
35 : BrowserMessageFilter(PrintMsgStart), 34 : BrowserMessageFilter(PrintMsgStart),
36 render_process_id_(render_process_id) { 35 render_process_id_(render_process_id) {
37 } 36 }
38 37
39 AwPrintingMessageFilter::~AwPrintingMessageFilter() { 38 AwPrintingMessageFilter::~AwPrintingMessageFilter() {
(...skipping 14 matching lines...) Expand all
54 IPC_MESSAGE_HANDLER(PrintHostMsg_AllocateTempFileForPrinting, 53 IPC_MESSAGE_HANDLER(PrintHostMsg_AllocateTempFileForPrinting,
55 OnAllocateTempFileForPrinting) 54 OnAllocateTempFileForPrinting)
56 IPC_MESSAGE_HANDLER(PrintHostMsg_TempFileForPrintingWritten, 55 IPC_MESSAGE_HANDLER(PrintHostMsg_TempFileForPrintingWritten,
57 OnTempFileForPrintingWritten) 56 OnTempFileForPrintingWritten)
58 IPC_MESSAGE_UNHANDLED(handled = false) 57 IPC_MESSAGE_UNHANDLED(handled = false)
59 IPC_END_MESSAGE_MAP() 58 IPC_END_MESSAGE_MAP()
60 return handled; 59 return handled;
61 } 60 }
62 61
63 void AwPrintingMessageFilter::OnAllocateTempFileForPrinting( 62 void AwPrintingMessageFilter::OnAllocateTempFileForPrinting(
64 int render_view_id, 63 int render_frame_id,
65 base::FileDescriptor* temp_file_fd, 64 base::FileDescriptor* temp_file_fd,
66 int* sequence_number) { 65 int* sequence_number) {
67 DCHECK_CURRENTLY_ON(BrowserThread::UI); 66 DCHECK_CURRENTLY_ON(BrowserThread::UI);
68 AwPrintManager* print_manager = 67 AwPrintManager* print_manager =
69 GetPrintManager(render_process_id_, render_view_id); 68 GetPrintManager(render_process_id_, render_frame_id);
70 if (!print_manager) 69 if (!print_manager)
71 return; 70 return;
72 71
73 *sequence_number = 0; // we don't really use the sequence number. 72 *sequence_number = 0; // we don't really use the sequence number.
74 temp_file_fd->fd = print_manager->file_descriptor().fd; 73 temp_file_fd->fd = print_manager->file_descriptor().fd;
75 temp_file_fd->auto_close = false; 74 temp_file_fd->auto_close = false;
76 } 75 }
77 76
78 void AwPrintingMessageFilter::OnTempFileForPrintingWritten( 77 void AwPrintingMessageFilter::OnTempFileForPrintingWritten(
79 int render_view_id, 78 int render_frame_id,
80 int sequence_number) { 79 int sequence_number) {
81 DCHECK_CURRENTLY_ON(BrowserThread::UI); 80 DCHECK_CURRENTLY_ON(BrowserThread::UI);
82 AwPrintManager* print_manager = 81 AwPrintManager* print_manager =
83 GetPrintManager(render_process_id_, render_view_id); 82 GetPrintManager(render_process_id_, render_frame_id);
84 if (print_manager) 83 if (print_manager)
85 print_manager->PdfWritingDone(true); 84 print_manager->PdfWritingDone(true);
86 } 85 }
87 86
88 } // namespace android_webview 87 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/browser/aw_printing_message_filter.h ('k') | android_webview/renderer/aw_content_renderer_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698