1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
// Copyright 2017 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_CHROME_FILE_SYSTEM_DELEGATE_H_
#define CHROME_BROWSER_EXTENSIONS_API_FILE_SYSTEM_CHROME_FILE_SYSTEM_DELEGATE_H_
#include "extensions/browser/api/file_system/file_system_delegate.h"
#include <memory>
#include "base/macros.h"
#include "build/build_config.h"
namespace extensions {
#if defined(OS_CHROMEOS)
namespace file_system_api {
// Dispatches an event about a mounted or unmounted volume in the system to
// each extension which can request it.
void DispatchVolumeListChangeEvent(content::BrowserContext* browser_context);
} // namespace file_system_api
#endif // defined(OS_CHROMEOS)
class ChromeFileSystemDelegate : public FileSystemDelegate {
public:
ChromeFileSystemDelegate();
~ChromeFileSystemDelegate() override;
// FileSystemDelegate:
base::FilePath GetDefaultDirectory() override;
bool ShowSelectFileDialog(
scoped_refptr<UIThreadExtensionFunction> extension_function,
ui::SelectFileDialog::Type type,
const base::FilePath& default_path,
const ui::SelectFileDialog::FileTypeInfo* file_types,
FileSystemDelegate::FilesSelectedCallback files_selected_callback,
base::OnceClosure file_selection_canceled_callback) override;
void ConfirmSensitiveDirectoryAccess(bool has_write_permission,
const base::string16& app_name,
content::WebContents* web_contents,
const base::Closure& on_accept,
const base::Closure& on_cancel) override;
int GetDescriptionIdForAcceptType(const std::string& accept_type) override;
#if defined(OS_CHROMEOS)
FileSystemDelegate::GrantVolumesMode GetGrantVolumesMode(
content::BrowserContext* browser_context,
content::RenderFrameHost* render_frame_host,
const Extension& extension) override;
void RequestFileSystem(content::BrowserContext* browser_context,
scoped_refptr<UIThreadExtensionFunction> requester,
const Extension& extension,
std::string volume_id,
bool writable,
const FileSystemCallback& success_callback,
const ErrorCallback& error_callback) override;
void GetVolumeList(content::BrowserContext* browser_context,
const Extension& extension,
const VolumeListCallback& success_callback,
const ErrorCallback& error_callback) override;
#endif // defined(OS_CHROMEOS)
SavedFilesServiceInterface* GetSavedFilesService(
content::BrowserContext* browser_context) override;
private:
DISALLOW_COPY_AND_ASSIGN(ChromeFileSystemDelegate);
};
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_API_FILE_SYSTEM_CHROME_FILE_SYSTEM_DELEGATE_H_
|