X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=plugins%2Fdali-script-v8%2Fsrc%2Fdali-wrapper.h;h=e3e5e91db4c5ef8b49a8472eab4de3b4ea622510;hp=e576f4ba8af6876071fd580edbd4b91156b328b6;hb=b694e7e2ae624e206e1548b1a863c554eb9cd4d7;hpb=a2fc5fd1c64132c393330dde2fac210f58ac5525 diff --git a/plugins/dali-script-v8/src/dali-wrapper.h b/plugins/dali-script-v8/src/dali-wrapper.h index e576f4b..e3e5e91 100644 --- a/plugins/dali-script-v8/src/dali-wrapper.h +++ b/plugins/dali-script-v8/src/dali-wrapper.h @@ -1,8 +1,8 @@ -#ifndef __DALI_V8PLUGIN_DALI_WRAP_H__ -#define __DALI_V8PLUGIN_DALI_WRAP_H__ +#ifndef DALI_V8PLUGIN_DALI_WRAP_H +#define DALI_V8PLUGIN_DALI_WRAP_H /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,10 +20,11 @@ // EXTERNAL INCLUDES #include -#include // INTERNAL INCLUDES +#include #include + #include namespace Dali @@ -65,12 +66,25 @@ namespace V8Plugin */ class DALI_INTERNAL DaliWrapper { + public: /** - * Constructor + * @brief whether the wrapper is running in standalone using V8, + * or inside Node.JS using V8 */ - DaliWrapper(); + enum RunMode + { + RUNNING_STANDALONE, + RUNNING_IN_NODE_JS + }; + + /** + * @brief Constructor + * @param[in] runMode whether the wrapper is running standalone or inside Node.JS + * @param[in] isolate v8 isolate ( can be null if running standalone ) + */ + DaliWrapper( RunMode runMode, v8::Isolate* isolate ); /** * non virtual destructor, not intended as a base class @@ -85,6 +99,12 @@ public: static DaliWrapper& Get(); /** + * Intialize DaliWrapper for running inside NodeJS + */ + static v8::Local CreateWrapperForNodeJS( v8::Isolate* isolate); + + + /** * Set V8 engine configuration flags * * @param[in] flags Configruation flags (See v8 documentation) @@ -124,14 +144,21 @@ public: private: /** - * Create V8 context + * @brief Apply global objects like console.log and require() to the context */ - void CreateContext(); + void ApplyGlobalObjectsToContext( v8::Local context ); /** - * Initialize DaliWrapper + * @brief Initialize DaliWrapper for running standalone + * Creates a new isolate + * */ - void Initialize(); + void InitializeStandAlone(); + + /** + * @brief create dali namespace/object + */ + v8::Local CreateDaliObject(); /** * Create Dali ObjectTemplate @@ -150,9 +177,8 @@ private: GarbageCollector mGarbageCollector; ///< DALi garbage collector ModuleLoader mModuleLoader; ///< Module loader v8::Persistent mContext; ///< A sandboxed execution context with its own set of built-in objects and functions. - v8::Persistent mGlobalObjectTemplate; ///< Global object template for storing things like dali global object v8::Isolate* mIsolate; ///< represents an isolated instance of the V8 engine. - + RunMode mRunMode; }; @@ -160,4 +186,4 @@ private: } // namespace Dali -#endif // header +#endif // DALI_V8PLUGIN_DALI_WRAP_H