summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/fileapi/file_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/fileapi/file_test.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/fileapi/file_test.cc82
1 files changed, 40 insertions, 42 deletions
diff --git a/chromium/third_party/blink/renderer/core/fileapi/file_test.cc b/chromium/third_party/blink/renderer/core/fileapi/file_test.cc
index 399d9aa9adc..53daeaf7560 100644
--- a/chromium/third_party/blink/renderer/core/fileapi/file_test.cc
+++ b/chromium/third_party/blink/renderer/core/fileapi/file_test.cc
@@ -4,53 +4,58 @@
#include "third_party/blink/renderer/core/fileapi/file.h"
+#include "base/task/post_task.h"
+#include "base/task/thread_pool.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
+#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h"
#include "third_party/blink/public/mojom/file/file_utilities.mojom-blink.h"
#include "third_party/blink/public/platform/platform.h"
+#include "third_party/blink/renderer/platform/blob/testing/fake_blob.h"
#include "third_party/blink/renderer/platform/file_metadata.h"
#include "third_party/blink/renderer/platform/heap/heap.h"
+#include "third_party/blink/renderer/platform/scheduler/public/post_cross_thread_task.h"
+#include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
namespace blink {
namespace {
-class MockFileUtilitiesHost : public mojom::blink::FileUtilitiesHost {
+class MockBlob : public FakeBlob {
public:
- MockFileUtilitiesHost()
- : broker_(*Platform::Current()->GetBrowserInterfaceBroker()) {
- broker_.SetBinderForTesting(
- FileUtilitiesHost::Name_,
- WTF::BindRepeating(&MockFileUtilitiesHost::BindReceiver,
- WTF::Unretained(this)));
- RebindFileUtilitiesForTesting();
+ static void Create(File* file, base::Time modified_time) {
+ mojo::PendingRemote<mojom::blink::Blob> remote;
+ PostCrossThreadTask(
+ *base::ThreadPool::CreateSingleThreadTaskRunner({}), FROM_HERE,
+ CrossThreadBindOnce(
+ [](const String& uuid,
+ mojo::PendingReceiver<mojom::blink::Blob> receiver,
+ base::Time modified_time) {
+ mojo::MakeSelfOwnedReceiver(
+ std::make_unique<MockBlob>(uuid, modified_time),
+ std::move(receiver));
+ },
+ file->Uuid(), remote.InitWithNewPipeAndPassReceiver(),
+ modified_time));
+ file->GetBlobDataHandle()->SetBlobRemoteForTesting(std::move(remote));
}
- ~MockFileUtilitiesHost() override {
- broker_.SetBinderForTesting(FileUtilitiesHost::Name_, {});
- RebindFileUtilitiesForTesting();
- }
-
- void SetFileInfoToBeReturned(const base::File::Info info) {
- file_info_ = info;
- }
+ MockBlob(const String& uuid, base::Time modified_time)
+ : FakeBlob(uuid), modified_time_(modified_time) {}
- private:
- void BindReceiver(mojo::ScopedMessagePipeHandle handle) {
- receivers_.Add(this,
- mojo::PendingReceiver<FileUtilitiesHost>(std::move(handle)));
+ void Clone(mojo::PendingReceiver<mojom::blink::Blob> receiver) override {
+ mojo::MakeSelfOwnedReceiver(
+ std::make_unique<MockBlob>(uuid_, modified_time_), std::move(receiver));
}
- // FileUtilitiesHost function:
- void GetFileInfo(const base::FilePath& path,
- GetFileInfoCallback callback) override {
- std::move(callback).Run(file_info_);
+ void CaptureSnapshot(CaptureSnapshotCallback callback) override {
+ std::move(callback).Run(
+ /*size=*/0, NullableTimeToOptionalTime(modified_time_));
}
- ThreadSafeBrowserInterfaceBrokerProxy& broker_;
- mojo::ReceiverSet<FileUtilitiesHost> receivers_;
- base::File::Info file_info_;
+ private:
+ base::Time modified_time_;
};
void ExpectTimestampIsNow(const File& file) {
@@ -65,12 +70,9 @@ void ExpectTimestampIsNow(const File& file) {
} // namespace
TEST(FileTest, NativeFileWithoutTimestamp) {
- MockFileUtilitiesHost host;
- base::File::Info info;
- info.last_modified = base::Time();
- host.SetFileInfoToBeReturned(info);
-
auto* const file = MakeGarbageCollected<File>("/native/path");
+ MockBlob::Create(file, base::Time());
+
EXPECT_TRUE(file->HasBackingFile());
EXPECT_EQ("/native/path", file->GetPath());
EXPECT_TRUE(file->FileSystemURL().IsEmpty());
@@ -78,24 +80,18 @@ TEST(FileTest, NativeFileWithoutTimestamp) {
}
TEST(FileTest, NativeFileWithUnixEpochTimestamp) {
- MockFileUtilitiesHost host;
- base::File::Info info;
- info.last_modified = base::Time::UnixEpoch();
- host.SetFileInfoToBeReturned(info);
-
auto* const file = MakeGarbageCollected<File>("/native/path");
+ MockBlob::Create(file, base::Time::UnixEpoch());
+
EXPECT_TRUE(file->HasBackingFile());
EXPECT_EQ(0, file->lastModified());
EXPECT_EQ(base::Time::UnixEpoch(), file->LastModifiedTime());
}
TEST(FileTest, NativeFileWithApocalypseTimestamp) {
- MockFileUtilitiesHost host;
- base::File::Info info;
- info.last_modified = base::Time::Max();
- host.SetFileInfoToBeReturned(info);
-
auto* const file = MakeGarbageCollected<File>("/native/path");
+ MockBlob::Create(file, base::Time::Max());
+
EXPECT_TRUE(file->HasBackingFile());
EXPECT_EQ((base::Time::Max() - base::Time::UnixEpoch()).InMilliseconds(),
@@ -219,6 +215,7 @@ TEST(FileTest, FileSystemFileWithApocalypseTimestamp) {
TEST(FileTest, fileSystemFileWithoutNativeSnapshot) {
KURL url("filesystem:http://example.com/isolated/hash/non-native-file");
FileMetadata metadata;
+ metadata.length = 0;
File* const file =
File::CreateForFileSystemFile(url, metadata, File::kIsUserVisible);
EXPECT_FALSE(file->HasBackingFile());
@@ -244,6 +241,7 @@ TEST(FileTest, hsaSameSource) {
KURL url_a("filesystem:http://example.com/isolated/hash/non-native-file-A");
KURL url_b("filesystem:http://example.com/isolated/hash/non-native-file-B");
FileMetadata metadata;
+ metadata.length = 0;
File* const file_system_file_a1 =
File::CreateForFileSystemFile(url_a, metadata, File::kIsUserVisible);
File* const file_system_file_a2 =