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