Diff
Modified: branches/safari-536-branch/Source/WebCore/ChangeLog (118429 => 118430)
--- branches/safari-536-branch/Source/WebCore/ChangeLog 2012-05-24 22:21:47 UTC (rev 118429)
+++ branches/safari-536-branch/Source/WebCore/ChangeLog 2012-05-24 22:22:44 UTC (rev 118430)
@@ -1,5 +1,31 @@
2012-05-24 Lucas Forschler <[email protected]>
+ Merge 118086
+
+ 2012-05-22 Tim Horton <[email protected]>
+
+ Add a quirk for applications that depend on the relative ordering of progressCompleted/didFinishLoad
+ https://bugs.webkit.org/show_bug.cgi?id=87178
+ <rdar://problem/11468434>
+
+ Reviewed by Maciej Stachowiak.
+
+ Some applications depend on the relative ordering of progressCompleted/didFinishLoad, which was changed
+ to be more correct in http://trac.webkit.org/changeset/94105. For applications built before 94105, we can
+ provide the old behavior. For the time being, this will only apply to Mail.app.
+
+ No new tests, will not affect behavior for any application except Mail.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::checkLoadCompleteForThisFrame):
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+ * page/Settings.h:
+ (WebCore::Settings::setNeedsDidFinishLoadOrderQuirk):
+ (WebCore::Settings::needsDidFinishLoadOrderQuirk):
+
+2012-05-24 Lucas Forschler <[email protected]>
+
Merge 117471
2012-05-16 Andreas Kling <[email protected]>
Modified: branches/safari-536-branch/Source/WebCore/loader/FrameLoader.cpp (118429 => 118430)
--- branches/safari-536-branch/Source/WebCore/loader/FrameLoader.cpp 2012-05-24 22:21:47 UTC (rev 118429)
+++ branches/safari-536-branch/Source/WebCore/loader/FrameLoader.cpp 2012-05-24 22:22:44 UTC (rev 118430)
@@ -2019,6 +2019,8 @@
{
ASSERT(m_client->hasWebView());
+ Settings* settings = m_frame->settings();
+
switch (m_state) {
case FrameStateProvisional: {
if (m_delegateIsHandlingProvisionalLoadError)
@@ -2093,11 +2095,13 @@
if (m_stateMachine.creatingInitialEmptyDocument() || !m_stateMachine.committedFirstRealDocumentLoad())
return;
- if (Page* page = m_frame->page()) {
- page->progress()->progressCompleted(m_frame);
+ if (!settings->needsDidFinishLoadOrderQuirk()) {
+ if (Page* page = m_frame->page()) {
+ page->progress()->progressCompleted(m_frame);
- if (m_frame == page->mainFrame())
- page->resetRelevantPaintedObjectCounter();
+ if (m_frame == page->mainFrame())
+ page->resetRelevantPaintedObjectCounter();
+ }
}
const ResourceError& error = dl->mainDocumentError();
@@ -2111,6 +2115,15 @@
loadingEvent = AXObjectCache::AXLoadingFinished;
}
+ if (settings->needsDidFinishLoadOrderQuirk()) {
+ if (Page* page = m_frame->page()) {
+ page->progress()->progressCompleted(m_frame);
+
+ if (m_frame == page->mainFrame())
+ page->resetRelevantPaintedObjectCounter();
+ }
+ }
+
// Notify accessibility.
if (AXObjectCache::accessibilityEnabled())
m_frame->document()->axObjectCache()->frameLoadingEventNotification(m_frame, loadingEvent);
Modified: branches/safari-536-branch/Source/WebCore/page/Settings.cpp (118429 => 118430)
--- branches/safari-536-branch/Source/WebCore/page/Settings.cpp 2012-05-24 22:21:47 UTC (rev 118429)
+++ branches/safari-536-branch/Source/WebCore/page/Settings.cpp 2012-05-24 22:22:44 UTC (rev 118430)
@@ -264,6 +264,7 @@
, m_threadedAnimationEnabled(false)
, m_shouldRespectImageOrientation(false)
, m_wantsBalancedSetDefersLoadingBehavior(false)
+ , m_needsDidFinishLoadOrderQuirk(false)
, m_loadsImagesAutomaticallyTimer(this, &Settings::loadsImagesAutomaticallyTimerFired)
, m_incrementalRenderingSuppressionTimeoutInSeconds(defaultIncrementalRenderingSuppressionTimeoutInSeconds)
{
Modified: branches/safari-536-branch/Source/WebCore/page/Settings.h (118429 => 118430)
--- branches/safari-536-branch/Source/WebCore/page/Settings.h 2012-05-24 22:21:47 UTC (rev 118429)
+++ branches/safari-536-branch/Source/WebCore/page/Settings.h 2012-05-24 22:22:44 UTC (rev 118430)
@@ -558,6 +558,9 @@
void setIncrementalRenderingSuppressionTimeoutInSeconds(double timeout) { m_incrementalRenderingSuppressionTimeoutInSeconds = timeout; }
double incrementalRenderingSuppressionTimeoutInSeconds() const { return m_incrementalRenderingSuppressionTimeoutInSeconds; }
+ void setNeedsDidFinishLoadOrderQuirk(bool needsQuirk) { m_needsDidFinishLoadOrderQuirk = needsQuirk; }
+ bool needsDidFinishLoadOrderQuirk() const { return m_needsDidFinishLoadOrderQuirk; }
+
#if USE(JSC)
static void setShouldRespectPriorityInCSSAttributeSetters(bool);
static bool shouldRespectPriorityInCSSAttributeSetters();
@@ -721,6 +724,7 @@
bool m_threadedAnimationEnabled : 1;
bool m_shouldRespectImageOrientation : 1;
bool m_wantsBalancedSetDefersLoadingBehavior : 1;
+ bool m_needsDidFinishLoadOrderQuirk : 1;
Timer<Settings> m_loadsImagesAutomaticallyTimer;
void loadsImagesAutomaticallyTimerFired(Timer<Settings>*);
Modified: branches/safari-536-branch/Source/WebKit/mac/ChangeLog (118429 => 118430)
--- branches/safari-536-branch/Source/WebKit/mac/ChangeLog 2012-05-24 22:21:47 UTC (rev 118429)
+++ branches/safari-536-branch/Source/WebKit/mac/ChangeLog 2012-05-24 22:22:44 UTC (rev 118430)
@@ -1,3 +1,24 @@
+2012-05-24 Lucas Forschler <[email protected]>
+
+ Merge 118086
+
+ 2012-05-22 Tim Horton <[email protected]>
+
+ Add a quirk for applications that depend on the relative ordering of progressCompleted/didFinishLoad
+ https://bugs.webkit.org/show_bug.cgi?id=87178
+ <rdar://problem/11468434>
+
+ Reviewed by Maciej Stachowiak.
+
+ Add plumbing for the quirk to flip the relative ordering of progressCompleted/didFinishLoad back
+ to the behavior before http://trac.webkit.org/changeset/94105. Make it apply to any Mail.app linked
+ against WebKit before that revision.
+
+ * Misc/WebKitVersionChecks.h:
+ * WebView/WebView.mm:
+ (-[WebView _needsDidFinishLoadOrderQuirk]):
+ (-[WebView _preferencesChanged:]):
+
2012-05-21 Lucas Forschler <[email protected]>
Merge 117510
Modified: branches/safari-536-branch/Source/WebKit/mac/Misc/WebKitVersionChecks.h (118429 => 118430)
--- branches/safari-536-branch/Source/WebKit/mac/Misc/WebKitVersionChecks.h 2012-05-24 22:21:47 UTC (rev 118429)
+++ branches/safari-536-branch/Source/WebKit/mac/Misc/WebKitVersionChecks.h 2012-05-24 22:22:44 UTC (rev 118430)
@@ -56,6 +56,7 @@
#define WEBKIT_FIRST_VERSION_WITHOUT_LINK_ELEMENT_TEXT_CSS_QUIRK 0x02130200 // 531.2.0
#define WEBKIT_FIRST_VERSION_WITH_HTML5_PARSER 0x02160900 // 534.9.0
#define WEBKIT_FIRST_VERSION_WITH_GET_MATCHED_CSS_RULES_RESTRICTIONS 0x02160B00 // 534.11.0
+#define WEBKIT_FIRST_VERSION_WITH_CORRECT_DID_FINISH_LOAD_ORDER 0x02170304 // 535.3.4
#define WEBKIT_FIRST_VERSION_WITH_CSS_ATTRIBUTE_SETTERS_IGNORING_PRIORITY 0x02170D00 // 535.13.0
#ifdef __cplusplus
Modified: branches/safari-536-branch/Source/WebKit/mac/WebView/WebView.mm (118429 => 118430)
--- branches/safari-536-branch/Source/WebKit/mac/WebView/WebView.mm 2012-05-24 22:21:47 UTC (rev 118429)
+++ branches/safari-536-branch/Source/WebKit/mac/WebView/WebView.mm 2012-05-24 22:22:44 UTC (rev 118430)
@@ -1352,6 +1352,12 @@
return needsQuirk;
}
+static bool needsDidFinishLoadOrderQuirk()
+{
+ static bool needsQuirk = !WebKitLinkedOnOrAfter(WEBKIT_FIRST_VERSION_WITH_CORRECT_DID_FINISH_LOAD_ORDER) && applicationIsAppleMail();
+ return needsQuirk;
+}
+
static bool needsSelfRetainWhileLoadingQuirk()
{
static bool needsQuirk = applicationIsAperture();
@@ -1532,6 +1538,7 @@
settings->setShouldRespectImageOrientation([preferences shouldRespectImageOrientation]);
settings->setNeedsIsLoadingInAPISenseQuirk([self _needsIsLoadingInAPISenseQuirk]);
+ settings->setNeedsDidFinishLoadOrderQuirk(needsDidFinishLoadOrderQuirk());
NSTimeInterval timeout = [preferences incrementalRenderingSuppressionTimeoutInSeconds];
if (timeout > 0)