summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/browser/printing/print_browsertest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/printing/print_browsertest.cc')
-rw-r--r--chromium/chrome/browser/printing/print_browsertest.cc57
1 files changed, 54 insertions, 3 deletions
diff --git a/chromium/chrome/browser/printing/print_browsertest.cc b/chromium/chrome/browser/printing/print_browsertest.cc
index e2a8b92c752..20e8cf2ea0a 100644
--- a/chromium/chrome/browser/printing/print_browsertest.cc
+++ b/chromium/chrome/browser/printing/print_browsertest.cc
@@ -7,6 +7,7 @@
#include "base/auto_reset.h"
#include "base/bind.h"
#include "base/files/file_path.h"
+#include "base/optional.h"
#include "base/path_service.h"
#include "base/run_loop.h"
#include "base/strings/stringprintf.h"
@@ -46,7 +47,12 @@ constexpr int kDefaultDocumentCookie = 1234;
class PrintPreviewObserver : PrintPreviewUI::TestDelegate {
public:
- PrintPreviewObserver() { PrintPreviewUI::SetDelegateForTesting(this); }
+ explicit PrintPreviewObserver(bool wait_for_loaded) {
+ if (wait_for_loaded)
+ queue_.emplace(); // DOMMessageQueue doesn't allow assignment
+ PrintPreviewUI::SetDelegateForTesting(this);
+ }
+
~PrintPreviewObserver() override {
PrintPreviewUI::SetDelegateForTesting(nullptr);
}
@@ -58,6 +64,12 @@ class PrintPreviewObserver : PrintPreviewUI::TestDelegate {
base::RunLoop run_loop;
base::AutoReset<base::RunLoop*> auto_reset(&run_loop_, &run_loop);
run_loop.Run();
+
+ if (queue_.has_value()) {
+ std::string message;
+ EXPECT_TRUE(queue_->WaitForMessage(&message));
+ EXPECT_EQ("\"success\"", message);
+ }
}
private:
@@ -72,9 +84,20 @@ class PrintPreviewObserver : PrintPreviewUI::TestDelegate {
CHECK(rendered_page_count_ <= total_page_count_);
if (rendered_page_count_ == total_page_count_ && run_loop_) {
run_loop_->Quit();
+
+ if (queue_.has_value()) {
+ content::ExecuteScriptAsync(
+ preview_dialog,
+ "window.addEventListener('message', event => {"
+ " if (event.data.type === 'documentLoaded') {"
+ " domAutomationController.send(event.data.load_state);"
+ " }"
+ "});");
+ }
}
}
+ base::Optional<content::DOMMessageQueue> queue_;
int total_page_count_ = 1;
int rendered_page_count_ = 0;
base::RunLoop* run_loop_ = nullptr;
@@ -192,9 +215,20 @@ class PrintBrowserTest : public InProcessBrowserTest {
}
void PrintAndWaitUntilPreviewIsReady(bool print_only_selection) {
- PrintPreviewObserver print_preview_observer;
+ PrintPreviewObserver print_preview_observer(/*wait_for_loaded=*/false);
+
+ StartPrint(browser()->tab_strip_model()->GetActiveWebContents(),
+ /*print_renderer=*/nullptr,
+ /*print_preview_disabled=*/false, print_only_selection);
+
+ print_preview_observer.WaitUntilPreviewIsReady();
+ }
+
+ void PrintAndWaitUntilPreviewIsReadyAndLoaded(bool print_only_selection) {
+ PrintPreviewObserver print_preview_observer(/*wait_for_loaded=*/true);
StartPrint(browser()->tab_strip_model()->GetActiveWebContents(),
+ /*print_renderer=*/nullptr,
/*print_preview_disabled=*/false, print_only_selection);
print_preview_observer.WaitUntilPreviewIsReady();
@@ -278,9 +312,10 @@ class PrintExtensionBrowserTest : public extensions::ExtensionBrowserTest {
~PrintExtensionBrowserTest() override = default;
void PrintAndWaitUntilPreviewIsReady(bool print_only_selection) {
- PrintPreviewObserver print_preview_observer;
+ PrintPreviewObserver print_preview_observer(/*wait_for_loaded=*/false);
StartPrint(browser()->tab_strip_model()->GetActiveWebContents(),
+ /*print_renderer=*/nullptr,
/*print_preview_disabled=*/false, print_only_selection);
print_preview_observer.WaitUntilPreviewIsReady();
@@ -609,4 +644,20 @@ IN_PROC_BROWSER_TEST_F(SitePerProcessPrintBrowserTest, PrintNup) {
PrintAndWaitUntilPreviewIsReady(/*print_only_selection=*/false);
}
+IN_PROC_BROWSER_TEST_F(PrintBrowserTest, MultipagePrint) {
+ ASSERT_TRUE(embedded_test_server()->Started());
+ GURL url(embedded_test_server()->GetURL("/printing/multipage.html"));
+ ui_test_utils::NavigateToURL(browser(), url);
+
+ PrintAndWaitUntilPreviewIsReadyAndLoaded(/*print_only_selection=*/false);
+}
+
+IN_PROC_BROWSER_TEST_F(SitePerProcessPrintBrowserTest, MultipagePrint) {
+ ASSERT_TRUE(embedded_test_server()->Started());
+ GURL url(embedded_test_server()->GetURL("/printing/multipage.html"));
+ ui_test_utils::NavigateToURL(browser(), url);
+
+ PrintAndWaitUntilPreviewIsReadyAndLoaded(/*print_only_selection=*/false);
+}
+
} // namespace printing