Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(799)

Side by Side Diff: chrome/browser/sync_file_system/local/syncable_file_system_unittest.cc

Issue 145303002: Convert Media Galleries to use base::File (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "base/stl_util.h" 5 #include "base/stl_util.h"
6 #include "chrome/browser/sync_file_system/local/canned_syncable_file_system.h" 6 #include "chrome/browser/sync_file_system/local/canned_syncable_file_system.h"
7 #include "chrome/browser/sync_file_system/local/local_file_change_tracker.h" 7 #include "chrome/browser/sync_file_system/local/local_file_change_tracker.h"
8 #include "chrome/browser/sync_file_system/local/local_file_sync_context.h" 8 #include "chrome/browser/sync_file_system/local/local_file_sync_context.h"
9 #include "chrome/browser/sync_file_system/local/sync_file_system_backend.h" 9 #include "chrome/browser/sync_file_system/local/sync_file_system_backend.h"
10 #include "chrome/browser/sync_file_system/syncable_file_system_util.h" 10 #include "chrome/browser/sync_file_system/syncable_file_system_util.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 scoped_refptr<LocalFileSyncContext> sync_context_; 104 scoped_refptr<LocalFileSyncContext> sync_context_;
105 105
106 base::WeakPtrFactory<SyncableFileSystemTest> weak_factory_; 106 base::WeakPtrFactory<SyncableFileSystemTest> weak_factory_;
107 107
108 DISALLOW_COPY_AND_ASSIGN(SyncableFileSystemTest); 108 DISALLOW_COPY_AND_ASSIGN(SyncableFileSystemTest);
109 }; 109 };
110 110
111 // Brief combined testing. Just see if all the sandbox feature works. 111 // Brief combined testing. Just see if all the sandbox feature works.
112 TEST_F(SyncableFileSystemTest, SyncableLocalSandboxCombined) { 112 TEST_F(SyncableFileSystemTest, SyncableLocalSandboxCombined) {
113 // Opens a syncable file system. 113 // Opens a syncable file system.
114 EXPECT_EQ(base::PLATFORM_FILE_OK, 114 EXPECT_EQ(base::File::FILE_OK,
115 file_system_.OpenFileSystem()); 115 file_system_.OpenFileSystem());
116 116
117 // Do some operations. 117 // Do some operations.
118 EXPECT_EQ(base::PLATFORM_FILE_OK, 118 EXPECT_EQ(base::File::FILE_OK,
119 file_system_.CreateDirectory(URL("dir"))); 119 file_system_.CreateDirectory(URL("dir")));
120 EXPECT_EQ(base::PLATFORM_FILE_OK, 120 EXPECT_EQ(base::File::FILE_OK,
121 file_system_.CreateFile(URL("dir/foo"))); 121 file_system_.CreateFile(URL("dir/foo")));
122 122
123 const int64 kOriginalQuota = QuotaManager::kSyncableStorageDefaultHostQuota; 123 const int64 kOriginalQuota = QuotaManager::kSyncableStorageDefaultHostQuota;
124 124
125 const int64 kQuota = 12345 * 1024; 125 const int64 kQuota = 12345 * 1024;
126 QuotaManager::kSyncableStorageDefaultHostQuota = kQuota; 126 QuotaManager::kSyncableStorageDefaultHostQuota = kQuota;
127 int64 usage, quota; 127 int64 usage, quota;
128 EXPECT_EQ(quota::kQuotaStatusOk, 128 EXPECT_EQ(quota::kQuotaStatusOk,
129 file_system_.GetUsageAndQuota(&usage, &quota)); 129 file_system_.GetUsageAndQuota(&usage, &quota));
130 130
131 // Returned quota must be what we overrode. Usage must be greater than 0 131 // Returned quota must be what we overrode. Usage must be greater than 0
132 // as creating a file or directory consumes some space. 132 // as creating a file or directory consumes some space.
133 EXPECT_EQ(kQuota, quota); 133 EXPECT_EQ(kQuota, quota);
134 EXPECT_GT(usage, 0); 134 EXPECT_GT(usage, 0);
135 135
136 // Truncate to extend an existing file and see if the usage reflects it. 136 // Truncate to extend an existing file and see if the usage reflects it.
137 const int64 kFileSizeToExtend = 333; 137 const int64 kFileSizeToExtend = 333;
138 EXPECT_EQ(base::PLATFORM_FILE_OK, 138 EXPECT_EQ(base::File::FILE_OK,
139 file_system_.CreateFile(URL("dir/foo"))); 139 file_system_.CreateFile(URL("dir/foo")));
140 140
141 EXPECT_EQ(base::PLATFORM_FILE_OK, 141 EXPECT_EQ(base::File::FILE_OK,
142 file_system_.TruncateFile(URL("dir/foo"), kFileSizeToExtend)); 142 file_system_.TruncateFile(URL("dir/foo"), kFileSizeToExtend));
143 143
144 int64 new_usage; 144 int64 new_usage;
145 EXPECT_EQ(quota::kQuotaStatusOk, 145 EXPECT_EQ(quota::kQuotaStatusOk,
146 file_system_.GetUsageAndQuota(&new_usage, &quota)); 146 file_system_.GetUsageAndQuota(&new_usage, &quota));
147 EXPECT_EQ(kFileSizeToExtend, new_usage - usage); 147 EXPECT_EQ(kFileSizeToExtend, new_usage - usage);
148 148
149 // Shrink the quota to the current usage, try to extend the file further 149 // Shrink the quota to the current usage, try to extend the file further
150 // and see if it fails. 150 // and see if it fails.
151 QuotaManager::kSyncableStorageDefaultHostQuota = new_usage; 151 QuotaManager::kSyncableStorageDefaultHostQuota = new_usage;
152 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NO_SPACE, 152 EXPECT_EQ(base::File::FILE_ERROR_NO_SPACE,
153 file_system_.TruncateFile(URL("dir/foo"), kFileSizeToExtend + 1)); 153 file_system_.TruncateFile(URL("dir/foo"), kFileSizeToExtend + 1));
154 154
155 usage = new_usage; 155 usage = new_usage;
156 EXPECT_EQ(quota::kQuotaStatusOk, 156 EXPECT_EQ(quota::kQuotaStatusOk,
157 file_system_.GetUsageAndQuota(&new_usage, &quota)); 157 file_system_.GetUsageAndQuota(&new_usage, &quota));
158 EXPECT_EQ(usage, new_usage); 158 EXPECT_EQ(usage, new_usage);
159 159
160 // Deletes the file system. 160 // Deletes the file system.
161 EXPECT_EQ(base::PLATFORM_FILE_OK, 161 EXPECT_EQ(base::File::FILE_OK,
162 file_system_.DeleteFileSystem()); 162 file_system_.DeleteFileSystem());
163 163
164 // Now the usage must be zero. 164 // Now the usage must be zero.
165 EXPECT_EQ(quota::kQuotaStatusOk, 165 EXPECT_EQ(quota::kQuotaStatusOk,
166 file_system_.GetUsageAndQuota(&usage, &quota)); 166 file_system_.GetUsageAndQuota(&usage, &quota));
167 EXPECT_EQ(0, usage); 167 EXPECT_EQ(0, usage);
168 168
169 // Restore the system default quota. 169 // Restore the system default quota.
170 QuotaManager::kSyncableStorageDefaultHostQuota = kOriginalQuota; 170 QuotaManager::kSyncableStorageDefaultHostQuota = kOriginalQuota;
171 } 171 }
172 172
173 // Combined testing with LocalFileChangeTracker. 173 // Combined testing with LocalFileChangeTracker.
174 TEST_F(SyncableFileSystemTest, ChangeTrackerSimple) { 174 TEST_F(SyncableFileSystemTest, ChangeTrackerSimple) {
175 EXPECT_EQ(base::PLATFORM_FILE_OK, 175 EXPECT_EQ(base::File::FILE_OK,
176 file_system_.OpenFileSystem()); 176 file_system_.OpenFileSystem());
177 177
178 const char kPath0[] = "dir a"; 178 const char kPath0[] = "dir a";
179 const char kPath1[] = "dir a/dir"; // child of kPath0 179 const char kPath1[] = "dir a/dir"; // child of kPath0
180 const char kPath2[] = "dir a/file"; // child of kPath0 180 const char kPath2[] = "dir a/file"; // child of kPath0
181 const char kPath3[] = "dir b"; 181 const char kPath3[] = "dir b";
182 182
183 // Do some operations. 183 // Do some operations.
184 EXPECT_EQ(base::PLATFORM_FILE_OK, 184 EXPECT_EQ(base::File::FILE_OK,
185 file_system_.CreateDirectory(URL(kPath0))); // Creates a dir. 185 file_system_.CreateDirectory(URL(kPath0))); // Creates a dir.
186 EXPECT_EQ(base::PLATFORM_FILE_OK, 186 EXPECT_EQ(base::File::FILE_OK,
187 file_system_.CreateDirectory(URL(kPath1))); // Creates another. 187 file_system_.CreateDirectory(URL(kPath1))); // Creates another.
188 EXPECT_EQ(base::PLATFORM_FILE_OK, 188 EXPECT_EQ(base::File::FILE_OK,
189 file_system_.CreateFile(URL(kPath2))); // Creates a file. 189 file_system_.CreateFile(URL(kPath2))); // Creates a file.
190 EXPECT_EQ(base::PLATFORM_FILE_OK, 190 EXPECT_EQ(base::File::FILE_OK,
191 file_system_.TruncateFile(URL(kPath2), 1)); // Modifies the file. 191 file_system_.TruncateFile(URL(kPath2), 1)); // Modifies the file.
192 EXPECT_EQ(base::PLATFORM_FILE_OK, 192 EXPECT_EQ(base::File::FILE_OK,
193 file_system_.TruncateFile(URL(kPath2), 2)); // Modifies it again. 193 file_system_.TruncateFile(URL(kPath2), 2)); // Modifies it again.
194 194
195 FileSystemURLSet urls; 195 FileSystemURLSet urls;
196 file_system_.GetChangedURLsInTracker(&urls); 196 file_system_.GetChangedURLsInTracker(&urls);
197 197
198 EXPECT_EQ(3U, urls.size()); 198 EXPECT_EQ(3U, urls.size());
199 EXPECT_TRUE(ContainsKey(urls, URL(kPath0))); 199 EXPECT_TRUE(ContainsKey(urls, URL(kPath0)));
200 EXPECT_TRUE(ContainsKey(urls, URL(kPath1))); 200 EXPECT_TRUE(ContainsKey(urls, URL(kPath1)));
201 EXPECT_TRUE(ContainsKey(urls, URL(kPath2))); 201 EXPECT_TRUE(ContainsKey(urls, URL(kPath2)));
202 202
203 VerifyAndClearChange(URL(kPath0), 203 VerifyAndClearChange(URL(kPath0),
204 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 204 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
205 sync_file_system::SYNC_FILE_TYPE_DIRECTORY)); 205 sync_file_system::SYNC_FILE_TYPE_DIRECTORY));
206 VerifyAndClearChange(URL(kPath1), 206 VerifyAndClearChange(URL(kPath1),
207 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 207 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
208 sync_file_system::SYNC_FILE_TYPE_DIRECTORY)); 208 sync_file_system::SYNC_FILE_TYPE_DIRECTORY));
209 VerifyAndClearChange(URL(kPath2), 209 VerifyAndClearChange(URL(kPath2),
210 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, 210 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE,
211 sync_file_system::SYNC_FILE_TYPE_FILE)); 211 sync_file_system::SYNC_FILE_TYPE_FILE));
212 212
213 // Creates and removes a same directory. 213 // Creates and removes a same directory.
214 EXPECT_EQ(base::PLATFORM_FILE_OK, 214 EXPECT_EQ(base::File::FILE_OK,
215 file_system_.CreateDirectory(URL(kPath3))); 215 file_system_.CreateDirectory(URL(kPath3)));
216 EXPECT_EQ(base::PLATFORM_FILE_OK, 216 EXPECT_EQ(base::File::FILE_OK,
217 file_system_.Remove(URL(kPath3), false /* recursive */)); 217 file_system_.Remove(URL(kPath3), false /* recursive */));
218 218
219 // The changes will be offset. 219 // The changes will be offset.
220 urls.clear(); 220 urls.clear();
221 file_system_.GetChangedURLsInTracker(&urls); 221 file_system_.GetChangedURLsInTracker(&urls);
222 EXPECT_TRUE(urls.empty()); 222 EXPECT_TRUE(urls.empty());
223 223
224 // Recursively removes the kPath0 directory. 224 // Recursively removes the kPath0 directory.
225 EXPECT_EQ(base::PLATFORM_FILE_OK, 225 EXPECT_EQ(base::File::FILE_OK,
226 file_system_.Remove(URL(kPath0), true /* recursive */)); 226 file_system_.Remove(URL(kPath0), true /* recursive */));
227 227
228 urls.clear(); 228 urls.clear();
229 file_system_.GetChangedURLsInTracker(&urls); 229 file_system_.GetChangedURLsInTracker(&urls);
230 230
231 // kPath0 and its all chidren (kPath1 and kPath2) must have been deleted. 231 // kPath0 and its all chidren (kPath1 and kPath2) must have been deleted.
232 EXPECT_EQ(3U, urls.size()); 232 EXPECT_EQ(3U, urls.size());
233 EXPECT_TRUE(ContainsKey(urls, URL(kPath0))); 233 EXPECT_TRUE(ContainsKey(urls, URL(kPath0)));
234 EXPECT_TRUE(ContainsKey(urls, URL(kPath1))); 234 EXPECT_TRUE(ContainsKey(urls, URL(kPath1)));
235 EXPECT_TRUE(ContainsKey(urls, URL(kPath2))); 235 EXPECT_TRUE(ContainsKey(urls, URL(kPath2)));
236 236
237 VerifyAndClearChange(URL(kPath0), 237 VerifyAndClearChange(URL(kPath0),
238 FileChange(FileChange::FILE_CHANGE_DELETE, 238 FileChange(FileChange::FILE_CHANGE_DELETE,
239 sync_file_system::SYNC_FILE_TYPE_DIRECTORY)); 239 sync_file_system::SYNC_FILE_TYPE_DIRECTORY));
240 VerifyAndClearChange(URL(kPath1), 240 VerifyAndClearChange(URL(kPath1),
241 FileChange(FileChange::FILE_CHANGE_DELETE, 241 FileChange(FileChange::FILE_CHANGE_DELETE,
242 sync_file_system::SYNC_FILE_TYPE_DIRECTORY)); 242 sync_file_system::SYNC_FILE_TYPE_DIRECTORY));
243 VerifyAndClearChange(URL(kPath2), 243 VerifyAndClearChange(URL(kPath2),
244 FileChange(FileChange::FILE_CHANGE_DELETE, 244 FileChange(FileChange::FILE_CHANGE_DELETE,
245 sync_file_system::SYNC_FILE_TYPE_FILE)); 245 sync_file_system::SYNC_FILE_TYPE_FILE));
246 } 246 }
247 247
248 // Make sure directory operation is disabled (when it's configured so). 248 // Make sure directory operation is disabled (when it's configured so).
249 TEST_F(SyncableFileSystemTest, DisableDirectoryOperations) { 249 TEST_F(SyncableFileSystemTest, DisableDirectoryOperations) {
250 bool was_enabled = IsSyncFSDirectoryOperationEnabled(); 250 bool was_enabled = IsSyncFSDirectoryOperationEnabled();
251 SetEnableSyncFSDirectoryOperation(false); 251 SetEnableSyncFSDirectoryOperation(false);
252 EXPECT_EQ(base::PLATFORM_FILE_OK, 252 EXPECT_EQ(base::File::FILE_OK,
253 file_system_.OpenFileSystem()); 253 file_system_.OpenFileSystem());
254 254
255 // Try some directory operations (which should fail). 255 // Try some directory operations (which should fail).
256 EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION, 256 EXPECT_EQ(base::File::FILE_ERROR_INVALID_OPERATION,
257 file_system_.CreateDirectory(URL("dir"))); 257 file_system_.CreateDirectory(URL("dir")));
258 258
259 // Set up another (non-syncable) local file system. 259 // Set up another (non-syncable) local file system.
260 SandboxFileSystemTestHelper other_file_system_( 260 SandboxFileSystemTestHelper other_file_system_(
261 GURL("http://foo.com/"), fileapi::kFileSystemTypeTemporary); 261 GURL("http://foo.com/"), fileapi::kFileSystemTypeTemporary);
262 other_file_system_.SetUp(file_system_.file_system_context()); 262 other_file_system_.SetUp(file_system_.file_system_context());
263 263
264 // Create directory '/a' and file '/a/b' in the other file system. 264 // Create directory '/a' and file '/a/b' in the other file system.
265 const FileSystemURL kSrcDir = other_file_system_.CreateURLFromUTF8("/a"); 265 const FileSystemURL kSrcDir = other_file_system_.CreateURLFromUTF8("/a");
266 const FileSystemURL kSrcChild = other_file_system_.CreateURLFromUTF8("/a/b"); 266 const FileSystemURL kSrcChild = other_file_system_.CreateURLFromUTF8("/a/b");
267 267
268 EXPECT_EQ(base::PLATFORM_FILE_OK, 268 EXPECT_EQ(base::File::FILE_OK,
269 fileapi::AsyncFileTestHelper::CreateDirectory( 269 fileapi::AsyncFileTestHelper::CreateDirectory(
270 other_file_system_.file_system_context(), kSrcDir)); 270 other_file_system_.file_system_context(), kSrcDir));
271 EXPECT_EQ(base::PLATFORM_FILE_OK, 271 EXPECT_EQ(base::File::FILE_OK,
272 fileapi::AsyncFileTestHelper::CreateFile( 272 fileapi::AsyncFileTestHelper::CreateFile(
273 other_file_system_.file_system_context(), kSrcChild)); 273 other_file_system_.file_system_context(), kSrcChild));
274 274
275 // Now try copying the directory into the syncable file system, which should 275 // Now try copying the directory into the syncable file system, which should
276 // fail if directory operation is disabled. (http://crbug.com/161442) 276 // fail if directory operation is disabled. (http://crbug.com/161442)
277 EXPECT_NE(base::PLATFORM_FILE_OK, 277 EXPECT_NE(base::File::FILE_OK,
278 file_system_.Copy(kSrcDir, URL("dest"))); 278 file_system_.Copy(kSrcDir, URL("dest")));
279 279
280 other_file_system_.TearDown(); 280 other_file_system_.TearDown();
281 SetEnableSyncFSDirectoryOperation(was_enabled); 281 SetEnableSyncFSDirectoryOperation(was_enabled);
282 } 282 }
283 283
284 } // namespace sync_file_system 284 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698