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

Unified Diff: chrome/browser/chromeos/extensions/file_manager/external_filesystem_apitest.cc

Issue 23723005: file_manager: Move some tests to chrome/browser/chromeos/file_manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/chromeos/extensions/file_manager/file_manager_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « no previous file | chrome/browser/chromeos/extensions/file_manager/file_manager_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698