}
void NativeWindow::OpenDevTools() {
- // For docked devtools we give it to brightray.
- inspectable_web_contents()->ShowDevTools();
+ if (devtools_window_)
+ devtools_window_->Focus(true);
+ else
+ inspectable_web_contents()->ShowDevTools();
}
void NativeWindow::CloseDevTools() {
bool NativeWindow::DevToolsSetDockSide(const std::string& dock_side,
bool* succeed) {
- if (dock_side != "undocked")
+ if (dock_side != "undocked") {
+ // Switch to docked mode.
+ if (devtools_window_) {
+ devtools_window_->Close();
+ devtools_window_.reset();
+ }
return false;
+ }
CloseDevTools();
- Debug(GetWebContents());
+ devtools_window_ = Debug(GetWebContents())->GetWeakPtr();
return true;
}
if (dock_side != "undocked")
return false;
- Debug(GetWebContents());
+ devtools_window_ = Debug(GetWebContents())->GetWeakPtr();
return true;
}
// Should be called by platform code when user want to close the window.
virtual void CloseWebContents();
+ base::WeakPtr<NativeWindow> GetWeakPtr() {
+ return weak_factory_.GetWeakPtr();
+ }
+
content::WebContents* GetWebContents() const;
content::WebContents* GetDevToolsWebContents() const;
base::WeakPtrFactory<NativeWindow> weak_factory_;
+ base::WeakPtr<NativeWindow> devtools_window_;
+
scoped_ptr<DevToolsDelegate> devtools_delegate_;
scoped_ptr<AtomJavaScriptDialogManager> dialog_manager_;
scoped_ptr<brightray::InspectableWebContents> inspectable_web_contents_;