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

Side by Side Diff: chrome/renderer/print_web_view_helper.h

Issue 6142013: Allow printing/saving a plugin through right click menu, even if it's in a fr... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #ifndef CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ 5 #ifndef CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_
6 #define CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ 6 #define CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 23 matching lines...) Expand all
34 struct ViewHostMsg_DidPreviewDocument_Params; 34 struct ViewHostMsg_DidPreviewDocument_Params;
35 35
36 // Class that calls the Begin and End print functions on the frame and changes 36 // Class that calls the Begin and End print functions on the frame and changes
37 // the size of the view temporarily to support full page printing.. 37 // the size of the view temporarily to support full page printing..
38 // Do not serve any events in the time between construction and destruction of 38 // Do not serve any events in the time between construction and destruction of
39 // this class because it will cause flicker. 39 // this class because it will cause flicker.
40 class PrepareFrameAndViewForPrint { 40 class PrepareFrameAndViewForPrint {
41 public: 41 public:
42 PrepareFrameAndViewForPrint(const ViewMsg_Print_Params& print_params, 42 PrepareFrameAndViewForPrint(const ViewMsg_Print_Params& print_params,
43 WebKit::WebFrame* frame, 43 WebKit::WebFrame* frame,
44 WebKit::WebNode* node,
viettrungluu 2011/01/13 01:04:40 Here and elsewhere (where both a frame and node ar
44 WebKit::WebView* web_view); 45 WebKit::WebView* web_view);
45 ~PrepareFrameAndViewForPrint(); 46 ~PrepareFrameAndViewForPrint();
46 47
47 int GetExpectedPageCount() const { 48 int GetExpectedPageCount() const {
48 return expected_pages_count_; 49 return expected_pages_count_;
49 } 50 }
50 51
51 bool ShouldUseBrowserOverlays() const { 52 bool ShouldUseBrowserOverlays() const {
52 return use_browser_overlays_; 53 return use_browser_overlays_;
53 } 54 }
(...skipping 16 matching lines...) Expand all
70 71
71 // PrintWebViewHelper handles most of the printing grunt work for RenderView. 72 // PrintWebViewHelper handles most of the printing grunt work for RenderView.
72 // We plan on making print asynchronous and that will require copying the DOM 73 // We plan on making print asynchronous and that will require copying the DOM
73 // of the document and creating a new WebView with the contents. 74 // of the document and creating a new WebView with the contents.
74 class PrintWebViewHelper : public WebKit::WebViewClient, 75 class PrintWebViewHelper : public WebKit::WebViewClient,
75 public WebKit::WebFrameClient { 76 public WebKit::WebFrameClient {
76 public: 77 public:
77 explicit PrintWebViewHelper(RenderView* render_view); 78 explicit PrintWebViewHelper(RenderView* render_view);
78 virtual ~PrintWebViewHelper(); 79 virtual ~PrintWebViewHelper();
79 80
80 void Print(WebKit::WebFrame* frame, bool script_initiated, bool is_preview); 81 void Print(WebKit::WebFrame* frame,
82 bool script_initiated,
83 bool is_preview);
84
85 void Print(WebKit::WebNode* node,
viettrungluu 2011/01/13 01:04:40 I'm not thrilled by this overload. Can we name the
86 bool script_initiated,
87 bool is_preview);
81 88
82 // Is there a background print in progress? 89 // Is there a background print in progress?
83 bool IsPrinting() { 90 bool IsPrinting() {
84 return print_web_view_ != NULL; 91 return print_web_view_ != NULL;
85 } 92 }
86 93
87 // Notification when printing is done - signal teardown 94 // Notification when printing is done - signal teardown
88 void DidFinishPrinting(bool success); 95 void DidFinishPrinting(bool success);
89 96
90 protected: 97 protected:
91 bool CopyAndPrint(WebKit::WebFrame* web_frame); 98 bool CopyAndPrint(WebKit::WebFrame* web_frame);
92 99
93 // Prints the page listed in |params|. 100 // Prints the page listed in |params|.
94 #if defined(USE_X11) 101 #if defined(USE_X11)
95 void PrintPage(const ViewMsg_PrintPage_Params& params, 102 void PrintPage(const ViewMsg_PrintPage_Params& params,
96 const gfx::Size& canvas_size, 103 const gfx::Size& canvas_size,
97 WebKit::WebFrame* frame, 104 WebKit::WebFrame* frame,
98 printing::NativeMetafile* metafile); 105 printing::NativeMetafile* metafile);
99 #else 106 #else
100 void PrintPage(const ViewMsg_PrintPage_Params& params, 107 void PrintPage(const ViewMsg_PrintPage_Params& params,
101 const gfx::Size& canvas_size, 108 const gfx::Size& canvas_size,
102 WebKit::WebFrame* frame); 109 WebKit::WebFrame* frame);
103 #endif 110 #endif
104 111
105 // Prints all the pages listed in |params|. 112 // Prints all the pages listed in |params|.
106 // It will implicitly revert the document to display CSS media type. 113 // It will implicitly revert the document to display CSS media type.
107 void PrintPages(const ViewMsg_PrintPages_Params& params, 114 void PrintPages(const ViewMsg_PrintPages_Params& params,
108 WebKit::WebFrame* frame); 115 WebKit::WebFrame* frame,
116 WebKit::WebNode* node);
109 117
110 // IPC::Message::Sender 118 // IPC::Message::Sender
111 bool Send(IPC::Message* msg); 119 bool Send(IPC::Message* msg);
112 120
113 int32 routing_id(); 121 int32 routing_id();
114 122
115 // WebKit::WebViewClient override: 123 // WebKit::WebViewClient override:
116 virtual void didStopLoading(); 124 virtual void didStopLoading();
117 125
118 private: 126 private:
119 static void GetPageSizeAndMarginsInPoints( 127 static void GetPageSizeAndMarginsInPoints(
120 WebKit::WebFrame* frame, 128 WebKit::WebFrame* frame,
121 int page_index, 129 int page_index,
122 const ViewMsg_Print_Params& default_params, 130 const ViewMsg_Print_Params& default_params,
123 double* content_width_in_points, 131 double* content_width_in_points,
124 double* content_height_in_points, 132 double* content_height_in_points,
125 double* margin_top_in_points, 133 double* margin_top_in_points,
126 double* margin_right_in_points, 134 double* margin_right_in_points,
127 double* margin_bottom_in_points, 135 double* margin_bottom_in_points,
128 double* margin_left_in_points); 136 double* margin_left_in_points);
129 137
138 void Print(WebKit::WebFrame* frame,
viettrungluu 2011/01/13 01:04:40 Maybe you should name this one differently too, to
139 WebKit::WebNode* node,
140 bool script_initiated,
141 bool is_preview);
142
130 void UpdatePrintableSizeInPrintParameters(WebKit::WebFrame* frame, 143 void UpdatePrintableSizeInPrintParameters(WebKit::WebFrame* frame,
144 WebKit::WebNode* node,
131 ViewMsg_Print_Params* params); 145 ViewMsg_Print_Params* params);
132 146
133 // Initialize print page settings with default settings. 147 // Initialize print page settings with default settings.
134 bool InitPrintSettings(WebKit::WebFrame* frame); 148 bool InitPrintSettings(WebKit::WebFrame* frame,
149 WebKit::WebNode* node);
135 150
136 // Get the default printer settings. 151 // Get the default printer settings.
137 bool GetDefaultPrintSettings(WebKit::WebFrame* frame, 152 bool GetDefaultPrintSettings(WebKit::WebFrame* frame,
153 WebKit::WebNode* node,
138 ViewMsg_Print_Params* params); 154 ViewMsg_Print_Params* params);
139 155
140 // Get final print settings from the user. 156 // Get final print settings from the user.
141 // Return false if the user cancels or on error. 157 // Return false if the user cancels or on error.
142 bool GetPrintSettingsFromUser(WebKit::WebFrame* frame, 158 bool GetPrintSettingsFromUser(WebKit::WebFrame* frame,
143 int expected_pages_count, 159 int expected_pages_count,
144 bool use_browser_overlays); 160 bool use_browser_overlays);
145 161
146 // Render the frame for printing. 162 // Render the frame for printing.
147 void RenderPagesForPrint(WebKit::WebFrame* frame); 163 void RenderPagesForPrint(WebKit::WebFrame* frame,
164 WebKit::WebNode* node);
148 165
149 // Render the frame for preview. 166 // Render the frame for preview.
150 void RenderPagesForPreview(WebKit::WebFrame* frame); 167 void RenderPagesForPreview(WebKit::WebFrame* frame);
151 void CreatePreviewDocument(const ViewMsg_PrintPages_Params& params, 168 void CreatePreviewDocument(const ViewMsg_PrintPages_Params& params,
152 WebKit::WebFrame* frame, 169 WebKit::WebFrame* frame,
153 ViewHostMsg_DidPreviewDocument_Params* print_params); 170 ViewHostMsg_DidPreviewDocument_Params* print_params);
154 #if defined(OS_MACOSX) 171 #if defined(OS_MACOSX)
155 void RenderPage(const gfx::Size& page_size, const gfx::Point& content_origin, 172 void RenderPage(const gfx::Size& page_size, const gfx::Point& content_origin,
156 const float& scale_factor, int page_number, 173 const float& scale_factor, int page_number,
157 WebKit::WebFrame* frame, printing::NativeMetafile* metafile); 174 WebKit::WebFrame* frame, printing::NativeMetafile* metafile);
158 bool CopyMetafileDataToSharedMem(printing::NativeMetafile* metafile, 175 bool CopyMetafileDataToSharedMem(printing::NativeMetafile* metafile,
159 base::SharedMemoryHandle* shared_mem_handle); 176 base::SharedMemoryHandle* shared_mem_handle);
160 #endif 177 #endif
161 178
162 RenderView* render_view_; 179 RenderView* render_view_;
163 WebKit::WebView* print_web_view_; 180 WebKit::WebView* print_web_view_;
164 scoped_ptr<ViewMsg_PrintPages_Params> print_pages_params_; 181 scoped_ptr<ViewMsg_PrintPages_Params> print_pages_params_;
165 base::Time last_cancelled_script_print_; 182 base::Time last_cancelled_script_print_;
166 int user_cancelled_scripted_print_count_; 183 int user_cancelled_scripted_print_count_;
167 bool is_preview_; 184 bool is_preview_;
168 185
169 private: 186 private:
170 DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelper); 187 DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelper);
171 }; 188 };
172 189
173 #endif // CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_ 190 #endif // CHROME_RENDERER_PRINT_WEB_VIEW_HELPER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698