Index: content/browser/service_worker/embedded_worker_test_helper.cc |
diff --git a/content/browser/service_worker/embedded_worker_test_helper.cc b/content/browser/service_worker/embedded_worker_test_helper.cc |
index 690ff23076e2dc367b587e71d6ca4abe717c4a43..3e512c1a88faa85a1513050b170428c06031207d 100644 |
--- a/content/browser/service_worker/embedded_worker_test_helper.cc |
+++ b/content/browser/service_worker/embedded_worker_test_helper.cc |
@@ -91,11 +91,14 @@ void EmbeddedWorkerTestHelper::OnStartWorker( |
const GURL& scope, |
const GURL& script_url, |
bool pause_after_download) { |
+ embedded_worker_id_service_worker_version_id_map_[embedded_worker_id] = |
+ service_worker_version_id; |
if (pause_after_download) { |
SimulatePausedAfterDownload(embedded_worker_id); |
return; |
} |
SimulateWorkerReadyForInspection(embedded_worker_id); |
+ SimulateWorkerScriptCached(embedded_worker_id); |
SimulateWorkerScriptLoaded(next_thread_id_++, embedded_worker_id); |
SimulateWorkerScriptEvaluated(embedded_worker_id); |
SimulateWorkerStarted(embedded_worker_id); |
@@ -103,6 +106,7 @@ void EmbeddedWorkerTestHelper::OnStartWorker( |
void EmbeddedWorkerTestHelper::OnResumeAfterDownload(int embedded_worker_id) { |
SimulateWorkerReadyForInspection(embedded_worker_id); |
+ SimulateWorkerScriptCached(embedded_worker_id); |
SimulateWorkerScriptLoaded(next_thread_id_++, embedded_worker_id); |
SimulateWorkerScriptEvaluated(embedded_worker_id); |
SimulateWorkerStarted(embedded_worker_id); |
@@ -182,6 +186,22 @@ void EmbeddedWorkerTestHelper::SimulateWorkerReadyForInspection( |
embedded_worker_id); |
} |
+void EmbeddedWorkerTestHelper::SimulateWorkerScriptCached( |
+ int embedded_worker_id) { |
+ int64 version_id = |
+ embedded_worker_id_service_worker_version_id_map_[embedded_worker_id]; |
+ ServiceWorkerVersion* version = context()->GetLiveVersion(version_id); |
+ if (!version || version->script_cache_map()->size()) |
+ return; |
+ std::vector<ServiceWorkerDatabase::ResourceRecord> records; |
+ // Add a dummy ResourceRecord for the main script to the script cache map of |
+ // the ServiceWorkerVersion. We use embedded_worker_id for resource_id to |
+ // avoid ID collision. |
+ records.push_back(ServiceWorkerDatabase::ResourceRecord( |
+ embedded_worker_id, version->script_url(), 100)); |
+ version->script_cache_map()->SetResources(records); |
+} |
+ |
void EmbeddedWorkerTestHelper::SimulateWorkerScriptLoaded( |
int thread_id, int embedded_worker_id) { |
EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id); |