[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