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

Side by Side Diff: content/browser/service_worker/link_header_support_unittest.cc

Issue 2638313002: Manage ServiceWorkerDispatcherHost in ServiceWorkerContextCore (Closed)
Patch Set: Rebase Created 3 years, 10 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "content/browser/service_worker/link_header_support.h" 5 #include "content/browser/service_worker/link_header_support.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "content/browser/loader/resource_request_info_impl.h" 10 #include "content/browser/loader/resource_request_info_impl.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 LinkHeaderServiceWorkerTest() 58 LinkHeaderServiceWorkerTest()
59 : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), 59 : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP),
60 resource_context_(&request_context_) { 60 resource_context_(&request_context_) {
61 base::CommandLine::ForCurrentProcess()->AppendSwitch( 61 base::CommandLine::ForCurrentProcess()->AppendSwitch(
62 switches::kEnableExperimentalWebPlatformFeatures); 62 switches::kEnableExperimentalWebPlatformFeatures);
63 } 63 }
64 ~LinkHeaderServiceWorkerTest() override {} 64 ~LinkHeaderServiceWorkerTest() override {}
65 65
66 void SetUp() override { 66 void SetUp() override {
67 helper_.reset(new EmbeddedWorkerTestHelper(base::FilePath())); 67 helper_.reset(new EmbeddedWorkerTestHelper(base::FilePath()));
68
69 // An empty host.
70 std::unique_ptr<ServiceWorkerProviderHost> host(
71 new ServiceWorkerProviderHost(
72 render_process_id(), MSG_ROUTING_NONE, kMockProviderId,
73 SERVICE_WORKER_PROVIDER_FOR_WINDOW,
74 ServiceWorkerProviderHost::FrameSecurityLevel::UNINITIALIZED,
75 context()->AsWeakPtr(), nullptr));
76 provider_host_ = host->AsWeakPtr();
77 context()->AddProviderHost(std::move(host));
78 } 68 }
79 69
80 void TearDown() override { helper_.reset(); } 70 void TearDown() override { helper_.reset(); }
81 71
82 ServiceWorkerContextCore* context() { return helper_->context(); } 72 ServiceWorkerContextCore* context() { return helper_->context(); }
83 ServiceWorkerContextWrapper* context_wrapper() { 73 ServiceWorkerContextWrapper* context_wrapper() {
84 return helper_->context_wrapper(); 74 return helper_->context_wrapper();
85 } 75 }
86 ServiceWorkerProviderHost* provider_host() { return provider_host_.get(); } 76 ServiceWorkerProviderHost* provider_host() { return provider_host_.get(); }
87 int render_process_id() const { return helper_->mock_render_process_id(); } 77 int render_process_id() const { return helper_->mock_render_process_id(); }
88 78
79 void CreateDocumentProviderHost() {
80 // An empty host.
81 std::unique_ptr<ServiceWorkerProviderHost> host =
82 CreateProviderHostForWindow(render_process_id(), kMockProviderId,
83 true /* is_parent_frame_secure */,
84 context()->AsWeakPtr());
85 provider_host_ = host->AsWeakPtr();
86 EXPECT_FALSE(
87 context()->GetProviderHost(host->process_id(), host->provider_id()));
88 context()->AddProviderHost(std::move(host));
89 }
90
91 void CreateInsecureDocumentProviderHost() {
92 // An empty host.
93 std::unique_ptr<ServiceWorkerProviderHost> host =
94 CreateProviderHostForWindow(render_process_id(), kMockProviderId,
95 false /* is_parent_frame_secure */,
96 context()->AsWeakPtr());
97 provider_host_ = host->AsWeakPtr();
98 EXPECT_FALSE(
99 context()->GetProviderHost(host->process_id(), host->provider_id()));
100 context()->AddProviderHost(std::move(host));
101 }
102
89 void CreateServiceWorkerProviderHost() { 103 void CreateServiceWorkerProviderHost() {
90 std::unique_ptr<ServiceWorkerProviderHost> host( 104 std::unique_ptr<ServiceWorkerProviderHost> host =
91 new ServiceWorkerProviderHost( 105 CreateProviderHostForServiceWorkerContext(
92 render_process_id(), MSG_ROUTING_NONE, kMockProviderId, 106 render_process_id(), kMockProviderId,
93 SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, 107 true /* is_parent_frame_secure */, context()->AsWeakPtr());
94 ServiceWorkerProviderHost::FrameSecurityLevel::UNINITIALIZED,
95 context()->AsWeakPtr(), nullptr));
96 provider_host_ = host->AsWeakPtr(); 108 provider_host_ = host->AsWeakPtr();
97 context()->RemoveProviderHost(host->process_id(), host->provider_id()); 109 EXPECT_FALSE(
110 context()->GetProviderHost(host->process_id(), host->provider_id()));
98 context()->AddProviderHost(std::move(host)); 111 context()->AddProviderHost(std::move(host));
99 112
100 scoped_refptr<ServiceWorkerRegistration> registration = 113 scoped_refptr<ServiceWorkerRegistration> registration =
101 new ServiceWorkerRegistration(GURL("https://host/scope"), 1L, 114 new ServiceWorkerRegistration(GURL("https://host/scope"), 1L,
102 context()->AsWeakPtr()); 115 context()->AsWeakPtr());
103 scoped_refptr<ServiceWorkerVersion> version = new ServiceWorkerVersion( 116 scoped_refptr<ServiceWorkerVersion> version = new ServiceWorkerVersion(
104 registration.get(), GURL("https://host/script.js"), 1L, 117 registration.get(), GURL("https://host/script.js"), 1L,
105 context()->AsWeakPtr()); 118 context()->AsWeakPtr());
106 119
107 provider_host_->running_hosted_version_ = version; 120 provider_host_->running_hosted_version_ = version;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 TestBrowserThreadBundle thread_bundle_; 163 TestBrowserThreadBundle thread_bundle_;
151 std::unique_ptr<EmbeddedWorkerTestHelper> helper_; 164 std::unique_ptr<EmbeddedWorkerTestHelper> helper_;
152 net::TestURLRequestContext request_context_; 165 net::TestURLRequestContext request_context_;
153 net::TestDelegate request_delegate_; 166 net::TestDelegate request_delegate_;
154 MockResourceContext resource_context_; 167 MockResourceContext resource_context_;
155 base::WeakPtr<ServiceWorkerProviderHost> provider_host_; 168 base::WeakPtr<ServiceWorkerProviderHost> provider_host_;
156 storage::BlobStorageContext blob_storage_context_; 169 storage::BlobStorageContext blob_storage_context_;
157 }; 170 };
158 171
159 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_Basic) { 172 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_Basic) {
173 CreateDocumentProviderHost();
160 ProcessLinkHeaderForRequest( 174 ProcessLinkHeaderForRequest(
161 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(), 175 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(),
162 "<../foo.js>; rel=serviceworker", context_wrapper()); 176 "<../foo.js>; rel=serviceworker", context_wrapper());
163 base::RunLoop().RunUntilIdle(); 177 base::RunLoop().RunUntilIdle();
164 178
165 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 179 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
166 ASSERT_EQ(1u, registrations.size()); 180 ASSERT_EQ(1u, registrations.size());
167 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern); 181 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern);
168 EXPECT_EQ(GURL("https://example.com/foo/foo.js"), 182 EXPECT_EQ(GURL("https://example.com/foo/foo.js"),
169 registrations[0].active_version.script_url); 183 registrations[0].active_version.script_url);
170 } 184 }
171 185
172 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeWithFragment) { 186 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeWithFragment) {
187 CreateDocumentProviderHost();
173 ProcessLinkHeaderForRequest( 188 ProcessLinkHeaderForRequest(
174 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(), 189 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(),
175 "<../bar.js>; rel=serviceworker; scope=\"scope#ref\"", context_wrapper()); 190 "<../bar.js>; rel=serviceworker; scope=\"scope#ref\"", context_wrapper());
176 base::RunLoop().RunUntilIdle(); 191 base::RunLoop().RunUntilIdle();
177 192
178 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 193 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
179 ASSERT_EQ(1u, registrations.size()); 194 ASSERT_EQ(1u, registrations.size());
180 EXPECT_EQ(GURL("https://example.com/foo/bar/scope"), 195 EXPECT_EQ(GURL("https://example.com/foo/bar/scope"),
181 registrations[0].pattern); 196 registrations[0].pattern);
182 EXPECT_EQ(GURL("https://example.com/foo/bar.js"), 197 EXPECT_EQ(GURL("https://example.com/foo/bar.js"),
183 registrations[0].active_version.script_url); 198 registrations[0].active_version.script_url);
184 } 199 }
185 200
186 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeAbsoluteUrl) { 201 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeAbsoluteUrl) {
202 CreateDocumentProviderHost();
187 ProcessLinkHeaderForRequest( 203 ProcessLinkHeaderForRequest(
188 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(), 204 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(),
189 "<bar.js>; rel=serviceworker; " 205 "<bar.js>; rel=serviceworker; "
190 "scope=\"https://example.com:443/foo/bar/scope\"", 206 "scope=\"https://example.com:443/foo/bar/scope\"",
191 context_wrapper()); 207 context_wrapper());
192 base::RunLoop().RunUntilIdle(); 208 base::RunLoop().RunUntilIdle();
193 209
194 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 210 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
195 ASSERT_EQ(1u, registrations.size()); 211 ASSERT_EQ(1u, registrations.size());
196 EXPECT_EQ(GURL("https://example.com/foo/bar/scope"), 212 EXPECT_EQ(GURL("https://example.com/foo/bar/scope"),
197 registrations[0].pattern); 213 registrations[0].pattern);
198 EXPECT_EQ(GURL("https://example.com/foo/bar/bar.js"), 214 EXPECT_EQ(GURL("https://example.com/foo/bar/bar.js"),
199 registrations[0].active_version.script_url); 215 registrations[0].active_version.script_url);
200 } 216 }
201 217
202 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeDifferentOrigin) { 218 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeDifferentOrigin) {
219 CreateDocumentProviderHost();
203 ProcessLinkHeaderForRequest( 220 ProcessLinkHeaderForRequest(
204 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(), 221 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(),
205 "<bar.js>; rel=serviceworker; scope=\"https://google.com/scope\"", 222 "<bar.js>; rel=serviceworker; scope=\"https://google.com/scope\"",
206 context_wrapper()); 223 context_wrapper());
207 base::RunLoop().RunUntilIdle(); 224 base::RunLoop().RunUntilIdle();
208 225
209 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 226 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
210 ASSERT_EQ(0u, registrations.size()); 227 ASSERT_EQ(0u, registrations.size());
211 } 228 }
212 229
213 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeUrlEncodedSlash) { 230 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScopeUrlEncodedSlash) {
231 CreateDocumentProviderHost();
214 ProcessLinkHeaderForRequest( 232 ProcessLinkHeaderForRequest(
215 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(), 233 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(),
216 "<bar.js>; rel=serviceworker; scope=\"./foo%2Fbar\"", context_wrapper()); 234 "<bar.js>; rel=serviceworker; scope=\"./foo%2Fbar\"", context_wrapper());
217 base::RunLoop().RunUntilIdle(); 235 base::RunLoop().RunUntilIdle();
218 236
219 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 237 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
220 ASSERT_EQ(0u, registrations.size()); 238 ASSERT_EQ(0u, registrations.size());
221 } 239 }
222 240
223 TEST_F(LinkHeaderServiceWorkerTest, 241 TEST_F(LinkHeaderServiceWorkerTest,
224 InstallServiceWorker_ScriptUrlEncodedSlash) { 242 InstallServiceWorker_ScriptUrlEncodedSlash) {
243 CreateDocumentProviderHost();
225 ProcessLinkHeaderForRequest( 244 ProcessLinkHeaderForRequest(
226 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(), 245 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(),
227 "<foo%2Fbar.js>; rel=serviceworker", context_wrapper()); 246 "<foo%2Fbar.js>; rel=serviceworker", context_wrapper());
228 base::RunLoop().RunUntilIdle(); 247 base::RunLoop().RunUntilIdle();
229 248
230 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 249 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
231 ASSERT_EQ(0u, registrations.size()); 250 ASSERT_EQ(0u, registrations.size());
232 } 251 }
233 252
234 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScriptAbsoluteUrl) { 253 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_ScriptAbsoluteUrl) {
254 CreateDocumentProviderHost();
235 ProcessLinkHeaderForRequest( 255 ProcessLinkHeaderForRequest(
236 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(), 256 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(),
237 "<https://example.com/bar.js>; rel=serviceworker; scope=foo", 257 "<https://example.com/bar.js>; rel=serviceworker; scope=foo",
238 context_wrapper()); 258 context_wrapper());
239 base::RunLoop().RunUntilIdle(); 259 base::RunLoop().RunUntilIdle();
240 260
241 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 261 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
242 ASSERT_EQ(1u, registrations.size()); 262 ASSERT_EQ(1u, registrations.size());
243 EXPECT_EQ(GURL("https://example.com/foobar/foo"), registrations[0].pattern); 263 EXPECT_EQ(GURL("https://example.com/foobar/foo"), registrations[0].pattern);
244 EXPECT_EQ(GURL("https://example.com/bar.js"), 264 EXPECT_EQ(GURL("https://example.com/bar.js"),
245 registrations[0].active_version.script_url); 265 registrations[0].active_version.script_url);
246 } 266 }
247 267
248 TEST_F(LinkHeaderServiceWorkerTest, 268 TEST_F(LinkHeaderServiceWorkerTest,
249 InstallServiceWorker_ScriptDifferentOrigin) { 269 InstallServiceWorker_ScriptDifferentOrigin) {
270 CreateDocumentProviderHost();
250 ProcessLinkHeaderForRequest( 271 ProcessLinkHeaderForRequest(
251 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(), 272 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(),
252 "<https://google.com/bar.js>; rel=serviceworker; scope=foo", 273 "<https://google.com/bar.js>; rel=serviceworker; scope=foo",
253 context_wrapper()); 274 context_wrapper());
254 base::RunLoop().RunUntilIdle(); 275 base::RunLoop().RunUntilIdle();
255 276
256 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 277 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
257 ASSERT_EQ(0u, registrations.size()); 278 ASSERT_EQ(0u, registrations.size());
258 } 279 }
259 280
260 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_MultipleWorkers) { 281 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_MultipleWorkers) {
282 CreateDocumentProviderHost();
261 ProcessLinkHeaderForRequest( 283 ProcessLinkHeaderForRequest(
262 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(), 284 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(),
263 "<bar.js>; rel=serviceworker; scope=foo, <baz.js>; " 285 "<bar.js>; rel=serviceworker; scope=foo, <baz.js>; "
264 "rel=serviceworker; scope=scope", 286 "rel=serviceworker; scope=scope",
265 context_wrapper()); 287 context_wrapper());
266 base::RunLoop().RunUntilIdle(); 288 base::RunLoop().RunUntilIdle();
267 289
268 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 290 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
269 ASSERT_EQ(2u, registrations.size()); 291 ASSERT_EQ(2u, registrations.size());
270 EXPECT_EQ(GURL("https://example.com/foobar/foo"), registrations[0].pattern); 292 EXPECT_EQ(GURL("https://example.com/foobar/foo"), registrations[0].pattern);
271 EXPECT_EQ(GURL("https://example.com/foobar/bar.js"), 293 EXPECT_EQ(GURL("https://example.com/foobar/bar.js"),
272 registrations[0].active_version.script_url); 294 registrations[0].active_version.script_url);
273 EXPECT_EQ(GURL("https://example.com/foobar/scope"), registrations[1].pattern); 295 EXPECT_EQ(GURL("https://example.com/foobar/scope"), registrations[1].pattern);
274 EXPECT_EQ(GURL("https://example.com/foobar/baz.js"), 296 EXPECT_EQ(GURL("https://example.com/foobar/baz.js"),
275 registrations[1].active_version.script_url); 297 registrations[1].active_version.script_url);
276 } 298 }
277 299
278 TEST_F(LinkHeaderServiceWorkerTest, 300 TEST_F(LinkHeaderServiceWorkerTest,
279 InstallServiceWorker_ValidAndInvalidValues) { 301 InstallServiceWorker_ValidAndInvalidValues) {
302 CreateDocumentProviderHost();
280 ProcessLinkHeaderForRequest( 303 ProcessLinkHeaderForRequest(
281 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(), 304 CreateSubresourceRequest(GURL("https://example.com/foobar/")).get(),
282 "<https://google.com/bar.js>; rel=serviceworker; scope=foo, <baz.js>; " 305 "<https://google.com/bar.js>; rel=serviceworker; scope=foo, <baz.js>; "
283 "rel=serviceworker; scope=scope", 306 "rel=serviceworker; scope=scope",
284 context_wrapper()); 307 context_wrapper());
285 base::RunLoop().RunUntilIdle(); 308 base::RunLoop().RunUntilIdle();
286 309
287 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 310 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
288 ASSERT_EQ(1u, registrations.size()); 311 ASSERT_EQ(1u, registrations.size());
289 EXPECT_EQ(GURL("https://example.com/foobar/scope"), registrations[0].pattern); 312 EXPECT_EQ(GURL("https://example.com/foobar/scope"), registrations[0].pattern);
290 EXPECT_EQ(GURL("https://example.com/foobar/baz.js"), 313 EXPECT_EQ(GURL("https://example.com/foobar/baz.js"),
291 registrations[0].active_version.script_url); 314 registrations[0].active_version.script_url);
292 } 315 }
293 316
294 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_InsecureContext) { 317 TEST_F(LinkHeaderServiceWorkerTest, InstallServiceWorker_InsecureContext) {
318 CreateDocumentProviderHost();
295 std::unique_ptr<net::URLRequest> request = 319 std::unique_ptr<net::URLRequest> request =
296 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")); 320 CreateSubresourceRequest(GURL("https://example.com/foo/bar/"));
297 ResourceRequestInfoImpl::ForRequest(request.get()) 321 ResourceRequestInfoImpl::ForRequest(request.get())
298 ->set_initiated_in_secure_context_for_testing(false); 322 ->set_initiated_in_secure_context_for_testing(false);
299 ProcessLinkHeaderForRequest(request.get(), "<../foo.js>; rel=serviceworker", 323 ProcessLinkHeaderForRequest(request.get(), "<../foo.js>; rel=serviceworker",
300 context_wrapper()); 324 context_wrapper());
301 base::RunLoop().RunUntilIdle(); 325 base::RunLoop().RunUntilIdle();
302 326
303 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 327 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
304 ASSERT_EQ(0u, registrations.size()); 328 ASSERT_EQ(0u, registrations.size());
305 } 329 }
306 330
307 TEST_F(LinkHeaderServiceWorkerTest, 331 TEST_F(LinkHeaderServiceWorkerTest,
308 InstallServiceWorker_NavigationFromInsecureContextToSecureContext) { 332 InstallServiceWorker_NavigationFromInsecureContextToSecureContext) {
333 CreateDocumentProviderHost();
309 std::unique_ptr<net::URLRequest> request = CreateRequest( 334 std::unique_ptr<net::URLRequest> request = CreateRequest(
310 GURL("https://example.com/foo/bar/"), RESOURCE_TYPE_MAIN_FRAME); 335 GURL("https://example.com/foo/bar/"), RESOURCE_TYPE_MAIN_FRAME);
311 ResourceRequestInfoImpl::ForRequest(request.get()) 336 ResourceRequestInfoImpl::ForRequest(request.get())
312 ->set_initiated_in_secure_context_for_testing(false); 337 ->set_initiated_in_secure_context_for_testing(false);
313 338
314 provider_host()->SetDocumentUrl(GURL("https://example.com/foo/bar/")); 339 provider_host()->SetDocumentUrl(GURL("https://example.com/foo/bar/"));
315 provider_host()->set_parent_frame_secure(true);
316 340
317 ProcessLinkHeaderForRequest(request.get(), "<../foo.js>; rel=serviceworker", 341 ProcessLinkHeaderForRequest(request.get(), "<../foo.js>; rel=serviceworker",
318 context_wrapper()); 342 context_wrapper());
319 base::RunLoop().RunUntilIdle(); 343 base::RunLoop().RunUntilIdle();
320 344
321 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 345 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
322 ASSERT_EQ(1u, registrations.size()); 346 ASSERT_EQ(1u, registrations.size());
323 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern); 347 EXPECT_EQ(GURL("https://example.com/foo/"), registrations[0].pattern);
324 EXPECT_EQ(GURL("https://example.com/foo/foo.js"), 348 EXPECT_EQ(GURL("https://example.com/foo/foo.js"),
325 registrations[0].active_version.script_url); 349 registrations[0].active_version.script_url);
326 } 350 }
327 351
328 TEST_F(LinkHeaderServiceWorkerTest, 352 TEST_F(LinkHeaderServiceWorkerTest,
329 InstallServiceWorker_NavigationToInsecureContext) { 353 InstallServiceWorker_NavigationToInsecureContext) {
354 CreateDocumentProviderHost();
330 provider_host()->SetDocumentUrl(GURL("http://example.com/foo/bar/")); 355 provider_host()->SetDocumentUrl(GURL("http://example.com/foo/bar/"));
331 provider_host()->set_parent_frame_secure(true);
332 ProcessLinkHeaderForRequest(CreateRequest(GURL("http://example.com/foo/bar/"), 356 ProcessLinkHeaderForRequest(CreateRequest(GURL("http://example.com/foo/bar/"),
333 RESOURCE_TYPE_MAIN_FRAME) 357 RESOURCE_TYPE_MAIN_FRAME)
334 .get(), 358 .get(),
335 "<../foo.js>; rel=serviceworker", 359 "<../foo.js>; rel=serviceworker",
336 context_wrapper()); 360 context_wrapper());
337 base::RunLoop().RunUntilIdle(); 361 base::RunLoop().RunUntilIdle();
338 362
339 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 363 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
340 ASSERT_EQ(0u, registrations.size()); 364 ASSERT_EQ(0u, registrations.size());
341 } 365 }
342 366
343 TEST_F(LinkHeaderServiceWorkerTest, 367 TEST_F(LinkHeaderServiceWorkerTest,
344 InstallServiceWorker_NavigationToInsecureHttpsContext) { 368 InstallServiceWorker_NavigationToInsecureHttpsContext) {
369 CreateInsecureDocumentProviderHost();
345 provider_host()->SetDocumentUrl(GURL("https://example.com/foo/bar/")); 370 provider_host()->SetDocumentUrl(GURL("https://example.com/foo/bar/"));
346 provider_host()->set_parent_frame_secure(false);
347 ProcessLinkHeaderForRequest( 371 ProcessLinkHeaderForRequest(
348 CreateRequest(GURL("https://example.com/foo/bar/"), 372 CreateRequest(GURL("https://example.com/foo/bar/"),
349 RESOURCE_TYPE_MAIN_FRAME) 373 RESOURCE_TYPE_MAIN_FRAME)
350 .get(), 374 .get(),
351 "<../foo.js>; rel=serviceworker", context_wrapper()); 375 "<../foo.js>; rel=serviceworker", context_wrapper());
352 base::RunLoop().RunUntilIdle(); 376 base::RunLoop().RunUntilIdle();
353 377
354 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 378 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
355 ASSERT_EQ(0u, registrations.size()); 379 ASSERT_EQ(0u, registrations.size());
356 } 380 }
357 381
358 TEST_F(LinkHeaderServiceWorkerTest, 382 TEST_F(LinkHeaderServiceWorkerTest,
359 InstallServiceWorker_FromWorkerWithoutControllees) { 383 InstallServiceWorker_FromWorkerWithoutControllees) {
360 CreateServiceWorkerProviderHost(); 384 CreateServiceWorkerProviderHost();
361 ProcessLinkHeaderForRequest( 385 ProcessLinkHeaderForRequest(
362 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(), 386 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(),
363 "<../foo.js>; rel=serviceworker", context_wrapper()); 387 "<../foo.js>; rel=serviceworker", context_wrapper());
364 base::RunLoop().RunUntilIdle(); 388 base::RunLoop().RunUntilIdle();
365 389
366 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 390 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
367 ASSERT_EQ(0u, registrations.size()); 391 ASSERT_EQ(0u, registrations.size());
368 } 392 }
369 393
370 TEST_F(LinkHeaderServiceWorkerTest, 394 TEST_F(LinkHeaderServiceWorkerTest,
371 InstallServiceWorker_FromWorkerWithControllees) { 395 InstallServiceWorker_FromWorkerWithControllees) {
372 CreateServiceWorkerProviderHost(); 396 CreateServiceWorkerProviderHost();
373 397
374 std::unique_ptr<ServiceWorkerProviderHost> controllee( 398 std::unique_ptr<ServiceWorkerProviderHost> controllee =
375 new ServiceWorkerProviderHost( 399 CreateProviderHostForWindow(render_process_id(), kMockProviderId,
376 render_process_id(), MSG_ROUTING_NONE, kMockProviderId, 400 true /* is_parent_frame_secure */,
377 SERVICE_WORKER_PROVIDER_FOR_WINDOW, 401 context()->AsWeakPtr());
378 ServiceWorkerProviderHost::FrameSecurityLevel::UNINITIALIZED,
379 context()->AsWeakPtr(), nullptr));
380 provider_host()->running_hosted_version()->AddControllee(controllee.get()); 402 provider_host()->running_hosted_version()->AddControllee(controllee.get());
381 403
382 ProcessLinkHeaderForRequest( 404 ProcessLinkHeaderForRequest(
383 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(), 405 CreateSubresourceRequest(GURL("https://example.com/foo/bar/")).get(),
384 "<../foo.js>; rel=serviceworker", context_wrapper()); 406 "<../foo.js>; rel=serviceworker", context_wrapper());
385 base::RunLoop().RunUntilIdle(); 407 base::RunLoop().RunUntilIdle();
386 408
387 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations(); 409 std::vector<ServiceWorkerRegistrationInfo> registrations = GetRegistrations();
388 ASSERT_EQ(1u, registrations.size()); 410 ASSERT_EQ(1u, registrations.size());
389 } 411 }
390 412
391 } // namespace content 413 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698