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_version.h" | 5 #include "content/browser/service_worker/service_worker_version.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <limits> | 9 #include <limits> |
10 #include <map> | 10 #include <map> |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
235 base::TimeDelta::FromSeconds(kPingTimeoutSeconds)) { | 235 base::TimeDelta::FromSeconds(kPingTimeoutSeconds)) { |
236 ping_state_ = PING_TIMED_OUT; | 236 ping_state_ = PING_TIMED_OUT; |
237 version_->OnPingTimeout(); | 237 version_->OnPingTimeout(); |
238 return; | 238 return; |
239 } | 239 } |
240 | 240 |
241 // Check if we want to send a next ping. | 241 // Check if we want to send a next ping. |
242 if (ping_state_ != PINGING || !ping_time_.is_null()) | 242 if (ping_state_ != PINGING || !ping_time_.is_null()) |
243 return; | 243 return; |
244 | 244 |
245 if (version_->PingWorker() != SERVICE_WORKER_OK) { | 245 version_->PingWorker(); |
246 // TODO(falken): Maybe try resending Ping a few times first? | |
247 ping_state_ = PING_TIMED_OUT; | |
248 version_->OnPingTimeout(); | |
249 return; | |
250 } | |
251 version_->RestartTick(&ping_time_); | 246 version_->RestartTick(&ping_time_); |
252 } | 247 } |
253 | 248 |
254 void SimulateTimeoutForTesting() { | 249 void SimulateTimeoutForTesting() { |
255 version_->PingWorker(); | 250 version_->PingWorker(); |
256 ping_state_ = PING_TIMED_OUT; | 251 ping_state_ = PING_TIMED_OUT; |
257 version_->OnPingTimeout(); | 252 version_->OnPingTimeout(); |
258 } | 253 } |
259 | 254 |
260 private: | 255 private: |
(...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
961 OnClearCachedMetadata) | 956 OnClearCachedMetadata) |
962 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessageToClient, | 957 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessageToClient, |
963 OnPostMessageToClient) | 958 OnPostMessageToClient) |
964 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_FocusClient, | 959 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_FocusClient, |
965 OnFocusClient) | 960 OnFocusClient) |
966 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_NavigateClient, OnNavigateClient) | 961 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_NavigateClient, OnNavigateClient) |
967 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SkipWaiting, | 962 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_SkipWaiting, |
968 OnSkipWaiting) | 963 OnSkipWaiting) |
969 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ClaimClients, | 964 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_ClaimClients, |
970 OnClaimClients) | 965 OnClaimClients) |
971 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_Pong, OnPongFromWorker) | |
972 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_RegisterForeignFetchScopes, | 966 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_RegisterForeignFetchScopes, |
973 OnRegisterForeignFetchScopes) | 967 OnRegisterForeignFetchScopes) |
974 IPC_MESSAGE_UNHANDLED(handled = false) | 968 IPC_MESSAGE_UNHANDLED(handled = false) |
975 IPC_END_MESSAGE_MAP() | 969 IPC_END_MESSAGE_MAP() |
976 return handled; | 970 return handled; |
977 } | 971 } |
978 | 972 |
979 void ServiceWorkerVersion::OnStartSentAndScriptEvaluated( | 973 void ServiceWorkerVersion::OnStartSentAndScriptEvaluated( |
980 ServiceWorkerStatusCode status) { | 974 ServiceWorkerStatusCode status) { |
981 if (status != SERVICE_WORKER_OK) { | 975 if (status != SERVICE_WORKER_OK) { |
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1651 if (GetTickDuration(idle_time_) > | 1645 if (GetTickDuration(idle_time_) > |
1652 base::TimeDelta::FromSeconds(kIdleWorkerTimeoutSeconds)) { | 1646 base::TimeDelta::FromSeconds(kIdleWorkerTimeoutSeconds)) { |
1653 StopWorkerIfIdle(); | 1647 StopWorkerIfIdle(); |
1654 return; | 1648 return; |
1655 } | 1649 } |
1656 | 1650 |
1657 // Check ping status. | 1651 // Check ping status. |
1658 ping_controller_->CheckPingStatus(); | 1652 ping_controller_->CheckPingStatus(); |
1659 } | 1653 } |
1660 | 1654 |
1661 ServiceWorkerStatusCode ServiceWorkerVersion::PingWorker() { | 1655 void ServiceWorkerVersion::PingWorker() { |
1662 DCHECK(running_status() == EmbeddedWorkerStatus::STARTING || | 1656 DCHECK(running_status() == EmbeddedWorkerStatus::STARTING || |
1663 running_status() == EmbeddedWorkerStatus::RUNNING); | 1657 running_status() == EmbeddedWorkerStatus::RUNNING); |
1664 return embedded_worker_->SendMessage(ServiceWorkerMsg_Ping()); | 1658 // base::Unretained here is safe because event_dispatcher is owned by |this|. |
1659 event_dispatcher()->Ping(base::Bind(&ServiceWorkerVersion::OnPongFromWorker, | |
leonhsl(Using Gerrit)
2017/03/20 03:47:15
I can confirm that |event_dispatcher_| here should
falken
2017/03/21 06:54:04
Yes I wasn't entirely sure myself. Sender::Send()
| |
1660 base::Unretained(this))); | |
1665 } | 1661 } |
1666 | 1662 |
1667 void ServiceWorkerVersion::OnPingTimeout() { | 1663 void ServiceWorkerVersion::OnPingTimeout() { |
1668 DCHECK(running_status() == EmbeddedWorkerStatus::STARTING || | 1664 DCHECK(running_status() == EmbeddedWorkerStatus::STARTING || |
1669 running_status() == EmbeddedWorkerStatus::RUNNING); | 1665 running_status() == EmbeddedWorkerStatus::RUNNING); |
1670 // TODO(falken): Change the error code to SERVICE_WORKER_ERROR_TIMEOUT. | 1666 // TODO(falken): Change the error code to SERVICE_WORKER_ERROR_TIMEOUT. |
1671 embedded_worker_->AddMessageToConsole(blink::WebConsoleMessage::LevelVerbose, | 1667 embedded_worker_->AddMessageToConsole(blink::WebConsoleMessage::LevelVerbose, |
1672 kNotRespondingErrorMesage); | 1668 kNotRespondingErrorMesage); |
1673 StopWorkerIfIdle(); | 1669 StopWorkerIfIdle(); |
1674 } | 1670 } |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1900 | 1896 |
1901 void ServiceWorkerVersion::CleanUpExternalRequest( | 1897 void ServiceWorkerVersion::CleanUpExternalRequest( |
1902 const std::string& request_uuid, | 1898 const std::string& request_uuid, |
1903 ServiceWorkerStatusCode status) { | 1899 ServiceWorkerStatusCode status) { |
1904 if (status == SERVICE_WORKER_OK) | 1900 if (status == SERVICE_WORKER_OK) |
1905 return; | 1901 return; |
1906 external_request_uuid_to_request_id_.erase(request_uuid); | 1902 external_request_uuid_to_request_id_.erase(request_uuid); |
1907 } | 1903 } |
1908 | 1904 |
1909 } // namespace content | 1905 } // namespace content |
OLD | NEW |