Changeset 183467 in webkit


Ignore:
Timestamp:
Apr 28, 2015 5:49:30 AM (9 years ago)
Author:
Antti Koivisto
Message:

Network Cache: Disk cache getting filled by YouTube video data
https://bugs.webkit.org/show_bug.cgi?id=144259

Reviewed by Darin Adler.

Source/WebCore:

MSE media is loaded via XHR and tends to eventually fill the cache.

YouTube serves the media chunks cacheable, however they are rarely (if ever) reused.
We can reduce disk writes and keep more useful resources around by not caching them

Test: http/tests/cache/disk-cache/disk-cache-media.html

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::startLoadingMainResource):

Set the requester.

  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::CachedRawResource):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::streamingMedia):

  • page/DiagnosticLoggingKeys.h:
  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::adopt):
(WebCore::ResourceRequestBase::copyData):
(WebCore::equalIgnoringHeaderFields):

  • platform/network/ResourceRequestBase.h:

(WebCore::ResourceRequestBase::requester):
(WebCore::ResourceRequestBase::setRequester):

Add requester type to the request object. Currently this is main resource, xhr or unspecified.

(WebCore::ResourceRequestBase::encodeWithoutPlatformData):
(WebCore::ResourceRequestBase::decodeWithoutPlatformData):

  • platform/network/cf/ResourceRequest.h:

(WebCore::ResourceRequest::deprecatedSetMainResourceRequest): Deleted.
(WebCore::ResourceRequest::deprecatedIsMainResourceRequest): Deleted.

Replace this iOS only field with shared mechanism.

  • platform/network/ios/QuickLook.mm:

(WebCore::QuickLookHandle::create):

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createRequest):

Set the requester.

Source/WebKit2:

MSE media is loaded via XHR and tends to eventually fill the cache.

YouTube serves the media chunks cacheable, however they are rarely (if ever) reused.
We can reduce disk writes and keep more useful resources around by not caching them

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didReceiveResponseAsync):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::makeStoreDecision):

Don't store if the requester is XHR and response has video or audio content type.

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStatistics.cpp:

(WebKit::NetworkCache::storeDecisionToDiagnosticKey):

  • Shared/Network/NetworkResourceLoadParameters.cpp:

(WebKit::NetworkResourceLoadParameters::NetworkResourceLoadParameters):
(WebKit::NetworkResourceLoadParameters::encode):
(WebKit::NetworkResourceLoadParameters::decode):

  • Shared/Network/NetworkResourceLoadParameters.h:

The requester type is now part of the ResourceRequest, no need for separate parameter.

  • Shared/mac/WebCoreArgumentCodersMac.mm:

(IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
(IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):

  • WebProcess/Network/WebResourceLoadScheduler.cpp:

(WebKit::WebResourceLoadScheduler::scheduleLoad):

LayoutTests:

  • http/tests/cache/disk-cache/disk-cache-media-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-media.html: Added.
  • http/tests/cache/disk-cache/resources/cache-test.js:

(generateTestURL):

Location:
trunk
Files:
2 added
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r183454 r183467  
     12015-04-28  Antti Koivisto  <antti@apple.com>
     2
     3        Network Cache: Disk cache getting filled by YouTube video data
     4        https://bugs.webkit.org/show_bug.cgi?id=144259
     5
     6        Reviewed by Darin Adler.
     7
     8        * http/tests/cache/disk-cache/disk-cache-media-expected.txt: Added.
     9        * http/tests/cache/disk-cache/disk-cache-media.html: Added.
     10        * http/tests/cache/disk-cache/resources/cache-test.js:
     11        (generateTestURL):
     12
    1132015-04-25  Simon Fraser  <simon.fraser@apple.com>
    214
  • trunk/LayoutTests/http/tests/cache/disk-cache/resources/cache-test.js

    r183261 r183467  
    4747    if (expiresInFutureIn304)
    4848        testURL += "&expires-in-future-in-304=1";
    49     testURL += "&uniqueId=" + uniqueTestId++ + "&Content-type=text/plain";
     49    testURL += "&uniqueId=" + uniqueTestId++;
     50    if (!test.responseHeaders || !test.responseHeaders["Content-Type"])
     51        testURL += "&Content-Type=text/plain";
    5052    for (var header in test.responseHeaders)
    5153        testURL += '&' + header + '=' + makeHeaderValue(test.responseHeaders[header]);
  • trunk/Source/WebCore/ChangeLog

    r183466 r183467  
     12015-04-28  Antti Koivisto  <antti@apple.com>
     2
     3        Network Cache: Disk cache getting filled by YouTube video data
     4        https://bugs.webkit.org/show_bug.cgi?id=144259
     5
     6        Reviewed by Darin Adler.
     7
     8        MSE media is loaded via XHR and tends to eventually fill the cache.
     9
     10        YouTube serves the media chunks cacheable, however they are rarely (if ever) reused.
     11        We can reduce disk writes and keep more useful resources around by not caching them
     12
     13        Test: http/tests/cache/disk-cache/disk-cache-media.html
     14
     15        * loader/DocumentLoader.cpp:
     16        (WebCore::DocumentLoader::startLoadingMainResource):
     17
     18            Set the requester.
     19
     20        * loader/cache/CachedRawResource.cpp:
     21        (WebCore::CachedRawResource::CachedRawResource):
     22        * page/DiagnosticLoggingKeys.cpp:
     23        (WebCore::DiagnosticLoggingKeys::streamingMedia):
     24        * page/DiagnosticLoggingKeys.h:
     25        * platform/network/ResourceRequestBase.cpp:
     26        (WebCore::ResourceRequestBase::adopt):
     27        (WebCore::ResourceRequestBase::copyData):
     28        (WebCore::equalIgnoringHeaderFields):
     29        * platform/network/ResourceRequestBase.h:
     30        (WebCore::ResourceRequestBase::requester):
     31        (WebCore::ResourceRequestBase::setRequester):
     32
     33            Add requester type to the request object. Currently this is main resource, xhr or unspecified.
     34
     35        (WebCore::ResourceRequestBase::encodeWithoutPlatformData):
     36        (WebCore::ResourceRequestBase::decodeWithoutPlatformData):
     37        * platform/network/cf/ResourceRequest.h:
     38        (WebCore::ResourceRequest::deprecatedSetMainResourceRequest): Deleted.
     39        (WebCore::ResourceRequest::deprecatedIsMainResourceRequest): Deleted.
     40
     41            Replace this iOS only field with shared mechanism.
     42
     43        * platform/network/ios/QuickLook.mm:
     44        (WebCore::QuickLookHandle::create):
     45        * xml/XMLHttpRequest.cpp:
     46        (WebCore::XMLHttpRequest::createRequest):
     47
     48            Set the requester.
     49
    1502015-04-28  Namhoon Kim  <nakim@ea.com>
    251
  • trunk/Source/WebCore/loader/DocumentLoader.cpp

    r183195 r183467  
    935935    m_loadingMainResource = false;
    936936
    937 #if PLATFORM(IOS)
    938     // FIXME: Remove PLATFORM(IOS)-guard once we upstream the iOS changes to ResourceRequest.h.
    939     m_request.deprecatedSetMainResourceRequest(false);
    940 #endif
    941 
    942937    if (this == frameLoader()->activeDocumentLoader())
    943938        checkLoadComplete();
     
    14041399    }
    14051400
    1406 #if PLATFORM(IOS)
    1407     // FIXME: Remove PLATFORM(IOS)-guard once we upstream the iOS changes to ResourceRequest.h.
    1408     m_request.deprecatedSetMainResourceRequest(true);
    1409 #endif
    1410 
    14111401    ResourceRequest request(m_request);
     1402    request.setRequester(ResourceRequest::Requester::Main);
     1403   
    14121404    static NeverDestroyed<ResourceLoaderOptions> mainResourceLoadOptions(SendCallbacks, SniffContent, BufferData, AllowStoredCredentials, AskClientForAllCredentials, SkipSecurityCheck, UseDefaultOriginRestrictionsForType, IncludeCertificateInfo);
    14131405    CachedResourceRequest cachedResourceRequest(request, mainResourceLoadOptions);
  • trunk/Source/WebCore/loader/cache/CachedRawResource.cpp

    r182369 r183467  
    4343    , m_allowEncodedDataReplacement(true)
    4444{
    45     // FIXME: The wrong CachedResource::Type here may cause a bad cast elsewhere.
    4645    ASSERT(isMainOrRawResource());
    4746}
  • trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp

    r183081 r183467  
    374374}
    375375
     376String DiagnosticLoggingKeys::streamingMedia()
     377{
     378    return ASCIILiteral("streamingMedia");
     379}
     380
    376381String DiagnosticLoggingKeys::styleSheetKey()
    377382{
  • trunk/Source/WebCore/page/DiagnosticLoggingKeys.h

    r183081 r183467  
    107107    static String scriptKey();
    108108    static String sourceKey();
     109    WEBCORE_EXPORT static String streamingMedia();
    109110    static String styleSheetKey();
    110111    static String svgDocumentKey();
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.cpp

    r181136 r183467  
    5858    request->setHTTPMethod(data->m_httpMethod);
    5959    request->setPriority(data->m_priority);
     60    request->setRequester(data->m_requester);
    6061
    6162    request->updateResourceRequest();
     
    9192    data->m_httpHeaders = httpHeaderFields().copyData();
    9293    data->m_priority = priority();
     94    data->m_requester = m_requester;
    9395
    9496    data->m_responseContentDispositionEncodingFallbackArray.reserveInitialCapacity(m_responseContentDispositionEncodingFallbackArray.size());
     
    497499        return false;
    498500
     501    if (a.requester() != b.requester())
     502        return false;
     503
    499504    FormData* formDataA = a.httpBody();
    500505    FormData* formDataB = b.httpBody();
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.h

    r182059 r183467  
    148148        void setHiddenFromInspector(bool hiddenFromInspector) { m_hiddenFromInspector = hiddenFromInspector; }
    149149
     150        enum class Requester { Unspecified, Main, XHR };
     151        WEBCORE_EXPORT Requester requester() const { return m_requester; }
     152        WEBCORE_EXPORT void setRequester(Requester requester) { m_requester = requester; }
     153
    150154#if !PLATFORM(COCOA)
    151155        bool encodingRequiresPlatformData() const { return true; }
     
    225229        unsigned m_hiddenFromInspector : 1;
    226230        unsigned m_priority : 4;
     231        Requester m_requester { Requester::Unspecified };
    227232
    228233    private:
     
    256261        bool m_allowCookies;
    257262        ResourceLoadPriority m_priority;
     263        ResourceRequestBase::Requester m_requester;
    258264    };
    259265   
     
    277283    encoder << m_allowCookies;
    278284    encoder.encodeEnum(m_priority);
     285    encoder.encodeEnum(m_requester);
    279286}
    280287
     
    319326    m_priority = priority;
    320327
     328    if (!decoder.decodeEnum(m_requester))
     329        return false;
     330
    321331    return true;
    322332}
  • trunk/Source/WebCore/platform/network/cf/ResourceRequest.h

    r181136 r183467  
    119119        static bool resourcePrioritiesEnabled();
    120120
    121 #if PLATFORM(IOS)
    122         // FIXME: deprecatedIsMainResourceRequest() does not return the correct value if the ResourceRequest has been
    123         // deserialized from an IPC message. As a result this function can only be relied on when networking is not in a
    124         // separate process.
    125         void deprecatedSetMainResourceRequest(bool isMainResourceRequest) const { m_mainResourceRequest = isMainResourceRequest; }
    126         bool deprecatedIsMainResourceRequest() const { return m_mainResourceRequest; }
    127 
    128     private:
    129         mutable bool m_mainResourceRequest = false;
    130 #endif
    131 
    132121    private:
    133122        friend class ResourceRequestBase;
  • trunk/Source/WebCore/platform/network/ios/QuickLook.mm

    r183172 r183467  
    460460{
    461461    ASSERT_ARG(handle, handle);
    462     if (!handle->firstRequest().deprecatedIsMainResourceRequest() || ![WebCore::QLPreviewGetSupportedMIMETypesSet() containsObject:[nsResponse MIMEType]])
     462    if (handle->firstRequest().requester() != ResourceRequest::Requester::Main || ![WebCore::QLPreviewGetSupportedMIMETypesSet() containsObject:[nsResponse MIMEType]])
    463463        return nullptr;
    464464
     
    472472{
    473473    ASSERT_ARG(handle, handle);
    474     if (!handle->firstRequest().deprecatedIsMainResourceRequest() || ![WebCore::QLPreviewGetSupportedMIMETypesSet() containsObject:(NSString *)CFURLResponseGetMIMEType(cfResponse)])
     474    if (handle->firstRequest().requester() != ResourceRequest::Requester::Main || ![WebCore::QLPreviewGetSupportedMIMETypesSet() containsObject:(NSString *)CFURLResponseGetMIMEType(cfResponse)])
    475475        return nullptr;
    476476
  • trunk/Source/WebCore/xml/XMLHttpRequest.cpp

    r182923 r183467  
    746746
    747747    ResourceRequest request(m_url);
     748    request.setRequester(ResourceRequest::Requester::XHR);
    748749    request.setHTTPMethod(m_method);
    749750
  • trunk/Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm

    r183405 r183467  
    364364    ResourceLoadPriority priority = request.priority();
    365365    bool isHiddenFromInspector = request.hiddenFromInspector();
    366 #if PLATFORM(IOS)
    367     bool isMainResourceRequest = request.deprecatedIsMainResourceRequest();
     366    auto requester = request.requester();
     367#if PLATFORM(IOS)
    368368    if (implementations->webThreadWillSendRequestFunc) {
    369369        newURLRequest = (NSURLRequest *)CallResourceLoadDelegateInWebThread(implementations->webThreadWillSendRequestFunc, webView, @selector(webThreadWebView:resource:willSendRequest:redirectResponse:fromDataSource:), [webView _objectForIdentifier:identifier], currentURLRequest, redirectResponse.nsURLResponse(), dataSource(loader));
     
    376376        request = newURLRequest;
    377377    request.setHiddenFromInspector(isHiddenFromInspector);
    378 #if PLATFORM(IOS)
    379     request.deprecatedSetMainResourceRequest(isMainResourceRequest);
    380 #endif
    381378    request.setPriority(priority);
     379    request.setRequester(requester);
    382380}
    383381
  • trunk/Source/WebKit2/ChangeLog

    r183463 r183467  
     12015-04-28  Antti Koivisto  <antti@apple.com>
     2
     3        Network Cache: Disk cache getting filled by YouTube video data
     4        https://bugs.webkit.org/show_bug.cgi?id=144259
     5
     6        Reviewed by Darin Adler.
     7
     8        MSE media is loaded via XHR and tends to eventually fill the cache.
     9
     10        YouTube serves the media chunks cacheable, however they are rarely (if ever) reused.
     11        We can reduce disk writes and keep more useful resources around by not caching them
     12
     13        * NetworkProcess/NetworkResourceLoader.cpp:
     14        (WebKit::NetworkResourceLoader::didReceiveResponseAsync):
     15        (WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
     16        * NetworkProcess/cache/NetworkCache.cpp:
     17        (WebKit::NetworkCache::makeStoreDecision):
     18
     19            Don't store if the requester is XHR and response has video or audio content type.
     20
     21        * NetworkProcess/cache/NetworkCache.h:
     22        * NetworkProcess/cache/NetworkCacheStatistics.cpp:
     23        (WebKit::NetworkCache::storeDecisionToDiagnosticKey):
     24        * Shared/Network/NetworkResourceLoadParameters.cpp:
     25        (WebKit::NetworkResourceLoadParameters::NetworkResourceLoadParameters):
     26        (WebKit::NetworkResourceLoadParameters::encode):
     27        (WebKit::NetworkResourceLoadParameters::decode):
     28        * Shared/Network/NetworkResourceLoadParameters.h:
     29
     30            The requester type is now part of the ResourceRequest, no need for separate parameter.
     31
     32        * Shared/mac/WebCoreArgumentCodersMac.mm:
     33        (IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
     34        (IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):
     35        * WebProcess/Network/WebResourceLoadScheduler.cpp:
     36        (WebKit::WebResourceLoadScheduler::scheduleLoad):
     37
    1382015-04-28  Zan Dobersek  <zdobersek@igalia.com>
    239
  • trunk/Source/WebKit2/NetworkProcess/NetworkResourceLoader.cpp

    r183081 r183467  
    254254#endif
    255255
     256    bool shouldWaitContinueDidReceiveResponse = originalRequest().requester() == ResourceRequest::Requester::Main;
    256257    if (shouldSendDidReceiveResponse) {
    257258        if (isSynchronous())
    258259            m_synchronousLoadData->response = m_response;
    259260        else {
    260             if (!sendAbortingOnFailure(Messages::WebResourceLoader::DidReceiveResponse(m_response, m_parameters.isMainResource)))
     261            if (!sendAbortingOnFailure(Messages::WebResourceLoader::DidReceiveResponse(m_response, shouldWaitContinueDidReceiveResponse)))
    261262                return;
    262263        }
     
    264265
    265266    // For main resources, the web process is responsible for sending back a NetworkResourceLoader::ContinueDidReceiveResponse message.
    266     bool shouldContinueDidReceiveResponse = !m_parameters.isMainResource;
     267    bool shouldContinueDidReceiveResponse = !shouldWaitContinueDidReceiveResponse;
    267268#if ENABLE(NETWORK_CACHE)
    268269    shouldContinueDidReceiveResponse = shouldContinueDidReceiveResponse || m_cacheEntryForValidation;
     
    544545        sendReplyToSynchronousRequest(*m_synchronousLoadData, entry->buffer());
    545546    } else {
    546         sendAbortingOnFailure(Messages::WebResourceLoader::DidReceiveResponse(entry->response(), m_parameters.isMainResource));
     547        bool needsContinueDidReceiveResponseMessage = originalRequest().requester() == ResourceRequest::Requester::Main;
     548        sendAbortingOnFailure(Messages::WebResourceLoader::DidReceiveResponse(entry->response(), needsContinueDidReceiveResponseMessage));
    547549
    548550#if ENABLE(SHAREABLE_RESOURCE)
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp

    r183387 r183467  
    268268}
    269269
     270static bool isMediaMIMEType(const String& mimeType)
     271{
     272    if (mimeType.startsWith("video/", /*caseSensitive*/ false))
     273        return true;
     274    if (mimeType.startsWith("audio/", /*caseSensitive*/ false))
     275        return true;
     276    return false;
     277}
     278
    270279static StoreDecision makeStoreDecision(const WebCore::ResourceRequest& originalRequest, const WebCore::ResourceResponse& response)
    271280{
     
    291300    }
    292301
    293     // Main resource has ResourceLoadPriorityVeryHigh.
    294     bool storeUnconditionallyForHistoryNavigation = originalRequest.priority() == WebCore::ResourceLoadPriorityVeryHigh;
     302    bool isMainResource = originalRequest.requester() == WebCore::ResourceRequest::Requester::Main;
     303    bool storeUnconditionallyForHistoryNavigation = isMainResource || originalRequest.priority() == WebCore::ResourceLoadPriorityVeryHigh;
    295304    if (!storeUnconditionallyForHistoryNavigation) {
    296305        auto now = std::chrono::system_clock::now();
     
    301310            return StoreDecision::NoDueToUnlikelyToReuse;
    302311    }
     312
     313    // Media loaded via XHR is likely being used for MSE streaming (YouTube and Netflix for example).
     314    // Streaming media fills the cache quickly and is unlikely to be reused.
     315    // FIXME: We should introduce a separate media cache partition that doesn't affect other resources.
     316    // FIXME: We should also make sure make the MSE paths are copy-free so we can use mapped buffers from disk effectively.
     317    bool isLikelyStreamingMedia = originalRequest.requester() == WebCore::ResourceRequest::Requester::XHR && isMediaMIMEType(response.mimeType());
     318    if (isLikelyStreamingMedia)
     319        return StoreDecision::NoDueToStreamingMedia;
    303320
    304321    return StoreDecision::Yes;
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCache.h

    r183081 r183467  
    7272    NoDueToHTTPStatusCode,
    7373    NoDueToNoStoreRequest,
    74     NoDueToUnlikelyToReuse
     74    NoDueToUnlikelyToReuse,
     75    NoDueToStreamingMedia
    7576};
    7677
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheStatistics.cpp

    r183081 r183467  
    245245    case StoreDecision::NoDueToUnlikelyToReuse:
    246246        return WebCore::DiagnosticLoggingKeys::unlikelyToReuseKey();
     247    case StoreDecision::NoDueToStreamingMedia:
     248        return WebCore::DiagnosticLoggingKeys::streamingMedia();
    247249    case StoreDecision::Yes:
    248250        // It was stored but could not be retrieved so it must have been pruned from the cache.
  • trunk/Source/WebKit2/Shared/Network/NetworkResourceLoadParameters.cpp

    r173468 r183467  
    4646    , clientCredentialPolicy(DoNotAskClientForAnyCredentials)
    4747    , shouldClearReferrerOnHTTPSToHTTPRedirect(true)
    48     , isMainResource(false)
    4948    , defersLoading(false)
    5049    , needsCertificateInfo(false)
     
    9594    encoder.encodeEnum(clientCredentialPolicy);
    9695    encoder << shouldClearReferrerOnHTTPSToHTTPRedirect;
    97     encoder << isMainResource;
    9896    encoder << defersLoading;
    9997    encoder << needsCertificateInfo;
     
    152150    if (!decoder.decode(result.shouldClearReferrerOnHTTPSToHTTPRedirect))
    153151        return false;
    154     if (!decoder.decode(result.isMainResource))
    155         return false;
    156152    if (!decoder.decode(result.defersLoading))
    157153        return false;
  • trunk/Source/WebKit2/Shared/Network/NetworkResourceLoadParameters.h

    r173468 r183467  
    6262    WebCore::ClientCredentialPolicy clientCredentialPolicy;
    6363    bool shouldClearReferrerOnHTTPSToHTTPRedirect;
    64     bool isMainResource;
    6564    bool defersLoading;
    6665    bool needsCertificateInfo;
  • trunk/Source/WebKit2/Shared/mac/WebCoreArgumentCodersMac.mm

    r182630 r183467  
    8585    // The fallback array is part of CFURLRequest, but it is not encoded by WKCFURLRequestCreateSerializableRepresentation.
    8686    encoder << resourceRequest.responseContentDispositionEncodingFallbackArray();
     87    encoder.encodeEnum(resourceRequest.requester());
    8788}
    8889#else
     
    110111    // The fallback array is part of NSURLRequest, but it is not encoded by WKNSURLRequestCreateSerializableRepresentation.
    111112    encoder << resourceRequest.responseContentDispositionEncodingFallbackArray();
     113    encoder.encodeEnum(resourceRequest.requester());
    112114}
    113115#endif
     
    151153        responseContentDispositionEncodingFallbackArray.size() > 2 ? responseContentDispositionEncodingFallbackArray[2] : String()
    152154    );
     155
     156    ResourceRequest::Requester requester;
     157    if (!decoder.decodeEnum(requester))
     158        return false;
     159    resourceRequest.setRequester(requester);
    153160
    154161    return true;
  • trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp

    r179584 r183467  
    174174    loadParameters.clientCredentialPolicy = (webFrame && webPage && resourceLoader->isAllowedToAskUserForCredentials()) ? AskClientForAllCredentials : DoNotAskClientForAnyCredentials;
    175175    loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect = shouldClearReferrerOnHTTPSToHTTPRedirect;
    176     loadParameters.isMainResource = resource && resource->type() == CachedResource::MainResource;
    177176    loadParameters.defersLoading = resourceLoader->defersLoading();
    178177    loadParameters.needsCertificateInfo = resourceLoader->shouldIncludeCertificateInfo();
Note: See TracChangeset for help on using the changeset viewer.