| Index: webkit/glue/devtools/debugger_agent_impl.cc
|
| ===================================================================
|
| --- webkit/glue/devtools/debugger_agent_impl.cc (revision 14723)
|
| +++ webkit/glue/devtools/debugger_agent_impl.cc (working copy)
|
| @@ -17,6 +17,7 @@
|
| #include "grit/webkit_resources.h"
|
| #include "V8Binding.h"
|
| #include "V8DOMWindow.h"
|
| +#include "v8_binding.h"
|
| #include "v8_index.h"
|
| #include "v8_proxy.h"
|
| #include "webkit/glue/devtools/debugger_agent_impl.h"
|
| @@ -111,32 +112,44 @@
|
| v8::Script::Compile(v8::String::New(jsonjs.as_string().c_str()))->Run();
|
| StringPiece injectjs = webkit_glue::GetDataResource(IDR_DEVTOOLS_INJECT_JS);
|
| v8::Script::Compile(v8::String::New(injectjs.as_string().c_str()))->Run();
|
| + StringPiece inject_dispatchjs = webkit_glue::GetDataResource(
|
| + IDR_DEVTOOLS_INJECT_DISPATCH_JS);
|
| + v8::Script::Compile(v8::String::New(
|
| + inject_dispatchjs.as_string().c_str()))->Run();
|
| }
|
|
|
| String DebuggerAgentImpl::ExecuteUtilityFunction(
|
| const String &function_name,
|
| Node* node,
|
| - const String& json_args) {
|
| + const String& json_args,
|
| + String* exception) {
|
| v8::HandleScope scope;
|
| ASSERT(!context_.IsEmpty());
|
| v8::Context::Scope context_scope(context_);
|
| v8::Handle<v8::Function> function = v8::Local<v8::Function>::Cast(
|
| - context_->Global()->Get(v8::String::New(function_name.utf8().data())));
|
| + context_->Global()->Get(v8::String::New("devtools$$dispatch")));
|
|
|
| v8::Handle<v8::Value> node_wrapper =
|
| V8Proxy::ToV8Object(V8ClassIndex::NODE, node);
|
| + v8::Handle<v8::String> function_name_wrapper = v8::Handle<v8::String>(
|
| + v8::String::New(function_name.utf8().data()));
|
| v8::Handle<v8::String> json_args_wrapper = v8::Handle<v8::String>(
|
| v8::String::New(json_args.utf8().data()));
|
| v8::Handle<v8::Value> args[] = {
|
| + function_name_wrapper,
|
| node_wrapper,
|
| json_args_wrapper
|
| };
|
|
|
| - v8::Handle<v8::Value> res_obj = function->Call(
|
| - context_->Global(), 2, args);
|
| -
|
| - v8::Handle<v8::String> res_json = v8::Handle<v8::String>::Cast(res_obj);
|
| - return WebCore::toWebCoreString(res_json);
|
| + v8::TryCatch try_catch;
|
| + v8::Handle<v8::Value> res_obj = function->Call(context_->Global(), 3, args);
|
| + if (try_catch.HasCaught()) {
|
| + *exception = WebCore::ToWebCoreString(try_catch.Message()->Get());
|
| + return "";
|
| + } else {
|
| + v8::Handle<v8::String> res_json = v8::Handle<v8::String>::Cast(res_obj);
|
| + return WebCore::toWebCoreString(res_json);
|
| + }
|
| }
|
|
|
| void DebuggerAgentImpl::RunWithDeferredMessages(
|
|
|