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

Side by Side Diff: chrome/browser/chromeos/drive/change_list_processor_unittest.cc

Issue 343073003: Files.app: Provide detailed change information on onDirectoryChanged event (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 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 (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/change_list_processor.h" 5 #include "chrome/browser/chromeos/drive/change_list_processor.h"
6 6
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/message_loop/message_loop_proxy.h" 8 #include "base/message_loop/message_loop_proxy.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/chromeos/drive/drive.pb.h" 10 #include "chrome/browser/chromeos/drive/drive.pb.h"
11 #include "chrome/browser/chromeos/drive/fake_free_disk_space_getter.h" 11 #include "chrome/browser/chromeos/drive/fake_free_disk_space_getter.h"
12 #include "chrome/browser/chromeos/drive/file_cache.h" 12 #include "chrome/browser/chromeos/drive/file_cache.h"
13 #include "chrome/browser/chromeos/drive/file_change.h"
13 #include "chrome/browser/chromeos/drive/file_system_util.h" 14 #include "chrome/browser/chromeos/drive/file_system_util.h"
14 #include "chrome/browser/chromeos/drive/resource_metadata.h" 15 #include "chrome/browser/chromeos/drive/resource_metadata.h"
15 #include "chrome/browser/chromeos/drive/test_util.h" 16 #include "chrome/browser/chromeos/drive/test_util.h"
16 #include "content/public/test/test_browser_thread_bundle.h" 17 #include "content/public/test/test_browser_thread_bundle.h"
17 #include "google_apis/drive/drive_api_parser.h" 18 #include "google_apis/drive/drive_api_parser.h"
18 #include "google_apis/drive/gdata_wapi_parser.h" 19 #include "google_apis/drive/gdata_wapi_parser.h"
19 #include "google_apis/drive/test_util.h" 20 #include "google_apis/drive/test_util.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 22
22 namespace drive { 23 namespace drive {
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 126
126 ChangeListProcessor processor(metadata_.get()); 127 ChangeListProcessor processor(metadata_.get());
127 return processor.Apply(about_resource.Pass(), 128 return processor.Apply(about_resource.Pass(),
128 changes.Pass(), 129 changes.Pass(),
129 false /* is_delta_update */); 130 false /* is_delta_update */);
130 } 131 }
131 132
132 // Applies the |changes| to |metadata_| as a delta update. Delta changelists 133 // Applies the |changes| to |metadata_| as a delta update. Delta changelists
133 // should contain their changestamp in themselves. 134 // should contain their changestamp in themselves.
134 FileError ApplyChangeList(ScopedVector<ChangeList> changes, 135 FileError ApplyChangeList(ScopedVector<ChangeList> changes,
135 std::set<base::FilePath>* changed_dirs) { 136 FileChange* changed_files) {
136 scoped_ptr<google_apis::AboutResource> about_resource( 137 scoped_ptr<google_apis::AboutResource> about_resource(
137 new google_apis::AboutResource); 138 new google_apis::AboutResource);
138 about_resource->set_largest_change_id(kBaseResourceListChangestamp); 139 about_resource->set_largest_change_id(kBaseResourceListChangestamp);
139 about_resource->set_root_folder_id(kRootId); 140 about_resource->set_root_folder_id(kRootId);
140 141
141 ChangeListProcessor processor(metadata_.get()); 142 ChangeListProcessor processor(metadata_.get());
142 FileError error = processor.Apply(about_resource.Pass(), 143 FileError error = processor.Apply(about_resource.Pass(),
143 changes.Pass(), 144 changes.Pass(),
144 true /* is_delta_update */); 145 true /* is_delta_update */);
145 *changed_dirs = processor.changed_dirs(); 146 *changed_files = processor.changed_files();
146 return error; 147 return error;
147 } 148 }
148 149
149 // Gets the resource entry for the path from |metadata_| synchronously. 150 // Gets the resource entry for the path from |metadata_| synchronously.
150 // Returns null if the entry does not exist. 151 // Returns null if the entry does not exist.
151 scoped_ptr<ResourceEntry> GetResourceEntry(const std::string& path) { 152 scoped_ptr<ResourceEntry> GetResourceEntry(const std::string& path) {
152 scoped_ptr<ResourceEntry> entry(new ResourceEntry); 153 scoped_ptr<ResourceEntry> entry(new ResourceEntry);
153 FileError error = metadata_->GetResourceEntryByPath( 154 FileError error = metadata_->GetResourceEntryByPath(
154 base::FilePath::FromUTF8Unsafe(path), entry.get()); 155 base::FilePath::FromUTF8Unsafe(path), entry.get());
155 if (error != FILE_ERROR_OK) 156 if (error != FILE_ERROR_OK)
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 new_file.set_resource_id("document:file_added_in_new_dir_id"); 229 new_file.set_resource_id("document:file_added_in_new_dir_id");
229 new_file.set_title("File in new dir.txt"); 230 new_file.set_title("File in new dir.txt");
230 change_lists[0]->mutable_entries()->push_back(new_file); 231 change_lists[0]->mutable_entries()->push_back(new_file);
231 change_lists[0]->mutable_parent_resource_ids()->push_back( 232 change_lists[0]->mutable_parent_resource_ids()->push_back(
232 new_folder.resource_id()); 233 new_folder.resource_id());
233 234
234 change_lists[0]->set_largest_changestamp(16730); 235 change_lists[0]->set_largest_changestamp(16730);
235 236
236 // Apply the changelist and check the effect. 237 // Apply the changelist and check the effect.
237 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); 238 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
238 std::set<base::FilePath> changed_dirs; 239
239 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 240 FileChange changed_files;
241 EXPECT_EQ(FILE_ERROR_OK,
242 ApplyChangeList(change_lists.Pass(), &changed_files));
240 243
241 int64 changestamp = 0; 244 int64 changestamp = 0;
242 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); 245 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp));
243 EXPECT_EQ(16730, changestamp); 246 EXPECT_EQ(16730, changestamp);
244 EXPECT_TRUE(GetResourceEntry("drive/root/New Directory")); 247 EXPECT_TRUE(GetResourceEntry("drive/root/New Directory"));
245 EXPECT_TRUE(GetResourceEntry( 248 EXPECT_TRUE(GetResourceEntry(
246 "drive/root/New Directory/File in new dir.txt")); 249 "drive/root/New Directory/File in new dir.txt"));
247 250
248 EXPECT_EQ(2U, changed_dirs.size()); 251 EXPECT_EQ(2U, changed_files.size());
249 EXPECT_TRUE(changed_dirs.count( 252 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe(
250 base::FilePath::FromUTF8Unsafe("drive/root"))); 253 "drive/root/New Directory/File in new dir.txt")));
251 EXPECT_TRUE(changed_dirs.count( 254 EXPECT_TRUE(changed_files.count(
252 base::FilePath::FromUTF8Unsafe("drive/root/New Directory"))); 255 base::FilePath::FromUTF8Unsafe("drive/root/New Directory")));
253 } 256 }
254 257
255 TEST_F(ChangeListProcessorTest, DeltaDirMovedFromRootToDirectory) { 258 TEST_F(ChangeListProcessorTest, DeltaDirMovedFromRootToDirectory) {
256 ScopedVector<ChangeList> change_lists; 259 ScopedVector<ChangeList> change_lists;
257 change_lists.push_back(new ChangeList); 260 change_lists.push_back(new ChangeList);
258 261
259 ResourceEntry entry; 262 ResourceEntry entry;
260 entry.set_resource_id("folder:1_folder_resource_id"); 263 entry.set_resource_id("folder:1_folder_resource_id");
261 entry.set_title("Directory 1"); 264 entry.set_title("Directory 1");
262 entry.mutable_file_info()->set_is_directory(true); 265 entry.mutable_file_info()->set_is_directory(true);
263 change_lists[0]->mutable_entries()->push_back(entry); 266 change_lists[0]->mutable_entries()->push_back(entry);
264 change_lists[0]->mutable_parent_resource_ids()->push_back( 267 change_lists[0]->mutable_parent_resource_ids()->push_back(
265 "folder:sub_dir_folder_2_self_link"); 268 "folder:sub_dir_folder_2_self_link");
266 269
267 change_lists[0]->set_largest_changestamp(16809); 270 change_lists[0]->set_largest_changestamp(16809);
268 271
269 // Apply the changelist and check the effect. 272 // Apply the changelist and check the effect.
270 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); 273 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
271 std::set<base::FilePath> changed_dirs; 274
272 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 275 FileChange changed_files;
276 EXPECT_EQ(FILE_ERROR_OK,
277 ApplyChangeList(change_lists.Pass(), &changed_files));
273 278
274 int64 changestamp = 0; 279 int64 changestamp = 0;
275 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); 280 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp));
276 EXPECT_EQ(16809, changestamp); 281 EXPECT_EQ(16809, changestamp);
277 EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1")); 282 EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1"));
278 EXPECT_TRUE(GetResourceEntry( 283 EXPECT_TRUE(GetResourceEntry(
279 "drive/root/Directory 2 excludeDir-test/Directory 1")); 284 "drive/root/Directory 2 excludeDir-test/Directory 1"));
280 285
281 EXPECT_EQ(4U, changed_dirs.size()); 286 EXPECT_EQ(2U, changed_files.size());
282 EXPECT_TRUE(changed_dirs.count( 287 EXPECT_TRUE(changed_files.CountDirectory(
283 base::FilePath::FromUTF8Unsafe("drive/root"))); 288 base::FilePath::FromUTF8Unsafe("drive/root")));
284 EXPECT_TRUE(changed_dirs.count( 289 EXPECT_TRUE(changed_files.count(
285 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); 290 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1")));
286 EXPECT_TRUE(changed_dirs.count( 291 EXPECT_TRUE(changed_files.CountDirectory(base::FilePath::FromUTF8Unsafe(
287 base::FilePath::FromUTF8Unsafe( 292 "drive/root/Directory 2 excludeDir-test")));
288 "drive/root/Directory 2 excludeDir-test"))); 293 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe(
289 EXPECT_TRUE(changed_dirs.count( 294 "drive/root/Directory 2 excludeDir-test/Directory 1")));
290 base::FilePath::FromUTF8Unsafe(
291 "drive/root/Directory 2 excludeDir-test/Directory 1")));
292 } 295 }
293 296
294 TEST_F(ChangeListProcessorTest, DeltaFileMovedFromDirectoryToRoot) { 297 TEST_F(ChangeListProcessorTest, DeltaFileMovedFromDirectoryToRoot) {
295 ScopedVector<ChangeList> change_lists; 298 ScopedVector<ChangeList> change_lists;
296 change_lists.push_back(new ChangeList); 299 change_lists.push_back(new ChangeList);
297 300
298 ResourceEntry entry; 301 ResourceEntry entry;
299 entry.set_resource_id("file:subdirectory_file_1_id"); 302 entry.set_resource_id("file:subdirectory_file_1_id");
300 entry.set_title("SubDirectory File 1.txt"); 303 entry.set_title("SubDirectory File 1.txt");
301 change_lists[0]->mutable_entries()->push_back(entry); 304 change_lists[0]->mutable_entries()->push_back(entry);
302 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); 305 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
303 306
304 change_lists[0]->set_largest_changestamp(16815); 307 change_lists[0]->set_largest_changestamp(16815);
305 308
306 // Apply the changelist and check the effect. 309 // Apply the changelist and check the effect.
307 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); 310 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
308 std::set<base::FilePath> changed_dirs; 311 FileChange changed_files;
309 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 312 EXPECT_EQ(FILE_ERROR_OK,
313 ApplyChangeList(change_lists.Pass(), &changed_files));
310 314
311 int64 changestamp = 0; 315 int64 changestamp = 0;
312 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); 316 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp));
313 EXPECT_EQ(16815, changestamp); 317 EXPECT_EQ(16815, changestamp);
314 EXPECT_FALSE(GetResourceEntry( 318 EXPECT_FALSE(GetResourceEntry(
315 "drive/root/Directory 1/SubDirectory File 1.txt")); 319 "drive/root/Directory 1/SubDirectory File 1.txt"));
316 EXPECT_TRUE(GetResourceEntry("drive/root/SubDirectory File 1.txt")); 320 EXPECT_TRUE(GetResourceEntry("drive/root/SubDirectory File 1.txt"));
317 321
318 EXPECT_EQ(2U, changed_dirs.size()); 322 EXPECT_EQ(2U, changed_files.size());
319 EXPECT_TRUE(changed_dirs.count( 323 EXPECT_TRUE(changed_files.count(
320 base::FilePath::FromUTF8Unsafe("drive/root"))); 324 base::FilePath::FromUTF8Unsafe("drive/root/SubDirectory File 1.txt")));
321 EXPECT_TRUE(changed_dirs.count( 325 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe(
322 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); 326 "drive/root/Directory 1/SubDirectory File 1.txt")));
323 } 327 }
324 328
325 TEST_F(ChangeListProcessorTest, DeltaFileRenamedInDirectory) { 329 TEST_F(ChangeListProcessorTest, DeltaFileRenamedInDirectory) {
326 ScopedVector<ChangeList> change_lists; 330 ScopedVector<ChangeList> change_lists;
327 change_lists.push_back(new ChangeList); 331 change_lists.push_back(new ChangeList);
328 332
329 ResourceEntry entry; 333 ResourceEntry entry;
330 entry.set_resource_id("file:subdirectory_file_1_id"); 334 entry.set_resource_id("file:subdirectory_file_1_id");
331 entry.set_title("New SubDirectory File 1.txt"); 335 entry.set_title("New SubDirectory File 1.txt");
332 change_lists[0]->mutable_entries()->push_back(entry); 336 change_lists[0]->mutable_entries()->push_back(entry);
333 change_lists[0]->mutable_parent_resource_ids()->push_back( 337 change_lists[0]->mutable_parent_resource_ids()->push_back(
334 "folder:1_folder_resource_id"); 338 "folder:1_folder_resource_id");
335 339
336 change_lists[0]->set_largest_changestamp(16767); 340 change_lists[0]->set_largest_changestamp(16767);
337 341
338 // Apply the changelist and check the effect. 342 // Apply the changelist and check the effect.
339 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); 343 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
340 std::set<base::FilePath> changed_dirs; 344 FileChange changed_files;
341 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 345 EXPECT_EQ(FILE_ERROR_OK,
346 ApplyChangeList(change_lists.Pass(), &changed_files));
342 347
343 int64 changestamp = 0; 348 int64 changestamp = 0;
344 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); 349 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp));
345 EXPECT_EQ(16767, changestamp); 350 EXPECT_EQ(16767, changestamp);
346 EXPECT_FALSE(GetResourceEntry( 351 EXPECT_FALSE(GetResourceEntry(
347 "drive/root/Directory 1/SubDirectory File 1.txt")); 352 "drive/root/Directory 1/SubDirectory File 1.txt"));
348 EXPECT_TRUE(GetResourceEntry( 353 EXPECT_TRUE(GetResourceEntry(
349 "drive/root/Directory 1/New SubDirectory File 1.txt")); 354 "drive/root/Directory 1/New SubDirectory File 1.txt"));
350 355
351 EXPECT_EQ(1U, changed_dirs.size()); 356 EXPECT_EQ(2U, changed_files.size());
352 EXPECT_TRUE(changed_dirs.count( 357 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe(
353 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); 358 "drive/root/Directory 1/SubDirectory File 1.txt")));
359 EXPECT_TRUE(changed_files.count(base::FilePath::FromUTF8Unsafe(
360 "drive/root/Directory 1/New SubDirectory File 1.txt")));
354 } 361 }
355 362
356 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileInRoot) { 363 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileInRoot) {
357 // Create ChangeList to add a file. 364 // Create ChangeList to add a file.
358 ScopedVector<ChangeList> change_lists; 365 ScopedVector<ChangeList> change_lists;
359 change_lists.push_back(new ChangeList); 366 change_lists.push_back(new ChangeList);
360 367
361 ResourceEntry entry; 368 ResourceEntry entry;
362 entry.set_resource_id("document:added_in_root_id"); 369 entry.set_resource_id("document:added_in_root_id");
363 entry.set_title("Added file.txt"); 370 entry.set_title("Added file.txt");
364 change_lists[0]->mutable_entries()->push_back(entry); 371 change_lists[0]->mutable_entries()->push_back(entry);
365 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); 372 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
366 373
367 change_lists[0]->set_largest_changestamp(16683); 374 change_lists[0]->set_largest_changestamp(16683);
368 375
369 // Apply. 376 // Apply.
370 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); 377 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
371 std::set<base::FilePath> changed_dirs; 378 FileChange changed_files;
372 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 379 EXPECT_EQ(FILE_ERROR_OK,
380 ApplyChangeList(change_lists.Pass(), &changed_files));
381
373 int64 changestamp = 0; 382 int64 changestamp = 0;
374 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); 383 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp));
375 EXPECT_EQ(16683, changestamp); 384 EXPECT_EQ(16683, changestamp);
376 EXPECT_TRUE(GetResourceEntry("drive/root/Added file.txt")); 385 EXPECT_TRUE(GetResourceEntry("drive/root/Added file.txt"));
377 EXPECT_EQ(1U, changed_dirs.size()); 386 EXPECT_EQ(1U, changed_files.size());
378 EXPECT_TRUE(changed_dirs.count( 387 EXPECT_TRUE(changed_files.count(
379 base::FilePath::FromUTF8Unsafe("drive/root"))); 388 base::FilePath::FromUTF8Unsafe("drive/root/Added file.txt")));
380 389
381 // Create ChangeList to delete the file. 390 // Create ChangeList to delete the file.
382 change_lists.push_back(new ChangeList); 391 change_lists.push_back(new ChangeList);
383 392
384 entry.set_deleted(true); 393 entry.set_deleted(true);
385 change_lists[0]->mutable_entries()->push_back(entry); 394 change_lists[0]->mutable_entries()->push_back(entry);
386 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); 395 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
387 396
388 change_lists[0]->set_largest_changestamp(16687); 397 change_lists[0]->set_largest_changestamp(16687);
389 398
390 // Apply. 399 // Apply.
391 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 400 EXPECT_EQ(FILE_ERROR_OK,
401 ApplyChangeList(change_lists.Pass(), &changed_files));
392 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); 402 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp));
393 EXPECT_EQ(16687, changestamp); 403 EXPECT_EQ(16687, changestamp);
394 EXPECT_FALSE(GetResourceEntry("drive/root/Added file.txt")); 404 EXPECT_FALSE(GetResourceEntry("drive/root/Added file.txt"));
395 EXPECT_EQ(1U, changed_dirs.size()); 405 EXPECT_EQ(1U, changed_files.size());
396 EXPECT_TRUE(changed_dirs.count( 406 EXPECT_TRUE(changed_files.count(
397 base::FilePath::FromUTF8Unsafe("drive/root"))); 407 base::FilePath::FromUTF8Unsafe("drive/root/Added file.txt")));
398 } 408 }
399 409
400 410
401 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileFromExistingDirectory) { 411 TEST_F(ChangeListProcessorTest, DeltaAddAndDeleteFileFromExistingDirectory) {
402 // Create ChangeList to add a file. 412 // Create ChangeList to add a file.
403 ScopedVector<ChangeList> change_lists; 413 ScopedVector<ChangeList> change_lists;
404 change_lists.push_back(new ChangeList); 414 change_lists.push_back(new ChangeList);
405 415
406 ResourceEntry entry; 416 ResourceEntry entry;
407 entry.set_resource_id("document:added_in_root_id"); 417 entry.set_resource_id("document:added_in_root_id");
408 entry.set_title("Added file.txt"); 418 entry.set_title("Added file.txt");
409 change_lists[0]->mutable_entries()->push_back(entry); 419 change_lists[0]->mutable_entries()->push_back(entry);
410 change_lists[0]->mutable_parent_resource_ids()->push_back( 420 change_lists[0]->mutable_parent_resource_ids()->push_back(
411 "folder:1_folder_resource_id"); 421 "folder:1_folder_resource_id");
412 422
413 change_lists[0]->set_largest_changestamp(16730); 423 change_lists[0]->set_largest_changestamp(16730);
414 424
415 // Apply. 425 // Apply.
416 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); 426 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
417 std::set<base::FilePath> changed_dirs; 427 FileChange changed_files;
418 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 428 EXPECT_EQ(FILE_ERROR_OK,
429 ApplyChangeList(change_lists.Pass(), &changed_files));
419 int64 changestamp = 0; 430 int64 changestamp = 0;
420 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); 431 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp));
421 EXPECT_EQ(16730, changestamp); 432 EXPECT_EQ(16730, changestamp);
422 EXPECT_TRUE(GetResourceEntry("drive/root/Directory 1/Added file.txt")); 433 EXPECT_TRUE(GetResourceEntry("drive/root/Directory 1/Added file.txt"));
423 434
424 EXPECT_EQ(1U, changed_dirs.size()); 435 EXPECT_EQ(1U, changed_files.size());
425 EXPECT_TRUE(changed_dirs.count( 436 EXPECT_TRUE(changed_files.count(
426 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); 437 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1/Added file.txt")));
427 438
428 // Create ChangeList to delete the file. 439 // Create ChangeList to delete the file.
429 change_lists.push_back(new ChangeList); 440 change_lists.push_back(new ChangeList);
430 441
431 entry.set_deleted(true); 442 entry.set_deleted(true);
432 change_lists[0]->mutable_entries()->push_back(entry); 443 change_lists[0]->mutable_entries()->push_back(entry);
433 change_lists[0]->mutable_parent_resource_ids()->push_back( 444 change_lists[0]->mutable_parent_resource_ids()->push_back(
434 "folder:1_folder_resource_id"); 445 "folder:1_folder_resource_id");
435 446
436 change_lists[0]->set_largest_changestamp(16770); 447 change_lists[0]->set_largest_changestamp(16770);
437 448
438 // Apply. 449 // Apply.
439 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 450 EXPECT_EQ(FILE_ERROR_OK,
451 ApplyChangeList(change_lists.Pass(), &changed_files));
440 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); 452 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp));
441 EXPECT_EQ(16770, changestamp); 453 EXPECT_EQ(16770, changestamp);
442 EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1/Added file.txt")); 454 EXPECT_FALSE(GetResourceEntry("drive/root/Directory 1/Added file.txt"));
443 455
444 EXPECT_EQ(1U, changed_dirs.size()); 456 EXPECT_EQ(1U, changed_files.size());
445 EXPECT_TRUE(changed_dirs.count( 457 EXPECT_TRUE(changed_files.count(
446 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1"))); 458 base::FilePath::FromUTF8Unsafe("drive/root/Directory 1/Added file.txt")));
447 } 459 }
448 460
449 TEST_F(ChangeListProcessorTest, DeltaAddFileToNewButDeletedDirectory) { 461 TEST_F(ChangeListProcessorTest, DeltaAddFileToNewButDeletedDirectory) {
450 // Create a change which contains the following updates: 462 // Create a change which contains the following updates:
451 // 1) A new PDF file is added to a new directory 463 // 1) A new PDF file is added to a new directory
452 // 2) but the new directory is marked "deleted" (i.e. moved to Trash) 464 // 2) but the new directory is marked "deleted" (i.e. moved to Trash)
453 // Hence, the PDF file should be just ignored. 465 // Hence, the PDF file should be just ignored.
454 ScopedVector<ChangeList> change_lists; 466 ScopedVector<ChangeList> change_lists;
455 change_lists.push_back(new ChangeList); 467 change_lists.push_back(new ChangeList);
456 468
(...skipping 10 matching lines...) Expand all
467 directory.set_title("New Directory"); 479 directory.set_title("New Directory");
468 directory.mutable_file_info()->set_is_directory(true); 480 directory.mutable_file_info()->set_is_directory(true);
469 directory.set_deleted(true); 481 directory.set_deleted(true);
470 change_lists[0]->mutable_entries()->push_back(directory); 482 change_lists[0]->mutable_entries()->push_back(directory);
471 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId); 483 change_lists[0]->mutable_parent_resource_ids()->push_back(kRootId);
472 484
473 change_lists[0]->set_largest_changestamp(16730); 485 change_lists[0]->set_largest_changestamp(16730);
474 486
475 // Apply the changelist and check the effect. 487 // Apply the changelist and check the effect.
476 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); 488 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
477 std::set<base::FilePath> changed_dirs; 489 FileChange changed_files;
478 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 490 EXPECT_EQ(FILE_ERROR_OK,
491 ApplyChangeList(change_lists.Pass(), &changed_files));
479 492
480 int64 changestamp = 0; 493 int64 changestamp = 0;
481 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp)); 494 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetLargestChangestamp(&changestamp));
482 EXPECT_EQ(16730, changestamp); 495 EXPECT_EQ(16730, changestamp);
483 EXPECT_FALSE(GetResourceEntry("drive/root/New Directory/new_pdf_file.pdf")); 496 EXPECT_FALSE(GetResourceEntry("drive/root/New Directory/new_pdf_file.pdf"));
484 497
485 EXPECT_TRUE(changed_dirs.empty()); 498 EXPECT_TRUE(changed_files.empty());
486 } 499 }
487 500
488 TEST_F(ChangeListProcessorTest, RefreshDirectory) { 501 TEST_F(ChangeListProcessorTest, RefreshDirectory) {
489 // Prepare metadata. 502 // Prepare metadata.
490 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); 503 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
491 504
492 // Create change list. 505 // Create change list.
493 scoped_ptr<ChangeList> change_list(new ChangeList); 506 scoped_ptr<ChangeList> change_list(new ChangeList);
494 507
495 // Add a new file to the change list. 508 // Add a new file to the change list.
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 change_lists.push_back(new ChangeList); 584 change_lists.push_back(new ChangeList);
572 585
573 // Add a new file with non-existing parent resource id to the change lists. 586 // Add a new file with non-existing parent resource id to the change lists.
574 ResourceEntry new_file; 587 ResourceEntry new_file;
575 new_file.set_title("new_file"); 588 new_file.set_title("new_file");
576 new_file.set_resource_id("new_file_id"); 589 new_file.set_resource_id("new_file_id");
577 change_lists[0]->mutable_entries()->push_back(new_file); 590 change_lists[0]->mutable_entries()->push_back(new_file);
578 change_lists[0]->mutable_parent_resource_ids()->push_back("nonexisting"); 591 change_lists[0]->mutable_parent_resource_ids()->push_back("nonexisting");
579 change_lists[0]->set_largest_changestamp(kBaseResourceListChangestamp + 1); 592 change_lists[0]->set_largest_changestamp(kBaseResourceListChangestamp + 1);
580 593
581 std::set<base::FilePath> changed_dirs; 594 FileChange changed_files;
582 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 595 EXPECT_EQ(FILE_ERROR_OK,
596 ApplyChangeList(change_lists.Pass(), &changed_files));
583 597
584 // "new_file" should be added under drive/other. 598 // "new_file" should be added under drive/other.
585 ResourceEntry entry; 599 ResourceEntry entry;
586 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath( 600 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryByPath(
587 util::GetDriveGrandRootPath().AppendASCII("other/new_file"), &entry)); 601 util::GetDriveGrandRootPath().AppendASCII("other/new_file"), &entry));
588 } 602 }
589 603
590 TEST_F(ChangeListProcessorTest, ModificationDate) { 604 TEST_F(ChangeListProcessorTest, ModificationDate) {
591 // Prepare metadata. 605 // Prepare metadata.
592 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList())); 606 EXPECT_EQ(FILE_ERROR_OK, ApplyFullResourceList(CreateBaseChangeList()));
(...skipping 22 matching lines...) Expand all
615 new_file_local.set_resource_id(new_file_remote.resource_id()); 629 new_file_local.set_resource_id(new_file_remote.resource_id());
616 new_file_local.set_parent_local_id(root.local_id()); 630 new_file_local.set_parent_local_id(root.local_id());
617 new_file_local.set_title("new_file_local"); 631 new_file_local.set_title("new_file_local");
618 new_file_local.set_metadata_edit_state(ResourceEntry::DIRTY); 632 new_file_local.set_metadata_edit_state(ResourceEntry::DIRTY);
619 new_file_local.set_modification_date( 633 new_file_local.set_modification_date(
620 (now + base::TimeDelta::FromSeconds(1)).ToInternalValue()); 634 (now + base::TimeDelta::FromSeconds(1)).ToInternalValue());
621 std::string local_id; 635 std::string local_id;
622 EXPECT_EQ(FILE_ERROR_OK, metadata_->AddEntry(new_file_local, &local_id)); 636 EXPECT_EQ(FILE_ERROR_OK, metadata_->AddEntry(new_file_local, &local_id));
623 637
624 // Apply the change. 638 // Apply the change.
625 std::set<base::FilePath> changed_dirs; 639 FileChange changed_files;
626 EXPECT_EQ(FILE_ERROR_OK, ApplyChangeList(change_lists.Pass(), &changed_dirs)); 640 EXPECT_EQ(FILE_ERROR_OK,
641 ApplyChangeList(change_lists.Pass(), &changed_files));
627 642
628 // The change is rejected due to the old modification date. 643 // The change is rejected due to the old modification date.
629 ResourceEntry entry; 644 ResourceEntry entry;
630 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById(local_id, &entry)); 645 EXPECT_EQ(FILE_ERROR_OK, metadata_->GetResourceEntryById(local_id, &entry));
631 EXPECT_EQ(new_file_local.title(), entry.title()); 646 EXPECT_EQ(new_file_local.title(), entry.title());
632 } 647 }
633 648
634 } // namespace internal 649 } // namespace internal
635 } // namespace drive 650 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/change_list_processor.cc ('k') | chrome/browser/chromeos/drive/directory_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698