Changeset 192995 in webkit


Ignore:
Timestamp:
Dec 3, 2015, 4:51:17 AM (9 years ago)
Author:
Antti Koivisto
Message:

Move ResourceLoadScheduler to WebKit1
https://bugs.webkit.org/show_bug.cgi?id=151743

Reviewed by Alex Christensen.

Source/WebCore:

It is no longer used by WebKit2. Simplify the WebKit/WebCore interface.

  • WebCore.xcodeproj/project.pbxproj:
  • dom/ContainerNode.cpp:
  • dom/Document.cpp:

(WebCore::Document::styleForElementIgnoringPendingStylesheets):

  • dom/Document.h:
  • loader/DocumentLoader.h:
  • loader/LoaderStrategy.cpp:

(WebCore::LoaderStrategy::~LoaderStrategy):
(WebCore::ResourceLoadSuspender::ResourceLoadSuspender):
(WebCore::ResourceLoadSuspender::~ResourceLoadSuspender):
(WebCore::LoaderStrategy::resourceLoadScheduler): Deleted.
(WebCore::LoaderStrategy::loadResourceSynchronously): Deleted.
(WebCore::LoaderStrategy::createBlobRegistry): Deleted.
(WebCore::LoaderStrategy::createPingHandle): Deleted.

  • loader/LoaderStrategy.h:

Loading functions implemented on WebKit side move to pure virtual LoaderStrategy.

  • loader/ResourceLoadScheduler.cpp: Removed.
  • loader/ResourceLoadScheduler.h: Removed.

ResourceLoadScheduler moves to WebKit1 as WebResourceLoadScheduler.

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::finishNetworkLoad):
(WebCore::ResourceLoader::setDefersLoading):
(WebCore::ResourceLoader::frameLoader):
(WebCore::ResourceLoader::willSwitchToSubstituteResource):
(WebCore::ResourceLoader::willSendRequestInternal):

  • loader/archive/ArchiveResourceCollection.h:
  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::performPostLoadActions):
(WebCore::CachedResourceLoader::incrementRequestCount):

  • platform/PlatformStrategies.h:

(WebCore::PlatformStrategies::pluginStrategy):
(WebCore::PlatformStrategies::blobRegistry):

Move BlobRegistry factory function here from LoaderStrategy as this allows network process to have null loaderStrategy.
(it could be renamed BlobStrategy for consistency later).

(WebCore::PlatformStrategies::PlatformStrategies):

  • platform/network/BlobRegistry.cpp:

(WebCore::blobRegistry):
(WebCore::BlobRegistry::~BlobRegistry):

  • platform/network/ResourceRequestBase.h:
  • style/StyleResolveTree.cpp:

(WebCore::Style::PostResolutionCallbackDisabler::PostResolutionCallbackDisabler):
(WebCore::Style::PostResolutionCallbackDisabler::~PostResolutionCallbackDisabler):

Source/WebKit:

  • WebCoreSupport/WebResourceLoadScheduler.cpp: Copied from Source/WebCore/loader/ResourceLoadScheduler.cpp.

(webResourceLoadScheduler):
(WebResourceLoadScheduler::hostForURL):
(WebResourceLoadScheduler::WebResourceLoadScheduler):
(WebResourceLoadScheduler::~WebResourceLoadScheduler):
(WebResourceLoadScheduler::scheduleSubresourceLoad):
(WebResourceLoadScheduler::loadResourceSynchronously):
(WebResourceLoadScheduler::schedulePluginStreamLoad):
(WebResourceLoadScheduler::scheduleLoad):
(WebResourceLoadScheduler::remove):
(WebResourceLoadScheduler::setDefersLoading):
(WebResourceLoadScheduler::crossOriginRedirectReceived):
(WebResourceLoadScheduler::servePendingRequests):
(WebResourceLoadScheduler::suspendPendingRequests):
(WebResourceLoadScheduler::resumePendingRequests):
(WebResourceLoadScheduler::scheduleServePendingRequests):
(WebResourceLoadScheduler::requestTimerFired):
(WebResourceLoadScheduler::HostInformation::HostInformation):
(WebResourceLoadScheduler::HostInformation::~HostInformation):
(WebResourceLoadScheduler::HostInformation::priorityToIndex):
(WebResourceLoadScheduler::HostInformation::schedule):
(WebResourceLoadScheduler::HostInformation::addLoadInProgress):
(WebResourceLoadScheduler::HostInformation::remove):
(WebResourceLoadScheduler::HostInformation::hasRequests):
(WebResourceLoadScheduler::HostInformation::limitRequests):
(WebResourceLoadScheduler::createPingHandle):
(WebCore::ResourceLoadScheduler::hostForURL): Deleted.
(WebCore::resourceLoadScheduler): Deleted.
(WebCore::ResourceLoadScheduler::ResourceLoadScheduler): Deleted.
(WebCore::ResourceLoadScheduler::~ResourceLoadScheduler): Deleted.
(WebCore::ResourceLoadScheduler::scheduleSubresourceLoad): Deleted.
(WebCore::ResourceLoadScheduler::schedulePluginStreamLoad): Deleted.
(WebCore::ResourceLoadScheduler::scheduleLoad): Deleted.
(WebCore::ResourceLoadScheduler::remove): Deleted.
(WebCore::ResourceLoadScheduler::setDefersLoading): Deleted.
(WebCore::ResourceLoadScheduler::crossOriginRedirectReceived): Deleted.
(WebCore::ResourceLoadScheduler::servePendingRequests): Deleted.
(WebCore::ResourceLoadScheduler::suspendPendingRequests): Deleted.
(WebCore::ResourceLoadScheduler::resumePendingRequests): Deleted.
(WebCore::ResourceLoadScheduler::scheduleServePendingRequests): Deleted.
(WebCore::ResourceLoadScheduler::requestTimerFired): Deleted.
(WebCore::ResourceLoadScheduler::HostInformation::HostInformation): Deleted.
(WebCore::ResourceLoadScheduler::HostInformation::~HostInformation): Deleted.
(WebCore::ResourceLoadScheduler::HostInformation::priorityToIndex): Deleted.
(WebCore::ResourceLoadScheduler::HostInformation::schedule): Deleted.
(WebCore::ResourceLoadScheduler::HostInformation::addLoadInProgress): Deleted.
(WebCore::ResourceLoadScheduler::HostInformation::remove): Deleted.
(WebCore::ResourceLoadScheduler::HostInformation::hasRequests): Deleted.
(WebCore::ResourceLoadScheduler::HostInformation::limitRequests): Deleted.

  • WebCoreSupport/WebResourceLoadScheduler.h: Copied from Source/WebCore/loader/ResourceLoadScheduler.h.

(WebResourceLoadScheduler::isSerialLoadingEnabled):
(WebResourceLoadScheduler::setSerialLoadingEnabled):
(WebResourceLoadScheduler::HostInformation::name):
(WebResourceLoadScheduler::HostInformation::requestsPending):
(WebCore::ResourceLoadScheduler::isSerialLoadingEnabled): Deleted.
(WebCore::ResourceLoadScheduler::setSerialLoadingEnabled): Deleted.
(WebCore::ResourceLoadScheduler::Suspender::Suspender): Deleted.
(WebCore::ResourceLoadScheduler::Suspender::~Suspender): Deleted.
(WebCore::ResourceLoadScheduler::HostInformation::name): Deleted.
(WebCore::ResourceLoadScheduler::HostInformation::requestsPending): Deleted.

  • WebKit.xcodeproj/project.pbxproj:

Source/WebKit/mac:

  • Plugins/Hosted/HostedNetscapePluginStream.mm:

(WebKit::HostedNetscapePluginStream::start):
(WebKit::HostedNetscapePluginStream::stop):

  • Plugins/WebNetscapePluginStream.mm:

(WebNetscapePluginStream::start):
(WebNetscapePluginStream::stop):

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::createLoaderStrategy):
(WebPlatformStrategies::createPasteboardStrategy):
(WebPlatformStrategies::createPluginStrategy):
(WebPlatformStrategies::createBlobRegistry):
(WebPlatformStrategies::cookiesForDOM):

  • WebView/WebView.mm:

(-[WebView _dispatchPendingLoadRequests]):
(+[WebView _setLoadResourcesSerially:]):
(+[WebView _HTTPPipeliningEnabled]):

Source/WebKit2:

  • NetworkProcess/NetworkProcessPlatformStrategies.cpp:

(WebKit::NetworkProcessPlatformStrategies::createCookiesStrategy):
(WebKit::NetworkProcessPlatformStrategies::createLoaderStrategy):
(WebKit::NetworkProcessPlatformStrategies::createPasteboardStrategy):
(WebKit::NetworkProcessPlatformStrategies::createPluginStrategy):
(WebKit::NetworkProcessPlatformStrategies::createBlobRegistry):
(WebKit::NetworkProcessPlatformStrategies::resourceLoadScheduler): Deleted.
(WebKit::NetworkProcessPlatformStrategies::loadResourceSynchronously): Deleted.

  • NetworkProcess/NetworkProcessPlatformStrategies.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:
  • WebProcess/Network/WebResourceLoadScheduler.cpp:

(WebKit::WebResourceLoadScheduler::~WebResourceLoadScheduler):
(WebKit::WebResourceLoadScheduler::loadResource):
(WebKit::WebResourceLoadScheduler::resumePendingRequests):
(WebKit::WebResourceLoadScheduler::networkProcessCrashed):
(WebKit::WebResourceLoadScheduler::loadResourceSynchronously):
(WebKit::WebResourceLoadScheduler::createPingHandle):
(WebKit::WebResourceLoadScheduler::scheduleSubresourceLoad): Deleted.
(WebKit::WebResourceLoadScheduler::setSerialLoadingEnabled): Deleted.

  • WebProcess/Network/WebResourceLoadScheduler.h:

(WebKit::WebResourceLoadScheduler::webResourceLoaderForIdentifier):

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::Stream::start):
(WebKit::PluginView::Stream::cancel):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::createLoaderStrategy):
(WebKit::WebPlatformStrategies::createPasteboardStrategy):
(WebKit::WebPlatformStrategies::createPluginStrategy):
(WebKit::WebPlatformStrategies::createBlobRegistry):
(WebKit::WebPlatformStrategies::cookiesForDOM):
(WebKit::WebPlatformStrategies::deleteCookie):
(WebKit::WebPlatformStrategies::refreshPlugins):
(WebKit::WebPlatformStrategies::resourceLoadScheduler): Deleted.
(WebKit::WebPlatformStrategies::loadResourceSynchronously): Deleted.
(WebKit::WebPlatformStrategies::createPingHandle): Deleted.

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:
Location:
trunk/Source
Files:
43 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/CMakeLists.txt

    r192954 r192995  
    19521952    loader/ProgressTracker.cpp
    19531953    loader/ResourceLoadNotifier.cpp
    1954     loader/ResourceLoadScheduler.cpp
    19551954    loader/ResourceLoader.cpp
    19561955    loader/SinkDocument.cpp
  • trunk/Source/WebCore/ChangeLog

    r192992 r192995  
     12015-12-02  Antti Koivisto  <antti@apple.com>
     2
     3        Move ResourceLoadScheduler to WebKit1
     4        https://bugs.webkit.org/show_bug.cgi?id=151743
     5
     6        Reviewed by Alex Christensen.
     7
     8        It is no longer used by WebKit2. Simplify the WebKit/WebCore interface.
     9
     10        * WebCore.xcodeproj/project.pbxproj:
     11        * dom/ContainerNode.cpp:
     12        * dom/Document.cpp:
     13        (WebCore::Document::styleForElementIgnoringPendingStylesheets):
     14        * dom/Document.h:
     15        * loader/DocumentLoader.h:
     16        * loader/LoaderStrategy.cpp:
     17        (WebCore::LoaderStrategy::~LoaderStrategy):
     18        (WebCore::ResourceLoadSuspender::ResourceLoadSuspender):
     19        (WebCore::ResourceLoadSuspender::~ResourceLoadSuspender):
     20        (WebCore::LoaderStrategy::resourceLoadScheduler): Deleted.
     21        (WebCore::LoaderStrategy::loadResourceSynchronously): Deleted.
     22        (WebCore::LoaderStrategy::createBlobRegistry): Deleted.
     23        (WebCore::LoaderStrategy::createPingHandle): Deleted.
     24        * loader/LoaderStrategy.h:
     25
     26            Loading functions implemented on WebKit side move to pure virtual LoaderStrategy.
     27
     28        * loader/ResourceLoadScheduler.cpp: Removed.
     29        * loader/ResourceLoadScheduler.h: Removed.
     30
     31            ResourceLoadScheduler moves to WebKit1 as WebResourceLoadScheduler.
     32
     33        * loader/ResourceLoader.cpp:
     34        (WebCore::ResourceLoader::finishNetworkLoad):
     35        (WebCore::ResourceLoader::setDefersLoading):
     36        (WebCore::ResourceLoader::frameLoader):
     37        (WebCore::ResourceLoader::willSwitchToSubstituteResource):
     38        (WebCore::ResourceLoader::willSendRequestInternal):
     39        * loader/archive/ArchiveResourceCollection.h:
     40        * loader/cache/CachedResource.cpp:
     41        (WebCore::CachedResource::load):
     42        * loader/cache/CachedResourceLoader.cpp:
     43        (WebCore::CachedResourceLoader::performPostLoadActions):
     44        (WebCore::CachedResourceLoader::incrementRequestCount):
     45        * platform/PlatformStrategies.h:
     46        (WebCore::PlatformStrategies::pluginStrategy):
     47        (WebCore::PlatformStrategies::blobRegistry):
     48
     49            Move BlobRegistry factory function here from LoaderStrategy as this allows network process to have null loaderStrategy.
     50            (it could be renamed BlobStrategy for consistency later).
     51
     52        (WebCore::PlatformStrategies::PlatformStrategies):
     53        * platform/network/BlobRegistry.cpp:
     54        (WebCore::blobRegistry):
     55        (WebCore::BlobRegistry::~BlobRegistry):
     56        * platform/network/ResourceRequestBase.h:
     57        * style/StyleResolveTree.cpp:
     58        (WebCore::Style::PostResolutionCallbackDisabler::PostResolutionCallbackDisabler):
     59        (WebCore::Style::PostResolutionCallbackDisabler::~PostResolutionCallbackDisabler):
     60
    1612015-12-02  Myles C. Maxfield  <mmaxfield@apple.com>
    262
  • trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj

    r192394 r192995  
    74197419    <ClCompile Include="..\loader\cf\ResourceLoaderCFNet.cpp" />
    74207420    <ClCompile Include="..\loader\ResourceLoadNotifier.cpp" />
    7421     <ClCompile Include="..\loader\ResourceLoadScheduler.cpp" />
    74227421    <ClCompile Include="..\loader\SinkDocument.cpp" />
    74237422    <ClCompile Include="..\loader\SubframeLoader.cpp" />
     
    2084020839    <ClInclude Include="..\loader\ResourceLoaderOptions.h" />
    2084120840    <ClInclude Include="..\loader\ResourceLoadNotifier.h" />
    20842     <ClInclude Include="..\loader\ResourceLoadScheduler.h" />
    2084320841    <ClInclude Include="..\loader\SinkDocument.h" />
    2084420842    <ClInclude Include="..\loader\SubframeLoader.h" />
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r192954 r192995  
    61726172                D0BD4F5C1408850F006839B6 /* DictationCommandIOS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0BD4F5A1408850F006839B6 /* DictationCommandIOS.cpp */; };
    61736173                D0BD4F5D1408850F006839B6 /* DictationCommandIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = D0BD4F5B1408850F006839B6 /* DictationCommandIOS.h */; };
    6174                 D0CE58F8125E4CC200F3F199 /* ResourceLoadScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0CE58F6125E4CC200F3F199 /* ResourceLoadScheduler.cpp */; };
    6175                 D0CE58F9125E4CC200F3F199 /* ResourceLoadScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = D0CE58F7125E4CC200F3F199 /* ResourceLoadScheduler.h */; settings = {ATTRIBUTES = (Private, ); }; };
    61766174                D0EDA774143E303C0028E383 /* CachedRawResource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D0EDA772143E303C0028E383 /* CachedRawResource.cpp */; };
    61776175                D0EDA775143E303C0028E383 /* CachedRawResource.h in Headers */ = {isa = PBXBuildFile; fileRef = D0EDA773143E303C0028E383 /* CachedRawResource.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    1407114069                D0BD4F5A1408850F006839B6 /* DictationCommandIOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DictationCommandIOS.cpp; sourceTree = "<group>"; };
    1407214070                D0BD4F5B1408850F006839B6 /* DictationCommandIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DictationCommandIOS.h; sourceTree = "<group>"; };
    14073                 D0CE58F6125E4CC200F3F199 /* ResourceLoadScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResourceLoadScheduler.cpp; sourceTree = "<group>"; };
    14074                 D0CE58F7125E4CC200F3F199 /* ResourceLoadScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ResourceLoadScheduler.h; sourceTree = "<group>"; };
    1407514071                D0EDA772143E303C0028E383 /* CachedRawResource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CachedRawResource.cpp; sourceTree = "<group>"; };
    1407614072                D0EDA773143E303C0028E383 /* CachedRawResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CachedRawResource.h; sourceTree = "<group>"; };
     
    2246522461                                973E325410883B7C005BC493 /* ResourceLoadNotifier.cpp */,
    2246622462                                973E325510883B7C005BC493 /* ResourceLoadNotifier.h */,
    22467                                 D0CE58F6125E4CC200F3F199 /* ResourceLoadScheduler.cpp */,
    22468                                 D0CE58F7125E4CC200F3F199 /* ResourceLoadScheduler.h */,
    2246922463                                51327D5F11A33A2B004F9D65 /* SinkDocument.cpp */,
    2247022464                                51327D5E11A33A2B004F9D65 /* SinkDocument.h */,
     
    2729227286                                973E325710883B7C005BC493 /* ResourceLoadNotifier.h in Headers */,
    2729327287                                E4295FA412B0614E00D1ACE0 /* ResourceLoadPriority.h in Headers */,
    27294                                 D0CE58F9125E4CC200F3F199 /* ResourceLoadScheduler.h in Headers */,
    2729527288                                8A81BF8511DCFD9000DA2B98 /* ResourceLoadTiming.h in Headers */,
    2729627289                                7EE6846D12D26E3800E79415 /* ResourceRequest.h in Headers */,
     
    3087030863                                51EE7B3A1AA5123100F92B21 /* ResourceLoadInfo.cpp in Sources */,
    3087130864                                973E325610883B7C005BC493 /* ResourceLoadNotifier.cpp in Sources */,
    30872                                 D0CE58F8125E4CC200F3F199 /* ResourceLoadScheduler.cpp in Sources */,
    3087330865                                514C767C0CE923A1007EF3CD /* ResourceRequestBase.cpp in Sources */,
    3087430866                                7EE6846E12D26E3800E79415 /* ResourceRequestCFNet.cpp in Sources */,
  • trunk/Source/WebCore/dom/ContainerNode.cpp

    r191955 r192995  
    5050#include "RenderTheme.h"
    5151#include "RenderWidget.h"
    52 #include "ResourceLoadScheduler.h"
    5352#include "RootInlineBox.h"
    5453#include "SVGDocumentExtensions.h"
  • trunk/Source/WebCore/dom/Document.cpp

    r192848 r192995  
    127127#include "RenderView.h"
    128128#include "RenderWidget.h"
    129 #include "ResourceLoadScheduler.h"
    130129#include "RuntimeEnabledFeatures.h"
    131130#include "SVGDocumentExtensions.h"
     
    19601959
    19611960    // On iOS request delegates called during styleForElement may result in re-entering WebKit and killing the style resolver.
    1962     ResourceLoadScheduler::Suspender suspender(*platformStrategies()->loaderStrategy()->resourceLoadScheduler());
     1961    ResourceLoadSuspender suspender;
    19631962
    19641963    TemporaryChange<bool> change(m_ignorePendingStylesheets, true);
  • trunk/Source/WebCore/dom/Document.h

    r192711 r192995  
    512512    void notifyRemovePendingSheetIfNeeded();
    513513
    514     bool haveStylesheetsLoaded() const;
     514    WEBCORE_EXPORT bool haveStylesheetsLoaded() const;
    515515
    516516    // This is a DOM function.
  • trunk/Source/WebCore/loader/DocumentLoader.h

    r192342 r192995  
    162162
    163163        // Return the ArchiveResource for the URL only when loading an Archive
    164         ArchiveResource* archiveResourceForURL(const URL&) const;
     164        WEBCORE_EXPORT ArchiveResource* archiveResourceForURL(const URL&) const;
    165165
    166166        WEBCORE_EXPORT PassRefPtr<ArchiveResource> mainResource() const;
  • trunk/Source/WebCore/loader/LoaderStrategy.cpp

    r186530 r192995  
    11/*
    2  * Copyright (C) 2012 Apple Inc. All rights reserved.
     2 * Copyright (C) 2012, 2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2727#include "LoaderStrategy.h"
    2828
    29 #include "BlobRegistryImpl.h"
    30 #include "PingHandle.h"
    31 #include "ResourceHandle.h"
    32 #include "ResourceLoadScheduler.h"
     29#include "PlatformStrategies.h"
    3330
    3431namespace WebCore {
    3532
    36 ResourceLoadScheduler* LoaderStrategy::resourceLoadScheduler()
     33LoaderStrategy::~LoaderStrategy()
    3734{
    38     return WebCore::resourceLoadScheduler();
    3935}
    4036
    41 void LoaderStrategy::loadResourceSynchronously(NetworkingContext* context, unsigned long, const ResourceRequest& request, StoredCredentials storedCredentials, ClientCredentialPolicy, ResourceError& error, ResourceResponse& response, Vector<char>& data)
     37ResourceLoadSuspender::ResourceLoadSuspender()
    4238{
    43     ResourceHandle::loadResourceSynchronously(context, request, storedCredentials, error, response, data);
     39    platformStrategies()->loaderStrategy()->suspendPendingRequests();
    4440}
    4541
    46 BlobRegistry* LoaderStrategy::createBlobRegistry()
     42ResourceLoadSuspender::~ResourceLoadSuspender()
    4743{
    48     return new BlobRegistryImpl;
    49 }
    50 
    51 void LoaderStrategy::createPingHandle(NetworkingContext* networkingContext, ResourceRequest& request, bool shouldUseCredentialStorage)
    52 {
    53     // PingHandle manages its own lifetime, deleting itself when its purpose has been fulfilled.
    54     new PingHandle(networkingContext, request, shouldUseCredentialStorage, PingHandle::UsesAsyncCallbacks::No);
     44    platformStrategies()->loaderStrategy()->resumePendingRequests();
    5545}
    5646
    5747} // namespace WebCore
     48
     49
  • trunk/Source/WebCore/loader/LoaderStrategy.h

    r186530 r192995  
    11/*
    2  * Copyright (C) 2012 Apple Inc. All rights reserved.
     2 * Copyright (C) 2012, 2015 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2828
    2929#include "ResourceHandleTypes.h"
     30#include "ResourceLoadPriority.h"
     31#include "ResourceLoaderOptions.h"
    3032#include <wtf/Vector.h>
    3133
     
    3335
    3436class BlobRegistry;
     37class CachedResource;
    3538class Frame;
     39class NetscapePlugInStreamLoader;
     40class NetscapePlugInStreamLoaderClient;
    3641class NetworkingContext;
    3742class ResourceError;
    38 class ResourceLoadScheduler;
     43class ResourceLoader;
    3944class ResourceRequest;
    4045class ResourceResponse;
     46class SubresourceLoader;
     47class URL;
    4148
    4249class WEBCORE_EXPORT LoaderStrategy {
    4350public:
    44     virtual ResourceLoadScheduler* resourceLoadScheduler();
     51    virtual RefPtr<SubresourceLoader> loadResource(Frame*, CachedResource*, const ResourceRequest&, const ResourceLoaderOptions&) = 0;
     52    virtual void loadResourceSynchronously(NetworkingContext*, unsigned long identifier, const ResourceRequest&, StoredCredentials, ClientCredentialPolicy, ResourceError&, ResourceResponse&, Vector<char>& data) = 0;
    4553
    46     virtual void loadResourceSynchronously(NetworkingContext*, unsigned long identifier, const ResourceRequest&, StoredCredentials, ClientCredentialPolicy, ResourceError&, ResourceResponse&, Vector<char>& data);
     54    virtual void remove(ResourceLoader*) = 0;
     55    virtual void setDefersLoading(ResourceLoader*, bool) = 0;
     56    virtual void crossOriginRedirectReceived(ResourceLoader*, const URL& redirectURL) = 0;
    4757
    48     virtual BlobRegistry* createBlobRegistry();
     58    virtual void servePendingRequests(ResourceLoadPriority minimumPriority = ResourceLoadPriority::VeryLow) = 0;
     59    virtual void suspendPendingRequests() = 0;
     60    virtual void resumePendingRequests() = 0;
    4961
    50     virtual void createPingHandle(NetworkingContext*, ResourceRequest&, bool shouldUseCredentialStorage);
     62    virtual void createPingHandle(NetworkingContext*, ResourceRequest&, bool shouldUseCredentialStorage) = 0;
    5163
    5264protected:
    53     virtual ~LoaderStrategy()
    54     {
    55     }
     65    virtual ~LoaderStrategy();
     66};
     67
     68class ResourceLoadSuspender {
     69public:
     70    ResourceLoadSuspender();
     71    ~ResourceLoadSuspender();
    5672};
    5773
  • trunk/Source/WebCore/loader/ResourceLoader.cpp

    r191673 r192995  
    4848#include "ResourceError.h"
    4949#include "ResourceHandle.h"
    50 #include "ResourceLoadScheduler.h"
    5150#include "SecurityOrigin.h"
    5251#include "Settings.h"
     
    8483void ResourceLoader::finishNetworkLoad()
    8584{
    86     platformStrategies()->loaderStrategy()->resourceLoadScheduler()->remove(this);
     85    platformStrategies()->loaderStrategy()->remove(this);
    8786
    8887    if (m_handle) {
     
    234233    }
    235234
    236     platformStrategies()->loaderStrategy()->resourceLoadScheduler()->setDefersLoading(this, defers);
     235    platformStrategies()->loaderStrategy()->setDefersLoading(this, defers);
    237236}
    238237
     
    290289{
    291290    ASSERT(!m_documentLoader->isSubstituteLoadPending(this));
    292     platformStrategies()->loaderStrategy()->resourceLoadScheduler()->remove(this);
     291    platformStrategies()->loaderStrategy()->remove(this);
    293292    if (m_handle)
    294293        m_handle->cancel();
     
    377376    bool isRedirect = !redirectResponse.isNull();
    378377    if (isRedirect)
    379         platformStrategies()->loaderStrategy()->resourceLoadScheduler()->crossOriginRedirectReceived(this, request.url());
     378        platformStrategies()->loaderStrategy()->crossOriginRedirectReceived(this, request.url());
    380379
    381380    m_request = request;
  • trunk/Source/WebCore/loader/archive/ArchiveResourceCollection.h

    r165676 r192995  
    4848    void addAllResources(Archive*);
    4949   
    50     ArchiveResource* archiveResourceForURL(const URL&);
     50    WEBCORE_EXPORT ArchiveResource* archiveResourceForURL(const URL&);
    5151    PassRefPtr<Archive> popSubframeArchive(const String& frameName, const URL&);
    5252   
  • trunk/Source/WebCore/loader/cache/CachedResource.cpp

    r191369 r192995  
    4545#include "PlatformStrategies.h"
    4646#include "ResourceHandle.h"
    47 #include "ResourceLoadScheduler.h"
    4847#include "SchemeRegistry.h"
    4948#include "SecurityOrigin.h"
     
    279278    }
    280279
    281     m_loader = platformStrategies()->loaderStrategy()->resourceLoadScheduler()->scheduleSubresourceLoad(cachedResourceLoader.frame(), this, request, options);
     280    m_loader = platformStrategies()->loaderStrategy()->loadResource(cachedResourceLoader.frame(), this, request, options);
    282281    if (!m_loader) {
    283282        failBeforeStarting();
  • trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp

    r192592 r192995  
    6262#include "RenderElement.h"
    6363#include "ResourceLoadInfo.h"
    64 #include "ResourceLoadScheduler.h"
    6564#include "ScriptController.h"
    6665#include "SecurityOrigin.h"
     
    968967    checkForPendingPreloads();
    969968
    970     platformStrategies()->loaderStrategy()->resourceLoadScheduler()->servePendingRequests();
     969    platformStrategies()->loaderStrategy()->servePendingRequests();
    971970}
    972971
  • trunk/Source/WebCore/platform/PlatformStrategies.h

    r181562 r192995  
    2929namespace WebCore {
    3030
     31class BlobRegistry;
    3132class CookiesStrategy;
    3233class LoaderStrategy;
     
    6465    }
    6566
     67    BlobRegistry* blobRegistry()
     68    {
     69        if (!m_blobRegistry)
     70            m_blobRegistry = createBlobRegistry();
     71        return m_blobRegistry;
     72    }
     73
    6674protected:
    6775    PlatformStrategies()
    68         : m_cookiesStrategy(nullptr)
    69         , m_loaderStrategy(nullptr)
    70         , m_pasteboardStrategy(nullptr)
    71         , m_pluginStrategy(nullptr)
    7276    {
    7377    }
     
    8286    virtual PasteboardStrategy* createPasteboardStrategy() = 0;
    8387    virtual PluginStrategy* createPluginStrategy() = 0;
     88    virtual BlobRegistry* createBlobRegistry() = 0;
    8489
    85     CookiesStrategy* m_cookiesStrategy;
    86     LoaderStrategy* m_loaderStrategy;
    87     PasteboardStrategy* m_pasteboardStrategy;
    88     PluginStrategy* m_pluginStrategy;
     90    CookiesStrategy* m_cookiesStrategy { };
     91    LoaderStrategy* m_loaderStrategy { };
     92    PasteboardStrategy* m_pasteboardStrategy { };
     93    PluginStrategy* m_pluginStrategy { };
     94    BlobRegistry* m_blobRegistry { };
    8995};
    9096
  • trunk/Source/WebCore/platform/RuntimeApplicationChecksIOS.h

    r189921 r192995  
    4040bool applicationIsNASAHD();
    4141WEBCORE_EXPORT bool applicationIsTheEconomistOnIPhone();
    42 bool applicationIsWebProcess();
     42WEBCORE_EXPORT bool applicationIsWebProcess();
    4343bool applicationIsIBooksOnIOS();
    4444
  • trunk/Source/WebCore/platform/network/BlobRegistry.cpp

    r169380 r192995  
    4141{
    4242    ASSERT(isMainThread());
    43 
    44     static BlobRegistry& instance = *platformStrategies()->loaderStrategy()->createBlobRegistry();
    45     return instance;
     43    return *platformStrategies()->blobRegistry();
    4644}
    4745
  • trunk/Source/WebCore/platform/network/ResourceRequestBase.h

    r184945 r192995  
    245245    };
    246246   
    247     unsigned initializeMaximumHTTPConnectionCountPerHost();
     247    WEBCORE_EXPORT unsigned initializeMaximumHTTPConnectionCountPerHost();
    248248#if PLATFORM(IOS)
    249249    WEBCORE_EXPORT void initializeHTTPConnectionSettingsOnStartup();
  • trunk/Source/WebCore/style/StyleResolveTree.cpp

    r192608 r192995  
    4848#include "RenderTreePosition.h"
    4949#include "RenderWidget.h"
    50 #include "ResourceLoadScheduler.h"
    5150#include "Settings.h"
    5251#include "ShadowRoot.h"
     
    945944
    946945    if (resolutionNestingDepth == 1)
    947         platformStrategies()->loaderStrategy()->resourceLoadScheduler()->suspendPendingRequests();
     946        platformStrategies()->loaderStrategy()->suspendPendingRequests();
    948947
    949948    // FIXME: It's strange to build this into the disabler.
     
    960959        queue.clear();
    961960
    962         platformStrategies()->loaderStrategy()->resourceLoadScheduler()->resumePendingRequests();
     961        platformStrategies()->loaderStrategy()->resumePendingRequests();
    963962    }
    964963
  • trunk/Source/WebKit/CMakeLists.txt

    r191749 r192995  
    33
    44set(WebKit_SOURCES
     5    WebCoreSupport/WebResourceLoadScheduler.cpp
    56    WebCoreSupport/WebViewGroup.cpp
    67)
  • trunk/Source/WebKit/ChangeLog

    r191773 r192995  
     12015-12-02  Antti Koivisto  <antti@apple.com>
     2
     3        Move ResourceLoadScheduler to WebKit1
     4        https://bugs.webkit.org/show_bug.cgi?id=151743
     5
     6        Reviewed by Alex Christensen.
     7
     8        * WebCoreSupport/WebResourceLoadScheduler.cpp: Copied from Source/WebCore/loader/ResourceLoadScheduler.cpp.
     9        (webResourceLoadScheduler):
     10        (WebResourceLoadScheduler::hostForURL):
     11        (WebResourceLoadScheduler::WebResourceLoadScheduler):
     12        (WebResourceLoadScheduler::~WebResourceLoadScheduler):
     13        (WebResourceLoadScheduler::scheduleSubresourceLoad):
     14        (WebResourceLoadScheduler::loadResourceSynchronously):
     15        (WebResourceLoadScheduler::schedulePluginStreamLoad):
     16        (WebResourceLoadScheduler::scheduleLoad):
     17        (WebResourceLoadScheduler::remove):
     18        (WebResourceLoadScheduler::setDefersLoading):
     19        (WebResourceLoadScheduler::crossOriginRedirectReceived):
     20        (WebResourceLoadScheduler::servePendingRequests):
     21        (WebResourceLoadScheduler::suspendPendingRequests):
     22        (WebResourceLoadScheduler::resumePendingRequests):
     23        (WebResourceLoadScheduler::scheduleServePendingRequests):
     24        (WebResourceLoadScheduler::requestTimerFired):
     25        (WebResourceLoadScheduler::HostInformation::HostInformation):
     26        (WebResourceLoadScheduler::HostInformation::~HostInformation):
     27        (WebResourceLoadScheduler::HostInformation::priorityToIndex):
     28        (WebResourceLoadScheduler::HostInformation::schedule):
     29        (WebResourceLoadScheduler::HostInformation::addLoadInProgress):
     30        (WebResourceLoadScheduler::HostInformation::remove):
     31        (WebResourceLoadScheduler::HostInformation::hasRequests):
     32        (WebResourceLoadScheduler::HostInformation::limitRequests):
     33        (WebResourceLoadScheduler::createPingHandle):
     34        (WebCore::ResourceLoadScheduler::hostForURL): Deleted.
     35        (WebCore::resourceLoadScheduler): Deleted.
     36        (WebCore::ResourceLoadScheduler::ResourceLoadScheduler): Deleted.
     37        (WebCore::ResourceLoadScheduler::~ResourceLoadScheduler): Deleted.
     38        (WebCore::ResourceLoadScheduler::scheduleSubresourceLoad): Deleted.
     39        (WebCore::ResourceLoadScheduler::schedulePluginStreamLoad): Deleted.
     40        (WebCore::ResourceLoadScheduler::scheduleLoad): Deleted.
     41        (WebCore::ResourceLoadScheduler::remove): Deleted.
     42        (WebCore::ResourceLoadScheduler::setDefersLoading): Deleted.
     43        (WebCore::ResourceLoadScheduler::crossOriginRedirectReceived): Deleted.
     44        (WebCore::ResourceLoadScheduler::servePendingRequests): Deleted.
     45        (WebCore::ResourceLoadScheduler::suspendPendingRequests): Deleted.
     46        (WebCore::ResourceLoadScheduler::resumePendingRequests): Deleted.
     47        (WebCore::ResourceLoadScheduler::scheduleServePendingRequests): Deleted.
     48        (WebCore::ResourceLoadScheduler::requestTimerFired): Deleted.
     49        (WebCore::ResourceLoadScheduler::HostInformation::HostInformation): Deleted.
     50        (WebCore::ResourceLoadScheduler::HostInformation::~HostInformation): Deleted.
     51        (WebCore::ResourceLoadScheduler::HostInformation::priorityToIndex): Deleted.
     52        (WebCore::ResourceLoadScheduler::HostInformation::schedule): Deleted.
     53        (WebCore::ResourceLoadScheduler::HostInformation::addLoadInProgress): Deleted.
     54        (WebCore::ResourceLoadScheduler::HostInformation::remove): Deleted.
     55        (WebCore::ResourceLoadScheduler::HostInformation::hasRequests): Deleted.
     56        (WebCore::ResourceLoadScheduler::HostInformation::limitRequests): Deleted.
     57        * WebCoreSupport/WebResourceLoadScheduler.h: Copied from Source/WebCore/loader/ResourceLoadScheduler.h.
     58        (WebResourceLoadScheduler::isSerialLoadingEnabled):
     59        (WebResourceLoadScheduler::setSerialLoadingEnabled):
     60        (WebResourceLoadScheduler::HostInformation::name):
     61        (WebResourceLoadScheduler::HostInformation::requestsPending):
     62        (WebCore::ResourceLoadScheduler::isSerialLoadingEnabled): Deleted.
     63        (WebCore::ResourceLoadScheduler::setSerialLoadingEnabled): Deleted.
     64        (WebCore::ResourceLoadScheduler::Suspender::Suspender): Deleted.
     65        (WebCore::ResourceLoadScheduler::Suspender::~Suspender): Deleted.
     66        (WebCore::ResourceLoadScheduler::HostInformation::name): Deleted.
     67        (WebCore::ResourceLoadScheduler::HostInformation::requestsPending): Deleted.
     68        * WebKit.xcodeproj/project.pbxproj:
     69
    1702015-10-29  Alex Christensen  <achristensen@webkit.org>
    271
  • trunk/Source/WebKit/WebCoreSupport/WebResourceLoadScheduler.cpp

    r192880 r192995  
    44    Copyright (C) 2002 Waldo Bastian (bastian@kde.org)
    55    Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com)
    6     Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
     6    Copyright (C) 2004-2008, 2015 Apple Inc. All rights reserved.
    77    Copyright (C) 2010 Google Inc. All rights reserved.
    88
     
    2323 */
    2424
    25 #include "config.h"
    26 #include "ResourceLoadScheduler.h"
    27 
    28 #include "Document.h"
    29 #include "DocumentLoader.h"
    30 #include "Frame.h"
    31 #include "FrameLoader.h"
    32 #include "LoaderStrategy.h"
    33 #include "Logging.h"
    34 #include "NetscapePlugInStreamLoader.h"
    35 #include "PlatformStrategies.h"
    36 #include "ResourceLoader.h"
    37 #include "ResourceRequest.h"
    38 #include "SubresourceLoader.h"
    39 #include "URL.h"
     25#include "WebResourceLoadScheduler.h"
     26
     27#include <WebCore/Document.h>
     28#include <WebCore/DocumentLoader.h>
     29#include <WebCore/Frame.h>
     30#include <WebCore/FrameLoader.h>
     31#include <WebCore/Logging.h>
     32#include <WebCore/NetscapePlugInStreamLoader.h>
     33#include <WebCore/PingHandle.h>
     34#include <WebCore/PlatformStrategies.h>
     35#include <WebCore/ResourceHandle.h>
     36#include <WebCore/ResourceRequest.h>
     37#include <WebCore/SubresourceLoader.h>
     38#include <WebCore/URL.h>
    4039#include <wtf/MainThread.h>
    4140#include <wtf/TemporaryChange.h>
     
    4342
    4443#if PLATFORM(IOS)
    45 #include <RuntimeApplicationChecksIOS.h>
     44#include <WebCore/RuntimeApplicationChecksIOS.h>
    4645#endif
    4746
    4847#if USE(QUICK_LOOK)
    49 #include "QuickLook.h"
    50 #endif
    51 
    52 namespace WebCore {
     48#include <WebCore/QuickLook.h>
     49#endif
    5350
    5451// Match the parallel connection count used by the networking layer.
     
    6158#endif
    6259
    63 ResourceLoadScheduler::HostInformation* ResourceLoadScheduler::hostForURL(const URL& url, CreateHostPolicy createHostPolicy)
     60using namespace WebCore;
     61
     62WebResourceLoadScheduler& webResourceLoadScheduler()
     63{
     64    return static_cast<WebResourceLoadScheduler&>(*platformStrategies()->loaderStrategy());
     65}
     66
     67WebResourceLoadScheduler::HostInformation* WebResourceLoadScheduler::hostForURL(const URL& url, CreateHostPolicy createHostPolicy)
    6468{
    6569    if (!url.protocolIsInHTTPFamily())
     
    7680}
    7781
    78 ResourceLoadScheduler* resourceLoadScheduler()
    79 {
    80     ASSERT(isMainThread());
    81     static ResourceLoadScheduler* globalScheduler = nullptr;
    82    
    83     if (!globalScheduler) {
    84         static bool isCallingOutToStrategy = false;
    85        
    86         // If we're re-entering resourceLoadScheduler() while calling out to the LoaderStrategy,
    87         // then the LoaderStrategy is trying to use the default resourceLoadScheduler.
    88         // So we'll create it here and start using it.
    89         if (isCallingOutToStrategy) {
    90             globalScheduler = new ResourceLoadScheduler;
    91             return globalScheduler;
    92         }
    93        
    94         TemporaryChange<bool> recursionGuard(isCallingOutToStrategy, true);
    95         globalScheduler = platformStrategies()->loaderStrategy()->resourceLoadScheduler();
    96     }
    97 
    98     return globalScheduler;
    99 }
    100 
    101 ResourceLoadScheduler::ResourceLoadScheduler()
     82WebResourceLoadScheduler::WebResourceLoadScheduler()
    10283    : m_nonHTTPProtocolHost(new HostInformation(String(), maxRequestsInFlightForNonHTTPProtocols))
    103     , m_requestTimer(*this, &ResourceLoadScheduler::requestTimerFired)
     84    , m_requestTimer(*this, &WebResourceLoadScheduler::requestTimerFired)
    10485    , m_suspendPendingRequestsCount(0)
    10586    , m_isSerialLoadingEnabled(false)
     
    10889}
    10990
    110 ResourceLoadScheduler::~ResourceLoadScheduler()
    111 {
    112 }
    113 
    114 RefPtr<SubresourceLoader> ResourceLoadScheduler::scheduleSubresourceLoad(Frame* frame, CachedResource* resource, const ResourceRequest& request, const ResourceLoaderOptions& options)
     91WebResourceLoadScheduler::~WebResourceLoadScheduler()
     92{
     93}
     94
     95RefPtr<SubresourceLoader> WebResourceLoadScheduler::loadResource(Frame* frame, CachedResource* resource, const ResourceRequest& request, const ResourceLoaderOptions& options)
    11596{
    11697    RefPtr<SubresourceLoader> loader = SubresourceLoader::create(frame, resource, request, options);
     
    129110}
    130111
    131 RefPtr<NetscapePlugInStreamLoader> ResourceLoadScheduler::schedulePluginStreamLoad(Frame* frame, NetscapePlugInStreamLoaderClient* client, const ResourceRequest& request)
     112void WebResourceLoadScheduler::loadResourceSynchronously(NetworkingContext* context, unsigned long, const ResourceRequest& request, StoredCredentials storedCredentials, ClientCredentialPolicy, ResourceError& error, ResourceResponse& response, Vector<char>& data)
     113{
     114    ResourceHandle::loadResourceSynchronously(context, request, storedCredentials, error, response, data);
     115}
     116
     117RefPtr<NetscapePlugInStreamLoader> WebResourceLoadScheduler::schedulePluginStreamLoad(Frame* frame, NetscapePlugInStreamLoaderClient* client, const ResourceRequest& request)
    132118{
    133119    RefPtr<NetscapePlugInStreamLoader> loader = NetscapePlugInStreamLoader::create(frame, client, request);
     
    137123}
    138124
    139 void ResourceLoadScheduler::scheduleLoad(ResourceLoader* resourceLoader)
     125void WebResourceLoadScheduler::scheduleLoad(ResourceLoader* resourceLoader)
    140126{
    141127    ASSERT(resourceLoader);
    142128
    143     LOG(ResourceLoading, "ResourceLoadScheduler::load resource %p '%s'", resourceLoader, resourceLoader->url().string().latin1().data());
     129    LOG(ResourceLoading, "WebResourceLoadScheduler::load resource %p '%s'", resourceLoader, resourceLoader->url().string().latin1().data());
    144130
    145131#if PLATFORM(IOS)
     
    195181}
    196182
    197 void ResourceLoadScheduler::remove(ResourceLoader* resourceLoader)
     183void WebResourceLoadScheduler::remove(ResourceLoader* resourceLoader)
    198184{
    199185    ASSERT(resourceLoader);
     
    214200}
    215201
    216 void ResourceLoadScheduler::setDefersLoading(ResourceLoader*, bool)
    217 {
    218 }
    219 
    220 void ResourceLoadScheduler::crossOriginRedirectReceived(ResourceLoader* resourceLoader, const URL& redirectURL)
     202void WebResourceLoadScheduler::setDefersLoading(ResourceLoader*, bool)
     203{
     204}
     205
     206void WebResourceLoadScheduler::crossOriginRedirectReceived(ResourceLoader* resourceLoader, const URL& redirectURL)
    221207{
    222208    HostInformation* oldHost = hostForURL(resourceLoader->url());
     
    234220}
    235221
    236 void ResourceLoadScheduler::servePendingRequests(ResourceLoadPriority minimumPriority)
    237 {
    238     LOG(ResourceLoading, "ResourceLoadScheduler::servePendingRequests. m_suspendPendingRequestsCount=%d", m_suspendPendingRequestsCount);
     222void WebResourceLoadScheduler::servePendingRequests(ResourceLoadPriority minimumPriority)
     223{
     224    LOG(ResourceLoading, "WebResourceLoadScheduler::servePendingRequests. m_suspendPendingRequestsCount=%d", m_suspendPendingRequestsCount);
    239225    if (isSuspendingPendingRequests())
    240226        return;
     
    255241}
    256242
    257 void ResourceLoadScheduler::servePendingRequests(HostInformation* host, ResourceLoadPriority minimumPriority)
    258 {
    259     LOG(ResourceLoading, "ResourceLoadScheduler::servePendingRequests HostInformation.m_name='%s'", host->name().latin1().data());
     243void WebResourceLoadScheduler::servePendingRequests(HostInformation* host, ResourceLoadPriority minimumPriority)
     244{
     245    LOG(ResourceLoading, "WebResourceLoadScheduler::servePendingRequests HostInformation.m_name='%s'", host->name().latin1().data());
    260246
    261247    auto priority = ResourceLoadPriority::Highest;
     
    289275}
    290276
    291 void ResourceLoadScheduler::suspendPendingRequests()
     277void WebResourceLoadScheduler::suspendPendingRequests()
    292278{
    293279    ++m_suspendPendingRequestsCount;
    294280}
    295281
    296 void ResourceLoadScheduler::resumePendingRequests()
     282void WebResourceLoadScheduler::resumePendingRequests()
    297283{
    298284    ASSERT(m_suspendPendingRequestsCount);
     
    304290}
    305291   
    306 void ResourceLoadScheduler::scheduleServePendingRequests()
    307 {
    308     LOG(ResourceLoading, "ResourceLoadScheduler::scheduleServePendingRequests, m_requestTimer.isActive()=%u", m_requestTimer.isActive());
     292void WebResourceLoadScheduler::scheduleServePendingRequests()
     293{
     294    LOG(ResourceLoading, "WebResourceLoadScheduler::scheduleServePendingRequests, m_requestTimer.isActive()=%u", m_requestTimer.isActive());
    309295    if (!m_requestTimer.isActive())
    310296        m_requestTimer.startOneShot(0);
    311297}
    312298
    313 void ResourceLoadScheduler::requestTimerFired()
    314 {
    315     LOG(ResourceLoading, "ResourceLoadScheduler::requestTimerFired\n");
     299void WebResourceLoadScheduler::requestTimerFired()
     300{
     301    LOG(ResourceLoading, "WebResourceLoadScheduler::requestTimerFired\n");
    316302    servePendingRequests();
    317303}
    318304
    319 ResourceLoadScheduler::HostInformation::HostInformation(const String& name, unsigned maxRequestsInFlight)
     305WebResourceLoadScheduler::HostInformation::HostInformation(const String& name, unsigned maxRequestsInFlight)
    320306    : m_name(name)
    321307    , m_maxRequestsInFlight(maxRequestsInFlight)
     
    323309}
    324310
    325 ResourceLoadScheduler::HostInformation::~HostInformation()
     311WebResourceLoadScheduler::HostInformation::~HostInformation()
    326312{
    327313    ASSERT(!hasRequests());
    328314}
    329315
    330 unsigned ResourceLoadScheduler::HostInformation::priorityToIndex(ResourceLoadPriority priority)
     316unsigned WebResourceLoadScheduler::HostInformation::priorityToIndex(ResourceLoadPriority priority)
    331317{
    332318    switch (priority) {
     
    346332}
    347333
    348 void ResourceLoadScheduler::HostInformation::schedule(ResourceLoader* resourceLoader, ResourceLoadPriority priority)
     334void WebResourceLoadScheduler::HostInformation::schedule(ResourceLoader* resourceLoader, ResourceLoadPriority priority)
    349335{
    350336    m_requestsPending[priorityToIndex(priority)].append(resourceLoader);
    351337}
    352338   
    353 void ResourceLoadScheduler::HostInformation::addLoadInProgress(ResourceLoader* resourceLoader)
     339void WebResourceLoadScheduler::HostInformation::addLoadInProgress(ResourceLoader* resourceLoader)
    354340{
    355341    LOG(ResourceLoading, "HostInformation '%s' loading '%s'. Current count %d", m_name.latin1().data(), resourceLoader->url().string().latin1().data(), m_requestsLoading.size());
     
    357343}
    358344   
    359 void ResourceLoadScheduler::HostInformation::remove(ResourceLoader* resourceLoader)
     345void WebResourceLoadScheduler::HostInformation::remove(ResourceLoader* resourceLoader)
    360346{
    361347    if (m_requestsLoading.remove(resourceLoader))
     
    372358}
    373359
    374 bool ResourceLoadScheduler::HostInformation::hasRequests() const
     360bool WebResourceLoadScheduler::HostInformation::hasRequests() const
    375361{
    376362    if (!m_requestsLoading.isEmpty())
     
    383369}
    384370
    385 bool ResourceLoadScheduler::HostInformation::limitRequests(ResourceLoadPriority priority) const
     371bool WebResourceLoadScheduler::HostInformation::limitRequests(ResourceLoadPriority priority) const
    386372{
    387373    if (priority == ResourceLoadPriority::VeryLow && !m_requestsLoading.isEmpty())
    388374        return true;
    389     return m_requestsLoading.size() >= (resourceLoadScheduler()->isSerialLoadingEnabled() ? 1 : m_maxRequestsInFlight);
    390 }
    391 
    392 } // namespace WebCore
     375    return m_requestsLoading.size() >= (webResourceLoadScheduler().isSerialLoadingEnabled() ? 1 : m_maxRequestsInFlight);
     376}
     377
     378void WebResourceLoadScheduler::createPingHandle(NetworkingContext* networkingContext, ResourceRequest& request, bool shouldUseCredentialStorage)
     379{
     380    // PingHandle manages its own lifetime, deleting itself when its purpose has been fulfilled.
     381    new PingHandle(networkingContext, request, shouldUseCredentialStorage, PingHandle::UsesAsyncCallbacks::No);
     382}
     383
  • trunk/Source/WebKit/WebCoreSupport/WebResourceLoadScheduler.h

    r192880 r192995  
    22    Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de)
    33    Copyright (C) 2001 Dirk Mueller <mueller@kde.org>
    4     Copyright (C) 2004, 2006, 2007, 2008 Apple Inc. All rights reserved.
     4    Copyright (C) 2004, 2006-2008, 2015 Apple Inc. All rights reserved.
    55    Copyright (C) 2010 Google Inc. All rights reserved.
    66
     
    2121 */
    2222
    23 #ifndef ResourceLoadScheduler_h
    24 #define ResourceLoadScheduler_h
     23#ifndef WebResourceLoadScheduler_h
     24#define WebResourceLoadScheduler_h
    2525
    26 #include "FrameLoaderTypes.h"
    27 #include "ResourceLoaderOptions.h"
    28 #include "ResourceLoadPriority.h"
    29 #include "Timer.h"
     26#include <WebCore/FrameLoaderTypes.h>
     27#include <WebCore/LoaderStrategy.h>
     28#include <WebCore/ResourceLoadPriority.h>
     29#include <WebCore/ResourceLoaderOptions.h>
     30#include <WebCore/Timer.h>
    3031#include <array>
    3132#include <wtf/Deque.h>
     
    3637#include <wtf/text/WTFString.h>
    3738
    38 namespace WebCore {
     39class WebResourceLoadScheduler;
    3940
    40 class CachedResource;
    41 class Frame;
    42 class URL;
    43 class NetscapePlugInStreamLoader;
    44 class NetscapePlugInStreamLoaderClient;
    45 class ResourceLoader;
    46 class ResourceRequest;
    47 class SubresourceLoader;
     41WebResourceLoadScheduler& webResourceLoadScheduler();
    4842
    49 class ResourceLoadScheduler {
    50     WTF_MAKE_NONCOPYABLE(ResourceLoadScheduler); WTF_MAKE_FAST_ALLOCATED;
     43class WebResourceLoadScheduler : public WebCore::LoaderStrategy {
     44    WTF_MAKE_NONCOPYABLE(WebResourceLoadScheduler); WTF_MAKE_FAST_ALLOCATED;
    5145public:
    52     WEBCORE_EXPORT friend ResourceLoadScheduler* resourceLoadScheduler();
     46    WebResourceLoadScheduler();
    5347
    54     WEBCORE_EXPORT virtual RefPtr<SubresourceLoader> scheduleSubresourceLoad(Frame*, CachedResource*, const ResourceRequest&, const ResourceLoaderOptions&);
    55     WEBCORE_EXPORT virtual RefPtr<NetscapePlugInStreamLoader> schedulePluginStreamLoad(Frame*, NetscapePlugInStreamLoaderClient*, const ResourceRequest&);
    56     WEBCORE_EXPORT virtual void remove(ResourceLoader*);
    57     virtual void setDefersLoading(ResourceLoader*, bool);
    58     virtual void crossOriginRedirectReceived(ResourceLoader*, const URL& redirectURL);
     48    RefPtr<WebCore::SubresourceLoader> loadResource(WebCore::Frame*, WebCore::CachedResource*, const WebCore::ResourceRequest&, const WebCore::ResourceLoaderOptions&) override;
     49    void loadResourceSynchronously(WebCore::NetworkingContext*, unsigned long, const WebCore::ResourceRequest&, WebCore::StoredCredentials, WebCore::ClientCredentialPolicy, WebCore::ResourceError&, WebCore::ResourceResponse&, Vector<char>&) override;
     50    void remove(WebCore::ResourceLoader*) override;
     51    void setDefersLoading(WebCore::ResourceLoader*, bool) override;
     52    void crossOriginRedirectReceived(WebCore::ResourceLoader*, const WebCore::URL& redirectURL) override;
    5953   
    60     WEBCORE_EXPORT virtual void servePendingRequests(ResourceLoadPriority minimumPriority = ResourceLoadPriority::VeryLow);
    61     WEBCORE_EXPORT virtual void suspendPendingRequests();
    62     WEBCORE_EXPORT virtual void resumePendingRequests();
    63    
     54    void servePendingRequests(WebCore::ResourceLoadPriority minimumPriority = WebCore::ResourceLoadPriority::VeryLow) override;
     55    void suspendPendingRequests() override;
     56    void resumePendingRequests() override;
     57
     58    void createPingHandle(WebCore::NetworkingContext*, WebCore::ResourceRequest&, bool shouldUseCredentialStorage) override;
     59
    6460    bool isSerialLoadingEnabled() const { return m_isSerialLoadingEnabled; }
    65     virtual void setSerialLoadingEnabled(bool b) { m_isSerialLoadingEnabled = b; }
     61    void setSerialLoadingEnabled(bool b) { m_isSerialLoadingEnabled = b; }
    6662
    67     class Suspender {
    68     public:
    69         explicit Suspender(ResourceLoadScheduler& scheduler) : m_scheduler(scheduler) { m_scheduler.suspendPendingRequests(); }
    70         ~Suspender() { m_scheduler.resumePendingRequests(); }
    71     private:
    72         ResourceLoadScheduler& m_scheduler;
    73     };
     63    RefPtr<WebCore::NetscapePlugInStreamLoader> schedulePluginStreamLoad(WebCore::Frame*, WebCore::NetscapePlugInStreamLoaderClient*, const WebCore::ResourceRequest&);
    7464
    7565protected:
    76     WEBCORE_EXPORT ResourceLoadScheduler();
    77     WEBCORE_EXPORT virtual ~ResourceLoadScheduler();
     66    virtual ~WebResourceLoadScheduler();
    7867
    7968private:
    80     void scheduleLoad(ResourceLoader*);
     69    void scheduleLoad(WebCore::ResourceLoader*);
    8170    void scheduleServePendingRequests();
    8271    void requestTimerFired();
     
    9180       
    9281        const String& name() const { return m_name; }
    93         void schedule(ResourceLoader*, ResourceLoadPriority = ResourceLoadPriority::VeryLow);
    94         void addLoadInProgress(ResourceLoader*);
    95         void remove(ResourceLoader*);
     82        void schedule(WebCore::ResourceLoader*, WebCore::ResourceLoadPriority = WebCore::ResourceLoadPriority::VeryLow);
     83        void addLoadInProgress(WebCore::ResourceLoader*);
     84        void remove(WebCore::ResourceLoader*);
    9685        bool hasRequests() const;
    97         bool limitRequests(ResourceLoadPriority) const;
     86        bool limitRequests(WebCore::ResourceLoadPriority) const;
    9887
    99         typedef Deque<RefPtr<ResourceLoader>> RequestQueue;
    100         RequestQueue& requestsPending(ResourceLoadPriority priority) { return m_requestsPending[priorityToIndex(priority)]; }
     88        typedef Deque<RefPtr<WebCore::ResourceLoader>> RequestQueue;
     89        RequestQueue& requestsPending(WebCore::ResourceLoadPriority priority) { return m_requestsPending[priorityToIndex(priority)]; }
    10190
    10291    private:
    103         static unsigned priorityToIndex(ResourceLoadPriority);
     92        static unsigned priorityToIndex(WebCore::ResourceLoadPriority);
    10493
    105         std::array<RequestQueue, resourceLoadPriorityCount> m_requestsPending;
    106         typedef HashSet<RefPtr<ResourceLoader>> RequestMap;
     94        std::array<RequestQueue, WebCore::resourceLoadPriorityCount> m_requestsPending;
     95        typedef HashSet<RefPtr<WebCore::ResourceLoader>> RequestMap;
    10796        RequestMap m_requestsLoading;
    10897        const String m_name;
     
    115104    };
    116105   
    117     HostInformation* hostForURL(const URL&, CreateHostPolicy = FindOnly);
    118     WEBCORE_EXPORT void servePendingRequests(HostInformation*, ResourceLoadPriority);
     106    HostInformation* hostForURL(const WebCore::URL&, CreateHostPolicy = FindOnly);
     107    WEBCORE_EXPORT void servePendingRequests(HostInformation*, WebCore::ResourceLoadPriority);
    119108
    120109    typedef HashMap<String, HostInformation*, StringHash> HostMap;
     
    122111    HostInformation* m_nonHTTPProtocolHost;
    123112       
    124     Timer m_requestTimer;
     113    WebCore::Timer m_requestTimer;
    125114
    126115    unsigned m_suspendPendingRequestsCount;
     
    128117};
    129118
    130 WEBCORE_EXPORT ResourceLoadScheduler* resourceLoadScheduler();
    131 
    132 }
    133 
    134119#endif
  • trunk/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj

    r188662 r192995  
    315315    <ClCompile Include="..\..\cf\WebCoreSupport\WebInspectorClientCF.cpp" />
    316316    <ClCompile Include="..\..\WebCoreSupport\WebViewGroup.cpp" />
     317    <ClCompile Include="..\..\WebCoreSupport\WebResourceLoadScheduler.cpp" />
    317318    <ClCompile Include="..\..\win\Plugins\npapi.cpp" />
    318319    <ClCompile Include="..\..\win\Plugins\PluginDatabase.cpp" />
     
    470471    <ClInclude Include="..\..\Storage\WebStorageNamespaceProvider.h" />
    471472    <ClInclude Include="..\..\WebCoreSupport\WebViewGroup.h" />
     473    <ClInclude Include="..\..\WebCoreSupport\WebResourceLoadScheduler.h" />
    472474    <ClInclude Include="..\..\win\Plugins\PluginDatabase.h" />
    473475    <ClInclude Include="..\..\win\Plugins\PluginDebug.h" />
  • trunk/Source/WebKit/WebKit.vcxproj/WebKit/WebKit.vcxproj.filters

    r186899 r192995  
    339339      <Filter>Sources</Filter>
    340340    </ClCompile>
     341    <ClCompile Include="..\..\WebCoreSupport\WebResourceLoadScheduler.cpp">
     342      <Filter>Sources</Filter>
     343    </ClCompile>
    341344    <ClCompile Include="..\..\win\WebCoreSupport\WebVisitedLinkStore.cpp">
    342345      <Filter>WebCoreSupport</Filter>
     
    667670    </ClInclude>
    668671    <ClInclude Include="..\..\WebCoreSupport\WebViewGroup.h">
     672      <Filter>Header Files</Filter>
     673    </ClInclude>
     674    <ClInclude Include="..\..\WebCoreSupport\WebResourceLoadScheduler.h">
    669675      <Filter>Header Files</Filter>
    670676    </ClInclude>
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r190201 r192995  
    456456                E169836211346D1B00894115 /* ProxyRuntimeObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E169836111346D1B00894115 /* ProxyRuntimeObject.h */; };
    457457                E169836C11346D5600894115 /* ProxyRuntimeObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = E169836B11346D5600894115 /* ProxyRuntimeObject.mm */; };
     458                E4AEF97B1C0DF4BC00B01727 /* WebResourceLoadScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4AEF9791C0DF4BC00B01727 /* WebResourceLoadScheduler.cpp */; };
     459                E4AEF97C1C0DF4BC00B01727 /* WebResourceLoadScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = E4AEF97A1C0DF4BC00B01727 /* WebResourceLoadScheduler.h */; };
    458460                ED5B9524111B725A00472298 /* WebLocalizableStrings.mm in Sources */ = {isa = PBXBuildFile; fileRef = ED5B9523111B725A00472298 /* WebLocalizableStrings.mm */; };
    459461                ED7F6D8B0980683500C235ED /* WebNSDataExtrasPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = ED7F6D8A0980683500C235ED /* WebNSDataExtrasPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    869871                E169836111346D1B00894115 /* ProxyRuntimeObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProxyRuntimeObject.h; sourceTree = "<group>"; };
    870872                E169836B11346D5600894115 /* ProxyRuntimeObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ProxyRuntimeObject.mm; sourceTree = "<group>"; };
     873                E4AEF9791C0DF4BC00B01727 /* WebResourceLoadScheduler.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = WebResourceLoadScheduler.cpp; path = WebCoreSupport/WebResourceLoadScheduler.cpp; sourceTree = SOURCE_ROOT; };
     874                E4AEF97A1C0DF4BC00B01727 /* WebResourceLoadScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebResourceLoadScheduler.h; path = WebCoreSupport/WebResourceLoadScheduler.h; sourceTree = SOURCE_ROOT; };
    871875                ED21B9810528F7AA003299AC /* WebDocumentInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebDocumentInternal.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    872876                ED2B2474033A2DA800C1A526 /* WebNSPasteboardExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebNSPasteboardExtras.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
     
    15961600                                1A6A208C1886154600E50F5F /* WebProgressTrackerClient.h */,
    15971601                                1A6A208B1886154600E50F5F /* WebProgressTrackerClient.mm */,
     1602                                E4AEF9791C0DF4BC00B01727 /* WebResourceLoadScheduler.cpp */,
     1603                                E4AEF97A1C0DF4BC00B01727 /* WebResourceLoadScheduler.h */,
    15981604                                A5DEFC0711D5331C00885273 /* WebSecurityOrigin.mm */,
    15991605                                A5DEFC0811D5331C00885273 /* WebSecurityOriginInternal.h */,
     
    18891895                                9398107E0824BF01008DF038 /* WebNSURLExtras.h in Headers */,
    18901896                                65E0F88408500917007E5CB9 /* WebNSURLRequestExtras.h in Headers */,
     1897                                E4AEF97C1C0DF4BC00B01727 /* WebResourceLoadScheduler.h in Headers */,
    18911898                                65E0F9E608500F23007E5CB9 /* WebNSUserDefaultsExtras.h in Headers */,
    18921899                                939810240824BF01008DF038 /* WebNSViewExtras.h in Headers */,
     
    22372244                                A10C1D3718202FC50036883A /* WebGeolocationProviderIOS.mm in Sources */,
    22382245                                939811130824BF01008DF038 /* WebHistory.mm in Sources */,
     2246                                E4AEF97B1C0DF4BC00B01727 /* WebResourceLoadScheduler.cpp in Sources */,
    22392247                                939810BD0824BF01008DF038 /* WebHistoryItem.mm in Sources */,
    22402248                                1AAF5FC00EDE3A92008D883D /* WebHostedNetscapePluginView.mm in Sources */,
  • trunk/Source/WebKit/mac/ChangeLog

    r192937 r192995  
     12015-12-02  Antti Koivisto  <antti@apple.com>
     2
     3        Move ResourceLoadScheduler to WebKit1
     4        https://bugs.webkit.org/show_bug.cgi?id=151743
     5
     6        Reviewed by Alex Christensen.
     7
     8        * Plugins/Hosted/HostedNetscapePluginStream.mm:
     9        (WebKit::HostedNetscapePluginStream::start):
     10        (WebKit::HostedNetscapePluginStream::stop):
     11        * Plugins/WebNetscapePluginStream.mm:
     12        (WebNetscapePluginStream::start):
     13        (WebNetscapePluginStream::stop):
     14        * WebCoreSupport/WebPlatformStrategies.h:
     15        * WebCoreSupport/WebPlatformStrategies.mm:
     16        (WebPlatformStrategies::createLoaderStrategy):
     17        (WebPlatformStrategies::createPasteboardStrategy):
     18        (WebPlatformStrategies::createPluginStrategy):
     19        (WebPlatformStrategies::createBlobRegistry):
     20        (WebPlatformStrategies::cookiesForDOM):
     21        * WebView/WebView.mm:
     22        (-[WebView _dispatchPendingLoadRequests]):
     23        (+[WebView _setLoadResourcesSerially:]):
     24        (+[WebView _HTTPPipeliningEnabled]):
     25
    1262015-12-01  Yusuke Suzuki  <utatane.tea@gmail.com>
    227
  • trunk/Source/WebKit/mac/Plugins/Hosted/HostedNetscapePluginStream.mm

    r187886 r192995  
    3737#import "WebNSURLExtras.h"
    3838#import "WebNSURLRequestExtras.h"
     39#import "WebResourceLoadScheduler.h"
    3940#import <WebCore/Document.h>
    4041#import <WebCore/DocumentLoader.h>
    4142#import <WebCore/Frame.h>
    4243#import <WebCore/FrameLoader.h>
    43 #import <WebCore/ResourceLoadScheduler.h>
     44#import <WebCore/PlatformStrategies.h>
    4445#import <WebCore/SecurityOrigin.h>
    4546#import <WebCore/SecurityPolicy.h>
     
    221222    ASSERT(!m_frameLoader);
    222223    ASSERT(!m_loader);
    223    
    224     m_loader = resourceLoadScheduler()->schedulePluginStreamLoad(core([m_instance->pluginView() webFrame]), this, m_request.get());
     224
     225    m_loader = webResourceLoadScheduler().schedulePluginStreamLoad(core([m_instance->pluginView() webFrame]), this, m_request.get());
    225226}
    226227
  • trunk/Source/WebKit/mac/Plugins/WebNetscapePluginStream.mm

    r187886 r192995  
    3838#import "WebNetscapePluginPackage.h"
    3939#import "WebNetscapePluginView.h"
     40#import "WebResourceLoadScheduler.h"
    4041#import <Foundation/NSURLResponse.h>
    4142#import <WebCore/Document.h>
     
    4445#import <WebCore/FrameLoader.h>
    4546#import <WebCore/JSDOMWindowBase.h>
    46 #import <WebCore/ResourceLoadScheduler.h>
     47#import <WebCore/LoaderStrategy.h>
     48#import <WebCore/PlatformStrategies.h>
    4749#import <WebCore/SecurityOrigin.h>
    4850#import <WebCore/SecurityPolicy.h>
     
    286288    ASSERT(!m_frameLoader);
    287289    ASSERT(!m_loader);
    288    
    289     m_loader = resourceLoadScheduler()->schedulePluginStreamLoad(core([m_pluginView.get() webFrame]), this, m_request.get());
     290
     291    m_loader = webResourceLoadScheduler().schedulePluginStreamLoad(core([m_pluginView.get() webFrame]), this, m_request.get());
    290292}
    291293
  • trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h

    r181562 r192995  
    3636struct PasteboardWebContent;
    3737
    38 class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::LoaderStrategy, private WebCore::PasteboardStrategy, private WebCore::PluginStrategy {
     38class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::PasteboardStrategy, private WebCore::PluginStrategy {
    3939public:
    4040    static void initializeIfNecessary();
     
    4848    virtual WebCore::PasteboardStrategy* createPasteboardStrategy() override;
    4949    virtual WebCore::PluginStrategy* createPluginStrategy() override;
     50    virtual WebCore::BlobRegistry* createBlobRegistry() override;
    5051
    5152    // WebCore::CookiesStrategy
     
    5758    virtual void deleteCookie(const WebCore::NetworkStorageSession&, const WebCore::URL&, const String&) override;
    5859
    59     // WebCore::LoaderStrategy
    60     // - Using default implementation.
    6160
    6261    // WebCore::PluginStrategy
     
    6867    virtual void clearPluginClientPolicies() override;
    6968#endif
    70 
    71     // WebCore::LoaderStrategy
    72     // - Using default implementation.
    7369
    7470    // WebCore::PasteboardStrategy
  • trunk/Source/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm

    r187891 r192995  
    2929#import "WebPluginDatabase.h"
    3030#import "WebPluginPackage.h"
     31#import "WebResourceLoadScheduler.h"
     32#import <WebCore/BlobRegistryImpl.h>
    3133#import <WebCore/BlockExceptions.h>
    3234#import <WebCore/Color.h>
     
    6365LoaderStrategy* WebPlatformStrategies::createLoaderStrategy()
    6466{
     67    return new WebResourceLoadScheduler;
     68}
     69
     70PasteboardStrategy* WebPlatformStrategies::createPasteboardStrategy()
     71{
    6572    return this;
    6673}
    6774
    68 PasteboardStrategy* WebPlatformStrategies::createPasteboardStrategy()
     75PluginStrategy* WebPlatformStrategies::createPluginStrategy()
    6976{
    7077    return this;
    7178}
    7279
    73 PluginStrategy* WebPlatformStrategies::createPluginStrategy()
    74 {
    75     return this;
     80BlobRegistry* WebPlatformStrategies::createBlobRegistry()
     81{
     82    return new WebCore::BlobRegistryImpl;
    7683}
    7784
  • trunk/Source/WebKit/mac/WebView/WebView.mm

    r192589 r192995  
    9696#import "WebPreferencesPrivate.h"
    9797#import "WebProgressTrackerClient.h"
     98#import "WebResourceLoadScheduler.h"
    9899#import "WebScriptDebugDelegate.h"
    99100#import "WebScriptWorldInternal.h"
     
    168169#import <WebCore/RenderWidget.h>
    169170#import <WebCore/ResourceHandle.h>
    170 #import <WebCore/ResourceLoadScheduler.h>
    171171#import <WebCore/ResourceRequest.h>
    172172#import <WebCore/RuntimeApplicationChecks.h>
     
    762762- (void)_dispatchPendingLoadRequests
    763763{
    764     resourceLoadScheduler()->servePendingRequests();
     764    webResourceLoadScheduler().servePendingRequests();
    765765}
    766766
     
    16171617{
    16181618    if (suspend)
    1619         resourceLoadScheduler()->suspendPendingRequests();
     1619        webResourceLoadScheduler().suspendPendingRequests();
    16201620    else
    1621         resourceLoadScheduler()->resumePendingRequests();
     1621        webResourceLoadScheduler().resumePendingRequests();
    16221622}
    16231623
     
    44834483{
    44844484    WebPlatformStrategies::initializeIfNecessary();
    4485     resourceLoadScheduler()->setSerialLoadingEnabled(serialize);
     4485
     4486    webResourceLoadScheduler().setSerialLoadingEnabled(serialize);
    44864487}
    44874488
  • trunk/Source/WebKit/win/Plugins/PluginStream.cpp

    r187886 r192995  
    3333#include "HTTPHeaderNames.h"
    3434#include "PluginDebug.h"
    35 #include "ResourceLoadScheduler.h"
    3635#include "SharedBuffer.h"
    3736#include "SubresourceLoader.h"
     37#include "WebResourceLoadScheduler.h"
    3838#include <wtf/StringExtras.h>
    3939#include <wtf/text/CString.h>
     
    9797{
    9898    ASSERT(!m_loadManually);
    99     m_loader = resourceLoadScheduler()->schedulePluginStreamLoad(m_frame, this, m_resourceRequest);
     99    m_loader = webResourceLoadScheduler().schedulePluginStreamLoad(m_frame, this, m_resourceRequest);
    100100}
    101101
  • trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.cpp

    r181562 r192995  
    2929#include "PluginDatabase.h"
    3030#include "WebFrameNetworkingContext.h"
     31#include "WebResourceLoadScheduler.h"
     32#include <WebCore/BlobRegistryImpl.h>
    3133#include <WebCore/Page.h>
    3234#include <WebCore/PageGroup.h>
     
    5557LoaderStrategy* WebPlatformStrategies::createLoaderStrategy()
    5658{
    57     return this;
     59    return new WebResourceLoadScheduler;
    5860}
    5961
     
    6668{
    6769    return this;
     70}
     71
     72BlobRegistry* WebPlatformStrategies::createBlobRegistry()
     73{
     74    return new BlobRegistryImpl;
    6875}
    6976
  • trunk/Source/WebKit/win/WebCoreSupport/WebPlatformStrategies.h

    r181562 r192995  
    3232#include <WebCore/PluginStrategy.h>
    3333
    34 class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::LoaderStrategy, private WebCore::PluginStrategy {
     34class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::PluginStrategy {
    3535public:
    3636    static void initialize();
     
    4444    virtual WebCore::PasteboardStrategy* createPasteboardStrategy();
    4545    virtual WebCore::PluginStrategy* createPluginStrategy();
     46    virtual WebCore::BlobRegistry* createBlobRegistry();
    4647
    4748    // WebCore::CookiesStrategy
  • trunk/Source/WebKit/win/WebView.cpp

    r192381 r192995  
    3535#include "PluginDatabase.h"
    3636#include "PluginView.h"
    37 #include "ResourceLoadScheduler.h"
    3837#include "SoftLinking.h"
    3938#include "SubframeLoader.h"
     
    6867#include "WebPlatformStrategies.h"
    6968#include "WebPreferences.h"
     69#include "WebResourceLoadScheduler.h"
    7070#include "WebScriptWorld.h"
    7171#include "WebStorageNamespaceProvider.h"
     
    74887488{
    74897489    WebPlatformStrategies::initialize();
    7490     resourceLoadScheduler()->setSerialLoadingEnabled(serialize);
     7490    webResourceLoadScheduler().setSerialLoadingEnabled(serialize);
    74917491    return S_OK;
    74927492}
     
    75047504HRESULT WebView::dispatchPendingLoadRequests()
    75057505{
    7506     resourceLoadScheduler()->servePendingRequests();
     7506    webResourceLoadScheduler().servePendingRequests();
    75077507    return S_OK;
    75087508}
  • trunk/Source/WebKit2/ChangeLog

    r192982 r192995  
     12015-12-02  Antti Koivisto  <antti@apple.com>
     2
     3        Move ResourceLoadScheduler to WebKit1
     4        https://bugs.webkit.org/show_bug.cgi?id=151743
     5
     6        Reviewed by Alex Christensen.
     7
     8        * NetworkProcess/NetworkProcessPlatformStrategies.cpp:
     9        (WebKit::NetworkProcessPlatformStrategies::createCookiesStrategy):
     10        (WebKit::NetworkProcessPlatformStrategies::createLoaderStrategy):
     11        (WebKit::NetworkProcessPlatformStrategies::createPasteboardStrategy):
     12        (WebKit::NetworkProcessPlatformStrategies::createPluginStrategy):
     13        (WebKit::NetworkProcessPlatformStrategies::createBlobRegistry):
     14        (WebKit::NetworkProcessPlatformStrategies::resourceLoadScheduler): Deleted.
     15        (WebKit::NetworkProcessPlatformStrategies::loadResourceSynchronously): Deleted.
     16        * NetworkProcess/NetworkProcessPlatformStrategies.h:
     17        * WebProcess/InjectedBundle/InjectedBundle.cpp:
     18        * WebProcess/Network/WebResourceLoadScheduler.cpp:
     19        (WebKit::WebResourceLoadScheduler::~WebResourceLoadScheduler):
     20        (WebKit::WebResourceLoadScheduler::loadResource):
     21        (WebKit::WebResourceLoadScheduler::resumePendingRequests):
     22        (WebKit::WebResourceLoadScheduler::networkProcessCrashed):
     23        (WebKit::WebResourceLoadScheduler::loadResourceSynchronously):
     24        (WebKit::WebResourceLoadScheduler::createPingHandle):
     25        (WebKit::WebResourceLoadScheduler::scheduleSubresourceLoad): Deleted.
     26        (WebKit::WebResourceLoadScheduler::setSerialLoadingEnabled): Deleted.
     27        * WebProcess/Network/WebResourceLoadScheduler.h:
     28        (WebKit::WebResourceLoadScheduler::webResourceLoaderForIdentifier):
     29        * WebProcess/Plugins/PluginView.cpp:
     30        (WebKit::PluginView::Stream::start):
     31        (WebKit::PluginView::Stream::cancel):
     32        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
     33        (WebKit::WebPlatformStrategies::createLoaderStrategy):
     34        (WebKit::WebPlatformStrategies::createPasteboardStrategy):
     35        (WebKit::WebPlatformStrategies::createPluginStrategy):
     36        (WebKit::WebPlatformStrategies::createBlobRegistry):
     37        (WebKit::WebPlatformStrategies::cookiesForDOM):
     38        (WebKit::WebPlatformStrategies::deleteCookie):
     39        (WebKit::WebPlatformStrategies::refreshPlugins):
     40        (WebKit::WebPlatformStrategies::resourceLoadScheduler): Deleted.
     41        (WebKit::WebPlatformStrategies::loadResourceSynchronously): Deleted.
     42        (WebKit::WebPlatformStrategies::createPingHandle): Deleted.
     43        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
     44
    1452015-12-02  Alex Christensen  <achristensen@webkit.org>
    246
  • trunk/Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.cpp

    r178310 r192995  
    4242CookiesStrategy* NetworkProcessPlatformStrategies::createCookiesStrategy()
    4343{
    44     return 0;
     44    return nullptr;
    4545}
    4646
    4747LoaderStrategy* NetworkProcessPlatformStrategies::createLoaderStrategy()
    4848{
    49     return this;
     49    return nullptr;
    5050}
    5151
    5252PasteboardStrategy* NetworkProcessPlatformStrategies::createPasteboardStrategy()
    5353{
    54     return 0;
     54    return nullptr;
    5555}
    5656
    5757PluginStrategy* NetworkProcessPlatformStrategies::createPluginStrategy()
    5858{
    59     return 0;
    60 }
    61 
    62 ResourceLoadScheduler* NetworkProcessPlatformStrategies::resourceLoadScheduler()
    63 {
    64     ASSERT_NOT_REACHED();
    65     return 0;
    66 }
    67 
    68 void NetworkProcessPlatformStrategies::loadResourceSynchronously(NetworkingContext*, unsigned long, const ResourceRequest&, StoredCredentials, ClientCredentialPolicy, ResourceError&, ResourceResponse&, Vector<char>&)
    69 {
    70     ASSERT_NOT_REACHED();
     59    return nullptr;
    7160}
    7261
  • trunk/Source/WebKit2/NetworkProcess/NetworkProcessPlatformStrategies.h

    r178310 r192995  
    3232namespace WebKit {
    3333
    34 class NetworkProcessPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::LoaderStrategy {
     34class NetworkProcessPlatformStrategies : public WebCore::PlatformStrategies {
    3535public:
    3636    static void initialize();
     
    3838private:
    3939    // WebCore::PlatformStrategies
    40     virtual WebCore::CookiesStrategy* createCookiesStrategy() override;
    41     virtual WebCore::LoaderStrategy* createLoaderStrategy() override;
    42     virtual WebCore::PasteboardStrategy* createPasteboardStrategy() override;
    43     virtual WebCore::PluginStrategy* createPluginStrategy() override;
    44 
    45     // WebCore::LoaderStrategy
    46     virtual WebCore::ResourceLoadScheduler* resourceLoadScheduler() override;
    47     virtual void loadResourceSynchronously(WebCore::NetworkingContext*, unsigned long resourceLoadIdentifier, const WebCore::ResourceRequest&, WebCore::StoredCredentials, WebCore::ClientCredentialPolicy, WebCore::ResourceError&, WebCore::ResourceResponse&, Vector<char>& data) override;
    48     virtual WebCore::BlobRegistry* createBlobRegistry() override;
     40    WebCore::CookiesStrategy* createCookiesStrategy() override;
     41    WebCore::LoaderStrategy* createLoaderStrategy() override;
     42    WebCore::PasteboardStrategy* createPasteboardStrategy() override;
     43    WebCore::PluginStrategy* createPluginStrategy() override;
     44    WebCore::BlobRegistry* createBlobRegistry() override;
    4945};
    5046
  • trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp

    r192093 r192995  
    6767#include <WebCore/PrintContext.h>
    6868#include <WebCore/ResourceHandle.h>
    69 #include <WebCore/ResourceLoadScheduler.h>
    7069#include <WebCore/ScriptController.h>
    7170#include <WebCore/SecurityOrigin.h>
  • trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.cpp

    r192697 r192995  
    2727#include "WebResourceLoadScheduler.h"
    2828
     29#include "HangDetectionDisabler.h"
    2930#include "Logging.h"
    3031#include "NetworkConnectionToWebProcessMessages.h"
     
    3637#include "WebFrame.h"
    3738#include "WebFrameLoaderClient.h"
     39#include "WebFrameNetworkingContext.h"
    3840#include "WebPage.h"
    3941#include "WebProcess.h"
     
    4648#include <WebCore/FrameLoader.h>
    4749#include <WebCore/NetscapePlugInStreamLoader.h>
     50#include <WebCore/PlatformStrategies.h>
    4851#include <WebCore/ReferrerPolicy.h>
    4952#include <WebCore/ResourceLoader.h>
     
    6669}
    6770
    68 RefPtr<SubresourceLoader> WebResourceLoadScheduler::scheduleSubresourceLoad(Frame* frame, CachedResource* resource, const ResourceRequest& request, const ResourceLoaderOptions& options)
     71RefPtr<SubresourceLoader> WebResourceLoadScheduler::loadResource(Frame* frame, CachedResource* resource, const ResourceRequest& request, const ResourceLoaderOptions& options)
    6972{
    7073    RefPtr<SubresourceLoader> loader = SubresourceLoader::create(frame, resource, request, options);
     
    270273}
    271274
    272 void WebResourceLoadScheduler::setSerialLoadingEnabled(bool)
    273 {
    274     // Network process does not reorder loads.
    275 }
    276 
    277275void WebResourceLoadScheduler::networkProcessCrashed()
    278276{
     
    284282}
    285283
     284void WebResourceLoadScheduler::loadResourceSynchronously(NetworkingContext* context, unsigned long resourceLoadIdentifier, const ResourceRequest& request, StoredCredentials storedCredentials, ClientCredentialPolicy clientCredentialPolicy, ResourceError& error, ResourceResponse& response, Vector<char>& data)
     285{
     286    WebFrameNetworkingContext* webContext = static_cast<WebFrameNetworkingContext*>(context);
     287    // FIXME: Some entities in WebCore use WebCore's "EmptyFrameLoaderClient" instead of having a proper WebFrameLoaderClient.
     288    // EmptyFrameLoaderClient shouldn't exist and everything should be using a WebFrameLoaderClient,
     289    // but in the meantime we have to make sure not to mis-cast.
     290    WebFrameLoaderClient* webFrameLoaderClient = webContext->webFrameLoaderClient();
     291    WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : 0;
     292    WebPage* webPage = webFrame ? webFrame->page() : 0;
     293
     294    NetworkResourceLoadParameters loadParameters;
     295    loadParameters.identifier = resourceLoadIdentifier;
     296    loadParameters.webPageID = webPage ? webPage->pageID() : 0;
     297    loadParameters.webFrameID = webFrame ? webFrame->frameID() : 0;
     298    loadParameters.sessionID = webPage ? webPage->sessionID() : SessionID::defaultSessionID();
     299    loadParameters.request = request;
     300    loadParameters.contentSniffingPolicy = SniffContent;
     301    loadParameters.allowStoredCredentials = storedCredentials;
     302    loadParameters.clientCredentialPolicy = clientCredentialPolicy;
     303    loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect = context->shouldClearReferrerOnHTTPSToHTTPRedirect();
     304
     305    data.resize(0);
     306
     307    HangDetectionDisabler hangDetectionDisabler;
     308
     309    if (!WebProcess::singleton().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad(loadParameters), Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::Reply(error, response, data), 0)) {
     310        response = ResourceResponse();
     311        error = internalError(request.url());
     312    }
     313}
     314
     315void WebResourceLoadScheduler::createPingHandle(NetworkingContext* networkingContext, ResourceRequest& request, bool shouldUseCredentialStorage)
     316{
     317    // It's possible that call to createPingHandle might be made during initial empty Document creation before a NetworkingContext exists.
     318    // It is not clear that we should send ping loads during that process anyways.
     319    if (!networkingContext)
     320        return;
     321
     322    WebFrameNetworkingContext* webContext = static_cast<WebFrameNetworkingContext*>(networkingContext);
     323    WebFrameLoaderClient* webFrameLoaderClient = webContext->webFrameLoaderClient();
     324    WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : nullptr;
     325    WebPage* webPage = webFrame ? webFrame->page() : nullptr;
     326   
     327    NetworkResourceLoadParameters loadParameters;
     328    loadParameters.request = request;
     329    loadParameters.sessionID = webPage ? webPage->sessionID() : SessionID::defaultSessionID();
     330    loadParameters.allowStoredCredentials = shouldUseCredentialStorage ? AllowStoredCredentials : DoNotAllowStoredCredentials;
     331    loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect = networkingContext->shouldClearReferrerOnHTTPSToHTTPRedirect();
     332
     333    WebProcess::singleton().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::LoadPing(loadParameters), 0);
     334}
     335
     336
    286337} // namespace WebKit
  • trunk/Source/WebKit2/WebProcess/Network/WebResourceLoadScheduler.h

    r192697 r192995  
    2828
    2929#include "WebResourceLoader.h"
    30 #include <WebCore/ResourceLoadPriority.h>
    31 #include <WebCore/ResourceLoadScheduler.h>
     30#include <WebCore/LoaderStrategy.h>
    3231#include <WebCore/ResourceLoader.h>
     32#include <wtf/HashSet.h>
    3333#include <wtf/RunLoop.h>
    3434
     
    3636
    3737class NetworkProcessConnection;
     38class WebResourceLoadScheduler;
    3839typedef uint64_t ResourceLoadIdentifier;
    3940
    40 class WebResourceLoadScheduler : public WebCore::ResourceLoadScheduler {
     41class WebResourceLoadScheduler : public WebCore::LoaderStrategy {
    4142    WTF_MAKE_NONCOPYABLE(WebResourceLoadScheduler); WTF_MAKE_FAST_ALLOCATED;
    4243public:
     
    4445    virtual ~WebResourceLoadScheduler();
    4546   
    46     virtual RefPtr<WebCore::SubresourceLoader> scheduleSubresourceLoad(WebCore::Frame*, WebCore::CachedResource*, const WebCore::ResourceRequest&, const WebCore::ResourceLoaderOptions&) override;
    47     virtual RefPtr<WebCore::NetscapePlugInStreamLoader> schedulePluginStreamLoad(WebCore::Frame*, WebCore::NetscapePlugInStreamLoaderClient*, const WebCore::ResourceRequest&) override;
    48    
     47    virtual RefPtr<WebCore::SubresourceLoader> loadResource(WebCore::Frame*, WebCore::CachedResource*, const WebCore::ResourceRequest&, const WebCore::ResourceLoaderOptions&) override;
     48    virtual void loadResourceSynchronously(WebCore::NetworkingContext*, unsigned long resourceLoadIdentifier, const WebCore::ResourceRequest&, WebCore::StoredCredentials, WebCore::ClientCredentialPolicy, WebCore::ResourceError&, WebCore::ResourceResponse&, Vector<char>& data) override;
     49
    4950    virtual void remove(WebCore::ResourceLoader*) override;
    5051    virtual void setDefersLoading(WebCore::ResourceLoader*, bool) override;
     
    5657    virtual void resumePendingRequests() override;
    5758
    58     virtual void setSerialLoadingEnabled(bool) override;
     59    virtual void createPingHandle(WebCore::NetworkingContext*, WebCore::ResourceRequest&, bool shouldUseCredentialStorage) override;
    5960
    6061    WebResourceLoader* webResourceLoaderForIdentifier(ResourceLoadIdentifier identifier) const { return m_webResourceLoaders.get(identifier); }
     62    RefPtr<WebCore::NetscapePlugInStreamLoader> schedulePluginStreamLoad(WebCore::Frame*, WebCore::NetscapePlugInStreamLoaderClient*, const WebCore::ResourceRequest&);
    6163
    6264    void networkProcessCrashed();
  • trunk/Source/WebKit2/WebProcess/Plugins/PluginView.cpp

    r191922 r192995  
    3535#include "WebPageProxyMessages.h"
    3636#include "WebProcess.h"
     37#include "WebResourceLoadScheduler.h"
    3738#include <WebCore/BitmapImage.h>
    3839#include <WebCore/Chrome.h>
     
    6364#include <WebCore/ProxyServer.h>
    6465#include <WebCore/RenderEmbeddedObject.h>
    65 #include <WebCore/ResourceLoadScheduler.h>
    6666#include <WebCore/ScriptController.h>
    6767#include <WebCore/ScrollView.h>
     
    161161    ASSERT(frame);
    162162
    163     m_loader = resourceLoadScheduler()->schedulePluginStreamLoad(frame, this, m_request);
     163    m_loader = WebProcess::singleton().webResourceLoadScheduler().schedulePluginStreamLoad(frame, this, m_request);
    164164}
    165165
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp

    r192796 r192995  
    4141#include "WebFrame.h"
    4242#include "WebFrameLoaderClient.h"
    43 #include "WebFrameNetworkingContext.h"
    4443#include "WebIDBFactoryBackend.h"
    4544#include "WebPage.h"
     
    9392LoaderStrategy* WebPlatformStrategies::createLoaderStrategy()
    9493{
     94    return &WebProcess::singleton().webResourceLoadScheduler();
     95}
     96
     97PasteboardStrategy* WebPlatformStrategies::createPasteboardStrategy()
     98{
    9599    return this;
    96100}
    97101
    98 PasteboardStrategy* WebPlatformStrategies::createPasteboardStrategy()
     102PluginStrategy* WebPlatformStrategies::createPluginStrategy()
    99103{
    100104    return this;
    101105}
    102106
    103 PluginStrategy* WebPlatformStrategies::createPluginStrategy()
    104 {
    105     return this;
     107BlobRegistry* WebPlatformStrategies::createBlobRegistry()
     108{
     109    return new BlobRegistryProxy;
    106110}
    107111
     
    147151{
    148152    WebProcess::singleton().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::DeleteCookie(SessionTracker::sessionID(session), url, cookieName), 0);
    149 }
    150 
    151 // LoaderStrategy
    152 
    153 ResourceLoadScheduler* WebPlatformStrategies::resourceLoadScheduler()
    154 {
    155     return &WebProcess::singleton().webResourceLoadScheduler();
    156 }
    157 
    158 void WebPlatformStrategies::loadResourceSynchronously(NetworkingContext* context, unsigned long resourceLoadIdentifier, const ResourceRequest& request, StoredCredentials storedCredentials, ClientCredentialPolicy clientCredentialPolicy, ResourceError& error, ResourceResponse& response, Vector<char>& data)
    159 {
    160     WebFrameNetworkingContext* webContext = static_cast<WebFrameNetworkingContext*>(context);
    161     // FIXME: Some entities in WebCore use WebCore's "EmptyFrameLoaderClient" instead of having a proper WebFrameLoaderClient.
    162     // EmptyFrameLoaderClient shouldn't exist and everything should be using a WebFrameLoaderClient,
    163     // but in the meantime we have to make sure not to mis-cast.
    164     WebFrameLoaderClient* webFrameLoaderClient = webContext->webFrameLoaderClient();
    165     WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : 0;
    166     WebPage* webPage = webFrame ? webFrame->page() : 0;
    167 
    168     NetworkResourceLoadParameters loadParameters;
    169     loadParameters.identifier = resourceLoadIdentifier;
    170     loadParameters.webPageID = webPage ? webPage->pageID() : 0;
    171     loadParameters.webFrameID = webFrame ? webFrame->frameID() : 0;
    172     loadParameters.sessionID = webPage ? webPage->sessionID() : SessionID::defaultSessionID();
    173     loadParameters.request = request;
    174     loadParameters.contentSniffingPolicy = SniffContent;
    175     loadParameters.allowStoredCredentials = storedCredentials;
    176     loadParameters.clientCredentialPolicy = clientCredentialPolicy;
    177     loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect = context->shouldClearReferrerOnHTTPSToHTTPRedirect();
    178 
    179     data.resize(0);
    180 
    181     HangDetectionDisabler hangDetectionDisabler;
    182 
    183     if (!WebProcess::singleton().networkConnection()->connection()->sendSync(Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad(loadParameters), Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::Reply(error, response, data), 0)) {
    184         response = ResourceResponse();
    185         error = internalError(request.url());
    186     }
    187 }
    188 
    189 void WebPlatformStrategies::createPingHandle(NetworkingContext* networkingContext, ResourceRequest& request, bool shouldUseCredentialStorage)
    190 {
    191     // It's possible that call to createPingHandle might be made during initial empty Document creation before a NetworkingContext exists.
    192     // It is not clear that we should send ping loads during that process anyways.
    193     if (!networkingContext)
    194         return;
    195 
    196     WebFrameNetworkingContext* webContext = static_cast<WebFrameNetworkingContext*>(networkingContext);
    197     WebFrameLoaderClient* webFrameLoaderClient = webContext->webFrameLoaderClient();
    198     WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient->webFrame() : nullptr;
    199     WebPage* webPage = webFrame ? webFrame->page() : nullptr;
    200    
    201     NetworkResourceLoadParameters loadParameters;
    202     loadParameters.request = request;
    203     loadParameters.sessionID = webPage ? webPage->sessionID() : SessionID::defaultSessionID();
    204     loadParameters.allowStoredCredentials = shouldUseCredentialStorage ? AllowStoredCredentials : DoNotAllowStoredCredentials;
    205     loadParameters.shouldClearReferrerOnHTTPSToHTTPRedirect = networkingContext->shouldClearReferrerOnHTTPSToHTTPRedirect();
    206 
    207     WebProcess::singleton().networkConnection()->connection()->send(Messages::NetworkConnectionToWebProcess::LoadPing(loadParameters), 0);
    208 }
    209 
    210 BlobRegistry* WebPlatformStrategies::createBlobRegistry()
    211 {
    212     return new BlobRegistryProxy;
    213153}
    214154
  • trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h

    r192697 r192995  
    3737namespace WebKit {
    3838
    39 class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::LoaderStrategy, private WebCore::PasteboardStrategy, private WebCore::PluginStrategy {
     39class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::CookiesStrategy, private WebCore::PasteboardStrategy, private WebCore::PluginStrategy {
    4040    friend class NeverDestroyed<WebPlatformStrategies>;
    4141public:
     
    5050    virtual WebCore::PasteboardStrategy* createPasteboardStrategy() override;
    5151    virtual WebCore::PluginStrategy* createPluginStrategy() override;
     52    virtual WebCore::BlobRegistry* createBlobRegistry() override;
    5253
    5354    // WebCore::CookiesStrategy
     
    5859    virtual bool getRawCookies(const WebCore::NetworkStorageSession&, const WebCore::URL& firstParty, const WebCore::URL&, Vector<WebCore::Cookie>&) override;
    5960    virtual void deleteCookie(const WebCore::NetworkStorageSession&, const WebCore::URL&, const String&) override;
    60 
    61     // WebCore::LoaderStrategy
    62     virtual WebCore::ResourceLoadScheduler* resourceLoadScheduler() override;
    63     virtual void loadResourceSynchronously(WebCore::NetworkingContext*, unsigned long resourceLoadIdentifier, const WebCore::ResourceRequest&, WebCore::StoredCredentials, WebCore::ClientCredentialPolicy, WebCore::ResourceError&, WebCore::ResourceResponse&, Vector<char>& data) override;
    64     virtual WebCore::BlobRegistry* createBlobRegistry() override;
    65     virtual void createPingHandle(WebCore::NetworkingContext*, WebCore::ResourceRequest&, bool shouldUseCredentialStorage) override;
    6661
    6762    // WebCore::PluginStrategy
Note: See TracChangeset for help on using the changeset viewer.