[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 12:48:49 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 9c50aa0c273e2d18dc7cd8692ee433512271b27f
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Aug 31 00:02:22 2010 +0000

    2010-08-30  Lei Zhang  <thestig at chromium.org>
    
            Reviewed by Shinichiro Hamaji.
    
            Defer printing until the FrameLoader finishes loading.
            https://bugs.webkit.org/show_bug.cgi?id=43658
    
            * manual-tests/print-before-load.html: Added.
    
            * loader/FrameLoader.cpp:
            (WebCore::FrameLoader::finishedLoading):
            * page/DOMWindow.cpp:
            (WebCore::DOMWindow::DOMWindow):
            (WebCore::DOMWindow::print):
            * page/DOMWindow.h:
            (WebCore::DOMWindow::printDeferred):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@66428 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index ddcd52e..998ad11 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,20 @@
+2010-08-30  Lei Zhang  <thestig at chromium.org>
+
+        Reviewed by Shinichiro Hamaji.
+
+        Defer printing until the FrameLoader finishes loading.
+        https://bugs.webkit.org/show_bug.cgi?id=43658
+
+        * manual-tests/print-before-load.html: Added.
+
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::finishedLoading):
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::DOMWindow):
+        (WebCore::DOMWindow::print):
+        * page/DOMWindow.h:
+        (WebCore::DOMWindow::printDeferred):
+
 2010-08-30  Chris Rogers  <crogers at google.com>
 
         Reviewed by Kenneth Russell.
diff --git a/WebCore/loader/FrameLoader.cpp b/WebCore/loader/FrameLoader.cpp
index 1b4e489..9d8d4d1 100644
--- a/WebCore/loader/FrameLoader.cpp
+++ b/WebCore/loader/FrameLoader.cpp
@@ -2166,6 +2166,10 @@ void FrameLoader::finishedLoading()
     dl->setPrimaryLoadComplete(true);
     m_client->dispatchDidLoadMainResource(dl.get());
     checkLoadComplete();
+
+    DOMWindow* window = m_frame->existingDOMWindow();
+    if (window && window->printDeferred())
+        window->print();
 }
 
 bool FrameLoader::isHostedByObjectElement() const
diff --git a/WebCore/manual-tests/print-before-load.html b/WebCore/manual-tests/print-before-load.html
new file mode 100644
index 0000000..edec30b
--- /dev/null
+++ b/WebCore/manual-tests/print-before-load.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>Print Test Page</title>
+<body>
+
+<script language="JavaScript" type="text/javascript">
+window.print();
+</script>
+
+This webpage should pop up a print dialog. If you print from that dialog, you
+should see this output on paper.
+
+</body>
+</html>
+
diff --git a/WebCore/page/DOMWindow.cpp b/WebCore/page/DOMWindow.cpp
index af43a55..6a4d12f 100644
--- a/WebCore/page/DOMWindow.cpp
+++ b/WebCore/page/DOMWindow.cpp
@@ -379,7 +379,8 @@ bool DOMWindow::canShowModalDialogNow(const Frame* frame)
 }
 
 DOMWindow::DOMWindow(Frame* frame)
-    : m_frame(frame)
+    : m_printDeferred(false),
+      m_frame(frame)
 {
 }
 
@@ -861,6 +862,11 @@ void DOMWindow::print()
     if (!page)
         return;
 
+    if (m_frame->loader()->isLoading()) {
+        m_printDeferred = true;
+        return;
+    }
+    m_printDeferred = false;
     page->chrome()->print(m_frame);
 }
 
diff --git a/WebCore/page/DOMWindow.h b/WebCore/page/DOMWindow.h
index 8d57dcc..db453bb 100644
--- a/WebCore/page/DOMWindow.h
+++ b/WebCore/page/DOMWindow.h
@@ -90,6 +90,7 @@ namespace WebCore {
         virtual DOMWindow* toDOMWindow() { return this; }
         virtual ScriptExecutionContext* scriptExecutionContext() const;
 
+        bool printDeferred() const { return m_printDeferred; }
         Frame* frame() const { return m_frame; }
         void disconnectFrame();
 
@@ -397,6 +398,7 @@ namespace WebCore {
         RefPtr<SecurityOrigin> m_securityOrigin;
         KURL m_url;
 
+        bool m_printDeferred;
         Frame* m_frame;
         mutable RefPtr<Screen> m_screen;
         mutable RefPtr<DOMSelection> m_selection;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list