summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/mock_render_thread.cc
diff options
context:
space:
mode:
authorkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-11 16:49:38 +0000
committerkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-11 16:49:38 +0000
commit7cf127e24d03711073a98105d9ad9f0329ddb8f4 (patch)
tree8d43f63772dee0cab1e01ff6c87fc524f9cc300b /chrome/renderer/mock_render_thread.cc
parent68ecadd8e4594220f98cdbbbeedcdd5a4211d216 (diff)
downloadchromium_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.cc29
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) {