Index: chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc |
diff --git a/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc b/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc |
index 8b18bb82660c109e2f6dbd2f3730134bf9bed3f0..2fe8f4849ca825ee6fbcbe74e1a2c25bef7b5786 100644 |
--- a/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc |
+++ b/chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util_unittest.cc |
@@ -11,11 +11,17 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/memory/weak_ptr.h" |
#include "base/platform_file.h" |
+#include "base/run_loop.h" |
+#include "chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h" |
#include "chrome/browser/chromeos/file_system_provider/fileapi/provider_async_file_util.h" |
-#include "chrome/browser/chromeos/file_system_provider/mount_path_util.h" |
+#include "chrome/browser/chromeos/file_system_provider/service.h" |
+#include "chrome/browser/chromeos/file_system_provider/service_factory.h" |
+#include "chrome/test/base/testing_browser_process.h" |
#include "chrome/test/base/testing_profile.h" |
+#include "chrome/test/base/testing_profile_manager.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
#include "content/public/test/test_file_system_context.h" |
+#include "extensions/browser/extension_registry.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "webkit/browser/fileapi/async_file_util.h" |
#include "webkit/browser/fileapi/external_mount_points.h" |
@@ -28,7 +34,6 @@ namespace file_system_provider { |
namespace { |
const char kExtensionId[] = "mbflcebpggnecokmikipoihdbecnjfoj"; |
-const int kFileSystemId = 1; |
// Logs callbacks invocations on the tested operations. |
// TODO(mtomasz): Store and verify more arguments, once the operations return |
@@ -86,42 +91,6 @@ class EventLogger { |
DISALLOW_COPY_AND_ASSIGN(EventLogger); |
}; |
-// Registers an external mount point, and removes it once the object gets out |
-// of scope. To ensure that creating the mount point succeeded, call is_valid(). |
-class ScopedExternalMountPoint { |
- public: |
- ScopedExternalMountPoint(const std::string& mount_point_name, |
- const base::FilePath& mount_path, |
- fileapi::FileSystemType type) |
- : mount_point_name_(mount_point_name) { |
- fileapi::ExternalMountPoints* const mount_points = |
- fileapi::ExternalMountPoints::GetSystemInstance(); |
- DCHECK(mount_points); |
- is_valid_ = |
- mount_points->RegisterFileSystem(mount_point_name, |
- fileapi::kFileSystemTypeProvided, |
- fileapi::FileSystemMountOption(), |
- mount_path); |
- } |
- |
- virtual ~ScopedExternalMountPoint() { |
- if (!is_valid_) |
- return; |
- |
- // If successfully registered in the constructor, then unregister. |
- fileapi::ExternalMountPoints* const mount_points = |
- fileapi::ExternalMountPoints::GetSystemInstance(); |
- DCHECK(mount_points); |
- mount_points->RevokeFileSystem(mount_point_name_); |
- } |
- |
- bool is_valid() { return is_valid_; } |
- |
- private: |
- const std::string mount_point_name_; |
- bool is_valid_; |
-}; |
- |
// Creates a cracked FileSystemURL for tests. |
fileapi::FileSystemURL CreateFileSystemURL(const std::string& mount_point_name, |
const base::FilePath& file_path) { |
@@ -134,6 +103,13 @@ fileapi::FileSystemURL CreateFileSystemURL(const std::string& mount_point_name, |
base::FilePath::FromUTF8Unsafe(mount_point_name).Append(file_path)); |
} |
+// Creates a Service instance. Used to be able to destroy the service in |
+// TearDown(). |
+KeyedService* CreateService(content::BrowserContext* context) { |
+ return new Service(Profile::FromBrowserContext(context), |
+ extensions::ExtensionRegistry::Get(context)); |
+} |
+ |
} // namespace |
// Tests in this file are very lightweight and just test integration between |
@@ -148,17 +124,28 @@ class FileSystemProviderProviderAsyncFileUtilTest : public testing::Test { |
virtual void SetUp() OVERRIDE { |
ASSERT_TRUE(data_dir_.CreateUniqueTempDir()); |
- profile_.reset(new TestingProfile); |
+ profile_manager_.reset( |
+ new TestingProfileManager(TestingBrowserProcess::GetGlobal())); |
+ ASSERT_TRUE(profile_manager_->SetUp()); |
+ profile_ = profile_manager_->CreateTestingProfile("testing-profile"); |
async_file_util_.reset(new internal::ProviderAsyncFileUtil); |
- const base::FilePath mount_path = |
- util::GetMountPath(profile_.get(), kExtensionId, kFileSystemId); |
+ |
file_system_context_ = |
content::CreateFileSystemContextForTesting(NULL, data_dir_.path()); |
- const std::string mount_point_name = mount_path.BaseName().AsUTF8Unsafe(); |
- mount_point_.reset(new ScopedExternalMountPoint( |
- mount_point_name, mount_path, fileapi::kFileSystemTypeProvided)); |
- ASSERT_TRUE(mount_point_->is_valid()); |
+ ServiceFactory::GetInstance()->SetTestingFactory(profile_, &CreateService); |
+ Service* service = Service::Get(profile_); // Owned by its factory. |
+ service->SetFileSystemFactoryForTests( |
+ base::Bind(&FakeProvidedFileSystem::Create)); |
+ |
+ const int file_system_id = |
+ service->MountFileSystem(kExtensionId, "testing-file-system"); |
+ ASSERT_LT(0, file_system_id); |
+ const ProvidedFileSystemInfo& file_system_info = |
+ service->GetProvidedFileSystem(kExtensionId, file_system_id) |
+ ->GetFileSystemInfo(); |
+ const std::string mount_point_name = |
+ file_system_info.mount_path().BaseName().AsUTF8Unsafe(); |
file_url_ = CreateFileSystemURL( |
mount_point_name, base::FilePath::FromUTF8Unsafe("hello/world.txt")); |
@@ -170,6 +157,12 @@ class FileSystemProviderProviderAsyncFileUtilTest : public testing::Test { |
ASSERT_TRUE(root_url_.is_valid()); |
} |
+ virtual void TearDown() OVERRIDE { |
+ // Setting the testing factory to NULL will destroy the created service |
+ // associated with the testing profile. |
+ ServiceFactory::GetInstance()->SetTestingFactory(profile_, NULL); |
+ } |
+ |
scoped_ptr<fileapi::FileSystemOperationContext> CreateOperationContext() { |
return make_scoped_ptr( |
new fileapi::FileSystemOperationContext(file_system_context_.get())); |
@@ -177,10 +170,10 @@ class FileSystemProviderProviderAsyncFileUtilTest : public testing::Test { |
content::TestBrowserThreadBundle thread_bundle_; |
base::ScopedTempDir data_dir_; |
- scoped_ptr<TestingProfile> profile_; |
+ scoped_ptr<TestingProfileManager> profile_manager_; |
+ TestingProfile* profile_; // Owned by TestingProfileManager. |
scoped_ptr<fileapi::AsyncFileUtil> async_file_util_; |
scoped_refptr<fileapi::FileSystemContext> file_system_context_; |
- scoped_ptr<ScopedExternalMountPoint> mount_point_; |
fileapi::FileSystemURL file_url_; |
fileapi::FileSystemURL directory_url_; |
fileapi::FileSystemURL root_url_; |
@@ -283,11 +276,12 @@ TEST_F(FileSystemProviderProviderAsyncFileUtilTest, GetFileInfo) { |
async_file_util_->GetFileInfo( |
CreateOperationContext(), |
- file_url_, |
+ root_url_, |
base::Bind(&EventLogger::OnGetFileInfo, logger.GetWeakPtr())); |
+ base::RunLoop().RunUntilIdle(); |
ASSERT_TRUE(logger.error()); |
- EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, *logger.error()); |
+ EXPECT_EQ(base::File::FILE_OK, *logger.error()); |
} |
TEST_F(FileSystemProviderProviderAsyncFileUtilTest, ReadDirectory) { |