| // Copyright 2019 The Chromium Embedded Framework Authors. Portions copyright |
| // 2013 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 CEF_LIBCEF_BROWSER_DEVTOOLS_DEVTOOLS_FILE_MANAGER_H_ |
| #define CEF_LIBCEF_BROWSER_DEVTOOLS_DEVTOOLS_FILE_MANAGER_H_ |
| |
| #include "base/callback_forward.h" |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| |
| #include <map> |
| #include <string> |
| |
| namespace base { |
| class FilePath; |
| class SequencedTaskRunner; |
| class Value; |
| } // namespace base |
| |
| class CefBrowserHostImpl; |
| class PrefService; |
| |
| // File management helper for DevTools. |
| // Based on chrome/browser/devtools/devtools_ui_bindings.cc and |
| // chrome/browser/devtools/devtools_file_helper.cc. |
| class CefDevToolsFileManager { |
| public: |
| CefDevToolsFileManager(CefBrowserHostImpl* browser_impl, PrefService* prefs); |
| |
| void SaveToFile(const std::string& url, |
| const std::string& content, |
| bool save_as); |
| void AppendToFile(const std::string& url, const std::string& content); |
| |
| private: |
| // SaveToFile implementation: |
| typedef base::Callback<void(const std::string&)> SaveCallback; |
| typedef base::Callback<void()> CancelCallback; |
| void Save(const std::string& url, |
| const std::string& content, |
| bool save_as, |
| const SaveCallback& saveCallback, |
| const CancelCallback& cancelCallback); |
| void SaveAsDialogDismissed(const std::string& url, |
| const std::string& content, |
| const SaveCallback& saveCallback, |
| const CancelCallback& cancelCallback, |
| int selected_accept_filter, |
| const std::vector<base::FilePath>& file_paths); |
| void SaveAsFileSelected(const std::string& url, |
| const std::string& content, |
| const SaveCallback& callback, |
| const base::FilePath& path); |
| void FileSavedAs(const std::string& url, const std::string& file_system_path); |
| void CanceledFileSaveAs(const std::string& url); |
| |
| // AppendToFile implementation: |
| typedef base::Callback<void(void)> AppendCallback; |
| void Append(const std::string& url, |
| const std::string& content, |
| const AppendCallback& callback); |
| void AppendedTo(const std::string& url); |
| |
| void CallClientFunction(const std::string& function_name, |
| const base::Value* arg1, |
| const base::Value* arg2, |
| const base::Value* arg3); |
| |
| // Guaranteed to outlive this object. |
| CefBrowserHostImpl* browser_impl_; |
| PrefService* prefs_; |
| |
| typedef std::map<std::string, base::FilePath> PathsMap; |
| PathsMap saved_files_; |
| scoped_refptr<base::SequencedTaskRunner> file_task_runner_; |
| base::WeakPtrFactory<CefDevToolsFileManager> weak_factory_; |
| |
| DISALLOW_COPY_AND_ASSIGN(CefDevToolsFileManager); |
| }; |
| |
| #endif // CEF_LIBCEF_BROWSER_DEVTOOLS_DEVTOOLS_FILE_MANAGER_H_ |