Commit 39e5d590 authored by Lei Zhang's avatar Lei Zhang Committed by Commit Bot

Add more PrintRenderFrameHelperTests.

- PrintRenderFrameHelperTest.WindowPrintBeforePrintAfterPrint covers the
  regression in bug 912966 without Print Preview.
- PrintRenderFrameHelperPreviewTest.WindowPrintBeforePrintAfterPrint
  covers the regression in bug 912966 with Print Preview.
- PrintRenderFrameHelperPreviewTest.BasicBeforePrintAfterPrint is the
  equivalent to PrintRenderFrameHelperTest.BasicBeforePrintAfterPrint,
  but for Print Preview.
- Merge common code to avoid repeats.

BUG=912966

Change-Id: I80b0ef718e4f06e2e1bd858bd1c2a39028d4a6ec
Reviewed-on: https://chromium-review.googlesource.com/c/1371211
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: default avatarKent Tamura <tkent@chromium.org>
Cr-Commit-Position: refs/heads/master@{#615624}
parent a2e98d8b
...@@ -51,6 +51,18 @@ namespace { ...@@ -51,6 +51,18 @@ namespace {
// A simple web page. // A simple web page.
const char kHelloWorldHTML[] = "<body><p>Hello World!</p></body>"; const char kHelloWorldHTML[] = "<body><p>Hello World!</p></body>";
// Web page used for testing onbeforeprint/onafterprint.
const char kBeforeAfterPrintHtml[] =
"<body>"
"<script>"
"var beforePrintCount = 0;"
"var afterPrintCount = 0;"
"window.onbeforeprint = () => { ++beforePrintCount; };"
"window.onafterprint = () => { ++afterPrintCount; };"
"</script>"
"<button id=\"print\" onclick=\"window.print();\">Hello World!</button>"
"</body>";
#if !defined(OS_CHROMEOS) #if !defined(OS_CHROMEOS)
// A simple webpage with a button to print itself with. // A simple webpage with a button to print itself with.
const char kPrintOnUserAction[] = const char kPrintOnUserAction[] =
...@@ -256,6 +268,10 @@ class PrintRenderFrameHelperTestBase : public content::RenderViewTest { ...@@ -256,6 +268,10 @@ class PrintRenderFrameHelperTestBase : public content::RenderViewTest {
run_loop.Run(); run_loop.Run();
render_thread_->sink().RemoveFilter(&filter); render_thread_->sink().RemoveFilter(&filter);
} }
void OnClosePrintPreviewDialog() {
GetPrintRenderFrameHelper()->OnClosePrintPreviewDialog();
}
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
PrintRenderFrameHelper* GetPrintRenderFrameHelper() { PrintRenderFrameHelper* GetPrintRenderFrameHelper() {
...@@ -288,6 +304,36 @@ class PrintRenderFrameHelperTestBase : public content::RenderViewTest { ...@@ -288,6 +304,36 @@ class PrintRenderFrameHelperTestBase : public content::RenderViewTest {
SendWebMouseEvent(mouse_event); SendWebMouseEvent(mouse_event);
} }
void ExpectNoBeforeNoAfterPrintEvent() {
int result;
ASSERT_TRUE(ExecuteJavaScriptAndReturnIntValue(
base::ASCIIToUTF16("beforePrintCount"), &result));
EXPECT_EQ(0, result) << "beforeprint event should not be dispatched.";
ASSERT_TRUE(ExecuteJavaScriptAndReturnIntValue(
base::ASCIIToUTF16("afterPrintCount"), &result));
EXPECT_EQ(0, result) << "afterprint event should not be dispatched.";
}
void ExpectOneBeforeNoAfterPrintEvent() {
int result;
ASSERT_TRUE(ExecuteJavaScriptAndReturnIntValue(
base::ASCIIToUTF16("beforePrintCount"), &result));
EXPECT_EQ(1, result) << "beforeprint event should be dispatched once.";
ASSERT_TRUE(ExecuteJavaScriptAndReturnIntValue(
base::ASCIIToUTF16("afterPrintCount"), &result));
EXPECT_EQ(0, result) << "afterprint event should not be dispatched.";
}
void ExpectOneBeforeOneAfterPrintEvent() {
int result;
ASSERT_TRUE(ExecuteJavaScriptAndReturnIntValue(
base::ASCIIToUTF16("beforePrintCount"), &result));
EXPECT_EQ(1, result) << "beforeprint event should be dispatched once.";
ASSERT_TRUE(ExecuteJavaScriptAndReturnIntValue(
base::ASCIIToUTF16("afterPrintCount"), &result));
EXPECT_EQ(1, result) << "afterprint event should be dispatched once.";
}
PrintMockRenderThread* print_render_thread() { return print_render_thread_; } PrintMockRenderThread* print_render_thread() { return print_render_thread_; }
private: private:
...@@ -378,6 +424,18 @@ TEST_F(MAYBE_PrintRenderFrameHelperTest, PrintWithJavascript) { ...@@ -378,6 +424,18 @@ TEST_F(MAYBE_PrintRenderFrameHelperTest, PrintWithJavascript) {
VerifyPageCount(1); VerifyPageCount(1);
VerifyPagesPrinted(true); VerifyPagesPrinted(true);
} }
// Regression test for https://crbug.com/912966
TEST_F(MAYBE_PrintRenderFrameHelperTest, WindowPrintBeforePrintAfterPrint) {
LoadHTML(kBeforeAfterPrintHtml);
ExpectNoBeforeNoAfterPrintEvent();
PrintWithJavaScript();
VerifyPageCount(1);
VerifyPagesPrinted(true);
ExpectOneBeforeOneAfterPrintEvent();
}
#endif // !BUILDFLAG(ENABLE_PRINT_PREVIEW) #endif // !BUILDFLAG(ENABLE_PRINT_PREVIEW)
// Tests that printing pages work and sending and receiving messages through // Tests that printing pages work and sending and receiving messages through
...@@ -391,27 +449,14 @@ TEST_F(MAYBE_PrintRenderFrameHelperTest, OnPrintPages) { ...@@ -391,27 +449,14 @@ TEST_F(MAYBE_PrintRenderFrameHelperTest, OnPrintPages) {
} }
TEST_F(MAYBE_PrintRenderFrameHelperTest, BasicBeforePrintAfterPrint) { TEST_F(MAYBE_PrintRenderFrameHelperTest, BasicBeforePrintAfterPrint) {
static const char kHtml[] = LoadHTML(kBeforeAfterPrintHtml);
"<body>Hello" ExpectNoBeforeNoAfterPrintEvent();
"<script>"
"var beforePrintCount = 0;"
"var afterPrintCount = 0;"
"window.onbeforeprint = () => { ++beforePrintCount; };"
"window.onafterprint = () => { ++afterPrintCount; };"
"</script>"
"</body>";
LoadHTML(kHtml);
OnPrintPages(); OnPrintPages();
VerifyPageCount(1);
VerifyPagesPrinted(true); VerifyPagesPrinted(true);
int result; ExpectOneBeforeOneAfterPrintEvent();
ASSERT_TRUE(ExecuteJavaScriptAndReturnIntValue(
base::ASCIIToUTF16("beforePrintCount"), &result));
EXPECT_EQ(1, result) << "beforeprint event should be dispatched once.";
ASSERT_TRUE(ExecuteJavaScriptAndReturnIntValue(
base::ASCIIToUTF16("afterPrintCount"), &result));
EXPECT_EQ(1, result) << "afterprint event should be dispatched once.";
} }
TEST_F(MAYBE_PrintRenderFrameHelperTest, BasicBeforePrintAfterPrintSubFrame) { TEST_F(MAYBE_PrintRenderFrameHelperTest, BasicBeforePrintAfterPrintSubFrame) {
...@@ -1275,6 +1320,46 @@ TEST_F(MAYBE_PrintRenderFrameHelperPreviewTest, ...@@ -1275,6 +1320,46 @@ TEST_F(MAYBE_PrintRenderFrameHelperPreviewTest,
VerifyPrintPreviewGenerated(false); VerifyPrintPreviewGenerated(false);
} }
TEST_F(MAYBE_PrintRenderFrameHelperPreviewTest, BasicBeforePrintAfterPrint) {
LoadHTML(kBeforeAfterPrintHtml);
ExpectNoBeforeNoAfterPrintEvent();
base::DictionaryValue dict;
CreatePrintSettingsDictionary(&dict);
OnPrintPreview(dict);
EXPECT_EQ(0, print_render_thread()->print_preview_pages_remaining());
VerifyDidPreviewPage(true, 0);
VerifyPreviewPageCount(1);
VerifyDefaultPageLayout(540, 720, 36, 36, 36, 36, false);
VerifyPrintPreviewCancelled(false);
VerifyPrintPreviewFailed(false);
VerifyPrintPreviewGenerated(true);
VerifyPagesPrinted(false);
ExpectOneBeforeNoAfterPrintEvent();
OnClosePrintPreviewDialog();
ExpectOneBeforeOneAfterPrintEvent();
}
// Regression test for https://crbug.com/912966
TEST_F(MAYBE_PrintRenderFrameHelperPreviewTest,
WindowPrintBeforePrintAfterPrint) {
LoadHTML(kBeforeAfterPrintHtml);
gfx::Size new_size(200, 100);
Resize(new_size, false);
ExpectNoBeforeNoAfterPrintEvent();
gfx::Rect bounds = GetElementBounds("print");
ClickMouseButton(bounds);
VerifyPreviewRequest(true);
ExpectOneBeforeNoAfterPrintEvent();
OnClosePrintPreviewDialog();
ExpectOneBeforeOneAfterPrintEvent();
}
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
#endif // !defined(OS_CHROMEOS) #endif // !defined(OS_CHROMEOS)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment