| OLD | NEW |
| 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/render_view_test.h" | 8 #include "chrome/test/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 Loading... |
| 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 } | 51 } |
| 47 | 52 |
| 48 } // namespace | 53 } // namespace |
| 49 | 54 |
| 50 class PrintWebViewHelperTestBase : public RenderViewTest { | 55 class PrintWebViewHelperTestBase : public RenderViewTest { |
| 51 public: | 56 public: |
| 52 PrintWebViewHelperTestBase() {} | 57 PrintWebViewHelperTestBase() {} |
| 53 ~PrintWebViewHelperTestBase() {} | 58 ~PrintWebViewHelperTestBase() {} |
| (...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 297 | 302 |
| 298 virtual void SetUp() { | 303 virtual void SetUp() { |
| 299 // Append the print preview switch before creating the PrintWebViewHelper. | 304 // Append the print preview switch before creating the PrintWebViewHelper. |
| 300 CommandLine::ForCurrentProcess()->AppendSwitch( | 305 CommandLine::ForCurrentProcess()->AppendSwitch( |
| 301 switches::kEnablePrintPreview); | 306 switches::kEnablePrintPreview); |
| 302 | 307 |
| 303 RenderViewTest::SetUp(); | 308 RenderViewTest::SetUp(); |
| 304 } | 309 } |
| 305 | 310 |
| 306 protected: | 311 protected: |
| 312 void VerifyPrintPreviewCancelled(bool did_cancel) { |
| 313 bool print_preview_cancelled = |
| 314 (render_thread_.sink().GetUniqueMessageMatching( |
| 315 PrintHostMsg_PrintPreviewCancelled::ID) != NULL); |
| 316 EXPECT_EQ(did_cancel, print_preview_cancelled); |
| 317 } |
| 318 |
| 307 void VerifyPrintPreviewFailed(bool did_fail) { | 319 void VerifyPrintPreviewFailed(bool did_fail) { |
| 308 bool print_preview_failed = (render_thread_.sink().GetUniqueMessageMatching( | 320 bool print_preview_failed = (render_thread_.sink().GetUniqueMessageMatching( |
| 309 PrintHostMsg_PrintPreviewFailed::ID) != NULL); | 321 PrintHostMsg_PrintPreviewFailed::ID) != NULL); |
| 310 EXPECT_EQ(did_fail, print_preview_failed); | 322 EXPECT_EQ(did_fail, print_preview_failed); |
| 311 } | 323 } |
| 312 | 324 |
| 313 void VerifyPrintPreviewGenerated(bool generated_preview) { | 325 void VerifyPrintPreviewGenerated(bool generated_preview) { |
| 314 const IPC::Message* preview_msg = | 326 const IPC::Message* preview_msg = |
| 315 render_thread_.sink().GetUniqueMessageMatching( | 327 render_thread_.sink().GetUniqueMessageMatching( |
| 316 PrintHostMsg_PagesReadyForPreview::ID); | 328 PrintHostMsg_PagesReadyForPreview::ID); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 338 // that channel all works. | 350 // that channel all works. |
| 339 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreview) { | 351 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreview) { |
| 340 LoadHTML(kHelloWorldHTML); | 352 LoadHTML(kHelloWorldHTML); |
| 341 | 353 |
| 342 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview(); | 354 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview(); |
| 343 // Fill in some dummy values. | 355 // Fill in some dummy values. |
| 344 DictionaryValue dict; | 356 DictionaryValue dict; |
| 345 CreatePrintSettingsDictionary(&dict); | 357 CreatePrintSettingsDictionary(&dict); |
| 346 PrintWebViewHelper::Get(view_)->OnPrintPreview(dict); | 358 PrintWebViewHelper::Get(view_)->OnPrintPreview(dict); |
| 347 | 359 |
| 348 // Need to finish simulating print preview. | |
| 349 // Generate the page and finalize it. | |
| 350 PrintWebViewHelper::Get(view_)->OnContinuePreview( | |
| 351 printing::INVALID_PAGE_INDEX); | |
| 352 PrintWebViewHelper::Get(view_)->OnContinuePreview( | |
| 353 printing::INVALID_PAGE_INDEX); | |
| 354 | |
| 355 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining()); | 360 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining()); |
| 361 VerifyPrintPreviewCancelled(false); |
| 356 VerifyPrintPreviewFailed(false); | 362 VerifyPrintPreviewFailed(false); |
| 357 VerifyPrintPreviewGenerated(true); | 363 VerifyPrintPreviewGenerated(true); |
| 358 VerifyPagesPrinted(false); | 364 VerifyPagesPrinted(false); |
| 359 } | 365 } |
| 360 | 366 |
| 361 // Tests that print preview fails and receiving error messages through | 367 // Tests that print preview fails and receiving error messages through |
| 362 // that channel all works. | 368 // that channel all works. |
| 363 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewFail) { | 369 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewFail) { |
| 364 LoadHTML(kHelloWorldHTML); | 370 LoadHTML(kHelloWorldHTML); |
| 365 | 371 |
| 366 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview(); | 372 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview(); |
| 367 // An empty dictionary should fail. | 373 // An empty dictionary should fail. |
| 368 DictionaryValue empty_dict; | 374 DictionaryValue empty_dict; |
| 369 PrintWebViewHelper::Get(view_)->OnPrintPreview(empty_dict); | 375 PrintWebViewHelper::Get(view_)->OnPrintPreview(empty_dict); |
| 370 | 376 |
| 371 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining()); | 377 EXPECT_EQ(0, render_thread_.print_preview_pages_remaining()); |
| 378 VerifyPrintPreviewCancelled(false); |
| 372 VerifyPrintPreviewFailed(true); | 379 VerifyPrintPreviewFailed(true); |
| 373 VerifyPrintPreviewGenerated(false); | 380 VerifyPrintPreviewGenerated(false); |
| 374 VerifyPagesPrinted(false); | 381 VerifyPagesPrinted(false); |
| 375 } | 382 } |
| 376 | 383 |
| 384 // Tests that cancelling print preview works. |
| 385 TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewCancel) { |
| 386 LoadHTML(kLongPageHTML); |
| 387 |
| 388 const int kCancelPage = 3; |
| 389 render_thread_.set_print_preview_cancel_page_number(kCancelPage); |
| 390 PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview(); |
| 391 // Fill in some dummy values. |
| 392 DictionaryValue dict; |
| 393 CreatePrintSettingsDictionary(&dict); |
| 394 PrintWebViewHelper::Get(view_)->OnPrintPreview(dict); |
| 395 |
| 396 EXPECT_EQ(kCancelPage, render_thread_.print_preview_pages_remaining()); |
| 397 VerifyPrintPreviewCancelled(true); |
| 398 VerifyPrintPreviewFailed(false); |
| 399 VerifyPrintPreviewGenerated(false); |
| 400 VerifyPagesPrinted(false); |
| 401 } |
| 402 |
| 377 // Tests that printing from print preview works and sending and receiving | 403 // Tests that printing from print preview works and sending and receiving |
| 378 // messages through that channel all works. | 404 // messages through that channel all works. |
| 379 TEST_F(PrintWebViewHelperPreviewTest, OnPrintForPrintPreview) { | 405 TEST_F(PrintWebViewHelperPreviewTest, OnPrintForPrintPreview) { |
| 380 LoadHTML(kPrintPreviewHTML); | 406 LoadHTML(kPrintPreviewHTML); |
| 381 | 407 |
| 382 // Fill in some dummy values. | 408 // Fill in some dummy values. |
| 383 DictionaryValue dict; | 409 DictionaryValue dict; |
| 384 CreatePrintSettingsDictionary(&dict); | 410 CreatePrintSettingsDictionary(&dict); |
| 385 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(dict); | 411 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(dict); |
| 386 | 412 |
| 387 VerifyPrintFailed(false); | 413 VerifyPrintFailed(false); |
| 388 VerifyPagesPrinted(true); | 414 VerifyPagesPrinted(true); |
| 389 } | 415 } |
| 390 | 416 |
| 391 // Tests that printing from print preview fails and receiving error messages | 417 // Tests that printing from print preview fails and receiving error messages |
| 392 // through that channel all works. | 418 // through that channel all works. |
| 393 TEST_F(PrintWebViewHelperPreviewTest, OnPrintForPrintPreviewFail) { | 419 TEST_F(PrintWebViewHelperPreviewTest, OnPrintForPrintPreviewFail) { |
| 394 LoadHTML(kPrintPreviewHTML); | 420 LoadHTML(kPrintPreviewHTML); |
| 395 | 421 |
| 396 // An empty dictionary should fail. | 422 // An empty dictionary should fail. |
| 397 DictionaryValue empty_dict; | 423 DictionaryValue empty_dict; |
| 398 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(empty_dict); | 424 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(empty_dict); |
| 399 | 425 |
| 400 VerifyPrintFailed(true); | 426 VerifyPrintFailed(true); |
| 401 VerifyPagesPrinted(false); | 427 VerifyPagesPrinted(false); |
| 402 } | 428 } |
| 403 #endif // !defined(OS_CHROMEOS) | 429 #endif // !defined(OS_CHROMEOS) |
| OLD | NEW |