| Index: content/browser/service_worker/service_worker_context_wrapper.cc
|
| diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc
|
| index eeac4d3bfa1a06a2f5aa0af8950ffaa784dac6ae..686e5ea57d812ca1b2461f4a348a9b5a95ed8a02 100644
|
| --- a/content/browser/service_worker/service_worker_context_wrapper.cc
|
| +++ b/content/browser/service_worker/service_worker_context_wrapper.cc
|
| @@ -22,6 +22,7 @@
|
| #include "base/threading/sequenced_worker_pool.h"
|
| #include "base/threading/thread_task_runner_handle.h"
|
| #include "content/browser/renderer_host/render_process_host_impl.h"
|
| +#include "content/browser/service_worker/embedded_worker_status.h"
|
| #include "content/browser/service_worker/service_worker_context_core.h"
|
| #include "content/browser/service_worker/service_worker_context_observer.h"
|
| #include "content/browser/service_worker/service_worker_process_manager.h"
|
| @@ -579,6 +580,32 @@ void ServiceWorkerContextWrapper::CheckHasServiceWorker(
|
| callback));
|
| }
|
|
|
| +void ServiceWorkerContextWrapper::CountExternalRequestsForTest(
|
| + const GURL& origin,
|
| + const CountExternalRequestsCallback& callback) {
|
| + if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&ServiceWorkerContextWrapper::CountExternalRequestsForTest,
|
| + this, origin, callback));
|
| + return;
|
| + }
|
| +
|
| + std::vector<ServiceWorkerVersionInfo> live_version_info =
|
| + GetAllLiveVersionInfo();
|
| + size_t pending_external_request_count = 0;
|
| + for (const ServiceWorkerVersionInfo& info : live_version_info) {
|
| + ServiceWorkerVersion* version = GetLiveVersion(info.version_id);
|
| + if (version && version->scope().GetOrigin() == origin) {
|
| + pending_external_request_count =
|
| + version->GetExternalRequestCountForTest();
|
| + break;
|
| + }
|
| + }
|
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| + base::Bind(callback, pending_external_request_count));
|
| +}
|
| +
|
| void ServiceWorkerContextWrapper::ClearAllServiceWorkersForTest(
|
| const base::Closure& callback) {
|
| if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
|
| @@ -832,6 +859,28 @@ void ServiceWorkerContextWrapper::ShutdownOnIO() {
|
| context_core_.reset();
|
| }
|
|
|
| +bool ServiceWorkerContextWrapper::StartingExternalRequest(
|
| + int64_t service_worker_version_id,
|
| + const std::string& request_uuid) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + ServiceWorkerVersion* version =
|
| + context()->GetLiveVersion(service_worker_version_id);
|
| + if (!version)
|
| + return false;
|
| + return version->StartExternalRequest(request_uuid);
|
| +}
|
| +
|
| +bool ServiceWorkerContextWrapper::FinishedExternalRequest(
|
| + int64_t service_worker_version_id,
|
| + const std::string& request_uuid) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + ServiceWorkerVersion* version =
|
| + context()->GetLiveVersion(service_worker_version_id);
|
| + if (!version)
|
| + return false;
|
| + return version->FinishExternalRequest(request_uuid);
|
| +}
|
| +
|
| void ServiceWorkerContextWrapper::DidDeleteAndStartOver(
|
| ServiceWorkerStatusCode status) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
|
|