Changeset 89086 in webkit


Ignore:
Timestamp:
Jun 16, 2011 4:45:15 PM (13 years ago)
Author:
Nate Chapin
Message:

2011-06-16 Nate Chapin <Nate Chapin>

Reviewed by Alexey Proskuryakov.

Set the referrer on a ResourceRequest from a WorkerThreadableLoader
as soon as the request reaches the main thread and remove the
optionalOutgoingReferrer parameter from some functions.
https://bugs.webkit.org/show_bug.cgi?id=62806

  • loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::loadResourceSynchronously): (WebCore::DocumentThreadableLoader::create): (WebCore::DocumentThreadableLoader::DocumentThreadableLoader): (WebCore::DocumentThreadableLoader::loadRequest):
  • loader/DocumentThreadableLoader.h:
  • loader/ResourceLoadScheduler.cpp: (WebCore::ResourceLoadScheduler::scheduleSubresourceLoad):
  • loader/ResourceLoadScheduler.h:
  • loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::create):
  • loader/SubresourceLoader.h:
  • loader/WorkerThreadableLoader.cpp: (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader):
Location:
trunk/Source/WebCore
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r89079 r89086  
     12011-06-16  Nate Chapin  <japhet@chromium.org>
     2
     3        Reviewed by Alexey Proskuryakov.
     4
     5        Set the referrer on a ResourceRequest from a WorkerThreadableLoader
     6        as soon as the request reaches the main thread and remove the
     7        optionalOutgoingReferrer parameter from some functions.
     8        https://bugs.webkit.org/show_bug.cgi?id=62806
     9
     10        * loader/DocumentThreadableLoader.cpp:
     11        (WebCore::DocumentThreadableLoader::loadResourceSynchronously):
     12        (WebCore::DocumentThreadableLoader::create):
     13        (WebCore::DocumentThreadableLoader::DocumentThreadableLoader):
     14        (WebCore::DocumentThreadableLoader::loadRequest):
     15        * loader/DocumentThreadableLoader.h:
     16        * loader/ResourceLoadScheduler.cpp:
     17        (WebCore::ResourceLoadScheduler::scheduleSubresourceLoad):
     18        * loader/ResourceLoadScheduler.h:
     19        * loader/SubresourceLoader.cpp:
     20        (WebCore::SubresourceLoader::create):
     21        * loader/SubresourceLoader.h:
     22        * loader/WorkerThreadableLoader.cpp:
     23        (WebCore::WorkerThreadableLoader::MainThreadBridge::mainThreadCreateLoader):
     24
    1252011-06-16  Eric Seidel  <eric@webkit.org>
    226
  • trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp

    r89036 r89086  
    5252{
    5353    // The loader will be deleted as soon as this function exits.
    54     RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, &client, LoadSynchronously, request, options, String()));
     54    RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, &client, LoadSynchronously, request, options));
    5555    ASSERT(loader->hasOneRef());
    5656}
    5757
    58 PassRefPtr<DocumentThreadableLoader> DocumentThreadableLoader::create(Document* document, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options, const String& optionalOutgoingReferrer)
    59 {
    60     RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, client, LoadAsynchronously, request, options, optionalOutgoingReferrer));
     58PassRefPtr<DocumentThreadableLoader> DocumentThreadableLoader::create(Document* document, ThreadableLoaderClient* client, const ResourceRequest& request, const ThreadableLoaderOptions& options)
     59{
     60    RefPtr<DocumentThreadableLoader> loader = adoptRef(new DocumentThreadableLoader(document, client, LoadAsynchronously, request, options));
    6161    if (!loader->m_loader)
    6262        loader = 0;
     
    6464}
    6565
    66 DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, BlockingBehavior blockingBehavior, const ResourceRequest& request, const ThreadableLoaderOptions& options, const String& optionalOutgoingReferrer)
     66DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, BlockingBehavior blockingBehavior, const ResourceRequest& request, const ThreadableLoaderOptions& options)
    6767    : m_client(client)
    6868    , m_document(document)
    6969    , m_options(options)
    70     , m_optionalOutgoingReferrer(optionalOutgoingReferrer)
    7170    , m_sameOriginRequest(securityOrigin()->canRequest(request.url()))
    7271    , m_async(blockingBehavior == LoadAsynchronously)
     
    7574    ASSERT(client);
    7675    // Setting an outgoing referer is only supported in the async code path.
    77     ASSERT(m_async || m_optionalOutgoingReferrer.isEmpty());
     76    ASSERT(m_async || request.httpReferrer().isEmpty());
    7877
    7978    if (m_sameOriginRequest || m_options.crossOriginRequestPolicy == AllowCrossOriginRequests) {
     
    328327        m_loader = 0;
    329328        m_loader = resourceLoadScheduler()->scheduleSubresourceLoad(m_document->frame(), this, request, ResourceLoadPriorityMedium, securityCheck, sendLoadCallbacks,
    330                                                                     sniffContent, m_optionalOutgoingReferrer, shouldBufferData);
     329                                                                    sniffContent, shouldBufferData);
    331330        return;
    332331    }
  • trunk/Source/WebCore/loader/DocumentThreadableLoader.h

    r89036 r89086  
    5353    public:
    5454        static void loadResourceSynchronously(Document*, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&);
    55         static PassRefPtr<DocumentThreadableLoader> create(Document*, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&, const String& optionalOutgoingReferrer = String());
     55        static PassRefPtr<DocumentThreadableLoader> create(Document*, ThreadableLoaderClient*, const ResourceRequest&, const ThreadableLoaderOptions&);
    5656        virtual ~DocumentThreadableLoader();
    5757
     
    7272        };
    7373
    74         DocumentThreadableLoader(Document*, ThreadableLoaderClient*, BlockingBehavior, const ResourceRequest&, const ThreadableLoaderOptions&, const String& optionalOutgoingReferrer);
     74        DocumentThreadableLoader(Document*, ThreadableLoaderClient*, BlockingBehavior, const ResourceRequest&, const ThreadableLoaderOptions&);
    7575
    7676        virtual void willSendRequest(SubresourceLoader*, ResourceRequest&, const ResourceResponse& redirectResponse);
     
    103103        Document* m_document;
    104104        ThreadableLoaderOptions m_options;
    105         String m_optionalOutgoingReferrer;
    106105        bool m_sameOriginRequest;
    107106        bool m_async;
  • trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp

    r86290 r89086  
    8585
    8686PassRefPtr<SubresourceLoader> ResourceLoadScheduler::scheduleSubresourceLoad(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, ResourceLoadPriority priority, SecurityCheckPolicy securityCheck,
    87                                                                              bool sendResourceLoadCallbacks, bool shouldContentSniff, const String& optionalOutgoingReferrer, bool shouldBufferData)
    88 {
    89     RefPtr<SubresourceLoader> loader = SubresourceLoader::create(frame, client, request, securityCheck, sendResourceLoadCallbacks, shouldContentSniff, optionalOutgoingReferrer, shouldBufferData);
     87                                                                             bool sendResourceLoadCallbacks, bool shouldContentSniff, bool shouldBufferData)
     88{
     89    RefPtr<SubresourceLoader> loader = SubresourceLoader::create(frame, client, request, securityCheck, sendResourceLoadCallbacks, shouldContentSniff, shouldBufferData);
    9090    if (loader)
    9191        scheduleLoad(loader.get(), priority);
  • trunk/Source/WebCore/loader/ResourceLoadScheduler.h

    r86290 r89086  
    5151    friend ResourceLoadScheduler* resourceLoadScheduler();
    5252
    53     PassRefPtr<SubresourceLoader> scheduleSubresourceLoad(Frame*, SubresourceLoaderClient*, const ResourceRequest&, ResourceLoadPriority = ResourceLoadPriorityLow, SecurityCheckPolicy = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true, const String& optionalOutgoingReferrer = String(), bool shouldBufferData = true);
     53    PassRefPtr<SubresourceLoader> scheduleSubresourceLoad(Frame*, SubresourceLoaderClient*, const ResourceRequest&, ResourceLoadPriority = ResourceLoadPriorityLow, SecurityCheckPolicy = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true, bool shouldBufferData = true);
    5454    PassRefPtr<NetscapePlugInStreamLoader> schedulePluginStreamLoad(Frame*, NetscapePlugInStreamLoaderClient*, const ResourceRequest&);
    5555    void addMainResourceLoad(ResourceLoader*);
  • trunk/Source/WebCore/loader/SubresourceLoader.cpp

    r86720 r89086  
    6262}
    6363
    64 PassRefPtr<SubresourceLoader> SubresourceLoader::create(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, SecurityCheckPolicy securityCheck, bool sendResourceLoadCallbacks, bool shouldContentSniff, const String& optionalOutgoingReferrer, bool shouldBufferData)
     64PassRefPtr<SubresourceLoader> SubresourceLoader::create(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, SecurityCheckPolicy securityCheck, bool sendResourceLoadCallbacks, bool shouldContentSniff, bool shouldBufferData)
    6565{
    6666    if (!frame)
     
    8484    String outgoingReferrer;
    8585    String outgoingOrigin;
    86     if (optionalOutgoingReferrer.isNull()) {
     86    if (request.httpReferrer().isNull()) {
    8787        outgoingReferrer = fl->outgoingReferrer();
    8888        outgoingOrigin = fl->outgoingOrigin();
    8989    } else {
    90         outgoingReferrer = optionalOutgoingReferrer;
     90        outgoingReferrer = request.httpReferrer();
    9191        outgoingOrigin = SecurityOrigin::createFromString(outgoingReferrer)->toString();
    9292    }
  • trunk/Source/WebCore/loader/SubresourceLoader.h

    r86720 r89086  
    4242    class SubresourceLoader : public ResourceLoader {
    4343    public:
    44         static PassRefPtr<SubresourceLoader> create(Frame*, SubresourceLoaderClient*, const ResourceRequest&, SecurityCheckPolicy = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true, const String& optionalOutgoingReferrer = String(), bool shouldBufferData = true);
     44        static PassRefPtr<SubresourceLoader> create(Frame*, SubresourceLoaderClient*, const ResourceRequest&, SecurityCheckPolicy = DoSecurityCheck, bool sendResourceLoadCallbacks = true, bool shouldContentSniff = true, bool shouldBufferData = true);
    4545
    4646        void clearClient() { m_client = 0; }
  • trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp

    r89036 r89086  
    112112
    113113    OwnPtr<ResourceRequest> request(ResourceRequest::adopt(requestData));
     114    request->setHTTPReferrer(outgoingReferrer);
    114115    // FIXME: If the a site requests a local resource, then this will return a non-zero value but the sync path
    115116    // will return a 0 value.  Either this should return 0 or the other code path should do a callback with
    116117    // a failure.
    117     thisPtr->m_mainThreadLoader = DocumentThreadableLoader::create(document, thisPtr, *request, options, outgoingReferrer);
     118    thisPtr->m_mainThreadLoader = DocumentThreadableLoader::create(document, thisPtr, *request, options);
    118119    ASSERT(thisPtr->m_mainThreadLoader);
    119120}
Note: See TracChangeset for help on using the changeset viewer.