Index: experimental/SkV8Example/Global.h |
diff --git a/experimental/SkV8Example/Global.h b/experimental/SkV8Example/Global.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..aa05b01aaf8c806452003816696137be7bed6557 |
--- /dev/null |
+++ b/experimental/SkV8Example/Global.h |
@@ -0,0 +1,74 @@ |
+/* |
+ * Copyright 2013 Google Inc. |
+ * |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ * |
+ */ |
+ |
+#ifndef SkV8Example_Global_DEFINED |
+#define SkV8Example_Global_DEFINED |
+ |
+#include <v8.h> |
+ |
+using namespace v8; |
+ |
+#include "SkTypes.h" |
+#include "SkEvent.h" |
+ |
+class SkOSWindow; |
+ |
+// Provides the global isolate and context for our V8 instance. |
+// Also implements all the global level functions. |
+class Global : SkNoncopyable { |
+public: |
+ Global(Isolate* isolate) |
+ : fIsolate(isolate) |
+ , fWindow(NULL) |
+ { |
+ gGlobal = this; |
+ } |
+ virtual ~Global() {} |
+ |
+ // The script will be parsed into the context this Global contains. |
+ bool parseScript(const char script[]); |
+ |
+ Local<Context> getContext() { |
+ return Local<Context>::New(fIsolate, fContext); |
+ } |
+ |
+ Isolate* getIsolate() { |
+ return fIsolate; |
+ } |
+ |
+ void setWindow(SkOSWindow* win) { |
+ fWindow = win; |
+ } |
+ SkOSWindow* getWindow() { |
+ return fWindow; |
+ } |
+ |
+ void reportException(TryCatch* tryCatch); |
+ |
+private: |
+ Handle<Context> createRootContext(); |
+ |
+ static bool TimeOutProc(const SkEvent& evt); |
+ |
+ // Static functions that implement the global JS functions we add to |
+ // the context. |
+ static void SetTimeout(const v8::FunctionCallbackInfo<v8::Value>& args); |
+ static void Print(const v8::FunctionCallbackInfo<v8::Value>& args); |
+ static void Inval(const v8::FunctionCallbackInfo<Value>& args); |
+ |
+ Persistent<Context> fContext; |
+ Isolate* fIsolate; |
+ SkOSWindow* fWindow; |
+ static Global* gGlobal; |
+ |
+ // Handle to the function to call when the timeout triggers. |
+ Persistent<Function> fTimeout; |
+}; |
+ |
+#endif |