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 |