Index: gin/shell_runner.h |
diff --git a/gin/shell_runner.h b/gin/shell_runner.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..23e495a0744d439d654917ea7e61acb63592bf8f |
--- /dev/null |
+++ b/gin/shell_runner.h |
@@ -0,0 +1,68 @@ |
+// Copyright 2014 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_ |
+#define GIN_DEFAULT_RUNNER_H_ |
+ |
+#include "gin/runner.h" |
+ |
+namespace gin { |
+ |
+class ContextHolder; |
+class ShellRunner; |
+class TryCatch; |
+ |
+// Subclass ShellRunnerDelegate to customize the behavior of ShellRunner. |
+// Typical embedders will want to subclass one of the specialized |
+// ShellRunnerDelegates, such as ModuleRunnerDelegate. |
+class GIN_EXPORT ShellRunnerDelegate { |
+ public: |
+ ShellRunnerDelegate(); |
+ virtual ~ShellRunnerDelegate(); |
+ |
+ // Returns the template for the global object. |
+ virtual v8::Handle<v8::ObjectTemplate> GetGlobalTemplate( |
+ ShellRunner* runner, |
+ v8::Isolate* isolate); |
+ virtual void DidCreateContext(ShellRunner* runner); |
+ virtual void WillRunScript(ShellRunner* runner); |
+ virtual void DidRunScript(ShellRunner* runner); |
+ virtual void UnhandledException(ShellRunner* runner, TryCatch& try_catch); |
+}; |
+ |
+// ShellRunner executes the script/functions directly in a v8::Context. |
+// ShellRunner owns a ContextHolder and v8::Context, both of which are destroyed |
+// when the ShellRunner is deleted. |
+class GIN_EXPORT ShellRunner : public Runner { |
+ public: |
+ ShellRunner(ShellRunnerDelegate* delegate, v8::Isolate* isolate); |
+ virtual ~ShellRunner(); |
+ |
+ // 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); |
+ |
+ ShellRunnerDelegate* delegate_; |
+ |
+ scoped_ptr<ContextHolder> context_holder_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ShellRunner); |
+}; |
+ |
+} // namespace gin |
+ |
+#endif // GIN_DEFAULT_RUNNER_H_ |