blob: 60fdae4bda73a60eddf5b0278e34eae59b856ead [file]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/persistent_cache/mojom/persistent_cache_mojom_traits.h"
#include <ostream>
#include "base/files/file.h"
#include "base/files/platform_file.h"
#include "base/files/scoped_temp_dir.h"
#include "base/memory/unsafe_shared_memory_region.h"
#include "components/persistent_cache/mojom/persistent_cache.mojom.h"
#include "components/persistent_cache/pending_backend.h"
#include "mojo/public/cpp/test_support/test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace persistent_cache {
// Tests that a read-only PendingBackend for the SQLite backend can be
// deserialized..
TEST(PersistentCacheReadOnlyMojomTraitsTest, Do) {
base::ScopedTempDir temp_dir;
ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
// Create an instance with a pair of read-only file handles and lock memory.
PendingBackend source;
source.pending_file_set.db_file =
base::File(temp_dir.GetPath().Append(FILE_PATH_LITERAL("one")),
base::File::FLAG_CREATE | base::File::FLAG_READ);
source.pending_file_set.journal_file =
base::File(temp_dir.GetPath().Append(FILE_PATH_LITERAL("two")),
base::File::FLAG_CREATE | base::File::FLAG_READ);
source.pending_file_set.shared_lock =
base::UnsafeSharedMemoryRegion::Create(4);
source.pending_file_set.read_write = false;
// Serialize and deserialize the pending backend.
PendingBackend result;
ASSERT_TRUE(
mojo::test::SerializeAndDeserialize<mojom::PendingReadOnlyBackend>(
source, result));
// This test simply checks whether SerializeAndDeserialize succeeds.
// The code to verify the result of SerializeAndDeserialize is written in
// components/sqlite_vfs/mojom/sqlite_vfs_mojom_traits_unittest.cc.
}
// Tests that a read-write PendingBackend for the SQLite backend can be
// deserialized..
TEST(PersistentCacheReadWriteMojomTraitsTest, Do) {
base::ScopedTempDir temp_dir;
ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
// Create an instance with a pair of read-write file handles and lock memory.
PendingBackend source;
source.pending_file_set.db_file =
base::File(temp_dir.GetPath().Append(FILE_PATH_LITERAL("one")),
base::File::FLAG_CREATE | base::File::FLAG_READ);
source.pending_file_set.journal_file =
base::File(temp_dir.GetPath().Append(FILE_PATH_LITERAL("two")),
base::File::FLAG_CREATE | base::File::FLAG_READ);
source.pending_file_set.shared_lock =
base::UnsafeSharedMemoryRegion::Create(4);
source.pending_file_set.read_write = true;
// Serialize and deserialize the pending backend.
PendingBackend result;
ASSERT_TRUE(
mojo::test::SerializeAndDeserialize<mojom::PendingReadWriteBackend>(
source, result));
// This test simply checks whether SerializeAndDeserialize succeeds.
// The code to verify the result of SerializeAndDeserialize is written in
// components/sqlite_vfs/mojom/sqlite_vfs_mojom_traits_unittest.cc.
}
} // namespace persistent_cache