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

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

Issue 14838003: Try fast-fetch rather than full fetch if drive::FileSystem::GetEntryInfo failed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 7 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
« no previous file with comments | « chrome/browser/chromeos/drive/file_system.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/file_system.h" 5 #include "chrome/browser/chromeos/drive/file_system.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 } 289 }
290 290
291 // Returns true if the cache entry exists for the given resource ID and MD5. 291 // Returns true if the cache entry exists for the given resource ID and MD5.
292 bool CacheEntryExists(const std::string& resource_id, 292 bool CacheEntryExists(const std::string& resource_id,
293 const std::string& md5) { 293 const std::string& md5) {
294 FileCacheEntry cache_entry; 294 FileCacheEntry cache_entry;
295 return GetCacheEntryFromOriginThread(resource_id, md5, &cache_entry); 295 return GetCacheEntryFromOriginThread(resource_id, md5, &cache_entry);
296 } 296 }
297 297
298 // Flag for specifying the timestamp of the test filesystem cache. 298 // Flag for specifying the timestamp of the test filesystem cache.
299 enum SaveTestFileSystemParam { 299 enum SetUpTestFileSystemParam {
300 USE_OLD_TIMESTAMP, 300 USE_OLD_TIMESTAMP,
301 USE_SERVER_TIMESTAMP, 301 USE_SERVER_TIMESTAMP,
302 }; 302 };
303 303
304 // Saves a file representing a filesystem with directories: 304 // Sets up a filesystem with directories: drive/root, drive/root/Dir1,
305 // drive/root, drive/root/Dir1, drive/root/Dir1/SubDir2 305 // drive/root/Dir1/SubDir2 and files drive/root/File1, drive/root/Dir1/File2,
306 // and files 306 // drive/root/Dir1/SubDir2/File3. If |use_up_to_date_timestamp| is true, sets
307 // drive/root/File1, drive/root/Dir1/File2, drive/root/Dir1/SubDir2/File3. 307 // the changestamp to 654321, equal to that of "account_metadata.json" test
308 // If |use_up_to_date_timestamp| is true, sets the changestamp to 654321, 308 // data, indicating the cache is holding the latest file system info.
309 // equal to that of "account_metadata.json" test data, indicating the cache is 309 bool SetUpTestFileSystem(SetUpTestFileSystemParam param) {
310 // holding the latest file system info.
311 bool SaveTestFileSystem(SaveTestFileSystemParam param) {
312 // Destroy the existing resource metadata to close DB. 310 // Destroy the existing resource metadata to close DB.
313 resource_metadata_.reset(); 311 resource_metadata_.reset();
314 312
315 const std::string root_resource_id = 313 const std::string root_resource_id =
316 fake_drive_service_->GetRootResourceId(); 314 fake_drive_service_->GetRootResourceId();
317 scoped_ptr<internal::ResourceMetadata, test_util::DestroyHelperForTests> 315 scoped_ptr<internal::ResourceMetadata, test_util::DestroyHelperForTests>
318 resource_metadata(new internal::ResourceMetadata( 316 resource_metadata(new internal::ResourceMetadata(
319 cache_->GetCacheDirectoryPath(internal::FileCache::CACHE_TYPE_META), 317 cache_->GetCacheDirectoryPath(internal::FileCache::CACHE_TYPE_META),
320 blocking_task_runner_)); 318 blocking_task_runner_));
321 319
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 scoped_ptr<internal::ResourceMetadata, test_util::DestroyHelperForTests> 452 scoped_ptr<internal::ResourceMetadata, test_util::DestroyHelperForTests>
455 resource_metadata_; 453 resource_metadata_;
456 scoped_ptr<FakeFreeDiskSpaceGetter> fake_free_disk_space_getter_; 454 scoped_ptr<FakeFreeDiskSpaceGetter> fake_free_disk_space_getter_;
457 scoped_ptr<StrictMock<MockCacheObserver> > mock_cache_observer_; 455 scoped_ptr<StrictMock<MockCacheObserver> > mock_cache_observer_;
458 scoped_ptr<StrictMock<MockDirectoryChangeObserver> > mock_directory_observer_; 456 scoped_ptr<StrictMock<MockDirectoryChangeObserver> > mock_directory_observer_;
459 457
460 int root_feed_changestamp_; 458 int root_feed_changestamp_;
461 }; 459 };
462 460
463 TEST_F(DriveFileSystemTest, DuplicatedAsyncInitialization) { 461 TEST_F(DriveFileSystemTest, DuplicatedAsyncInitialization) {
462 // "Fast fetch" will fire an OnirectoryChanged event.
463 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
464 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1);
465
464 int counter = 0; 466 int counter = 0;
465 const GetEntryInfoCallback& callback = base::Bind( 467 const GetEntryInfoCallback& callback = base::Bind(
466 &AsyncInitializationCallback, &counter, 2, &message_loop_); 468 &AsyncInitializationCallback, &counter, 2, &message_loop_);
467 469
468 file_system_->GetEntryInfoByPath( 470 file_system_->GetEntryInfoByPath(
469 base::FilePath(FILE_PATH_LITERAL("drive/root")), callback); 471 base::FilePath(FILE_PATH_LITERAL("drive/root")), callback);
470 file_system_->GetEntryInfoByPath( 472 file_system_->GetEntryInfoByPath(
471 base::FilePath(FILE_PATH_LITERAL("drive/root")), callback); 473 base::FilePath(FILE_PATH_LITERAL("drive/root")), callback);
472 message_loop_.Run(); // Wait to get our result 474 message_loop_.Run(); // Wait to get our result
473 EXPECT_EQ(2, counter); 475 EXPECT_EQ(2, counter);
474 476
475 // Although GetEntryInfoByPath() was called twice, the account metadata 477 // Although GetEntryInfoByPath() was called twice, the account metadata
476 // should only be loaded once. In the past, there was a bug that caused 478 // should only be loaded once. In the past, there was a bug that caused
477 // it to be loaded twice. 479 // it to be loaded twice.
478 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count());
479 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); 480 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count());
481 // See the comment in GetMyDriveRoot test case why this is 2.
482 EXPECT_EQ(2, fake_drive_service_->about_resource_load_count());
480 } 483 }
481 484
482 TEST_F(DriveFileSystemTest, GetGrandRootEntry) { 485 TEST_F(DriveFileSystemTest, GetGrandRootEntry) {
483 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive")); 486 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive"));
484 scoped_ptr<ResourceEntry> entry = GetEntryInfoByPathSync(kFilePath); 487 scoped_ptr<ResourceEntry> entry = GetEntryInfoByPathSync(kFilePath);
485 ASSERT_TRUE(entry); 488 ASSERT_TRUE(entry);
486 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry->resource_id()); 489 EXPECT_EQ(util::kDriveGrandRootSpecialResourceId, entry->resource_id());
487 490
488 // Getting the grand root entry should not cause the resource load to happen. 491 // Getting the grand root entry should not cause the resource load to happen.
489 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); 492 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count());
490 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); 493 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count());
491 } 494 }
492 495
493 TEST_F(DriveFileSystemTest, GetOtherDirEntry) { 496 TEST_F(DriveFileSystemTest, GetOtherDirEntry) {
494 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/other")); 497 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/other"));
495 scoped_ptr<ResourceEntry> entry = GetEntryInfoByPathSync(kFilePath); 498 scoped_ptr<ResourceEntry> entry = GetEntryInfoByPathSync(kFilePath);
496 ASSERT_TRUE(entry); 499 ASSERT_TRUE(entry);
497 EXPECT_EQ(util::kDriveOtherDirSpecialResourceId, entry->resource_id()); 500 EXPECT_EQ(util::kDriveOtherDirSpecialResourceId, entry->resource_id());
498 501
499 // Getting the "other" directory entry should not cause the resource load to 502 // Getting the "other" directory entry should not cause the resource load to
500 // happen. 503 // happen.
501 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count()); 504 EXPECT_EQ(0, fake_drive_service_->about_resource_load_count());
502 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); 505 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count());
503 } 506 }
504 507
505 TEST_F(DriveFileSystemTest, GetMyDriveRoot) { 508 TEST_F(DriveFileSystemTest, GetMyDriveRoot) {
509 // "Fast fetch" will fire an OnirectoryChanged event.
510 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
511 Eq(base::FilePath(FILE_PATH_LITERAL("drive"))))).Times(1);
512
506 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root")); 513 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root"));
507 scoped_ptr<ResourceEntry> entry = GetEntryInfoByPathSync(kFilePath); 514 scoped_ptr<ResourceEntry> entry = GetEntryInfoByPathSync(kFilePath);
508 ASSERT_TRUE(entry); 515 ASSERT_TRUE(entry);
509 EXPECT_EQ(fake_drive_service_->GetRootResourceId(), entry->resource_id()); 516 EXPECT_EQ(fake_drive_service_->GetRootResourceId(), entry->resource_id());
510 517
511 // The changestamp should be propagated to the root directory. 518 // Absence of "drive/root" in the local metadata triggers the "fast fetch"
512 EXPECT_EQ(fake_drive_service_->largest_changestamp(), 519 // of "drive" directory. Fetch of "drive" grand root directory has a special
513 entry->directory_specific_info().changestamp()); 520 // implementation. Instead of normal GetResourceListInDirectory(), it is
521 // emulated by calling GetAboutResource() so that the resource_id of
522 // "drive/root" is listed.
523 // Together with the normal GetAboutResource() call to retrieve the largest
524 // changestamp, the method is called twice.
525 EXPECT_EQ(2, fake_drive_service_->about_resource_load_count());
514 526
515 // The resource load should happen because "My Drive"'s root is not the grand 527 // After "fast fetch" is done, full resource list is fetched.
516 // root entry and hence does not present until the initial loading.
517 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count());
518 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count()); 528 EXPECT_EQ(1, fake_drive_service_->resource_list_load_count());
519 } 529 }
520 530
521 TEST_F(DriveFileSystemTest, GetExistingFile) { 531 TEST_F(DriveFileSystemTest, GetExistingFile) {
522 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt")); 532 const base::FilePath kFilePath(FILE_PATH_LITERAL("drive/root/File 1.txt"));
523 scoped_ptr<ResourceEntry> entry = GetEntryInfoByPathSync(kFilePath); 533 scoped_ptr<ResourceEntry> entry = GetEntryInfoByPathSync(kFilePath);
524 ASSERT_TRUE(entry); 534 ASSERT_TRUE(entry);
525 EXPECT_EQ("file:2_file_resource_id", entry->resource_id()); 535 EXPECT_EQ("file:2_file_resource_id", entry->resource_id());
526 536
527 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); 537 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count());
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 837
828 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( 838 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL(
829 "drive/root/Directory 1")))); 839 "drive/root/Directory 1"))));
830 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL( 840 EXPECT_FALSE(EntryExists(base::FilePath(FILE_PATH_LITERAL(
831 "drive/root/Directory 1/SubDirectory File 1.txt")))); 841 "drive/root/Directory 1/SubDirectory File 1.txt"))));
832 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL( 842 EXPECT_TRUE(EntryExists(base::FilePath(FILE_PATH_LITERAL(
833 "drive/root/Directory 1/New SubDirectory File 1.txt")))); 843 "drive/root/Directory 1/New SubDirectory File 1.txt"))));
834 } 844 }
835 845
836 TEST_F(DriveFileSystemTest, CachedFeedLoadingThenServerFeedLoading) { 846 TEST_F(DriveFileSystemTest, CachedFeedLoadingThenServerFeedLoading) {
837 ASSERT_TRUE(SaveTestFileSystem(USE_SERVER_TIMESTAMP)); 847 ASSERT_TRUE(SetUpTestFileSystem(USE_SERVER_TIMESTAMP));
838 848
839 // Kicks loading of cached file system and query for server update. 849 // Kicks loading of cached file system and query for server update.
840 EXPECT_TRUE(ReadDirectoryByPathSync(util::GetDriveMyDriveRootPath())); 850 EXPECT_TRUE(ReadDirectoryByPathSync(util::GetDriveMyDriveRootPath()));
841 851
842 // SaveTestFileSystem and "account_metadata.json" have the same changestamp, 852 // SetUpTestFileSystem and "account_metadata.json" have the same changestamp,
843 // so no request for new feeds (i.e., call to GetResourceList) should happen. 853 // so no request for new feeds (i.e., call to GetResourceList) should happen.
844 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); 854 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count());
845 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count()); 855 EXPECT_EQ(0, fake_drive_service_->resource_list_load_count());
846 856
847 // Since the file system has verified that it holds the latest snapshot, 857 // Since the file system has verified that it holds the latest snapshot,
848 // it should change its state to "loaded", which admits periodic refresh. 858 // it should change its state to "loaded", which admits periodic refresh.
849 // To test it, call CheckForUpdates and verify it does try to check updates. 859 // To test it, call CheckForUpdates and verify it does try to check updates.
850 file_system_->CheckForUpdates(); 860 file_system_->CheckForUpdates();
851 google_apis::test_util::RunBlockingPoolTask(); 861 google_apis::test_util::RunBlockingPoolTask();
852 EXPECT_EQ(2, fake_drive_service_->about_resource_load_count()); 862 EXPECT_EQ(2, fake_drive_service_->about_resource_load_count());
853 } 863 }
854 864
855 TEST_F(DriveFileSystemTest, OfflineCachedFeedLoading) { 865 TEST_F(DriveFileSystemTest, OfflineCachedFeedLoading) {
856 ASSERT_TRUE(SaveTestFileSystem(USE_OLD_TIMESTAMP)); 866 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP));
857 867
858 // Make GetResourceList fail for simulating offline situation. This will leave 868 // Make GetResourceList fail for simulating offline situation. This will leave
859 // the file system "loaded from cache, but not synced with server" state. 869 // the file system "loaded from cache, but not synced with server" state.
860 fake_drive_service_->set_offline(true); 870 fake_drive_service_->set_offline(true);
861 871
862 // Kicks loading of cached file system and query for server update. 872 // Kicks loading of cached file system and query for server update.
863 EXPECT_TRUE(ReadDirectoryByPathSync(util::GetDriveMyDriveRootPath())); 873 EXPECT_TRUE(ReadDirectoryByPathSync(util::GetDriveMyDriveRootPath()));
864 // Loading of account metadata should not happen as it's offline. 874 // Loading of account metadata should not happen as it's offline.
865 EXPECT_EQ(0, fake_drive_service_->account_metadata_load_count()); 875 EXPECT_EQ(0, fake_drive_service_->account_metadata_load_count());
866 876
(...skipping 17 matching lines...) Expand all
884 894
885 file_system_->CheckForUpdates(); 895 file_system_->CheckForUpdates();
886 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_)) 896 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_))
887 .Times(AtLeast(1)); 897 .Times(AtLeast(1));
888 898
889 google_apis::test_util::RunBlockingPoolTask(); 899 google_apis::test_util::RunBlockingPoolTask();
890 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count()); 900 EXPECT_EQ(1, fake_drive_service_->about_resource_load_count());
891 EXPECT_EQ(1, fake_drive_service_->change_list_load_count()); 901 EXPECT_EQ(1, fake_drive_service_->change_list_load_count());
892 } 902 }
893 903
904 TEST_F(DriveFileSystemTest, ReadDirectoryWhileRefreshing) {
905 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_))
906 .Times(AtLeast(1));
907
908 // Enter the "refreshing" state so the fast fetch will be performed.
909 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP));
910 file_system_->CheckForUpdates();
911
912 // The list of resources in "drive/root/Dir1" should be fetched.
913 EXPECT_TRUE(ReadDirectoryByPathSync(base::FilePath(
914 FILE_PATH_LITERAL("drive/root/Dir1"))));
915 EXPECT_EQ(1, fake_drive_service_->directory_load_count());
916 }
917
918 TEST_F(DriveFileSystemTest, GetEntryInfoExistingWhileRefreshing) {
919 // Enter the "refreshing" state.
920 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP));
921 file_system_->CheckForUpdates();
922
923 // If an entry is already found in local metadata, no directory fetch happens.
924 EXPECT_TRUE(GetEntryInfoByPathSync(base::FilePath(
925 FILE_PATH_LITERAL("drive/root/Dir1/File2"))));
926 EXPECT_EQ(0, fake_drive_service_->directory_load_count());
927 }
928
929 TEST_F(DriveFileSystemTest, GetEntryInfoNonExistentWhileRefreshing) {
930 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(_))
931 .Times(AtLeast(1));
932
933 // Enter the "refreshing" state so the fast fetch will be performed.
934 ASSERT_TRUE(SetUpTestFileSystem(USE_OLD_TIMESTAMP));
935 file_system_->CheckForUpdates();
936
937 // If an entry is not found, parent directory's resource list is fetched.
938 EXPECT_FALSE(GetEntryInfoByPathSync(base::FilePath(
939 FILE_PATH_LITERAL("drive/root/Dir1/NonExistentFile"))));
940 EXPECT_EQ(1, fake_drive_service_->directory_load_count());
941 }
942
894 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_RegularFile) { 943 TEST_F(DriveFileSystemTest, TransferFileFromLocalToRemote_RegularFile) {
895 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace); 944 fake_free_disk_space_getter_->set_fake_free_disk_space(kLotsOfSpace);
896 945
897 ASSERT_TRUE(LoadRootFeedDocument()); 946 ASSERT_TRUE(LoadRootFeedDocument());
898 947
899 // We'll add a file to the Drive root directory. 948 // We'll add a file to the Drive root directory.
900 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( 949 EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged(
901 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1); 950 Eq(base::FilePath(FILE_PATH_LITERAL("drive/root"))))).Times(1);
902 951
903 // Prepare a local file. 952 // Prepare a local file.
(...skipping 1263 matching lines...) Expand 10 before | Expand all | Expand 10 after
2167 google_apis::test_util::CreateCopyResultCallback(&error)); 2216 google_apis::test_util::CreateCopyResultCallback(&error));
2168 google_apis::test_util::RunBlockingPoolTask(); 2217 google_apis::test_util::RunBlockingPoolTask();
2169 2218
2170 // It must fail. 2219 // It must fail.
2171 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error); 2220 EXPECT_EQ(FILE_ERROR_NOT_FOUND, error);
2172 } 2221 }
2173 2222
2174 // TODO(satorux): Testing if WebAppsRegistry is loaded here is awkward. We 2223 // TODO(satorux): Testing if WebAppsRegistry is loaded here is awkward. We
2175 // should move this to change_list_loader_unittest.cc. crbug.com/161703 2224 // should move this to change_list_loader_unittest.cc. crbug.com/161703
2176 TEST_F(DriveFileSystemTest, WebAppsRegistryIsLoaded) { 2225 TEST_F(DriveFileSystemTest, WebAppsRegistryIsLoaded) {
2177 ASSERT_TRUE(SaveTestFileSystem(USE_SERVER_TIMESTAMP)); 2226 ASSERT_TRUE(SetUpTestFileSystem(USE_SERVER_TIMESTAMP));
2178 2227
2179 // No apps should be found as the webapps registry is empty. 2228 // No apps should be found as the webapps registry is empty.
2180 ScopedVector<DriveWebAppInfo> apps; 2229 ScopedVector<DriveWebAppInfo> apps;
2181 drive_webapps_registry_->GetWebAppsForFile( 2230 drive_webapps_registry_->GetWebAppsForFile(
2182 base::FilePath::FromUTF8Unsafe("foo.exe"), 2231 base::FilePath::FromUTF8Unsafe("foo.exe"),
2183 "" /* mime_type */, 2232 "" /* mime_type */,
2184 &apps); 2233 &apps);
2185 EXPECT_TRUE(apps.empty()); 2234 EXPECT_TRUE(apps.empty());
2186 2235
2187 // Kicks loading of cached file system and query for server update. This 2236 // Kicks loading of cached file system and query for server update. This
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
2308 2357
2309 // Create fails if the parent directory does not exist. 2358 // Create fails if the parent directory does not exist.
2310 file_system_->CreateFile( 2359 file_system_->CreateFile(
2311 kFileInNonExistingDirectory, false, 2360 kFileInNonExistingDirectory, false,
2312 google_apis::test_util::CreateCopyResultCallback(&error)); 2361 google_apis::test_util::CreateCopyResultCallback(&error));
2313 google_apis::test_util::RunBlockingPoolTask(); 2362 google_apis::test_util::RunBlockingPoolTask();
2314 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error); 2363 EXPECT_EQ(FILE_ERROR_NOT_A_DIRECTORY, error);
2315 } 2364 }
2316 2365
2317 } // namespace drive 2366 } // namespace drive
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/drive/file_system.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698