Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(629)

Unified Diff: chrome/renderer/print_web_view_helper_browsertest.cc

Issue 7647010: Print preview page selection should not require a rerendering of draft pages. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Fixed comment Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/print_web_view_helper_browsertest.cc
diff --git a/chrome/renderer/print_web_view_helper_browsertest.cc b/chrome/renderer/print_web_view_helper_browsertest.cc
index 372123ffd5b36f4bea12fc29b914adca634db8a4..abc34d5a5e3305faf55fd3ddcf57ecce8aeda283 100644
--- a/chrome/renderer/print_web_view_helper_browsertest.cc
+++ b/chrome/renderer/print_web_view_helper_browsertest.cc
@@ -50,6 +50,7 @@ void CreatePrintSettingsDictionary(DictionaryValue* dict) {
dict->SetBoolean(printing::kIsFirstRequest, true);
dict->SetBoolean(printing::kSettingDefaultMarginsSelected, true);
dict->SetBoolean(printing::kSettingHeaderFooterEnabled, false);
+ dict->SetBoolean(printing::kSettingGenerateDraftData, true);
}
} // namespace
@@ -327,12 +328,12 @@ class PrintWebViewHelperPreviewTest : public PrintWebViewHelperTestBase {
void VerifyPrintPreviewGenerated(bool generated_preview) {
const IPC::Message* preview_msg =
render_thread_.sink().GetUniqueMessageMatching(
- PrintHostMsg_PagesReadyForPreview::ID);
+ PrintHostMsg_MetafileReadyForPrinting::ID);
bool did_get_preview_msg = (NULL != preview_msg);
ASSERT_EQ(generated_preview, did_get_preview_msg);
if (did_get_preview_msg) {
- PrintHostMsg_PagesReadyForPreview::Param preview_param;
- PrintHostMsg_PagesReadyForPreview::Read(preview_msg, &preview_param);
+ PrintHostMsg_MetafileReadyForPrinting::Param preview_param;
+ PrintHostMsg_MetafileReadyForPrinting::Read(preview_msg, &preview_param);
EXPECT_NE(0, preview_param.a.document_cookie);
EXPECT_NE(0, preview_param.a.expected_pages_count);
EXPECT_NE(0U, preview_param.a.data_size);
@@ -345,6 +346,28 @@ class PrintWebViewHelperPreviewTest : public PrintWebViewHelperTestBase {
EXPECT_EQ(did_fail, print_failed);
}
+ // |page_number| is 0-based.
+ void VerifyDidPreviewPage(bool generate_draft_pages, int page_number) {
+ bool msg_found = false;
+ size_t msg_count = render_thread_.sink().message_count();
+ for (size_t i = 0; i < msg_count; ++i) {
+ const IPC::Message* msg = render_thread_.sink().GetMessageAt(i);
+ if (msg->type() == PrintHostMsg_DidPreviewPage::ID) {
+ PrintHostMsg_DidPreviewPage::Param page_param;
+ PrintHostMsg_DidPreviewPage::Read(msg, &page_param);
+ if (page_param.a.page_number == page_number) {
+ msg_found = true;
+ if (generate_draft_pages)
+ EXPECT_NE(0U, page_param.a.data_size);
+ else
+ EXPECT_EQ(0U, page_param.a.data_size);
+ break;
+ }
+ }
+ }
+ ASSERT_EQ(generate_draft_pages, msg_found);
+ }
+
DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelperPreviewTest);
};
@@ -366,6 +389,40 @@ TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreview) {
VerifyPagesPrinted(false);
}
+// Test to verify that complete metafile is generated for a subset of pages
+// without creating draft pages.
+TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewForSelectedPages) {
Lei Zhang 2011/09/01 05:16:51 You should add a test case using kLongPageHTML. Te
kmadhusu 2011/09/01 20:21:16 This test is to verify that we generate only the c
+ LoadHTML(kHelloWorldHTML);
+
+ PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview();
+ // Fill in some dummy values.
+ DictionaryValue dict;
+ CreatePrintSettingsDictionary(&dict);
+
+ // Set a page range and update the dictionary to generate only the complete
+ // metafile with the selected pages. Page numbers used in the dictionary
+ // are 1-based.
+ DictionaryValue* page_range = new DictionaryValue();
+ page_range->SetInteger(printing::kSettingPageRangeFrom, 1);
+ page_range->SetInteger(printing::kSettingPageRangeTo, 1);
+
+ ListValue* page_range_array = new ListValue();
+ page_range_array->Append(page_range);
+
+ dict.Set(printing::kSettingPageRange, page_range_array);
+ dict.SetBoolean(printing::kSettingGenerateDraftData, false);
+
+ PrintWebViewHelper::Get(view_)->OnPrintPreview(dict);
+
+ // Verify that we did not create the draft metafile for the first page.
+ VerifyDidPreviewPage(false, 0);
+
+ VerifyPrintPreviewCancelled(false);
+ VerifyPrintPreviewFailed(false);
+ VerifyPrintPreviewGenerated(true);
+ VerifyPagesPrinted(false);
+}
+
// Tests that print preview fails and receiving error messages through
// that channel all works.
TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewFail) {

Powered by Google App Engine
This is Rietveld 408576698