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_ |