LEFT | RIGHT |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
3 * Copyright (C) 2006-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2015 Eyeo GmbH |
4 * | 4 * |
5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
8 * | 8 * |
9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 16 matching lines...) Expand all Loading... |
27 { | 27 { |
28 JniAddObjectToList(env, list, NewJniSubscription(env, *it)); | 28 JniAddObjectToList(env, list, NewJniSubscription(env, *it)); |
29 } | 29 } |
30 | 30 |
31 return list; | 31 return list; |
32 } | 32 } |
33 | 33 |
34 static AdblockPlus::FilterEngine::ContentType ConvertContentType(JNIEnv *env, | 34 static AdblockPlus::FilterEngine::ContentType ConvertContentType(JNIEnv *env, |
35 jobject jContentType) | 35 jobject jContentType) |
36 { | 36 { |
37 JniLocalReference<jclass> contentTypeClass(env, env->GetObjectClass(jContentTy
pe)); | 37 JniLocalReference<jclass> contentTypeClass(env, |
| 38 env->GetObjectClass(jContentType)); |
38 jmethodID nameMethod = env->GetMethodID(*contentTypeClass, "name", | 39 jmethodID nameMethod = env->GetMethodID(*contentTypeClass, "name", |
39 "()Ljava/lang/String;"); | 40 "()Ljava/lang/String;"); |
40 JniLocalReference<jstring> jValue(env, (jstring) env->CallObjectMethod(jConten
tType, nameMethod)); | 41 JniLocalReference<jstring> jValue(env, |
| 42 (jstring) env->CallObjectMethod(jContentType, nameMethod)); |
41 const std::string value = JniJavaToStdString(env, *jValue); | 43 const std::string value = JniJavaToStdString(env, *jValue); |
42 return AdblockPlus::FilterEngine::StringToContentType(value); | 44 return AdblockPlus::FilterEngine::StringToContentType(value); |
43 } | 45 } |
44 | 46 |
45 static jlong JNICALL JniCtor(JNIEnv* env, jclass clazz, jlong enginePtr) | 47 static jlong JNICALL JniCtor(JNIEnv* env, jclass clazz, jlong enginePtr) |
46 { | 48 { |
47 try | 49 try |
48 { | 50 { |
49 AdblockPlus::JsEnginePtr& jsEngine = *JniLongToTypePtr<AdblockPlus::JsEngine
Ptr>(enginePtr); | 51 AdblockPlus::JsEnginePtr& jsEngine = *JniLongToTypePtr<AdblockPlus::JsEngine
Ptr>(enginePtr); |
50 return JniPtrToLong(new AdblockPlus::FilterEngine(jsEngine)); | 52 return JniPtrToLong(new AdblockPlus::FilterEngine(jsEngine)); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 { | 177 { |
176 AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine
>(ptr); | 178 AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine
>(ptr); |
177 | 179 |
178 try | 180 try |
179 { | 181 { |
180 engine->RemoveFilterChangeCallback(); | 182 engine->RemoveFilterChangeCallback(); |
181 } | 183 } |
182 CATCH_AND_THROW(env) | 184 CATCH_AND_THROW(env) |
183 } | 185 } |
184 | 186 |
185 static void JNICALL JniSetFilterChangeCallback(JNIEnv* env, jclass clazz, jlong
ptr, jlong filterPtr) | 187 static void JNICALL JniSetFilterChangeCallback(JNIEnv* env, jclass clazz, |
186 { | 188 jlong ptr, jlong filterPtr) |
187 AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine
>(ptr); | 189 { |
188 JniFilterChangeCallback* callback = JniLongToTypePtr<JniFilterChangeCallback>(
filterPtr); | 190 AdblockPlus::FilterEngine* engine = |
| 191 JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); |
| 192 JniFilterChangeCallback* callback = JniLongToTypePtr<JniFilterChangeCallback>( |
| 193 filterPtr); |
189 | 194 |
190 AdblockPlus::FilterEngine::FilterChangeCallback filterCallback = | 195 AdblockPlus::FilterEngine::FilterChangeCallback filterCallback = |
191 std::tr1::bind(&JniFilterChangeCallback::Callback, callback, std::tr1::pla
ceholders::_1, std::tr1::placeholders::_2); | 196 std::tr1::bind(&JniFilterChangeCallback::Callback, callback, |
| 197 std::tr1::placeholders::_1, std::tr1::placeholders::_2); |
192 | 198 |
193 try | 199 try |
194 { | 200 { |
195 engine->SetFilterChangeCallback(filterCallback); | 201 engine->SetFilterChangeCallback(filterCallback); |
196 } | 202 } |
197 CATCH_AND_THROW(env) | 203 CATCH_AND_THROW(env) |
198 } | 204 } |
199 | 205 |
200 static void JNICALL JniForceUpdateCheck(JNIEnv* env, jclass clazz, jlong ptr, jl
ong updaterPtr) | 206 static void JNICALL JniForceUpdateCheck(JNIEnv* env, jclass clazz, jlong ptr, jl
ong updaterPtr) |
201 { | 207 { |
(...skipping 11 matching lines...) Expand all Loading... |
213 std::tr1::placeholders::_1); | 219 std::tr1::placeholders::_1); |
214 } | 220 } |
215 | 221 |
216 try | 222 try |
217 { | 223 { |
218 engine->ForceUpdateCheck(updateCheckDoneCallback); | 224 engine->ForceUpdateCheck(updateCheckDoneCallback); |
219 } | 225 } |
220 CATCH_AND_THROW(env) | 226 CATCH_AND_THROW(env) |
221 } | 227 } |
222 | 228 |
223 static jobject JNICALL JniGetElementHidingSelectors(JNIEnv* env, jclass clazz, j
long ptr, jstring jDomain) | 229 static jobject JNICALL JniGetElementHidingSelectors(JNIEnv* env, jclass clazz, |
224 { | 230 jlong ptr, jstring jDomain) |
225 AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine
>(ptr); | 231 { |
| 232 AdblockPlus::FilterEngine* engine = |
| 233 JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); |
226 | 234 |
227 std::string domain = JniJavaToStdString(env, jDomain); | 235 std::string domain = JniJavaToStdString(env, jDomain); |
228 | 236 |
229 try | 237 try |
230 { | 238 { |
231 std::vector<std::string> selectors = engine->GetElementHidingSelectors(domai
n); | 239 std::vector<std::string> selectors = engine->GetElementHidingSelectors( |
| 240 domain); |
232 | 241 |
233 jobject list = NewJniArrayList(env); | 242 jobject list = NewJniArrayList(env); |
234 | 243 |
235 for (std::vector<std::string>::iterator it = selectors.begin(), end = select
ors.end(); it != end; it++) | 244 for (std::vector<std::string>::iterator it = selectors.begin(), end = |
| 245 selectors.end(); it != end; it++) |
236 { | 246 { |
237 JniAddObjectToList(env, list, *JniLocalReference<jstring>(env, env->NewStr
ingUTF(it->c_str()))); | 247 JniAddObjectToList(env, list, |
| 248 *JniLocalReference<jstring>(env, env->NewStringUTF(it->c_str()))); |
238 } | 249 } |
239 | 250 |
240 return list; | 251 return list; |
241 } | 252 } |
242 CATCH_THROW_AND_RETURN(env, 0) | 253 CATCH_THROW_AND_RETURN(env, 0) |
243 } | 254 } |
244 | 255 |
245 static jobject JNICALL JniMatches(JNIEnv* env, jclass clazz, jlong ptr, jstring
jUrl, jobject jContentType, jstring jDocumentUrl) | 256 static jobject JNICALL JniMatches(JNIEnv* env, jclass clazz, jlong ptr, jstring
jUrl, jobject jContentType, jstring jDocumentUrl) |
246 { | 257 { |
247 AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine
>(ptr); | 258 AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine
>(ptr); |
248 | 259 |
249 std::string url = JniJavaToStdString(env, jUrl); | 260 std::string url = JniJavaToStdString(env, jUrl); |
250 AdblockPlus::FilterEngine::ContentType contentType = | 261 AdblockPlus::FilterEngine::ContentType contentType = |
251 ConvertContentType(env, jContentType); | 262 ConvertContentType(env, jContentType); |
252 std::string documentUrl = JniJavaToStdString(env, jDocumentUrl); | 263 std::string documentUrl = JniJavaToStdString(env, jDocumentUrl); |
253 | 264 |
254 try | 265 try |
255 { | 266 { |
256 AdblockPlus::FilterPtr filter = engine->Matches(url, contentType, documentUr
l); | 267 AdblockPlus::FilterPtr filter = engine->Matches(url, contentType, documentUr
l); |
257 | 268 |
258 return NewJniFilter(env, filter); | 269 return NewJniFilter(env, filter); |
259 } | 270 } |
260 CATCH_THROW_AND_RETURN(env, 0) | 271 CATCH_THROW_AND_RETURN(env, 0) |
261 } | 272 } |
262 | 273 |
263 static jobject JNICALL JniMatchesMany(JNIEnv* env, jclass clazz, jlong ptr, jstr
ing jUrl, jobject jContentType, jobjectArray jDocumentUrls) | 274 static jobject JNICALL JniMatchesMany(JNIEnv* env, jclass clazz, jlong ptr, |
264 { | 275 jstring jUrl, jobject jContentType, jobjectArray jDocumentUrls) |
265 AdblockPlus::FilterEngine* engine = JniLongToTypePtr<AdblockPlus::FilterEngine
>(ptr); | 276 { |
| 277 AdblockPlus::FilterEngine* engine = |
| 278 JniLongToTypePtr<AdblockPlus::FilterEngine>(ptr); |
266 | 279 |
267 std::string url = JniJavaToStdString(env, jUrl); | 280 std::string url = JniJavaToStdString(env, jUrl); |
268 AdblockPlus::FilterEngine::ContentType contentType = | 281 AdblockPlus::FilterEngine::ContentType contentType = |
269 ConvertContentType(env, jContentType); | 282 ConvertContentType(env, jContentType); |
270 | 283 |
271 std::vector<std::string> documentUrls; | 284 std::vector<std::string> documentUrls; |
272 | 285 |
273 jsize len = env->GetArrayLength(jDocumentUrls); | 286 jsize len = env->GetArrayLength(jDocumentUrls); |
274 | 287 |
275 for (jsize i = 0; i < len; i++) | 288 for (jsize i = 0; i < len; i++) |
276 { | 289 { |
277 documentUrls.push_back(JniJavaToStdString(env, | 290 documentUrls.push_back( |
278 *JniLocalReference<jstring>(env, static_cast<jstring>(env->GetObjectArra
yElement(jDocumentUrls, i))))); | 291 JniJavaToStdString(env, |
279 } | 292 *JniLocalReference<jstring>(env, |
280 | 293 static_cast<jstring>(env->GetObjectArrayElement(jDocumentUrls, |
281 try | 294 i))))); |
282 { | 295 } |
283 AdblockPlus::FilterPtr filter = engine->Matches(url, contentType, documentUr
ls); | 296 |
| 297 try |
| 298 { |
| 299 AdblockPlus::FilterPtr filter = engine->Matches(url, contentType, |
| 300 documentUrls); |
284 | 301 |
285 return NewJniFilter(env, filter); | 302 return NewJniFilter(env, filter); |
286 } | 303 } |
287 CATCH_THROW_AND_RETURN(env, 0) | 304 CATCH_THROW_AND_RETURN(env, 0) |
288 } | 305 } |
289 | 306 |
290 static jobject JNICALL JniGetPref(JNIEnv* env, jclass clazz, jlong ptr, jstring
jPref) | 307 static jobject JNICALL JniGetPref(JNIEnv* env, jclass clazz, jlong ptr, jstring
jPref) |
291 { | 308 { |
292 AdblockPlus::FilterEngine* engine = JniLongToTypePtr < AdblockPlus::FilterEngi
ne > (ptr); | 309 AdblockPlus::FilterEngine* engine = JniLongToTypePtr < AdblockPlus::FilterEngi
ne > (ptr); |
293 | 310 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 { (char*)"matches", (char*)"(JLjava/lang/String;" TYP("FilterEngine$ContentTyp
e") "[Ljava/lang/String;)" TYP("Filter"), (void*)JniMatchesMany }, | 352 { (char*)"matches", (char*)"(JLjava/lang/String;" TYP("FilterEngine$ContentTyp
e") "[Ljava/lang/String;)" TYP("Filter"), (void*)JniMatchesMany }, |
336 { (char*)"getPref", (char*)"(JLjava/lang/String;)" TYP("JsValue"), (void*)JniG
etPref }, | 353 { (char*)"getPref", (char*)"(JLjava/lang/String;)" TYP("JsValue"), (void*)JniG
etPref }, |
337 { (char*)"setPref", (char*)"(JLjava/lang/String;J)V", (void*)JniSetPref }, | 354 { (char*)"setPref", (char*)"(JLjava/lang/String;J)V", (void*)JniSetPref }, |
338 { (char*)"dtor", (char*)"(J)V", (void*)JniDtor } | 355 { (char*)"dtor", (char*)"(J)V", (void*)JniDtor } |
339 }; | 356 }; |
340 | 357 |
341 extern "C" JNIEXPORT void JNICALL Java_org_adblockplus_libadblockplus_FilterEngi
ne_registerNatives(JNIEnv *env, jclass clazz) | 358 extern "C" JNIEXPORT void JNICALL Java_org_adblockplus_libadblockplus_FilterEngi
ne_registerNatives(JNIEnv *env, jclass clazz) |
342 { | 359 { |
343 env->RegisterNatives(clazz, methods, sizeof(methods) / sizeof(methods[0])); | 360 env->RegisterNatives(clazz, methods, sizeof(methods) / sizeof(methods[0])); |
344 } | 361 } |
LEFT | RIGHT |