// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "gin/runner.h" #include "gin/converter.h" #include "gin/per_context_data.h" #include "gin/try_catch.h" using v8::Context; using v8::HandleScope; using v8::Isolate; using v8::Object; using v8::ObjectTemplate; using v8::Script; namespace gin { RunnerDelegate::RunnerDelegate() { } RunnerDelegate::~RunnerDelegate() { } v8::Handle RunnerDelegate::GetGlobalTemplate(Runner* runner) { return v8::Handle(); } void RunnerDelegate::DidCreateContext(Runner* runner) { } void RunnerDelegate::WillRunScript(Runner* runner) { } void RunnerDelegate::DidRunScript(Runner* runner) { } void RunnerDelegate::UnhandledException(Runner* runner, TryCatch& try_catch) { } Runner::Runner(RunnerDelegate* delegate, Isolate* isolate) : ContextHolder(isolate), delegate_(delegate), weak_factory_(this) { v8::Isolate::Scope isolate_scope(isolate); HandleScope handle_scope(isolate); v8::Handle context = Context::New(isolate, NULL, delegate_->GetGlobalTemplate(this)); SetContext(context); PerContextData::From(context)->set_runner(this); v8::Context::Scope scope(context); delegate_->DidCreateContext(this); } Runner::~Runner() { } void Runner::Run(const std::string& source, const std::string& resource_name) { Run(Script::New(StringToV8(isolate(), source), StringToV8(isolate(), resource_name))); } void Runner::Run(v8::Handle