| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/files/file.h" | 7 #include "base/files/file.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 const EntryMetadata& metadata() { return metadata_; } | 62 const EntryMetadata& metadata() { return metadata_; } |
| 63 base::File::Error result() { return result_; } | 63 base::File::Error result() { return result_; } |
| 64 | 64 |
| 65 private: | 65 private: |
| 66 EntryMetadata metadata_; | 66 EntryMetadata metadata_; |
| 67 base::File::Error result_; | 67 base::File::Error result_; |
| 68 | 68 |
| 69 DISALLOW_COPY_AND_ASSIGN(Event); | 69 DISALLOW_COPY_AND_ASSIGN(Event); |
| 70 }; | 70 }; |
| 71 | 71 |
| 72 CallbackLogger() : weak_ptr_factory_(this) {} | 72 CallbackLogger() {} |
| 73 virtual ~CallbackLogger() {} | 73 virtual ~CallbackLogger() {} |
| 74 | 74 |
| 75 void OnGetMetadata(const EntryMetadata& metadata, base::File::Error result) { | 75 void OnGetMetadata(const EntryMetadata& metadata, base::File::Error result) { |
| 76 events_.push_back(new Event(metadata, result)); | 76 events_.push_back(new Event(metadata, result)); |
| 77 } | 77 } |
| 78 | 78 |
| 79 ScopedVector<Event>& events() { return events_; } | 79 ScopedVector<Event>& events() { return events_; } |
| 80 | 80 |
| 81 base::WeakPtr<CallbackLogger> GetWeakPtr() { | |
| 82 return weak_ptr_factory_.GetWeakPtr(); | |
| 83 } | |
| 84 | |
| 85 private: | 81 private: |
| 86 ScopedVector<Event> events_; | 82 ScopedVector<Event> events_; |
| 87 bool dispatch_reply_; | 83 bool dispatch_reply_; |
| 88 base::WeakPtrFactory<CallbackLogger> weak_ptr_factory_; | |
| 89 | 84 |
| 90 DISALLOW_COPY_AND_ASSIGN(CallbackLogger); | 85 DISALLOW_COPY_AND_ASSIGN(CallbackLogger); |
| 91 }; | 86 }; |
| 92 | 87 |
| 93 } // namespace | 88 } // namespace |
| 94 | 89 |
| 95 class FileSystemProviderOperationsGetMetadataTest : public testing::Test { | 90 class FileSystemProviderOperationsGetMetadataTest : public testing::Test { |
| 96 protected: | 91 protected: |
| 97 FileSystemProviderOperationsGetMetadataTest() {} | 92 FileSystemProviderOperationsGetMetadataTest() {} |
| 98 virtual ~FileSystemProviderOperationsGetMetadataTest() {} | 93 virtual ~FileSystemProviderOperationsGetMetadataTest() {} |
| 99 | 94 |
| 100 virtual void SetUp() OVERRIDE { | 95 virtual void SetUp() OVERRIDE { |
| 101 file_system_info_ = | 96 file_system_info_ = |
| 102 ProvidedFileSystemInfo(kExtensionId, | 97 ProvidedFileSystemInfo(kExtensionId, |
| 103 kFileSystemId, | 98 kFileSystemId, |
| 104 "" /* file_system_name */, | 99 "" /* file_system_name */, |
| 105 base::FilePath() /* mount_path */); | 100 base::FilePath() /* mount_path */); |
| 106 } | 101 } |
| 107 | 102 |
| 108 ProvidedFileSystemInfo file_system_info_; | 103 ProvidedFileSystemInfo file_system_info_; |
| 109 }; | 104 }; |
| 110 | 105 |
| 111 TEST_F(FileSystemProviderOperationsGetMetadataTest, Execute) { | 106 TEST_F(FileSystemProviderOperationsGetMetadataTest, Execute) { |
| 112 LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */); | 107 LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */); |
| 113 CallbackLogger callback_logger; | 108 CallbackLogger callback_logger; |
| 114 | 109 |
| 115 GetMetadata get_metadata( | 110 GetMetadata get_metadata(NULL, |
| 116 NULL, | 111 file_system_info_, |
| 117 file_system_info_, | 112 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
| 118 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 113 base::Bind(&CallbackLogger::OnGetMetadata, |
| 119 base::Bind(&CallbackLogger::OnGetMetadata, callback_logger.GetWeakPtr())); | 114 base::Unretained(&callback_logger))); |
| 120 get_metadata.SetDispatchEventImplForTesting( | 115 get_metadata.SetDispatchEventImplForTesting( |
| 121 base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl, | 116 base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl, |
| 122 base::Unretained(&dispatcher))); | 117 base::Unretained(&dispatcher))); |
| 123 | 118 |
| 124 EXPECT_TRUE(get_metadata.Execute(kRequestId)); | 119 EXPECT_TRUE(get_metadata.Execute(kRequestId)); |
| 125 | 120 |
| 126 ASSERT_EQ(1u, dispatcher.events().size()); | 121 ASSERT_EQ(1u, dispatcher.events().size()); |
| 127 extensions::Event* event = dispatcher.events()[0]; | 122 extensions::Event* event = dispatcher.events()[0]; |
| 128 EXPECT_EQ( | 123 EXPECT_EQ( |
| 129 extensions::api::file_system_provider::OnGetMetadataRequested::kEventName, | 124 extensions::api::file_system_provider::OnGetMetadataRequested::kEventName, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 144 | 139 |
| 145 std::string event_entry_path; | 140 std::string event_entry_path; |
| 146 EXPECT_TRUE(options->GetString("entryPath", &event_entry_path)); | 141 EXPECT_TRUE(options->GetString("entryPath", &event_entry_path)); |
| 147 EXPECT_EQ(kDirectoryPath, event_entry_path); | 142 EXPECT_EQ(kDirectoryPath, event_entry_path); |
| 148 } | 143 } |
| 149 | 144 |
| 150 TEST_F(FileSystemProviderOperationsGetMetadataTest, Execute_NoListener) { | 145 TEST_F(FileSystemProviderOperationsGetMetadataTest, Execute_NoListener) { |
| 151 LoggingDispatchEventImpl dispatcher(false /* dispatch_reply */); | 146 LoggingDispatchEventImpl dispatcher(false /* dispatch_reply */); |
| 152 CallbackLogger callback_logger; | 147 CallbackLogger callback_logger; |
| 153 | 148 |
| 154 GetMetadata get_metadata( | 149 GetMetadata get_metadata(NULL, |
| 155 NULL, | 150 file_system_info_, |
| 156 file_system_info_, | 151 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
| 157 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 152 base::Bind(&CallbackLogger::OnGetMetadata, |
| 158 base::Bind(&CallbackLogger::OnGetMetadata, callback_logger.GetWeakPtr())); | 153 base::Unretained(&callback_logger))); |
| 159 get_metadata.SetDispatchEventImplForTesting( | 154 get_metadata.SetDispatchEventImplForTesting( |
| 160 base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl, | 155 base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl, |
| 161 base::Unretained(&dispatcher))); | 156 base::Unretained(&dispatcher))); |
| 162 | 157 |
| 163 EXPECT_FALSE(get_metadata.Execute(kRequestId)); | 158 EXPECT_FALSE(get_metadata.Execute(kRequestId)); |
| 164 } | 159 } |
| 165 | 160 |
| 166 TEST_F(FileSystemProviderOperationsGetMetadataTest, OnSuccess) { | 161 TEST_F(FileSystemProviderOperationsGetMetadataTest, OnSuccess) { |
| 167 using extensions::api::file_system_provider_internal:: | 162 using extensions::api::file_system_provider_internal:: |
| 168 GetMetadataRequestedSuccess::Params; | 163 GetMetadataRequestedSuccess::Params; |
| 169 | 164 |
| 170 LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */); | 165 LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */); |
| 171 CallbackLogger callback_logger; | 166 CallbackLogger callback_logger; |
| 172 | 167 |
| 173 GetMetadata get_metadata( | 168 GetMetadata get_metadata(NULL, |
| 174 NULL, | 169 file_system_info_, |
| 175 file_system_info_, | 170 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
| 176 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 171 base::Bind(&CallbackLogger::OnGetMetadata, |
| 177 base::Bind(&CallbackLogger::OnGetMetadata, callback_logger.GetWeakPtr())); | 172 base::Unretained(&callback_logger))); |
| 178 get_metadata.SetDispatchEventImplForTesting( | 173 get_metadata.SetDispatchEventImplForTesting( |
| 179 base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl, | 174 base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl, |
| 180 base::Unretained(&dispatcher))); | 175 base::Unretained(&dispatcher))); |
| 181 | 176 |
| 182 EXPECT_TRUE(get_metadata.Execute(kRequestId)); | 177 EXPECT_TRUE(get_metadata.Execute(kRequestId)); |
| 183 | 178 |
| 184 // Sample input as JSON. Keep in sync with file_system_provider_api.idl. | 179 // Sample input as JSON. Keep in sync with file_system_provider_api.idl. |
| 185 // As for now, it is impossible to create *::Params class directly, not from | 180 // As for now, it is impossible to create *::Params class directly, not from |
| 186 // base::Value. | 181 // base::Value. |
| 187 const std::string input = | 182 const std::string input = |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 EXPECT_TRUE( | 223 EXPECT_TRUE( |
| 229 base::Time::FromString("Thu Apr 24 00:46:52 UTC 2014", &expected_time)); | 224 base::Time::FromString("Thu Apr 24 00:46:52 UTC 2014", &expected_time)); |
| 230 EXPECT_EQ(expected_time, metadata.modification_time); | 225 EXPECT_EQ(expected_time, metadata.modification_time); |
| 231 EXPECT_EQ(kMimeType, metadata.mime_type); | 226 EXPECT_EQ(kMimeType, metadata.mime_type); |
| 232 } | 227 } |
| 233 | 228 |
| 234 TEST_F(FileSystemProviderOperationsGetMetadataTest, OnError) { | 229 TEST_F(FileSystemProviderOperationsGetMetadataTest, OnError) { |
| 235 LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */); | 230 LoggingDispatchEventImpl dispatcher(true /* dispatch_reply */); |
| 236 CallbackLogger callback_logger; | 231 CallbackLogger callback_logger; |
| 237 | 232 |
| 238 GetMetadata get_metadata( | 233 GetMetadata get_metadata(NULL, |
| 239 NULL, | 234 file_system_info_, |
| 240 file_system_info_, | 235 base::FilePath::FromUTF8Unsafe(kDirectoryPath), |
| 241 base::FilePath::FromUTF8Unsafe(kDirectoryPath), | 236 base::Bind(&CallbackLogger::OnGetMetadata, |
| 242 base::Bind(&CallbackLogger::OnGetMetadata, callback_logger.GetWeakPtr())); | 237 base::Unretained(&callback_logger))); |
| 243 get_metadata.SetDispatchEventImplForTesting( | 238 get_metadata.SetDispatchEventImplForTesting( |
| 244 base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl, | 239 base::Bind(&LoggingDispatchEventImpl::OnDispatchEventImpl, |
| 245 base::Unretained(&dispatcher))); | 240 base::Unretained(&dispatcher))); |
| 246 | 241 |
| 247 EXPECT_TRUE(get_metadata.Execute(kRequestId)); | 242 EXPECT_TRUE(get_metadata.Execute(kRequestId)); |
| 248 | 243 |
| 249 get_metadata.OnError(kRequestId, | 244 get_metadata.OnError(kRequestId, |
| 250 scoped_ptr<RequestValue>(new RequestValue()), | 245 scoped_ptr<RequestValue>(new RequestValue()), |
| 251 base::File::FILE_ERROR_TOO_MANY_OPENED); | 246 base::File::FILE_ERROR_TOO_MANY_OPENED); |
| 252 | 247 |
| 253 ASSERT_EQ(1u, callback_logger.events().size()); | 248 ASSERT_EQ(1u, callback_logger.events().size()); |
| 254 CallbackLogger::Event* event = callback_logger.events()[0]; | 249 CallbackLogger::Event* event = callback_logger.events()[0]; |
| 255 EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED, event->result()); | 250 EXPECT_EQ(base::File::FILE_ERROR_TOO_MANY_OPENED, event->result()); |
| 256 } | 251 } |
| 257 | 252 |
| 258 } // namespace operations | 253 } // namespace operations |
| 259 } // namespace file_system_provider | 254 } // namespace file_system_provider |
| 260 } // namespace chromeos | 255 } // namespace chromeos |
| OLD | NEW |