Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc

Issue 513683002: [fsp] Add support for providing thumbnails. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use scoped_ptr for EntryMetadata. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc
diff --git a/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc b/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc
index 33f38d626856383f94632b94e46deecaad8b806e..cf309a53cfc907d8a5696c7a1b225f26e59cd2cc 100644
--- a/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc
+++ b/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc
@@ -30,20 +30,23 @@ const char kMimeType[] = "text/plain";
const int kRequestId = 2;
const base::FilePath::CharType kDirectoryPath[] = "/directory";
+// URLs are case insensitive, so it should pass the sanity check.
+const char kThumbnail[] = "DaTa:ImAgE/pNg;base64,";
+
// Callback invocation logger. Acts as a fileapi end-point.
class CallbackLogger {
public:
class Event {
public:
- Event(const EntryMetadata& metadata, base::File::Error result)
- : metadata_(metadata), result_(result) {}
+ Event(scoped_ptr<EntryMetadata> metadata, base::File::Error result)
+ : metadata_(metadata.Pass()), result_(result) {}
virtual ~Event() {}
- const EntryMetadata& metadata() { return metadata_; }
- base::File::Error result() { return result_; }
+ const EntryMetadata* metadata() const { return metadata_.get(); }
+ base::File::Error result() const { return result_; }
private:
- EntryMetadata metadata_;
+ scoped_ptr<EntryMetadata> metadata_;
base::File::Error result_;
DISALLOW_COPY_AND_ASSIGN(Event);
@@ -52,11 +55,12 @@ class CallbackLogger {
CallbackLogger() {}
virtual ~CallbackLogger() {}
- void OnGetMetadata(const EntryMetadata& metadata, base::File::Error result) {
- events_.push_back(new Event(metadata, result));
+ void OnGetMetadata(scoped_ptr<EntryMetadata> metadata,
+ base::File::Error result) {
+ events_.push_back(new Event(metadata.Pass(), result));
}
- ScopedVector<Event>& events() { return events_; }
+ const ScopedVector<Event>& events() const { return events_; }
private:
ScopedVector<Event> events_;
@@ -88,11 +92,13 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, Execute) {
util::LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */);
CallbackLogger callback_logger;
- GetMetadata get_metadata(NULL,
- file_system_info_,
- base::FilePath::FromUTF8Unsafe(kDirectoryPath),
- base::Bind(&CallbackLogger::OnGetMetadata,
- base::Unretained(&callback_logger)));
+ GetMetadata get_metadata(
+ NULL,
+ file_system_info_,
+ base::FilePath::FromUTF8Unsafe(kDirectoryPath),
+ ProvidedFileSystemInterface::METADATA_FIELD_THUMBNAIL,
+ base::Bind(&CallbackLogger::OnGetMetadata,
+ base::Unretained(&callback_logger)));
get_metadata.SetDispatchEventImplForTesting(
base::Bind(&util::LoggingDispatchEventImpl::OnDispatchEventImpl,
base::Unretained(&dispatcher)));
@@ -121,17 +127,23 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, Execute) {
std::string event_entry_path;
EXPECT_TRUE(options->GetString("entryPath", &event_entry_path));
EXPECT_EQ(kDirectoryPath, event_entry_path);
+
+ bool event_thumbnail;
+ EXPECT_TRUE(options->GetBoolean("thumbnail", &event_thumbnail));
+ EXPECT_TRUE(event_thumbnail);
}
TEST_F(FileSystemProviderOperationsGetMetadataTest, Execute_NoListener) {
util::LoggingDispatchEventImpl dispatcher(false /* dispatch_reply */);
CallbackLogger callback_logger;
- GetMetadata get_metadata(NULL,
- file_system_info_,
- base::FilePath::FromUTF8Unsafe(kDirectoryPath),
- base::Bind(&CallbackLogger::OnGetMetadata,
- base::Unretained(&callback_logger)));
+ GetMetadata get_metadata(
+ NULL,
+ file_system_info_,
+ base::FilePath::FromUTF8Unsafe(kDirectoryPath),
+ ProvidedFileSystemInterface::METADATA_FIELD_THUMBNAIL,
+ base::Bind(&CallbackLogger::OnGetMetadata,
+ base::Unretained(&callback_logger)));
get_metadata.SetDispatchEventImplForTesting(
base::Bind(&util::LoggingDispatchEventImpl::OnDispatchEventImpl,
base::Unretained(&dispatcher)));
@@ -146,11 +158,13 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, OnSuccess) {
util::LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */);
CallbackLogger callback_logger;
- GetMetadata get_metadata(NULL,
- file_system_info_,
- base::FilePath::FromUTF8Unsafe(kDirectoryPath),
- base::Bind(&CallbackLogger::OnGetMetadata,
- base::Unretained(&callback_logger)));
+ GetMetadata get_metadata(
+ NULL,
+ file_system_info_,
+ base::FilePath::FromUTF8Unsafe(kDirectoryPath),
+ ProvidedFileSystemInterface::METADATA_FIELD_THUMBNAIL,
+ base::Bind(&CallbackLogger::OnGetMetadata,
+ base::Unretained(&callback_logger)));
get_metadata.SetDispatchEventImplForTesting(
base::Bind(&util::LoggingDispatchEventImpl::OnDispatchEventImpl,
base::Unretained(&dispatcher)));
@@ -171,7 +185,8 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, OnSuccess) {
" \"modificationTime\": {\n"
" \"value\": \"Thu Apr 24 00:46:52 UTC 2014\"\n"
" },\n"
- " \"mimeType\": \"text/plain\"\n" // kMimeType
+ " \"mimeType\": \"text/plain\",\n" // kMimeType
+ " \"thumbnail\": \"DaTa:ImAgE/pNg;base64,\"\n" // kThumbnail
" },\n"
" 0\n" // execution_time
"]\n";
@@ -197,25 +212,94 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, OnSuccess) {
CallbackLogger::Event* event = callback_logger.events()[0];
EXPECT_EQ(base::File::FILE_OK, event->result());
- const EntryMetadata& metadata = event->metadata();
- EXPECT_FALSE(metadata.is_directory);
- EXPECT_EQ(4096, metadata.size);
+ const EntryMetadata* metadata = event->metadata();
+ EXPECT_FALSE(metadata->is_directory);
+ EXPECT_EQ(4096, metadata->size);
base::Time expected_time;
EXPECT_TRUE(
base::Time::FromString("Thu Apr 24 00:46:52 UTC 2014", &expected_time));
- EXPECT_EQ(expected_time, metadata.modification_time);
- EXPECT_EQ(kMimeType, metadata.mime_type);
+ EXPECT_EQ(expected_time, metadata->modification_time);
+ EXPECT_EQ(kMimeType, metadata->mime_type);
+ EXPECT_EQ(kThumbnail, metadata->thumbnail);
+}
+
+TEST_F(FileSystemProviderOperationsGetMetadataTest,
+ OnSuccess_InvalidThumbnail) {
+ using extensions::api::file_system_provider_internal::
+ GetMetadataRequestedSuccess::Params;
+
+ util::LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */);
+ CallbackLogger callback_logger;
+
+ GetMetadata get_metadata(
+ NULL,
+ file_system_info_,
+ base::FilePath::FromUTF8Unsafe(kDirectoryPath),
+ ProvidedFileSystemInterface::METADATA_FIELD_THUMBNAIL,
+ base::Bind(&CallbackLogger::OnGetMetadata,
+ base::Unretained(&callback_logger)));
+ get_metadata.SetDispatchEventImplForTesting(
+ base::Bind(&util::LoggingDispatchEventImpl::OnDispatchEventImpl,
+ base::Unretained(&dispatcher)));
+
+ EXPECT_TRUE(get_metadata.Execute(kRequestId));
+
+ // Sample input as JSON. Keep in sync with file_system_provider_api.idl.
+ // As for now, it is impossible to create *::Params class directly, not from
+ // base::Value.
+ const std::string input =
+ "[\n"
+ " \"testing-file-system\",\n" // kFileSystemId
+ " 2,\n" // kRequestId
+ " {\n"
+ " \"isDirectory\": false,\n"
+ " \"name\": \"blueberries.txt\",\n"
+ " \"size\": 4096,\n"
+ " \"modificationTime\": {\n"
+ " \"value\": \"Thu Apr 24 00:46:52 UTC 2014\"\n"
+ " },\n"
+ " \"mimeType\": \"text/plain\",\n" // kMimeType
+ " \"thumbnail\": \"http://www.foobar.com/evil\"\n" // kThumbnail
+ " },\n"
+ " 0\n" // execution_time
+ "]\n";
+
+ int json_error_code;
+ std::string json_error_msg;
+ scoped_ptr<base::Value> value(base::JSONReader::ReadAndReturnError(
+ input, base::JSON_PARSE_RFC, &json_error_code, &json_error_msg));
+ ASSERT_TRUE(value.get()) << json_error_msg;
+
+ base::ListValue* value_as_list;
+ ASSERT_TRUE(value->GetAsList(&value_as_list));
+ scoped_ptr<Params> params(Params::Create(*value_as_list));
+ ASSERT_TRUE(params.get());
+ scoped_ptr<RequestValue> request_value(
+ RequestValue::CreateForGetMetadataSuccess(params.Pass()));
+ ASSERT_TRUE(request_value.get());
+
+ const bool has_more = false;
+ get_metadata.OnSuccess(kRequestId, request_value.Pass(), has_more);
+
+ ASSERT_EQ(1u, callback_logger.events().size());
+ CallbackLogger::Event* event = callback_logger.events()[0];
+ EXPECT_EQ(base::File::FILE_ERROR_IO, event->result());
+
+ const EntryMetadata* metadata = event->metadata();
+ EXPECT_FALSE(metadata);
}
TEST_F(FileSystemProviderOperationsGetMetadataTest, OnError) {
util::LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */);
CallbackLogger callback_logger;
- GetMetadata get_metadata(NULL,
- file_system_info_,
- base::FilePath::FromUTF8Unsafe(kDirectoryPath),
- base::Bind(&CallbackLogger::OnGetMetadata,
- base::Unretained(&callback_logger)));
+ GetMetadata get_metadata(
+ NULL,
+ file_system_info_,
+ base::FilePath::FromUTF8Unsafe(kDirectoryPath),
+ ProvidedFileSystemInterface::METADATA_FIELD_THUMBNAIL,
+ base::Bind(&CallbackLogger::OnGetMetadata,
+ base::Unretained(&callback_logger)));
get_metadata.SetDispatchEventImplForTesting(
base::Bind(&util::LoggingDispatchEventImpl::OnDispatchEventImpl,
base::Unretained(&dispatcher)));

Powered by Google App Engine
This is Rietveld 408576698