Changeset 248961 in webkit


Ignore:
Timestamp:
Aug 21, 2019 1:26:54 PM (5 years ago)
Author:
commit-queue@webkit.org
Message:

Verify Prefetch and credential behavior
https://bugs.webkit.org/show_bug.cgi?id=200000

Patch by Rob Buis <rbuis@igalia.com> on 2019-08-21
Reviewed by Youenn Fablet.

Source/WebKit:

Cancel cross-origin prefetches for Vary: Cookie.

Test: http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie.html

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::didReceiveResponse):

  • NetworkProcess/cache/PrefetchCache.cpp:

(WebKit::PrefetchCache::take):

LayoutTests:

Add a test to verify that navigating to a prefetched main resource
that sets Vary: Cookie does send cookies.

  • http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie-expected.txt: Added.
  • http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie.html: Added.
  • http/wpt/prefetch/resources/main-resource-cross-origin-set-cookie.py: Added.

(main):

  • http/wpt/prefetch/resources/main-resource-cross-origin-vary-cookie.py: Added.

(main):

  • http/wpt/prefetch/resources/navigate-cross-origin-vary-cookie.html: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
Location:
trunk
Files:
5 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r248960 r248961  
     12019-08-21  Rob Buis  <rbuis@igalia.com>
     2
     3        Verify Prefetch and credential behavior
     4        https://bugs.webkit.org/show_bug.cgi?id=200000
     5
     6        Reviewed by Youenn Fablet.
     7
     8        Add a test to verify that navigating to a prefetched main resource
     9        that sets Vary: Cookie does send cookies.
     10
     11        * http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie-expected.txt: Added.
     12        * http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie.html: Added.
     13        * http/wpt/prefetch/resources/main-resource-cross-origin-set-cookie.py: Added.
     14        (main):
     15        * http/wpt/prefetch/resources/main-resource-cross-origin-vary-cookie.py: Added.
     16        (main):
     17        * http/wpt/prefetch/resources/navigate-cross-origin-vary-cookie.html: Added.
     18        * platform/mac-wk1/TestExpectations:
     19        * platform/win/TestExpectations:
     20
    1212019-08-21  Ryosuke Niwa  <rniwa@webkit.org>
    222
  • trunk/LayoutTests/platform/mac-wk1/TestExpectations

    r248953 r248961  
    737737webkit.org/b/195623 http/tests/cache/link-prefetch-main-resource-iframe.html [ Skip ]
    738738
    739 webkit.org/b/197371 http/wpt/prefetch/link-prefetch-main-resource-redirect.html [ Skip ]
    740 webkit.org/b/199499 http/wpt/prefetch/link-prefetch-skip-disk-cache.html [ Skip ]
    741 
    742 webkit.org/b/199632 http/wpt/prefetch/beforeload.html [ Skip ]
    743 webkit.org/b/199632 http/wpt/prefetch/beforeload-dynamic.html [ Skip ]
     739# prefetch not supported in WK1
     740http/wpt/prefetch [ Skip ]
    744741
    745742webkit.org/b/198177 pointerevents/mouse/compatibility-mouse-events-prevention-mouse-pressed.html [ Skip ]
  • trunk/LayoutTests/platform/win/TestExpectations

    r248953 r248961  
    44234423webkit.org/b/195623 http/tests/cache/link-prefetch-main-resource-iframe.html [ Skip ]
    44244424
    4425 webkit.org/b/197371 http/wpt/prefetch/link-prefetch-main-resource-redirect.html [ Skip ]
    4426 webkit.org/b/199499 http/wpt/prefetch/link-prefetch-skip-disk-cache.html [ Skip ]
    4427 
    4428 webkit.org/b/199632 http/wpt/prefetch/beforeload.html [ Skip ]
    4429 webkit.org/b/199632 http/wpt/prefetch/beforeload-dynamic.html [ Skip ]
     4425# prefetch not supported in WK1
     4426http/wpt/prefetch [ Skip ]
    44304427
    44314428webkit.org/b/198112 http/tests/security/showModalDialog-sync-cross-origin-page-load2.html [ Skip ]
  • trunk/Source/WebKit/ChangeLog

    r248960 r248961  
     12019-08-21  Rob Buis  <rbuis@igalia.com>
     2
     3        Verify Prefetch and credential behavior
     4        https://bugs.webkit.org/show_bug.cgi?id=200000
     5
     6        Reviewed by Youenn Fablet.
     7
     8        Cancel cross-origin prefetches for Vary: Cookie.
     9
     10        Test: http/wpt/prefetch/link-prefetch-cross-origin-vary-cookie.html
     11
     12        * NetworkProcess/NetworkResourceLoader.cpp:
     13        (WebKit::NetworkResourceLoader::retrieveCacheEntry):
     14        (WebKit::NetworkResourceLoader::didReceiveResponse):
     15        * NetworkProcess/cache/PrefetchCache.cpp:
     16        (WebKit::PrefetchCache::take):
     17
    1182019-08-21  Ryosuke Niwa  <rniwa@webkit.org>
    219
  • trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp

    r248953 r248961  
    222222        if (auto* session = m_connection->networkProcess().networkSession(sessionID())) {
    223223            if (auto entry = session->prefetchCache().take(request.url())) {
    224                 // FIXME: Deal with credentials (https://bugs.webkit.org/show_bug.cgi?id=200000)
    225224                if (!entry->redirectRequest.isNull()) {
    226225                    auto cacheEntry = m_cache->makeRedirectEntry(request, entry->response, entry->redirectRequest);
     
    501500    }
    502501
    503     if (isCrossOriginPrefetch())
     502    if (isCrossOriginPrefetch()) {
     503        if (response.httpHeaderField(HTTPHeaderName::Vary).contains("Cookie")) {
     504            abort();
     505            return completionHandler(PolicyAction::Ignore);
     506        }
    504507        return completionHandler(PolicyAction::Use);
     508    }
    505509
    506510    // We wait to receive message NetworkResourceLoader::ContinueDidReceiveResponse before continuing a load for
  • trunk/Source/WebKit/NetworkProcess/cache/PrefetchCache.cpp

    r248953 r248961  
    6666        return std::get<0>(tuple) == url;
    6767    });
    68     return resources->take(url);
     68    auto entry = resources->take(url);
     69    ASSERT(!entry || !entry->response.httpHeaderField(WebCore::HTTPHeaderName::Vary).contains("Cookie"));
     70    return entry;
    6971}
    7072
Note: See TracChangeset for help on using the changeset viewer.