diff options
author | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-15 13:04:38 +0000 |
---|---|---|
committer | pfeldman@chromium.org <pfeldman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-15 13:04:38 +0000 |
commit | 1149bde26565fa08c3e14103ec5b02c00db82cf9 (patch) | |
tree | ffbf7e7e68404cea2c856a156a78f0ac2305e757 /webkit/glue/devtools/debugger_agent_impl.cc | |
parent | 86999474ab7a6f6a07f4c868e8be52414457c02f (diff) | |
download | chromium_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.cc | 22 |
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(); } |