| Index: chrome/browser/chromeos/extensions/file_manager/external_filesystem_apitest.cc
|
| diff --git a/chrome/browser/chromeos/extensions/file_manager/external_filesystem_apitest.cc b/chrome/browser/chromeos/extensions/file_manager/external_filesystem_apitest.cc
|
| deleted file mode 100644
|
| index 38e532e9dbd03b177d15f3ea740ac6ac622db855..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/extensions/file_manager/external_filesystem_apitest.cc
|
| +++ /dev/null
|
| @@ -1,435 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/file_util.h"
|
| -#include "base/files/file_path.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/browser/chromeos/drive/drive_integration_service.h"
|
| -#include "chrome/browser/chromeos/file_manager/drive_test_util.h"
|
| -#include "chrome/browser/drive/fake_drive_service.h"
|
| -#include "chrome/browser/extensions/extension_apitest.h"
|
| -#include "chrome/browser/google_apis/test_util.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "content/public/browser/browser_context.h"
|
| -#include "content/public/browser/notification_service.h"
|
| -#include "content/public/test/test_utils.h"
|
| -#include "webkit/browser/fileapi/external_mount_points.h"
|
| -
|
| -// Tests for access to external file systems (as defined in
|
| -// webkit/common/fileapi/file_system_types.h) from extensions with
|
| -// fileBrowserPrivate and fileBrowserHandler extension permissions.
|
| -// The tests cover following external file system types:
|
| -// - local (kFileSystemTypeLocalNative): a local file system on which files are
|
| -// accessed using native local path.
|
| -// - restricted (kFileSystemTypeRestrictedLocalNative): a *read-only* local file
|
| -// system which can only be accessed by extensions that have full access to
|
| -// external file systems (i.e. extensions with fileBrowserPrivate permission).
|
| -// - drive (kFileSystemTypeDrive): a file system that provides access to Google
|
| -// Drive.
|
| -//
|
| -// The tests cover following scenarios:
|
| -// - Performing file system operations on external file systems from an
|
| -// extension with fileBrowserPrivate permission (i.e. a file browser
|
| -// extension).
|
| -// - Performing read/write operations from file handler extensions. These
|
| -// extensions need a file browser extension to give them permissions to access
|
| -// files. This also includes file handler extensions in filesystem API.
|
| -// - Observing directory changes from a file browser extension (using
|
| -// fileBrowserPrivate API).
|
| -// - Doing searches on drive file system from file browser extension (using
|
| -// fileBrowserPrivate API).
|
| -
|
| -using extensions::Extension;
|
| -
|
| -namespace file_manager {
|
| -namespace {
|
| -
|
| -// Root dirs for file systems expected by the test extensions.
|
| -// NOTE: Root dir for drive file system is set by Chrome's drive implementation,
|
| -// but the test will have to make sure the mount point is added before
|
| -// starting a test extension using WaitUntilDriveMountPointIsAdded().
|
| -const char kLocalMountPointName[] = "local";
|
| -const char kRestrictedMountPointName[] = "restricted";
|
| -
|
| -// Default file content for the test files.
|
| -const char kTestFileContent[] = "This is some test content.";
|
| -
|
| -// Contains feed for drive file system. The file system hierarchy is the same
|
| -// for local and restricted file systems:
|
| -// test_dir/ - - subdir/
|
| -// |
|
| -// - empty_test_dir/
|
| -// |
|
| -// - empty_test_file.foo
|
| -// |
|
| -// - test_file.xul
|
| -// |
|
| -// - test_file.xul.foo
|
| -// |
|
| -// - test_file.tiff
|
| -// |
|
| -// - test_file.tiff.foo
|
| -//
|
| -// All files except test_dir/empty_file.foo, which is empty, initially contain
|
| -// kTestFileContent.
|
| -const char kTestRootFeed[] =
|
| - "gdata/remote_file_system_apitest_root_feed.json";
|
| -
|
| -// Sets up the initial file system state for native local and restricted native
|
| -// local file systems. The hierarchy is the same as for the drive file system.
|
| -bool InitializeLocalFileSystem(base::ScopedTempDir* tmp_dir,
|
| - base::FilePath* mount_point_dir) {
|
| - if (!tmp_dir->CreateUniqueTempDir())
|
| - return false;
|
| -
|
| - *mount_point_dir = tmp_dir->path().AppendASCII("mount");
|
| - // Create the mount point.
|
| - if (!file_util::CreateDirectory(*mount_point_dir))
|
| - return false;
|
| -
|
| - base::FilePath test_dir = mount_point_dir->AppendASCII("test_dir");
|
| - if (!file_util::CreateDirectory(test_dir))
|
| - return false;
|
| -
|
| - base::FilePath test_subdir = test_dir.AppendASCII("empty_test_dir");
|
| - if (!file_util::CreateDirectory(test_subdir))
|
| - return false;
|
| -
|
| - test_subdir = test_dir.AppendASCII("subdir");
|
| - if (!file_util::CreateDirectory(test_subdir))
|
| - return false;
|
| -
|
| - base::FilePath test_file = test_dir.AppendASCII("test_file.xul");
|
| - if (!google_apis::test_util::WriteStringToFile(test_file, kTestFileContent))
|
| - return false;
|
| -
|
| - test_file = test_dir.AppendASCII("test_file.xul.foo");
|
| - if (!google_apis::test_util::WriteStringToFile(test_file, kTestFileContent))
|
| - return false;
|
| -
|
| - test_file = test_dir.AppendASCII("test_file.tiff");
|
| - if (!google_apis::test_util::WriteStringToFile(test_file, kTestFileContent))
|
| - return false;
|
| -
|
| - test_file = test_dir.AppendASCII("test_file.tiff.foo");
|
| - if (!google_apis::test_util::WriteStringToFile(test_file, kTestFileContent))
|
| - return false;
|
| -
|
| - test_file = test_dir.AppendASCII("empty_test_file.foo");
|
| - if (!google_apis::test_util::WriteStringToFile(test_file, ""))
|
| - return false;
|
| -
|
| - return true;
|
| -}
|
| -
|
| -// Helper class to wait for a background page to load or close again.
|
| -class BackgroundObserver {
|
| - public:
|
| - BackgroundObserver()
|
| - : page_created_(chrome::NOTIFICATION_EXTENSION_BACKGROUND_PAGE_READY,
|
| - content::NotificationService::AllSources()),
|
| - page_closed_(chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED,
|
| - content::NotificationService::AllSources()) {
|
| - }
|
| -
|
| - void WaitUntilLoaded() {
|
| - page_created_.Wait();
|
| - }
|
| -
|
| - void WaitUntilClosed() {
|
| - page_closed_.Wait();
|
| - }
|
| -
|
| - private:
|
| - content::WindowedNotificationObserver page_created_;
|
| - content::WindowedNotificationObserver page_closed_;
|
| -};
|
| -
|
| -// Base class for FileSystemExtensionApi tests.
|
| -class FileSystemExtensionApiTestBase : public ExtensionApiTest {
|
| - public:
|
| - enum Flags {
|
| - FLAGS_NONE = 0,
|
| - FLAGS_USE_FILE_HANDLER = 1 << 1,
|
| - FLAGS_LAZY_FILE_HANDLER = 1 << 2
|
| - };
|
| -
|
| - FileSystemExtensionApiTestBase() {}
|
| - virtual ~FileSystemExtensionApiTestBase() {}
|
| -
|
| - virtual void SetUp() OVERRIDE {
|
| - InitTestFileSystem();
|
| - ExtensionApiTest::SetUp();
|
| - }
|
| -
|
| - virtual void SetUpOnMainThread() OVERRIDE {
|
| - AddTestMountPoint();
|
| - ExtensionApiTest::SetUpOnMainThread();
|
| - }
|
| -
|
| - // Runs a file system extension API test.
|
| - // It loads test component extension at |filebrowser_path| with manifest
|
| - // at |filebrowser_manifest|. The |filebrowser_manifest| should be a path
|
| - // relative to |filebrowser_path|. The method waits until the test extension
|
| - // sends test succeed or fail message. It returns true if the test succeeds.
|
| - // If |FLAGS_USE_FILE_HANDLER| flag is set, the file handler extension at path
|
| - // |filehandler_path| will be loaded before the file browser extension.
|
| - // If the flag FLAGS_LAZY_FILE_HANDLER is set, the file handler extension must
|
| - // not have persistent background page. The test will wait until the file
|
| - // handler's background page is closed after initial load before the file
|
| - // browser extension is loaded.
|
| - // If |RunFileSystemExtensionApiTest| fails, |message_| will contain a failure
|
| - // message.
|
| - bool RunFileSystemExtensionApiTest(
|
| - const std::string& filebrowser_path,
|
| - const base::FilePath::CharType* filebrowser_manifest,
|
| - const std::string& filehandler_path,
|
| - int flags) {
|
| - if (flags & FLAGS_USE_FILE_HANDLER) {
|
| - if (filehandler_path.empty()) {
|
| - message_ = "Missing file handler path.";
|
| - return false;
|
| - }
|
| -
|
| - BackgroundObserver page_complete;
|
| - const Extension* file_handler =
|
| - LoadExtension(test_data_dir_.AppendASCII(filehandler_path));
|
| - if (!file_handler)
|
| - return false;
|
| -
|
| - if (flags & FLAGS_LAZY_FILE_HANDLER) {
|
| - page_complete.WaitUntilClosed();
|
| - } else {
|
| - page_complete.WaitUntilLoaded();
|
| - }
|
| - }
|
| -
|
| - ResultCatcher catcher;
|
| -
|
| - const Extension* file_browser = LoadExtensionAsComponentWithManifest(
|
| - test_data_dir_.AppendASCII(filebrowser_path),
|
| - filebrowser_manifest);
|
| - if (!file_browser)
|
| - return false;
|
| -
|
| - if (!catcher.GetNextResult()) {
|
| - message_ = catcher.message();
|
| - return false;
|
| - }
|
| -
|
| - return true;
|
| - }
|
| -
|
| - protected:
|
| - // Sets up initial test file system hierarchy. See comment for kTestRootFeed
|
| - // for the actual hierarchy.
|
| - virtual void InitTestFileSystem() = 0;
|
| - // Registers mount point used in the test.
|
| - virtual void AddTestMountPoint() = 0;
|
| -};
|
| -
|
| -// Tests for a native local file system.
|
| -class LocalFileSystemExtensionApiTest : public FileSystemExtensionApiTestBase {
|
| - public:
|
| - LocalFileSystemExtensionApiTest() {}
|
| - virtual ~LocalFileSystemExtensionApiTest() {}
|
| -
|
| - // FileSystemExtensionApiTestBase OVERRIDE.
|
| - virtual void InitTestFileSystem() OVERRIDE {
|
| - ASSERT_TRUE(InitializeLocalFileSystem(&tmp_dir_, &mount_point_dir_))
|
| - << "Failed to initialize file system.";
|
| - }
|
| -
|
| - // FileSystemExtensionApiTestBase OVERRIDE.
|
| - virtual void AddTestMountPoint() OVERRIDE {
|
| - EXPECT_TRUE(content::BrowserContext::GetMountPoints(browser()->profile())->
|
| - RegisterFileSystem(kLocalMountPointName,
|
| - fileapi::kFileSystemTypeNativeLocal,
|
| - mount_point_dir_));
|
| - }
|
| -
|
| - private:
|
| - base::ScopedTempDir tmp_dir_;
|
| - base::FilePath mount_point_dir_;
|
| -};
|
| -
|
| -// Tests for restricted native local file systems.
|
| -class RestrictedFileSystemExtensionApiTest
|
| - : public FileSystemExtensionApiTestBase {
|
| - public:
|
| - RestrictedFileSystemExtensionApiTest() {}
|
| - virtual ~RestrictedFileSystemExtensionApiTest() {}
|
| -
|
| - // FileSystemExtensionApiTestBase OVERRIDE.
|
| - virtual void InitTestFileSystem() OVERRIDE {
|
| - ASSERT_TRUE(InitializeLocalFileSystem(&tmp_dir_, &mount_point_dir_))
|
| - << "Failed to initialize file system.";
|
| - }
|
| -
|
| - // FileSystemExtensionApiTestBase OVERRIDE.
|
| - virtual void AddTestMountPoint() OVERRIDE {
|
| - EXPECT_TRUE(content::BrowserContext::GetMountPoints(browser()->profile())->
|
| - RegisterFileSystem(kRestrictedMountPointName,
|
| - fileapi::kFileSystemTypeRestrictedNativeLocal,
|
| - mount_point_dir_));
|
| - }
|
| -
|
| - private:
|
| - base::ScopedTempDir tmp_dir_;
|
| - base::FilePath mount_point_dir_;
|
| -};
|
| -
|
| -// Tests for a drive file system.
|
| -class DriveFileSystemExtensionApiTest : public FileSystemExtensionApiTestBase {
|
| - public:
|
| - DriveFileSystemExtensionApiTest() : fake_drive_service_(NULL) {}
|
| - virtual ~DriveFileSystemExtensionApiTest() {}
|
| -
|
| - // FileSystemExtensionApiTestBase OVERRIDE.
|
| - virtual void InitTestFileSystem() OVERRIDE {
|
| - // Set up cache root to be used by DriveIntegrationService. This has to be
|
| - // done before the browser is created because the service instance is
|
| - // initialized by EventRouter.
|
| - ASSERT_TRUE(test_cache_root_.CreateUniqueTempDir());
|
| -
|
| - drive::DriveIntegrationServiceFactory::SetFactoryForTest(
|
| - base::Bind(
|
| - &DriveFileSystemExtensionApiTest::CreateDriveIntegrationService,
|
| - base::Unretained(this)));
|
| - }
|
| -
|
| - // FileSystemExtensionApiTestBase OVERRIDE.
|
| - virtual void AddTestMountPoint() OVERRIDE {
|
| - test_util::WaitUntilDriveMountPointIsAdded(browser()->profile());
|
| - }
|
| -
|
| - protected:
|
| - // DriveIntegrationService factory function for this test.
|
| - drive::DriveIntegrationService* CreateDriveIntegrationService(
|
| - Profile* profile) {
|
| - fake_drive_service_ = new drive::FakeDriveService;
|
| - fake_drive_service_->LoadResourceListForWapi(kTestRootFeed);
|
| - fake_drive_service_->LoadAccountMetadataForWapi(
|
| - "gdata/account_metadata.json");
|
| - fake_drive_service_->LoadAppListForDriveApi("drive/applist.json");
|
| -
|
| - return new drive::DriveIntegrationService(profile,
|
| - fake_drive_service_,
|
| - test_cache_root_.path(),
|
| - NULL);
|
| - }
|
| -
|
| - base::ScopedTempDir test_cache_root_;
|
| - drive::FakeDriveService* fake_drive_service_;
|
| -};
|
| -
|
| -//
|
| -// LocalFileSystemExtensionApiTests.
|
| -//
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LocalFileSystemExtensionApiTest, FileSystemOperations) {
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/filesystem_operations_test",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "",
|
| - FLAGS_NONE)) << message_;
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LocalFileSystemExtensionApiTest, FileWatch) {
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/file_watcher_test",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "",
|
| - FLAGS_NONE)) << message_;
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LocalFileSystemExtensionApiTest, FileBrowserHandlers) {
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/handler_test_runner",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "file_browser/file_browser_handler",
|
| - FLAGS_USE_FILE_HANDLER)) << message_;
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LocalFileSystemExtensionApiTest,
|
| - FileBrowserHandlersLazy) {
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/handler_test_runner",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "file_browser/file_browser_handler_lazy",
|
| - FLAGS_USE_FILE_HANDLER | FLAGS_LAZY_FILE_HANDLER)) << message_;
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LocalFileSystemExtensionApiTest, AppFileHandler) {
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/handler_test_runner",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "file_browser/app_file_handler",
|
| - FLAGS_USE_FILE_HANDLER)) << message_;
|
| -}
|
| -
|
| -//
|
| -// RestrictedFileSystemExtensionApiTests.
|
| -//
|
| -IN_PROC_BROWSER_TEST_F(RestrictedFileSystemExtensionApiTest,
|
| - FileSystemOperations) {
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/filesystem_operations_test",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "",
|
| - FLAGS_NONE)) << message_;
|
| -}
|
| -
|
| -//
|
| -// DriveFileSystemExtensionApiTests.
|
| -//
|
| -IN_PROC_BROWSER_TEST_F(DriveFileSystemExtensionApiTest, FileSystemOperations) {
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/filesystem_operations_test",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "",
|
| - FLAGS_NONE)) << message_;
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(DriveFileSystemExtensionApiTest, FileWatch) {
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/file_watcher_test",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "",
|
| - FLAGS_NONE)) << message_;
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(DriveFileSystemExtensionApiTest, FileBrowserHandlers) {
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/handler_test_runner",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "file_browser/file_browser_handler",
|
| - FLAGS_USE_FILE_HANDLER)) << message_;
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(DriveFileSystemExtensionApiTest, Search) {
|
| - // Configure the drive service to return only one search result at a time
|
| - // to simulate paginated searches.
|
| - fake_drive_service_->set_default_max_results(1);
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/drive_search_test",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "",
|
| - FLAGS_NONE)) << message_;
|
| -}
|
| -
|
| -IN_PROC_BROWSER_TEST_F(DriveFileSystemExtensionApiTest, AppFileHandler) {
|
| - fake_drive_service_->set_default_max_results(1);
|
| - EXPECT_TRUE(RunFileSystemExtensionApiTest(
|
| - "file_browser/handler_test_runner",
|
| - FILE_PATH_LITERAL("manifest.json"),
|
| - "file_browser/app_file_handler",
|
| - FLAGS_USE_FILE_HANDLER)) << message_;
|
| -}
|
| -
|
| -} // namespace
|
| -} // namespace file_manager
|
|
|