OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "base/file_util.h" | 5 #include "base/file_util.h" |
| 6 #include "base/shared_memory.h" |
6 #include "chrome/common/native_web_keyboard_event.h" | 7 #include "chrome/common/native_web_keyboard_event.h" |
7 #include "chrome/common/render_messages.h" | 8 #include "chrome/common/render_messages.h" |
8 #include "chrome/test/render_view_test.h" | 9 #include "chrome/test/render_view_test.h" |
9 #include "net/base/net_errors.h" | 10 #include "net/base/net_errors.h" |
| 11 #include "printing/image.h" |
| 12 #include "printing/native_metafile.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
11 #include "webkit/api/public/WebURLError.h" | 14 #include "webkit/api/public/WebURLError.h" |
12 | 15 |
13 using WebKit::WebCompositionCommand; | 16 using WebKit::WebCompositionCommand; |
14 using WebKit::WebTextDirection; | 17 using WebKit::WebTextDirection; |
15 using WebKit::WebURLError; | 18 using WebKit::WebURLError; |
16 | 19 |
17 static WebCompositionCommand ToCompositionCommand(int string_type) { | 20 static WebCompositionCommand ToCompositionCommand(int string_type) { |
18 switch (string_type) { | 21 switch (string_type) { |
19 default: | 22 default: |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 ViewHostMsg_DidPrintPage::ID); | 359 ViewHostMsg_DidPrintPage::ID); |
357 EXPECT_TRUE(did_print_msg); | 360 EXPECT_TRUE(did_print_msg); |
358 ViewHostMsg_DidPrintPage::Param post_did_print_page_param; | 361 ViewHostMsg_DidPrintPage::Param post_did_print_page_param; |
359 ViewHostMsg_DidPrintPage::Read(did_print_msg, &post_did_print_page_param); | 362 ViewHostMsg_DidPrintPage::Read(did_print_msg, &post_did_print_page_param); |
360 EXPECT_EQ(0, post_did_print_page_param.a.page_number); | 363 EXPECT_EQ(0, post_did_print_page_param.a.page_number); |
361 #else | 364 #else |
362 NOTIMPLEMENTED(); | 365 NOTIMPLEMENTED(); |
363 #endif | 366 #endif |
364 } | 367 } |
365 | 368 |
| 369 TEST_F(RenderViewTest, PrintWithIframe) { |
| 370 #if defined(OS_WIN) |
| 371 // Document that populates an iframe.. |
| 372 const char html[] = |
| 373 "<html><body>Lorem Ipsum:" |
| 374 "<iframe name=\"sub1\" id=\"sub1\"></iframe><script>" |
| 375 " document.write(frames['sub1'].name);" |
| 376 " frames['sub1'].document.write(" |
| 377 " '<p>Cras tempus ante eu felis semper luctus!</p>');" |
| 378 "</script></body></html>"; |
| 379 |
| 380 LoadHTML(html); |
| 381 |
| 382 // Find the frame and set it as the focused one. This should mean that that |
| 383 // the printout should only contain the contents of that frame. |
| 384 WebFrame* sub1_frame = view_->webview()->GetFrameWithName(L"sub1"); |
| 385 ASSERT_TRUE(sub1_frame); |
| 386 view_->webview()->SetFocusedFrame(sub1_frame); |
| 387 ASSERT_NE(view_->webview()->GetFocusedFrame(), |
| 388 view_->webview()->GetMainFrame()); |
| 389 |
| 390 // Initiate printing. |
| 391 view_->OnPrintPages(); |
| 392 |
| 393 // Verify output through MockPrinter. |
| 394 const MockPrinter* printer(render_thread_.printer()); |
| 395 ASSERT_EQ(1, printer->GetPrintedPages()); |
| 396 const printing::Image& image1(printer->GetPrintedPage(0)->image()); |
| 397 |
| 398 // TODO(sverrir): Figure out a way to improve this test to actually print |
| 399 // only the content of the iframe. Currently image1 will contain the full |
| 400 // page. |
| 401 EXPECT_NE(0, image1.size().width()); |
| 402 EXPECT_NE(0, image1.size().height()); |
| 403 #else |
| 404 NOTIMPLEMENTED(); |
| 405 #endif |
| 406 } |
| 407 |
366 // Tests if we can print a page and verify its results. | 408 // Tests if we can print a page and verify its results. |
367 // This test prints HTML pages into a pseudo printer and check their outputs, | 409 // This test prints HTML pages into a pseudo printer and check their outputs, |
368 // i.e. a simplified version of the PrintingLayoutTextTest UI test. | 410 // i.e. a simplified version of the PrintingLayoutTextTest UI test. |
369 namespace { | 411 namespace { |
370 // Test cases used in this test. | 412 // Test cases used in this test. |
371 const struct { | 413 const struct { |
372 const char* page; | 414 const char* page; |
373 int printed_pages; | 415 int printed_pages; |
374 int width; | 416 int width; |
375 int height; | 417 int height; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 EXPECT_GT(kTestPages[i].height * (100 + kErrorMargin) / 100, height); | 466 EXPECT_GT(kTestPages[i].height * (100 + kErrorMargin) / 100, height); |
425 EXPECT_LT(kTestPages[i].height* (100 - kErrorMargin) / 100, height); | 467 EXPECT_LT(kTestPages[i].height* (100 - kErrorMargin) / 100, height); |
426 | 468 |
427 // Retrieve the checksum of the bitmap data from the pseudo printer and | 469 // Retrieve the checksum of the bitmap data from the pseudo printer and |
428 // compare it with the expected result. | 470 // compare it with the expected result. |
429 std::string bitmap_actual; | 471 std::string bitmap_actual; |
430 EXPECT_TRUE(render_thread_.printer()->GetBitmapChecksum(0, &bitmap_actual)); | 472 EXPECT_TRUE(render_thread_.printer()->GetBitmapChecksum(0, &bitmap_actual)); |
431 if (kTestPages[i].checksum) | 473 if (kTestPages[i].checksum) |
432 EXPECT_EQ(kTestPages[i].checksum, bitmap_actual); | 474 EXPECT_EQ(kTestPages[i].checksum, bitmap_actual); |
433 | 475 |
434 // Retrieve the bitmap data from the pseudo printer. | |
435 // TODO(hbono): implement a function which retrieves an expected result | |
436 // from a file and compares it with this bitmap data. | |
437 const void* bitmap_data; | |
438 size_t bitmap_size; | |
439 EXPECT_TRUE(render_thread_.printer()->GetBitmap(0, &bitmap_data, | |
440 &bitmap_size)); | |
441 | |
442 if (baseline) { | 476 if (baseline) { |
443 // Save the source data and the bitmap data into temporary files to | 477 // Save the source data and the bitmap data into temporary files to |
444 // create base-line results. | 478 // create base-line results. |
445 FilePath source_path; | 479 FilePath source_path; |
446 file_util::CreateTemporaryFileName(&source_path); | 480 file_util::CreateTemporaryFileName(&source_path); |
447 render_thread_.printer()->SaveSource(0, source_path.value()); | 481 render_thread_.printer()->SaveSource(0, source_path.value()); |
448 | 482 |
449 FilePath bitmap_path; | 483 FilePath bitmap_path; |
450 file_util::CreateTemporaryFileName(&bitmap_path); | 484 file_util::CreateTemporaryFileName(&bitmap_path); |
451 render_thread_.printer()->SaveBitmap(0, bitmap_path.value()); | 485 render_thread_.printer()->SaveBitmap(0, bitmap_path.value()); |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
823 error.domain.fromUTF8("test_domain"); | 857 error.domain.fromUTF8("test_domain"); |
824 error.reason = net::ERR_ABORTED; | 858 error.reason = net::ERR_ABORTED; |
825 error.unreachableURL = GURL("http://foo"); | 859 error.unreachableURL = GURL("http://foo"); |
826 WebFrame* web_frame = GetMainFrame(); | 860 WebFrame* web_frame = GetMainFrame(); |
827 WebView* web_view = web_frame->GetView(); | 861 WebView* web_view = web_frame->GetView(); |
828 // A cancellation occurred. | 862 // A cancellation occurred. |
829 view_->DidFailProvisionalLoadWithError(web_view, error, web_frame); | 863 view_->DidFailProvisionalLoadWithError(web_view, error, web_frame); |
830 // Frame should stay in view-source mode. | 864 // Frame should stay in view-source mode. |
831 EXPECT_TRUE(web_frame->GetInViewSourceMode()); | 865 EXPECT_TRUE(web_frame->GetInViewSourceMode()); |
832 } | 866 } |
OLD | NEW |