Title: [228612] releases/WebKitGTK/webkit-2.20
Revision
228612
Author
carlo...@webkit.org
Date
2018-02-19 00:25:47 -0800 (Mon, 19 Feb 2018)

Log Message

Merge r228096 - Crash on sfgate.com because mismatching link preload types
https://bugs.webkit.org/show_bug.cgi?id=182483
<rdar://problem/37065331>

Reviewed by Daniel Bates.

Source/WebCore:

Preloading the same URL with different 'as' types causes some confusion.

Test: http/tests/preload/link-preload-type-mismatch.html

* loader/LinkLoader.cpp:
(WebCore::createLinkPreloadResourceClient):

    Ensure we use the actual resource type when creating the client.

(WebCore::LinkLoader::preloadIfNeeded):

    Don't construct client if the types don't match. This can happen if there is an existing
    preload for the same resource with different type.

LayoutTests:

* http/tests/preload/link-preload-type-mismatch-expected.txt: Added.
* http/tests/preload/link-preload-type-mismatch.html: Added.

Modified Paths

Added Paths

Diff

Modified: releases/WebKitGTK/webkit-2.20/LayoutTests/ChangeLog (228611 => 228612)


--- releases/WebKitGTK/webkit-2.20/LayoutTests/ChangeLog	2018-02-19 08:23:40 UTC (rev 228611)
+++ releases/WebKitGTK/webkit-2.20/LayoutTests/ChangeLog	2018-02-19 08:25:47 UTC (rev 228612)
@@ -1,3 +1,14 @@
+2018-02-05  Antti Koivisto  <an...@apple.com>
+
+        Crash on sfgate.com because mismatching link preload types
+        https://bugs.webkit.org/show_bug.cgi?id=182483
+        <rdar://problem/37065331>
+
+        Reviewed by Daniel Bates.
+
+        * http/tests/preload/link-preload-type-mismatch-expected.txt: Added.
+        * http/tests/preload/link-preload-type-mismatch.html: Added.
+
 2018-02-05  Manuel Rego Casasnovas  <r...@igalia.com>
 
         [css-grid] Rename gutter properties to remove "grid-" prefix

Added: releases/WebKitGTK/webkit-2.20/LayoutTests/http/tests/preload/link-preload-type-mismatch-expected.txt (0 => 228612)


--- releases/WebKitGTK/webkit-2.20/LayoutTests/http/tests/preload/link-preload-type-mismatch-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.20/LayoutTests/http/tests/preload/link-preload-type-mismatch-expected.txt	2018-02-19 08:25:47 UTC (rev 228612)
@@ -0,0 +1 @@
+Test mismatching preload types. The test passes if it doesn't crash or assert.

Added: releases/WebKitGTK/webkit-2.20/LayoutTests/http/tests/preload/link-preload-type-mismatch.html (0 => 228612)


--- releases/WebKitGTK/webkit-2.20/LayoutTests/http/tests/preload/link-preload-type-mismatch.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-2.20/LayoutTests/http/tests/preload/link-preload-type-mismatch.html	2018-02-19 08:25:47 UTC (rev 228612)
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<script>
+if (window.testRunner) {
+    testRunner.dumpAsText()
+    testRunner.waitUntilDone();
+    window.addEventListener("load", function() {
+        testRunner.notifyDone();
+    });
+}
+</script>
+<link rel=preload href="" as=fetch>
+<link rel=preload href="" as=script>
+<body>
+Test mismatching preload types. The test passes if it doesn't crash or assert.
+<script src=""
+</body>

Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog (228611 => 228612)


--- releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog	2018-02-19 08:23:40 UTC (rev 228611)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog	2018-02-19 08:25:47 UTC (rev 228612)
@@ -1,3 +1,25 @@
+2018-02-05  Antti Koivisto  <an...@apple.com>
+
+        Crash on sfgate.com because mismatching link preload types
+        https://bugs.webkit.org/show_bug.cgi?id=182483
+        <rdar://problem/37065331>
+
+        Reviewed by Daniel Bates.
+
+        Preloading the same URL with different 'as' types causes some confusion.
+
+        Test: http/tests/preload/link-preload-type-mismatch.html
+
+        * loader/LinkLoader.cpp:
+        (WebCore::createLinkPreloadResourceClient):
+
+            Ensure we use the actual resource type when creating the client.
+
+        (WebCore::LinkLoader::preloadIfNeeded):
+
+            Don't construct client if the types don't match. This can happen if there is an existing
+            preload for the same resource with different type.
+
 2018-02-05  Manuel Rego Casasnovas  <r...@igalia.com>
 
         [css-grid] Rename gutter properties to remove "grid-" prefix

Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/loader/LinkLoader.cpp (228611 => 228612)


--- releases/WebKitGTK/webkit-2.20/Source/WebCore/loader/LinkLoader.cpp	2018-02-19 08:23:40 UTC (rev 228611)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/loader/LinkLoader.cpp	2018-02-19 08:25:47 UTC (rev 228612)
@@ -135,9 +135,9 @@
     return std::nullopt;
 }
 
-static std::unique_ptr<LinkPreloadResourceClient> createLinkPreloadResourceClient(CachedResource& resource, LinkLoader& loader, CachedResource::Type type)
+static std::unique_ptr<LinkPreloadResourceClient> createLinkPreloadResourceClient(CachedResource& resource, LinkLoader& loader)
 {
-    switch (type) {
+    switch (resource.type()) {
     case CachedResource::ImageResource:
         return LinkPreloadImageResourceClient::create(loader, static_cast<CachedImage&>(resource));
     case CachedResource::Script:
@@ -239,8 +239,11 @@
     linkRequest.setAsPotentiallyCrossOrigin(crossOriginMode, document);
     auto cachedLinkResource = document.cachedResourceLoader().preload(type.value(), WTFMove(linkRequest)).value_or(nullptr);
 
+    if (cachedLinkResource && cachedLinkResource->type() != *type)
+        return nullptr;
+
     if (cachedLinkResource && loader)
-        return createLinkPreloadResourceClient(*cachedLinkResource, *loader, type.value());
+        return createLinkPreloadResourceClient(*cachedLinkResource, *loader);
     return nullptr;
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to