OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/chromeos/drive/resource_metadata.h" | 5 #include "chrome/browser/chromeos/drive/resource_metadata.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 class ResourceMetadataTestOnUIThread : public testing::Test { | 116 class ResourceMetadataTestOnUIThread : public testing::Test { |
117 protected: | 117 protected: |
118 virtual void SetUp() OVERRIDE { | 118 virtual void SetUp() OVERRIDE { |
119 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 119 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
120 | 120 |
121 base::ThreadRestrictions::SetIOAllowed(false); // For strict thread check. | 121 base::ThreadRestrictions::SetIOAllowed(false); // For strict thread check. |
122 scoped_refptr<base::SequencedWorkerPool> pool = | 122 scoped_refptr<base::SequencedWorkerPool> pool = |
123 content::BrowserThread::GetBlockingPool(); | 123 content::BrowserThread::GetBlockingPool(); |
124 blocking_task_runner_ = | 124 blocking_task_runner_ = |
125 pool->GetSequencedTaskRunner(pool->GetSequenceToken()); | 125 pool->GetSequencedTaskRunner(pool->GetSequenceToken()); |
126 resource_metadata_.reset(new ResourceMetadata(temp_dir_.path(), | 126 |
| 127 metadata_storage_.reset(new ResourceMetadataStorage( |
| 128 temp_dir_.path(), blocking_task_runner_)); |
| 129 bool success = false; |
| 130 base::PostTaskAndReplyWithResult( |
| 131 blocking_task_runner_, |
| 132 FROM_HERE, |
| 133 base::Bind(&ResourceMetadataStorage::Initialize, |
| 134 base::Unretained(metadata_storage_.get())), |
| 135 google_apis::test_util::CreateCopyResultCallback(&success)); |
| 136 google_apis::test_util::RunBlockingPoolTask(); |
| 137 ASSERT_TRUE(success); |
| 138 |
| 139 resource_metadata_.reset(new ResourceMetadata(metadata_storage_.get(), |
127 blocking_task_runner_)); | 140 blocking_task_runner_)); |
128 | 141 |
129 FileError error = FILE_ERROR_FAILED; | 142 FileError error = FILE_ERROR_FAILED; |
130 base::PostTaskAndReplyWithResult( | 143 base::PostTaskAndReplyWithResult( |
131 blocking_task_runner_, | 144 blocking_task_runner_, |
132 FROM_HERE, | 145 FROM_HERE, |
133 base::Bind(&ResourceMetadata::Initialize, | 146 base::Bind(&ResourceMetadata::Initialize, |
134 base::Unretained(resource_metadata_.get())), | 147 base::Unretained(resource_metadata_.get())), |
135 google_apis::test_util::CreateCopyResultCallback(&error)); | 148 google_apis::test_util::CreateCopyResultCallback(&error)); |
136 google_apis::test_util::RunBlockingPoolTask(); | 149 google_apis::test_util::RunBlockingPoolTask(); |
137 ASSERT_EQ(FILE_ERROR_OK, error); | 150 ASSERT_EQ(FILE_ERROR_OK, error); |
138 | 151 |
139 blocking_task_runner_->PostTask( | 152 blocking_task_runner_->PostTask( |
140 FROM_HERE, | 153 FROM_HERE, |
141 base::Bind(&SetUpEntries, | 154 base::Bind(&SetUpEntries, |
142 base::Unretained(resource_metadata_.get()))); | 155 base::Unretained(resource_metadata_.get()))); |
143 google_apis::test_util::RunBlockingPoolTask(); | 156 google_apis::test_util::RunBlockingPoolTask(); |
144 } | 157 } |
145 | 158 |
146 virtual void TearDown() OVERRIDE { | 159 virtual void TearDown() OVERRIDE { |
| 160 metadata_storage_.reset(); |
147 resource_metadata_.reset(); | 161 resource_metadata_.reset(); |
148 base::ThreadRestrictions::SetIOAllowed(true); | 162 base::ThreadRestrictions::SetIOAllowed(true); |
149 } | 163 } |
150 | 164 |
151 // Gets the resource entry by path synchronously. Returns NULL on failure. | 165 // Gets the resource entry by path synchronously. Returns NULL on failure. |
152 scoped_ptr<ResourceEntry> GetResourceEntryByPathSync( | 166 scoped_ptr<ResourceEntry> GetResourceEntryByPathSync( |
153 const base::FilePath& file_path) { | 167 const base::FilePath& file_path) { |
154 FileError error = FILE_ERROR_OK; | 168 FileError error = FILE_ERROR_OK; |
155 scoped_ptr<ResourceEntry> entry; | 169 scoped_ptr<ResourceEntry> entry; |
156 resource_metadata_->GetResourceEntryByPathOnUIThread( | 170 resource_metadata_->GetResourceEntryByPathOnUIThread( |
(...skipping 11 matching lines...) Expand all Loading... |
168 FileError error = FILE_ERROR_OK; | 182 FileError error = FILE_ERROR_OK; |
169 scoped_ptr<ResourceEntryVector> entries; | 183 scoped_ptr<ResourceEntryVector> entries; |
170 resource_metadata_->ReadDirectoryByPathOnUIThread( | 184 resource_metadata_->ReadDirectoryByPathOnUIThread( |
171 directory_path, | 185 directory_path, |
172 google_apis::test_util::CreateCopyResultCallback(&error, &entries)); | 186 google_apis::test_util::CreateCopyResultCallback(&error, &entries)); |
173 google_apis::test_util::RunBlockingPoolTask(); | 187 google_apis::test_util::RunBlockingPoolTask(); |
174 EXPECT_TRUE(error == FILE_ERROR_OK || !entries); | 188 EXPECT_TRUE(error == FILE_ERROR_OK || !entries); |
175 return entries.Pass(); | 189 return entries.Pass(); |
176 } | 190 } |
177 | 191 |
| 192 content::TestBrowserThreadBundle thread_bundle_; |
178 base::ScopedTempDir temp_dir_; | 193 base::ScopedTempDir temp_dir_; |
179 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; | 194 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; |
| 195 scoped_ptr<ResourceMetadataStorage, test_util::DestroyHelperForTests> |
| 196 metadata_storage_; |
180 scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests> | 197 scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests> |
181 resource_metadata_; | 198 resource_metadata_; |
182 | |
183 private: | |
184 content::TestBrowserThreadBundle thread_bundle_; | |
185 }; | 199 }; |
186 | 200 |
187 TEST_F(ResourceMetadataTestOnUIThread, LargestChangestamp) { | 201 TEST_F(ResourceMetadataTestOnUIThread, LargestChangestamp) { |
188 scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests> | |
189 resource_metadata(new ResourceMetadata(temp_dir_.path(), | |
190 blocking_task_runner_)); | |
191 FileError error = FILE_ERROR_FAILED; | 202 FileError error = FILE_ERROR_FAILED; |
192 base::PostTaskAndReplyWithResult( | |
193 blocking_task_runner_, | |
194 FROM_HERE, | |
195 base::Bind(&ResourceMetadata::Initialize, | |
196 base::Unretained(resource_metadata.get())), | |
197 google_apis::test_util::CreateCopyResultCallback(&error)); | |
198 google_apis::test_util::RunBlockingPoolTask(); | |
199 ASSERT_EQ(FILE_ERROR_OK, error); | |
200 | |
201 int64 in_changestamp = 123456; | 203 int64 in_changestamp = 123456; |
202 resource_metadata->SetLargestChangestampOnUIThread( | 204 resource_metadata_->SetLargestChangestampOnUIThread( |
203 in_changestamp, | 205 in_changestamp, |
204 google_apis::test_util::CreateCopyResultCallback(&error)); | 206 google_apis::test_util::CreateCopyResultCallback(&error)); |
205 google_apis::test_util::RunBlockingPoolTask(); | 207 google_apis::test_util::RunBlockingPoolTask(); |
206 EXPECT_EQ(FILE_ERROR_OK, error); | 208 EXPECT_EQ(FILE_ERROR_OK, error); |
207 | 209 |
208 int64 out_changestamp = 0; | 210 int64 out_changestamp = 0; |
209 resource_metadata->GetLargestChangestampOnUIThread( | 211 resource_metadata_->GetLargestChangestampOnUIThread( |
210 google_apis::test_util::CreateCopyResultCallback(&out_changestamp)); | 212 google_apis::test_util::CreateCopyResultCallback(&out_changestamp)); |
211 google_apis::test_util::RunBlockingPoolTask(); | 213 google_apis::test_util::RunBlockingPoolTask(); |
212 DCHECK_EQ(in_changestamp, out_changestamp); | 214 DCHECK_EQ(in_changestamp, out_changestamp); |
213 } | 215 } |
214 | 216 |
215 TEST_F(ResourceMetadataTestOnUIThread, GetResourceEntryById_RootDirectory) { | 217 TEST_F(ResourceMetadataTestOnUIThread, GetResourceEntryById_RootDirectory) { |
216 scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests> | 218 // Look up the root directory by its resource ID. |
217 resource_metadata(new ResourceMetadata(temp_dir_.path(), | |
218 blocking_task_runner_)); | |
219 FileError error = FILE_ERROR_FAILED; | 219 FileError error = FILE_ERROR_FAILED; |
220 base::PostTaskAndReplyWithResult( | |
221 blocking_task_runner_, | |
222 FROM_HERE, | |
223 base::Bind(&ResourceMetadata::Initialize, | |
224 base::Unretained(resource_metadata.get())), | |
225 google_apis::test_util::CreateCopyResultCallback(&error)); | |
226 google_apis::test_util::RunBlockingPoolTask(); | |
227 ASSERT_EQ(FILE_ERROR_OK, error); | |
228 | |
229 scoped_ptr<ResourceEntry> entry; | 220 scoped_ptr<ResourceEntry> entry; |
230 | 221 resource_metadata_->GetResourceEntryByIdOnUIThread( |
231 // Look up the root directory by its resource ID. | |
232 resource_metadata->GetResourceEntryByIdOnUIThread( | |
233 util::kDriveGrandRootSpecialResourceId, | 222 util::kDriveGrandRootSpecialResourceId, |
234 google_apis::test_util::CreateCopyResultCallback(&error, &entry)); | 223 google_apis::test_util::CreateCopyResultCallback(&error, &entry)); |
235 google_apis::test_util::RunBlockingPoolTask(); | 224 google_apis::test_util::RunBlockingPoolTask(); |
236 EXPECT_EQ(FILE_ERROR_OK, error); | 225 EXPECT_EQ(FILE_ERROR_OK, error); |
237 ASSERT_TRUE(entry.get()); | 226 ASSERT_TRUE(entry.get()); |
238 EXPECT_EQ("drive", entry->base_name()); | 227 EXPECT_EQ("drive", entry->base_name()); |
239 } | 228 } |
240 | 229 |
241 TEST_F(ResourceMetadataTestOnUIThread, GetResourceEntryById) { | 230 TEST_F(ResourceMetadataTestOnUIThread, GetResourceEntryById) { |
242 // Confirm that an existing file is found. | 231 // Confirm that an existing file is found. |
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
862 ASSERT_TRUE(entries_in_other.get()); | 851 ASSERT_TRUE(entries_in_other.get()); |
863 EXPECT_TRUE(entries_in_other->empty()); | 852 EXPECT_TRUE(entries_in_other->empty()); |
864 } | 853 } |
865 | 854 |
866 // Tests for methods running on the blocking task runner. | 855 // Tests for methods running on the blocking task runner. |
867 class ResourceMetadataTest : public testing::Test { | 856 class ResourceMetadataTest : public testing::Test { |
868 protected: | 857 protected: |
869 virtual void SetUp() OVERRIDE { | 858 virtual void SetUp() OVERRIDE { |
870 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 859 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
871 | 860 |
872 // Use the main thread as the blocking task runner. | 861 metadata_storage_.reset(new ResourceMetadataStorage( |
| 862 temp_dir_.path(), base::MessageLoopProxy::current())); |
| 863 ASSERT_TRUE(metadata_storage_->Initialize()); |
| 864 |
873 resource_metadata_.reset(new ResourceMetadata( | 865 resource_metadata_.reset(new ResourceMetadata( |
874 temp_dir_.path(), base::MessageLoopProxy::current())); | 866 metadata_storage_.get(), base::MessageLoopProxy::current())); |
875 | 867 |
876 ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->Initialize()); | 868 ASSERT_EQ(FILE_ERROR_OK, resource_metadata_->Initialize()); |
877 | 869 |
878 SetUpEntries(resource_metadata_.get()); | 870 SetUpEntries(resource_metadata_.get()); |
879 } | 871 } |
880 | 872 |
881 virtual void TearDown() OVERRIDE { | 873 virtual void TearDown() OVERRIDE { |
882 } | 874 } |
883 | 875 |
884 base::ScopedTempDir temp_dir_; | 876 base::ScopedTempDir temp_dir_; |
885 content::TestBrowserThreadBundle thread_bundle_; | 877 content::TestBrowserThreadBundle thread_bundle_; |
| 878 scoped_ptr<ResourceMetadataStorage, test_util::DestroyHelperForTests> |
| 879 metadata_storage_; |
886 scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests> | 880 scoped_ptr<ResourceMetadata, test_util::DestroyHelperForTests> |
887 resource_metadata_; | 881 resource_metadata_; |
888 }; | 882 }; |
889 | 883 |
890 TEST_F(ResourceMetadataTest, RefreshEntry) { | 884 TEST_F(ResourceMetadataTest, RefreshEntry) { |
891 base::FilePath drive_file_path; | 885 base::FilePath drive_file_path; |
892 ResourceEntry entry; | 886 ResourceEntry entry; |
893 | 887 |
894 // Get file9. | 888 // Get file9. |
895 EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryByPath( | 889 EXPECT_EQ(FILE_ERROR_OK, resource_metadata_->GetResourceEntryByPath( |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1085 else | 1079 else |
1086 ++directory_count; | 1080 ++directory_count; |
1087 } | 1081 } |
1088 | 1082 |
1089 EXPECT_EQ(7, file_count); | 1083 EXPECT_EQ(7, file_count); |
1090 EXPECT_EQ(6, directory_count); | 1084 EXPECT_EQ(6, directory_count); |
1091 } | 1085 } |
1092 | 1086 |
1093 } // namespace internal | 1087 } // namespace internal |
1094 } // namespace drive | 1088 } // namespace drive |
OLD | NEW |