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

Side by Side Diff: chrome/renderer/print_web_view_helper_browsertest.cc

Issue 7544018: Print preview page selection should not require a rerendering of draft pages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix style 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/chrome_switches.h" 5 #include "chrome/common/chrome_switches.h"
6 #include "chrome/common/print_messages.h" 6 #include "chrome/common/print_messages.h"
7 #include "chrome/renderer/print_web_view_helper.h" 7 #include "chrome/renderer/print_web_view_helper.h"
8 #include "chrome/test/base/render_view_test.h" 8 #include "chrome/test/base/render_view_test.h"
9 #include "printing/print_job_constants.h" 9 #include "printing/print_job_constants.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 24 matching lines...) Expand all
35 35
36 void CreatePrintSettingsDictionary(DictionaryValue* dict) { 36 void CreatePrintSettingsDictionary(DictionaryValue* dict) {
37 dict->SetBoolean(printing::kSettingLandscape, false); 37 dict->SetBoolean(printing::kSettingLandscape, false);
38 dict->SetBoolean(printing::kSettingCollate, false); 38 dict->SetBoolean(printing::kSettingCollate, false);
39 dict->SetBoolean(printing::kSettingColor, false); 39 dict->SetBoolean(printing::kSettingColor, false);
40 dict->SetBoolean(printing::kSettingPrintToPDF, true); 40 dict->SetBoolean(printing::kSettingPrintToPDF, true);
41 dict->SetInteger(printing::kSettingDuplexMode, printing::SIMPLEX); 41 dict->SetInteger(printing::kSettingDuplexMode, printing::SIMPLEX);
42 dict->SetInteger(printing::kSettingCopies, 1); 42 dict->SetInteger(printing::kSettingCopies, 1);
43 dict->SetString(printing::kSettingDeviceName, "dummy"); 43 dict->SetString(printing::kSettingDeviceName, "dummy");
44 dict->SetInteger(printing::kPreviewRequestID, 12345); 44 dict->SetInteger(printing::kPreviewRequestID, 12345);
45 dict->SetBoolean(printing::kSettingGenerateDraftData, true);
45 } 46 }
46 47
47 } // namespace 48 } // namespace
48 49
49 class PrintWebViewHelperTestBase : public RenderViewTest { 50 class PrintWebViewHelperTestBase : public RenderViewTest {
50 public: 51 public:
51 PrintWebViewHelperTestBase() {} 52 PrintWebViewHelperTestBase() {}
52 ~PrintWebViewHelperTestBase() {} 53 ~PrintWebViewHelperTestBase() {}
53 54
54 protected: 55 protected:
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 protected: 314 protected:
314 void VerifyPrintPreviewFailed(bool did_fail) { 315 void VerifyPrintPreviewFailed(bool did_fail) {
315 bool print_preview_failed = (render_thread_.sink().GetUniqueMessageMatching( 316 bool print_preview_failed = (render_thread_.sink().GetUniqueMessageMatching(
316 PrintHostMsg_PrintPreviewFailed::ID) != NULL); 317 PrintHostMsg_PrintPreviewFailed::ID) != NULL);
317 EXPECT_EQ(did_fail, print_preview_failed); 318 EXPECT_EQ(did_fail, print_preview_failed);
318 } 319 }
319 320
320 void VerifyPrintPreviewGenerated(bool generated_preview) { 321 void VerifyPrintPreviewGenerated(bool generated_preview) {
321 const IPC::Message* preview_msg = 322 const IPC::Message* preview_msg =
322 render_thread_.sink().GetUniqueMessageMatching( 323 render_thread_.sink().GetUniqueMessageMatching(
323 PrintHostMsg_PagesReadyForPreview::ID); 324 PrintHostMsg_MetafileReadyForPrinting::ID);
324 bool did_get_preview_msg = (NULL != preview_msg); 325 bool did_get_preview_msg = (NULL != preview_msg);
325 ASSERT_EQ(generated_preview, did_get_preview_msg); 326 ASSERT_EQ(generated_preview, did_get_preview_msg);
326 if (did_get_preview_msg) { 327 if (did_get_preview_msg) {
327 PrintHostMsg_PagesReadyForPreview::Param preview_param; 328 PrintHostMsg_MetafileReadyForPrinting::Param preview_param;
328 PrintHostMsg_PagesReadyForPreview::Read(preview_msg, &preview_param); 329 PrintHostMsg_MetafileReadyForPrinting::Read(preview_msg, &preview_param);
329 EXPECT_NE(0, preview_param.a.document_cookie); 330 EXPECT_NE(0, preview_param.a.document_cookie);
330 EXPECT_NE(0, preview_param.a.expected_pages_count); 331 EXPECT_NE(0, preview_param.a.expected_pages_count);
331 EXPECT_NE(0U, preview_param.a.data_size); 332 EXPECT_NE(0U, preview_param.a.data_size);
332 } 333 }
333 } 334 }
334 335
335 void VerifyPrintFailed(bool did_fail) { 336 void VerifyPrintFailed(bool did_fail) {
336 bool print_failed = (render_thread_.sink().GetUniqueMessageMatching( 337 bool print_failed = (render_thread_.sink().GetUniqueMessageMatching(
337 PrintHostMsg_PrintingFailed::ID) != NULL); 338 PrintHostMsg_PrintingFailed::ID) != NULL);
338 EXPECT_EQ(did_fail, print_failed); 339 EXPECT_EQ(did_fail, print_failed);
339 } 340 }
340 341
342 // |page_number| is 0-based.
343 void VerifyDidPreviewPage(bool generate_draft_pages, int page_number) {
344 bool msg_found = false;
345 size_t msg_count = render_thread_.sink().message_count();
346 for (size_t i = 0; i < msg_count; ++i) {
347 const IPC::Message* msg = render_thread_.sink().GetMessageAt(i);
348 if (msg->type() == PrintHostMsg_DidPreviewPage::ID) {
349 PrintHostMsg_DidPreviewPage::Param page_param;
350 PrintHostMsg_DidPreviewPage::Read(msg, &page_param);
351 if (page_param.a.page_number == page_number) {
352 msg_found = true;
353 if (generate_draft_pages)
354 EXPECT_NE(0U, page_param.a.data_size);
355 else
356 EXPECT_EQ(0U, page_param.a.data_size);
357 break;
358 }
359 }
360 }
361 ASSERT_EQ(true, msg_found);
362 }
363
341 DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelperPreviewTest); 364 DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelperPreviewTest);
342 }; 365 };
343 366
344 // Tests that print preview work and sending and receiving messages through 367 // Tests that print preview work and sending and receiving messages through
345 // that channel all works. 368 // that channel all works.
346 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreview) { 369 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreview) {
347 LoadHTML(kHelloWorldHTML); 370 LoadHTML(kHelloWorldHTML);
348 371
349 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview(); 372 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview();
350 // Fill in some dummy values. 373 // Fill in some dummy values.
351 DictionaryValue dict; 374 DictionaryValue dict;
352 CreatePrintSettingsDictionary(&dict); 375 CreatePrintSettingsDictionary(&dict);
353 PrintWebViewHelper::Get(view_)->OnPrintPreview(dict); 376 PrintWebViewHelper::Get(view_)->OnPrintPreview(dict);
354 377
355 // Need to finish simulating print preview. 378 // Need to finish simulating print preview.
356 // Generate the page and finalize it. 379 // Generate the page and finalize it.
357 PrintWebViewHelper::Get(view_)->OnContinuePreview( 380 PrintWebViewHelper::Get(view_)->OnContinuePreview();
358 printing::INVALID_PAGE_INDEX); 381
359 PrintWebViewHelper::Get(view_)->OnContinuePreview( 382 // Verify that we did create the draft metafile for the first page.
360 printing::INVALID_PAGE_INDEX); 383 VerifyDidPreviewPage(true, 0);
384 PrintWebViewHelper::Get(view_)->OnContinuePreview();
361 385
362 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining()); 386 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining());
363 VerifyPrintPreviewFailed(false); 387 VerifyPrintPreviewFailed(false);
388 VerifyPrintPreviewGenerated(true);
389 VerifyPagesPrinted(false);
390 }
391
392 // Test to verify that complete metafile is generated for a subset of pages
393 // without creating draft pages.
394 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewForSelectedPages) {
395 LoadHTML(kHelloWorldHTML);
396
397 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview();
398 // Fill in some dummy values.
399 DictionaryValue dict;
400 CreatePrintSettingsDictionary(&dict);
401
402 // Set a page range and update the dictionary to generate only the complete
403 // metafile with the selected pages. Page numbers used in the dictionary
404 // are 1-based.
405 DictionaryValue* page_range = new DictionaryValue();
406 page_range->SetInteger(printing::kSettingPageRangeFrom, 1);
407 page_range->SetInteger(printing::kSettingPageRangeTo, 1);
408
409 ListValue* page_range_array = new ListValue();
410 page_range_array->Append(page_range);
411
412 dict.Set(printing::kSettingPageRange, page_range_array);
413 dict.SetBoolean(printing::kSettingGenerateDraftData, false);
414
415 PrintWebViewHelper::Get(view_)->OnPrintPreview(dict);
416
417 // Need to finish simulating print preview.
418 // Generate the page and finalize it.
419 PrintWebViewHelper::Get(view_)->OnContinuePreview();
420
421 // Verify that we did not create the draft metafile for the first page.
422 VerifyDidPreviewPage(false, 0);
423 PrintWebViewHelper::Get(view_)->OnContinuePreview();
424
425 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining());
426 VerifyPrintPreviewFailed(false);
364 VerifyPrintPreviewGenerated(true); 427 VerifyPrintPreviewGenerated(true);
365 VerifyPagesPrinted(false); 428 VerifyPagesPrinted(false);
366 } 429 }
367 430
368 // Tests that print preview fails and receiving error messages through 431 // Tests that print preview fails and receiving error messages through
369 // that channel all works. 432 // that channel all works.
370 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewFail) { 433 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewFail) {
371 LoadHTML(kHelloWorldHTML); 434 LoadHTML(kHelloWorldHTML);
372 435
373 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview(); 436 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview();
(...skipping 27 matching lines...) Expand all
401 LoadHTML(kPrintPreviewHTML); 464 LoadHTML(kPrintPreviewHTML);
402 465
403 // An empty dictionary should fail. 466 // An empty dictionary should fail.
404 DictionaryValue empty_dict; 467 DictionaryValue empty_dict;
405 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(empty_dict); 468 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(empty_dict);
406 469
407 VerifyPrintFailed(true); 470 VerifyPrintFailed(true);
408 VerifyPagesPrinted(false); 471 VerifyPagesPrinted(false);
409 } 472 }
410 #endif // !defined(OS_CHROMEOS) 473 #endif // !defined(OS_CHROMEOS)
OLDNEW
« no previous file with comments | « chrome/renderer/print_web_view_helper.cc ('k') | chrome/renderer/print_web_view_helper_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698