diff options
author | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-12 21:59:46 +0000 |
---|---|---|
committer | thestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-12 21:59:46 +0000 |
commit | 69401287af172586685346e5dd6b7e22b923f224 (patch) | |
tree | 83f06741df13bcaa361c48d1091d39016a9074e1 /chrome/renderer | |
parent | 54b0fa8b93d0d5d132502d91cee97f8f5cc74e6a (diff) | |
download | chromium_src-69401287af172586685346e5dd6b7e22b923f224.zip chromium_src-69401287af172586685346e5dd6b7e22b923f224.tar.gz chromium_src-69401287af172586685346e5dd6b7e22b923f224.tar.bz2 |
Print Preview: Disable controls when printing an embedded PDF.
BUG=79524
TEST=Open a page with an embedded PDF, right click and print.
Review URL: http://codereview.chromium.org/6969031
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85199 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/print_web_view_helper.cc | 12 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper.h | 4 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper_linux.cc | 3 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper_mac.mm | 1 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper_win.cc | 4 |
5 files changed, 20 insertions, 4 deletions
diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc index 5602fd0..f07ef87 100644 --- a/chrome/renderer/print_web_view_helper.cc +++ b/chrome/renderer/print_web_view_helper.cc @@ -17,10 +17,12 @@ #include "printing/metafile.h" #include "printing/units.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebConsoleMessage.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebDataSource.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebNode.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebURLResponse.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebSize.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" @@ -497,6 +499,16 @@ void PrintWebViewHelper::GetPageSizeAndMarginsInPoints( ConvertPixelsToPointDouble(margin_left_in_pixels); } +bool PrintWebViewHelper::IsModifiable(WebKit::WebFrame* frame, + WebKit::WebNode* node) { + if (node) + return false; + std::string mime(frame->dataSource()->response().mimeType().utf8()); + if (mime == "application/pdf") + return false; + return true; +} + void PrintWebViewHelper::UpdatePrintableSizeInPrintParameters( WebFrame* frame, WebNode* node, diff --git a/chrome/renderer/print_web_view_helper.h b/chrome/renderer/print_web_view_helper.h index 4b1dd33..2a4f1ff 100644 --- a/chrome/renderer/print_web_view_helper.h +++ b/chrome/renderer/print_web_view_helper.h @@ -211,7 +211,7 @@ class PrintWebViewHelper : public RenderViewObserver , bool CopyMetafileDataToSharedMem(printing::Metafile* metafile, base::SharedMemoryHandle* shared_mem_handle); - static void GetPageSizeAndMarginsInPoints( + void GetPageSizeAndMarginsInPoints( WebKit::WebFrame* frame, int page_index, const PrintMsg_Print_Params& default_params, @@ -222,6 +222,8 @@ class PrintWebViewHelper : public RenderViewObserver , double* margin_bottom_in_points, double* margin_left_in_points); + bool IsModifiable(WebKit::WebFrame* frame, WebKit::WebNode* node); + void UpdatePrintableSizeInPrintParameters(WebKit::WebFrame* frame, WebKit::WebNode* node, PrintMsg_Print_Params* params); diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc index b64f32d..a538b9d 100644 --- a/chrome/renderer/print_web_view_helper_linux.cc +++ b/chrome/renderer/print_web_view_helper_linux.cc @@ -39,9 +39,10 @@ bool PrintWebViewHelper::CreatePreviewDocument( DCHECK_GT(buf_size, 0u); PrintHostMsg_DidPreviewDocument_Params preview_params; + preview_params.data_size = buf_size; preview_params.document_cookie = params.params.document_cookie; preview_params.expected_pages_count = page_count; - preview_params.data_size = buf_size; + preview_params.modifiable = IsModifiable(frame, node); if (!CopyMetafileDataToSharedMem(&metafile, &(preview_params.metafile_data_handle))) { diff --git a/chrome/renderer/print_web_view_helper_mac.mm b/chrome/renderer/print_web_view_helper_mac.mm index af5e839..27e8487 100644 --- a/chrome/renderer/print_web_view_helper_mac.mm +++ b/chrome/renderer/print_web_view_helper_mac.mm @@ -92,6 +92,7 @@ bool PrintWebViewHelper::CreatePreviewDocument( preview_params.data_size = metafile.GetDataSize(); preview_params.document_cookie = params.params.document_cookie; preview_params.expected_pages_count = page_count; + preview_params.modifiable = IsModifiable(frame, node); // Ask the browser to create the shared memory for us. if (!CopyMetafileDataToSharedMem(&metafile, diff --git a/chrome/renderer/print_web_view_helper_win.cc b/chrome/renderer/print_web_view_helper_win.cc index f55f576..82dbdeb 100644 --- a/chrome/renderer/print_web_view_helper_win.cc +++ b/chrome/renderer/print_web_view_helper_win.cc @@ -162,10 +162,10 @@ bool PrintWebViewHelper::CreatePreviewDocument( DCHECK_GT(buf_size, 128u); PrintHostMsg_DidPreviewDocument_Params preview_params; - preview_params.document_cookie = params.params.document_cookie; preview_params.data_size = buf_size; - preview_params.metafile_data_handle = NULL; + preview_params.document_cookie = params.params.document_cookie; preview_params.expected_pages_count = page_count; + preview_params.modifiable = IsModifiable(frame, node); if (!CopyMetafileDataToSharedMem(metafile.get(), &(preview_params.metafile_data_handle))) { |