summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-12 21:59:46 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-12 21:59:46 +0000
commit69401287af172586685346e5dd6b7e22b923f224 (patch)
tree83f06741df13bcaa361c48d1091d39016a9074e1 /chrome/renderer
parent54b0fa8b93d0d5d132502d91cee97f8f5cc74e6a (diff)
downloadchromium_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.cc12
-rw-r--r--chrome/renderer/print_web_view_helper.h4
-rw-r--r--chrome/renderer/print_web_view_helper_linux.cc3
-rw-r--r--chrome/renderer/print_web_view_helper_mac.mm1
-rw-r--r--chrome/renderer/print_web_view_helper_win.cc4
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))) {