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

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

Issue 2638313002: Manage ServiceWorkerDispatcherHost in ServiceWorkerContextCore (Closed)
Patch Set: Remove a break line 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/service_worker_provider_host.h" 5 #include "content/browser/service_worker/service_worker_provider_host.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/guid.h" 9 #include "base/guid.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 84
85 // static 85 // static
86 std::unique_ptr<ServiceWorkerProviderHost> 86 std::unique_ptr<ServiceWorkerProviderHost>
87 ServiceWorkerProviderHost::PreCreateNavigationHost( 87 ServiceWorkerProviderHost::PreCreateNavigationHost(
88 base::WeakPtr<ServiceWorkerContextCore> context, 88 base::WeakPtr<ServiceWorkerContextCore> context,
89 bool are_ancestors_secure, 89 bool are_ancestors_secure,
90 const WebContentsGetter& web_contents_getter) { 90 const WebContentsGetter& web_contents_getter) {
91 CHECK(IsBrowserSideNavigationEnabled()); 91 CHECK(IsBrowserSideNavigationEnabled());
92 // Generate a new browser-assigned id for the host. 92 // Generate a new browser-assigned id for the host.
93 int provider_id = g_next_navigation_provider_id--; 93 int provider_id = g_next_navigation_provider_id--;
94 auto host = base::MakeUnique<ServiceWorkerProviderHost>( 94 auto host = base::WrapUnique(new ServiceWorkerProviderHost(
95 ChildProcessHost::kInvalidUniqueID, MSG_ROUTING_NONE, provider_id, 95 ChildProcessHost::kInvalidUniqueID, MSG_ROUTING_NONE, provider_id,
96 SERVICE_WORKER_PROVIDER_FOR_WINDOW, 96 SERVICE_WORKER_PROVIDER_FOR_WINDOW,
97 are_ancestors_secure ? FrameSecurityLevel::SECURE 97 are_ancestors_secure ? FrameSecurityLevel::SECURE
98 : FrameSecurityLevel::INSECURE, 98 : FrameSecurityLevel::INSECURE,
99 context, nullptr); 99 context, nullptr));
100 host->web_contents_getter_ = web_contents_getter; 100 host->web_contents_getter_ = web_contents_getter;
101 return host; 101 return host;
102 } 102 }
103 103
104 // static
105 std::unique_ptr<ServiceWorkerProviderHost> ServiceWorkerProviderHost::Create(
106 int process_id,
107 ServiceWorkerProviderHostInfo info,
108 base::WeakPtr<ServiceWorkerContextCore> context,
109 ServiceWorkerDispatcherHost* dispatcher_host) {
110 return base::WrapUnique(new ServiceWorkerProviderHost(
111 process_id, info.route_id, info.provider_id, info.type,
112 info.is_parent_frame_secure ? FrameSecurityLevel::SECURE
113 : FrameSecurityLevel::INSECURE,
114 context, dispatcher_host));
115 }
116
104 ServiceWorkerProviderHost::ServiceWorkerProviderHost( 117 ServiceWorkerProviderHost::ServiceWorkerProviderHost(
105 int render_process_id, 118 int render_process_id,
106 int route_id, 119 int route_id,
107 int provider_id, 120 int provider_id,
108 ServiceWorkerProviderType provider_type, 121 ServiceWorkerProviderType provider_type,
109 FrameSecurityLevel parent_frame_security_level, 122 FrameSecurityLevel parent_frame_security_level,
110 base::WeakPtr<ServiceWorkerContextCore> context, 123 base::WeakPtr<ServiceWorkerContextCore> context,
111 ServiceWorkerDispatcherHost* dispatcher_host) 124 ServiceWorkerDispatcherHost* dispatcher_host)
112 : client_uuid_(base::GenerateGUID()), 125 : client_uuid_(base::GenerateGUID()),
113 render_process_id_(render_process_id), 126 render_process_id_(render_process_id),
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 492
480 bool ServiceWorkerProviderHost::GetRegistrationForReady( 493 bool ServiceWorkerProviderHost::GetRegistrationForReady(
481 const GetRegistrationForReadyCallback& callback) { 494 const GetRegistrationForReadyCallback& callback) {
482 if (get_ready_callback_) 495 if (get_ready_callback_)
483 return false; 496 return false;
484 get_ready_callback_.reset(new OneShotGetReadyCallback(callback)); 497 get_ready_callback_.reset(new OneShotGetReadyCallback(callback));
485 ReturnRegistrationForReadyIfNeeded(); 498 ReturnRegistrationForReadyIfNeeded();
486 return true; 499 return true;
487 } 500 }
488 501
489 void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { 502 std::unique_ptr<ServiceWorkerProviderHost>
503 ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() {
490 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, render_process_id_); 504 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, render_process_id_);
491 DCHECK_NE(MSG_ROUTING_NONE, route_id_); 505 DCHECK_NE(MSG_ROUTING_NONE, route_id_);
492 DCHECK_EQ(kDocumentMainThreadId, render_thread_id_); 506 DCHECK_EQ(kDocumentMainThreadId, render_thread_id_);
493 DCHECK_NE(SERVICE_WORKER_PROVIDER_UNKNOWN, provider_type_); 507 DCHECK_NE(SERVICE_WORKER_PROVIDER_UNKNOWN, provider_type_);
494 508
509 std::unique_ptr<ServiceWorkerProviderHost> new_provider_host =
510 base::WrapUnique(new ServiceWorkerProviderHost(
511 process_id(), frame_id(), provider_id(), provider_type(),
512 parent_frame_security_level_, context_, dispatcher_host()));
513
495 for (const GURL& pattern : associated_patterns_) 514 for (const GURL& pattern : associated_patterns_)
496 DecreaseProcessReference(pattern); 515 DecreaseProcessReference(pattern);
497 516
498 for (auto& key_registration : matching_registrations_) 517 for (auto& key_registration : matching_registrations_)
499 DecreaseProcessReference(key_registration.second->pattern()); 518 DecreaseProcessReference(key_registration.second->pattern());
500 519
501 if (associated_registration_.get()) { 520 if (associated_registration_.get()) {
502 if (dispatcher_host_) { 521 if (dispatcher_host_) {
503 Send(new ServiceWorkerMsg_DisassociateRegistration( 522 Send(new ServiceWorkerMsg_DisassociateRegistration(
504 render_thread_id_, provider_id())); 523 render_thread_id_, provider_id()));
505 } 524 }
506 } 525 }
507 526
508 render_process_id_ = ChildProcessHost::kInvalidUniqueID; 527 render_process_id_ = ChildProcessHost::kInvalidUniqueID;
509 route_id_ = MSG_ROUTING_NONE; 528 route_id_ = MSG_ROUTING_NONE;
510 render_thread_id_ = kInvalidEmbeddedWorkerThreadId; 529 render_thread_id_ = kInvalidEmbeddedWorkerThreadId;
511 provider_id_ = kInvalidServiceWorkerProviderId; 530 provider_id_ = kInvalidServiceWorkerProviderId;
512 provider_type_ = SERVICE_WORKER_PROVIDER_UNKNOWN; 531 provider_type_ = SERVICE_WORKER_PROVIDER_UNKNOWN;
513 dispatcher_host_ = nullptr; 532 dispatcher_host_ = nullptr;
533 return new_provider_host;
514 } 534 }
515 535
516 void ServiceWorkerProviderHost::CompleteCrossSiteTransfer( 536 void ServiceWorkerProviderHost::CompleteCrossSiteTransfer(
517 int new_process_id, 537 int new_process_id,
518 int new_frame_id, 538 int new_frame_id,
519 int new_provider_id, 539 int new_provider_id,
520 ServiceWorkerProviderType new_provider_type, 540 ServiceWorkerProviderType new_provider_type,
521 ServiceWorkerDispatcherHost* new_dispatcher_host) { 541 ServiceWorkerDispatcherHost* new_dispatcher_host) {
522 DCHECK_EQ(ChildProcessHost::kInvalidUniqueID, render_process_id_); 542 DCHECK_EQ(ChildProcessHost::kInvalidUniqueID, render_process_id_);
523 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, new_process_id); 543 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, new_process_id);
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 Send(new ServiceWorkerMsg_SetControllerServiceWorker( 750 Send(new ServiceWorkerMsg_SetControllerServiceWorker(
731 render_thread_id_, provider_id(), 751 render_thread_id_, provider_id(),
732 GetOrCreateServiceWorkerHandle( 752 GetOrCreateServiceWorkerHandle(
733 associated_registration_->active_version()), 753 associated_registration_->active_version()),
734 false /* shouldNotifyControllerChange */)); 754 false /* shouldNotifyControllerChange */));
735 } 755 }
736 } 756 }
737 } 757 }
738 758
739 } // namespace content 759 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698