Changeset 89086 in webkit
- Timestamp:
- Jun 16, 2011 4:45:15 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r89079 r89086 1 2011-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 1 25 2011-06-16 Eric Seidel <eric@webkit.org> 2 26 -
trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp
r89036 r89086 52 52 { 53 53 // 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)); 55 55 ASSERT(loader->hasOneRef()); 56 56 } 57 57 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));58 PassRefPtr<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)); 61 61 if (!loader->m_loader) 62 62 loader = 0; … … 64 64 } 65 65 66 DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, BlockingBehavior blockingBehavior, const ResourceRequest& request, const ThreadableLoaderOptions& options , const String& optionalOutgoingReferrer)66 DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, BlockingBehavior blockingBehavior, const ResourceRequest& request, const ThreadableLoaderOptions& options) 67 67 : m_client(client) 68 68 , m_document(document) 69 69 , m_options(options) 70 , m_optionalOutgoingReferrer(optionalOutgoingReferrer)71 70 , m_sameOriginRequest(securityOrigin()->canRequest(request.url())) 72 71 , m_async(blockingBehavior == LoadAsynchronously) … … 75 74 ASSERT(client); 76 75 // 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()); 78 77 79 78 if (m_sameOriginRequest || m_options.crossOriginRequestPolicy == AllowCrossOriginRequests) { … … 328 327 m_loader = 0; 329 328 m_loader = resourceLoadScheduler()->scheduleSubresourceLoad(m_document->frame(), this, request, ResourceLoadPriorityMedium, securityCheck, sendLoadCallbacks, 330 sniffContent, m_optionalOutgoingReferrer,shouldBufferData);329 sniffContent, shouldBufferData); 331 330 return; 332 331 } -
trunk/Source/WebCore/loader/DocumentThreadableLoader.h
r89036 r89086 53 53 public: 54 54 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&); 56 56 virtual ~DocumentThreadableLoader(); 57 57 … … 72 72 }; 73 73 74 DocumentThreadableLoader(Document*, ThreadableLoaderClient*, BlockingBehavior, const ResourceRequest&, const ThreadableLoaderOptions& , const String& optionalOutgoingReferrer);74 DocumentThreadableLoader(Document*, ThreadableLoaderClient*, BlockingBehavior, const ResourceRequest&, const ThreadableLoaderOptions&); 75 75 76 76 virtual void willSendRequest(SubresourceLoader*, ResourceRequest&, const ResourceResponse& redirectResponse); … … 103 103 Document* m_document; 104 104 ThreadableLoaderOptions m_options; 105 String m_optionalOutgoingReferrer;106 105 bool m_sameOriginRequest; 107 106 bool m_async; -
trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp
r86290 r89086 85 85 86 86 PassRefPtr<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); 90 90 if (loader) 91 91 scheduleLoad(loader.get(), priority); -
trunk/Source/WebCore/loader/ResourceLoadScheduler.h
r86290 r89086 51 51 friend ResourceLoadScheduler* resourceLoadScheduler(); 52 52 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); 54 54 PassRefPtr<NetscapePlugInStreamLoader> schedulePluginStreamLoad(Frame*, NetscapePlugInStreamLoaderClient*, const ResourceRequest&); 55 55 void addMainResourceLoad(ResourceLoader*); -
trunk/Source/WebCore/loader/SubresourceLoader.cpp
r86720 r89086 62 62 } 63 63 64 PassRefPtr<SubresourceLoader> SubresourceLoader::create(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, SecurityCheckPolicy securityCheck, bool sendResourceLoadCallbacks, bool shouldContentSniff, const String& optionalOutgoingReferrer,bool shouldBufferData)64 PassRefPtr<SubresourceLoader> SubresourceLoader::create(Frame* frame, SubresourceLoaderClient* client, const ResourceRequest& request, SecurityCheckPolicy securityCheck, bool sendResourceLoadCallbacks, bool shouldContentSniff, bool shouldBufferData) 65 65 { 66 66 if (!frame) … … 84 84 String outgoingReferrer; 85 85 String outgoingOrigin; 86 if ( optionalOutgoingReferrer.isNull()) {86 if (request.httpReferrer().isNull()) { 87 87 outgoingReferrer = fl->outgoingReferrer(); 88 88 outgoingOrigin = fl->outgoingOrigin(); 89 89 } else { 90 outgoingReferrer = optionalOutgoingReferrer;90 outgoingReferrer = request.httpReferrer(); 91 91 outgoingOrigin = SecurityOrigin::createFromString(outgoingReferrer)->toString(); 92 92 } -
trunk/Source/WebCore/loader/SubresourceLoader.h
r86720 r89086 42 42 class SubresourceLoader : public ResourceLoader { 43 43 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); 45 45 46 46 void clearClient() { m_client = 0; } -
trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp
r89036 r89086 112 112 113 113 OwnPtr<ResourceRequest> request(ResourceRequest::adopt(requestData)); 114 request->setHTTPReferrer(outgoingReferrer); 114 115 // FIXME: If the a site requests a local resource, then this will return a non-zero value but the sync path 115 116 // will return a 0 value. Either this should return 0 or the other code path should do a callback with 116 117 // a failure. 117 thisPtr->m_mainThreadLoader = DocumentThreadableLoader::create(document, thisPtr, *request, options , outgoingReferrer);118 thisPtr->m_mainThreadLoader = DocumentThreadableLoader::create(document, thisPtr, *request, options); 118 119 ASSERT(thisPtr->m_mainThreadLoader); 119 120 }
Note: See TracChangeset
for help on using the changeset viewer.