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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_UnregisterServiceWorker, | 173 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_UnregisterServiceWorker, |
174 OnUnregisterServiceWorker) | 174 OnUnregisterServiceWorker) |
175 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistration, | 175 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistration, |
176 OnGetRegistration) | 176 OnGetRegistration) |
177 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrations, | 177 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrations, |
178 OnGetRegistrations) | 178 OnGetRegistrations) |
179 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrationForReady, | 179 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_GetRegistrationForReady, |
180 OnGetRegistrationForReady) | 180 OnGetRegistrationForReady) |
181 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessageToWorker, | 181 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_PostMessageToWorker, |
182 OnPostMessageToWorker) | 182 OnPostMessageToWorker) |
183 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerReadyForInspection, | |
184 OnWorkerReadyForInspection) | |
185 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoaded, | |
186 OnWorkerScriptLoaded) | |
187 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerThreadStarted, | |
188 OnWorkerThreadStarted) | |
189 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptLoadFailed, | |
190 OnWorkerScriptLoadFailed) | |
191 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerScriptEvaluated, | |
192 OnWorkerScriptEvaluated) | |
193 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStarted, | |
194 OnWorkerStarted) | |
195 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_WorkerStopped, | |
196 OnWorkerStopped) | |
197 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_CountFeature, OnCountFeature) | 183 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_CountFeature, OnCountFeature) |
198 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportException, | |
199 OnReportException) | |
200 IPC_MESSAGE_HANDLER(EmbeddedWorkerHostMsg_ReportConsoleMessage, | |
201 OnReportConsoleMessage) | |
202 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_IncrementServiceWorkerRefCount, | 184 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_IncrementServiceWorkerRefCount, |
203 OnIncrementServiceWorkerRefCount) | 185 OnIncrementServiceWorkerRefCount) |
204 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_DecrementServiceWorkerRefCount, | 186 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_DecrementServiceWorkerRefCount, |
205 OnDecrementServiceWorkerRefCount) | 187 OnDecrementServiceWorkerRefCount) |
206 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_IncrementRegistrationRefCount, | 188 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_IncrementRegistrationRefCount, |
207 OnIncrementRegistrationRefCount) | 189 OnIncrementRegistrationRefCount) |
208 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_DecrementRegistrationRefCount, | 190 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_DecrementRegistrationRefCount, |
209 OnDecrementRegistrationRefCount) | 191 OnDecrementRegistrationRefCount) |
210 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_TerminateWorker, OnTerminateWorker) | 192 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_TerminateWorker, OnTerminateWorker) |
211 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_EnableNavigationPreload, | 193 IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_EnableNavigationPreload, |
(...skipping 1136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1348 DCHECK(registration); | 1330 DCHECK(registration); |
1349 | 1331 |
1350 ServiceWorkerRegistrationObjectInfo info; | 1332 ServiceWorkerRegistrationObjectInfo info; |
1351 ServiceWorkerVersionAttributes attrs; | 1333 ServiceWorkerVersionAttributes attrs; |
1352 GetRegistrationObjectInfoAndVersionAttributes(provider_host->AsWeakPtr(), | 1334 GetRegistrationObjectInfoAndVersionAttributes(provider_host->AsWeakPtr(), |
1353 registration, &info, &attrs); | 1335 registration, &info, &attrs); |
1354 | 1336 |
1355 Send(new ServiceWorkerMsg_ServiceWorkerUpdated(thread_id, request_id)); | 1337 Send(new ServiceWorkerMsg_ServiceWorkerUpdated(thread_id, request_id)); |
1356 } | 1338 } |
1357 | 1339 |
1358 void ServiceWorkerDispatcherHost::OnWorkerReadyForInspection( | |
1359 int embedded_worker_id) { | |
1360 TRACE_EVENT0("ServiceWorker", | |
1361 "ServiceWorkerDispatcherHost::OnWorkerReadyForInspection"); | |
1362 if (!GetContext()) | |
1363 return; | |
1364 EmbeddedWorkerRegistry* registry = GetContext()->embedded_worker_registry(); | |
1365 if (!registry->CanHandle(embedded_worker_id)) | |
1366 return; | |
1367 registry->OnWorkerReadyForInspection(render_process_id_, embedded_worker_id); | |
1368 } | |
1369 | |
1370 void ServiceWorkerDispatcherHost::OnWorkerScriptLoaded(int embedded_worker_id) { | |
1371 TRACE_EVENT0("ServiceWorker", | |
1372 "ServiceWorkerDispatcherHost::OnWorkerScriptLoaded"); | |
1373 if (!GetContext()) | |
1374 return; | |
1375 | |
1376 EmbeddedWorkerRegistry* registry = GetContext()->embedded_worker_registry(); | |
1377 if (!registry->CanHandle(embedded_worker_id)) | |
1378 return; | |
1379 registry->OnWorkerScriptLoaded(render_process_id_, embedded_worker_id); | |
1380 } | |
1381 | |
1382 void ServiceWorkerDispatcherHost::OnWorkerThreadStarted(int embedded_worker_id, | |
1383 int thread_id, | |
1384 int provider_id) { | |
1385 TRACE_EVENT0("ServiceWorker", | |
1386 "ServiceWorkerDispatcherHost::OnWorkerThreadStarted"); | |
1387 if (!GetContext()) | |
1388 return; | |
1389 | |
1390 ServiceWorkerProviderHost* provider_host = | |
1391 GetContext()->GetProviderHost(render_process_id_, provider_id); | |
1392 if (!provider_host) { | |
1393 bad_message::ReceivedBadMessage( | |
1394 this, bad_message::SWDH_WORKER_SCRIPT_LOAD_NO_HOST); | |
1395 return; | |
1396 } | |
1397 | |
1398 provider_host->SetReadyToSendMessagesToWorker(thread_id); | |
1399 | |
1400 EmbeddedWorkerRegistry* registry = GetContext()->embedded_worker_registry(); | |
1401 if (!registry->CanHandle(embedded_worker_id)) | |
1402 return; | |
1403 registry->OnWorkerThreadStarted(render_process_id_, thread_id, | |
1404 embedded_worker_id); | |
1405 } | |
1406 | |
1407 void ServiceWorkerDispatcherHost::OnWorkerScriptLoadFailed( | |
1408 int embedded_worker_id) { | |
1409 TRACE_EVENT0("ServiceWorker", | |
1410 "ServiceWorkerDispatcherHost::OnWorkerScriptLoadFailed"); | |
1411 if (!GetContext()) | |
1412 return; | |
1413 EmbeddedWorkerRegistry* registry = GetContext()->embedded_worker_registry(); | |
1414 if (!registry->CanHandle(embedded_worker_id)) | |
1415 return; | |
1416 registry->OnWorkerScriptLoadFailed(render_process_id_, embedded_worker_id); | |
1417 } | |
1418 | |
1419 void ServiceWorkerDispatcherHost::OnWorkerScriptEvaluated( | |
1420 int embedded_worker_id, | |
1421 bool success) { | |
1422 TRACE_EVENT0("ServiceWorker", | |
1423 "ServiceWorkerDispatcherHost::OnWorkerScriptEvaluated"); | |
1424 if (!GetContext()) | |
1425 return; | |
1426 EmbeddedWorkerRegistry* registry = GetContext()->embedded_worker_registry(); | |
1427 if (!registry->CanHandle(embedded_worker_id)) | |
1428 return; | |
1429 registry->OnWorkerScriptEvaluated( | |
1430 render_process_id_, embedded_worker_id, success); | |
1431 } | |
1432 | |
1433 void ServiceWorkerDispatcherHost::OnWorkerStarted(int embedded_worker_id) { | |
1434 TRACE_EVENT0("ServiceWorker", | |
1435 "ServiceWorkerDispatcherHost::OnWorkerStarted"); | |
1436 if (!GetContext()) | |
1437 return; | |
1438 EmbeddedWorkerRegistry* registry = GetContext()->embedded_worker_registry(); | |
1439 if (!registry->CanHandle(embedded_worker_id)) | |
1440 return; | |
1441 registry->OnWorkerStarted(render_process_id_, embedded_worker_id); | |
1442 } | |
1443 | |
1444 void ServiceWorkerDispatcherHost::OnWorkerStopped(int embedded_worker_id) { | |
1445 TRACE_EVENT0("ServiceWorker", | |
1446 "ServiceWorkerDispatcherHost::OnWorkerStopped"); | |
1447 if (!GetContext()) | |
1448 return; | |
1449 EmbeddedWorkerRegistry* registry = GetContext()->embedded_worker_registry(); | |
1450 if (!registry->CanHandle(embedded_worker_id)) | |
1451 return; | |
1452 registry->OnWorkerStopped(render_process_id_, embedded_worker_id); | |
1453 } | |
1454 | |
1455 void ServiceWorkerDispatcherHost::OnCountFeature(int64_t version_id, | 1340 void ServiceWorkerDispatcherHost::OnCountFeature(int64_t version_id, |
1456 uint32_t feature) { | 1341 uint32_t feature) { |
1457 if (!GetContext()) | 1342 if (!GetContext()) |
1458 return; | 1343 return; |
1459 ServiceWorkerVersion* version = GetContext()->GetLiveVersion(version_id); | 1344 ServiceWorkerVersion* version = GetContext()->GetLiveVersion(version_id); |
1460 if (!version) | 1345 if (!version) |
1461 return; | 1346 return; |
1462 version->CountFeature(feature); | 1347 version->CountFeature(feature); |
1463 } | 1348 } |
1464 | 1349 |
1465 void ServiceWorkerDispatcherHost::OnReportException( | |
1466 int embedded_worker_id, | |
1467 const base::string16& error_message, | |
1468 int line_number, | |
1469 int column_number, | |
1470 const GURL& source_url) { | |
1471 TRACE_EVENT0("ServiceWorker", | |
1472 "ServiceWorkerDispatcherHost::OnReportException"); | |
1473 if (!GetContext()) | |
1474 return; | |
1475 EmbeddedWorkerRegistry* registry = GetContext()->embedded_worker_registry(); | |
1476 if (!registry->CanHandle(embedded_worker_id)) | |
1477 return; | |
1478 registry->OnReportException(embedded_worker_id, | |
1479 error_message, | |
1480 line_number, | |
1481 column_number, | |
1482 source_url); | |
1483 } | |
1484 | |
1485 void ServiceWorkerDispatcherHost::OnReportConsoleMessage( | |
1486 int embedded_worker_id, | |
1487 const EmbeddedWorkerHostMsg_ReportConsoleMessage_Params& params) { | |
1488 TRACE_EVENT0("ServiceWorker", | |
1489 "ServiceWorkerDispatcherHost::OnReportConsoleMessage"); | |
1490 if (!GetContext()) | |
1491 return; | |
1492 EmbeddedWorkerRegistry* registry = GetContext()->embedded_worker_registry(); | |
1493 if (!registry->CanHandle(embedded_worker_id)) | |
1494 return; | |
1495 registry->OnReportConsoleMessage(embedded_worker_id, | |
1496 params.source_identifier, | |
1497 params.message_level, | |
1498 params.message, | |
1499 params.line_number, | |
1500 params.source_url); | |
1501 } | |
1502 | |
1503 void ServiceWorkerDispatcherHost::OnIncrementServiceWorkerRefCount( | 1350 void ServiceWorkerDispatcherHost::OnIncrementServiceWorkerRefCount( |
1504 int handle_id) { | 1351 int handle_id) { |
1505 TRACE_EVENT0("ServiceWorker", | 1352 TRACE_EVENT0("ServiceWorker", |
1506 "ServiceWorkerDispatcherHost::OnIncrementServiceWorkerRefCount"); | 1353 "ServiceWorkerDispatcherHost::OnIncrementServiceWorkerRefCount"); |
1507 ServiceWorkerHandle* handle = handles_.Lookup(handle_id); | 1354 ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
1508 if (!handle) { | 1355 if (!handle) { |
1509 bad_message::ReceivedBadMessage( | 1356 bad_message::ReceivedBadMessage( |
1510 this, bad_message::SWDH_INCREMENT_WORKER_BAD_HANDLE); | 1357 this, bad_message::SWDH_INCREMENT_WORKER_BAD_HANDLE); |
1511 return; | 1358 return; |
1512 } | 1359 } |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1780 if (!handle) { | 1627 if (!handle) { |
1781 bad_message::ReceivedBadMessage(this, | 1628 bad_message::ReceivedBadMessage(this, |
1782 bad_message::SWDH_TERMINATE_BAD_HANDLE); | 1629 bad_message::SWDH_TERMINATE_BAD_HANDLE); |
1783 return; | 1630 return; |
1784 } | 1631 } |
1785 handle->version()->StopWorker( | 1632 handle->version()->StopWorker( |
1786 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); | 1633 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
1787 } | 1634 } |
1788 | 1635 |
1789 } // namespace content | 1636 } // namespace content |
OLD | NEW |