summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/print_web_view_helper_linux.cc
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-07 01:06:40 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-07 01:06:40 +0000
commit961dc8cd0c5860fe944da2926c1ed1cb69326b66 (patch)
tree603ec58775f9e07a9ee11f69be017cf13e2e584d /chrome/renderer/print_web_view_helper_linux.cc
parent0545daf4b7c757c073f9d07f51544ea80e2ef876 (diff)
downloadchromium_src-961dc8cd0c5860fe944da2926c1ed1cb69326b66.zip
chromium_src-961dc8cd0c5860fe944da2926c1ed1cb69326b66.tar.gz
chromium_src-961dc8cd0c5860fe944da2926c1ed1cb69326b66.tar.bz2
Print Preview: Add the ability to cancel an in-flight print preview.
BUG=85103 TEST=none Review URL: http://codereview.chromium.org/7104127 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91645 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/print_web_view_helper_linux.cc')
-rw-r--r--chrome/renderer/print_web_view_helper_linux.cc40
1 files changed, 21 insertions, 19 deletions
diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc
index ebbea61..9255a00 100644
--- a/chrome/renderer/print_web_view_helper_linux.cc
+++ b/chrome/renderer/print_web_view_helper_linux.cc
@@ -28,15 +28,16 @@ using WebKit::WebNode;
bool PrintWebViewHelper::CreatePreviewDocument(
const PrintMsg_PrintPages_Params& params, WebKit::WebFrame* frame,
WebKit::WebNode* node) {
- preview_page_count_ = 0;
+ if (!PreviewPageRendered(-1))
+ return false;
+
printing::PreviewMetafile metafile;
if (!metafile.Init())
return false;
- if (!RenderPages(params, frame, node, false, &preview_page_count_,
- &metafile, true)) {
+ preview_page_count_ = 0;
+ if (!RenderPages(params, frame, node, &preview_page_count_, &metafile, true))
return false;
- }
// Get the size of the resulting metafile.
uint32 buf_size = metafile.GetDataSize();
@@ -60,22 +61,13 @@ bool PrintWebViewHelper::CreatePreviewDocument(
bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params,
WebFrame* frame,
WebNode* node) {
- int page_count = 0;
- bool send_expected_page_count =
-#if defined(OS_CHROMEOS)
- false;
-#else
- true;
-#endif // defined(OS_CHROMEOS)
-
printing::NativeMetafile metafile;
if (!metafile.Init())
return false;
- if (!RenderPages(params, frame, node, send_expected_page_count, &page_count,
- &metafile, false)) {
+ int page_count = 0;
+ if (!RenderPages(params, frame, node, &page_count, &metafile, false))
return false;
- }
// Get the size of the resulting metafile.
uint32 buf_size = metafile.GetDataSize();
@@ -148,7 +140,6 @@ bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params,
bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params,
WebKit::WebFrame* frame,
WebKit::WebNode* node,
- bool send_expected_page_count,
int* page_count,
printing::Metafile* metafile,
bool is_preview) {
@@ -158,14 +149,21 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params,
PrepareFrameAndViewForPrint prep_frame_view(printParams, frame, node,
frame->view());
+ if (is_preview && !PreviewPageRendered(-1))
+ return false;
+
*page_count = prep_frame_view.GetExpectedPageCount();
- if (send_expected_page_count) {
+ if (!*page_count)
+ return false;
+ if (is_preview) {
+ Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), *page_count));
+ } else {
+#if !defined(OS_CHROMEOS)
Send(new PrintHostMsg_DidGetPrintedPagesCount(routing_id(),
printParams.document_cookie,
*page_count));
+#endif
}
- if (!*page_count)
- return false;
base::TimeTicks begin_time = base::TimeTicks::Now();
base::TimeTicks page_begin_time = begin_time;
@@ -179,6 +177,8 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params,
PrintPageInternal(page_params, canvas_size, frame, metafile);
if (is_preview) {
page_begin_time = ReportPreviewPageRenderTime(page_begin_time);
+ if (!PreviewPageRendered(i))
+ return false;
}
}
} else {
@@ -187,6 +187,8 @@ bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params,
PrintPageInternal(page_params, canvas_size, frame, metafile);
if (is_preview) {
page_begin_time = ReportPreviewPageRenderTime(page_begin_time);
+ if (!PreviewPageRendered(params.pages[i]))
+ return false;
}
}
}