Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(369)

Unified Diff: webkit/glue/webdevtoolsclient_impl.cc

Issue 113836: DevTools: introduce bound object on the agent side. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webkit/glue/webdevtoolsclient_impl.h ('k') | webkit/glue/webframeloaderclient_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/glue/webdevtoolsclient_impl.cc
===================================================================
--- webkit/glue/webdevtoolsclient_impl.cc (revision 16977)
+++ webkit/glue/webdevtoolsclient_impl.cc (working copy)
@@ -25,10 +25,10 @@
#include "base/string_util.h"
#include "base/values.h"
#include "webkit/api/public/WebScriptSource.h"
+#include "webkit/glue/devtools/bound_object.h"
#include "webkit/glue/devtools/debugger_agent.h"
#include "webkit/glue/devtools/devtools_rpc_js.h"
#include "webkit/glue/devtools/dom_agent.h"
-#include "webkit/glue/devtools/net_agent.h"
#include "webkit/glue/devtools/tools_agent.h"
#include "webkit/glue/glue_util.h"
#include "webkit/glue/webdevtoolsclient_delegate.h"
@@ -44,8 +44,6 @@
DebuggerAgentDelegate, DEBUGGER_AGENT_DELEGATE_STRUCT)
DEFINE_RPC_JS_BOUND_OBJ(DomAgent, DOM_AGENT_STRUCT,
DomAgentDelegate, DOM_AGENT_DELEGATE_STRUCT)
-DEFINE_RPC_JS_BOUND_OBJ(NetAgent, NET_AGENT_STRUCT,
- NetAgentDelegate, NET_AGENT_DELEGATE_STRUCT)
DEFINE_RPC_JS_BOUND_OBJ(ToolsAgent, TOOLS_AGENT_STRUCT,
ToolsAgentDelegate, TOOLS_AGENT_DELEGATE_STRUCT)
@@ -99,59 +97,30 @@
debugger_agent_obj_.set(new JsDebuggerAgentBoundObj(
this, frame, L"RemoteDebuggerAgent"));
dom_agent_obj_.set(new JsDomAgentBoundObj(this, frame, L"RemoteDomAgent"));
- net_agent_obj_.set(new JsNetAgentBoundObj(this, frame, L"RemoteNetAgent"));
tools_agent_obj_.set(
new JsToolsAgentBoundObj(this, frame, L"RemoteToolsAgent"));
- WebDevToolsClientImpl::InitBoundObject();
v8::HandleScope scope;
v8::Handle<v8::Context> frame_context = V8Proxy::GetContext(frame->frame());
- v8::Context::Scope frame_scope(frame_context);
-
- v8::Local<v8::Function> constructor = host_template_->GetFunction();
- v8::Local<v8::Object> host_obj = SafeAllocation::NewInstance(constructor);
-
- v8::Handle<v8::Object> global = frame_context->Global();
- global->Set(v8::String::New("DevToolsHost"), host_obj);
+ dev_tools_host_.set(new BoundObject(frame_context, this, "DevToolsHost"));
+ dev_tools_host_->AddProtoFunction(
+ "addSourceToFrame",
+ WebDevToolsClientImpl::JsAddSourceToFrame);
+ dev_tools_host_->AddProtoFunction(
+ "loaded",
+ WebDevToolsClientImpl::JsLoaded);
+ dev_tools_host_->AddProtoFunction(
+ "search",
+ WebCore::V8Custom::v8InspectorControllerSearchCallback);
+ dev_tools_host_->AddProtoFunction(
+ "activateWindow",
+ WebDevToolsClientImpl::JsActivateWindow);
+ dev_tools_host_->Build();
}
WebDevToolsClientImpl::~WebDevToolsClientImpl() {
- host_template_.Dispose();
- v8_this_.Dispose();
}
-void WebDevToolsClientImpl::InitBoundObject() {
- v8::HandleScope scope;
- v8::Local<v8::FunctionTemplate> local_template =
- v8::FunctionTemplate::New(V8Proxy::CheckNewLegal);
- host_template_ = v8::Persistent<v8::FunctionTemplate>::New(local_template);
- v8_this_ = v8::Persistent<v8::External>::New(v8::External::New(this));
-
- InitProtoFunction("addSourceToFrame",
- WebDevToolsClientImpl::JsAddSourceToFrame);
- InitProtoFunction("loaded",
- WebDevToolsClientImpl::JsLoaded);
- InitProtoFunction("search",
- WebCore::V8Custom::v8InspectorControllerSearchCallback);
- InitProtoFunction("activateWindow",
- WebDevToolsClientImpl::JsActivateWindow);
- host_template_->SetClassName(v8::String::New("DevToolsHost"));
-}
-
-void WebDevToolsClientImpl::InitProtoFunction(
- const char* name,
- v8::InvocationCallback callback) {
- v8::Local<v8::Signature> signature = v8::Signature::New(host_template_);
- v8::Local<v8::ObjectTemplate> proto = host_template_->PrototypeTemplate();
- proto->Set(
- v8::String::New(name),
- v8::FunctionTemplate::New(
- callback,
- v8_this_,
- signature),
- static_cast<v8::PropertyAttribute>(v8::DontDelete));
-}
-
void WebDevToolsClientImpl::DispatchMessageFromAgent(
const std::string& raw_msg) {
if (!loaded_) {
« no previous file with comments | « webkit/glue/webdevtoolsclient_impl.h ('k') | webkit/glue/webframeloaderclient_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698