| Index: gin/runner.cc
|
| diff --git a/gin/runner.cc b/gin/runner.cc
|
| index 4b0b6f9b69d3562733b319439e2904915198bc1b..a3c9544872954967a3dd99197cb554a2574b0544 100644
|
| --- a/gin/runner.cc
|
| +++ b/gin/runner.cc
|
| @@ -5,9 +5,9 @@
|
| #include "gin/runner.h"
|
|
|
| #include "gin/converter.h"
|
| +#include "gin/try_catch.h"
|
|
|
| using v8::Context;
|
| -using v8::Handle;
|
| using v8::HandleScope;
|
| using v8::Isolate;
|
| using v8::Object;
|
| @@ -22,16 +22,26 @@ RunnerDelegate::RunnerDelegate() {
|
| RunnerDelegate::~RunnerDelegate() {
|
| }
|
|
|
| -Handle<ObjectTemplate> RunnerDelegate::GetGlobalTemplate(Runner* runner) {
|
| - return Handle<ObjectTemplate>();
|
| +v8::Handle<ObjectTemplate> RunnerDelegate::GetGlobalTemplate(Runner* runner) {
|
| + return v8::Handle<ObjectTemplate>();
|
| }
|
|
|
| void RunnerDelegate::DidCreateContext(Runner* runner) {
|
| }
|
|
|
| +void RunnerDelegate::WillRunScript(Runner* runner, v8::Handle<Script> script) {
|
| +}
|
| +
|
| +void RunnerDelegate::DidRunScript(Runner* runner, v8::Handle<Script> script) {
|
| +}
|
| +
|
| +void RunnerDelegate::UnhandledException(Runner* runner, TryCatch& try_catch) {
|
| +}
|
| +
|
| Runner::Runner(RunnerDelegate* delegate, Isolate* isolate)
|
| : ContextHolder(isolate),
|
| - delegate_(delegate) {
|
| + delegate_(delegate),
|
| + weak_factory_(this) {
|
| HandleScope handle_scope(isolate);
|
| SetContext(Context::New(isolate, NULL, delegate_->GetGlobalTemplate(this)));
|
|
|
| @@ -46,8 +56,15 @@ void Runner::Run(const std::string& script) {
|
| Run(Script::New(StringToV8(isolate(), script)));
|
| }
|
|
|
| -void Runner::Run(Handle<Script> script) {
|
| - script->Run();
|
| +void Runner::Run(v8::Handle<Script> script) {
|
| + delegate_->WillRunScript(this, script);
|
| + {
|
| + TryCatch try_catch;
|
| + script->Run();
|
| + if (try_catch.HasCaught())
|
| + delegate_->UnhandledException(this, try_catch);
|
| + }
|
| + delegate_->DidRunScript(this, script);
|
| }
|
|
|
| Runner::Scope::Scope(Runner* runner)
|
|
|