Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: libadblockplus-android/jni/JniJsEngine.cpp

Issue 29465639: Issue 5309 - Subscriptions update causes ANR (Closed) Base URL: github.com:abby-sergz/libadblockplus-android.git
Patch Set: address comments@sergz Created June 16, 2017, 11:11 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « libadblockplus-android/jni/JniJsEngine.h ('k') | libadblockplus-android/jni/Utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: libadblockplus-android/jni/JniJsEngine.cpp
diff --git a/libadblockplus-android/jni/JniJsEngine.cpp b/libadblockplus-android/jni/JniJsEngine.cpp
index 7c08e81ac9ca52647e67df42803cfb15267e08bb..7bc78faaace27a3ccd8300c8bada1bc6dc787e9b 100644
--- a/libadblockplus-android/jni/JniJsEngine.cpp
+++ b/libadblockplus-android/jni/JniJsEngine.cpp
@@ -18,6 +18,7 @@
#include <AdblockPlus.h>
#include "Utils.h"
#include "JniCallbacks.h"
+#include "JniJsEngine.h"
static void TransformAppInfo(JNIEnv* env, jobject jAppInfo, AdblockPlus::AppInfo& appInfo)
{
@@ -32,6 +33,11 @@ static void TransformAppInfo(JNIEnv* env, jobject jAppInfo, AdblockPlus::AppInfo
appInfo.developmentBuild = JniGetBooleanField(env, clazz, jAppInfo, "developmentBuild");
}
+static AdblockPlus::JsEnginePtr& GetJsEnginePtrRef(jlong ptr)
+{
+ return JniLongToTypePtr<JniJsEngine>(ptr)->jsEngine;
+}
+
static jlong JNICALL JniCtor(JNIEnv* env, jclass clazz, jobject jAppInfo)
{
AdblockPlus::AppInfo appInfo;
@@ -40,19 +46,23 @@ static jlong JNICALL JniCtor(JNIEnv* env, jclass clazz, jobject jAppInfo)
try
{
- return JniPtrToLong(new AdblockPlus::JsEnginePtr(AdblockPlus::JsEngine::New(appInfo)));
+ AdblockPlus::TimerPtr timer = AdblockPlus::CreateDefaultTimer();
+ JniJsEngine* jniJsEngine = new JniJsEngine();
+ jniJsEngine->timer = timer.get();
+ jniJsEngine->jsEngine = AdblockPlus::JsEngine::New(appInfo, std::move(timer));
+ return JniPtrToLong(jniJsEngine);
}
CATCH_THROW_AND_RETURN(env, 0)
}
static void JNICALL JniDtor(JNIEnv* env, jclass clazz, jlong ptr)
{
- delete JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ delete JniLongToTypePtr<JniJsEngine>(ptr);
}
static void JNICALL JniSetEventCallback(JNIEnv* env, jclass clazz, jlong ptr, jstring jEventName, jlong jCallbackPtr)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
JniEventCallback* callback = JniLongToTypePtr<JniEventCallback>(jCallbackPtr);
std::string eventName = JniJavaToStdString(env, jEventName);
@@ -71,7 +81,7 @@ static void JNICALL JniSetEventCallback(JNIEnv* env, jclass clazz, jlong ptr, js
static void JNICALL JniRemoveEventCallback(JNIEnv* env, jclass clazz, jlong ptr, jstring jEventName)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
std::string eventName = JniJavaToStdString(env, jEventName);
@@ -84,7 +94,7 @@ static void JNICALL JniRemoveEventCallback(JNIEnv* env, jclass clazz, jlong ptr,
static jobject JNICALL JniEvaluate(JNIEnv* env, jclass clazz, jlong ptr, jstring jSource, jstring jFilename)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
std::string source = JniJavaToStdString(env, jSource);
std::string filename = JniJavaToStdString(env, jFilename);
@@ -98,7 +108,7 @@ static jobject JNICALL JniEvaluate(JNIEnv* env, jclass clazz, jlong ptr, jstring
static void JNICALL JniTriggerEvent(JNIEnv* env, jclass clazz, jlong ptr, jstring jEventName, jarray jJsPtrs)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
std::string eventName = JniJavaToStdString(env, jEventName);
AdblockPlus::JsValueList args;
@@ -125,7 +135,7 @@ static void JNICALL JniTriggerEvent(JNIEnv* env, jclass clazz, jlong ptr, jstrin
static void JNICALL JniSetDefaultFileSystem(JNIEnv* env, jclass clazz, jlong ptr, jstring jBasePath)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
try
{
@@ -141,7 +151,7 @@ static void JNICALL JniSetDefaultFileSystem(JNIEnv* env, jclass clazz, jlong ptr
static void JNICALL JniSetDefaultLogSystem(JNIEnv* env, jclass clazz, jlong ptr)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
try
{
@@ -154,7 +164,7 @@ static void JNICALL JniSetDefaultLogSystem(JNIEnv* env, jclass clazz, jlong ptr)
static void JNICALL JniSetLogSystem(JNIEnv* env, jclass clazz, jlong ptr, jlong logSystemPtr)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
try
{
@@ -167,7 +177,7 @@ static void JNICALL JniSetLogSystem(JNIEnv* env, jclass clazz, jlong ptr, jlong
static void JNICALL JniSetWebRequest(JNIEnv* env, jclass clazz, jlong ptr, jlong webRequestPtr)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
try
{
@@ -180,7 +190,7 @@ static void JNICALL JniSetWebRequest(JNIEnv* env, jclass clazz, jlong ptr, jlong
static jobject JNICALL JniNewLongValue(JNIEnv* env, jclass clazz, jlong ptr, jlong value)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
try
{
@@ -191,7 +201,7 @@ static jobject JNICALL JniNewLongValue(JNIEnv* env, jclass clazz, jlong ptr, jlo
static jobject JNICALL JniNewBooleanValue(JNIEnv* env, jclass clazz, jlong ptr, jboolean value)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
try
{
@@ -202,7 +212,7 @@ static jobject JNICALL JniNewBooleanValue(JNIEnv* env, jclass clazz, jlong ptr,
static jobject JNICALL JniNewStringValue(JNIEnv* env, jclass clazz, jlong ptr, jstring value)
{
- AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
+ AdblockPlus::JsEnginePtr& engine = GetJsEnginePtrRef(ptr);
try
{
« no previous file with comments | « libadblockplus-android/jni/JniJsEngine.h ('k') | libadblockplus-android/jni/Utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld