Title: [107995] trunk/Source
Revision
107995
Author
beid...@apple.com
Date
2012-02-16 16:26:03 -0800 (Thu, 16 Feb 2012)

Log Message

<rdar://problem/10616280> and https://bugs.webkit.org/show_bug.cgi?id=78767
REGRESSION (r90471) - iAd Producer 2.0.1 produces blank pages

Reviewed by Sam Weinig.

Source/WebCore:

No new tests. (Subtle API change attached to a specific application)

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::isLoadingInAPISense): Return true if the app needs the quirk
and there are outstanding subresource loads.

* page/Settings.cpp:
(WebCore::Settings::Settings):
* page/Settings.h:
(WebCore::Settings::setNeedsIsLoadingInAPISenseQuirk):
(WebCore::Settings::needsIsLoadingInAPISenseQuirk):
(Settings):

Source/WebKit/mac:

* WebView/WebView.mm:
(-[WebView _needsIsLoadingInAPISenseQuirk]):
(-[WebView _preferencesChanged:]):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (107994 => 107995)


--- trunk/Source/WebCore/ChangeLog	2012-02-17 00:10:19 UTC (rev 107994)
+++ trunk/Source/WebCore/ChangeLog	2012-02-17 00:26:03 UTC (rev 107995)
@@ -1,3 +1,23 @@
+2012-02-16  Brady Eidson  <beid...@apple.com>
+
+        <rdar://problem/10616280> and https://bugs.webkit.org/show_bug.cgi?id=78767
+        REGRESSION (r90471) - iAd Producer 2.0.1 produces blank pages
+
+        Reviewed by Sam Weinig.
+
+        No new tests. (Subtle API change attached to a specific application)
+
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::isLoadingInAPISense): Return true if the app needs the quirk
+        and there are outstanding subresource loads.
+
+        * page/Settings.cpp:
+        (WebCore::Settings::Settings):
+        * page/Settings.h:
+        (WebCore::Settings::setNeedsIsLoadingInAPISenseQuirk):
+        (WebCore::Settings::needsIsLoadingInAPISenseQuirk):
+        (Settings):
+
 2012-02-16  Kentaro Hara  <hara...@chromium.org>
 
         Remove [ConvertScriptString] from FileReaderSync.idl

Modified: trunk/Source/WebCore/loader/DocumentLoader.cpp (107994 => 107995)


--- trunk/Source/WebCore/loader/DocumentLoader.cpp	2012-02-17 00:10:19 UTC (rev 107994)
+++ trunk/Source/WebCore/loader/DocumentLoader.cpp	2012-02-17 00:26:03 UTC (rev 107995)
@@ -448,6 +448,9 @@
     // Once a frame has loaded, we no longer need to consider subresources,
     // but we still need to consider subframes.
     if (frameLoader()->state() != FrameStateComplete) {
+        if (m_frame->settings()->needsIsLoadingInAPISenseQuirk() && !m_subresourceLoaders.isEmpty())
+            return true;
+    
         Document* doc = m_frame->document();
         if ((!m_primaryLoadComplete || !m_frame->document()->loadEventFinished()) && isLoading())
             return true;

Modified: trunk/Source/WebCore/page/Settings.cpp (107994 => 107995)


--- trunk/Source/WebCore/page/Settings.cpp	2012-02-17 00:10:19 UTC (rev 107994)
+++ trunk/Source/WebCore/page/Settings.cpp	2012-02-17 00:26:03 UTC (rev 107995)
@@ -241,6 +241,7 @@
     , m_scrollingCoordinatorEnabled(false)
 #endif
     , m_notificationsEnabled(true)
+    , m_needsIsLoadingInAPISenseQuirk(false)
 #if ENABLE(TOUCH_EVENTS)
     , m_touchEventEmulationEnabled(false)
 #endif

Modified: trunk/Source/WebCore/page/Settings.h (107994 => 107995)


--- trunk/Source/WebCore/page/Settings.h	2012-02-17 00:10:19 UTC (rev 107994)
+++ trunk/Source/WebCore/page/Settings.h	2012-02-17 00:26:03 UTC (rev 107995)
@@ -526,6 +526,10 @@
         void setNotificationsEnabled(bool enabled) { m_notificationsEnabled = enabled; }
         bool notificationsEnabled() const { return m_notificationsEnabled; }
 
+        // Some apps needs isLoadingInAPISense to account for active subresource loaders.
+        void setNeedsIsLoadingInAPISenseQuirk(bool enabled) { m_needsIsLoadingInAPISenseQuirk = enabled; }
+        bool needsIsLoadingInAPISenseQuirk() const { return m_needsIsLoadingInAPISenseQuirk; }
+
 #if ENABLE(TOUCH_EVENTS)
         void setTouchEventEmulationEnabled(bool enabled) { m_touchEventEmulationEnabled = enabled; }
         bool isTouchEventEmulationEnabled() const { return m_touchEventEmulationEnabled; }
@@ -677,6 +681,7 @@
 #endif
 
         bool m_notificationsEnabled : 1;
+        bool m_needsIsLoadingInAPISenseQuirk : 1;
 
 #if ENABLE(TOUCH_EVENTS)
         bool m_touchEventEmulationEnabled : 1;

Modified: trunk/Source/WebKit/mac/ChangeLog (107994 => 107995)


--- trunk/Source/WebKit/mac/ChangeLog	2012-02-17 00:10:19 UTC (rev 107994)
+++ trunk/Source/WebKit/mac/ChangeLog	2012-02-17 00:26:03 UTC (rev 107995)
@@ -1,3 +1,14 @@
+2012-02-16  Brady Eidson  <beid...@apple.com>
+
+        <rdar://problem/10616280> and https://bugs.webkit.org/show_bug.cgi?id=78767
+        REGRESSION (r90471) - iAd Producer 2.0.1 produces blank pages
+
+        Reviewed by Sam Weinig.
+
+        * WebView/WebView.mm:
+        (-[WebView _needsIsLoadingInAPISenseQuirk]):
+        (-[WebView _preferencesChanged:]):
+
 2012-02-15  Enrica Casucci  <enr...@apple.com>
 
         Refactor ClipboardMac class to use PlatformStrategies.

Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (107994 => 107995)


--- trunk/Source/WebKit/mac/WebView/WebView.mm	2012-02-17 00:10:19 UTC (rev 107994)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm	2012-02-17 00:26:03 UTC (rev 107995)
@@ -1322,6 +1322,13 @@
     return needsQuirk;
 }
 
+- (BOOL)_needsIsLoadingInAPISenseQuirk
+{
+    static BOOL needsQuirk = WKAppVersionCheckLessThan(@"com.apple.iAdProducer", -1, 2.1);
+    
+    return needsQuirk;
+}
+
 - (BOOL)_needsKeyboardEventDisambiguationQuirks
 {
     static BOOL needsQuirks = !WebKitLinkedOnOrAfter(WEBKIT_FIRST_VERSION_WITH_IE_COMPATIBLE_KEYBOARD_EVENT_DISPATCH) && !applicationIsSafari();
@@ -1509,6 +1516,8 @@
     settings->setShouldDisplayTextDescriptions([preferences shouldDisplayTextDescriptions]);
 #endif
 
+    settings->setNeedsIsLoadingInAPISenseQuirk([self _needsIsLoadingInAPISenseQuirk]);
+
     // Application Cache Preferences are stored on the global cache storage manager, not in Settings.
     [WebApplicationCache setDefaultOriginQuota:[preferences applicationCacheDefaultOriginQuota]];
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to