Commit 4e2ec4a3 authored by Kenichi Ishibashi's avatar Kenichi Ishibashi Committed by Commit Bot

service worker: Move DeleteAndStartOver unittests

Before this CL, DeleteAndStartOver related tests are defined in
ServiceWorkerResourceStorageDiskTest class. The class depends on
in-memory representation of ServiceWorkerRegistration, but these
tests don't necessary depend on ServiceWorkerRegistration.

This CL (re)introduces ServiceWorkerStorageDiskTest class to host
these tests. The class stores a service worker registration to
perform DeleteAndStartOver related checks.

This is a preparation to remove in-memory representations from
service_worker_storage_unittest.cc

Bug: 1016064
Change-Id: I53e094c97e761bf0fa6ea1efbda19edc3dd0daaa
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2464516Reviewed-by: default avatarHiroki Nakagawa <nhiroki@chromium.org>
Commit-Queue: Kenichi Ishibashi <bashi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#816056}
parent d837ccbf
......@@ -42,13 +42,14 @@ class ServiceWorkerStorageControlImplTest;
namespace service_worker_storage_unittest {
class ServiceWorkerStorageTest;
class ServiceWorkerStorageDiskTest;
class ServiceWorkerResourceStorageTest;
class ServiceWorkerResourceStorageDiskTest;
FORWARD_DECLARE_TEST(ServiceWorkerResourceStorageDiskTest, CleanupOnRestart);
FORWARD_DECLARE_TEST(ServiceWorkerResourceStorageDiskTest, DeleteAndStartOver);
FORWARD_DECLARE_TEST(ServiceWorkerResourceStorageDiskTest,
FORWARD_DECLARE_TEST(ServiceWorkerStorageDiskTest, DeleteAndStartOver);
FORWARD_DECLARE_TEST(ServiceWorkerStorageDiskTest,
DeleteAndStartOver_UnrelatedFileExists);
FORWARD_DECLARE_TEST(ServiceWorkerResourceStorageDiskTest,
FORWARD_DECLARE_TEST(ServiceWorkerStorageDiskTest,
DeleteAndStartOver_OpenedFileExists);
FORWARD_DECLARE_TEST(ServiceWorkerStorageTest, DisabledStorage);
} // namespace service_worker_storage_unittest
......@@ -303,13 +304,13 @@ class CONTENT_EXPORT ServiceWorkerStorage {
service_worker_storage_unittest::ServiceWorkerResourceStorageDiskTest,
CleanupOnRestart);
FRIEND_TEST_ALL_PREFIXES(
service_worker_storage_unittest::ServiceWorkerResourceStorageDiskTest,
service_worker_storage_unittest::ServiceWorkerStorageDiskTest,
DeleteAndStartOver);
FRIEND_TEST_ALL_PREFIXES(
service_worker_storage_unittest::ServiceWorkerResourceStorageDiskTest,
service_worker_storage_unittest::ServiceWorkerStorageDiskTest,
DeleteAndStartOver_UnrelatedFileExists);
FRIEND_TEST_ALL_PREFIXES(
service_worker_storage_unittest::ServiceWorkerResourceStorageDiskTest,
service_worker_storage_unittest::ServiceWorkerStorageDiskTest,
DeleteAndStartOver_OpenedFileExists);
FRIEND_TEST_ALL_PREFIXES(
service_worker_storage_unittest::ServiceWorkerStorageTest,
......
......@@ -1610,7 +1610,48 @@ TEST_F(ServiceWorkerResourceStorageDiskTest, CleanupOnRestart) {
EXPECT_TRUE(VerifyBasicResponse(storage_control(), kNewResourceId, true));
}
TEST_F(ServiceWorkerResourceStorageDiskTest, DeleteAndStartOver) {
// Test fixture that uses disk storage, rather than memory. Useful for tests
// that test persistence by simulating browser shutdown and restart.
class ServiceWorkerStorageDiskTest : public ServiceWorkerStorageTest {
public:
void SetUp() override {
ASSERT_TRUE(InitUserDataDirectory());
ServiceWorkerStorageTest::SetUp();
LazyInitialize();
// Store a registration with a resource to make sure disk cache and
// database directories are created.
const GURL kScope("http://www.example.com/scope/");
const GURL kScript("http://www.example.com/script.js");
const int64_t kScriptSize = 5;
auto data = storage::mojom::ServiceWorkerRegistrationData::New();
data->registration_id = 1;
data->version_id = 1;
data->scope = kScope;
data->script = kScript;
data->navigation_preload_state =
blink::mojom::NavigationPreloadState::New();
data->resources_total_size_bytes = kScriptSize;
std::vector<ResourceRecord> resources;
resources.push_back(CreateResourceRecord(1, kScript, kScriptSize));
base::RunLoop loop;
storage_control()->StoreRegistration(
std::move(data), std::move(resources),
base::BindLambdaForTesting(
[&](storage::mojom::ServiceWorkerDatabaseStatus status) {
DCHECK_EQ(storage::mojom::ServiceWorkerDatabaseStatus::kOk,
status);
loop.Quit();
}));
loop.Run();
WriteBasicResponse(storage_control(), 1);
}
};
TEST_F(ServiceWorkerStorageDiskTest, DeleteAndStartOver) {
EXPECT_FALSE(storage()->IsDisabled());
ASSERT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath()));
ASSERT_TRUE(base::DirectoryExists(storage()->GetDatabasePath()));
......@@ -1627,8 +1668,7 @@ TEST_F(ServiceWorkerResourceStorageDiskTest, DeleteAndStartOver) {
EXPECT_FALSE(base::DirectoryExists(storage()->GetDatabasePath()));
}
TEST_F(ServiceWorkerResourceStorageDiskTest,
DeleteAndStartOver_UnrelatedFileExists) {
TEST_F(ServiceWorkerStorageDiskTest, DeleteAndStartOver_UnrelatedFileExists) {
EXPECT_FALSE(storage()->IsDisabled());
ASSERT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath()));
ASSERT_TRUE(base::DirectoryExists(storage()->GetDatabasePath()));
......@@ -1652,8 +1692,7 @@ TEST_F(ServiceWorkerResourceStorageDiskTest,
EXPECT_FALSE(base::DirectoryExists(storage()->GetDatabasePath()));
}
TEST_F(ServiceWorkerResourceStorageDiskTest,
DeleteAndStartOver_OpenedFileExists) {
TEST_F(ServiceWorkerStorageDiskTest, DeleteAndStartOver_OpenedFileExists) {
EXPECT_FALSE(storage()->IsDisabled());
ASSERT_TRUE(base::DirectoryExists(storage()->GetDiskCachePath()));
ASSERT_TRUE(base::DirectoryExists(storage()->GetDatabasePath()));
......
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