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

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

Issue 11106007: drive: Rename 'gdata' namespace to 'drive' in chrome/browser/chromeos/drive (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 2 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 (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/drive_cache.h" 5 #include "chrome/browser/chromeos/drive/drive_cache.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/file_util.h" 10 #include "base/file_util.h"
11 #include "base/message_loop.h" 11 #include "base/message_loop.h"
12 #include "base/path_service.h" 12 #include "base/path_service.h"
13 #include "base/threading/sequenced_worker_pool.h" 13 #include "base/threading/sequenced_worker_pool.h"
14 #include "chrome/browser/chromeos/drive/drive.pb.h" 14 #include "chrome/browser/chromeos/drive/drive.pb.h"
15 #include "chrome/browser/chromeos/drive/drive_file_system.h" 15 #include "chrome/browser/chromeos/drive/drive_file_system.h"
16 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" 16 #include "chrome/browser/chromeos/drive/drive_file_system_util.h"
17 #include "chrome/browser/chromeos/drive/drive_test_util.h" 17 #include "chrome/browser/chromeos/drive/drive_test_util.h"
18 #include "chrome/browser/chromeos/drive/mock_drive_cache_observer.h" 18 #include "chrome/browser/chromeos/drive/mock_drive_cache_observer.h"
19 #include "chrome/common/chrome_paths.h" 19 #include "chrome/common/chrome_paths.h"
20 #include "chrome/test/base/testing_profile.h" 20 #include "chrome/test/base/testing_profile.h"
21 #include "content/public/test/test_browser_thread.h" 21 #include "content/public/test/test_browser_thread.h"
22 #include "testing/gmock/include/gmock/gmock.h" 22 #include "testing/gmock/include/gmock/gmock.h"
23 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
24 24
25 using ::testing::AtLeast; 25 using ::testing::AtLeast;
26 using ::testing::Return; 26 using ::testing::Return;
27 using ::testing::StrictMock; 27 using ::testing::StrictMock;
28 28
29 namespace gdata { 29 namespace drive {
30 namespace { 30 namespace {
31 31
32 const char kSymLinkToDevNull[] = "/dev/null"; 32 const char kSymLinkToDevNull[] = "/dev/null";
33 33
34 struct InitialCacheResource { 34 struct InitialCacheResource {
35 const char* source_file; // Source file to be used for cache. 35 const char* source_file; // Source file to be used for cache.
36 const char* resource_id; // Resource id of cache file. 36 const char* resource_id; // Resource id of cache file.
37 const char* md5; // MD5 of cache file. 37 const char* md5; // MD5 of cache file.
38 int cache_state; // Cache state of cache file. 38 int cache_state; // Cache state of cache file.
39 const char* expected_file_extension; // Expected extension of cached file. 39 const char* expected_file_extension; // Expected extension of cached file.
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 cache_ = DriveCache::CreateDriveCacheOnUIThread( 156 cache_ = DriveCache::CreateDriveCacheOnUIThread(
157 DriveCache::GetCacheRootPath(profile_.get()), blocking_task_runner_); 157 DriveCache::GetCacheRootPath(profile_.get()), blocking_task_runner_);
158 158
159 mock_cache_observer_.reset(new StrictMock<MockDriveCacheObserver>); 159 mock_cache_observer_.reset(new StrictMock<MockDriveCacheObserver>);
160 cache_->AddObserver(mock_cache_observer_.get()); 160 cache_->AddObserver(mock_cache_observer_.get());
161 161
162 bool initialization_success = false; 162 bool initialization_success = false;
163 cache_->RequestInitializeOnUIThread( 163 cache_->RequestInitializeOnUIThread(
164 base::Bind(&test_util::CopyResultFromInitializeCacheCallback, 164 base::Bind(&test_util::CopyResultFromInitializeCacheCallback,
165 &initialization_success)); 165 &initialization_success));
166 test_util::RunBlockingPoolTask(); 166 gdata::test_util::RunBlockingPoolTask();
167 ASSERT_TRUE(initialization_success); 167 ASSERT_TRUE(initialization_success);
168 } 168 }
169 169
170 virtual void TearDown() OVERRIDE { 170 virtual void TearDown() OVERRIDE {
171 SetFreeDiskSpaceGetterForTesting(NULL); 171 SetFreeDiskSpaceGetterForTesting(NULL);
172 cache_->DestroyOnUIThread(); 172 cache_->DestroyOnUIThread();
173 // The cache destruction requires to post a task to the blocking pool. 173 // The cache destruction requires to post a task to the blocking pool.
174 test_util::RunBlockingPoolTask(); 174 gdata::test_util::RunBlockingPoolTask();
175 175
176 profile_.reset(NULL); 176 profile_.reset(NULL);
177 } 177 }
178 178
179 void PrepareForInitCacheTest() { 179 void PrepareForInitCacheTest() {
180 DVLOG(1) << "PrepareForInitCacheTest start"; 180 DVLOG(1) << "PrepareForInitCacheTest start";
181 // Create drive cache sub directories. 181 // Create drive cache sub directories.
182 ASSERT_TRUE(file_util::CreateDirectory( 182 ASSERT_TRUE(file_util::CreateDirectory(
183 cache_->GetCacheDirectoryPath(DriveCache::CACHE_TYPE_PERSISTENT))); 183 cache_->GetCacheDirectoryPath(DriveCache::CACHE_TYPE_PERSISTENT)));
184 ASSERT_TRUE(file_util::CreateDirectory( 184 ASSERT_TRUE(file_util::CreateDirectory(
(...skipping 18 matching lines...) Expand all
203 test_util::ToCacheEntry(resource.cache_state).is_dirty() ? 203 test_util::ToCacheEntry(resource.cache_state).is_dirty() ?
204 DriveCache::CACHE_TYPE_PERSISTENT : 204 DriveCache::CACHE_TYPE_PERSISTENT :
205 DriveCache::CACHE_TYPE_TMP, 205 DriveCache::CACHE_TYPE_TMP,
206 test_util::ToCacheEntry(resource.cache_state).is_dirty() ? 206 test_util::ToCacheEntry(resource.cache_state).is_dirty() ?
207 DriveCache::CACHED_FILE_LOCALLY_MODIFIED : 207 DriveCache::CACHED_FILE_LOCALLY_MODIFIED :
208 DriveCache::CACHED_FILE_FROM_SERVER); 208 DriveCache::CACHED_FILE_FROM_SERVER);
209 209
210 // Copy file from data dir to cache subdir, naming it per cache files 210 // Copy file from data dir to cache subdir, naming it per cache files
211 // convention. 211 // convention.
212 if (test_util::ToCacheEntry(resource.cache_state).is_present()) { 212 if (test_util::ToCacheEntry(resource.cache_state).is_present()) {
213 FilePath source_path = test_util::GetTestFilePath(resource.source_file); 213 FilePath source_path =
214 gdata::test_util::GetTestFilePath(resource.source_file);
214 ASSERT_TRUE(file_util::CopyFile(source_path, dest_path)); 215 ASSERT_TRUE(file_util::CopyFile(source_path, dest_path));
215 } else { 216 } else {
216 dest_path = FilePath(FILE_PATH_LITERAL(kSymLinkToDevNull)); 217 dest_path = FilePath(FILE_PATH_LITERAL(kSymLinkToDevNull));
217 } 218 }
218 219
219 // Create symbolic link in pinned dir, naming it per cache files 220 // Create symbolic link in pinned dir, naming it per cache files
220 // convention. 221 // convention.
221 if (test_util::ToCacheEntry(resource.cache_state).is_pinned()) { 222 if (test_util::ToCacheEntry(resource.cache_state).is_pinned()) {
222 FilePath link_path = cache_->GetCacheFilePath( 223 FilePath link_path = cache_->GetCacheFilePath(
223 resource.resource_id, 224 resource.resource_id,
(...skipping 10 matching lines...) Expand all
234 resource.resource_id, 235 resource.resource_id,
235 "", 236 "",
236 DriveCache::CACHE_TYPE_OUTGOING, 237 DriveCache::CACHE_TYPE_OUTGOING,
237 DriveCache::CACHED_FILE_FROM_SERVER); 238 DriveCache::CACHED_FILE_FROM_SERVER);
238 ASSERT_TRUE(file_util::CreateSymbolicLink(dest_path, link_path)); 239 ASSERT_TRUE(file_util::CreateSymbolicLink(dest_path, link_path));
239 } 240 }
240 } 241 }
241 242
242 DVLOG(1) << "PrepareForInitCacheTest finished"; 243 DVLOG(1) << "PrepareForInitCacheTest finished";
243 cache_->ForceRescanOnUIThreadForTesting(); 244 cache_->ForceRescanOnUIThreadForTesting();
244 test_util::RunBlockingPoolTask(); 245 gdata::test_util::RunBlockingPoolTask();
245 } 246 }
246 247
247 void TestInitializeCache() { 248 void TestInitializeCache() {
248 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(initial_cache_resources); ++i) { 249 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(initial_cache_resources); ++i) {
249 const struct InitialCacheResource& resource = initial_cache_resources[i]; 250 const struct InitialCacheResource& resource = initial_cache_resources[i];
250 // Check cache file. 251 // Check cache file.
251 num_callback_invocations_ = 0; 252 num_callback_invocations_ = 0;
252 TestGetFileFromCacheByResourceIdAndMd5( 253 TestGetFileFromCacheByResourceIdAndMd5(
253 resource.resource_id, 254 resource.resource_id,
254 resource.md5, 255 resource.md5,
(...skipping 27 matching lines...) Expand all
282 expected_file_extension_ = expected_file_extension; 283 expected_file_extension_ = expected_file_extension;
283 284
284 cache_->GetFileOnUIThread( 285 cache_->GetFileOnUIThread(
285 resource_id, 286 resource_id,
286 md5, 287 md5,
287 base::Bind(&DriveCacheTest::VerifyGetFromCache, 288 base::Bind(&DriveCacheTest::VerifyGetFromCache,
288 base::Unretained(this), 289 base::Unretained(this),
289 resource_id, 290 resource_id,
290 md5)); 291 md5));
291 292
292 test_util::RunBlockingPoolTask(); 293 gdata::test_util::RunBlockingPoolTask();
293 } 294 }
294 295
295 void TestStoreToCache( 296 void TestStoreToCache(
296 const std::string& resource_id, 297 const std::string& resource_id,
297 const std::string& md5, 298 const std::string& md5,
298 const FilePath& source_path, 299 const FilePath& source_path,
299 DriveFileError expected_error, 300 DriveFileError expected_error,
300 int expected_cache_state, 301 int expected_cache_state,
301 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { 302 DriveCache::CacheSubDirectoryType expected_sub_dir_type) {
302 expected_error_ = expected_error; 303 expected_error_ = expected_error;
303 expected_cache_state_ = expected_cache_state; 304 expected_cache_state_ = expected_cache_state;
304 expected_sub_dir_type_ = expected_sub_dir_type; 305 expected_sub_dir_type_ = expected_sub_dir_type;
305 306
306 cache_->StoreOnUIThread( 307 cache_->StoreOnUIThread(
307 resource_id, md5, source_path, 308 resource_id, md5, source_path,
308 DriveCache::FILE_OPERATION_COPY, 309 DriveCache::FILE_OPERATION_COPY,
309 base::Bind(&DriveCacheTest::VerifyCacheFileState, 310 base::Bind(&DriveCacheTest::VerifyCacheFileState,
310 base::Unretained(this))); 311 base::Unretained(this)));
311 312
312 test_util::RunBlockingPoolTask(); 313 gdata::test_util::RunBlockingPoolTask();
313 } 314 }
314 315
315 void VerifyGetFromCache(const std::string& resource_id, 316 void VerifyGetFromCache(const std::string& resource_id,
316 const std::string& md5, 317 const std::string& md5,
317 DriveFileError error, 318 DriveFileError error,
318 const FilePath& cache_file_path) { 319 const FilePath& cache_file_path) {
319 ++num_callback_invocations_; 320 ++num_callback_invocations_;
320 321
321 EXPECT_EQ(expected_error_, error); 322 EXPECT_EQ(expected_error_, error);
322 323
(...skipping 13 matching lines...) Expand all
336 337
337 void TestRemoveFromCache(const std::string& resource_id, 338 void TestRemoveFromCache(const std::string& resource_id,
338 DriveFileError expected_error) { 339 DriveFileError expected_error) {
339 expected_error_ = expected_error; 340 expected_error_ = expected_error;
340 341
341 cache_->RemoveOnUIThread( 342 cache_->RemoveOnUIThread(
342 resource_id, 343 resource_id,
343 base::Bind(&DriveCacheTest::VerifyRemoveFromCache, 344 base::Bind(&DriveCacheTest::VerifyRemoveFromCache,
344 base::Unretained(this))); 345 base::Unretained(this)));
345 346
346 test_util::RunBlockingPoolTask(); 347 gdata::test_util::RunBlockingPoolTask();
347 } 348 }
348 349
349 void VerifyRemoveFromCache(DriveFileError error, 350 void VerifyRemoveFromCache(DriveFileError error,
350 const std::string& resource_id, 351 const std::string& resource_id,
351 const std::string& md5) { 352 const std::string& md5) {
352 ++num_callback_invocations_; 353 ++num_callback_invocations_;
353 354
354 EXPECT_EQ(expected_error_, error); 355 EXPECT_EQ(expected_error_, error);
355 356
356 // Verify cache map. 357 // Verify cache map.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { 450 DriveCache::CacheSubDirectoryType expected_sub_dir_type) {
450 expected_error_ = expected_error; 451 expected_error_ = expected_error;
451 expected_cache_state_ = expected_cache_state; 452 expected_cache_state_ = expected_cache_state;
452 expected_sub_dir_type_ = expected_sub_dir_type; 453 expected_sub_dir_type_ = expected_sub_dir_type;
453 454
454 cache_->PinOnUIThread( 455 cache_->PinOnUIThread(
455 resource_id, md5, 456 resource_id, md5,
456 base::Bind(&DriveCacheTest::VerifyCacheFileState, 457 base::Bind(&DriveCacheTest::VerifyCacheFileState,
457 base::Unretained(this))); 458 base::Unretained(this)));
458 459
459 test_util::RunBlockingPoolTask(); 460 gdata::test_util::RunBlockingPoolTask();
460 } 461 }
461 462
462 void TestUnpin( 463 void TestUnpin(
463 const std::string& resource_id, 464 const std::string& resource_id,
464 const std::string& md5, 465 const std::string& md5,
465 DriveFileError expected_error, 466 DriveFileError expected_error,
466 int expected_cache_state, 467 int expected_cache_state,
467 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { 468 DriveCache::CacheSubDirectoryType expected_sub_dir_type) {
468 expected_error_ = expected_error; 469 expected_error_ = expected_error;
469 expected_cache_state_ = expected_cache_state; 470 expected_cache_state_ = expected_cache_state;
470 expected_sub_dir_type_ = expected_sub_dir_type; 471 expected_sub_dir_type_ = expected_sub_dir_type;
471 472
472 cache_->UnpinOnUIThread( 473 cache_->UnpinOnUIThread(
473 resource_id, md5, 474 resource_id, md5,
474 base::Bind(&DriveCacheTest::VerifyCacheFileState, 475 base::Bind(&DriveCacheTest::VerifyCacheFileState,
475 base::Unretained(this))); 476 base::Unretained(this)));
476 477
477 test_util::RunBlockingPoolTask(); 478 gdata::test_util::RunBlockingPoolTask();
478 } 479 }
479 480
480 void TestMarkDirty( 481 void TestMarkDirty(
481 const std::string& resource_id, 482 const std::string& resource_id,
482 const std::string& md5, 483 const std::string& md5,
483 DriveFileError expected_error, 484 DriveFileError expected_error,
484 int expected_cache_state, 485 int expected_cache_state,
485 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { 486 DriveCache::CacheSubDirectoryType expected_sub_dir_type) {
486 expected_error_ = expected_error; 487 expected_error_ = expected_error;
487 expected_cache_state_ = expected_cache_state; 488 expected_cache_state_ = expected_cache_state;
488 expected_sub_dir_type_ = expected_sub_dir_type; 489 expected_sub_dir_type_ = expected_sub_dir_type;
489 expect_outgoing_symlink_ = false; 490 expect_outgoing_symlink_ = false;
490 491
491 cache_->MarkDirtyOnUIThread( 492 cache_->MarkDirtyOnUIThread(
492 resource_id, 493 resource_id,
493 md5, 494 md5,
494 base::Bind(&DriveCacheTest::VerifyMarkDirty, 495 base::Bind(&DriveCacheTest::VerifyMarkDirty,
495 base::Unretained(this), 496 base::Unretained(this),
496 resource_id, 497 resource_id,
497 md5)); 498 md5));
498 499
499 test_util::RunBlockingPoolTask(); 500 gdata::test_util::RunBlockingPoolTask();
500 } 501 }
501 502
502 void VerifyMarkDirty(const std::string& resource_id, 503 void VerifyMarkDirty(const std::string& resource_id,
503 const std::string& md5, 504 const std::string& md5,
504 DriveFileError error, 505 DriveFileError error,
505 const FilePath& cache_file_path) { 506 const FilePath& cache_file_path) {
506 VerifyCacheFileState(error, resource_id, md5); 507 VerifyCacheFileState(error, resource_id, md5);
507 508
508 // Verify filename of |cache_file_path|. 509 // Verify filename of |cache_file_path|.
509 if (error == DRIVE_FILE_OK) { 510 if (error == DRIVE_FILE_OK) {
(...skipping 16 matching lines...) Expand all
526 expected_error_ = expected_error; 527 expected_error_ = expected_error;
527 expected_cache_state_ = expected_cache_state; 528 expected_cache_state_ = expected_cache_state;
528 expected_sub_dir_type_ = expected_sub_dir_type; 529 expected_sub_dir_type_ = expected_sub_dir_type;
529 expect_outgoing_symlink_ = true; 530 expect_outgoing_symlink_ = true;
530 531
531 cache_->CommitDirtyOnUIThread( 532 cache_->CommitDirtyOnUIThread(
532 resource_id, md5, 533 resource_id, md5,
533 base::Bind(&DriveCacheTest::VerifyCacheFileState, 534 base::Bind(&DriveCacheTest::VerifyCacheFileState,
534 base::Unretained(this))); 535 base::Unretained(this)));
535 536
536 test_util::RunBlockingPoolTask(); 537 gdata::test_util::RunBlockingPoolTask();
537 } 538 }
538 539
539 void TestClearDirty( 540 void TestClearDirty(
540 const std::string& resource_id, 541 const std::string& resource_id,
541 const std::string& md5, 542 const std::string& md5,
542 DriveFileError expected_error, 543 DriveFileError expected_error,
543 int expected_cache_state, 544 int expected_cache_state,
544 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { 545 DriveCache::CacheSubDirectoryType expected_sub_dir_type) {
545 expected_error_ = expected_error; 546 expected_error_ = expected_error;
546 expected_cache_state_ = expected_cache_state; 547 expected_cache_state_ = expected_cache_state;
547 expected_sub_dir_type_ = expected_sub_dir_type; 548 expected_sub_dir_type_ = expected_sub_dir_type;
548 expect_outgoing_symlink_ = false; 549 expect_outgoing_symlink_ = false;
549 550
550 cache_->ClearDirtyOnUIThread(resource_id, md5, 551 cache_->ClearDirtyOnUIThread(resource_id, md5,
551 base::Bind(&DriveCacheTest::VerifyCacheFileState, 552 base::Bind(&DriveCacheTest::VerifyCacheFileState,
552 base::Unretained(this))); 553 base::Unretained(this)));
553 554
554 test_util::RunBlockingPoolTask(); 555 gdata::test_util::RunBlockingPoolTask();
555 } 556 }
556 557
557 void TestSetMountedState( 558 void TestSetMountedState(
558 const std::string& resource_id, 559 const std::string& resource_id,
559 const std::string& md5, 560 const std::string& md5,
560 const FilePath& file_path, 561 const FilePath& file_path,
561 bool to_mount, 562 bool to_mount,
562 DriveFileError expected_error, 563 DriveFileError expected_error,
563 int expected_cache_state, 564 int expected_cache_state,
564 DriveCache::CacheSubDirectoryType expected_sub_dir_type) { 565 DriveCache::CacheSubDirectoryType expected_sub_dir_type) {
565 expected_error_ = expected_error; 566 expected_error_ = expected_error;
566 expected_cache_state_ = expected_cache_state; 567 expected_cache_state_ = expected_cache_state;
567 expected_sub_dir_type_ = expected_sub_dir_type; 568 expected_sub_dir_type_ = expected_sub_dir_type;
568 expect_outgoing_symlink_ = false; 569 expect_outgoing_symlink_ = false;
569 570
570 cache_->SetMountedStateOnUIThread(file_path, to_mount, 571 cache_->SetMountedStateOnUIThread(file_path, to_mount,
571 base::Bind(&DriveCacheTest::VerifySetMountedState, 572 base::Bind(&DriveCacheTest::VerifySetMountedState,
572 base::Unretained(this), resource_id, md5, to_mount)); 573 base::Unretained(this), resource_id, md5, to_mount));
573 574
574 test_util::RunBlockingPoolTask(); 575 gdata::test_util::RunBlockingPoolTask();
575 } 576 }
576 577
577 void VerifySetMountedState(const std::string& resource_id, 578 void VerifySetMountedState(const std::string& resource_id,
578 const std::string& md5, 579 const std::string& md5,
579 bool to_mount, 580 bool to_mount,
580 DriveFileError error, 581 DriveFileError error,
581 const FilePath& file_path) { 582 const FilePath& file_path) {
582 ++num_callback_invocations_; 583 ++num_callback_invocations_;
583 EXPECT_TRUE(file_util::PathExists(file_path)); 584 EXPECT_TRUE(file_util::PathExists(file_path));
584 EXPECT_TRUE(file_path == cache_->GetCacheFilePath( 585 EXPECT_TRUE(file_path == cache_->GetCacheFilePath(
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 DriveCacheEntry* cache_entry) { 686 DriveCacheEntry* cache_entry) {
686 bool result = false; 687 bool result = false;
687 blocking_task_runner_->PostTask( 688 blocking_task_runner_->PostTask(
688 FROM_HERE, 689 FROM_HERE,
689 base::Bind(&DriveCacheTest::GetCacheEntryFromOriginThreadInternal, 690 base::Bind(&DriveCacheTest::GetCacheEntryFromOriginThreadInternal,
690 base::Unretained(this), 691 base::Unretained(this),
691 resource_id, 692 resource_id,
692 md5, 693 md5,
693 cache_entry, 694 cache_entry,
694 &result)); 695 &result));
695 test_util::RunBlockingPoolTask(); 696 gdata::test_util::RunBlockingPoolTask();
696 return result; 697 return result;
697 } 698 }
698 699
699 // Used to implement GetCacheEntry. 700 // Used to implement GetCacheEntry.
700 void GetCacheEntryFromOriginThreadInternal( 701 void GetCacheEntryFromOriginThreadInternal(
701 const std::string& resource_id, 702 const std::string& resource_id,
702 const std::string& md5, 703 const std::string& md5,
703 DriveCacheEntry* cache_entry, 704 DriveCacheEntry* cache_entry,
704 bool* result) { 705 bool* result) {
705 *result = cache_->GetCacheEntry(resource_id, md5, cache_entry); 706 *result = cache_->GetCacheEntry(resource_id, md5, cache_entry);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
810 811
811 TEST_F(DriveCacheTest, StoreToCacheSimple) { 812 TEST_F(DriveCacheTest, StoreToCacheSimple) {
812 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 813 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
813 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 814 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
814 815
815 std::string resource_id("pdf:1a2b"); 816 std::string resource_id("pdf:1a2b");
816 std::string md5("abcdef0123456789"); 817 std::string md5("abcdef0123456789");
817 818
818 // Store an existing file. 819 // Store an existing file.
819 TestStoreToCache(resource_id, md5, 820 TestStoreToCache(resource_id, md5,
820 test_util::GetTestFilePath("gdata/root_feed.json"), 821 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
821 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 822 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
822 DriveCache::CACHE_TYPE_TMP); 823 DriveCache::CACHE_TYPE_TMP);
823 EXPECT_EQ(1, num_callback_invocations_); 824 EXPECT_EQ(1, num_callback_invocations_);
824 825
825 // Store a non-existent file to the same |resource_id| and |md5|. 826 // Store a non-existent file to the same |resource_id| and |md5|.
826 num_callback_invocations_ = 0; 827 num_callback_invocations_ = 0;
827 TestStoreToCache(resource_id, md5, FilePath("./non_existent.json"), 828 TestStoreToCache(resource_id, md5, FilePath("./non_existent.json"),
828 DRIVE_FILE_ERROR_FAILED, 829 DRIVE_FILE_ERROR_FAILED,
829 test_util::TEST_CACHE_STATE_PRESENT, 830 test_util::TEST_CACHE_STATE_PRESENT,
830 DriveCache::CACHE_TYPE_TMP); 831 DriveCache::CACHE_TYPE_TMP);
831 EXPECT_EQ(1, num_callback_invocations_); 832 EXPECT_EQ(1, num_callback_invocations_);
832 833
833 // Store a different existing file to the same |resource_id| but different 834 // Store a different existing file to the same |resource_id| but different
834 // |md5|. 835 // |md5|.
835 md5 = "new_md5"; 836 md5 = "new_md5";
836 num_callback_invocations_ = 0; 837 num_callback_invocations_ = 0;
837 TestStoreToCache(resource_id, md5, 838 TestStoreToCache(resource_id, md5,
838 test_util::GetTestFilePath("gdata/subdir_feed.json"), 839 gdata::test_util::GetTestFilePath("gdata/subdir_feed.json"),
839 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 840 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
840 DriveCache::CACHE_TYPE_TMP); 841 DriveCache::CACHE_TYPE_TMP);
841 EXPECT_EQ(1, num_callback_invocations_); 842 EXPECT_EQ(1, num_callback_invocations_);
842 843
843 // Verify that there's only one file with name <resource_id>, i.e. previously 844 // Verify that there's only one file with name <resource_id>, i.e. previously
844 // cached file with the different md5 should be deleted. 845 // cached file with the different md5 should be deleted.
845 EXPECT_EQ(1U, CountCacheFiles(resource_id, md5)); 846 EXPECT_EQ(1U, CountCacheFiles(resource_id, md5));
846 } 847 }
847 848
848 TEST_F(DriveCacheTest, GetFromCacheSimple) { 849 TEST_F(DriveCacheTest, GetFromCacheSimple) {
849 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 850 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
850 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 851 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
851 852
852 std::string resource_id("pdf:1a2b"); 853 std::string resource_id("pdf:1a2b");
853 std::string md5("abcdef0123456789"); 854 std::string md5("abcdef0123456789");
854 // First store a file to cache. 855 // First store a file to cache.
855 TestStoreToCache(resource_id, md5, 856 TestStoreToCache(resource_id, md5,
856 test_util::GetTestFilePath("gdata/root_feed.json"), 857 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
857 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 858 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
858 DriveCache::CACHE_TYPE_TMP); 859 DriveCache::CACHE_TYPE_TMP);
859 860
860 // Then try to get the existing file from cache. 861 // Then try to get the existing file from cache.
861 num_callback_invocations_ = 0; 862 num_callback_invocations_ = 0;
862 TestGetFileFromCacheByResourceIdAndMd5( 863 TestGetFileFromCacheByResourceIdAndMd5(
863 resource_id, md5, DRIVE_FILE_OK, md5); 864 resource_id, md5, DRIVE_FILE_OK, md5);
864 EXPECT_EQ(1, num_callback_invocations_); 865 EXPECT_EQ(1, num_callback_invocations_);
865 866
866 // Get file from cache with same resource id as existing file but different 867 // Get file from cache with same resource id as existing file but different
(...skipping 14 matching lines...) Expand all
881 882
882 TEST_F(DriveCacheTest, RemoveFromCacheSimple) { 883 TEST_F(DriveCacheTest, RemoveFromCacheSimple) {
883 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 884 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
884 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 885 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
885 886
886 // Use alphanumeric characters for resource id. 887 // Use alphanumeric characters for resource id.
887 std::string resource_id("pdf:1a2b"); 888 std::string resource_id("pdf:1a2b");
888 std::string md5("abcdef0123456789"); 889 std::string md5("abcdef0123456789");
889 // First store a file to cache. 890 // First store a file to cache.
890 TestStoreToCache(resource_id, md5, 891 TestStoreToCache(resource_id, md5,
891 test_util::GetTestFilePath("gdata/root_feed.json"), 892 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
892 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 893 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
893 DriveCache::CACHE_TYPE_TMP); 894 DriveCache::CACHE_TYPE_TMP);
894 895
895 // Then try to remove existing file from cache. 896 // Then try to remove existing file from cache.
896 num_callback_invocations_ = 0; 897 num_callback_invocations_ = 0;
897 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); 898 TestRemoveFromCache(resource_id, DRIVE_FILE_OK);
898 EXPECT_EQ(1, num_callback_invocations_); 899 EXPECT_EQ(1, num_callback_invocations_);
899 900
900 // Repeat using non-alphanumeric characters for resource id, including '.' 901 // Repeat using non-alphanumeric characters for resource id, including '.'
901 // which is an extension separator. 902 // which is an extension separator.
902 resource_id = "pdf:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?"; 903 resource_id = "pdf:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?";
903 TestStoreToCache(resource_id, md5, 904 TestStoreToCache(resource_id, md5,
904 test_util::GetTestFilePath("gdata/root_feed.json"), 905 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
905 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 906 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
906 DriveCache::CACHE_TYPE_TMP); 907 DriveCache::CACHE_TYPE_TMP);
907 908
908 num_callback_invocations_ = 0; 909 num_callback_invocations_ = 0;
909 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); 910 TestRemoveFromCache(resource_id, DRIVE_FILE_OK);
910 EXPECT_EQ(1, num_callback_invocations_); 911 EXPECT_EQ(1, num_callback_invocations_);
911 } 912 }
912 913
913 TEST_F(DriveCacheTest, PinAndUnpin) { 914 TEST_F(DriveCacheTest, PinAndUnpin) {
914 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 915 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
915 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 916 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
916 917
917 std::string resource_id("pdf:1a2b"); 918 std::string resource_id("pdf:1a2b");
918 std::string md5("abcdef0123456789"); 919 std::string md5("abcdef0123456789");
919 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(2); 920 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(2);
920 EXPECT_CALL(*mock_cache_observer_, OnCacheUnpinned(resource_id, md5)) 921 EXPECT_CALL(*mock_cache_observer_, OnCacheUnpinned(resource_id, md5))
921 .Times(1); 922 .Times(1);
922 923
923 // First store a file to cache. 924 // First store a file to cache.
924 TestStoreToCache(resource_id, md5, 925 TestStoreToCache(resource_id, md5,
925 test_util::GetTestFilePath("gdata/root_feed.json"), 926 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
926 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 927 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
927 DriveCache::CACHE_TYPE_TMP); 928 DriveCache::CACHE_TYPE_TMP);
928 929
929 // Pin the existing file in cache. 930 // Pin the existing file in cache.
930 num_callback_invocations_ = 0; 931 num_callback_invocations_ = 0;
931 TestPin(resource_id, md5, DRIVE_FILE_OK, 932 TestPin(resource_id, md5, DRIVE_FILE_OK,
932 test_util::TEST_CACHE_STATE_PRESENT | 933 test_util::TEST_CACHE_STATE_PRESENT |
933 test_util::TEST_CACHE_STATE_PINNED | 934 test_util::TEST_CACHE_STATE_PINNED |
934 test_util::TEST_CACHE_STATE_PERSISTENT, 935 test_util::TEST_CACHE_STATE_PERSISTENT,
935 DriveCache::CACHE_TYPE_PERSISTENT); 936 DriveCache::CACHE_TYPE_PERSISTENT);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); 994 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1);
994 995
995 // Pin a non-existent file. 996 // Pin a non-existent file.
996 TestPin(resource_id, md5, DRIVE_FILE_OK, 997 TestPin(resource_id, md5, DRIVE_FILE_OK,
997 test_util::TEST_CACHE_STATE_PINNED, 998 test_util::TEST_CACHE_STATE_PINNED,
998 DriveCache::CACHE_TYPE_TMP); 999 DriveCache::CACHE_TYPE_TMP);
999 1000
1000 // Store an existing file to a previously pinned file. 1001 // Store an existing file to a previously pinned file.
1001 num_callback_invocations_ = 0; 1002 num_callback_invocations_ = 0;
1002 TestStoreToCache(resource_id, md5, 1003 TestStoreToCache(resource_id, md5,
1003 test_util::GetTestFilePath("gdata/root_feed.json"), 1004 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1004 DRIVE_FILE_OK, 1005 DRIVE_FILE_OK,
1005 test_util::TEST_CACHE_STATE_PRESENT | 1006 test_util::TEST_CACHE_STATE_PRESENT |
1006 test_util::TEST_CACHE_STATE_PINNED | 1007 test_util::TEST_CACHE_STATE_PINNED |
1007 test_util::TEST_CACHE_STATE_PERSISTENT, 1008 test_util::TEST_CACHE_STATE_PERSISTENT,
1008 DriveCache::CACHE_TYPE_PERSISTENT); 1009 DriveCache::CACHE_TYPE_PERSISTENT);
1009 EXPECT_EQ(1, num_callback_invocations_); 1010 EXPECT_EQ(1, num_callback_invocations_);
1010 1011
1011 // Store a non-existent file to a previously pinned and stored file. 1012 // Store a non-existent file to a previously pinned and stored file.
1012 num_callback_invocations_ = 0; 1013 num_callback_invocations_ = 0;
1013 TestStoreToCache(resource_id, md5, FilePath("./non_existent.json"), 1014 TestStoreToCache(resource_id, md5, FilePath("./non_existent.json"),
(...skipping 19 matching lines...) Expand all
1033 DriveCache::CACHE_TYPE_TMP); 1034 DriveCache::CACHE_TYPE_TMP);
1034 1035
1035 // Get the non-existent pinned file from cache. 1036 // Get the non-existent pinned file from cache.
1036 num_callback_invocations_ = 0; 1037 num_callback_invocations_ = 0;
1037 TestGetFileFromCacheByResourceIdAndMd5( 1038 TestGetFileFromCacheByResourceIdAndMd5(
1038 resource_id, md5, DRIVE_FILE_ERROR_NOT_FOUND, md5); 1039 resource_id, md5, DRIVE_FILE_ERROR_NOT_FOUND, md5);
1039 EXPECT_EQ(1, num_callback_invocations_); 1040 EXPECT_EQ(1, num_callback_invocations_);
1040 1041
1041 // Store an existing file to the previously pinned non-existent file. 1042 // Store an existing file to the previously pinned non-existent file.
1042 TestStoreToCache(resource_id, md5, 1043 TestStoreToCache(resource_id, md5,
1043 test_util::GetTestFilePath("gdata/root_feed.json"), 1044 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1044 DRIVE_FILE_OK, 1045 DRIVE_FILE_OK,
1045 test_util::TEST_CACHE_STATE_PRESENT | 1046 test_util::TEST_CACHE_STATE_PRESENT |
1046 test_util::TEST_CACHE_STATE_PINNED | 1047 test_util::TEST_CACHE_STATE_PINNED |
1047 test_util::TEST_CACHE_STATE_PERSISTENT, 1048 test_util::TEST_CACHE_STATE_PERSISTENT,
1048 DriveCache::CACHE_TYPE_PERSISTENT); 1049 DriveCache::CACHE_TYPE_PERSISTENT);
1049 1050
1050 // Get the previously pinned and stored file from cache. 1051 // Get the previously pinned and stored file from cache.
1051 num_callback_invocations_ = 0; 1052 num_callback_invocations_ = 0;
1052 TestGetFileFromCacheByResourceIdAndMd5( 1053 TestGetFileFromCacheByResourceIdAndMd5(
1053 resource_id, md5, DRIVE_FILE_OK, md5); 1054 resource_id, md5, DRIVE_FILE_OK, md5);
1054 EXPECT_EQ(1, num_callback_invocations_); 1055 EXPECT_EQ(1, num_callback_invocations_);
1055 } 1056 }
1056 1057
1057 TEST_F(DriveCacheTest, RemoveFromCachePinned) { 1058 TEST_F(DriveCacheTest, RemoveFromCachePinned) {
1058 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1059 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1059 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 1060 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
1060 1061
1061 // Use alphanumeric characters for resource_id. 1062 // Use alphanumeric characters for resource_id.
1062 std::string resource_id("pdf:1a2b"); 1063 std::string resource_id("pdf:1a2b");
1063 std::string md5("abcdef0123456789"); 1064 std::string md5("abcdef0123456789");
1064 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); 1065 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1);
1065 1066
1066 // Store a file to cache, and pin it. 1067 // Store a file to cache, and pin it.
1067 TestStoreToCache(resource_id, md5, 1068 TestStoreToCache(resource_id, md5,
1068 test_util::GetTestFilePath("gdata/root_feed.json"), 1069 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1069 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 1070 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
1070 DriveCache::CACHE_TYPE_TMP); 1071 DriveCache::CACHE_TYPE_TMP);
1071 TestPin(resource_id, md5, DRIVE_FILE_OK, 1072 TestPin(resource_id, md5, DRIVE_FILE_OK,
1072 test_util::TEST_CACHE_STATE_PRESENT | 1073 test_util::TEST_CACHE_STATE_PRESENT |
1073 test_util::TEST_CACHE_STATE_PINNED | 1074 test_util::TEST_CACHE_STATE_PINNED |
1074 test_util::TEST_CACHE_STATE_PERSISTENT, 1075 test_util::TEST_CACHE_STATE_PERSISTENT,
1075 DriveCache::CACHE_TYPE_PERSISTENT); 1076 DriveCache::CACHE_TYPE_PERSISTENT);
1076 1077
1077 // Remove |resource_id| from cache. 1078 // Remove |resource_id| from cache.
1078 num_callback_invocations_ = 0; 1079 num_callback_invocations_ = 0;
1079 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); 1080 TestRemoveFromCache(resource_id, DRIVE_FILE_OK);
1080 EXPECT_EQ(1, num_callback_invocations_); 1081 EXPECT_EQ(1, num_callback_invocations_);
1081 1082
1082 // Repeat using non-alphanumeric characters for resource id, including '.' 1083 // Repeat using non-alphanumeric characters for resource id, including '.'
1083 // which is an extension separator. 1084 // which is an extension separator.
1084 resource_id = "pdf:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?"; 1085 resource_id = "pdf:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?";
1085 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); 1086 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1);
1086 1087
1087 TestStoreToCache(resource_id, md5, 1088 TestStoreToCache(resource_id, md5,
1088 test_util::GetTestFilePath("gdata/root_feed.json"), 1089 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1089 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 1090 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
1090 DriveCache::CACHE_TYPE_TMP); 1091 DriveCache::CACHE_TYPE_TMP);
1091 TestPin(resource_id, md5, DRIVE_FILE_OK, 1092 TestPin(resource_id, md5, DRIVE_FILE_OK,
1092 test_util::TEST_CACHE_STATE_PRESENT | 1093 test_util::TEST_CACHE_STATE_PRESENT |
1093 test_util::TEST_CACHE_STATE_PINNED | 1094 test_util::TEST_CACHE_STATE_PINNED |
1094 test_util::TEST_CACHE_STATE_PERSISTENT, 1095 test_util::TEST_CACHE_STATE_PERSISTENT,
1095 DriveCache::CACHE_TYPE_PERSISTENT); 1096 DriveCache::CACHE_TYPE_PERSISTENT);
1096 1097
1097 num_callback_invocations_ = 0; 1098 num_callback_invocations_ = 0;
1098 TestRemoveFromCache(resource_id, DRIVE_FILE_OK); 1099 TestRemoveFromCache(resource_id, DRIVE_FILE_OK);
1099 EXPECT_EQ(1, num_callback_invocations_); 1100 EXPECT_EQ(1, num_callback_invocations_);
1100 } 1101 }
1101 1102
1102 TEST_F(DriveCacheTest, DirtyCacheSimple) { 1103 TEST_F(DriveCacheTest, DirtyCacheSimple) {
1103 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1104 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1104 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 1105 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
1105 1106
1106 std::string resource_id("pdf:1a2b"); 1107 std::string resource_id("pdf:1a2b");
1107 std::string md5("abcdef0123456789"); 1108 std::string md5("abcdef0123456789");
1108 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1); 1109 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1);
1109 1110
1110 // First store a file to cache. 1111 // First store a file to cache.
1111 TestStoreToCache(resource_id, md5, 1112 TestStoreToCache(resource_id, md5,
1112 test_util::GetTestFilePath("gdata/root_feed.json"), 1113 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1113 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 1114 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
1114 DriveCache::CACHE_TYPE_TMP); 1115 DriveCache::CACHE_TYPE_TMP);
1115 1116
1116 // Mark the file dirty. 1117 // Mark the file dirty.
1117 num_callback_invocations_ = 0; 1118 num_callback_invocations_ = 0;
1118 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, 1119 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK,
1119 test_util::TEST_CACHE_STATE_PRESENT | 1120 test_util::TEST_CACHE_STATE_PRESENT |
1120 test_util::TEST_CACHE_STATE_DIRTY | 1121 test_util::TEST_CACHE_STATE_DIRTY |
1121 test_util::TEST_CACHE_STATE_PERSISTENT, 1122 test_util::TEST_CACHE_STATE_PERSISTENT,
1122 DriveCache::CACHE_TYPE_PERSISTENT); 1123 DriveCache::CACHE_TYPE_PERSISTENT);
(...skipping 20 matching lines...) Expand all
1143 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1144 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1144 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 1145 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
1145 1146
1146 std::string resource_id("pdf:1a2b"); 1147 std::string resource_id("pdf:1a2b");
1147 std::string md5("abcdef0123456789"); 1148 std::string md5("abcdef0123456789");
1148 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); 1149 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1);
1149 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1); 1150 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1);
1150 1151
1151 // First store a file to cache and pin it. 1152 // First store a file to cache and pin it.
1152 TestStoreToCache(resource_id, md5, 1153 TestStoreToCache(resource_id, md5,
1153 test_util::GetTestFilePath("gdata/root_feed.json"), 1154 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1154 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 1155 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
1155 DriveCache::CACHE_TYPE_TMP); 1156 DriveCache::CACHE_TYPE_TMP);
1156 TestPin(resource_id, md5, DRIVE_FILE_OK, 1157 TestPin(resource_id, md5, DRIVE_FILE_OK,
1157 test_util::TEST_CACHE_STATE_PRESENT | 1158 test_util::TEST_CACHE_STATE_PRESENT |
1158 test_util::TEST_CACHE_STATE_PINNED | 1159 test_util::TEST_CACHE_STATE_PINNED |
1159 test_util::TEST_CACHE_STATE_PERSISTENT, 1160 test_util::TEST_CACHE_STATE_PERSISTENT,
1160 DriveCache::CACHE_TYPE_PERSISTENT); 1161 DriveCache::CACHE_TYPE_PERSISTENT);
1161 1162
1162 // Mark the file dirty. 1163 // Mark the file dirty.
1163 num_callback_invocations_ = 0; 1164 num_callback_invocations_ = 0;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1195 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 1196 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
1196 1197
1197 std::string resource_id("pdf:1a2b"); 1198 std::string resource_id("pdf:1a2b");
1198 std::string md5("abcdef0123456789"); 1199 std::string md5("abcdef0123456789");
1199 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); 1200 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1);
1200 EXPECT_CALL(*mock_cache_observer_, OnCacheUnpinned(resource_id, md5)) 1201 EXPECT_CALL(*mock_cache_observer_, OnCacheUnpinned(resource_id, md5))
1201 .Times(1); 1202 .Times(1);
1202 1203
1203 // First store a file to cache and mark it as dirty. 1204 // First store a file to cache and mark it as dirty.
1204 TestStoreToCache(resource_id, md5, 1205 TestStoreToCache(resource_id, md5,
1205 test_util::GetTestFilePath("gdata/root_feed.json"), 1206 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1206 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 1207 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
1207 DriveCache::CACHE_TYPE_TMP); 1208 DriveCache::CACHE_TYPE_TMP);
1208 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, 1209 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK,
1209 test_util::TEST_CACHE_STATE_PRESENT | 1210 test_util::TEST_CACHE_STATE_PRESENT |
1210 test_util::TEST_CACHE_STATE_DIRTY | 1211 test_util::TEST_CACHE_STATE_DIRTY |
1211 test_util::TEST_CACHE_STATE_PERSISTENT, 1212 test_util::TEST_CACHE_STATE_PERSISTENT,
1212 DriveCache::CACHE_TYPE_PERSISTENT); 1213 DriveCache::CACHE_TYPE_PERSISTENT);
1213 1214
1214 // Verifies dirty file exists. 1215 // Verifies dirty file exists.
1215 FilePath dirty_path = GetCacheFilePath( 1216 FilePath dirty_path = GetCacheFilePath(
(...skipping 28 matching lines...) Expand all
1244 TEST_F(DriveCacheTest, DirtyCacheRepetitive) { 1245 TEST_F(DriveCacheTest, DirtyCacheRepetitive) {
1245 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1246 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1246 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 1247 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
1247 1248
1248 std::string resource_id("pdf:1a2b"); 1249 std::string resource_id("pdf:1a2b");
1249 std::string md5("abcdef0123456789"); 1250 std::string md5("abcdef0123456789");
1250 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(3); 1251 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(3);
1251 1252
1252 // First store a file to cache. 1253 // First store a file to cache.
1253 TestStoreToCache(resource_id, md5, 1254 TestStoreToCache(resource_id, md5,
1254 test_util::GetTestFilePath("gdata/root_feed.json"), 1255 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1255 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 1256 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
1256 DriveCache::CACHE_TYPE_TMP); 1257 DriveCache::CACHE_TYPE_TMP);
1257 1258
1258 // Mark the file dirty. 1259 // Mark the file dirty.
1259 num_callback_invocations_ = 0; 1260 num_callback_invocations_ = 0;
1260 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, 1261 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK,
1261 test_util::TEST_CACHE_STATE_PRESENT | 1262 test_util::TEST_CACHE_STATE_PRESENT |
1262 test_util::TEST_CACHE_STATE_DIRTY | 1263 test_util::TEST_CACHE_STATE_DIRTY |
1263 test_util::TEST_CACHE_STATE_PERSISTENT, 1264 test_util::TEST_CACHE_STATE_PERSISTENT,
1264 DriveCache::CACHE_TYPE_PERSISTENT); 1265 DriveCache::CACHE_TYPE_PERSISTENT);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1348 1349
1349 // Clear dirty state of a non-existent file. 1350 // Clear dirty state of a non-existent file.
1350 num_callback_invocations_ = 0; 1351 num_callback_invocations_ = 0;
1351 TestClearDirty(resource_id, md5, DRIVE_FILE_ERROR_NOT_FOUND, 1352 TestClearDirty(resource_id, md5, DRIVE_FILE_ERROR_NOT_FOUND,
1352 test_util::TEST_CACHE_STATE_NONE, 1353 test_util::TEST_CACHE_STATE_NONE,
1353 DriveCache::CACHE_TYPE_TMP); 1354 DriveCache::CACHE_TYPE_TMP);
1354 EXPECT_EQ(1, num_callback_invocations_); 1355 EXPECT_EQ(1, num_callback_invocations_);
1355 1356
1356 // Store a file to cache. 1357 // Store a file to cache.
1357 TestStoreToCache(resource_id, md5, 1358 TestStoreToCache(resource_id, md5,
1358 test_util::GetTestFilePath("gdata/root_feed.json"), 1359 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1359 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 1360 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
1360 DriveCache::CACHE_TYPE_TMP); 1361 DriveCache::CACHE_TYPE_TMP);
1361 1362
1362 // Commit a non-dirty existing file dirty. 1363 // Commit a non-dirty existing file dirty.
1363 num_callback_invocations_ = 0; 1364 num_callback_invocations_ = 0;
1364 TestCommitDirty(resource_id, md5, DRIVE_FILE_ERROR_INVALID_OPERATION, 1365 TestCommitDirty(resource_id, md5, DRIVE_FILE_ERROR_INVALID_OPERATION,
1365 test_util::TEST_CACHE_STATE_PRESENT, 1366 test_util::TEST_CACHE_STATE_PRESENT,
1366 DriveCache::CACHE_TYPE_TMP); 1367 DriveCache::CACHE_TYPE_TMP);
1367 EXPECT_EQ(1, num_callback_invocations_); 1368 EXPECT_EQ(1, num_callback_invocations_);
1368 1369
1369 // Clear dirty state of a non-dirty existing file. 1370 // Clear dirty state of a non-dirty existing file.
1370 num_callback_invocations_ = 0; 1371 num_callback_invocations_ = 0;
1371 TestClearDirty(resource_id, md5, DRIVE_FILE_ERROR_INVALID_OPERATION, 1372 TestClearDirty(resource_id, md5, DRIVE_FILE_ERROR_INVALID_OPERATION,
1372 test_util::TEST_CACHE_STATE_PRESENT, 1373 test_util::TEST_CACHE_STATE_PRESENT,
1373 DriveCache::CACHE_TYPE_TMP); 1374 DriveCache::CACHE_TYPE_TMP);
1374 EXPECT_EQ(1, num_callback_invocations_); 1375 EXPECT_EQ(1, num_callback_invocations_);
1375 1376
1376 // Mark an existing file dirty, then store a new file to the same resource id 1377 // Mark an existing file dirty, then store a new file to the same resource id
1377 // but different md5, which should fail. 1378 // but different md5, which should fail.
1378 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, 1379 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK,
1379 test_util::TEST_CACHE_STATE_PRESENT | 1380 test_util::TEST_CACHE_STATE_PRESENT |
1380 test_util::TEST_CACHE_STATE_DIRTY | 1381 test_util::TEST_CACHE_STATE_DIRTY |
1381 test_util::TEST_CACHE_STATE_PERSISTENT, 1382 test_util::TEST_CACHE_STATE_PERSISTENT,
1382 DriveCache::CACHE_TYPE_PERSISTENT); 1383 DriveCache::CACHE_TYPE_PERSISTENT);
1383 num_callback_invocations_ = 0; 1384 num_callback_invocations_ = 0;
1384 md5 = "new_md5"; 1385 md5 = "new_md5";
1385 TestStoreToCache(resource_id, md5, 1386 TestStoreToCache(resource_id, md5,
1386 test_util::GetTestFilePath("gdata/subdir_feed.json"), 1387 gdata::test_util::GetTestFilePath("gdata/subdir_feed.json"),
1387 DRIVE_FILE_ERROR_IN_USE, 1388 DRIVE_FILE_ERROR_IN_USE,
1388 test_util::TEST_CACHE_STATE_PRESENT | 1389 test_util::TEST_CACHE_STATE_PRESENT |
1389 test_util::TEST_CACHE_STATE_DIRTY | 1390 test_util::TEST_CACHE_STATE_DIRTY |
1390 test_util::TEST_CACHE_STATE_PERSISTENT, 1391 test_util::TEST_CACHE_STATE_PERSISTENT,
1391 DriveCache::CACHE_TYPE_PERSISTENT); 1392 DriveCache::CACHE_TYPE_PERSISTENT);
1392 EXPECT_EQ(1, num_callback_invocations_); 1393 EXPECT_EQ(1, num_callback_invocations_);
1393 } 1394 }
1394 1395
1395 TEST_F(DriveCacheTest, RemoveFromDirtyCache) { 1396 TEST_F(DriveCacheTest, RemoveFromDirtyCache) {
1396 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1397 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1397 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 1398 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
1398 1399
1399 std::string resource_id("pdf:1a2b"); 1400 std::string resource_id("pdf:1a2b");
1400 std::string md5("abcdef0123456789"); 1401 std::string md5("abcdef0123456789");
1401 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1); 1402 EXPECT_CALL(*mock_cache_observer_, OnCachePinned(resource_id, md5)).Times(1);
1402 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1); 1403 EXPECT_CALL(*mock_cache_observer_, OnCacheCommitted(resource_id)).Times(1);
1403 1404
1404 // Store a file to cache, pin it, mark it dirty and commit it. 1405 // Store a file to cache, pin it, mark it dirty and commit it.
1405 TestStoreToCache(resource_id, md5, 1406 TestStoreToCache(resource_id, md5,
1406 test_util::GetTestFilePath("gdata/root_feed.json"), 1407 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1407 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 1408 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
1408 DriveCache::CACHE_TYPE_TMP); 1409 DriveCache::CACHE_TYPE_TMP);
1409 TestPin(resource_id, md5, DRIVE_FILE_OK, 1410 TestPin(resource_id, md5, DRIVE_FILE_OK,
1410 test_util::TEST_CACHE_STATE_PRESENT | 1411 test_util::TEST_CACHE_STATE_PRESENT |
1411 test_util::TEST_CACHE_STATE_PINNED | 1412 test_util::TEST_CACHE_STATE_PINNED |
1412 test_util::TEST_CACHE_STATE_PERSISTENT, 1413 test_util::TEST_CACHE_STATE_PERSISTENT,
1413 DriveCache::CACHE_TYPE_PERSISTENT); 1414 DriveCache::CACHE_TYPE_PERSISTENT);
1414 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK, 1415 TestMarkDirty(resource_id, md5, DRIVE_FILE_OK,
1415 test_util::TEST_CACHE_STATE_PRESENT | 1416 test_util::TEST_CACHE_STATE_PRESENT |
1416 test_util::TEST_CACHE_STATE_PINNED | 1417 test_util::TEST_CACHE_STATE_PINNED |
(...skipping 17 matching lines...) Expand all
1434 TEST_F(DriveCacheTest, MountUnmount) { 1435 TEST_F(DriveCacheTest, MountUnmount) {
1435 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1436 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1436 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 1437 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
1437 1438
1438 FilePath file_path; 1439 FilePath file_path;
1439 std::string resource_id("pdf:1a2b"); 1440 std::string resource_id("pdf:1a2b");
1440 std::string md5("abcdef0123456789"); 1441 std::string md5("abcdef0123456789");
1441 1442
1442 // First store a file to cache in the tmp subdir. 1443 // First store a file to cache in the tmp subdir.
1443 TestStoreToCache(resource_id, md5, 1444 TestStoreToCache(resource_id, md5,
1444 test_util::GetTestFilePath("gdata/root_feed.json"), 1445 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1445 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 1446 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
1446 DriveCache::CACHE_TYPE_TMP); 1447 DriveCache::CACHE_TYPE_TMP);
1447 1448
1448 // Mark the file mounted. 1449 // Mark the file mounted.
1449 num_callback_invocations_ = 0; 1450 num_callback_invocations_ = 0;
1450 file_path = cache_->GetCacheFilePath(resource_id, md5, 1451 file_path = cache_->GetCacheFilePath(resource_id, md5,
1451 DriveCache::CACHE_TYPE_TMP, 1452 DriveCache::CACHE_TYPE_TMP,
1452 DriveCache::CACHED_FILE_FROM_SERVER); 1453 DriveCache::CACHED_FILE_FROM_SERVER);
1453 TestSetMountedState(resource_id, md5, file_path, true, 1454 TestSetMountedState(resource_id, md5, file_path, true,
1454 DRIVE_FILE_OK, 1455 DRIVE_FILE_OK,
(...skipping 23 matching lines...) Expand all
1478 EXPECT_EQ(1, num_callback_invocations_); 1479 EXPECT_EQ(1, num_callback_invocations_);
1479 } 1480 }
1480 1481
1481 TEST_F(DriveCacheTest, GetResourceIdsOfBacklogOnUIThread) { 1482 TEST_F(DriveCacheTest, GetResourceIdsOfBacklogOnUIThread) {
1482 PrepareForInitCacheTest(); 1483 PrepareForInitCacheTest();
1483 1484
1484 std::vector<std::string> to_fetch; 1485 std::vector<std::string> to_fetch;
1485 std::vector<std::string> to_upload; 1486 std::vector<std::string> to_upload;
1486 cache_->GetResourceIdsOfBacklogOnUIThread( 1487 cache_->GetResourceIdsOfBacklogOnUIThread(
1487 base::Bind(&OnGetResourceIdsOfBacklog, &to_fetch, &to_upload)); 1488 base::Bind(&OnGetResourceIdsOfBacklog, &to_fetch, &to_upload));
1488 test_util::RunBlockingPoolTask(); 1489 gdata::test_util::RunBlockingPoolTask();
1489 1490
1490 sort(to_fetch.begin(), to_fetch.end()); 1491 sort(to_fetch.begin(), to_fetch.end());
1491 ASSERT_EQ(1U, to_fetch.size()); 1492 ASSERT_EQ(1U, to_fetch.size());
1492 EXPECT_EQ("pinned:non-existent", to_fetch[0]); 1493 EXPECT_EQ("pinned:non-existent", to_fetch[0]);
1493 1494
1494 sort(to_upload.begin(), to_upload.end()); 1495 sort(to_upload.begin(), to_upload.end());
1495 ASSERT_EQ(2U, to_upload.size()); 1496 ASSERT_EQ(2U, to_upload.size());
1496 EXPECT_EQ("dirty:existing", to_upload[0]); 1497 EXPECT_EQ("dirty:existing", to_upload[0]);
1497 EXPECT_EQ("dirty_and_pinned:existing", to_upload[1]); 1498 EXPECT_EQ("dirty_and_pinned:existing", to_upload[1]);
1498 } 1499 }
1499 1500
1500 TEST_F(DriveCacheTest, GetResourceIdsOfExistingPinnedFilesOnUIThread) { 1501 TEST_F(DriveCacheTest, GetResourceIdsOfExistingPinnedFilesOnUIThread) {
1501 PrepareForInitCacheTest(); 1502 PrepareForInitCacheTest();
1502 1503
1503 std::vector<std::string> resource_ids; 1504 std::vector<std::string> resource_ids;
1504 cache_->GetResourceIdsOfExistingPinnedFilesOnUIThread( 1505 cache_->GetResourceIdsOfExistingPinnedFilesOnUIThread(
1505 base::Bind(&OnGetResourceIds, &resource_ids)); 1506 base::Bind(&OnGetResourceIds, &resource_ids));
1506 test_util::RunBlockingPoolTask(); 1507 gdata::test_util::RunBlockingPoolTask();
1507 1508
1508 sort(resource_ids.begin(), resource_ids.end()); 1509 sort(resource_ids.begin(), resource_ids.end());
1509 ASSERT_EQ(2U, resource_ids.size()); 1510 ASSERT_EQ(2U, resource_ids.size());
1510 EXPECT_EQ("dirty_and_pinned:existing", resource_ids[0]); 1511 EXPECT_EQ("dirty_and_pinned:existing", resource_ids[0]);
1511 EXPECT_EQ("pinned:existing", resource_ids[1]); 1512 EXPECT_EQ("pinned:existing", resource_ids[1]);
1512 } 1513 }
1513 1514
1514 TEST_F(DriveCacheTest, GetResourceIdsOfAllFilesOnUIThread) { 1515 TEST_F(DriveCacheTest, GetResourceIdsOfAllFilesOnUIThread) {
1515 PrepareForInitCacheTest(); 1516 PrepareForInitCacheTest();
1516 1517
1517 std::vector<std::string> resource_ids; 1518 std::vector<std::string> resource_ids;
1518 cache_->GetResourceIdsOfAllFilesOnUIThread( 1519 cache_->GetResourceIdsOfAllFilesOnUIThread(
1519 base::Bind(&OnGetResourceIds, &resource_ids)); 1520 base::Bind(&OnGetResourceIds, &resource_ids));
1520 test_util::RunBlockingPoolTask(); 1521 gdata::test_util::RunBlockingPoolTask();
1521 1522
1522 sort(resource_ids.begin(), resource_ids.end()); 1523 sort(resource_ids.begin(), resource_ids.end());
1523 ASSERT_EQ(6U, resource_ids.size()); 1524 ASSERT_EQ(6U, resource_ids.size());
1524 EXPECT_EQ("dirty:existing", resource_ids[0]); 1525 EXPECT_EQ("dirty:existing", resource_ids[0]);
1525 EXPECT_EQ("dirty_and_pinned:existing", resource_ids[1]); 1526 EXPECT_EQ("dirty_and_pinned:existing", resource_ids[1]);
1526 EXPECT_EQ("pinned:existing", resource_ids[2]); 1527 EXPECT_EQ("pinned:existing", resource_ids[2]);
1527 EXPECT_EQ("pinned:non-existent", resource_ids[3]); 1528 EXPECT_EQ("pinned:non-existent", resource_ids[3]);
1528 EXPECT_EQ("tmp:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?", resource_ids[4]); 1529 EXPECT_EQ("tmp:`~!@#$%^&*()-_=+[{|]}\\;',<.>/?", resource_ids[4]);
1529 EXPECT_EQ("tmp:resource_id", resource_ids[5]); 1530 EXPECT_EQ("tmp:resource_id", resource_ids[5]);
1530 } 1531 }
1531 1532
1532 1533
1533 TEST_F(DriveCacheTest, ClearAllOnUIThread) { 1534 TEST_F(DriveCacheTest, ClearAllOnUIThread) {
1534 PrepareForInitCacheTest(); 1535 PrepareForInitCacheTest();
1535 1536
1536 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1537 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1537 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace)); 1538 .Times(AtLeast(1)).WillRepeatedly(Return(kLotsOfSpace));
1538 1539
1539 std::string resource_id("pdf:1a2b"); 1540 std::string resource_id("pdf:1a2b");
1540 std::string md5("abcdef0123456789"); 1541 std::string md5("abcdef0123456789");
1541 1542
1542 // Store an existing file. 1543 // Store an existing file.
1543 TestStoreToCache(resource_id, md5, 1544 TestStoreToCache(resource_id, md5,
1544 test_util::GetTestFilePath("gdata/root_feed.json"), 1545 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1545 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT, 1546 DRIVE_FILE_OK, test_util::TEST_CACHE_STATE_PRESENT,
1546 DriveCache::CACHE_TYPE_TMP); 1547 DriveCache::CACHE_TYPE_TMP);
1547 EXPECT_EQ(1, num_callback_invocations_); 1548 EXPECT_EQ(1, num_callback_invocations_);
1548 1549
1549 // Verify that there's only one cached file. 1550 // Verify that there's only one cached file.
1550 EXPECT_EQ(1U, CountCacheFiles(resource_id, md5)); 1551 EXPECT_EQ(1U, CountCacheFiles(resource_id, md5));
1551 1552
1552 // Clear cache. 1553 // Clear cache.
1553 DriveFileError error = DRIVE_FILE_OK; 1554 DriveFileError error = DRIVE_FILE_OK;
1554 FilePath file_path; 1555 FilePath file_path;
1555 cache_->ClearAllOnUIThread(base::Bind(&OnClearAll, 1556 cache_->ClearAllOnUIThread(base::Bind(&OnClearAll,
1556 &error, 1557 &error,
1557 &file_path)); 1558 &file_path));
1558 test_util::RunBlockingPoolTask(); 1559 gdata::test_util::RunBlockingPoolTask();
1559 EXPECT_EQ(DRIVE_FILE_OK, error); 1560 EXPECT_EQ(DRIVE_FILE_OK, error);
1560 1561
1561 // Verify that all the cache is removed. 1562 // Verify that all the cache is removed.
1562 VerifyRemoveFromCache(error, resource_id, md5); 1563 VerifyRemoveFromCache(error, resource_id, md5);
1563 EXPECT_EQ(0U, CountCacheFiles(resource_id, md5)); 1564 EXPECT_EQ(0U, CountCacheFiles(resource_id, md5));
1564 } 1565 }
1565 1566
1566 TEST_F(DriveCacheTest, StoreToCacheNoSpace) { 1567 TEST_F(DriveCacheTest, StoreToCacheNoSpace) {
1567 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace()) 1568 EXPECT_CALL(*mock_free_disk_space_checker_, AmountOfFreeDiskSpace())
1568 .Times(AtLeast(1)).WillRepeatedly(Return(0)); 1569 .Times(AtLeast(1)).WillRepeatedly(Return(0));
1569 1570
1570 std::string resource_id("pdf:1a2b"); 1571 std::string resource_id("pdf:1a2b");
1571 std::string md5("abcdef0123456789"); 1572 std::string md5("abcdef0123456789");
1572 1573
1573 // Try to store an existing file. 1574 // Try to store an existing file.
1574 TestStoreToCache(resource_id, md5, 1575 TestStoreToCache(resource_id, md5,
1575 test_util::GetTestFilePath("gdata/root_feed.json"), 1576 gdata::test_util::GetTestFilePath("gdata/root_feed.json"),
1576 DRIVE_FILE_ERROR_NO_SPACE, 1577 DRIVE_FILE_ERROR_NO_SPACE,
1577 test_util::TEST_CACHE_STATE_NONE, 1578 test_util::TEST_CACHE_STATE_NONE,
1578 DriveCache::CACHE_TYPE_TMP); 1579 DriveCache::CACHE_TYPE_TMP);
1579 EXPECT_EQ(1, num_callback_invocations_); 1580 EXPECT_EQ(1, num_callback_invocations_);
1580 1581
1581 // Verify that there's no files added. 1582 // Verify that there's no files added.
1582 EXPECT_EQ(0U, CountCacheFiles(resource_id, md5)); 1583 EXPECT_EQ(0U, CountCacheFiles(resource_id, md5));
1583 } 1584 }
1584 1585
1585 // Don't use TEST_F, as we don't want SetUp() and TearDown() for this test. 1586 // Don't use TEST_F, as we don't want SetUp() and TearDown() for this test.
1586 TEST(DriveCacheExtraTest, InitializationFailure) { 1587 TEST(DriveCacheExtraTest, InitializationFailure) {
1587 MessageLoopForUI message_loop; 1588 MessageLoopForUI message_loop;
1588 content::TestBrowserThread ui_thread(content::BrowserThread::UI, 1589 content::TestBrowserThread ui_thread(content::BrowserThread::UI,
1589 &message_loop); 1590 &message_loop);
1590 1591
1591 scoped_refptr<base::SequencedWorkerPool> pool = 1592 scoped_refptr<base::SequencedWorkerPool> pool =
1592 content::BrowserThread::GetBlockingPool(); 1593 content::BrowserThread::GetBlockingPool();
1593 1594
1594 // Set the cache root to a non existent path, so the initialization fails. 1595 // Set the cache root to a non existent path, so the initialization fails.
1595 DriveCache* cache = DriveCache::CreateDriveCacheOnUIThread( 1596 DriveCache* cache = DriveCache::CreateDriveCacheOnUIThread(
1596 FilePath::FromUTF8Unsafe("/somewhere/nonexistent/blah/blah"), 1597 FilePath::FromUTF8Unsafe("/somewhere/nonexistent/blah/blah"),
1597 pool->GetSequencedTaskRunner(pool->GetSequenceToken())); 1598 pool->GetSequencedTaskRunner(pool->GetSequenceToken()));
1598 1599
1599 bool success = false; 1600 bool success = false;
1600 cache->RequestInitializeOnUIThread( 1601 cache->RequestInitializeOnUIThread(
1601 base::Bind(&test_util::CopyResultFromInitializeCacheCallback, 1602 base::Bind(&test_util::CopyResultFromInitializeCacheCallback,
1602 &success)); 1603 &success));
1603 test_util::RunBlockingPoolTask(); 1604 gdata::test_util::RunBlockingPoolTask();
1604 EXPECT_FALSE(success); 1605 EXPECT_FALSE(success);
1605 1606
1606 cache->DestroyOnUIThread(); 1607 cache->DestroyOnUIThread();
1607 test_util::RunBlockingPoolTask(); 1608 gdata::test_util::RunBlockingPoolTask();
1608 } 1609 }
1609 1610
1610 } // namespace gdata 1611 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/drive_cache_observer.h ('k') | chrome/browser/chromeos/drive/drive_download_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698