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

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

Issue 2779763004: Create ServiceWorkerProviderHost before starting worker (Closed)
Patch Set: Pass the param of BindWithProviderInfo by value instead of pointer Created 3 years, 6 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 ServiceWorkerWriteToCacheJobTest(const std::string& scope, 281 ServiceWorkerWriteToCacheJobTest(const std::string& scope,
282 const std::string& script_url) 282 const std::string& script_url)
283 : scope_(scope), 283 : scope_(scope),
284 script_url_(script_url), 284 script_url_(script_url),
285 browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), 285 browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP),
286 mock_protocol_handler_(nullptr) {} 286 mock_protocol_handler_(nullptr) {}
287 ~ServiceWorkerWriteToCacheJobTest() override {} 287 ~ServiceWorkerWriteToCacheJobTest() override {}
288 288
289 base::WeakPtr<ServiceWorkerProviderHost> CreateHostForVersion( 289 base::WeakPtr<ServiceWorkerProviderHost> CreateHostForVersion(
290 int process_id, 290 int process_id,
291 int provider_id,
292 const scoped_refptr<ServiceWorkerVersion>& version) { 291 const scoped_refptr<ServiceWorkerVersion>& version) {
293 std::unique_ptr<ServiceWorkerProviderHost> host = 292 std::unique_ptr<ServiceWorkerProviderHost> host =
294 CreateProviderHostForServiceWorkerContext( 293 CreateProviderHostForServiceWorkerContext(
295 process_id, provider_id, true /* is_parent_frame_secure */, 294 process_id, true /* is_parent_frame_secure */, version.get(),
296 context()->AsWeakPtr(), &remote_endpoint_); 295 context()->AsWeakPtr(), &remote_endpoint_);
297 base::WeakPtr<ServiceWorkerProviderHost> provider_host = host->AsWeakPtr(); 296 base::WeakPtr<ServiceWorkerProviderHost> host_weakptr = host->AsWeakPtr();
298 context()->AddProviderHost(std::move(host)); 297 context()->AddProviderHost(std::move(host));
299 provider_host->running_hosted_version_ = version; 298 return host_weakptr;
300 return provider_host;
301 } 299 }
302 300
303 void SetUpScriptRequest(int process_id, int provider_id) { 301 void SetUpScriptRequest(int process_id, int provider_id) {
304 request_.reset(); 302 request_.reset();
305 url_request_context_.reset(); 303 url_request_context_.reset();
306 url_request_job_factory_.reset(); 304 url_request_job_factory_.reset();
307 mock_protocol_handler_ = nullptr; 305 mock_protocol_handler_ = nullptr;
308 // URLRequestJobs may post clean-up tasks on destruction. 306 // URLRequestJobs may post clean-up tasks on destruction.
309 base::RunLoop().RunUntilIdle(); 307 base::RunLoop().RunUntilIdle();
310 308
311 url_request_context_.reset(new net::URLRequestContext); 309 url_request_context_.reset(new net::URLRequestContext);
312 mock_protocol_handler_ = new MockHttpProtocolHandler(&resource_context_); 310 mock_protocol_handler_ = new MockHttpProtocolHandler(&resource_context_);
313 url_request_job_factory_.reset(new net::URLRequestJobFactoryImpl); 311 url_request_job_factory_.reset(new net::URLRequestJobFactoryImpl);
314 url_request_job_factory_->SetProtocolHandler( 312 url_request_job_factory_->SetProtocolHandler(
315 "https", base::WrapUnique(mock_protocol_handler_)); 313 "https", base::WrapUnique(mock_protocol_handler_));
316 url_request_context_->set_job_factory(url_request_job_factory_.get()); 314 url_request_context_->set_job_factory(url_request_job_factory_.get());
317 315
318 request_ = url_request_context_->CreateRequest( 316 request_ = url_request_context_->CreateRequest(
319 script_url_, net::DEFAULT_PRIORITY, &url_request_delegate_, 317 script_url_, net::DEFAULT_PRIORITY, &url_request_delegate_,
320 TRAFFIC_ANNOTATION_FOR_TESTS); 318 TRAFFIC_ANNOTATION_FOR_TESTS);
321 ServiceWorkerRequestHandler::InitializeHandler( 319 ServiceWorkerRequestHandler::InitializeHandler(
322 request_.get(), context_wrapper(), &blob_storage_context_, process_id, 320 request_.get(), context_wrapper(), &blob_storage_context_, process_id,
323 provider_id, false, FETCH_REQUEST_MODE_NO_CORS, 321 provider_id, false, FETCH_REQUEST_MODE_NO_CORS,
324 FETCH_CREDENTIALS_MODE_OMIT, FetchRedirectMode::FOLLOW_MODE, 322 FETCH_CREDENTIALS_MODE_OMIT, FetchRedirectMode::FOLLOW_MODE,
325 RESOURCE_TYPE_SERVICE_WORKER, REQUEST_CONTEXT_TYPE_SERVICE_WORKER, 323 RESOURCE_TYPE_SERVICE_WORKER, REQUEST_CONTEXT_TYPE_SERVICE_WORKER,
326 REQUEST_CONTEXT_FRAME_TYPE_NONE, 324 REQUEST_CONTEXT_FRAME_TYPE_NONE,
327 scoped_refptr<ResourceRequestBodyImpl>()); 325 scoped_refptr<ResourceRequestBodyImpl>());
328 } 326 }
329 327
330 int NextProviderId() { return next_provider_id_++; }
331 int NextVersionId() { return next_version_id_++; } 328 int NextVersionId() { return next_version_id_++; }
332 329
333 void SetUp() override { 330 void SetUp() override {
334 int provider_id = NextProviderId();
335 helper_.reset(new EmbeddedWorkerTestHelper(base::FilePath())); 331 helper_.reset(new EmbeddedWorkerTestHelper(base::FilePath()));
336 332
337 // A new unstored registration/version. 333 // A new unstored registration/version.
338 registration_ = 334 registration_ =
339 new ServiceWorkerRegistration(scope_, 1L, context()->AsWeakPtr()); 335 new ServiceWorkerRegistration(scope_, 1L, context()->AsWeakPtr());
340 version_ = 336 version_ =
341 new ServiceWorkerVersion(registration_.get(), script_url_, 337 new ServiceWorkerVersion(registration_.get(), script_url_,
342 NextVersionId(), context()->AsWeakPtr()); 338 NextVersionId(), context()->AsWeakPtr());
343 base::WeakPtr<ServiceWorkerProviderHost> host = CreateHostForVersion( 339 base::WeakPtr<ServiceWorkerProviderHost> host =
344 helper_->mock_render_process_id(), provider_id, version_); 340 CreateHostForVersion(helper_->mock_render_process_id(), version_);
345 ASSERT_TRUE(host); 341 ASSERT_TRUE(host);
346 SetUpScriptRequest(helper_->mock_render_process_id(), host->provider_id()); 342 SetUpScriptRequest(helper_->mock_render_process_id(), host->provider_id());
347 343
348 context()->storage()->LazyInitialize(base::Bind(&EmptyCallback)); 344 context()->storage()->LazyInitialize(base::Bind(&EmptyCallback));
349 base::RunLoop().RunUntilIdle(); 345 base::RunLoop().RunUntilIdle();
350 } 346 }
351 347
352 void TearDown() override { 348 void TearDown() override {
353 request_.reset(); 349 request_.reset();
354 url_request_context_.reset(); 350 url_request_context_.reset();
(...skipping 29 matching lines...) Expand all
384 } 380 }
385 381
386 int GetResourceId(ServiceWorkerVersion* version) { 382 int GetResourceId(ServiceWorkerVersion* version) {
387 return version->script_cache_map()->LookupResourceId(script_url_); 383 return version->script_cache_map()->LookupResourceId(script_url_);
388 } 384 }
389 385
390 // Performs the net request for an update of |registration_|'s incumbent 386 // Performs the net request for an update of |registration_|'s incumbent
391 // to the script |response|. Returns the new version. 387 // to the script |response|. Returns the new version.
392 scoped_refptr<ServiceWorkerVersion> UpdateScript( 388 scoped_refptr<ServiceWorkerVersion> UpdateScript(
393 const std::string& response) { 389 const std::string& response) {
394 int provider_id = NextProviderId();
395 scoped_refptr<ServiceWorkerVersion> new_version = 390 scoped_refptr<ServiceWorkerVersion> new_version =
396 new ServiceWorkerVersion(registration_.get(), script_url_, 391 new ServiceWorkerVersion(registration_.get(), script_url_,
397 NextVersionId(), context()->AsWeakPtr()); 392 NextVersionId(), context()->AsWeakPtr());
398 new_version->set_pause_after_download(true); 393 new_version->set_pause_after_download(true);
399 base::WeakPtr<ServiceWorkerProviderHost> host = CreateHostForVersion( 394 base::WeakPtr<ServiceWorkerProviderHost> host =
400 helper_->mock_render_process_id(), provider_id, new_version); 395 CreateHostForVersion(helper_->mock_render_process_id(), new_version);
401 396 EXPECT_TRUE(host);
402 SetUpScriptRequest(helper_->mock_render_process_id(), host->provider_id()); 397 SetUpScriptRequest(helper_->mock_render_process_id(), host->provider_id());
403 mock_protocol_handler_->SetCreateJobCallback( 398 mock_protocol_handler_->SetCreateJobCallback(
404 base::Bind(&CreateResponseJob, response)); 399 base::Bind(&CreateResponseJob, response));
405 request_->Start(); 400 request_->Start();
406 base::RunLoop().RunUntilIdle(); 401 base::RunLoop().RunUntilIdle();
407 return new_version; 402 return new_version;
408 } 403 }
409 404
410 void VerifyResource(int id, const std::string& expected) { 405 void VerifyResource(int id, const std::string& expected) {
411 ASSERT_NE(kInvalidServiceWorkerResourceId, id); 406 ASSERT_NE(kInvalidServiceWorkerResourceId, id);
(...skipping 16 matching lines...) Expand all
428 void DisableCache() { context()->storage()->disk_cache()->Disable(); } 423 void DisableCache() { context()->storage()->disk_cache()->Disable(); }
429 424
430 protected: 425 protected:
431 const GURL scope_; 426 const GURL scope_;
432 const GURL script_url_; 427 const GURL script_url_;
433 428
434 TestBrowserThreadBundle browser_thread_bundle_; 429 TestBrowserThreadBundle browser_thread_bundle_;
435 std::unique_ptr<EmbeddedWorkerTestHelper> helper_; 430 std::unique_ptr<EmbeddedWorkerTestHelper> helper_;
436 scoped_refptr<ServiceWorkerRegistration> registration_; 431 scoped_refptr<ServiceWorkerRegistration> registration_;
437 scoped_refptr<ServiceWorkerVersion> version_; 432 scoped_refptr<ServiceWorkerVersion> version_;
438 base::WeakPtr<ServiceWorkerProviderHost> provider_host_;
439 std::unique_ptr<net::URLRequestContext> url_request_context_; 433 std::unique_ptr<net::URLRequestContext> url_request_context_;
440 std::unique_ptr<net::URLRequestJobFactoryImpl> url_request_job_factory_; 434 std::unique_ptr<net::URLRequestJobFactoryImpl> url_request_job_factory_;
441 std::unique_ptr<net::URLRequest> request_; 435 std::unique_ptr<net::URLRequest> request_;
442 MockHttpProtocolHandler* mock_protocol_handler_; 436 MockHttpProtocolHandler* mock_protocol_handler_;
443 437
444 storage::BlobStorageContext blob_storage_context_; 438 storage::BlobStorageContext blob_storage_context_;
445 content::MockResourceContext resource_context_; 439 content::MockResourceContext resource_context_;
446 ServiceWorkerRemoteProviderEndpoint remote_endpoint_; 440 ServiceWorkerRemoteProviderEndpoint remote_endpoint_;
447 441
448 net::TestDelegate url_request_delegate_; 442 net::TestDelegate url_request_delegate_;
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 mock_protocol_handler_->SetCreateJobCallback( 677 mock_protocol_handler_->SetCreateJobCallback(
684 base::Bind(&CreateNormalURLRequestJob)); 678 base::Bind(&CreateNormalURLRequestJob));
685 DisableCache(); 679 DisableCache();
686 request_->Start(); 680 request_->Start();
687 base::RunLoop().RunUntilIdle(); 681 base::RunLoop().RunUntilIdle();
688 EXPECT_EQ(net::URLRequestStatus::FAILED, request_->status().status()); 682 EXPECT_EQ(net::URLRequestStatus::FAILED, request_->status().status());
689 EXPECT_EQ(net::ERR_FAILED, request_->status().error()); 683 EXPECT_EQ(net::ERR_FAILED, request_->status().error());
690 } 684 }
691 685
692 } // namespace content 686 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698