summaryrefslogtreecommitdiffstats
path: root/webkit/glue/devtools/debugger_agent_impl.cc
diff options
context:
space:
mode:
authorpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-15 13:04:38 +0000
committerpfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-15 13:04:38 +0000
commit1149bde26565fa08c3e14103ec5b02c00db82cf9 (patch)
treeffbf7e7e68404cea2c856a156a78f0ac2305e757 /webkit/glue/devtools/debugger_agent_impl.cc
parent86999474ab7a6f6a07f4c868e8be52414457c02f (diff)
downloadchromium_src-1149bde26565fa08c3e14103ec5b02c00db82cf9.zip
chromium_src-1149bde26565fa08c3e14103ec5b02c00db82cf9.tar.gz
chromium_src-1149bde26565fa08c3e14103ec5b02c00db82cf9.tar.bz2
DevTools: Add exception handling support into the window context evaluation.
Review URL: http://codereview.chromium.org/126122 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@18382 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/glue/devtools/debugger_agent_impl.cc')
-rw-r--r--webkit/glue/devtools/debugger_agent_impl.cc22
1 files changed, 22 insertions, 0 deletions
diff --git a/webkit/glue/devtools/debugger_agent_impl.cc b/webkit/glue/devtools/debugger_agent_impl.cc
index dd40b002..41ee6d1 100644
--- a/webkit/glue/devtools/debugger_agent_impl.cc
+++ b/webkit/glue/devtools/debugger_agent_impl.cc
@@ -29,6 +29,7 @@
using WebCore::DOMWindow;
using WebCore::Document;
+using WebCore::Frame;
using WebCore::Node;
using WebCore::Page;
using WebCore::String;
@@ -185,6 +186,27 @@ String DebuggerAgentImpl::ExecuteUtilityFunction(
}
}
+String DebuggerAgentImpl::EvaluateJavaScript(
+ Frame* frame,
+ const String &source_code,
+ bool* is_exception) {
+ v8::HandleScope scope;
+ v8::Handle<v8::Context> context = V8Proxy::GetContext(frame);
+ v8::Context::Scope context_scope(context);
+ v8::Local<v8::String> code = v8ExternalString(source_code);
+
+ V8Proxy* proxy = V8Proxy::retrieve(frame);
+ v8::TryCatch try_catch;
+ v8::Handle<v8::Script> script = proxy->CompileScript(code, "", 0);
+ v8::Local<v8::Value> object = proxy->RunScript(script, true);
+ if (try_catch.HasCaught()) {
+ *is_exception = true;
+ return WebCore::ToWebCoreString(try_catch.Message()->Get());
+ } else {
+ return WebCore::toWebCoreStringWithNullCheck(object);
+ }
+}
+
WebCore::Page* DebuggerAgentImpl::GetPage() {
return web_view_impl_->page();
}