Commit 788da280 authored by Wei Wang's avatar Wei Wang Committed by Commit Bot

Have StartServiceWorker, StopServiceWorker as helper test utils

This patch makes StartServiceWorker and StopServiceWorker the helper test
utils which can be used by all tests.

In this patch, we have already used the StartServiceWorker and
StopServiceWorker in ServiceWorkerVersionTest, ServiceWorkerJobTest and
ServiceWorkerRegistrationTest. In the next step, other tests will be changed
as well.

Bug: 931095
Change-Id: I91d70239b6d76498d01c2adba684fde3e7bff121
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1788251
Commit-Queue: Matt Falkenhagen <falken@chromium.org>
Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Reviewed-by: default avatarMakoto Shimazu <shimazu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#697127}
parent 469ce706
......@@ -697,13 +697,8 @@ TEST_F(ServiceWorkerJobTest, UnregisterWaitingSetsRedundant) {
scoped_refptr<ServiceWorkerVersion> version = new ServiceWorkerVersion(
registration.get(), script_url, blink::mojom::ScriptType::kClassic, 1L,
helper_->context()->AsWeakPtr());
base::Optional<blink::ServiceWorkerStatusCode> status;
base::RunLoop run_loop;
version->StartWorker(
ServiceWorkerMetrics::EventType::UNKNOWN,
ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
run_loop.Run();
ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());
ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk,
StartServiceWorker(version.get()));
version->set_fetch_handler_existence(
ServiceWorkerVersion::FetchHandlerExistence::EXISTS);
......
......@@ -55,26 +55,8 @@ namespace {
// From service_worker_registration.cc.
constexpr base::TimeDelta kMaxLameDuckTime = base::TimeDelta::FromMinutes(5);
// TODO(falken): Make this a common helper function.
void StartWorker(ServiceWorkerVersion* version,
ServiceWorkerMetrics::EventType purpose) {
base::RunLoop loop;
blink::ServiceWorkerStatusCode code;
version->StartWorker(
purpose,
base::BindOnce(
[](base::OnceClosure done, blink::ServiceWorkerStatusCode* out_code,
blink::ServiceWorkerStatusCode result_code) {
*out_code = result_code;
std::move(done).Run();
},
loop.QuitClosure(), &code));
loop.Run();
EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, code);
}
int CreateInflightRequest(ServiceWorkerVersion* version) {
StartWorker(version, ServiceWorkerMetrics::EventType::PUSH);
EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk, StartServiceWorker(version));
return version->StartRequest(ServiceWorkerMetrics::EventType::PUSH,
base::DoNothing());
}
......@@ -481,7 +463,8 @@ class ServiceWorkerActivationTest : public ServiceWorkerRegistrationTest,
helper_->AddNewPendingServiceWorker<FakeServiceWorker>(helper_.get());
// Start the worker.
StartWorker(version_2.get(), ServiceWorkerMetrics::EventType::INSTALL);
ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk,
StartServiceWorker(version_2.get()));
version_2->SetStatus(ServiceWorkerVersion::INSTALLED);
// Set it to activate when ready. The original version should still be
......
......@@ -9,6 +9,7 @@
#include "base/barrier_closure.h"
#include "base/run_loop.h"
#include "base/test/bind_test_util.h"
#include "base/time/time.h"
#include "content/browser/frame_host/frame_tree_node.h"
#include "content/browser/service_worker/embedded_worker_test_helper.h"
......@@ -295,6 +296,26 @@ ReceiveServiceWorkerStatus(base::Optional<blink::ServiceWorkerStatusCode>* out,
std::move(quit_closure), out);
}
blink::ServiceWorkerStatusCode StartServiceWorker(
ServiceWorkerVersion* version) {
blink::ServiceWorkerStatusCode status;
base::RunLoop run_loop;
version->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
base::BindLambdaForTesting(
[&](blink::ServiceWorkerStatusCode result_status) {
status = result_status;
run_loop.Quit();
}));
run_loop.Run();
return status;
}
void StopServiceWorker(ServiceWorkerVersion* version) {
base::RunLoop run_loop;
version->StopWorker(run_loop.QuitClosure());
run_loop.Run();
}
base::WeakPtr<ServiceWorkerProviderHost>
CreateProviderHostForServiceWorkerContext(
int process_id,
......
......@@ -64,6 +64,11 @@ base::OnceCallback<void(blink::ServiceWorkerStatusCode)>
ReceiveServiceWorkerStatus(base::Optional<blink::ServiceWorkerStatusCode>* out,
base::OnceClosure quit_closure);
blink::ServiceWorkerStatusCode StartServiceWorker(
ServiceWorkerVersion* version);
void StopServiceWorker(ServiceWorkerVersion* version);
// Container for keeping the Mojo connection to the service worker provider on
// the renderer alive.
class ServiceWorkerRemoteProviderEndpoint {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment