| 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..1593ea139553ae32f5d407afceebe1697ac9e385 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,6 +30,9 @@ 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:
|
| @@ -88,11 +91,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 +126,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 +157,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 +184,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";
|
| @@ -205,17 +219,86 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, OnSuccess) {
|
| 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(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_EQ("", metadata.thumbnail);
|
| }
|
|
|
| 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)));
|
|
|