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

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

Issue 7621087: Print Preview: Go from event driven print preview back to print preview with sync messages. The s... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix missing lock 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 11 matching lines...) Expand all
22 22
23 namespace { 23 namespace {
24 24
25 // A simple web page. 25 // A simple web page.
26 const char kHelloWorldHTML[] = "<body><p>Hello World!</p></body>"; 26 const char kHelloWorldHTML[] = "<body><p>Hello World!</p></body>";
27 27
28 // A simple webpage that prints itself. 28 // A simple webpage that prints itself.
29 const char kPrintWithJSHTML[] = 29 const char kPrintWithJSHTML[] =
30 "<body>Hello<script>window.print()</script>World</body>"; 30 "<body>Hello<script>window.print()</script>World</body>";
31 31
32 // A longer web page.
33 const char kLongPageHTML[] =
34 "<body><img src=\"\" width=10 height=10000 /></body>";
35
32 // A web page to simulate the print preview page. 36 // A web page to simulate the print preview page.
33 const char kPrintPreviewHTML[] = 37 const char kPrintPreviewHTML[] =
34 "<body><p id=\"pdf-viewer\">Hello World!</p></body>"; 38 "<body><p id=\"pdf-viewer\">Hello World!</p></body>";
35 39
36 void CreatePrintSettingsDictionary(DictionaryValue* dict) { 40 void CreatePrintSettingsDictionary(DictionaryValue* dict) {
37 dict->SetBoolean(printing::kSettingLandscape, false); 41 dict->SetBoolean(printing::kSettingLandscape, false);
38 dict->SetBoolean(printing::kSettingCollate, false); 42 dict->SetBoolean(printing::kSettingCollate, false);
39 dict->SetBoolean(printing::kSettingColor, false); 43 dict->SetBoolean(printing::kSettingColor, false);
40 dict->SetBoolean(printing::kSettingPrintToPDF, true); 44 dict->SetBoolean(printing::kSettingPrintToPDF, true);
41 dict->SetInteger(printing::kSettingDuplexMode, printing::SIMPLEX); 45 dict->SetInteger(printing::kSettingDuplexMode, printing::SIMPLEX);
42 dict->SetInteger(printing::kSettingCopies, 1); 46 dict->SetInteger(printing::kSettingCopies, 1);
43 dict->SetString(printing::kSettingDeviceName, "dummy"); 47 dict->SetString(printing::kSettingDeviceName, "dummy");
48 dict->SetString(printing::kPreviewUIAddr, "0xb33fbeef");
44 dict->SetInteger(printing::kPreviewRequestID, 12345); 49 dict->SetInteger(printing::kPreviewRequestID, 12345);
45 dict->SetBoolean(printing::kIsFirstRequest, true); 50 dict->SetBoolean(printing::kIsFirstRequest, true);
46 dict->SetBoolean(printing::kSettingHeaderFooterEnabled, false); 51 dict->SetBoolean(printing::kSettingHeaderFooterEnabled, false);
47 } 52 }
48 53
49 } // namespace 54 } // namespace
50 55
51 class PrintWebViewHelperTestBase : public RenderViewTest { 56 class PrintWebViewHelperTestBase : public RenderViewTest {
52 public: 57 public:
53 PrintWebViewHelperTestBase() {} 58 PrintWebViewHelperTestBase() {}
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 303
299 virtual void SetUp() { 304 virtual void SetUp() {
300 // Append the print preview switch before creating the PrintWebViewHelper. 305 // Append the print preview switch before creating the PrintWebViewHelper.
301 CommandLine::ForCurrentProcess()->AppendSwitch( 306 CommandLine::ForCurrentProcess()->AppendSwitch(
302 switches::kEnablePrintPreview); 307 switches::kEnablePrintPreview);
303 308
304 RenderViewTest::SetUp(); 309 RenderViewTest::SetUp();
305 } 310 }
306 311
307 protected: 312 protected:
313 void VerifyPrintPreviewCancelled(bool did_cancel) {
314 bool print_preview_cancelled =
315 (render_thread_.sink().GetUniqueMessageMatching(
316 PrintHostMsg_PrintPreviewCancelled::ID) != NULL);
317 EXPECT_EQ(did_cancel, print_preview_cancelled);
318 }
319
308 void VerifyPrintPreviewFailed(bool did_fail) { 320 void VerifyPrintPreviewFailed(bool did_fail) {
309 bool print_preview_failed = (render_thread_.sink().GetUniqueMessageMatching( 321 bool print_preview_failed = (render_thread_.sink().GetUniqueMessageMatching(
310 PrintHostMsg_PrintPreviewFailed::ID) != NULL); 322 PrintHostMsg_PrintPreviewFailed::ID) != NULL);
311 EXPECT_EQ(did_fail, print_preview_failed); 323 EXPECT_EQ(did_fail, print_preview_failed);
312 } 324 }
313 325
314 void VerifyPrintPreviewGenerated(bool generated_preview) { 326 void VerifyPrintPreviewGenerated(bool generated_preview) {
315 const IPC::Message* preview_msg = 327 const IPC::Message* preview_msg =
316 render_thread_.sink().GetUniqueMessageMatching( 328 render_thread_.sink().GetUniqueMessageMatching(
317 PrintHostMsg_PagesReadyForPreview::ID); 329 PrintHostMsg_PagesReadyForPreview::ID);
(...skipping 21 matching lines...) Expand all
339 // that channel all works. 351 // that channel all works.
340 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreview) { 352 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreview) {
341 LoadHTML(kHelloWorldHTML); 353 LoadHTML(kHelloWorldHTML);
342 354
343 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview(); 355 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview();
344 // Fill in some dummy values. 356 // Fill in some dummy values.
345 DictionaryValue dict; 357 DictionaryValue dict;
346 CreatePrintSettingsDictionary(&dict); 358 CreatePrintSettingsDictionary(&dict);
347 PrintWebViewHelper::Get(view_)->OnPrintPreview(dict); 359 PrintWebViewHelper::Get(view_)->OnPrintPreview(dict);
348 360
349 // Need to finish simulating print preview.
350 // Generate the page and finalize it.
351 PrintWebViewHelper::Get(view_)->OnContinuePreview(
352 printing::INVALID_PAGE_INDEX);
353 PrintWebViewHelper::Get(view_)->OnContinuePreview(
354 printing::INVALID_PAGE_INDEX);
355
356 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining()); 361 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining());
362 VerifyPrintPreviewCancelled(false);
357 VerifyPrintPreviewFailed(false); 363 VerifyPrintPreviewFailed(false);
358 VerifyPrintPreviewGenerated(true); 364 VerifyPrintPreviewGenerated(true);
359 VerifyPagesPrinted(false); 365 VerifyPagesPrinted(false);
360 } 366 }
361 367
362 // Tests that print preview fails and receiving error messages through 368 // Tests that print preview fails and receiving error messages through
363 // that channel all works. 369 // that channel all works.
364 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewFail) { 370 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewFail) {
365 LoadHTML(kHelloWorldHTML); 371 LoadHTML(kHelloWorldHTML);
366 372
367 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview(); 373 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview();
368 // An empty dictionary should fail. 374 // An empty dictionary should fail.
369 DictionaryValue empty_dict; 375 DictionaryValue empty_dict;
370 PrintWebViewHelper::Get(view_)->OnPrintPreview(empty_dict); 376 PrintWebViewHelper::Get(view_)->OnPrintPreview(empty_dict);
371 377
372 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining()); 378 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining());
379 VerifyPrintPreviewCancelled(false);
373 VerifyPrintPreviewFailed(true); 380 VerifyPrintPreviewFailed(true);
374 VerifyPrintPreviewGenerated(false); 381 VerifyPrintPreviewGenerated(false);
375 VerifyPagesPrinted(false); 382 VerifyPagesPrinted(false);
376 } 383 }
377 384
385 // Tests that cancelling print preview works.
386 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewCancel) {
387 LoadHTML(kLongPageHTML);
388
389 const int kCancelPage = 3;
390 render_thread_.set_print_preview_cancel_page_number(kCancelPage);
391 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview();
392 // Fill in some dummy values.
393 DictionaryValue dict;
394 CreatePrintSettingsDictionary(&dict);
395 PrintWebViewHelper::Get(view_)->OnPrintPreview(dict);
396
397 EXPECT_EQ(kCancelPage, render_thread_.print_preview_pages_remaining());
398 VerifyPrintPreviewCancelled(true);
399 VerifyPrintPreviewFailed(false);
400 VerifyPrintPreviewGenerated(false);
401 VerifyPagesPrinted(false);
402 }
403
378 // Tests that printing from print preview works and sending and receiving 404 // Tests that printing from print preview works and sending and receiving
379 // messages through that channel all works. 405 // messages through that channel all works.
380 TEST_F(PrintWebViewHelperPreviewTest, OnPrintForPrintPreview) { 406 TEST_F(PrintWebViewHelperPreviewTest, OnPrintForPrintPreview) {
381 LoadHTML(kPrintPreviewHTML); 407 LoadHTML(kPrintPreviewHTML);
382 408
383 // Fill in some dummy values. 409 // Fill in some dummy values.
384 DictionaryValue dict; 410 DictionaryValue dict;
385 CreatePrintSettingsDictionary(&dict); 411 CreatePrintSettingsDictionary(&dict);
386 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(dict); 412 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(dict);
387 413
388 VerifyPrintFailed(false); 414 VerifyPrintFailed(false);
389 VerifyPagesPrinted(true); 415 VerifyPagesPrinted(true);
390 } 416 }
391 417
392 // Tests that printing from print preview fails and receiving error messages 418 // Tests that printing from print preview fails and receiving error messages
393 // through that channel all works. 419 // through that channel all works.
394 TEST_F(PrintWebViewHelperPreviewTest, OnPrintForPrintPreviewFail) { 420 TEST_F(PrintWebViewHelperPreviewTest, OnPrintForPrintPreviewFail) {
395 LoadHTML(kPrintPreviewHTML); 421 LoadHTML(kPrintPreviewHTML);
396 422
397 // An empty dictionary should fail. 423 // An empty dictionary should fail.
398 DictionaryValue empty_dict; 424 DictionaryValue empty_dict;
399 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(empty_dict); 425 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(empty_dict);
400 426
401 VerifyPrintFailed(true); 427 VerifyPrintFailed(true);
402 VerifyPagesPrinted(false); 428 VerifyPagesPrinted(false);
403 } 429 }
404 #endif // !defined(OS_CHROMEOS) 430 #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