add open devtools api to webview tag
This commit is contained in:
parent
5e99c8f280
commit
368d23ef5b
3 changed files with 47 additions and 2 deletions
|
@ -10,6 +10,9 @@
|
||||||
#include "atom/common/native_mate_converters/gurl_converter.h"
|
#include "atom/common/native_mate_converters/gurl_converter.h"
|
||||||
#include "atom/common/native_mate_converters/string16_converter.h"
|
#include "atom/common/native_mate_converters/string16_converter.h"
|
||||||
#include "atom/common/native_mate_converters/value_converter.h"
|
#include "atom/common/native_mate_converters/value_converter.h"
|
||||||
|
#include "atom/browser/atom_javascript_dialog_manager.h"
|
||||||
|
#include "brightray/browser/inspectable_web_contents.h"
|
||||||
|
#include "brightray/browser/inspectable_web_contents_view.h"
|
||||||
#include "base/strings/utf_string_conversions.h"
|
#include "base/strings/utf_string_conversions.h"
|
||||||
#include "content/public/browser/render_frame_host.h"
|
#include "content/public/browser/render_frame_host.h"
|
||||||
#include "content/public/browser/render_process_host.h"
|
#include "content/public/browser/render_process_host.h"
|
||||||
|
@ -37,7 +40,8 @@ WebContents::WebContents(content::WebContents* web_contents)
|
||||||
: content::WebContentsObserver(web_contents),
|
: content::WebContentsObserver(web_contents),
|
||||||
guest_instance_id_(-1),
|
guest_instance_id_(-1),
|
||||||
guest_opaque_(true),
|
guest_opaque_(true),
|
||||||
auto_size_enabled_(false) {
|
auto_size_enabled_(false)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
WebContents::WebContents(const mate::Dictionary& options)
|
WebContents::WebContents(const mate::Dictionary& options)
|
||||||
|
@ -58,6 +62,9 @@ WebContents::WebContents(const mate::Dictionary& options)
|
||||||
storage_.reset(content::WebContents::Create(params));
|
storage_.reset(content::WebContents::Create(params));
|
||||||
storage_->SetDelegate(this);
|
storage_->SetDelegate(this);
|
||||||
Observe(storage_.get());
|
Observe(storage_.get());
|
||||||
|
|
||||||
|
inspectable_web_contents_.reset(brightray::InspectableWebContents::Create(storage_.get()));
|
||||||
|
// inspectable_web_contents()->SetDelegate(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
WebContents::~WebContents() {
|
WebContents::~WebContents() {
|
||||||
|
@ -368,6 +375,10 @@ void WebContents::ExecuteJavaScript(const base::string16& code) {
|
||||||
web_contents()->GetMainFrame()->ExecuteJavaScript(code);
|
web_contents()->GetMainFrame()->ExecuteJavaScript(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebContents::OpenDevTools() {
|
||||||
|
inspectable_web_contents()->ShowDevTools();
|
||||||
|
}
|
||||||
|
|
||||||
bool WebContents::SendIPCMessage(const base::string16& channel,
|
bool WebContents::SendIPCMessage(const base::string16& channel,
|
||||||
const base::ListValue& args) {
|
const base::ListValue& args) {
|
||||||
return Send(new AtomViewMsg_Message(routing_id(), channel, args));
|
return Send(new AtomViewMsg_Message(routing_id(), channel, args));
|
||||||
|
@ -442,6 +453,7 @@ mate::ObjectTemplateBuilder WebContents::GetObjectTemplateBuilder(
|
||||||
.SetMethod("setAutoSize", &WebContents::SetAutoSize)
|
.SetMethod("setAutoSize", &WebContents::SetAutoSize)
|
||||||
.SetMethod("setAllowTransparency", &WebContents::SetAllowTransparency)
|
.SetMethod("setAllowTransparency", &WebContents::SetAllowTransparency)
|
||||||
.SetMethod("isGuest", &WebContents::is_guest)
|
.SetMethod("isGuest", &WebContents::is_guest)
|
||||||
|
.SetMethod("openDevTools", &WebContents::OpenDevTools)
|
||||||
.Build());
|
.Build());
|
||||||
|
|
||||||
return mate::ObjectTemplateBuilder(
|
return mate::ObjectTemplateBuilder(
|
||||||
|
|
|
@ -11,20 +11,32 @@
|
||||||
#include "content/public/browser/browser_plugin_guest_delegate.h"
|
#include "content/public/browser/browser_plugin_guest_delegate.h"
|
||||||
#include "content/public/browser/web_contents_delegate.h"
|
#include "content/public/browser/web_contents_delegate.h"
|
||||||
#include "content/public/browser/web_contents_observer.h"
|
#include "content/public/browser/web_contents_observer.h"
|
||||||
|
#include "brightray/browser/default_web_contents_delegate.h"
|
||||||
|
#include "brightray/browser/inspectable_web_contents_delegate.h"
|
||||||
|
#include "brightray/browser/inspectable_web_contents_impl.h"
|
||||||
#include "native_mate/handle.h"
|
#include "native_mate/handle.h"
|
||||||
|
|
||||||
namespace mate {
|
namespace mate {
|
||||||
class Dictionary;
|
class Dictionary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace brightray
|
||||||
|
{
|
||||||
|
class InspectableWebContents;
|
||||||
|
class InspectableWebContentsImpl;
|
||||||
|
}
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
|
||||||
|
class AtomJavaScriptDialogManager;
|
||||||
|
|
||||||
namespace api {
|
namespace api {
|
||||||
|
|
||||||
class WebContents : public mate::EventEmitter,
|
class WebContents : public mate::EventEmitter,
|
||||||
public content::BrowserPluginGuestDelegate,
|
public content::BrowserPluginGuestDelegate,
|
||||||
public content::WebContentsDelegate,
|
public content::WebContentsDelegate,
|
||||||
public content::WebContentsObserver {
|
public content::WebContentsObserver {
|
||||||
|
// public brightray::InspectableWebContentsDelegate {
|
||||||
public:
|
public:
|
||||||
// Create from an existing WebContents.
|
// Create from an existing WebContents.
|
||||||
static mate::Handle<WebContents> CreateFrom(
|
static mate::Handle<WebContents> CreateFrom(
|
||||||
|
@ -57,6 +69,7 @@ class WebContents : public mate::EventEmitter,
|
||||||
void SetUserAgent(const std::string& user_agent);
|
void SetUserAgent(const std::string& user_agent);
|
||||||
void InsertCSS(const std::string& css);
|
void InsertCSS(const std::string& css);
|
||||||
void ExecuteJavaScript(const base::string16& code);
|
void ExecuteJavaScript(const base::string16& code);
|
||||||
|
void OpenDevTools();
|
||||||
bool SendIPCMessage(const base::string16& channel,
|
bool SendIPCMessage(const base::string16& channel,
|
||||||
const base::ListValue& args);
|
const base::ListValue& args);
|
||||||
|
|
||||||
|
@ -83,6 +96,18 @@ class WebContents : public mate::EventEmitter,
|
||||||
explicit WebContents(const mate::Dictionary& options);
|
explicit WebContents(const mate::Dictionary& options);
|
||||||
~WebContents();
|
~WebContents();
|
||||||
|
|
||||||
|
brightray::InspectableWebContentsImpl* inspectable_web_contents() const {
|
||||||
|
return static_cast<brightray::InspectableWebContentsImpl*>(
|
||||||
|
inspectable_web_contents_.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Devtools
|
||||||
|
/* 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; */
|
||||||
|
|
||||||
// mate::Wrappable:
|
// mate::Wrappable:
|
||||||
virtual mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
|
virtual mate::ObjectTemplateBuilder GetObjectTemplateBuilder(
|
||||||
v8::Isolate* isolate) override;
|
v8::Isolate* isolate) override;
|
||||||
|
@ -180,6 +205,13 @@ class WebContents : public mate::EventEmitter,
|
||||||
// The WebContents that attaches this guest view.
|
// The WebContents that attaches this guest view.
|
||||||
content::WebContents* embedder_web_contents_;
|
content::WebContents* embedder_web_contents_;
|
||||||
|
|
||||||
|
scoped_ptr<AtomJavaScriptDialogManager> 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<brightray::InspectableWebContents> inspectable_web_contents_;
|
||||||
|
|
||||||
// The size of the container element.
|
// The size of the container element.
|
||||||
gfx::Size element_size_;
|
gfx::Size element_size_;
|
||||||
|
|
||||||
|
|
|
@ -517,7 +517,8 @@ registerWebViewElement = ->
|
||||||
"isCrashed"
|
"isCrashed"
|
||||||
"setUserAgent"
|
"setUserAgent"
|
||||||
"executeJavaScript"
|
"executeJavaScript"
|
||||||
"insertCSS"
|
"insertCSS",
|
||||||
|
"openDevTools",
|
||||||
"send"
|
"send"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue