Title: [118430] branches/safari-536-branch/Source

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)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to