| Index: include/AdblockPlus/JsEngine.h |
| diff --git a/include/AdblockPlus/JsEngine.h b/include/AdblockPlus/JsEngine.h |
| index 63f929c94a0b481b33ec3270d50a6ab51408540b..f7470ab84367b00e298c9038d92b21837fb08202 100644 |
| --- a/include/AdblockPlus/JsEngine.h |
| +++ b/include/AdblockPlus/JsEngine.h |
| @@ -34,12 +34,11 @@ |
| namespace v8 |
| { |
| - class Arguments; |
| class Isolate; |
| class Value; |
| class Context; |
| - template<class T> class Handle; |
| - typedef Handle<Value>(*InvocationCallback)(const Arguments &args); |
| + template<typename T> class FunctionCallbackInfo; |
| + typedef void(*FunctionCallback)(const FunctionCallbackInfo<v8::Value>& info); |
| } |
| namespace AdblockPlus |
| @@ -57,6 +56,11 @@ namespace AdblockPlus |
| TimerPtr CreateDefaultTimer(); |
| /** |
| + * A factory to construct DefaultFileSystem. |
| + */ |
| + FileSystemPtr CreateDefaultFileSystem(); |
| + |
| + /** |
| * A factory to construct DefaultWebRequest. |
| */ |
| WebRequestPtr CreateDefaultWebRequest(); |
| @@ -92,7 +96,7 @@ namespace AdblockPlus |
| struct JsWeakValuesList |
| { |
| ~JsWeakValuesList(); |
| - std::vector<std::unique_ptr<v8::Persistent<v8::Value>>> values; |
| + std::vector<v8::Global<v8::Value>> values; |
| }; |
| typedef std::list<JsWeakValuesList> JsWeakValuesLists; |
| public: |
| @@ -120,13 +124,13 @@ namespace AdblockPlus |
| * Creates a new JavaScript engine instance. |
| * @param appInfo Information about the app. |
| * @param timer Implementation of timer. |
| + * @param fileSystem Implementation of filesystem. |
| * @param webRequest Implementation of web request. |
| - * @param isolate v8::Isolate wrapper. This parameter should be considered |
| - * as a temporary hack for tests, it will go away. Issue #3593. |
| * @return New `JsEngine` instance. |
| */ |
| static JsEnginePtr New(const AppInfo& appInfo = AppInfo(), |
| TimerPtr timer = CreateDefaultTimer(), |
| + FileSystemPtr fileSystem = CreateDefaultFileSystem(), |
| WebRequestPtr webRequest = CreateDefaultWebRequest()); |
| /** |
| @@ -199,21 +203,21 @@ namespace AdblockPlus |
| /** |
| * Creates a JavaScript function that invokes a C++ callback. |
| * @param callback C++ callback to invoke. The callback receives a |
| - * `v8::Arguments` object and can use `FromArguments()` to retrieve |
| + * `v8::FunctionCallbackInfo` object and can use `FromArguments()` to retrieve |
| * the current `JsEngine`. |
| * @return New `JsValue` instance. |
| */ |
| - JsValue NewCallback(const v8::InvocationCallback& callback); |
| + JsValue NewCallback(const v8::FunctionCallback& callback); |
| /** |
| - * Returns a `JsEngine` instance contained in a `v8::Arguments` object. |
| + * Returns a `JsEngine` instance contained in a `v8::FunctionCallbackInfo` object. |
| * Use this in callbacks created via `NewCallback()` to retrieve the current |
| * `JsEngine`. |
| - * @param arguments `v8::Arguments` object containing the `JsEngine` |
| + * @param arguments `v8::FunctionCallbackInfo` object containing the `JsEngine` |
| * instance. |
| - * @return `JsEngine` instance from `v8::Arguments`. |
| + * @return `JsEngine` instance from `v8::FunctionCallbackInfo`. |
| */ |
| - static JsEnginePtr FromArguments(const v8::Arguments& arguments); |
| + static JsEnginePtr FromArguments(const v8::FunctionCallbackInfo<v8::Value>& arguments); |
| /** |
| * Stores `JsValue`s in a way they don't keep a strong reference to |
| @@ -237,38 +241,40 @@ namespace AdblockPlus |
| /* |
| * Private functionality required to implement timers. |
| - * @param arguments `v8::Arguments` is the arguments received in C++ |
| + * @param arguments `v8::FunctionCallbackInfo` is the arguments received in C++ |
| * callback associated for global setTimeout method. |
| */ |
| - static void ScheduleTimer(const v8::Arguments& arguments); |
| + static void ScheduleTimer(const v8::FunctionCallbackInfo<v8::Value>& arguments); |
| /* |
| * Private functionality required to implement web requests. |
| - * @param arguments `v8::Arguments` is the arguments received in C++ |
| + * @param arguments `v8::FunctionCallbackInfo` is the arguments received in C++ |
| * callback associated for global GET method. |
| */ |
| - static void ScheduleWebRequest(const v8::Arguments& arguments); |
| + static void ScheduleWebRequest(const v8::FunctionCallbackInfo<v8::Value>& arguments); |
| /** |
| * Converts v8 arguments to `JsValue` objects. |
| - * @param arguments `v8::Arguments` object containing the arguments to |
| + * @param arguments `v8::FunctionCallbackInfo` object containing the arguments to |
| * convert. |
| * @return List of arguments converted to `const JsValue` objects. |
| */ |
| - JsValueList ConvertArguments(const v8::Arguments& arguments); |
| + JsValueList ConvertArguments(const v8::FunctionCallbackInfo<v8::Value>& arguments); |
| /** |
| - * @see `SetFileSystem()`. |
| + * Private functionality. |
| + * @return The asynchronous IFileSystem implementation. |
| */ |
| - FileSystemPtr GetFileSystem() const; |
| + FileSystemPtr GetAsyncFileSystem() const; |
| /** |
| - * Sets the `FileSystem` implementation used for all file I/O. |
| - * Setting this is optional, the engine will use a `DefaultFileSystem` |
| - * instance by default, which might be sufficient. |
| + * Sets the synchronous `FileSystem` implementation used for all |
| + * file I/O. Setting this is optional, the engine will use the |
| + * implementation created by `CreateDefaultFileSystem()` by |
| + * default, which might be sufficient. |
| * @param The `FileSystem` instance to use. |
| */ |
| - void SetFileSystem(const FileSystemPtr& val); |
| + void SetFileSystem(const FileSystemSyncPtr& val); |
| /** |
| * Sets the `WebRequest` implementation used for XMLHttpRequests. |
| @@ -315,7 +321,7 @@ namespace AdblockPlus |
| private: |
| void CallTimerTask(const JsWeakValuesID& timerParamsID); |
| - explicit JsEngine(TimerPtr timer, WebRequestPtr webRequest); |
| + explicit JsEngine(TimerPtr timer, FileSystemPtr fileSystem, WebRequestPtr webRequest); |
| JsValue GetGlobalObject(); |
| @@ -325,7 +331,7 @@ namespace AdblockPlus |
| FileSystemPtr fileSystem; |
| LogSystemPtr logSystem; |
| - std::unique_ptr<v8::Persistent<v8::Context>> context; |
| + std::unique_ptr<v8::Global<v8::Context>> context; |
| EventMap eventCallbacks; |
| std::mutex eventCallbacksMutex; |
| JsWeakValuesLists jsWeakValuesLists; |