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

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

Issue 2638313002: Manage ServiceWorkerDispatcherHost in ServiceWorkerContextCore (Closed)
Patch Set: Add a newline 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>
106 ServiceWorkerProviderHost::CreateForTesting(
107 int process_id,
108 int provider_id,
109 ServiceWorkerProviderType type,
110 base::WeakPtr<ServiceWorkerContextCore> context,
111 int route_id,
112 ServiceWorkerDispatcherHost* dispatcher_host) {
113 return base::WrapUnique(new ServiceWorkerProviderHost(
114 process_id, route_id, provider_id, type,
115 FrameSecurityLevel::UNINITIALIZED, context, dispatcher_host));
116 }
117
118 // static
119 std::unique_ptr<ServiceWorkerProviderHost> ServiceWorkerProviderHost::Create(
120 int process_id,
121 ServiceWorkerProviderHostInfo info,
122 base::WeakPtr<ServiceWorkerContextCore> context,
123 ServiceWorkerDispatcherHost* dispatcher_host) {
124 return base::WrapUnique(new ServiceWorkerProviderHost(
falken 2017/01/26 05:15:43 MakeUnique is preferred
shimazu 2017/01/26 09:27:23 The constructor is private, so WrapUnique is used
125 process_id, info.route_id, info.provider_id, info.type,
126 info.is_parent_frame_secure ? FrameSecurityLevel::SECURE
127 : FrameSecurityLevel::INSECURE,
128 context, dispatcher_host));
129 }
130
104 ServiceWorkerProviderHost::ServiceWorkerProviderHost( 131 ServiceWorkerProviderHost::ServiceWorkerProviderHost(
105 int render_process_id, 132 int render_process_id,
106 int route_id, 133 int route_id,
107 int provider_id, 134 int provider_id,
108 ServiceWorkerProviderType provider_type, 135 ServiceWorkerProviderType provider_type,
109 FrameSecurityLevel parent_frame_security_level, 136 FrameSecurityLevel parent_frame_security_level,
110 base::WeakPtr<ServiceWorkerContextCore> context, 137 base::WeakPtr<ServiceWorkerContextCore> context,
111 ServiceWorkerDispatcherHost* dispatcher_host) 138 ServiceWorkerDispatcherHost* dispatcher_host)
112 : client_uuid_(base::GenerateGUID()), 139 : client_uuid_(base::GenerateGUID()),
113 render_process_id_(render_process_id), 140 render_process_id_(render_process_id),
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 506
480 bool ServiceWorkerProviderHost::GetRegistrationForReady( 507 bool ServiceWorkerProviderHost::GetRegistrationForReady(
481 const GetRegistrationForReadyCallback& callback) { 508 const GetRegistrationForReadyCallback& callback) {
482 if (get_ready_callback_) 509 if (get_ready_callback_)
483 return false; 510 return false;
484 get_ready_callback_.reset(new OneShotGetReadyCallback(callback)); 511 get_ready_callback_.reset(new OneShotGetReadyCallback(callback));
485 ReturnRegistrationForReadyIfNeeded(); 512 ReturnRegistrationForReadyIfNeeded();
486 return true; 513 return true;
487 } 514 }
488 515
489 void ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() { 516 std::unique_ptr<ServiceWorkerProviderHost>
517 ServiceWorkerProviderHost::PrepareForCrossSiteTransfer() {
490 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, render_process_id_); 518 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, render_process_id_);
491 DCHECK_NE(MSG_ROUTING_NONE, route_id_); 519 DCHECK_NE(MSG_ROUTING_NONE, route_id_);
492 DCHECK_EQ(kDocumentMainThreadId, render_thread_id_); 520 DCHECK_EQ(kDocumentMainThreadId, render_thread_id_);
493 DCHECK_NE(SERVICE_WORKER_PROVIDER_UNKNOWN, provider_type_); 521 DCHECK_NE(SERVICE_WORKER_PROVIDER_UNKNOWN, provider_type_);
494 522
523 std::unique_ptr<ServiceWorkerProviderHost> new_provider_host =
524 base::WrapUnique(new ServiceWorkerProviderHost(
525 process_id(), frame_id(), provider_id(), provider_type(),
526 parent_frame_security_level_, context_, dispatcher_host()));
527
495 for (const GURL& pattern : associated_patterns_) 528 for (const GURL& pattern : associated_patterns_)
496 DecreaseProcessReference(pattern); 529 DecreaseProcessReference(pattern);
497 530
498 for (auto& key_registration : matching_registrations_) 531 for (auto& key_registration : matching_registrations_)
499 DecreaseProcessReference(key_registration.second->pattern()); 532 DecreaseProcessReference(key_registration.second->pattern());
500 533
501 if (associated_registration_.get()) { 534 if (associated_registration_.get()) {
502 if (dispatcher_host_) { 535 if (dispatcher_host_) {
503 Send(new ServiceWorkerMsg_DisassociateRegistration( 536 Send(new ServiceWorkerMsg_DisassociateRegistration(
504 render_thread_id_, provider_id())); 537 render_thread_id_, provider_id()));
505 } 538 }
506 } 539 }
507 540
508 render_process_id_ = ChildProcessHost::kInvalidUniqueID; 541 render_process_id_ = ChildProcessHost::kInvalidUniqueID;
509 route_id_ = MSG_ROUTING_NONE; 542 route_id_ = MSG_ROUTING_NONE;
510 render_thread_id_ = kInvalidEmbeddedWorkerThreadId; 543 render_thread_id_ = kInvalidEmbeddedWorkerThreadId;
511 provider_id_ = kInvalidServiceWorkerProviderId; 544 provider_id_ = kInvalidServiceWorkerProviderId;
512 provider_type_ = SERVICE_WORKER_PROVIDER_UNKNOWN; 545 provider_type_ = SERVICE_WORKER_PROVIDER_UNKNOWN;
513 dispatcher_host_ = nullptr; 546 dispatcher_host_ = nullptr;
547 return new_provider_host;
514 } 548 }
515 549
516 void ServiceWorkerProviderHost::CompleteCrossSiteTransfer( 550 void ServiceWorkerProviderHost::CompleteCrossSiteTransfer(
517 int new_process_id, 551 int new_process_id,
518 int new_frame_id, 552 int new_frame_id,
519 int new_provider_id, 553 int new_provider_id,
520 ServiceWorkerProviderType new_provider_type, 554 ServiceWorkerProviderType new_provider_type,
521 ServiceWorkerDispatcherHost* new_dispatcher_host) { 555 ServiceWorkerDispatcherHost* new_dispatcher_host) {
522 DCHECK_EQ(ChildProcessHost::kInvalidUniqueID, render_process_id_); 556 DCHECK_EQ(ChildProcessHost::kInvalidUniqueID, render_process_id_);
523 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, new_process_id); 557 DCHECK_NE(ChildProcessHost::kInvalidUniqueID, new_process_id);
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 Send(new ServiceWorkerMsg_SetControllerServiceWorker( 764 Send(new ServiceWorkerMsg_SetControllerServiceWorker(
731 render_thread_id_, provider_id(), 765 render_thread_id_, provider_id(),
732 GetOrCreateServiceWorkerHandle( 766 GetOrCreateServiceWorkerHandle(
733 associated_registration_->active_version()), 767 associated_registration_->active_version()),
734 false /* shouldNotifyControllerChange */)); 768 false /* shouldNotifyControllerChange */));
735 } 769 }
736 } 770 }
737 } 771 }
738 772
739 } // namespace content 773 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698