| 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 <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 const char kEnableNavigationPreloadErrorPrefix[] = | 57 const char kEnableNavigationPreloadErrorPrefix[] = |
| 58 "Failed to enable or disable navigation preload: "; | 58 "Failed to enable or disable navigation preload: "; |
| 59 const char kGetNavigationPreloadStateErrorPrefix[] = | 59 const char kGetNavigationPreloadStateErrorPrefix[] = |
| 60 "Failed to get navigation preload state: "; | 60 "Failed to get navigation preload state: "; |
| 61 const char kSetNavigationPreloadHeaderErrorPrefix[] = | 61 const char kSetNavigationPreloadHeaderErrorPrefix[] = |
| 62 "Failed to set navigation preload header: "; | 62 "Failed to set navigation preload header: "; |
| 63 const char kNoActiveWorkerErrorMessage[] = | 63 const char kNoActiveWorkerErrorMessage[] = |
| 64 "The registration does not have an active worker."; | 64 "The registration does not have an active worker."; |
| 65 const char kDatabaseErrorMessage[] = "Failed to access storage."; | 65 const char kDatabaseErrorMessage[] = "Failed to access storage."; |
| 66 | 66 |
| 67 const uint32_t kFilteredMessageClasses[] = { | 67 const uint32_t kSW2FilteredMessageClasses[] = { |
| 68 ServiceWorkerMsgStart, EmbeddedWorkerMsgStart, | 68 ServiceWorkerMsgStart, EmbeddedWorkerMsgStart, |
| 69 }; | 69 }; |
| 70 | 70 |
| 71 void RunSoon(const base::Closure& callback) { | 71 void SWRunSoon(const base::Closure& callback) { |
| 72 if (!callback.is_null()) | 72 if (!callback.is_null()) |
| 73 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); | 73 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); |
| 74 } | 74 } |
| 75 | 75 |
| 76 WebContents* GetWebContents(int render_process_id, int render_frame_id) { | 76 WebContents* GetWebContents(int render_process_id, int render_frame_id) { |
| 77 RenderFrameHost* rfh = | 77 RenderFrameHost* rfh = |
| 78 RenderFrameHost::FromID(render_process_id, render_frame_id); | 78 RenderFrameHost::FromID(render_process_id, render_frame_id); |
| 79 return WebContents::FromRenderFrameHost(rfh); | 79 return WebContents::FromRenderFrameHost(rfh); |
| 80 } | 80 } |
| 81 | 81 |
| 82 } // namespace | 82 } // namespace |
| 83 | 83 |
| 84 ServiceWorkerDispatcherHost::ServiceWorkerDispatcherHost( | 84 ServiceWorkerDispatcherHost::ServiceWorkerDispatcherHost( |
| 85 int render_process_id, | 85 int render_process_id, |
| 86 ResourceContext* resource_context) | 86 ResourceContext* resource_context) |
| 87 : BrowserMessageFilter(kFilteredMessageClasses, | 87 : BrowserMessageFilter(kSW2FilteredMessageClasses, |
| 88 arraysize(kFilteredMessageClasses)), | 88 arraysize(kSW2FilteredMessageClasses)), |
| 89 BrowserAssociatedInterface<mojom::ServiceWorkerDispatcherHost>(this, | 89 BrowserAssociatedInterface<mojom::ServiceWorkerDispatcherHost>(this, |
| 90 this), | 90 this), |
| 91 render_process_id_(render_process_id), | 91 render_process_id_(render_process_id), |
| 92 resource_context_(resource_context), | 92 resource_context_(resource_context), |
| 93 channel_ready_(false), | 93 channel_ready_(false), |
| 94 weak_ptr_factory_(this) {} | 94 weak_ptr_factory_(this) {} |
| 95 | 95 |
| 96 ServiceWorkerDispatcherHost::~ServiceWorkerDispatcherHost() { | 96 ServiceWorkerDispatcherHost::~ServiceWorkerDispatcherHost() { |
| 97 // Temporary CHECK for debugging https://crbug.com/736203. | 97 // Temporary CHECK for debugging https://crbug.com/736203. |
| 98 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 98 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| (...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 DispatchExtendableMessageEventInternal< | 678 DispatchExtendableMessageEventInternal< |
| 679 ServiceWorkerClientInfo>, | 679 ServiceWorkerClientInfo>, |
| 680 this, worker, message, source_origin, sent_message_ports, | 680 this, worker, message, source_origin, sent_message_ports, |
| 681 base::nullopt, callback)); | 681 base::nullopt, callback)); |
| 682 break; | 682 break; |
| 683 case SERVICE_WORKER_PROVIDER_FOR_CONTROLLER: { | 683 case SERVICE_WORKER_PROVIDER_FOR_CONTROLLER: { |
| 684 // Clamp timeout to the sending worker's remaining timeout, to prevent | 684 // Clamp timeout to the sending worker's remaining timeout, to prevent |
| 685 // postMessage from keeping workers alive forever. | 685 // postMessage from keeping workers alive forever. |
| 686 base::TimeDelta timeout = | 686 base::TimeDelta timeout = |
| 687 sender_provider_host->running_hosted_version()->remaining_timeout(); | 687 sender_provider_host->running_hosted_version()->remaining_timeout(); |
| 688 RunSoon(base::Bind( | 688 SWRunSoon(base::Bind( |
| 689 &ServiceWorkerDispatcherHost::DispatchExtendableMessageEventInternal< | 689 &ServiceWorkerDispatcherHost::DispatchExtendableMessageEventInternal< |
| 690 ServiceWorkerObjectInfo>, | 690 ServiceWorkerObjectInfo>, |
| 691 this, worker, message, source_origin, sent_message_ports, | 691 this, worker, message, source_origin, sent_message_ports, |
| 692 base::make_optional(timeout), callback, | 692 base::make_optional(timeout), callback, |
| 693 sender_provider_host->GetOrCreateServiceWorkerHandle( | 693 sender_provider_host->GetOrCreateServiceWorkerHandle( |
| 694 sender_provider_host->running_hosted_version()))); | 694 sender_provider_host->running_hosted_version()))); |
| 695 break; | 695 break; |
| 696 } | 696 } |
| 697 case SERVICE_WORKER_PROVIDER_UNKNOWN: | 697 case SERVICE_WORKER_PROVIDER_UNKNOWN: |
| 698 default: | 698 default: |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1111 if (!handle) { | 1111 if (!handle) { |
| 1112 bad_message::ReceivedBadMessage(this, | 1112 bad_message::ReceivedBadMessage(this, |
| 1113 bad_message::SWDH_TERMINATE_BAD_HANDLE); | 1113 bad_message::SWDH_TERMINATE_BAD_HANDLE); |
| 1114 return; | 1114 return; |
| 1115 } | 1115 } |
| 1116 handle->version()->StopWorker( | 1116 handle->version()->StopWorker( |
| 1117 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1117 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| 1118 } | 1118 } |
| 1119 | 1119 |
| 1120 } // namespace content | 1120 } // namespace content |
| OLD | NEW |