| // 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 STORAGE_BROWSER_FILEAPI_FILE_SYSTEM_OPTIONS_H_ |
| #define STORAGE_BROWSER_FILEAPI_FILE_SYSTEM_OPTIONS_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "base/component_export.h" |
| |
| namespace storage { |
| |
| // Provides runtime options that may change FileSystem API behavior. |
| // This object is copyable. |
| class COMPONENT_EXPORT(STORAGE_BROWSER) FileSystemOptions { |
| public: |
| enum ProfileMode { |
| PROFILE_MODE_NORMAL = 0, |
| PROFILE_MODE_INCOGNITO |
| }; |
| |
| // |profile_mode| specifies if the profile (for this filesystem) |
| // is running in incognito mode (PROFILE_MODE_INCOGNITO) or no |
| // (PROFILE_MODE_NORMAL). |
| // A FileSystem will be created in-memory when |profile_mode| is incognito, |
| // but it can be forced to be in-memory by setting |force_in_memory| to |
| // true - this is only to support testing. |
| // |additional_allowed_schemes| specifies schemes that are allowed |
| // to access FileSystem API in addition to "http" and "https". |
| FileSystemOptions(ProfileMode profile_mode, |
| bool force_in_memory, |
| const std::vector<std::string>& additional_allowed_schemes); |
| FileSystemOptions(const FileSystemOptions& other); |
| |
| ~FileSystemOptions(); |
| |
| // Returns true if it is running in the incognito mode. |
| bool is_incognito() const { return profile_mode_ == PROFILE_MODE_INCOGNITO; } |
| |
| // Returns true if filesystem is in-memory. |
| bool is_in_memory() const; |
| |
| // Returns the schemes that must be allowed to access FileSystem API |
| // in addition to standard "http" and "https". |
| // (e.g. If the --allow-file-access-from-files option is given in chrome |
| // "file" scheme will also need to be allowed). |
| const std::vector<std::string>& additional_allowed_schemes() const { |
| return additional_allowed_schemes_; |
| } |
| |
| private: |
| const ProfileMode profile_mode_; |
| const bool force_in_memory_; |
| const std::vector<std::string> additional_allowed_schemes_; |
| }; |
| |
| } // namespace storage |
| |
| #endif // STORAGE_BROWSER_FILEAPI_FILE_SYSTEM_OPTIONS_H_ |