Chromium Code Reviews| Index: gin/default_runner.h |
| diff --git a/gin/default_runner.h b/gin/default_runner.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..fb10e747e0328db2910d416825420efd7be97b13 |
| --- /dev/null |
| +++ b/gin/default_runner.h |
| @@ -0,0 +1,68 @@ |
| +// 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. |
| + |
| +#ifndef GIN_DEFAULT_RUNNER_H_ |
|
sky
2014/02/25 22:39:33
This is really a move, but as so much changed git
|
| +#define GIN_DEFAULT_RUNNER_H_ |
| + |
| +#include "gin/runner.h" |
| + |
| +namespace gin { |
| + |
| +class ContextHolder; |
| +class DefaultRunner; |
| +class TryCatch; |
| + |
| +// Subclass DefaultRunnerDelegate to customize the behavior of |
| +// |DefaultRunner|. Typical embedders will want to subclass one of the |
| +// specialized DefaultRunnerDelegates, such as ModuleRunnerDelegate. |
| +class GIN_EXPORT DefaultRunnerDelegate { |
| + public: |
| + DefaultRunnerDelegate(); |
| + virtual ~DefaultRunnerDelegate(); |
| + |
| + // Returns the template for the global object. |
| + virtual v8::Handle<v8::ObjectTemplate> GetGlobalTemplate( |
| + DefaultRunner* runner, |
| + v8::Isolate* isolate); |
| + virtual void DidCreateContext(DefaultRunner* runner); |
| + virtual void WillRunScript(DefaultRunner* runner); |
| + virtual void DidRunScript(DefaultRunner* runner); |
| + virtual void UnhandledException(DefaultRunner* runner, TryCatch& try_catch); |
| +}; |
| + |
| +// DefaultRunner executes the script/functions directly in a v8::Context. |
| +// DefaultRunner owns a ContextHolder and v8::Context, both of which are |
| +// destroyed when the DefaultRunner is deleted. |
| +class GIN_EXPORT DefaultRunner : public Runner { |
| + public: |
| + DefaultRunner(DefaultRunnerDelegate* delegate, v8::Isolate* isolate); |
| + virtual ~DefaultRunner(); |
| + |
| + // Before running script in this context, you'll need to enter the runner's |
| + // context by creating an instance of Runner::Scope on the stack. |
| + |
| + // Runner overrides: |
| + virtual void Run(const std::string& source, |
| + const std::string& resource_name) OVERRIDE; |
| + virtual v8::Handle<v8::Value> Call(v8::Handle<v8::Function> function, |
| + v8::Handle<v8::Value> receiver, |
| + int argc, |
| + v8::Handle<v8::Value> argv[]) OVERRIDE; |
| + virtual ContextHolder* GetContextHolder() OVERRIDE; |
| + |
| + private: |
| + friend class Scope; |
| + |
| + void Run(v8::Handle<v8::Script> script); |
| + |
| + DefaultRunnerDelegate* delegate_; |
| + |
| + scoped_ptr<ContextHolder> context_holder_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(DefaultRunner); |
| +}; |
| + |
| +} // namespace gin |
| + |
| +#endif // GIN_DEFAULT_RUNNER_H_ |