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))); |