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