blob: 292d411e9f4ea16d65fafe2348603588c1f0dc62 [file] [log] [blame]
// 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 "mojo/public/cpp/base/file_mojom_traits.h"
#include "mojo/public/cpp/base/read_only_file_mojom_traits.h"
#include "mojo/public/cpp/base/shared_memory_mojom_traits.h"
namespace mojo {
// static
bool StructTraits<persistent_cache::mojom::PendingReadOnlyBackendDataView,
persistent_cache::PendingBackend>::
Read(persistent_cache::mojom::PendingReadOnlyBackendDataView data,
persistent_cache::PendingBackend* out_pending_backend) {
auto& sqlite_data = out_pending_backend->sqlite_data;
if (!data.ReadDbFile(&sqlite_data.db_file)) {
return false;
}
if (!data.ReadJournalFile(&sqlite_data.journal_file)) {
return false;
}
if (!data.ReadSharedLock(&sqlite_data.shared_lock)) {
return false;
}
out_pending_backend->read_write = false;
return true;
}
// static
bool StructTraits<persistent_cache::mojom::PendingReadWriteBackendDataView,
persistent_cache::PendingBackend>::
Read(persistent_cache::mojom::PendingReadWriteBackendDataView data,
persistent_cache::PendingBackend* out_pending_backend) {
auto& sqlite_data = out_pending_backend->sqlite_data;
if (!data.ReadDbFile(&sqlite_data.db_file)) {
return false;
}
if (!data.ReadJournalFile(&sqlite_data.journal_file)) {
return false;
}
if (!data.ReadWalFile(&sqlite_data.wal_file)) {
return false;
}
if (!data.ReadSharedLock(&sqlite_data.shared_lock)) {
return false;
}
out_pending_backend->read_write = true;
return true;
}
} // namespace mojo