| 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 "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
| (...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 456 embedded_worker_->message_port_message_filter(); | 456 embedded_worker_->message_port_message_filter(); |
| 457 std::vector<int> new_routing_ids; | 457 std::vector<int> new_routing_ids; |
| 458 filter->UpdateMessagePortsWithNewRoutes(sent_message_ports, &new_routing_ids); | 458 filter->UpdateMessagePortsWithNewRoutes(sent_message_ports, &new_routing_ids); |
| 459 ServiceWorkerStatusCode status = | 459 ServiceWorkerStatusCode status = |
| 460 embedded_worker_->SendMessage(ServiceWorkerMsg_MessageToWorker( | 460 embedded_worker_->SendMessage(ServiceWorkerMsg_MessageToWorker( |
| 461 message, sent_message_ports, new_routing_ids)); | 461 message, sent_message_ports, new_routing_ids)); |
| 462 RunSoon(base::Bind(callback, status)); | 462 RunSoon(base::Bind(callback, status)); |
| 463 } | 463 } |
| 464 | 464 |
| 465 void ServiceWorkerVersion::DispatchInstallEvent( | 465 void ServiceWorkerVersion::DispatchInstallEvent( |
| 466 int active_version_id, | |
| 467 const StatusCallback& callback) { | 466 const StatusCallback& callback) { |
| 468 DCHECK_EQ(INSTALLING, status()) << status(); | 467 DCHECK_EQ(INSTALLING, status()) << status(); |
| 469 | 468 |
| 470 if (running_status() != RUNNING) { | 469 if (running_status() != RUNNING) { |
| 471 // Schedule calling this method after starting the worker. | 470 // Schedule calling this method after starting the worker. |
| 472 StartWorker( | 471 StartWorker( |
| 473 base::Bind(&RunTaskAfterStartWorker, | 472 base::Bind(&RunTaskAfterStartWorker, |
| 474 weak_factory_.GetWeakPtr(), | 473 weak_factory_.GetWeakPtr(), |
| 475 callback, | 474 callback, |
| 476 base::Bind(&self::DispatchInstallEventAfterStartWorker, | 475 base::Bind(&self::DispatchInstallEventAfterStartWorker, |
| 477 weak_factory_.GetWeakPtr(), | 476 weak_factory_.GetWeakPtr(), |
| 478 active_version_id, | |
| 479 callback))); | 477 callback))); |
| 480 } else { | 478 } else { |
| 481 DispatchInstallEventAfterStartWorker(active_version_id, callback); | 479 DispatchInstallEventAfterStartWorker(callback); |
| 482 } | 480 } |
| 483 } | 481 } |
| 484 | 482 |
| 485 void ServiceWorkerVersion::DispatchActivateEvent( | 483 void ServiceWorkerVersion::DispatchActivateEvent( |
| 486 const StatusCallback& callback) { | 484 const StatusCallback& callback) { |
| 487 DCHECK_EQ(ACTIVATING, status()) << status(); | 485 DCHECK_EQ(ACTIVATING, status()) << status(); |
| 488 | 486 |
| 489 if (running_status() != RUNNING) { | 487 if (running_status() != RUNNING) { |
| 490 // Schedule calling this method after starting the worker. | 488 // Schedule calling this method after starting the worker. |
| 491 StartWorker( | 489 StartWorker( |
| (...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 937 return handled; | 935 return handled; |
| 938 } | 936 } |
| 939 | 937 |
| 940 void ServiceWorkerVersion::OnStartMessageSent( | 938 void ServiceWorkerVersion::OnStartMessageSent( |
| 941 ServiceWorkerStatusCode status) { | 939 ServiceWorkerStatusCode status) { |
| 942 if (status != SERVICE_WORKER_OK) | 940 if (status != SERVICE_WORKER_OK) |
| 943 RunCallbacks(this, &start_callbacks_, status); | 941 RunCallbacks(this, &start_callbacks_, status); |
| 944 } | 942 } |
| 945 | 943 |
| 946 void ServiceWorkerVersion::DispatchInstallEventAfterStartWorker( | 944 void ServiceWorkerVersion::DispatchInstallEventAfterStartWorker( |
| 947 int active_version_id, | |
| 948 const StatusCallback& callback) { | 945 const StatusCallback& callback) { |
| 949 DCHECK_EQ(RUNNING, running_status()) | 946 DCHECK_EQ(RUNNING, running_status()) |
| 950 << "Worker stopped too soon after it was started."; | 947 << "Worker stopped too soon after it was started."; |
| 951 | 948 |
| 952 int request_id = install_callbacks_.Add(new StatusCallback(callback)); | 949 int request_id = install_callbacks_.Add(new StatusCallback(callback)); |
| 953 ServiceWorkerStatusCode status = embedded_worker_->SendMessage( | 950 ServiceWorkerStatusCode status = embedded_worker_->SendMessage( |
| 954 ServiceWorkerMsg_InstallEvent(request_id, active_version_id)); | 951 ServiceWorkerMsg_InstallEvent(request_id)); |
| 955 if (status != SERVICE_WORKER_OK) { | 952 if (status != SERVICE_WORKER_OK) { |
| 956 install_callbacks_.Remove(request_id); | 953 install_callbacks_.Remove(request_id); |
| 957 RunSoon(base::Bind(callback, status)); | 954 RunSoon(base::Bind(callback, status)); |
| 958 } | 955 } |
| 959 } | 956 } |
| 960 | 957 |
| 961 void ServiceWorkerVersion::DispatchActivateEventAfterStartWorker( | 958 void ServiceWorkerVersion::DispatchActivateEventAfterStartWorker( |
| 962 const StatusCallback& callback) { | 959 const StatusCallback& callback) { |
| 963 DCHECK_EQ(RUNNING, running_status()) | 960 DCHECK_EQ(RUNNING, running_status()) |
| 964 << "Worker stopped too soon after it was started."; | 961 << "Worker stopped too soon after it was started."; |
| (...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1501 int request_id) { | 1498 int request_id) { |
| 1502 callbacks->Remove(request_id); | 1499 callbacks->Remove(request_id); |
| 1503 if (is_doomed_) { | 1500 if (is_doomed_) { |
| 1504 // The stop should be already scheduled, but try to stop immediately, in | 1501 // The stop should be already scheduled, but try to stop immediately, in |
| 1505 // order to release worker resources soon. | 1502 // order to release worker resources soon. |
| 1506 StopWorkerIfIdle(); | 1503 StopWorkerIfIdle(); |
| 1507 } | 1504 } |
| 1508 } | 1505 } |
| 1509 | 1506 |
| 1510 } // namespace content | 1507 } // namespace content |
| OLD | NEW |