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

Side by Side Diff: third_party/WebKit/Source/core/loader/ThreadableLoadingContext.cpp

Issue 2880733002: Partially implement WorkerFetchContext and WorkerThreadableLoadingContext and add virtual tests (Closed)
Patch Set: add override Created 3 years, 7 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
1 // Copyright 2017 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/loader/ThreadableLoadingContext.h" 5 #include "core/loader/ThreadableLoadingContext.h"
6 6
7 #include "core/dom/Document.h" 7 #include "core/dom/Document.h"
8 #include "core/dom/TaskRunnerHelper.h" 8 #include "core/dom/TaskRunnerHelper.h"
9 #include "core/loader/WorkerFetchContext.h"
10 #include "core/workers/WorkerGlobalScope.h"
9 #include "platform/loader/fetch/ResourceFetcher.h" 11 #include "platform/loader/fetch/ResourceFetcher.h"
10 12
11 namespace blink { 13 namespace blink {
12 14
13 class DocumentThreadableLoadingContext final : public ThreadableLoadingContext { 15 class DocumentThreadableLoadingContext final : public ThreadableLoadingContext {
14 public: 16 public:
15 explicit DocumentThreadableLoadingContext(Document& document) 17 explicit DocumentThreadableLoadingContext(Document& document)
16 : document_(&document) {} 18 : document_(&document) {}
17 19
18 ~DocumentThreadableLoadingContext() override = default; 20 ~DocumentThreadableLoadingContext() override = default;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 61
60 DEFINE_INLINE_VIRTUAL_TRACE() { 62 DEFINE_INLINE_VIRTUAL_TRACE() {
61 visitor->Trace(document_); 63 visitor->Trace(document_);
62 ThreadableLoadingContext::Trace(visitor); 64 ThreadableLoadingContext::Trace(visitor);
63 } 65 }
64 66
65 private: 67 private:
66 Member<Document> document_; 68 Member<Document> document_;
67 }; 69 };
68 70
71 class WorkerThreadableLoadingContext : public ThreadableLoadingContext {
72 public:
73 explicit WorkerThreadableLoadingContext(
74 WorkerGlobalScope& worker_global_scope)
75 : worker_global_scope_(&worker_global_scope),
76 fetch_context_(worker_global_scope.GetFetchContext()) {}
77
78 ~WorkerThreadableLoadingContext() override = default;
79
80 bool IsContextThread() const override {
81 DCHECK(fetch_context_);
82 DCHECK(worker_global_scope_);
83 return worker_global_scope_->IsContextThread();
84 }
85
86 ResourceFetcher* GetResourceFetcher() override {
87 DCHECK(IsContextThread());
88 return fetch_context_->GetResourceFetcher();
89 }
90
91 SecurityOrigin* GetSecurityOrigin() override {
92 DCHECK(IsContextThread());
93 return worker_global_scope_->GetSecurityOrigin();
94 }
95
96 bool IsSecureContext() const override {
97 DCHECK(IsContextThread());
98 String error_message;
99 return worker_global_scope_->IsSecureContext(error_message);
100 }
101
102 KURL FirstPartyForCookies() const override {
103 DCHECK(IsContextThread());
104 // TODO(horo): Returns the FirstPartyForCookies of the parent frame for
105 // dedicated workers.
106 return worker_global_scope_->Url();
107 }
108
109 String UserAgent() const override {
110 DCHECK(IsContextThread());
111 return worker_global_scope_->UserAgent();
112 }
113
114 Document* GetLoadingDocument() override { return nullptr; }
115
116 RefPtr<WebTaskRunner> GetTaskRunner(TaskType type) override {
117 return fetch_context_->LoadingTaskRunner();
118 }
119
120 void RecordUseCount(UseCounter::Feature feature) override {
121 UseCounter::Count(worker_global_scope_, feature);
122 }
123
124 DEFINE_INLINE_VIRTUAL_TRACE() {
125 visitor->Trace(fetch_context_);
126 visitor->Trace(worker_global_scope_);
127 ThreadableLoadingContext::Trace(visitor);
128 }
129
130 private:
131 Member<WorkerGlobalScope> worker_global_scope_;
132 Member<WorkerFetchContext> fetch_context_;
133 };
134
69 ThreadableLoadingContext* ThreadableLoadingContext::Create(Document& document) { 135 ThreadableLoadingContext* ThreadableLoadingContext::Create(Document& document) {
70 // For now this is the only default implementation. 136 // For now this is the only default implementation.
kinuko 2017/05/13 13:26:42 Please remove this comment.
horo 2017/05/13 17:05:45 Done.
71 return new DocumentThreadableLoadingContext(document); 137 return new DocumentThreadableLoadingContext(document);
72 } 138 }
73 139
140 ThreadableLoadingContext* ThreadableLoadingContext::Create(
141 WorkerGlobalScope& worker_global_scope) {
142 return new WorkerThreadableLoadingContext(worker_global_scope);
143 }
144
74 } // namespace blink 145 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698