Chromium Code Reviews| 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) { |