| 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 | 
|---|