Index: chrome/renderer/print_web_view_helper_browsertest.cc |
=================================================================== |
--- chrome/renderer/print_web_view_helper_browsertest.cc (revision 98330) |
+++ chrome/renderer/print_web_view_helper_browsertest.cc (working copy) |
@@ -29,6 +29,10 @@ |
const char kPrintWithJSHTML[] = |
"<body>Hello<script>window.print()</script>World</body>"; |
+// A longer web page. |
+const char kLongPageHTML[] = |
+ "<body><img src=\"\" width=10 height=10000 /></body>"; |
+ |
// A web page to simulate the print preview page. |
const char kPrintPreviewHTML[] = |
"<body><p id=\"pdf-viewer\">Hello World!</p></body>"; |
@@ -41,6 +45,7 @@ |
dict->SetInteger(printing::kSettingDuplexMode, printing::SIMPLEX); |
dict->SetInteger(printing::kSettingCopies, 1); |
dict->SetString(printing::kSettingDeviceName, "dummy"); |
+ dict->SetString(printing::kPreviewUIAddr, "0xb33fbeef"); |
dict->SetInteger(printing::kPreviewRequestID, 12345); |
dict->SetBoolean(printing::kIsFirstRequest, true); |
} |
@@ -304,6 +309,13 @@ |
} |
protected: |
+ void VerifyPrintPreviewCancelled(bool did_cancel) { |
+ bool print_preview_cancelled = |
+ (render_thread_.sink().GetUniqueMessageMatching( |
+ PrintHostMsg_PrintPreviewCancelled::ID) != NULL); |
+ EXPECT_EQ(did_cancel, print_preview_cancelled); |
+ } |
+ |
void VerifyPrintPreviewFailed(bool did_fail) { |
bool print_preview_failed = (render_thread_.sink().GetUniqueMessageMatching( |
PrintHostMsg_PrintPreviewFailed::ID) != NULL); |
@@ -345,14 +357,8 @@ |
CreatePrintSettingsDictionary(&dict); |
PrintWebViewHelper::Get(view_)->OnPrintPreview(dict); |
- // Need to finish simulating print preview. |
- // Generate the page and finalize it. |
- PrintWebViewHelper::Get(view_)->OnContinuePreview( |
- printing::INVALID_PAGE_INDEX); |
- PrintWebViewHelper::Get(view_)->OnContinuePreview( |
- printing::INVALID_PAGE_INDEX); |
- |
EXPECT_EQ(0, render_thread_.print_preview_pages_remaining()); |
+ VerifyPrintPreviewCancelled(false); |
VerifyPrintPreviewFailed(false); |
VerifyPrintPreviewGenerated(true); |
VerifyPagesPrinted(false); |
@@ -369,11 +375,31 @@ |
PrintWebViewHelper::Get(view_)->OnPrintPreview(empty_dict); |
EXPECT_EQ(0, render_thread_.print_preview_pages_remaining()); |
+ VerifyPrintPreviewCancelled(false); |
VerifyPrintPreviewFailed(true); |
VerifyPrintPreviewGenerated(false); |
VerifyPagesPrinted(false); |
} |
+// Tests that cancelling print preview works. |
+TEST_F(PrintWebViewHelperPreviewTest, OnPrintPreviewCancel) { |
+ LoadHTML(kLongPageHTML); |
+ |
+ const int kCancelPage = 3; |
+ render_thread_.set_print_preview_cancel_page_number(kCancelPage); |
+ PrintWebViewHelper::Get(view_)->OnInitiatePrintPreview(); |
+ // Fill in some dummy values. |
+ DictionaryValue dict; |
+ CreatePrintSettingsDictionary(&dict); |
+ PrintWebViewHelper::Get(view_)->OnPrintPreview(dict); |
+ |
+ EXPECT_EQ(kCancelPage, render_thread_.print_preview_pages_remaining()); |
+ VerifyPrintPreviewCancelled(true); |
+ VerifyPrintPreviewFailed(false); |
+ VerifyPrintPreviewGenerated(false); |
+ VerifyPagesPrinted(false); |
+} |
+ |
// Tests that printing from print preview works and sending and receiving |
// messages through that channel all works. |
TEST_F(PrintWebViewHelperPreviewTest, OnPrintForPrintPreview) { |