Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(171)

Side by Side Diff: content/renderer/service_worker/service_worker_fetch_context_info_impl.cc

Issue 2804843005: Implement the infrastructure of creating WorkerFetchContext in worker global scope. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/renderer/service_worker/service_worker_fetch_context_info_impl .h"
6
7 #include "content/child/request_extra_data.h"
8 #include "content/child/resource_dispatcher.h"
9 #include "content/child/web_url_loader_impl.h"
10 #include "third_party/WebKit/public/platform/WebWorkerFetchContext.h"
11 #include "third_party/WebKit/public/platform/WebWorkerFetchContextInfo.h"
12
13 namespace content {
14
15 namespace {
16
17 class ServiceWorkerFetchContextImpl : public blink::WebWorkerFetchContext {
18 public:
19 ServiceWorkerFetchContextImpl(
20 mojom::WorkerFetchContextFactoryPtrInfo factory_info,
21 blink::WebWorkerFetchContextInfo* info,
22 base::SingleThreadTaskRunner* loading_task_runner)
23 : service_worker_provider_id_(info->GetServiceWorkerProviderID()),
24 resource_dispatcher_(
25 base::MakeUnique<ResourceDispatcher>(nullptr,
26 loading_task_runner)) {
27 factory_.Bind(std::move(factory_info));
28 factory_->GetURLLoaderFactory(mojo::MakeRequest(&url_loader_factory_));
29 }
30 ~ServiceWorkerFetchContextImpl() override {}
31
32 bool IsControlledByServiceWorker() const override { return false; }
33
34 blink::WebURLLoader* CreateURLLoader() override {
35 return new content::WebURLLoaderImpl(resource_dispatcher_.get(),
36 url_loader_factory_.get());
37 }
38 void WillSendRequest(blink::WebURLRequest& request) override {
39 RequestExtraData* extra_data = new RequestExtraData();
40 extra_data->set_service_worker_provider_id(service_worker_provider_id_);
41 extra_data->set_originated_from_service_worker(true);
42 extra_data->set_initiated_in_secure_context(true);
43 request.SetExtraData(extra_data);
44 }
45
46 private:
47 const int service_worker_provider_id_;
48 std::unique_ptr<ResourceDispatcher> resource_dispatcher_;
49 mojom::WorkerFetchContextFactoryPtr factory_;
50 mojom::URLLoaderFactoryAssociatedPtr url_loader_factory_;
51 };
52
53 } // namespace
54
55 ServiceWorkerFetchContextInfoImpl::ServiceWorkerFetchContextInfoImpl(
56 mojom::WorkerFetchContextFactoryPtrInfo factory_info,
57 int service_worker_provider_id)
58 : factory_info_(std::move(factory_info)) {
59 SetServiceWorkerProviderID(service_worker_provider_id);
60 }
61
62 ServiceWorkerFetchContextInfoImpl::~ServiceWorkerFetchContextInfoImpl() {}
63
64 std::unique_ptr<blink::WebWorkerFetchContext>
65 ServiceWorkerFetchContextInfoImpl::CreateContext(
66 base::SingleThreadTaskRunner* loading_task_runner) {
67 DCHECK(factory_info_.is_valid());
68 return base::MakeUnique<ServiceWorkerFetchContextImpl>(
69 std::move(factory_info_), this, loading_task_runner);
70 }
71
72 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698