diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-11 16:49:38 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-11 16:49:38 +0000 |
commit | 7cf127e24d03711073a98105d9ad9f0329ddb8f4 (patch) | |
tree | 8d43f63772dee0cab1e01ff6c87fc524f9cc300b /chrome/renderer/mock_render_thread.cc | |
parent | 68ecadd8e4594220f98cdbbbeedcdd5a4211d216 (diff) | |
download | chromium_src-7cf127e24d03711073a98105d9ad9f0329ddb8f4.zip chromium_src-7cf127e24d03711073a98105d9ad9f0329ddb8f4.tar.gz chromium_src-7cf127e24d03711073a98105d9ad9f0329ddb8f4.tar.bz2 |
Print preview page selection should not require a rerendering of draft pages.
On page selection, regenerate the complete document with the selection, but preserve the existing draft pages and simply display a subset of them.
1. Added a new param |clear all preview data| to |PrintHostMsg_DidGetPreviewPageCount|.
2. Removed |requested_preview_page_index| from |PrintMsg_ContinuePreview|
BUG=84383
TEST=print preview works after code changes.
Review URL: http://codereview.chromium.org/7544018
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96406 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/mock_render_thread.cc')
-rw-r--r-- | chrome/renderer/mock_render_thread.cc | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/chrome/renderer/mock_render_thread.cc b/chrome/renderer/mock_render_thread.cc index aac7156..1a66d41 100644 --- a/chrome/renderer/mock_render_thread.cc +++ b/chrome/renderer/mock_render_thread.cc @@ -16,6 +16,7 @@ #include "ipc/ipc_message_utils.h" #include "ipc/ipc_sync_message.h" #include "printing/print_job_constants.h" +#include "printing/page_range.h" #include "testing/gtest/include/gtest/gtest.h" MockRenderThread::MockRenderThread() @@ -213,7 +214,8 @@ void MockRenderThread::OnDidPrintPage( void MockRenderThread::OnDidGetPreviewPageCount(int document_cookie, int number_pages, - bool is_modifiable) { + bool is_modifiable, + bool clear_preview_data) { print_preview_pages_remaining_ = number_pages; } @@ -242,8 +244,29 @@ void MockRenderThread::OnUpdatePrintSettings( } // Just return the default settings. - if (printer_.get()) - printer_->UpdateSettings(document_cookie, params); + if (printer_.get()) { + ListValue* page_range_array = new ListValue(); + printing::PageRanges new_ranges; + if (job_settings.GetList(printing::kSettingPageRange, &page_range_array)) { + for (size_t index = 0; index < page_range_array->GetSize(); ++index) { + DictionaryValue* dict; + if (!page_range_array->GetDictionary(index, &dict)) + continue; + printing::PageRange range; + if (!dict->GetInteger(printing::kSettingPageRangeFrom, &range.from) || + !dict->GetInteger(printing::kSettingPageRangeTo, &range.to)) { + continue; + } + // Page numbers are 1-based in the dictionary. + // Page numbers are 0-based for the printing context. + range.from--; + range.to--; + new_ranges.push_back(range); + } + } + std::vector<int> pages(printing::PageRange::GetPages(new_ranges)); + printer_->UpdateSettings(document_cookie, params, pages); + } } void MockRenderThread::set_print_dialog_user_response(bool response) { |