summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-22 17:03:17 +0000
committerkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-22 17:03:17 +0000
commit3fdc97f78b89d1f8d20b2329a71f93adc9a5e31d (patch)
tree5171a0f00de56d264d072bd753a50304a3f2dbff
parenteae8081acbe5261ab9fecabe975c787c4df8d1bf (diff)
downloadchromium_src-3fdc97f78b89d1f8d20b2329a71f93adc9a5e31d.zip
chromium_src-3fdc97f78b89d1f8d20b2329a71f93adc9a5e31d.tar.gz
chromium_src-3fdc97f78b89d1f8d20b2329a71f93adc9a5e31d.tar.bz2
PrintPreview: Send the expected pages count value to Web UI along with preview data.
To display initial page range text, we need expected pages count value. Therefore, I added a |expected_pages_count| field to ViewHostMsg_DidPreviewDocument_Params structure. BUG=none TEST=Enable print preview on mac. In the preview tab after loading the preview data an initial page range text is displayed. Review URL: http://codereview.chromium.org/6542002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75599 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/dom_ui/print_preview_ui.cc5
-rw-r--r--chrome/browser/dom_ui/print_preview_ui.h3
-rw-r--r--chrome/browser/printing/print_preview_message_handler.cc2
-rw-r--r--chrome/browser/resources/print_preview.js9
-rw-r--r--chrome/common/render_messages_params.cc6
-rw-r--r--chrome/common/render_messages_params.h3
-rw-r--r--chrome/renderer/print_web_view_helper_mac.mm2
-rw-r--r--chrome/renderer/print_web_view_helper_win.cc2
8 files changed, 25 insertions, 7 deletions
diff --git a/chrome/browser/dom_ui/print_preview_ui.cc b/chrome/browser/dom_ui/print_preview_ui.cc
index 688ec81..92fdc41 100644
--- a/chrome/browser/dom_ui/print_preview_ui.cc
+++ b/chrome/browser/dom_ui/print_preview_ui.cc
@@ -29,7 +29,8 @@ PrintPreviewUIHTMLSource* PrintPreviewUI::html_source() {
return html_source_.get();
}
-void PrintPreviewUI::PreviewDataIsAvailable() {
+void PrintPreviewUI::PreviewDataIsAvailable(int expected_pages_count) {
StringValue dummy_url("chrome://print/print.pdf");
- CallJavascriptFunction(L"createPDFPlugin", dummy_url);
+ FundamentalValue pages_count(expected_pages_count);
+ CallJavascriptFunction(L"createPDFPlugin", dummy_url, pages_count);
}
diff --git a/chrome/browser/dom_ui/print_preview_ui.h b/chrome/browser/dom_ui/print_preview_ui.h
index 7900b6e..77d0add 100644
--- a/chrome/browser/dom_ui/print_preview_ui.h
+++ b/chrome/browser/dom_ui/print_preview_ui.h
@@ -19,7 +19,8 @@ class PrintPreviewUI : public WebUI {
PrintPreviewUIHTMLSource* html_source();
// Notify the Web UI renderer that preview data is available.
- void PreviewDataIsAvailable();
+ // |expected_pages_count| specifies the total number of pages.
+ void PreviewDataIsAvailable(int expected_pages_count);
private:
scoped_refptr<PrintPreviewUIHTMLSource> html_source_;
diff --git a/chrome/browser/printing/print_preview_message_handler.cc b/chrome/browser/printing/print_preview_message_handler.cc
index f7f0218..b378b9f 100644
--- a/chrome/browser/printing/print_preview_message_handler.cc
+++ b/chrome/browser/printing/print_preview_message_handler.cc
@@ -58,7 +58,7 @@ void PrintPreviewMessageHandler::OnPagesReadyForPreview(
static_cast<PrintPreviewUI*>(print_preview_tab->web_ui());
print_preview_ui->html_source()->SetPrintPreviewData(
std::make_pair(shared_buf, params.data_size));
- print_preview_ui->PreviewDataIsAvailable();
+ print_preview_ui->PreviewDataIsAvailable(params.expected_pages_count);
#endif
scoped_refptr<printing::PrinterQuery> printer_query;
diff --git a/chrome/browser/resources/print_preview.js b/chrome/browser/resources/print_preview.js
index 6c3aee2..7dfc1ab 100644
--- a/chrome/browser/resources/print_preview.js
+++ b/chrome/browser/resources/print_preview.js
@@ -4,6 +4,7 @@
var localStrings = new LocalStrings();
var hasPDFPlugin = true;
+var expectedPageCount = 0;
/**
* Window onload handler, sets up the page.
@@ -45,10 +46,16 @@ function onPDFLoad() {
/**
* Create the PDF plugin or reload the existing one.
*/
-function createPDFPlugin(url) {
+function createPDFPlugin(url, pagesCount) {
if (!hasPDFPlugin) {
return;
}
+ // Set the expected pages count.
+ if (expectedPageCount != pagesCount) {
+ expectedPageCount = pagesCount;
+ // Set the initial page range text.
+ $('pages').value = '1-' + expectedPageCount;
+ }
if ($('pdf-viewer')) {
$('pdf-viewer').reload();
diff --git a/chrome/common/render_messages_params.cc b/chrome/common/render_messages_params.cc
index a4c3ae6..8e4a17b 100644
--- a/chrome/common/render_messages_params.cc
+++ b/chrome/common/render_messages_params.cc
@@ -123,7 +123,7 @@ ViewMsg_PrintPages_Params::~ViewMsg_PrintPages_Params() {
}
ViewHostMsg_DidPreviewDocument_Params::ViewHostMsg_DidPreviewDocument_Params()
- : data_size(0) {
+ : data_size(0), expected_pages_count(0) {
#if defined(OS_WIN)
// Initialize |metafile_data_handle| only on Windows because it maps
// base::SharedMemoryHandle to HANDLE. We do not need to initialize this
@@ -1071,6 +1071,7 @@ void ParamTraits<ViewHostMsg_DidPreviewDocument_Params>::Write(Message* m,
WriteParam(m, p.metafile_data_handle);
WriteParam(m, p.data_size);
WriteParam(m, p.document_cookie);
+ WriteParam(m, p.expected_pages_count);
}
bool ParamTraits<ViewHostMsg_DidPreviewDocument_Params>::Read(const Message* m,
@@ -1078,7 +1079,8 @@ bool ParamTraits<ViewHostMsg_DidPreviewDocument_Params>::Read(const Message* m,
param_type* p) {
return ReadParam(m, iter, &p->metafile_data_handle) &&
ReadParam(m, iter, &p->data_size) &&
- ReadParam(m, iter, &p->document_cookie);
+ ReadParam(m, iter, &p->document_cookie) &&
+ ReadParam(m, iter, &p->expected_pages_count);
}
void ParamTraits<ViewHostMsg_DidPreviewDocument_Params>::Log(
diff --git a/chrome/common/render_messages_params.h b/chrome/common/render_messages_params.h
index 3f0f78c..d5bd158 100644
--- a/chrome/common/render_messages_params.h
+++ b/chrome/common/render_messages_params.h
@@ -565,6 +565,9 @@ struct ViewHostMsg_DidPreviewDocument_Params {
// Cookie for the document to ensure correctness.
int document_cookie;
+
+ // Store the expected pages count.
+ int expected_pages_count;
};
// Parameters to describe a rendered page.
diff --git a/chrome/renderer/print_web_view_helper_mac.mm b/chrome/renderer/print_web_view_helper_mac.mm
index bdf7f17..4abae95 100644
--- a/chrome/renderer/print_web_view_helper_mac.mm
+++ b/chrome/renderer/print_web_view_helper_mac.mm
@@ -85,11 +85,13 @@ void PrintWebViewHelper::CreatePreviewDocument(
ViewHostMsg_DidPreviewDocument_Params preview_params;
preview_params.data_size = metafile.GetDataSize();
preview_params.document_cookie = params.params.document_cookie;
+ preview_params.expected_pages_count = page_count;
// Ask the browser to create the shared memory for us.
if (!CopyMetafileDataToSharedMem(&metafile,
&(preview_params.metafile_data_handle))) {
preview_params.data_size = 0;
+ preview_params.expected_pages_count = 0;
}
Send(new ViewHostMsg_PagesReadyForPreview(routing_id(), preview_params));
}
diff --git a/chrome/renderer/print_web_view_helper_win.cc b/chrome/renderer/print_web_view_helper_win.cc
index 9521554..ccce2e9 100644
--- a/chrome/renderer/print_web_view_helper_win.cc
+++ b/chrome/renderer/print_web_view_helper_win.cc
@@ -169,10 +169,12 @@ void PrintWebViewHelper::CreatePreviewDocument(
preview_params.document_cookie = params.params.document_cookie;
preview_params.data_size = buf_size;
preview_params.metafile_data_handle = NULL;
+ preview_params.expected_pages_count = page_count;
if (!CopyMetafileDataToSharedMem(metafile.get(),
&(preview_params.metafile_data_handle))) {
preview_params.data_size = 0;
+ preview_params.expected_pages_count = 0;
}
metafile->CloseEmf();
if (!Send(new ViewHostMsg_DuplicateSection(