REGRESSION (r182449, Mavericks ONLY): Pages re-open empty after swiping back and...
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 18 Sep 2015 19:31:45 +0000 (19:31 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 18 Sep 2015 19:31:45 +0000 (19:31 +0000)
https://bugs.webkit.org/show_bug.cgi?id=149317
<rdar://problem/22521514>

Reviewed by Tim Horton.

Source/WebCore:

Disable on Mavericks a PageCache optimization from r182449 which lets
into PageCache pages that only have certain types of pending loads
(images and XHR). This is because it has been determined via bisection
that this change is the one that introduced the bug on Mavericks.

* loader/DocumentLoader.cpp:
(WebCore::areAllLoadersPageCacheAcceptable):

LayoutTests:

Skip a couple of PageCache layout tests on Mavericks now that a PageCache
optimization has been disabled.

* platform/mac/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@189976 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/platform/mac/TestExpectations
Source/WebCore/ChangeLog
Source/WebCore/loader/DocumentLoader.cpp

index 62362bf..a5408d3 100644 (file)
@@ -1,3 +1,16 @@
+2015-09-18  Chris Dumez  <cdumez@apple.com>
+
+        REGRESSION (r182449, Mavericks ONLY): Pages re-open empty after swiping back and scrolling on them
+        https://bugs.webkit.org/show_bug.cgi?id=149317
+        <rdar://problem/22521514>
+
+        Reviewed by Tim Horton.
+
+        Skip a couple of PageCache layout tests on Mavericks now that a PageCache
+        optimization has been disabled.
+
+        * platform/mac/TestExpectations:
+
 2015-09-18  Zalan Bujtas  <zalan@apple.com>
 
         Unreviewed iOS gardening.
index 9738f6d..918cbad 100644 (file)
@@ -263,6 +263,11 @@ css3/font-feature-settings-rendering.html
 
 webkit.org/b/149246 [ Mavericks ] css3/font-feature-settings-rendering-2.html
 
+# This feature is disabled on Mavericks.
+[ Mavericks ] http/tests/navigation/page-cache-pending-image-load.html [ Skip ]
+[ Mavericks ] http/tests/navigation/page-cache-pending-image-load-cache-partition.html [ Skip ]
+[ Mavericks ] http/tests/navigation/page-cache-xhr.html [ Skip ]
+
 webkit.org/b/68278 http/tests/history/back-with-fragment-change.php [ Failure ]
 
 # Skip because this platform does not support a paging mouse wheel event
index 125d286..5fc062a 100644 (file)
@@ -1,3 +1,19 @@
+2015-09-18  Chris Dumez  <cdumez@apple.com>
+
+        REGRESSION (r182449, Mavericks ONLY): Pages re-open empty after swiping back and scrolling on them
+        https://bugs.webkit.org/show_bug.cgi?id=149317
+        <rdar://problem/22521514>
+
+        Reviewed by Tim Horton.
+
+        Disable on Mavericks a PageCache optimization from r182449 which lets
+        into PageCache pages that only have certain types of pending loads
+        (images and XHR). This is because it has been determined via bisection
+        that this change is the one that introduced the bug on Mavericks.
+
+        * loader/DocumentLoader.cpp:
+        (WebCore::areAllLoadersPageCacheAcceptable):
+
 2015-09-18  Brent Fulgham  <bfulgham@apple.com>
 
         [Win] Use tiled drawing for main background layer
index 29ca8ea..648bbea 100644 (file)
@@ -95,6 +95,7 @@ static void setAllDefersLoading(const ResourceLoaderMap& loaders, bool defers)
         loader->setDefersLoading(defers);
 }
 
+#if !PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
 static bool areAllLoadersPageCacheAcceptable(const ResourceLoaderMap& loaders)
 {
     Vector<RefPtr<ResourceLoader>> loadersCopy;
@@ -114,6 +115,7 @@ static bool areAllLoadersPageCacheAcceptable(const ResourceLoaderMap& loaders)
     }
     return true;
 }
+#endif
 
 DocumentLoader::DocumentLoader(const ResourceRequest& req, const SubstituteData& substituteData)
     : m_deferMainResourceDataLoad(true)
@@ -286,8 +288,11 @@ void DocumentLoader::stopLoading()
     // loading but there are subresource loads during cancellation. This must be done before the
     // frame->stopLoading() call, which may evict the CachedResources, which we rely on to check
     // the type of the resource loads.
+#if !PLATFORM(MAC) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
+    // Disabled on Mavericks because it seems to cause issues (rdar://problem/22521514).
     if (loading && m_committed && !mainResourceLoader() && !m_subresourceLoaders.isEmpty())
         m_subresourceLoadersArePageCacheAcceptable = areAllLoadersPageCacheAcceptable(m_subresourceLoaders);
+#endif
 
     if (m_committed) {
         // Attempt to stop the frame if the document loader is loading, or if it is done loading but