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

Unified Diff: chrome/browser/extensions/api/file_system/file_system_api.h

Issue 2934143002: Move chrome.fileSystem implementation to //extensions (Closed)
Patch Set: benwells, test fix Created 3 years, 6 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
Index: chrome/browser/extensions/api/file_system/file_system_api.h
diff --git a/chrome/browser/extensions/api/file_system/file_system_api.h b/chrome/browser/extensions/api/file_system/file_system_api.h
deleted file mode 100644
index f65f4183c3267efacc3c3a84a61ff4f836364c12..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/api/file_system/file_system_api.h
+++ /dev/null
@@ -1,327 +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.
-
-#ifndef CHROME_BROWSER_EXTENSIONS_API_FILE_SYSTEM_FILE_SYSTEM_API_H_
-#define CHROME_BROWSER_EXTENSIONS_API_FILE_SYSTEM_FILE_SYSTEM_API_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "base/files/file.h"
-#include "base/files/file_path.h"
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "base/values.h"
-#include "build/build_config.h"
-#include "chrome/browser/extensions/chrome_extension_function.h"
-#include "chrome/browser/extensions/chrome_extension_function_details.h"
-#include "chrome/common/extensions/api/file_system.h"
-#include "extensions/browser/extension_function.h"
-#include "ui/shell_dialogs/select_file_dialog.h"
-
-#if defined(OS_CHROMEOS)
-#include "chrome/browser/extensions/api/file_system/consent_provider.h"
-#endif
-
-namespace extensions {
-class ExtensionPrefs;
-
-namespace file_system_api {
-
-// Methods to get and set the path of the directory containing the last file
-// chosen by the user in response to a chrome.fileSystem.chooseEntry() call for
-// the given extension.
-
-// Returns an empty path on failure.
-base::FilePath GetLastChooseEntryDirectory(const ExtensionPrefs* prefs,
- const std::string& extension_id);
-
-void SetLastChooseEntryDirectory(ExtensionPrefs* prefs,
- const std::string& extension_id,
- const base::FilePath& path);
-
-#if defined(OS_CHROMEOS)
-// Dispatches an event about a mounted on unmounted volume in the system to
-// each extension which can request it.
-void DispatchVolumeListChangeEvent(Profile* profile);
-#endif
-
-} // namespace file_system_api
-
-class FileSystemGetDisplayPathFunction : public UIThreadExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.getDisplayPath",
- FILESYSTEM_GETDISPLAYPATH)
-
- protected:
- ~FileSystemGetDisplayPathFunction() override {}
- ResponseAction Run() override;
-};
-
-class FileSystemEntryFunction : public ChromeAsyncExtensionFunction {
- protected:
- FileSystemEntryFunction();
-
- ~FileSystemEntryFunction() override {}
-
- // This is called when writable file entries are being returned. The function
- // will ensure the files exist, creating them if necessary, and also check
- // that none of the files are links. If it succeeds it proceeds to
- // RegisterFileSystemsAndSendResponse, otherwise to HandleWritableFileError.
- void PrepareFilesForWritableApp(const std::vector<base::FilePath>& path);
-
- // This will finish the choose file process. This is either called directly
- // from FilesSelected, or from WritableFileChecker. It is called on the UI
- // thread.
- void RegisterFileSystemsAndSendResponse(
- const std::vector<base::FilePath>& path);
-
- // Creates a result dictionary.
- std::unique_ptr<base::DictionaryValue> CreateResult();
-
- // Adds an entry to the result dictionary.
- void AddEntryToResult(const base::FilePath& path,
- const std::string& id_override,
- base::DictionaryValue* result);
-
- // called on the UI thread if there is a problem checking a writable file.
- void HandleWritableFileError(const base::FilePath& error_path);
-
- // Whether multiple entries have been requested.
- bool multiple_;
-
- // Whether a directory has been requested.
- bool is_directory_;
-};
-
-class FileSystemGetWritableEntryFunction : public FileSystemEntryFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.getWritableEntry",
- FILESYSTEM_GETWRITABLEENTRY)
-
- protected:
- ~FileSystemGetWritableEntryFunction() override {}
- bool RunAsync() override;
-
- private:
- void CheckPermissionAndSendResponse();
- void SetIsDirectoryAsync();
-
- // The path to the file for which a writable entry has been requested.
- base::FilePath path_;
-};
-
-class FileSystemIsWritableEntryFunction : public UIThreadExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.isWritableEntry",
- FILESYSTEM_ISWRITABLEENTRY)
-
- protected:
- ~FileSystemIsWritableEntryFunction() override {}
- ResponseAction Run() override;
-};
-
-class FileSystemChooseEntryFunction : public FileSystemEntryFunction {
- public:
- // Allow picker UI to be skipped in testing.
- static void SkipPickerAndAlwaysSelectPathForTest(base::FilePath* path);
- static void SkipPickerAndAlwaysSelectPathsForTest(
- std::vector<base::FilePath>* paths);
- static void SkipPickerAndSelectSuggestedPathForTest();
- static void SkipPickerAndAlwaysCancelForTest();
- static void StopSkippingPickerForTest();
- // Allow directory access confirmation UI to be skipped in testing.
- static void SkipDirectoryConfirmationForTest();
- static void AutoCancelDirectoryConfirmationForTest();
- static void StopSkippingDirectoryConfirmationForTest();
- // Call this with the directory for test file paths. On Chrome OS, accessed
- // path needs to be explicitly registered for smooth integration with Google
- // Drive support.
- static void RegisterTempExternalFileSystemForTest(const std::string& name,
- const base::FilePath& path);
- DECLARE_EXTENSION_FUNCTION("fileSystem.chooseEntry", FILESYSTEM_CHOOSEENTRY)
-
- typedef std::vector<api::file_system::AcceptOption> AcceptOptions;
-
- static void BuildFileTypeInfo(
- ui::SelectFileDialog::FileTypeInfo* file_type_info,
- const base::FilePath::StringType& suggested_extension,
- const AcceptOptions* accepts,
- const bool* acceptsAllTypes);
- static void BuildSuggestion(const std::string* opt_name,
- base::FilePath* suggested_name,
- base::FilePath::StringType* suggested_extension);
-
- protected:
- class FilePicker;
-
- ~FileSystemChooseEntryFunction() override {}
- bool RunAsync() override;
- void ShowPicker(const ui::SelectFileDialog::FileTypeInfo& file_type_info,
- ui::SelectFileDialog::Type picker_type);
-
- private:
- void SetInitialPathAndShowPicker(
- const base::FilePath& previous_path,
- const base::FilePath& suggested_name,
- const ui::SelectFileDialog::FileTypeInfo& file_type_info,
- ui::SelectFileDialog::Type picker_type,
- bool is_path_non_native_directory);
-
- // FilesSelected and FileSelectionCanceled are called by the file picker.
- void FilesSelected(const std::vector<base::FilePath>& path);
- void FileSelectionCanceled();
-
- // Check if the chosen directory is or is an ancestor of a sensitive
- // directory. If so, show a dialog to confirm that the user wants to open the
- // directory. Calls OnDirectoryAccessConfirmed if the directory isn't
- // sensitive or the user chooses to open it. Otherwise, calls
- // FileSelectionCanceled.
- void ConfirmDirectoryAccessAsync(bool non_native_path,
- const std::vector<base::FilePath>& paths,
- content::WebContents* web_contents);
- void OnDirectoryAccessConfirmed(const std::vector<base::FilePath>& paths);
-
- base::FilePath initial_path_;
-};
-
-class FileSystemRetainEntryFunction : public ChromeAsyncExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.retainEntry", FILESYSTEM_RETAINENTRY)
-
- protected:
- ~FileSystemRetainEntryFunction() override {}
- bool RunAsync() override;
-
- private:
- // Retains the file entry referenced by |entry_id| in apps::SavedFilesService.
- // |entry_id| must refer to an entry in an isolated file system. |path| is a
- // path of the entry. |file_info| is base::File::Info of the entry if it can
- // be obtained.
- void RetainFileEntry(const std::string& entry_id,
- const base::FilePath& path,
- std::unique_ptr<base::File::Info> file_info);
-};
-
-class FileSystemIsRestorableFunction : public UIThreadExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.isRestorable", FILESYSTEM_ISRESTORABLE)
-
- protected:
- ~FileSystemIsRestorableFunction() override {}
- ResponseAction Run() override;
-};
-
-class FileSystemRestoreEntryFunction : public FileSystemEntryFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.restoreEntry", FILESYSTEM_RESTOREENTRY)
-
- protected:
- ~FileSystemRestoreEntryFunction() override {}
- bool RunAsync() override;
-};
-
-class FileSystemObserveDirectoryFunction : public UIThreadExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.observeDirectory",
- FILESYSTEM_OBSERVEDIRECTORY)
-
- protected:
- ~FileSystemObserveDirectoryFunction() override {}
- ResponseAction Run() override;
-};
-
-class FileSystemUnobserveEntryFunction : public UIThreadExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.unobserveEntry",
- FILESYSTEM_UNOBSERVEENTRY)
-
- protected:
- ~FileSystemUnobserveEntryFunction() override {}
- ResponseAction Run() override;
-};
-
-class FileSystemGetObservedEntriesFunction : public UIThreadExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.getObservedEntries",
- FILESYSTEM_GETOBSERVEDENTRIES);
-
- protected:
- ~FileSystemGetObservedEntriesFunction() override {}
- ResponseAction Run() override;
-};
-
-#if !defined(OS_CHROMEOS)
-// Stub for non Chrome OS operating systems.
-class FileSystemRequestFileSystemFunction : public UIThreadExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.requestFileSystem",
- FILESYSTEM_REQUESTFILESYSTEM);
-
- protected:
- ~FileSystemRequestFileSystemFunction() override {}
-
- // UIThreadExtensionFunction overrides.
- ExtensionFunction::ResponseAction Run() override;
-};
-
-// Stub for non Chrome OS operating systems.
-class FileSystemGetVolumeListFunction : public UIThreadExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.getVolumeList",
- FILESYSTEM_GETVOLUMELIST);
-
- protected:
- ~FileSystemGetVolumeListFunction() override {}
-
- // UIThreadExtensionFunction overrides.
- ExtensionFunction::ResponseAction Run() override;
-};
-
-#else
-// Requests a file system for the specified volume id.
-class FileSystemRequestFileSystemFunction : public UIThreadExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.requestFileSystem",
- FILESYSTEM_REQUESTFILESYSTEM)
- FileSystemRequestFileSystemFunction();
-
- protected:
- ~FileSystemRequestFileSystemFunction() override;
-
- // UIThreadExtensionFunction overrides.
- ExtensionFunction::ResponseAction Run() override;
-
- private:
- // Called when a user grants or rejects permissions for the file system
- // access.
- void OnConsentReceived(const base::WeakPtr<file_manager::Volume>& volume,
- bool writable,
- file_system_api::ConsentProvider::Consent result);
-
- ChromeExtensionFunctionDetails chrome_details_;
-};
-
-// Requests a list of available volumes.
-class FileSystemGetVolumeListFunction : public UIThreadExtensionFunction {
- public:
- DECLARE_EXTENSION_FUNCTION("fileSystem.getVolumeList",
- FILESYSTEM_GETVOLUMELIST);
- FileSystemGetVolumeListFunction();
-
- protected:
- ~FileSystemGetVolumeListFunction() override;
-
- // UIThreadExtensionFunction overrides.
- ExtensionFunction::ResponseAction Run() override;
-
- private:
- ChromeExtensionFunctionDetails chrome_details_;
-};
-#endif
-
-} // namespace extensions
-
-#endif // CHROME_BROWSER_EXTENSIONS_API_FILE_SYSTEM_FILE_SYSTEM_API_H_

Powered by Google App Engine
This is Rietveld 408576698