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