| Index: include/AdblockPlus/JsEngine.h |
| =================================================================== |
| --- a/include/AdblockPlus/JsEngine.h |
| +++ b/include/AdblockPlus/JsEngine.h |
| @@ -17,41 +17,44 @@ |
| #ifndef ADBLOCK_PLUS_JS_ENGINE_H |
| #define ADBLOCK_PLUS_JS_ENGINE_H |
| #include <map> |
| #include <stdexcept> |
| #include <stdint.h> |
| #include <string> |
| -#include <v8.h> |
| #include <AdblockPlus/AppInfo.h> |
| #include <AdblockPlus/tr1_functional.h> |
| #include <AdblockPlus/LogSystem.h> |
| #include <AdblockPlus/FileSystem.h> |
| #include <AdblockPlus/JsValue.h> |
| #include <AdblockPlus/WebRequest.h> |
| #include "tr1_memory.h" |
| +namespace v8 |
| +{ |
| + class Arguments; |
| + class Isolate; |
| + class Context; |
| + template <class T> class Handle; |
| + template <class T> class Persistent; |
| + typedef Handle<Value>(*InvocationCallback)(const Arguments &args); |
| +} |
| + |
| namespace AdblockPlus |
| { |
| - class JsError : public std::runtime_error |
| - { |
| - public: |
| - JsError(const v8::Handle<v8::Value> exception, |
| - const v8::Handle<v8::Message> message); |
| - }; |
| - |
| class JsEngine; |
| typedef std::tr1::shared_ptr<JsEngine> JsEnginePtr; |
| class JsEngine : public std::tr1::enable_shared_from_this<JsEngine> |
| { |
| friend class JsValue; |
| + friend class JsContext; |
| public: |
| typedef std::tr1::function<void()> EventCallback; |
| typedef std::map<std::string, EventCallback> EventMap; |
| static JsEnginePtr New(const AppInfo& appInfo = AppInfo()); |
| void SetEventCallback(const std::string& eventName, EventCallback callback); |
| void RemoveEventCallback(const std::string& eventName); |
| @@ -83,33 +86,21 @@ namespace AdblockPlus |
| FileSystemPtr GetFileSystem(); |
| void SetFileSystem(FileSystemPtr val); |
| WebRequestPtr GetWebRequest(); |
| void SetWebRequest(WebRequestPtr val); |
| LogSystemPtr GetLogSystem(); |
| void SetLogSystem(LogSystemPtr val); |
| - class Context |
| - { |
| - public: |
| - Context(const JsEnginePtr jsEngine); |
| - virtual inline ~Context() {}; |
| - |
| - private: |
| - const v8::Locker locker; |
| - const v8::HandleScope handleScope; |
| - const v8::Context::Scope contextScope; |
| - }; |
| - |
| private: |
| JsEngine(); |
| FileSystemPtr fileSystem; |
| WebRequestPtr webRequest; |
| LogSystemPtr logSystem; |
| v8::Isolate* isolate; |
| - v8::Persistent<v8::Context> context; |
| + std::auto_ptr<v8::Persistent<v8::Context> > context; |
| EventMap eventCallbacks; |
| }; |
| } |
| #endif |