[Paint Preview] Refactor base service to use DirectoryKey
Follow up change to make PaintPreviewBaseService use DirectoryKey for
accessing protos. Also move the access methods to FileManager.
Bug: 1055505
Change-Id: I322998cbd5d7d6d78d9aa541ac81a8f292059235
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2075043
Commit-Queue: Calder Kitagawa <[email protected]>
Reviewed-by: Mehran Mahmoudi <[email protected]>
Cr-Commit-Position: refs/heads/master@{#745065}
diff --git a/components/paint_preview/browser/file_manager_unittest.cc b/components/paint_preview/browser/file_manager_unittest.cc
index 081cf355..72b7b6d 100644
--- a/components/paint_preview/browser/file_manager_unittest.cc
+++ b/components/paint_preview/browser/file_manager_unittest.cc
@@ -4,10 +4,14 @@
#include "components/paint_preview/browser/file_manager.h"
+#include <memory>
+
#include "base/files/file.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/files/scoped_temp_dir.h"
+#include "components/paint_preview/common/proto/paint_preview.pb.h"
+#include "components/paint_preview/common/test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
@@ -187,4 +191,28 @@
EXPECT_FALSE(base::PathExists(w3_directory));
}
+TEST(FileManagerTest, HandleProto) {
+ base::ScopedTempDir temp_dir;
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+ FileManager manager(temp_dir.GetPath());
+ auto key = manager.CreateKey(1U);
+ base::FilePath path;
+ EXPECT_TRUE(manager.CreateOrGetDirectory(key, &path));
+
+ PaintPreviewProto original_proto;
+ auto* root_frame = original_proto.mutable_root_frame();
+ root_frame->set_embedding_token_low(0);
+ root_frame->set_embedding_token_high(0);
+ root_frame->set_is_main_frame(true);
+ root_frame->set_file_path(path.AppendASCII("0.skp").MaybeAsASCII());
+ auto* metadata = original_proto.mutable_metadata();
+ metadata->set_url(GURL("www.chromium.org").spec());
+
+ EXPECT_TRUE(manager.SerializePaintPreviewProto(key, original_proto));
+ EXPECT_TRUE(base::PathExists(path.AppendASCII("proto.pb")));
+ auto read_proto = manager.DeserializePaintPreviewProto(key);
+ EXPECT_NE(read_proto, nullptr);
+ EXPECT_THAT(*read_proto, EqualsProto(original_proto));
+}
+
} // namespace paint_preview