diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index 02ac372f876a..6ec4ea0b679d 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -8,7 +8,6 @@ #include "atom/browser/atom_browser_client.h" #include "atom/browser/atom_browser_context.h" -#include "atom/browser/atom_javascript_dialog_manager.h" #include "atom/browser/native_window.h" #include "atom/browser/web_dialog_helper.h" #include "atom/browser/web_view_manager.h" @@ -201,14 +200,6 @@ content::WebContents* WebContents::OpenURLFromTab( return web_contents(); } -content::JavaScriptDialogManager* WebContents::GetJavaScriptDialogManager( - content::WebContents* source) { - if (!dialog_manager_) - dialog_manager_.reset(new AtomJavaScriptDialogManager); - - return dialog_manager_.get(); -} - void WebContents::RunFileChooser(content::WebContents* guest, const content::FileChooserParams& params) { if (!web_dialog_helper_) diff --git a/atom/browser/api/atom_api_web_contents.h b/atom/browser/api/atom_api_web_contents.h index 97a433ed36ce..e70b25d72353 100644 --- a/atom/browser/api/atom_api_web_contents.h +++ b/atom/browser/api/atom_api_web_contents.h @@ -12,7 +12,6 @@ #include "atom/browser/common_web_contents_delegate.h" #include "content/public/browser/browser_plugin_guest_delegate.h" #include "content/public/common/favicon_url.h" -#include "content/public/browser/web_contents_delegate.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/browser/gpu_data_manager_observer.h" #include "native_mate/handle.h" @@ -28,7 +27,6 @@ class Dictionary; namespace atom { -class AtomJavaScriptDialogManager; class WebDialogHelper; namespace api { @@ -150,8 +148,6 @@ class WebContents : public mate::EventEmitter, content::WebContents* OpenURLFromTab( content::WebContents* source, const content::OpenURLParams& params) override; - content::JavaScriptDialogManager* GetJavaScriptDialogManager( - content::WebContents* source) override; void RunFileChooser(content::WebContents* web_contents, const content::FileChooserParams& params) override; void EnumerateDirectory(content::WebContents* web_contents, @@ -236,7 +232,6 @@ class WebContents : public mate::EventEmitter, gfx::Size GetDefaultSize() const; scoped_ptr web_dialog_helper_; - scoped_ptr dialog_manager_; // Unique ID for a guest WebContents. int guest_instance_id_; diff --git a/atom/browser/common_web_contents_delegate.cc b/atom/browser/common_web_contents_delegate.cc index 46e872384f02..2360a9748c64 100644 --- a/atom/browser/common_web_contents_delegate.cc +++ b/atom/browser/common_web_contents_delegate.cc @@ -4,13 +4,225 @@ #include "atom/browser/common_web_contents_delegate.h" +#include "atom/browser/atom_javascript_dialog_manager.h" +#include "atom/browser/native_window.h" +#include "atom/browser/ui/file_dialog.h" +#include "content/public/browser/child_process_security_policy.h" +#include "content/public/browser/render_process_host.h" +#include "content/public/browser/render_view_host.h" +#include "storage/browser/fileapi/isolated_context.h" + namespace atom { +namespace { + +struct FileSystem { + FileSystem() { + } + FileSystem(const std::string& file_system_name, + const std::string& root_url, + const std::string& file_system_path) + : file_system_name(file_system_name), + root_url(root_url), + file_system_path(file_system_path) { + } + + std::string file_system_name; + std::string root_url; + std::string file_system_path; +}; + +std::string RegisterFileSystem(content::WebContents* web_contents, + const base::FilePath& path, + std::string* registered_name) { + auto isolated_context = storage::IsolatedContext::GetInstance(); + std::string file_system_id = isolated_context->RegisterFileSystemForPath( + storage::kFileSystemTypeNativeLocal, + std::string(), + path, + registered_name); + + content::ChildProcessSecurityPolicy* policy = + content::ChildProcessSecurityPolicy::GetInstance(); + content::RenderViewHost* render_view_host = web_contents->GetRenderViewHost(); + int renderer_id = render_view_host->GetProcess()->GetID(); + policy->GrantReadFileSystem(renderer_id, file_system_id); + policy->GrantWriteFileSystem(renderer_id, file_system_id); + policy->GrantCreateFileForFileSystem(renderer_id, file_system_id); + policy->GrantDeleteFromFileSystem(renderer_id, file_system_id); + + if (!policy->CanReadFile(renderer_id, path)) + policy->GrantReadFile(renderer_id, path); + + return file_system_id; +} + +FileSystem CreateFileSystemStruct( + content::WebContents* web_contents, + const std::string& file_system_id, + const std::string& registered_name, + const std::string& file_system_path) { + const GURL origin = web_contents->GetURL().GetOrigin(); + std::string file_system_name = + storage::GetIsolatedFileSystemName(origin, file_system_id); + std::string root_url = storage::GetIsolatedFileSystemRootURIString( + origin, file_system_id, registered_name); + return FileSystem(file_system_name, root_url, file_system_path); +} + +base::DictionaryValue* CreateFileSystemValue(const FileSystem& file_system) { + base::DictionaryValue* file_system_value = new base::DictionaryValue(); + file_system_value->SetString("fileSystemName", file_system.file_system_name); + file_system_value->SetString("rootURL", file_system.root_url); + file_system_value->SetString("fileSystemPath", file_system.file_system_path); + return file_system_value; +} + +} // namespace + CommonWebContentsDelegate::CommonWebContentsDelegate(bool is_guest) - : is_guest_(is_guest) { + : is_guest_(is_guest), + owner_window_(nullptr) { } CommonWebContentsDelegate::~CommonWebContentsDelegate() { } +void CommonWebContentsDelegate::InitWithWebContents( + content::WebContents* web_contents, + NativeWindow* owner_window) { + owner_window_ = owner_window; + web_contents->SetDelegate(this); + + // Create InspectableWebContents. + web_contents_.reset(brightray::InspectableWebContents::Create(web_contents)); + web_contents_->SetDelegate(this); +} + +void CommonWebContentsDelegate::DestroyWebContents() { + web_contents_.reset(); +} + +content::JavaScriptDialogManager* +CommonWebContentsDelegate::GetJavaScriptDialogManager( + content::WebContents* source) { + if (!dialog_manager_) + dialog_manager_.reset(new AtomJavaScriptDialogManager); + + return dialog_manager_.get(); +} + +content::WebContents* CommonWebContentsDelegate::GetWebContents() const { + if (!web_contents_) + return nullptr; + return web_contents_->GetWebContents(); +} + +content::WebContents* +CommonWebContentsDelegate::GetDevToolsWebContents() const { + if (!web_contents_) + return nullptr; + return web_contents_->GetDevToolsWebContents(); +} + +void CommonWebContentsDelegate::DevToolsSaveToFile( + const std::string& url, const std::string& content, bool save_as) { + base::FilePath path; + PathsMap::iterator it = saved_files_.find(url); + if (it != saved_files_.end() && !save_as) { + path = it->second; + } else { + file_dialog::Filters filters; + base::FilePath default_path(base::FilePath::FromUTF8Unsafe(url)); + if (!file_dialog::ShowSaveDialog(owner_window_, url, default_path, + filters, &path)) { + base::StringValue url_value(url); + web_contents_->CallClientFunction( + "DevToolsAPI.canceledSaveURL", &url_value, nullptr, nullptr); + return; + } + } + + saved_files_[url] = path; + base::WriteFile(path, content.data(), content.size()); + + // Notify devtools. + base::StringValue url_value(url); + web_contents_->CallClientFunction( + "DevToolsAPI.savedURL", &url_value, nullptr, nullptr); +} + +void CommonWebContentsDelegate::DevToolsAppendToFile( + const std::string& url, const std::string& content) { + PathsMap::iterator it = saved_files_.find(url); + if (it == saved_files_.end()) + return; + base::AppendToFile(it->second, content.data(), content.size()); + + // Notify devtools. + base::StringValue url_value(url); + web_contents_->CallClientFunction( + "DevToolsAPI.appendedToURL", &url_value, nullptr, nullptr); +} + +void CommonWebContentsDelegate::DevToolsAddFileSystem() { + file_dialog::Filters filters; + base::FilePath default_path; + std::vector paths; + int flag = file_dialog::FILE_DIALOG_OPEN_DIRECTORY; + if (!file_dialog::ShowOpenDialog(owner_window_, "", default_path, + filters, flag, &paths)) + return; + + base::FilePath path = paths[0]; + std::string registered_name; + std::string file_system_id = RegisterFileSystem(GetDevToolsWebContents(), + path, + ®istered_name); + + WorkspaceMap::iterator it = saved_paths_.find(file_system_id); + if (it != saved_paths_.end()) + return; + + saved_paths_[file_system_id] = path; + + FileSystem file_system = CreateFileSystemStruct(GetDevToolsWebContents(), + file_system_id, + registered_name, + path.AsUTF8Unsafe()); + + scoped_ptr error_string_value( + new base::StringValue(std::string())); + scoped_ptr file_system_value; + if (!file_system.file_system_path.empty()) + file_system_value.reset(CreateFileSystemValue(file_system)); + web_contents_->CallClientFunction( + "DevToolsAPI.fileSystemAdded", + error_string_value.get(), + file_system_value.get(), + nullptr); +} + +void CommonWebContentsDelegate::DevToolsRemoveFileSystem( + const std::string& file_system_path) { + if (!web_contents_) + return; + + base::FilePath path = base::FilePath::FromUTF8Unsafe(file_system_path); + storage::IsolatedContext::GetInstance()->RevokeFileSystemByPath(path); + + for (auto it = saved_paths_.begin(); it != saved_paths_.end(); ++it) + if (it->second == path) { + saved_paths_.erase(it); + break; + } + + base::StringValue file_system_path_value(file_system_path); + web_contents_->CallClientFunction( + "DevToolsAPI.fileSystemRemoved", + &file_system_path_value, + nullptr, + nullptr); +} + } // namespace atom diff --git a/atom/browser/common_web_contents_delegate.h b/atom/browser/common_web_contents_delegate.h index f449bf23b9b3..d383aac1ad00 100644 --- a/atom/browser/common_web_contents_delegate.h +++ b/atom/browser/common_web_contents_delegate.h @@ -5,20 +5,82 @@ #ifndef ATOM_BROWSER_COMMON_WEB_CONTENTS_DELEGATE_H_ #define ATOM_BROWSER_COMMON_WEB_CONTENTS_DELEGATE_H_ +#include + #include "brightray/browser/default_web_contents_delegate.h" +#include "brightray/browser/inspectable_web_contents_impl.h" +#include "brightray/browser/inspectable_web_contents_delegate.h" namespace atom { -class CommonWebContentsDelegate : public brightray::DefaultWebContentsDelegate { +class AtomJavaScriptDialogManager; +class NativeWindow; + +class CommonWebContentsDelegate + : public brightray::DefaultWebContentsDelegate, + public brightray::InspectableWebContentsDelegate { public: explicit CommonWebContentsDelegate(bool is_guest); virtual ~CommonWebContentsDelegate(); + // Create a InspectableWebContents object and takes onwership of + // |web_contents|. + void InitWithWebContents(content::WebContents* web_contents, + NativeWindow* owner_window); + + // Destroy the managed InspectableWebContents object. + void DestroyWebContents(); + + // Returns the WebContents managed by this delegate. + content::WebContents* GetWebContents() const; + + // Returns the WebContents of devtools. + content::WebContents* GetDevToolsWebContents() const; + + brightray::InspectableWebContents* inspectable_web_contents() const { + return web_contents_.get(); + } + bool is_guest() const { return is_guest_; }; + protected: + // content::WebContentsDelegate: + content::JavaScriptDialogManager* GetJavaScriptDialogManager( + content::WebContents* source) override; + + // brightray::InspectableWebContentsDelegate: + void DevToolsSaveToFile(const std::string& url, + const std::string& content, + bool save_as) override; + void DevToolsAppendToFile(const std::string& url, + const std::string& content) override; + void DevToolsAddFileSystem() override; + void DevToolsRemoveFileSystem(const std::string& file_system_path) override; + private: + // Whether this is guest WebContents or NativeWindow. const bool is_guest_; + // The window that this WebContents belongs to. + NativeWindow* owner_window_; + + scoped_ptr dialog_manager_; + + // The stored InspectableWebContents object. + // Notice that web_contents_ must be placed after dialog_manager_, so we can + // make sure web_contents_ is destroyed before dialog_manager_, otherwise a + // crash would happen. + scoped_ptr web_contents_; + + // Maps url to file path, used by the file requests sent from devtools. + typedef std::map PathsMap; + PathsMap saved_files_; + + // Maps file system id to file path, used by the file system requests + // sent from devtools. + typedef std::map WorkspaceMap; + WorkspaceMap saved_paths_; + DISALLOW_COPY_AND_ASSIGN(CommonWebContentsDelegate); }; diff --git a/atom/browser/native_window.cc b/atom/browser/native_window.cc index 6c11e97e96a6..b286caf6c480 100644 --- a/atom/browser/native_window.cc +++ b/atom/browser/native_window.cc @@ -9,9 +9,7 @@ #include #include "atom/browser/atom_browser_context.h" -#include "atom/browser/atom_javascript_dialog_manager.h" #include "atom/browser/browser.h" -#include "atom/browser/ui/file_dialog.h" #include "atom/browser/web_dialog_helper.h" #include "atom/browser/window_list.h" #include "atom/common/api/api_messages.h" @@ -33,7 +31,6 @@ #include "chrome/browser/printing/print_view_manager_basic.h" #include "chrome/browser/ui/browser_dialogs.h" #include "content/browser/renderer_host/render_widget_host_impl.h" -#include "content/public/browser/child_process_security_policy.h" #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/invalidate_type.h" #include "content/public/browser/navigation_entry.h" @@ -51,7 +48,6 @@ #include "content/public/common/web_preferences.h" #include "ipc/ipc_message_macros.h" #include "native_mate/dictionary.h" -#include "storage/browser/fileapi/isolated_context.h" #include "ui/gfx/codec/png_codec.h" #include "ui/gfx/geometry/size_conversions.h" #include "ui/gfx/geometry/point.h" @@ -91,62 +87,6 @@ std::string RemoveWhitespace(const std::string& str) { return str; } -storage::IsolatedContext* isolated_context() { - storage::IsolatedContext* context = - storage::IsolatedContext::GetInstance(); - DCHECK(context); - return context; -} - -std::string RegisterFileSystem(content::WebContents* web_contents, - const base::FilePath& path, - std::string* registered_name) { - std::string file_system_id = isolated_context()->RegisterFileSystemForPath( - storage::kFileSystemTypeNativeLocal, - std::string(), - path, - registered_name); - - content::ChildProcessSecurityPolicy* policy = - content::ChildProcessSecurityPolicy::GetInstance(); - content::RenderViewHost* render_view_host = web_contents->GetRenderViewHost(); - int renderer_id = render_view_host->GetProcess()->GetID(); - policy->GrantReadFileSystem(renderer_id, file_system_id); - policy->GrantWriteFileSystem(renderer_id, file_system_id); - policy->GrantCreateFileForFileSystem(renderer_id, file_system_id); - policy->GrantDeleteFromFileSystem(renderer_id, file_system_id); - - if (!policy->CanReadFile(renderer_id, path)) - policy->GrantReadFile(renderer_id, path); - - return file_system_id; -} - -NativeWindow::FileSystem CreateFileSystemStruct( - content::WebContents* web_contents, - const std::string& file_system_id, - const std::string& registered_name, - const std::string& file_system_path) { - const GURL origin = web_contents->GetURL().GetOrigin(); - std::string file_system_name = - storage::GetIsolatedFileSystemName(origin, file_system_id); - std::string root_url = storage::GetIsolatedFileSystemRootURIString( - origin, file_system_id, registered_name); - - return NativeWindow::FileSystem(file_system_name, - root_url, - file_system_path); -} - -base::DictionaryValue* CreateFileSystemValue( - NativeWindow::FileSystem file_system) { - base::DictionaryValue* file_system_value = new base::DictionaryValue(); - file_system_value->SetString("fileSystemName", file_system.file_system_name); - file_system_value->SetString("rootURL", file_system.root_url); - file_system_value->SetString("fileSystemPath", file_system.file_system_path); - return file_system_value; -} - } // namespace NativeWindow::NativeWindow(content::WebContents* web_contents, @@ -162,11 +102,11 @@ NativeWindow::NativeWindow(content::WebContents* web_contents, html_fullscreen_(false), native_fullscreen_(false), zoom_factor_(1.0), - weak_factory_(this), - inspectable_web_contents_( - brightray::InspectableWebContents::Create(web_contents)) { + weak_factory_(this) { printing::PrintViewManagerBasic::CreateForWebContents(web_contents); + InitWithWebContents(web_contents, this); + options.Get(switches::kFrame, &has_frame_); options.Get(switches::kTransparent, &transparent_); options.Get(switches::kEnableLargerThanScreen, &enable_larger_than_screen_); @@ -198,9 +138,6 @@ NativeWindow::NativeWindow(content::WebContents* web_contents, // Read the zoom factor before any navigation. options.Get(switches::kZoomFactor, &zoom_factor_); - web_contents->SetDelegate(this); - inspectable_web_contents()->SetDelegate(this); - WindowList::AddWindow(this); // Override the user agent to contain application and atom-shell's version. @@ -431,13 +368,6 @@ void NativeWindow::CapturePage(const gfx::Rect& rect, kBGRA_8888_SkColorType); } -void NativeWindow::DestroyWebContents() { - if (!inspectable_web_contents_) - return; - - inspectable_web_contents_.reset(); -} - void NativeWindow::CloseWebContents() { bool prevent_default = false; FOR_EACH_OBSERVER(NativeWindowObserver, @@ -467,18 +397,6 @@ void NativeWindow::CloseWebContents() { web_contents->Close(); } -content::WebContents* NativeWindow::GetWebContents() const { - if (!inspectable_web_contents_) - return nullptr; - return inspectable_web_contents()->GetWebContents(); -} - -content::WebContents* NativeWindow::GetDevToolsWebContents() const { - if (!inspectable_web_contents_) - return nullptr; - return inspectable_web_contents()->devtools_web_contents(); -} - void NativeWindow::AppendExtraCommandLineSwitches( base::CommandLine* command_line) { // Append --node-integration to renderer process. @@ -694,14 +612,6 @@ content::WebContents* NativeWindow::OpenURLFromTab( return source; } -content::JavaScriptDialogManager* NativeWindow::GetJavaScriptDialogManager( - content::WebContents* source) { - if (!dialog_manager_) - dialog_manager_.reset(new AtomJavaScriptDialogManager); - - return dialog_manager_.get(); -} - void NativeWindow::RenderViewCreated( content::RenderViewHost* render_view_host) { if (!transparent_) @@ -858,107 +768,10 @@ void NativeWindow::Observe(int type, } } -void NativeWindow::DevToolsSaveToFile(const std::string& url, - const std::string& content, - bool save_as) { - base::FilePath path; - PathsMap::iterator it = saved_files_.find(url); - if (it != saved_files_.end() && !save_as) { - path = it->second; - } else { - file_dialog::Filters filters; - base::FilePath default_path(base::FilePath::FromUTF8Unsafe(url)); - if (!file_dialog::ShowSaveDialog(this, url, default_path, filters, &path)) { - base::StringValue url_value(url); - inspectable_web_contents()->CallClientFunction( - "DevToolsAPI.canceledSaveURL", &url_value, nullptr, nullptr); - return; - } - } - - saved_files_[url] = path; - base::WriteFile(path, content.data(), content.size()); - - // Notify devtools. - base::StringValue url_value(url); - inspectable_web_contents()->CallClientFunction( - "DevToolsAPI.savedURL", &url_value, nullptr, nullptr); -} - -void NativeWindow::DevToolsAppendToFile(const std::string& url, - const std::string& content) { - PathsMap::iterator it = saved_files_.find(url); - if (it == saved_files_.end()) - return; - base::AppendToFile(it->second, content.data(), content.size()); - - // Notify devtools. - base::StringValue url_value(url); - inspectable_web_contents()->CallClientFunction( - "DevToolsAPI.appendedToURL", &url_value, nullptr, nullptr); -} - void NativeWindow::DevToolsFocused() { FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnDevToolsFocus()); } -void NativeWindow::DevToolsAddFileSystem() { - file_dialog::Filters filters; - base::FilePath default_path; - std::vector paths; - int flag = file_dialog::FILE_DIALOG_OPEN_DIRECTORY; - if (!file_dialog::ShowOpenDialog(this, "", default_path, - filters, flag, &paths)) - return; - - base::FilePath path = paths[0]; - std::string registered_name; - std::string file_system_id = RegisterFileSystem(GetDevToolsWebContents(), - path, - ®istered_name); - - WorkspaceMap::iterator it = saved_paths_.find(file_system_id); - if (it != saved_paths_.end()) - return; - - saved_paths_[file_system_id] = path; - - FileSystem file_system = CreateFileSystemStruct(GetDevToolsWebContents(), - file_system_id, - registered_name, - path.AsUTF8Unsafe()); - - scoped_ptr error_string_value( - new base::StringValue(std::string())); - scoped_ptr file_system_value; - if (!file_system.file_system_path.empty()) - file_system_value.reset(CreateFileSystemValue(file_system)); - inspectable_web_contents()->CallClientFunction( - "DevToolsAPI.fileSystemAdded", - error_string_value.get(), - file_system_value.get(), - nullptr); -} - -void NativeWindow::DevToolsRemoveFileSystem( - const std::string& file_system_path) { - base::FilePath path = base::FilePath::FromUTF8Unsafe(file_system_path); - isolated_context()->RevokeFileSystemByPath(path); - - for (auto it = saved_paths_.begin(); it != saved_paths_.end(); ++it) - if (it->second == path) { - saved_paths_.erase(it); - break; - } - - base::StringValue file_system_path_value(file_system_path); - inspectable_web_contents()->CallClientFunction( - "DevToolsAPI.fileSystemRemoved", - &file_system_path_value, - nullptr, - nullptr); -} - void NativeWindow::ScheduleUnresponsiveEvent(int ms) { if (!window_unresposive_closure_.IsCancelled()) return; diff --git a/atom/browser/native_window.h b/atom/browser/native_window.h index 2cfbe135ef67..841bfe56b52b 100644 --- a/atom/browser/native_window.h +++ b/atom/browser/native_window.h @@ -16,8 +16,6 @@ #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" -#include "brightray/browser/inspectable_web_contents_delegate.h" -#include "brightray/browser/inspectable_web_contents_impl.h" #include "content/public/browser/notification_registrar.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/readback_types.h" @@ -50,33 +48,15 @@ class MenuModel; namespace atom { -class AtomJavaScriptDialogManager; struct DraggableRegion; class WebDialogHelper; class NativeWindow : public CommonWebContentsDelegate, - public brightray::InspectableWebContentsDelegate, public content::WebContentsObserver, public content::NotificationObserver { public: typedef base::Callback CapturePageCallback; - struct FileSystem { - FileSystem() { - } - FileSystem(const std::string& file_system_name, - const std::string& root_url, - const std::string& file_system_path) - : file_system_name(file_system_name), - root_url(root_url), - file_system_path(file_system_path) { - } - - std::string file_system_name; - std::string root_url; - std::string file_system_path; - }; - class DialogScope { public: explicit DialogScope(NativeWindow* window) @@ -197,16 +177,10 @@ class NativeWindow : public CommonWebContentsDelegate, // Should be called by platform code when user want to close the window. virtual void CloseWebContents(); - // Destroy the WebContents immediately. - virtual void DestroyWebContents(); - base::WeakPtr GetWeakPtr() { return weak_factory_.GetWeakPtr(); } - content::WebContents* GetWebContents() const; - content::WebContents* GetDevToolsWebContents() const; - // Called when renderer process is going to be started. void AppendExtraCommandLineSwitches(base::CommandLine* command_line); void OverrideWebkitPrefs(content::WebPreferences* prefs); @@ -251,11 +225,6 @@ class NativeWindow : public CommonWebContentsDelegate, explicit NativeWindow(content::WebContents* web_contents, const mate::Dictionary& options); - brightray::InspectableWebContentsImpl* inspectable_web_contents() const { - return static_cast( - inspectable_web_contents_.get()); - } - // Called when the window needs to update its draggable region. virtual void UpdateDraggableRegions( const std::vector& regions) = 0; @@ -273,8 +242,6 @@ class NativeWindow : public CommonWebContentsDelegate, content::WebContents* OpenURLFromTab( content::WebContents* source, const content::OpenURLParams& params) override; - content::JavaScriptDialogManager* GetJavaScriptDialogManager( - content::WebContents* source) override; void BeforeUnloadFired(content::WebContents* tab, bool proceed, bool* proceed_to_fire_unload) override; @@ -317,14 +284,7 @@ class NativeWindow : public CommonWebContentsDelegate, const content::NotificationDetails& details) override; // Implementations of brightray::InspectableWebContentsDelegate. - void DevToolsSaveToFile(const std::string& url, - const std::string& content, - bool save_as) override; - void DevToolsAppendToFile(const std::string& url, - const std::string& content) override; void DevToolsFocused() override; - void DevToolsAddFileSystem() override; - void DevToolsRemoveFileSystem(const std::string& file_system_path) override; // Whether window has standard frame. bool has_frame_; @@ -387,21 +347,6 @@ class NativeWindow : public CommonWebContentsDelegate, base::WeakPtrFactory weak_factory_; scoped_ptr web_dialog_helper_; - scoped_ptr dialog_manager_; - - // Notice that inspectable_web_contents_ must be placed after dialog_manager_, - // so we can make sure inspectable_web_contents_ is destroyed before - // dialog_manager_, otherwise a crash would happen. - scoped_ptr inspectable_web_contents_; - - // Maps url to file path, used by the file requests sent from devtools. - typedef std::map PathsMap; - PathsMap saved_files_; - - // Maps file system id to file path, used by the file system requests - // sent from devtools. - typedef std::map WorkspaceMap; - WorkspaceMap saved_paths_; DISALLOW_COPY_AND_ASSIGN(NativeWindow); }; diff --git a/vendor/brightray b/vendor/brightray index d888f67b75a3..190c3dd16291 160000 --- a/vendor/brightray +++ b/vendor/brightray @@ -1 +1 @@ -Subproject commit d888f67b75a387181475df4eef062fab1bffee72 +Subproject commit 190c3dd1629141027f0962d0fab82c58853e7c85