[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.15.1-1414-gc69ee75
tonikitoo at webkit.org
tonikitoo at webkit.org
Thu Oct 29 20:43:45 UTC 2009
The following commit has been merged in the webkit-1.1 branch:
commit 3c481384006cdaa61a1efb7e504c4c4bbe702eca
Author: tonikitoo at webkit.org <tonikitoo at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Oct 13 10:57:13 2009 +0000
[Qt] better handle possible edge cases on qwebframe::requestedUrl use
https://bugs.webkit.org/show_bug.cgi?id=30216
Patch by Antonio Gomes <tonikitoo at webkit.org> on 2009-10-13
Reviewed by Simon Hausmann.
QWebFrame::requestedUrl can be called at any time during the load
process, including:
* An error handling (whereas an alternate error page for unsuccessful
load is being set);
* A ssl error exception call;
* Navigation notifications (titleChanged, urlChanged, progresses,
addHistoryEntry, etc);
* Among others.
This patch makes requestedUrl calls to fallback to FrameLoaderClient
m_loadError's failingURL when an error has occurred, unless it is
null/empty.
Also, m_loadError is now being reset at each the main frame starts a
load, in order to avoid previous load errors footprints.
* Api/qwebframe.cpp:
(QWebFrame::requestedUrl):
* WebCoreSupport/FrameLoaderClientQt.cpp:
(WebCore::FrameLoaderClientQt::postProgressStartedNotification):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@49497 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit/qt/Api/qwebframe.cpp b/WebKit/qt/Api/qwebframe.cpp
index d710dcf..d2c324d 100644
--- a/WebKit/qt/Api/qwebframe.cpp
+++ b/WebKit/qt/Api/qwebframe.cpp
@@ -540,15 +540,26 @@ QUrl QWebFrame::url() const
*/
QUrl QWebFrame::requestedUrl() const
{
- // In the following edge cases (where the failing document
- // loader does not get commited by the frame loader) it is
- // safer to rely on outgoingReferrer than originalRequest.
- if (!d->frame->loader()->activeDocumentLoader()
- || (!d->frameLoaderClient->m_loadError.isNull()
- && !d->frame->loader()->outgoingReferrer().isEmpty()))
- return QUrl(d->frame->loader()->outgoingReferrer());
-
- return d->frame->loader()->originalRequest().url();
+ // There are some possible edge cases to be handled here,
+ // apart from checking if activeDocumentLoader is valid:
+ //
+ // * Method can be called while processing an unsucessful load.
+ // In this case, frameLoaderClient will hold the current error
+ // (m_loadError), and we will make use of it to recover the 'failingURL'.
+ // * If the 'failingURL' holds a null'ed string though, we fallback
+ // to 'outgoingReferrer' (it yet is safer than originalRequest).
+ FrameLoader* loader = d->frame->loader();
+ FrameLoaderClientQt* loaderClient = d->frameLoaderClient;
+
+ if (!loader->activeDocumentLoader()
+ || !loaderClient->m_loadError.isNull()) {
+ if (!loaderClient->m_loadError.failingURL().isNull())
+ return QUrl(loaderClient->m_loadError.failingURL());
+ else if (!loader->outgoingReferrer().isEmpty())
+ return QUrl(loader->outgoingReferrer());
+ }
+
+ return loader->originalRequest().url();
}
/*!
\since 4.6
diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
index 46487e8..bc13357 100644
--- a/WebKit/qt/ChangeLog
+++ b/WebKit/qt/ChangeLog
@@ -1,3 +1,32 @@
+2009-10-13 Antonio Gomes <tonikitoo at webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ [Qt] better handle possible edge cases on qwebframe::requestedUrl use
+ https://bugs.webkit.org/show_bug.cgi?id=30216
+
+ QWebFrame::requestedUrl can be called at any time during the load
+ process, including:
+
+ * An error handling (whereas an alternate error page for unsuccessful
+ load is being set);
+ * A ssl error exception call;
+ * During navigation notifications/callbacks (titleChanged, urlChanged,
+ progresses, addHistoryEntry, etc);
+ * Among others.
+
+ This patch makes requestedUrl calls to fallback to FrameLoaderClient
+ m_loadError's failingURL when an error has occurred, unless it is
+ null/empty.
+
+ Also, m_loadError is now being reset at each the main frame starts a
+ load, in order to avoid previous load errors footprints.
+
+ * Api/qwebframe.cpp:
+ (QWebFrame::requestedUrl):
+ * WebCoreSupport/FrameLoaderClientQt.cpp:
+ (WebCore::FrameLoaderClientQt::postProgressStartedNotification):
+
2009-10-12 Jakub Wieczorek <faw217 at gmail.com>
Reviewed by Simon Hausmann.
diff --git a/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
index 734296b..76c3941 100644
--- a/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
+++ b/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
@@ -378,7 +378,8 @@ void FrameLoaderClientQt::dispatchDidFinishLoad()
if (dumpFrameLoaderCallbacks)
printf("%s - didFinishLoadForFrame\n", qPrintable(drtDescriptionSuitableForTestResult(m_frame)));
- m_loadError = ResourceError(); // clears the previous error
+ // Clears the previous error.
+ m_loadError = ResourceError();
if (!m_webFrame)
return;
@@ -432,6 +433,8 @@ void FrameLoaderClientQt::revertToProvisionalState(DocumentLoader*)
void FrameLoaderClientQt::postProgressStartedNotification()
{
if (m_webFrame && m_frame->page()) {
+ // A new load starts, so lets clear the previous error.
+ m_loadError = ResourceError();
emit loadStarted();
postProgressEstimateChangedNotification();
}
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list