| 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/debug/crash_logging.h" | 9 #include "base/debug/crash_logging.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 const char kEnableNavigationPreloadErrorPrefix[] = | 58 const char kEnableNavigationPreloadErrorPrefix[] = |
| 59 "Failed to enable or disable navigation preload: "; | 59 "Failed to enable or disable navigation preload: "; |
| 60 const char kGetNavigationPreloadStateErrorPrefix[] = | 60 const char kGetNavigationPreloadStateErrorPrefix[] = |
| 61 "Failed to get navigation preload state: "; | 61 "Failed to get navigation preload state: "; |
| 62 const char kSetNavigationPreloadHeaderErrorPrefix[] = | 62 const char kSetNavigationPreloadHeaderErrorPrefix[] = |
| 63 "Failed to set navigation preload header: "; | 63 "Failed to set navigation preload header: "; |
| 64 const char kNoActiveWorkerErrorMessage[] = | 64 const char kNoActiveWorkerErrorMessage[] = |
| 65 "The registration does not have an active worker."; | 65 "The registration does not have an active worker."; |
| 66 const char kDatabaseErrorMessage[] = "Failed to access storage."; | 66 const char kDatabaseErrorMessage[] = "Failed to access storage."; |
| 67 | 67 |
| 68 const uint32_t kFilteredMessageClasses[] = { | 68 const uint32_t kSW2FilteredMessageClasses[] = { |
| 69 ServiceWorkerMsgStart, EmbeddedWorkerMsgStart, | 69 ServiceWorkerMsgStart, EmbeddedWorkerMsgStart, |
| 70 }; | 70 }; |
| 71 | 71 |
| 72 void RunSoon(const base::Closure& callback) { | 72 void SWRunSoon(const base::Closure& callback) { |
| 73 if (!callback.is_null()) | 73 if (!callback.is_null()) |
| 74 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); | 74 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); |
| 75 } | 75 } |
| 76 | 76 |
| 77 WebContents* GetWebContents(int render_process_id, int render_frame_id) { | 77 WebContents* GetWebContents(int render_process_id, int render_frame_id) { |
| 78 RenderFrameHost* rfh = | 78 RenderFrameHost* rfh = |
| 79 RenderFrameHost::FromID(render_process_id, render_frame_id); | 79 RenderFrameHost::FromID(render_process_id, render_frame_id); |
| 80 return WebContents::FromRenderFrameHost(rfh); | 80 return WebContents::FromRenderFrameHost(rfh); |
| 81 } | 81 } |
| 82 | 82 |
| 83 } // namespace | 83 } // namespace |
| 84 | 84 |
| 85 ServiceWorkerDispatcherHost::ServiceWorkerDispatcherHost( | 85 ServiceWorkerDispatcherHost::ServiceWorkerDispatcherHost( |
| 86 int render_process_id, | 86 int render_process_id, |
| 87 ResourceContext* resource_context) | 87 ResourceContext* resource_context) |
| 88 : BrowserMessageFilter(kFilteredMessageClasses, | 88 : BrowserMessageFilter(kSW2FilteredMessageClasses, |
| 89 arraysize(kFilteredMessageClasses)), | 89 arraysize(kSW2FilteredMessageClasses)), |
| 90 BrowserAssociatedInterface<mojom::ServiceWorkerDispatcherHost>(this, | 90 BrowserAssociatedInterface<mojom::ServiceWorkerDispatcherHost>(this, |
| 91 this), | 91 this), |
| 92 render_process_id_(render_process_id), | 92 render_process_id_(render_process_id), |
| 93 resource_context_(resource_context), | 93 resource_context_(resource_context), |
| 94 channel_ready_(false) {} | 94 channel_ready_(false) {} |
| 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)); |
| 99 if (GetContext()) | 99 if (GetContext()) |
| (...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 901 DispatchExtendableMessageEventInternal< | 901 DispatchExtendableMessageEventInternal< |
| 902 ServiceWorkerClientInfo>, | 902 ServiceWorkerClientInfo>, |
| 903 this, worker, message, source_origin, sent_message_ports, | 903 this, worker, message, source_origin, sent_message_ports, |
| 904 base::nullopt, callback)); | 904 base::nullopt, callback)); |
| 905 break; | 905 break; |
| 906 case SERVICE_WORKER_PROVIDER_FOR_CONTROLLER: { | 906 case SERVICE_WORKER_PROVIDER_FOR_CONTROLLER: { |
| 907 // Clamp timeout to the sending worker's remaining timeout, to prevent | 907 // Clamp timeout to the sending worker's remaining timeout, to prevent |
| 908 // postMessage from keeping workers alive forever. | 908 // postMessage from keeping workers alive forever. |
| 909 base::TimeDelta timeout = | 909 base::TimeDelta timeout = |
| 910 sender_provider_host->running_hosted_version()->remaining_timeout(); | 910 sender_provider_host->running_hosted_version()->remaining_timeout(); |
| 911 RunSoon(base::Bind( | 911 SWRunSoon(base::Bind( |
| 912 &ServiceWorkerDispatcherHost::DispatchExtendableMessageEventInternal< | 912 &ServiceWorkerDispatcherHost::DispatchExtendableMessageEventInternal< |
| 913 ServiceWorkerObjectInfo>, | 913 ServiceWorkerObjectInfo>, |
| 914 this, worker, message, source_origin, sent_message_ports, | 914 this, worker, message, source_origin, sent_message_ports, |
| 915 base::make_optional(timeout), callback, | 915 base::make_optional(timeout), callback, |
| 916 sender_provider_host->GetOrCreateServiceWorkerHandle( | 916 sender_provider_host->GetOrCreateServiceWorkerHandle( |
| 917 sender_provider_host->running_hosted_version()))); | 917 sender_provider_host->running_hosted_version()))); |
| 918 break; | 918 break; |
| 919 } | 919 } |
| 920 case SERVICE_WORKER_PROVIDER_UNKNOWN: | 920 case SERVICE_WORKER_PROVIDER_UNKNOWN: |
| 921 default: | 921 default: |
| (...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1568 if (!handle) { | 1568 if (!handle) { |
| 1569 bad_message::ReceivedBadMessage(this, | 1569 bad_message::ReceivedBadMessage(this, |
| 1570 bad_message::SWDH_TERMINATE_BAD_HANDLE); | 1570 bad_message::SWDH_TERMINATE_BAD_HANDLE); |
| 1571 return; | 1571 return; |
| 1572 } | 1572 } |
| 1573 handle->version()->StopWorker( | 1573 handle->version()->StopWorker( |
| 1574 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1574 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| 1575 } | 1575 } |
| 1576 | 1576 |
| 1577 } // namespace content | 1577 } // namespace content |
| OLD | NEW |