Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1426)

Unified Diff: content/browser/service_worker/service_worker_job_unittest.cc

Issue 1675613002: service worker: use 200 OK for update requests even in the no update case (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: asan and fix win compile? Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/service_worker/service_worker_job_unittest.cc
diff --git a/content/browser/service_worker/service_worker_job_unittest.cc b/content/browser/service_worker/service_worker_job_unittest.cc
index e97dccc352b040e758f198305acf15c030f027f0..0cbe471ff32e2fafb6306c3d7753174092f05b6f 100644
--- a/content/browser/service_worker/service_worker_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_job_unittest.cc
@@ -17,6 +17,7 @@
#include "content/browser/service_worker/service_worker_registration.h"
#include "content/browser/service_worker/service_worker_registration_status.h"
#include "content/browser/service_worker/service_worker_test_utils.h"
+#include "content/common/service_worker/embedded_worker_messages.h"
#include "content/common/service_worker/service_worker_messages.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "ipc/ipc_test_sink.h"
@@ -361,7 +362,8 @@ class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper {
void OnStartWorker(int embedded_worker_id,
int64_t service_worker_version_id,
const GURL& scope,
- const GURL& script_url) override {
+ const GURL& script_url,
+ bool pause_after_download) override {
EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id);
registry()->OnWorkerStopped(worker->process_id(), embedded_worker_id);
}
@@ -824,7 +826,8 @@ class UpdateJobTestHelper
void OnStartWorker(int embedded_worker_id,
int64_t version_id,
const GURL& scope,
- const GURL& script) override {
+ const GURL& script,
+ bool pause_after_download) override {
const std::string kMockScriptBody = "mock_script";
const uint64_t kMockScriptSize = 19284;
ServiceWorkerVersion* version = context()->GetLiveVersion(version_id);
@@ -838,6 +841,7 @@ class UpdateJobTestHelper
if (force_bypass_cache_for_scripts())
version->set_force_bypass_cache_for_scripts(true);
+
if (!is_update) {
// Spoof caching the script for the initial version.
int64_t resource_id = storage()->NewResourceId();
@@ -859,15 +863,15 @@ class UpdateJobTestHelper
version->script_cache_map()->NotifyFinishedCaching(
script, kMockScriptSize, net::URLRequestStatus(), std::string());
}
+
+ EmbeddedWorkerTestHelper::OnStartWorker(
+ embedded_worker_id, version_id, scope, script, pause_after_download);
+ }
+
+ void OnResumeAfterDownload(int embedded_worker_id) override {
if (!force_start_worker_failure_) {
- EmbeddedWorkerTestHelper::OnStartWorker(embedded_worker_id, version_id,
- scope, script);
+ EmbeddedWorkerTestHelper::OnResumeAfterDownload(embedded_worker_id);
} else {
- (embedded_worker_id_service_worker_version_id_map())[embedded_worker_id] =
- version_id;
- SimulateWorkerReadyForInspection(embedded_worker_id);
- SimulateWorkerScriptCached(embedded_worker_id);
- SimulateWorkerScriptLoaded(embedded_worker_id);
SimulateWorkerThreadStarted(GetNextThreadId(), embedded_worker_id);
SimulateWorkerScriptEvaluated(embedded_worker_id, false);
}
@@ -920,7 +924,8 @@ class EvictIncumbentVersionHelper : public UpdateJobTestHelper {
void OnStartWorker(int embedded_worker_id,
int64_t version_id,
const GURL& scope,
- const GURL& script) override {
+ const GURL& script,
+ bool pause_after_download) override {
ServiceWorkerVersion* version = context()->GetLiveVersion(version_id);
ServiceWorkerRegistration* registration =
context()->GetLiveRegistration(version->registration_id());
@@ -933,7 +938,7 @@ class EvictIncumbentVersionHelper : public UpdateJobTestHelper {
make_scoped_refptr(registration->active_version()));
}
UpdateJobTestHelper::OnStartWorker(embedded_worker_id, version_id, scope,
- script);
+ script, pause_after_download);
}
void OnRegistrationFailed(ServiceWorkerRegistration* registration) override {
@@ -1533,4 +1538,39 @@ TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringInstall_RejectActivate) {
FindRegistrationForPattern(pattern, SERVICE_WORKER_OK);
}
+TEST_F(ServiceWorkerJobTest, Update_PauseAfterDownload) {
+ UpdateJobTestHelper* update_helper = new UpdateJobTestHelper;
+ helper_.reset(update_helper);
+ IPC::TestSink* sink = update_helper->ipc_sink();
+
+ // The initial version should not pause after download.
+ scoped_refptr<ServiceWorkerRegistration> registration =
+ update_helper->SetupInitialRegistration(kNewVersionOrigin);
+ {
+ const IPC::Message* start_msg =
+ sink->GetUniqueMessageMatching(EmbeddedWorkerMsg_StartWorker::ID);
+ ASSERT_TRUE(start_msg);
+ EmbeddedWorkerMsg_StartWorker::Param param;
+ EmbeddedWorkerMsg_StartWorker::Read(start_msg, &param);
+ EmbeddedWorkerMsg_StartWorker_Params start_params = base::get<0>(param);
+ EXPECT_FALSE(start_params.pause_after_download);
+ sink->ClearMessages();
+ }
+
+ // The updated version should pause after download.
+ registration->AddListener(update_helper);
+ registration->active_version()->StartUpdate();
+ base::RunLoop().RunUntilIdle();
+ {
+ const IPC::Message* start_msg =
+ sink->GetUniqueMessageMatching(EmbeddedWorkerMsg_StartWorker::ID);
+ ASSERT_TRUE(start_msg);
+ EmbeddedWorkerMsg_StartWorker::Param param;
+ EmbeddedWorkerMsg_StartWorker::Read(start_msg, &param);
+ EmbeddedWorkerMsg_StartWorker_Params start_params = base::get<0>(param);
+ EXPECT_TRUE(start_params.pause_after_download);
+ sink->ClearMessages();
+ }
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698