Index: third_party/WebKit/Source/core/loader/WorkerFetchContext.h |
diff --git a/third_party/WebKit/Source/core/loader/WorkerFetchContext.h b/third_party/WebKit/Source/core/loader/WorkerFetchContext.h |
index 4a9870669dd5d2d3f19c0519ebd7e701ab7f4fcb..297a175ef7e6628a745b2a85807c21f957a1ce33 100644 |
--- a/third_party/WebKit/Source/core/loader/WorkerFetchContext.h |
+++ b/third_party/WebKit/Source/core/loader/WorkerFetchContext.h |
@@ -7,14 +7,17 @@ |
#include <memory> |
#include "core/CoreExport.h" |
+#include "platform/Supplementable.h" |
#include "platform/loader/fetch/FetchContext.h" |
#include "platform/wtf/Forward.h" |
namespace blink { |
-class WorkerClients; |
+class ResourceFetcher; |
+class WebTaskRunner; |
class WebURLLoader; |
class WebWorkerFetchContext; |
+class WorkerClients; |
class WorkerGlobalScope; |
CORE_EXPORT void ProvideWorkerFetchContextToWorker( |
@@ -30,16 +33,85 @@ class WorkerFetchContext final : public FetchContext { |
static WorkerFetchContext* Create(WorkerGlobalScope&); |
virtual ~WorkerFetchContext(); |
+ ResourceFetcher* GetResourceFetcher(); |
+ |
// FetchContext implementation: |
- // TODO(horo): Implement more methods. |
std::unique_ptr<WebURLLoader> CreateURLLoader() override; |
void PrepareRequest(ResourceRequest&, RedirectType) override; |
bool IsControlledByServiceWorker() const override; |
+ int64_t ServiceWorkerID() const override; |
+ ResourceRequestBlockedReason CanRequest( |
+ Resource::Type, |
+ const ResourceRequest&, |
+ const KURL&, |
+ const ResourceLoaderOptions&, |
+ SecurityViolationReportingPolicy, |
+ FetchParameters::OriginRestriction) const override; |
+ ResourceRequestBlockedReason CanFollowRedirect( |
+ Resource::Type, |
+ const ResourceRequest&, |
+ const KURL&, |
+ const ResourceLoaderOptions&, |
+ SecurityViolationReportingPolicy, |
+ FetchParameters::OriginRestriction) const override; |
+ void AddAdditionalRequestHeaders(ResourceRequest&, |
+ FetchResourceType) override; |
+ void DispatchWillSendRequest(unsigned long, |
+ ResourceRequest&, |
+ const ResourceResponse&, |
+ const FetchInitiatorInfo&) override; |
+ void DispatchDidReceiveResponse(unsigned long identifier, |
+ const ResourceResponse&, |
+ WebURLRequest::FrameType, |
+ WebURLRequest::RequestContext, |
+ Resource*, |
+ ResourceResponseType) override; |
+ void DispatchDidReceiveData(unsigned long identifier, |
+ const char* data, |
+ int dataLength) override; |
+ void DispatchDidReceiveEncodedData(unsigned long identifier, |
+ int encodedDataLength) override; |
+ void DispatchDidFinishLoading(unsigned long identifier, |
+ double finishTime, |
+ int64_t encodedDataLength, |
+ int64_t decodedBodyLength) override; |
+ void DispatchDidFail(unsigned long identifier, |
+ const ResourceError&, |
+ int64_t encodedDataLength, |
+ bool isInternalRequest) override; |
+ ResourceRequestBlockedReason AllowResponse( |
+ Resource::Type, |
+ const ResourceRequest&, |
+ const KURL&, |
+ const ResourceLoaderOptions&) const override; |
+ void AddResourceTiming(const ResourceTimingInfo&) override; |
+ RefPtr<WebTaskRunner> LoadingTaskRunner() const override; |
+ RefPtr<WebTaskRunner> TimerTaskRunner() const override; |
+ Resource::ResourceCallback* GetResourceCallback() override; |
+ |
+ DECLARE_VIRTUAL_TRACE(); |
private: |
- explicit WorkerFetchContext(std::unique_ptr<WebWorkerFetchContext>); |
+ class WorkerResourceCallback; |
+ WorkerFetchContext(WorkerGlobalScope&, |
+ std::unique_ptr<WebWorkerFetchContext>); |
+ void InitializeOnWorkerThread(WorkerGlobalScope&); |
+ |
+ ResourceRequestBlockedReason CanRequestInternal( |
+ Resource::Type, |
+ const ResourceRequest&, |
+ const KURL&, |
+ const ResourceLoaderOptions&, |
+ SecurityViolationReportingPolicy, |
+ FetchParameters::OriginRestriction, |
+ ResourceRequest::RedirectStatus) const; |
+ Member<WorkerGlobalScope> worker_global_scope_; |
std::unique_ptr<WebWorkerFetchContext> web_context_; |
+ Member<ResourceFetcher> resource_fetcher_; |
+ RefPtr<WebTaskRunner> loading_task_runner_; |
+ RefPtr<WebTaskRunner> timer_task_runner_; |
+ Member<WorkerResourceCallback> resource_callback_; |
}; |
} // namespace blink |