Changeset 228612 in webkit


Ignore:
Timestamp:
Feb 19, 2018 12:25:47 AM (6 years ago)
Author:
Carlos Garcia Campos
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.
Location:
releases/WebKitGTK/webkit-2.20
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • releases/WebKitGTK/webkit-2.20/LayoutTests/ChangeLog

    r228611 r228612  
     12018-02-05  Antti Koivisto  <antti@apple.com>
     2
     3        Crash on sfgate.com because mismatching link preload types
     4        https://bugs.webkit.org/show_bug.cgi?id=182483
     5        <rdar://problem/37065331>
     6
     7        Reviewed by Daniel Bates.
     8
     9        * http/tests/preload/link-preload-type-mismatch-expected.txt: Added.
     10        * http/tests/preload/link-preload-type-mismatch.html: Added.
     11
    1122018-02-05  Manuel Rego Casasnovas  <rego@igalia.com>
    213
  • releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog

    r228611 r228612  
     12018-02-05  Antti Koivisto  <antti@apple.com>
     2
     3        Crash on sfgate.com because mismatching link preload types
     4        https://bugs.webkit.org/show_bug.cgi?id=182483
     5        <rdar://problem/37065331>
     6
     7        Reviewed by Daniel Bates.
     8
     9        Preloading the same URL with different 'as' types causes some confusion.
     10
     11        Test: http/tests/preload/link-preload-type-mismatch.html
     12
     13        * loader/LinkLoader.cpp:
     14        (WebCore::createLinkPreloadResourceClient):
     15
     16            Ensure we use the actual resource type when creating the client.
     17
     18        (WebCore::LinkLoader::preloadIfNeeded):
     19
     20            Don't construct client if the types don't match. This can happen if there is an existing
     21            preload for the same resource with different type.
     22
    1232018-02-05  Manuel Rego Casasnovas  <rego@igalia.com>
    224
  • releases/WebKitGTK/webkit-2.20/Source/WebCore/loader/LinkLoader.cpp

    r227261 r228612  
    136136}
    137137
    138 static std::unique_ptr<LinkPreloadResourceClient> createLinkPreloadResourceClient(CachedResource& resource, LinkLoader& loader, CachedResource::Type type)
    139 {
    140     switch (type) {
     138static std::unique_ptr<LinkPreloadResourceClient> createLinkPreloadResourceClient(CachedResource& resource, LinkLoader& loader)
     139{
     140    switch (resource.type()) {
    141141    case CachedResource::ImageResource:
    142142        return LinkPreloadImageResourceClient::create(loader, static_cast<CachedImage&>(resource));
     
    240240    auto cachedLinkResource = document.cachedResourceLoader().preload(type.value(), WTFMove(linkRequest)).value_or(nullptr);
    241241
     242    if (cachedLinkResource && cachedLinkResource->type() != *type)
     243        return nullptr;
     244
    242245    if (cachedLinkResource && loader)
    243         return createLinkPreloadResourceClient(*cachedLinkResource, *loader, type.value());
     246        return createLinkPreloadResourceClient(*cachedLinkResource, *loader);
    244247    return nullptr;
    245248}
Note: See TracChangeset for help on using the changeset viewer.