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) { |