| 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 d8977367c79a1912659041eaca75d8e4f772451a..b50493c9887fbef3319de9afc714ff504667624f 100644
|
| --- a/chrome/renderer/print_web_view_helper_browsertest.cc
|
| +++ b/chrome/renderer/print_web_view_helper_browsertest.cc
|
| @@ -42,6 +42,7 @@ void CreatePrintSettingsDictionary(DictionaryValue* dict) {
|
| dict->SetInteger(printing::kSettingCopies, 1);
|
| dict->SetString(printing::kSettingDeviceName, "dummy");
|
| dict->SetInteger(printing::kPreviewRequestID, 12345);
|
| + dict->SetBoolean(printing::kSettingGenerateDraftData, true);
|
| }
|
|
|
| } // namespace
|
| @@ -320,12 +321,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);
|
| @@ -338,6 +339,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(true, msg_found);
|
| + }
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelperPreviewTest);
|
| };
|
|
|
| @@ -354,10 +377,50 @@ TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreview) {
|
|
|
| // Need to finish simulating print preview.
|
| // Generate the page and finalize it.
|
| - PrintWebViewHelper::Get(view_)->OnContinuePreview(
|
| - printing::INVALID_PAGE_INDEX);
|
| - PrintWebViewHelper::Get(view_)->OnContinuePreview(
|
| - printing::INVALID_PAGE_INDEX);
|
| + PrintWebViewHelper::Get(view_)->OnContinuePreview();
|
| +
|
| + // Verify that we did create the draft metafile for the first page.
|
| + VerifyDidPreviewPage(true, 0);
|
| + PrintWebViewHelper::Get(view_)->OnContinuePreview();
|
| +
|
| + EXPECT_EQ(0, render_thread_.print_preview_pages_remaining());
|
| + VerifyPrintPreviewFailed(false);
|
| + VerifyPrintPreviewGenerated(true);
|
| + VerifyPagesPrinted(false);
|
| +}
|
| +
|
| +// Test to verify that complete metafile is generated for a subset of pages
|
| +// without creating draft pages.
|
| +TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewForSelectedPages) {
|
| + 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);
|
| +
|
| + // Need to finish simulating print preview.
|
| + // Generate the page and finalize it.
|
| + PrintWebViewHelper::Get(view_)->OnContinuePreview();
|
| +
|
| + // Verify that we did not create the draft metafile for the first page.
|
| + VerifyDidPreviewPage(false, 0);
|
| + PrintWebViewHelper::Get(view_)->OnContinuePreview();
|
|
|
| EXPECT_EQ(0, render_thread_.print_preview_pages_remaining());
|
| VerifyPrintPreviewFailed(false);
|
|
|