diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-22 17:03:17 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-22 17:03:17 +0000 |
commit | 3fdc97f78b89d1f8d20b2329a71f93adc9a5e31d (patch) | |
tree | 5171a0f00de56d264d072bd753a50304a3f2dbff | |
parent | eae8081acbe5261ab9fecabe975c787c4df8d1bf (diff) | |
download | chromium_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.cc | 5 | ||||
-rw-r--r-- | chrome/browser/dom_ui/print_preview_ui.h | 3 | ||||
-rw-r--r-- | chrome/browser/printing/print_preview_message_handler.cc | 2 | ||||
-rw-r--r-- | chrome/browser/resources/print_preview.js | 9 | ||||
-rw-r--r-- | chrome/common/render_messages_params.cc | 6 | ||||
-rw-r--r-- | chrome/common/render_messages_params.h | 3 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper_mac.mm | 2 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper_win.cc | 2 |
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( |