Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | |
|
hashimoto
2014/01/15 10:43:15
nit: "(c)" is not needed.
kinaba
2014/01/16 01:36:09
Done.
| |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/apps/app_browsertest_util.h" | |
| 6 #include "chrome/browser/chromeos/drive/drive_integration_service.h" | |
| 7 #include "chrome/browser/chromeos/drive/file_system_interface.h" | |
| 8 #include "chrome/browser/chromeos/drive/file_system_util.h" | |
| 9 #include "chrome/browser/chromeos/drive/test_util.h" | |
| 10 #include "chrome/browser/drive/fake_drive_service.h" | |
| 11 #include "chrome/browser/extensions/api/file_system/file_system_api.h" | |
| 12 #include "content/public/test/test_utils.h" | |
| 13 #include "google_apis/drive/test_util.h" | |
| 14 | |
| 15 namespace extensions { | |
| 16 | |
| 17 // This class contains chrome.filesystem API test specific to Chrome OS, namely, | |
| 18 // the integrated Google Drive support. | |
| 19 class FileSystemApiTestForDrive : public PlatformAppBrowserTest { | |
| 20 public: | |
| 21 // Sets up fake Drive service for tests (this has to be injected before the | |
| 22 // real DriveIntegrationService instance is created.) | |
| 23 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | |
| 24 PlatformAppBrowserTest::SetUpInProcessBrowserTestFixture(); | |
| 25 | |
| 26 ASSERT_TRUE(test_cache_root_.CreateUniqueTempDir()); | |
| 27 | |
| 28 create_drive_integration_service_ = | |
| 29 base::Bind(&FileSystemApiTestForDrive::CreateDriveIntegrationService, | |
| 30 base::Unretained(this)); | |
| 31 service_factory_for_test_.reset( | |
| 32 new drive::DriveIntegrationServiceFactory::ScopedFactoryForTest( | |
| 33 &create_drive_integration_service_)); | |
| 34 } | |
| 35 | |
| 36 // Ensure the fake service's data is fetch in the local file system. This is | |
| 37 // necessary because the fetch starts lazily upon the first read operation. | |
| 38 virtual void SetUpOnMainThread() OVERRIDE { | |
| 39 PlatformAppBrowserTest::SetUpOnMainThread(); | |
| 40 | |
| 41 scoped_ptr<drive::ResourceEntry> entry; | |
| 42 drive::FileError error = drive::FILE_ERROR_FAILED; | |
| 43 integration_service_->file_system()->GetResourceEntry( | |
| 44 base::FilePath::FromUTF8Unsafe("drive/root"), // whatever | |
| 45 google_apis::test_util::CreateCopyResultCallback(&error, &entry)); | |
| 46 drive::test_util::RunBlockingPoolTask(); | |
| 47 ASSERT_EQ(drive::FILE_ERROR_OK, error); | |
| 48 } | |
| 49 | |
| 50 virtual void TearDown() OVERRIDE { | |
| 51 FileSystemChooseEntryFunction::StopSkippingPickerForTest(); | |
| 52 PlatformAppBrowserTest::TearDown(); | |
| 53 }; | |
| 54 | |
| 55 private: | |
| 56 drive::DriveIntegrationService* CreateDriveIntegrationService( | |
| 57 Profile* profile) { | |
| 58 fake_drive_service_ = new drive::FakeDriveService; | |
| 59 fake_drive_service_->LoadResourceListForWapi( | |
| 60 "gdata/empty_feed.json"); | |
| 61 fake_drive_service_->LoadAccountMetadataForWapi( | |
| 62 "gdata/account_metadata.json"); | |
| 63 fake_drive_service_->LoadAppListForDriveApi("drive/applist.json"); | |
| 64 | |
| 65 SetUpTestFileHierarchy(); | |
| 66 | |
| 67 integration_service_ = new drive::DriveIntegrationService( | |
| 68 profile, NULL, fake_drive_service_, test_cache_root_.path(), NULL); | |
| 69 return integration_service_; | |
| 70 } | |
| 71 | |
| 72 void SetUpTestFileHierarchy() { | |
| 73 const std::string root = fake_drive_service_->GetRootResourceId(); | |
| 74 ASSERT_TRUE(AddTestFile("open_existing.txt", "Can you see me?", root)); | |
| 75 } | |
| 76 | |
| 77 bool AddTestFile(const std::string& title, | |
| 78 const std::string& data, | |
| 79 const std::string& parent_id) { | |
| 80 scoped_ptr<google_apis::ResourceEntry> resource_entry; | |
| 81 google_apis::GDataErrorCode error = google_apis::GDATA_OTHER_ERROR; | |
| 82 fake_drive_service_->AddNewFile( | |
| 83 "text/plain", data, parent_id, title, false, | |
| 84 google_apis::test_util::CreateCopyResultCallback(&error, | |
| 85 &resource_entry)); | |
| 86 content::RunAllPendingInMessageLoop(); | |
| 87 return error == google_apis::HTTP_CREATED && resource_entry; | |
| 88 } | |
| 89 | |
| 90 std::string AddTestDirectory(const std::string& title, | |
|
hashimoto
2014/01/15 10:43:15
This function seems unused.
kinaba
2014/01/16 01:36:09
This will be used in the next patch coming soon.
R
| |
| 91 const std::string& parent_id) { | |
| 92 scoped_ptr<google_apis::ResourceEntry> resource_entry; | |
| 93 google_apis::GDataErrorCode error = google_apis::GDATA_OTHER_ERROR; | |
| 94 fake_drive_service_->AddNewDirectory( | |
| 95 parent_id, title, | |
| 96 google_apis::test_util::CreateCopyResultCallback(&error, | |
| 97 &resource_entry)); | |
| 98 content::RunAllPendingInMessageLoop(); | |
| 99 return error == google_apis::HTTP_CREATED && resource_entry ? | |
| 100 resource_entry->resource_id() : ""; | |
| 101 } | |
| 102 | |
| 103 base::ScopedTempDir test_cache_root_; | |
| 104 drive::FakeDriveService* fake_drive_service_; | |
| 105 drive::DriveIntegrationService* integration_service_; | |
|
hashimoto
2014/01/15 10:43:15
nit: Please initialize these raw pointers in the c
kinaba
2014/01/16 01:36:09
Done.
| |
| 106 drive::DriveIntegrationServiceFactory::FactoryCallback | |
| 107 create_drive_integration_service_; | |
| 108 scoped_ptr<drive::DriveIntegrationServiceFactory::ScopedFactoryForTest> | |
| 109 service_factory_for_test_; | |
| 110 }; | |
| 111 | |
| 112 IN_PROC_BROWSER_TEST_F(FileSystemApiTestForDrive, | |
| 113 FileSystemApiOpenExistingFileTest) { | |
| 114 base::FilePath test_file = drive::util::GetDriveMountPointPath().AppendASCII( | |
| 115 "root/open_existing.txt"); | |
| 116 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( | |
| 117 &test_file); | |
| 118 ASSERT_TRUE(RunPlatformAppTest("api_test/file_system/open_existing")) | |
| 119 << message_; | |
| 120 } | |
| 121 | |
| 122 IN_PROC_BROWSER_TEST_F(FileSystemApiTestForDrive, | |
| 123 FileSystemApiOpenExistingFileWithWriteTest) { | |
| 124 base::FilePath test_file = drive::util::GetDriveMountPointPath().AppendASCII( | |
| 125 "root/open_existing.txt"); | |
| 126 FileSystemChooseEntryFunction::SkipPickerAndAlwaysSelectPathForTest( | |
| 127 &test_file); | |
| 128 ASSERT_TRUE(RunPlatformAppTest( | |
| 129 "api_test/file_system/open_existing_with_write")) << message_; | |
| 130 } | |
| 131 | |
| 132 } // namespace extensions | |
| OLD | NEW |