| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "components/printing/renderer/print_web_view_helper.h" | 5 #include "components/printing/renderer/print_web_view_helper.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <tuple> | 10 #include <tuple> |
| 11 #include <utility> | 11 #include <utility> |
| 12 | 12 |
| 13 #include "base/command_line.h" | 13 #include "base/command_line.h" |
| 14 #include "base/macros.h" | 14 #include "base/macros.h" |
| 15 #include "base/run_loop.h" | 15 #include "base/run_loop.h" |
| 16 #include "build/build_config.h" | 16 #include "build/build_config.h" |
| 17 #include "components/printing/common/print_messages.h" | 17 #include "components/printing/common/print_messages.h" |
| 18 #include "components/printing/test/mock_printer.h" | 18 #include "components/printing/test/mock_printer.h" |
| 19 #include "components/printing/test/print_mock_render_thread.h" | 19 #include "components/printing/test/print_mock_render_thread.h" |
| 20 #include "components/printing/test/print_test_content_renderer_client.h" | 20 #include "components/printing/test/print_test_content_renderer_client.h" |
| 21 #include "content/public/renderer/render_view.h" | 21 #include "content/public/renderer/render_view.h" |
| 22 #include "content/public/test/render_view_test.h" | 22 #include "content/public/test/render_view_test.h" |
| 23 #include "ipc/ipc_listener.h" | 23 #include "ipc/ipc_listener.h" |
| 24 #include "printing/features/features.h" |
| 24 #include "printing/print_job_constants.h" | 25 #include "printing/print_job_constants.h" |
| 25 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
| 26 #include "third_party/WebKit/public/platform/WebString.h" | 27 #include "third_party/WebKit/public/platform/WebString.h" |
| 27 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 28 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
| 28 #include "third_party/WebKit/public/web/WebRange.h" | 29 #include "third_party/WebKit/public/web/WebRange.h" |
| 29 #include "third_party/WebKit/public/web/WebView.h" | 30 #include "third_party/WebKit/public/web/WebView.h" |
| 30 | 31 |
| 31 #if defined(OS_WIN) || defined(OS_MACOSX) | 32 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 32 #include "base/files/file_util.h" | 33 #include "base/files/file_util.h" |
| 33 #include "printing/image.h" | 34 #include "printing/image.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 44 // A simple web page. | 45 // A simple web page. |
| 45 const char kHelloWorldHTML[] = "<body><p>Hello World!</p></body>"; | 46 const char kHelloWorldHTML[] = "<body><p>Hello World!</p></body>"; |
| 46 | 47 |
| 47 #if !defined(OS_CHROMEOS) | 48 #if !defined(OS_CHROMEOS) |
| 48 // A simple webpage with a button to print itself with. | 49 // A simple webpage with a button to print itself with. |
| 49 const char kPrintOnUserAction[] = | 50 const char kPrintOnUserAction[] = |
| 50 "<body>" | 51 "<body>" |
| 51 " <button id=\"print\" onclick=\"window.print();\">Hello World!</button>" | 52 " <button id=\"print\" onclick=\"window.print();\">Hello World!</button>" |
| 52 "</body>"; | 53 "</body>"; |
| 53 | 54 |
| 54 #if defined(ENABLE_PRINT_PREVIEW) | 55 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 55 // HTML with 3 pages. | 56 // HTML with 3 pages. |
| 56 const char kMultipageHTML[] = | 57 const char kMultipageHTML[] = |
| 57 "<html><head><style>" | 58 "<html><head><style>" |
| 58 ".break { page-break-after: always; }" | 59 ".break { page-break-after: always; }" |
| 59 "</style></head>" | 60 "</style></head>" |
| 60 "<body>" | 61 "<body>" |
| 61 "<div class='break'>page1</div>" | 62 "<div class='break'>page1</div>" |
| 62 "<div class='break'>page2</div>" | 63 "<div class='break'>page2</div>" |
| 63 "<div>page3</div>" | 64 "<div>page3</div>" |
| 64 "</body></html>"; | 65 "</body></html>"; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 dict->SetInteger(kPreviewUIID, 4); | 107 dict->SetInteger(kPreviewUIID, 4); |
| 107 dict->SetInteger(kPreviewRequestID, 12345); | 108 dict->SetInteger(kPreviewRequestID, 12345); |
| 108 dict->SetBoolean(kIsFirstRequest, true); | 109 dict->SetBoolean(kIsFirstRequest, true); |
| 109 dict->SetInteger(kSettingMarginsType, DEFAULT_MARGINS); | 110 dict->SetInteger(kSettingMarginsType, DEFAULT_MARGINS); |
| 110 dict->SetBoolean(kSettingPreviewModifiable, false); | 111 dict->SetBoolean(kSettingPreviewModifiable, false); |
| 111 dict->SetBoolean(kSettingHeaderFooterEnabled, false); | 112 dict->SetBoolean(kSettingHeaderFooterEnabled, false); |
| 112 dict->SetBoolean(kSettingGenerateDraftData, true); | 113 dict->SetBoolean(kSettingGenerateDraftData, true); |
| 113 dict->SetBoolean(kSettingShouldPrintBackgrounds, false); | 114 dict->SetBoolean(kSettingShouldPrintBackgrounds, false); |
| 114 dict->SetBoolean(kSettingShouldPrintSelectionOnly, false); | 115 dict->SetBoolean(kSettingShouldPrintSelectionOnly, false); |
| 115 } | 116 } |
| 116 #endif // defined(ENABLE_PRINT_PREVIEW) | 117 #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 117 #endif // !defined(OS_CHROMEOS) | 118 #endif // !defined(OS_CHROMEOS) |
| 118 | 119 |
| 119 #if defined(ENABLE_PRINT_PREVIEW) | 120 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 120 class DidPreviewPageListener : public IPC::Listener { | 121 class DidPreviewPageListener : public IPC::Listener { |
| 121 public: | 122 public: |
| 122 explicit DidPreviewPageListener(base::RunLoop* run_loop) | 123 explicit DidPreviewPageListener(base::RunLoop* run_loop) |
| 123 : run_loop_(run_loop) {} | 124 : run_loop_(run_loop) {} |
| 124 | 125 |
| 125 bool OnMessageReceived(const IPC::Message& message) override { | 126 bool OnMessageReceived(const IPC::Message& message) override { |
| 126 if (message.type() == PrintHostMsg_MetafileReadyForPrinting::ID || | 127 if (message.type() == PrintHostMsg_MetafileReadyForPrinting::ID || |
| 127 message.type() == PrintHostMsg_PrintPreviewFailed::ID || | 128 message.type() == PrintHostMsg_PrintPreviewFailed::ID || |
| 128 message.type() == PrintHostMsg_PrintPreviewCancelled::ID) | 129 message.type() == PrintHostMsg_PrintPreviewCancelled::ID) |
| 129 run_loop_->Quit(); | 130 run_loop_->Quit(); |
| 130 return false; | 131 return false; |
| 131 } | 132 } |
| 132 | 133 |
| 133 private: | 134 private: |
| 134 base::RunLoop* const run_loop_; | 135 base::RunLoop* const run_loop_; |
| 135 DISALLOW_COPY_AND_ASSIGN(DidPreviewPageListener); | 136 DISALLOW_COPY_AND_ASSIGN(DidPreviewPageListener); |
| 136 }; | 137 }; |
| 137 #endif // defined(ENABLE_PRINT_PREVIEW) | 138 #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 138 | 139 |
| 139 } // namespace | 140 } // namespace |
| 140 | 141 |
| 141 class PrintWebViewHelperTestBase : public content::RenderViewTest { | 142 class PrintWebViewHelperTestBase : public content::RenderViewTest { |
| 142 public: | 143 public: |
| 143 PrintWebViewHelperTestBase() : print_render_thread_(nullptr) {} | 144 PrintWebViewHelperTestBase() : print_render_thread_(nullptr) {} |
| 144 ~PrintWebViewHelperTestBase() override {} | 145 ~PrintWebViewHelperTestBase() override {} |
| 145 | 146 |
| 146 protected: | 147 protected: |
| 147 // content::RenderViewTest: | 148 // content::RenderViewTest: |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 render_thread_->sink().GetUniqueMessageMatching( | 185 render_thread_->sink().GetUniqueMessageMatching( |
| 185 PrintHostMsg_DidGetPrintedPagesCount::ID); | 186 PrintHostMsg_DidGetPrintedPagesCount::ID); |
| 186 ASSERT_TRUE(page_cnt_msg); | 187 ASSERT_TRUE(page_cnt_msg); |
| 187 PrintHostMsg_DidGetPrintedPagesCount::Param post_page_count_param; | 188 PrintHostMsg_DidGetPrintedPagesCount::Param post_page_count_param; |
| 188 PrintHostMsg_DidGetPrintedPagesCount::Read(page_cnt_msg, | 189 PrintHostMsg_DidGetPrintedPagesCount::Read(page_cnt_msg, |
| 189 &post_page_count_param); | 190 &post_page_count_param); |
| 190 EXPECT_EQ(count, std::get<1>(post_page_count_param)); | 191 EXPECT_EQ(count, std::get<1>(post_page_count_param)); |
| 191 #endif // defined(OS_CHROMEOS) | 192 #endif // defined(OS_CHROMEOS) |
| 192 } | 193 } |
| 193 | 194 |
| 194 #if defined(ENABLE_PRINT_PREVIEW) | 195 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 195 // The renderer should be done calculating the number of rendered pages | 196 // The renderer should be done calculating the number of rendered pages |
| 196 // according to the specified settings defined in the mock render thread. | 197 // according to the specified settings defined in the mock render thread. |
| 197 // Verify the page count is correct. | 198 // Verify the page count is correct. |
| 198 void VerifyPreviewPageCount(int count) { | 199 void VerifyPreviewPageCount(int count) { |
| 199 const IPC::Message* page_cnt_msg = | 200 const IPC::Message* page_cnt_msg = |
| 200 render_thread_->sink().GetUniqueMessageMatching( | 201 render_thread_->sink().GetUniqueMessageMatching( |
| 201 PrintHostMsg_DidGetPreviewPageCount::ID); | 202 PrintHostMsg_DidGetPreviewPageCount::ID); |
| 202 ASSERT_TRUE(page_cnt_msg); | 203 ASSERT_TRUE(page_cnt_msg); |
| 203 PrintHostMsg_DidGetPreviewPageCount::Param post_page_count_param; | 204 PrintHostMsg_DidGetPreviewPageCount::Param post_page_count_param; |
| 204 PrintHostMsg_DidGetPreviewPageCount::Read(page_cnt_msg, | 205 PrintHostMsg_DidGetPreviewPageCount::Read(page_cnt_msg, |
| 205 &post_page_count_param); | 206 &post_page_count_param); |
| 206 EXPECT_EQ(count, std::get<0>(post_page_count_param).page_count); | 207 EXPECT_EQ(count, std::get<0>(post_page_count_param).page_count); |
| 207 } | 208 } |
| 208 #endif // defined(ENABLE_PRINT_PREVIEW) | 209 #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 209 | 210 |
| 210 // Verifies whether the pages printed or not. | 211 // Verifies whether the pages printed or not. |
| 211 void VerifyPagesPrinted(bool printed) { | 212 void VerifyPagesPrinted(bool printed) { |
| 212 const IPC::Message* print_msg = | 213 const IPC::Message* print_msg = |
| 213 render_thread_->sink().GetUniqueMessageMatching( | 214 render_thread_->sink().GetUniqueMessageMatching( |
| 214 PrintHostMsg_DidPrintPage::ID); | 215 PrintHostMsg_DidPrintPage::ID); |
| 215 bool did_print_msg = !!print_msg; | 216 bool did_print_msg = !!print_msg; |
| 216 ASSERT_EQ(printed, did_print_msg); | 217 ASSERT_EQ(printed, did_print_msg); |
| 217 if (printed) { | 218 if (printed) { |
| 218 PrintHostMsg_DidPrintPage::Param post_did_print_page_param; | 219 PrintHostMsg_DidPrintPage::Param post_did_print_page_param; |
| 219 PrintHostMsg_DidPrintPage::Read(print_msg, &post_did_print_page_param); | 220 PrintHostMsg_DidPrintPage::Read(print_msg, &post_did_print_page_param); |
| 220 EXPECT_EQ(0, std::get<0>(post_did_print_page_param).page_number); | 221 EXPECT_EQ(0, std::get<0>(post_did_print_page_param).page_number); |
| 221 } | 222 } |
| 222 } | 223 } |
| 223 | 224 |
| 224 #if defined(ENABLE_BASIC_PRINTING) | 225 #if BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 225 void OnPrintPages() { | 226 void OnPrintPages() { |
| 226 PrintWebViewHelper::Get(view_)->OnPrintPages(); | 227 PrintWebViewHelper::Get(view_)->OnPrintPages(); |
| 227 ProcessPendingMessages(); | 228 ProcessPendingMessages(); |
| 228 } | 229 } |
| 229 #endif // defined(ENABLE_BASIC_PRINTING) | 230 #endif // BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 230 | 231 |
| 231 #if defined(ENABLE_PRINT_PREVIEW) | 232 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 232 void VerifyPreviewRequest(bool requested) { | 233 void VerifyPreviewRequest(bool requested) { |
| 233 const IPC::Message* print_msg = | 234 const IPC::Message* print_msg = |
| 234 render_thread_->sink().GetUniqueMessageMatching( | 235 render_thread_->sink().GetUniqueMessageMatching( |
| 235 PrintHostMsg_SetupScriptedPrintPreview::ID); | 236 PrintHostMsg_SetupScriptedPrintPreview::ID); |
| 236 bool did_print_msg = !!print_msg; | 237 bool did_print_msg = !!print_msg; |
| 237 ASSERT_EQ(requested, did_print_msg); | 238 ASSERT_EQ(requested, did_print_msg); |
| 238 } | 239 } |
| 239 | 240 |
| 240 void OnPrintPreview(const base::DictionaryValue& dict) { | 241 void OnPrintPreview(const base::DictionaryValue& dict) { |
| 241 PrintWebViewHelper* print_web_view_helper = PrintWebViewHelper::Get(view_); | 242 PrintWebViewHelper* print_web_view_helper = PrintWebViewHelper::Get(view_); |
| 242 print_web_view_helper->OnInitiatePrintPreview(false); | 243 print_web_view_helper->OnInitiatePrintPreview(false); |
| 243 base::RunLoop run_loop; | 244 base::RunLoop run_loop; |
| 244 DidPreviewPageListener filter(&run_loop); | 245 DidPreviewPageListener filter(&run_loop); |
| 245 render_thread_->sink().AddFilter(&filter); | 246 render_thread_->sink().AddFilter(&filter); |
| 246 print_web_view_helper->OnPrintPreview(dict); | 247 print_web_view_helper->OnPrintPreview(dict); |
| 247 run_loop.Run(); | 248 run_loop.Run(); |
| 248 render_thread_->sink().RemoveFilter(&filter); | 249 render_thread_->sink().RemoveFilter(&filter); |
| 249 } | 250 } |
| 250 #endif // defined(ENABLE_PRINT_PREVIEW) | 251 #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 251 | 252 |
| 252 #if defined(ENABLE_BASIC_PRINTING) | 253 #if BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 253 void OnPrintForPrintPreview(const base::DictionaryValue& dict) { | 254 void OnPrintForPrintPreview(const base::DictionaryValue& dict) { |
| 254 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(dict); | 255 PrintWebViewHelper::Get(view_)->OnPrintForPrintPreview(dict); |
| 255 ProcessPendingMessages(); | 256 ProcessPendingMessages(); |
| 256 } | 257 } |
| 257 #endif // defined(ENABLE_BASIC_PRINTING) | 258 #endif // BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 258 | 259 |
| 259 // Naked pointer as ownership is with content::RenderViewTest::render_thread_. | 260 // Naked pointer as ownership is with content::RenderViewTest::render_thread_. |
| 260 PrintMockRenderThread* print_render_thread_; | 261 PrintMockRenderThread* print_render_thread_; |
| 261 | 262 |
| 262 private: | 263 private: |
| 263 DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelperTestBase); | 264 DISALLOW_COPY_AND_ASSIGN(PrintWebViewHelperTestBase); |
| 264 }; | 265 }; |
| 265 | 266 |
| 266 // RenderViewTest-based tests crash on Android | 267 // RenderViewTest-based tests crash on Android |
| 267 // http://crbug.com/187500 | 268 // http://crbug.com/187500 |
| 268 #if defined(OS_ANDROID) | 269 #if defined(OS_ANDROID) |
| 269 #define MAYBE_PrintWebViewHelperTest DISABLED_PrintWebViewHelperTest | 270 #define MAYBE_PrintWebViewHelperTest DISABLED_PrintWebViewHelperTest |
| 270 #else | 271 #else |
| 271 #define MAYBE_PrintWebViewHelperTest PrintWebViewHelperTest | 272 #define MAYBE_PrintWebViewHelperTest PrintWebViewHelperTest |
| 272 #endif // defined(OS_ANDROID) | 273 #endif // defined(OS_ANDROID) |
| 273 | 274 |
| 274 class MAYBE_PrintWebViewHelperTest : public PrintWebViewHelperTestBase { | 275 class MAYBE_PrintWebViewHelperTest : public PrintWebViewHelperTestBase { |
| 275 public: | 276 public: |
| 276 MAYBE_PrintWebViewHelperTest() {} | 277 MAYBE_PrintWebViewHelperTest() {} |
| 277 ~MAYBE_PrintWebViewHelperTest() override {} | 278 ~MAYBE_PrintWebViewHelperTest() override {} |
| 278 | 279 |
| 279 void SetUp() override { PrintWebViewHelperTestBase::SetUp(); } | 280 void SetUp() override { PrintWebViewHelperTestBase::SetUp(); } |
| 280 | 281 |
| 281 private: | 282 private: |
| 282 DISALLOW_COPY_AND_ASSIGN(MAYBE_PrintWebViewHelperTest); | 283 DISALLOW_COPY_AND_ASSIGN(MAYBE_PrintWebViewHelperTest); |
| 283 }; | 284 }; |
| 284 | 285 |
| 285 // This tests only for platforms without print preview. | 286 // This tests only for platforms without print preview. |
| 286 #if !defined(ENABLE_PRINT_PREVIEW) | 287 #if !BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 287 // Tests that the renderer blocks window.print() calls if they occur too | 288 // Tests that the renderer blocks window.print() calls if they occur too |
| 288 // frequently. | 289 // frequently. |
| 289 TEST_F(MAYBE_PrintWebViewHelperTest, BlockScriptInitiatedPrinting) { | 290 TEST_F(MAYBE_PrintWebViewHelperTest, BlockScriptInitiatedPrinting) { |
| 290 // Pretend user will cancel printing. | 291 // Pretend user will cancel printing. |
| 291 print_render_thread_->set_print_dialog_user_response(false); | 292 print_render_thread_->set_print_dialog_user_response(false); |
| 292 // Try to print with window.print() a few times. | 293 // Try to print with window.print() a few times. |
| 293 PrintWithJavaScript(); | 294 PrintWithJavaScript(); |
| 294 PrintWithJavaScript(); | 295 PrintWithJavaScript(); |
| 295 PrintWithJavaScript(); | 296 PrintWithJavaScript(); |
| 296 VerifyPagesPrinted(false); | 297 VerifyPagesPrinted(false); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 VerifyPagesPrinted(true); | 348 VerifyPagesPrinted(true); |
| 348 } | 349 } |
| 349 | 350 |
| 350 // Duplicate of OnPrintPagesTest only using javascript to print. | 351 // Duplicate of OnPrintPagesTest only using javascript to print. |
| 351 TEST_F(MAYBE_PrintWebViewHelperTest, PrintWithJavascript) { | 352 TEST_F(MAYBE_PrintWebViewHelperTest, PrintWithJavascript) { |
| 352 PrintWithJavaScript(); | 353 PrintWithJavaScript(); |
| 353 | 354 |
| 354 VerifyPageCount(1); | 355 VerifyPageCount(1); |
| 355 VerifyPagesPrinted(true); | 356 VerifyPagesPrinted(true); |
| 356 } | 357 } |
| 357 #endif // !defined(ENABLE_PRINT_PREVIEW) | 358 #endif // !BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 358 | 359 |
| 359 #if defined(ENABLE_BASIC_PRINTING) | 360 #if BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 360 // Tests that printing pages work and sending and receiving messages through | 361 // Tests that printing pages work and sending and receiving messages through |
| 361 // that channel all works. | 362 // that channel all works. |
| 362 TEST_F(MAYBE_PrintWebViewHelperTest, OnPrintPages) { | 363 TEST_F(MAYBE_PrintWebViewHelperTest, OnPrintPages) { |
| 363 LoadHTML(kHelloWorldHTML); | 364 LoadHTML(kHelloWorldHTML); |
| 364 OnPrintPages(); | 365 OnPrintPages(); |
| 365 | 366 |
| 366 VerifyPageCount(1); | 367 VerifyPageCount(1); |
| 367 VerifyPagesPrinted(true); | 368 VerifyPagesPrinted(true); |
| 368 } | 369 } |
| 369 #endif // defined(ENABLE_BASIC_PRINTING) | 370 #endif // BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 370 | 371 |
| 371 #if defined(OS_MACOSX) && defined(ENABLE_BASIC_PRINTING) | 372 #if defined(OS_MACOSX) && BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 372 // TODO(estade): I don't think this test is worth porting to Linux. We will have | 373 // TODO(estade): I don't think this test is worth porting to Linux. We will have |
| 373 // to rip out and replace most of the IPC code if we ever plan to improve | 374 // to rip out and replace most of the IPC code if we ever plan to improve |
| 374 // printing, and the comment below by sverrir suggests that it doesn't do much | 375 // printing, and the comment below by sverrir suggests that it doesn't do much |
| 375 // for us anyway. | 376 // for us anyway. |
| 376 TEST_F(MAYBE_PrintWebViewHelperTest, PrintWithIframe) { | 377 TEST_F(MAYBE_PrintWebViewHelperTest, PrintWithIframe) { |
| 377 // Document that populates an iframe. | 378 // Document that populates an iframe. |
| 378 const char html[] = | 379 const char html[] = |
| 379 "<html><body>Lorem Ipsum:" | 380 "<html><body>Lorem Ipsum:" |
| 380 "<iframe name=\"sub1\" id=\"sub1\"></iframe><script>" | 381 "<iframe name=\"sub1\" id=\"sub1\"></iframe><script>" |
| 381 " document.write(frames['sub1'].name);" | 382 " document.write(frames['sub1'].name);" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 419 // Test cases used in this test. | 420 // Test cases used in this test. |
| 420 struct TestPageData { | 421 struct TestPageData { |
| 421 const char* page; | 422 const char* page; |
| 422 size_t printed_pages; | 423 size_t printed_pages; |
| 423 int width; | 424 int width; |
| 424 int height; | 425 int height; |
| 425 const char* checksum; | 426 const char* checksum; |
| 426 const wchar_t* file; | 427 const wchar_t* file; |
| 427 }; | 428 }; |
| 428 | 429 |
| 429 #if defined(OS_MACOSX) && defined(ENABLE_BASIC_PRINTING) | 430 #if defined(OS_MACOSX) && BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 430 const TestPageData kTestPages[] = { | 431 const TestPageData kTestPages[] = { |
| 431 { | 432 { |
| 432 "<html>" | 433 "<html>" |
| 433 "<head>" | 434 "<head>" |
| 434 "<meta" | 435 "<meta" |
| 435 " http-equiv=\"Content-Type\"" | 436 " http-equiv=\"Content-Type\"" |
| 436 " content=\"text/html; charset=utf-8\"/>" | 437 " content=\"text/html; charset=utf-8\"/>" |
| 437 "<title>Test 1</title>" | 438 "<title>Test 1</title>" |
| 438 "</head>" | 439 "</head>" |
| 439 "<body style=\"background-color: white;\">" | 440 "<body style=\"background-color: white;\">" |
| 440 "<p style=\"font-family: arial;\">Hello World!</p>" | 441 "<p style=\"font-family: arial;\">Hello World!</p>" |
| 441 "</body>", | 442 "</body>", |
| 442 1, | 443 1, |
| 443 // Mac printing code compensates for the WebKit scale factor while | 444 // Mac printing code compensates for the WebKit scale factor while |
| 444 // generating the metafile, so we expect smaller pages. (On non-Mac | 445 // generating the metafile, so we expect smaller pages. (On non-Mac |
| 445 // platforms, this would be 675x900). | 446 // platforms, this would be 675x900). |
| 446 600, 780, nullptr, nullptr, | 447 600, 780, nullptr, nullptr, |
| 447 }, | 448 }, |
| 448 }; | 449 }; |
| 449 #endif // defined(OS_MACOSX) && defined(ENABLE_BASIC_PRINTING) | 450 #endif // defined(OS_MACOSX) && BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 450 } // namespace | 451 } // namespace |
| 451 | 452 |
| 452 // TODO(estade): need to port MockPrinter to get this on Linux. This involves | 453 // TODO(estade): need to port MockPrinter to get this on Linux. This involves |
| 453 // hooking up Cairo to read a pdf stream, or accessing the cairo surface in the | 454 // hooking up Cairo to read a pdf stream, or accessing the cairo surface in the |
| 454 // metafile directly. | 455 // metafile directly. |
| 455 // Same for printing via PDF on Windows. | 456 // Same for printing via PDF on Windows. |
| 456 #if defined(OS_MACOSX) && defined(ENABLE_BASIC_PRINTING) | 457 #if defined(OS_MACOSX) && BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 457 TEST_F(MAYBE_PrintWebViewHelperTest, PrintLayoutTest) { | 458 TEST_F(MAYBE_PrintWebViewHelperTest, PrintLayoutTest) { |
| 458 bool baseline = false; | 459 bool baseline = false; |
| 459 | 460 |
| 460 EXPECT_TRUE(print_render_thread_->printer()); | 461 EXPECT_TRUE(print_render_thread_->printer()); |
| 461 for (size_t i = 0; i < arraysize(kTestPages); ++i) { | 462 for (size_t i = 0; i < arraysize(kTestPages); ++i) { |
| 462 // Load an HTML page and print it. | 463 // Load an HTML page and print it. |
| 463 LoadHTML(kTestPages[i].page); | 464 LoadHTML(kTestPages[i].page); |
| 464 OnPrintPages(); | 465 OnPrintPages(); |
| 465 VerifyPagesPrinted(true); | 466 VerifyPagesPrinted(true); |
| 466 | 467 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 | 514 |
| 514 // RenderViewTest-based tests crash on Android | 515 // RenderViewTest-based tests crash on Android |
| 515 // http://crbug.com/187500 | 516 // http://crbug.com/187500 |
| 516 #if defined(OS_ANDROID) | 517 #if defined(OS_ANDROID) |
| 517 #define MAYBE_PrintWebViewHelperPreviewTest \ | 518 #define MAYBE_PrintWebViewHelperPreviewTest \ |
| 518 DISABLED_PrintWebViewHelperPreviewTest | 519 DISABLED_PrintWebViewHelperPreviewTest |
| 519 #else | 520 #else |
| 520 #define MAYBE_PrintWebViewHelperPreviewTest PrintWebViewHelperPreviewTest | 521 #define MAYBE_PrintWebViewHelperPreviewTest PrintWebViewHelperPreviewTest |
| 521 #endif // defined(OS_ANDROID) | 522 #endif // defined(OS_ANDROID) |
| 522 | 523 |
| 523 #if defined(ENABLE_PRINT_PREVIEW) | 524 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 524 class MAYBE_PrintWebViewHelperPreviewTest : public PrintWebViewHelperTestBase { | 525 class MAYBE_PrintWebViewHelperPreviewTest : public PrintWebViewHelperTestBase { |
| 525 public: | 526 public: |
| 526 MAYBE_PrintWebViewHelperPreviewTest() {} | 527 MAYBE_PrintWebViewHelperPreviewTest() {} |
| 527 ~MAYBE_PrintWebViewHelperPreviewTest() override {} | 528 ~MAYBE_PrintWebViewHelperPreviewTest() override {} |
| 528 | 529 |
| 529 protected: | 530 protected: |
| 530 void VerifyPrintPreviewCancelled(bool did_cancel) { | 531 void VerifyPrintPreviewCancelled(bool did_cancel) { |
| 531 bool print_preview_cancelled = | 532 bool print_preview_cancelled = |
| 532 !!render_thread_->sink().GetUniqueMessageMatching( | 533 !!render_thread_->sink().GetUniqueMessageMatching( |
| 533 PrintHostMsg_PrintPreviewCancelled::ID); | 534 PrintHostMsg_PrintPreviewCancelled::ID); |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 940 CreatePrintSettingsDictionary(&dict); | 941 CreatePrintSettingsDictionary(&dict); |
| 941 OnPrintPreview(dict); | 942 OnPrintPreview(dict); |
| 942 | 943 |
| 943 EXPECT_EQ(kCancelPage, print_render_thread_->print_preview_pages_remaining()); | 944 EXPECT_EQ(kCancelPage, print_render_thread_->print_preview_pages_remaining()); |
| 944 VerifyPrintPreviewCancelled(true); | 945 VerifyPrintPreviewCancelled(true); |
| 945 VerifyPrintPreviewFailed(false); | 946 VerifyPrintPreviewFailed(false); |
| 946 VerifyPrintPreviewGenerated(false); | 947 VerifyPrintPreviewGenerated(false); |
| 947 VerifyPagesPrinted(false); | 948 VerifyPagesPrinted(false); |
| 948 } | 949 } |
| 949 | 950 |
| 950 #if defined(ENABLE_BASIC_PRINTING) | 951 #if BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 951 // Tests that printing from print preview works and sending and receiving | 952 // Tests that printing from print preview works and sending and receiving |
| 952 // messages through that channel all works. | 953 // messages through that channel all works. |
| 953 TEST_F(MAYBE_PrintWebViewHelperPreviewTest, OnPrintForPrintPreview) { | 954 TEST_F(MAYBE_PrintWebViewHelperPreviewTest, OnPrintForPrintPreview) { |
| 954 LoadHTML(kPrintPreviewHTML); | 955 LoadHTML(kPrintPreviewHTML); |
| 955 | 956 |
| 956 // Fill in some dummy values. | 957 // Fill in some dummy values. |
| 957 base::DictionaryValue dict; | 958 base::DictionaryValue dict; |
| 958 CreatePrintSettingsDictionary(&dict); | 959 CreatePrintSettingsDictionary(&dict); |
| 959 OnPrintForPrintPreview(dict); | 960 OnPrintForPrintPreview(dict); |
| 960 | 961 |
| 961 VerifyPrintFailed(false); | 962 VerifyPrintFailed(false); |
| 962 VerifyPagesPrinted(true); | 963 VerifyPagesPrinted(true); |
| 963 } | 964 } |
| 964 | 965 |
| 965 // Tests that printing from print preview fails and receiving error messages | 966 // Tests that printing from print preview fails and receiving error messages |
| 966 // through that channel all works. | 967 // through that channel all works. |
| 967 TEST_F(MAYBE_PrintWebViewHelperPreviewTest, OnPrintForPrintPreviewFail) { | 968 TEST_F(MAYBE_PrintWebViewHelperPreviewTest, OnPrintForPrintPreviewFail) { |
| 968 LoadHTML(kPrintPreviewHTML); | 969 LoadHTML(kPrintPreviewHTML); |
| 969 | 970 |
| 970 // An empty dictionary should fail. | 971 // An empty dictionary should fail. |
| 971 base::DictionaryValue empty_dict; | 972 base::DictionaryValue empty_dict; |
| 972 OnPrintForPrintPreview(empty_dict); | 973 OnPrintForPrintPreview(empty_dict); |
| 973 | 974 |
| 974 VerifyPagesPrinted(false); | 975 VerifyPagesPrinted(false); |
| 975 } | 976 } |
| 976 #endif // defined(ENABLE_BASIC_PRINTING) | 977 #endif // BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 977 | 978 |
| 978 // Tests that when default printer has invalid printer settings, print preview | 979 // Tests that when default printer has invalid printer settings, print preview |
| 979 // receives error message. | 980 // receives error message. |
| 980 TEST_F(MAYBE_PrintWebViewHelperPreviewTest, | 981 TEST_F(MAYBE_PrintWebViewHelperPreviewTest, |
| 981 OnPrintPreviewUsingInvalidPrinterSettings) { | 982 OnPrintPreviewUsingInvalidPrinterSettings) { |
| 982 LoadHTML(kPrintPreviewHTML); | 983 LoadHTML(kPrintPreviewHTML); |
| 983 | 984 |
| 984 // Set mock printer to provide invalid settings. | 985 // Set mock printer to provide invalid settings. |
| 985 print_render_thread_->printer()->UseInvalidSettings(); | 986 print_render_thread_->printer()->UseInvalidSettings(); |
| 986 | 987 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1031 OnPrintPreview(dict); | 1032 OnPrintPreview(dict); |
| 1032 | 1033 |
| 1033 VerifyPrintPreviewInvalidPrinterSettings(true); | 1034 VerifyPrintPreviewInvalidPrinterSettings(true); |
| 1034 EXPECT_EQ(0, print_render_thread_->print_preview_pages_remaining()); | 1035 EXPECT_EQ(0, print_render_thread_->print_preview_pages_remaining()); |
| 1035 | 1036 |
| 1036 // It should receive the invalid printer settings message only. | 1037 // It should receive the invalid printer settings message only. |
| 1037 VerifyPrintPreviewFailed(false); | 1038 VerifyPrintPreviewFailed(false); |
| 1038 VerifyPrintPreviewGenerated(false); | 1039 VerifyPrintPreviewGenerated(false); |
| 1039 } | 1040 } |
| 1040 | 1041 |
| 1041 #if defined(ENABLE_BASIC_PRINTING) | 1042 #if BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 1042 TEST_F(MAYBE_PrintWebViewHelperPreviewTest, | 1043 TEST_F(MAYBE_PrintWebViewHelperPreviewTest, |
| 1043 OnPrintForPrintPreviewUsingInvalidPrinterSettings) { | 1044 OnPrintForPrintPreviewUsingInvalidPrinterSettings) { |
| 1044 LoadHTML(kPrintPreviewHTML); | 1045 LoadHTML(kPrintPreviewHTML); |
| 1045 | 1046 |
| 1046 // Set mock printer to provide invalid settings. | 1047 // Set mock printer to provide invalid settings. |
| 1047 print_render_thread_->printer()->UseInvalidSettings(); | 1048 print_render_thread_->printer()->UseInvalidSettings(); |
| 1048 | 1049 |
| 1049 // Fill in some dummy values. | 1050 // Fill in some dummy values. |
| 1050 base::DictionaryValue dict; | 1051 base::DictionaryValue dict; |
| 1051 CreatePrintSettingsDictionary(&dict); | 1052 CreatePrintSettingsDictionary(&dict); |
| 1052 OnPrintForPrintPreview(dict); | 1053 OnPrintForPrintPreview(dict); |
| 1053 | 1054 |
| 1054 VerifyPrintFailed(true); | 1055 VerifyPrintFailed(true); |
| 1055 VerifyPagesPrinted(false); | 1056 VerifyPagesPrinted(false); |
| 1056 } | 1057 } |
| 1057 #endif // defined(ENABLE_BASIC_PRINTING) | 1058 #endif // BUILDFLAG(ENABLE_BASIC_PRINTING) |
| 1058 #endif // defined(ENABLE_PRINT_PREVIEW) | 1059 #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) |
| 1059 | 1060 |
| 1060 #endif // !defined(OS_CHROMEOS) | 1061 #endif // !defined(OS_CHROMEOS) |
| 1061 | 1062 |
| 1062 } // namespace printing | 1063 } // namespace printing |
| OLD | NEW |