OLD | NEW |
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_dispatcher_host.h" | 5 #include "content/browser/service_worker/service_worker_dispatcher_host.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/profiler/scoped_tracker.h" | 8 #include "base/profiler/scoped_tracker.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 717 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
728 "477117 ServiceWorkerDispatcherHost::OnProviderCreated")); | 728 "477117 ServiceWorkerDispatcherHost::OnProviderCreated")); |
729 TRACE_EVENT0("ServiceWorker", | 729 TRACE_EVENT0("ServiceWorker", |
730 "ServiceWorkerDispatcherHost::OnProviderCreated"); | 730 "ServiceWorkerDispatcherHost::OnProviderCreated"); |
731 if (!GetContext()) | 731 if (!GetContext()) |
732 return; | 732 return; |
733 if (GetContext()->GetProviderHost(render_process_id_, provider_id)) { | 733 if (GetContext()->GetProviderHost(render_process_id_, provider_id)) { |
734 bad_message::ReceivedBadMessage(this, | 734 bad_message::ReceivedBadMessage(this, |
735 bad_message::SWDH_PROVIDER_CREATED_NO_HOST); | 735 bad_message::SWDH_PROVIDER_CREATED_NO_HOST); |
736 return; | 736 return; |
737 } | 737 } |
738 scoped_ptr<ServiceWorkerProviderHost> provider_host( | 738 |
739 new ServiceWorkerProviderHost(render_process_id_, route_id, provider_id, | 739 scoped_ptr<ServiceWorkerProviderHost> provider_host; |
740 provider_type, GetContext()->AsWeakPtr(), | 740 if (ServiceWorkerUtils::IsBrowserAssignedProviderId(provider_id)) { |
741 this)); | 741 // PlzNavigate |
| 742 // Retrieve the provider host previously created for navigation requests. |
| 743 provider_host = GetContext()->TakeNavigationProviderHost(provider_id); |
| 744 if (provider_host == nullptr) { |
| 745 bad_message::ReceivedBadMessage( |
| 746 this, bad_message::SWDH_PROVIDER_CREATED_NO_HOST); |
| 747 return; |
| 748 } |
| 749 DCHECK_EQ(SERVICE_WORKER_PROVIDER_FOR_WINDOW, provider_type); |
| 750 provider_host->CompleteNavigationInitialized(render_process_id_, route_id, |
| 751 this); |
| 752 } else { |
| 753 provider_host = |
| 754 scoped_ptr<ServiceWorkerProviderHost>(new ServiceWorkerProviderHost( |
| 755 render_process_id_, route_id, provider_id, provider_type, |
| 756 GetContext()->AsWeakPtr(), this)); |
| 757 } |
742 GetContext()->AddProviderHost(provider_host.Pass()); | 758 GetContext()->AddProviderHost(provider_host.Pass()); |
743 } | 759 } |
744 | 760 |
745 void ServiceWorkerDispatcherHost::OnProviderDestroyed(int provider_id) { | 761 void ServiceWorkerDispatcherHost::OnProviderDestroyed(int provider_id) { |
746 TRACE_EVENT0("ServiceWorker", | 762 TRACE_EVENT0("ServiceWorker", |
747 "ServiceWorkerDispatcherHost::OnProviderDestroyed"); | 763 "ServiceWorkerDispatcherHost::OnProviderDestroyed"); |
748 if (!GetContext()) | 764 if (!GetContext()) |
749 return; | 765 return; |
750 if (!GetContext()->GetProviderHost(render_process_id_, provider_id)) { | 766 if (!GetContext()->GetProviderHost(render_process_id_, provider_id)) { |
751 bad_message::ReceivedBadMessage( | 767 bad_message::ReceivedBadMessage( |
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1294 if (!handle) { | 1310 if (!handle) { |
1295 bad_message::ReceivedBadMessage(this, | 1311 bad_message::ReceivedBadMessage(this, |
1296 bad_message::SWDH_TERMINATE_BAD_HANDLE); | 1312 bad_message::SWDH_TERMINATE_BAD_HANDLE); |
1297 return; | 1313 return; |
1298 } | 1314 } |
1299 handle->version()->StopWorker( | 1315 handle->version()->StopWorker( |
1300 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1316 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
1301 } | 1317 } |
1302 | 1318 |
1303 } // namespace content | 1319 } // namespace content |
OLD | NEW |