[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