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

Unified Diff: libadblockplus-android/src/org/adblockplus/libadblockplus/Platform.java

Issue 29536629: Issue 5556 - Update to use libadblockplus revision hg:566f64c8a2a8 (Closed) Base URL: github.com:abby-sergz/libadblockplus-android.git
Patch Set: Created Sept. 5, 2017, 12:59 p.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
Index: libadblockplus-android/src/org/adblockplus/libadblockplus/Platform.java
diff --git a/libadblockplus-android/src/org/adblockplus/libadblockplus/Platform.java b/libadblockplus-android/src/org/adblockplus/libadblockplus/Platform.java
new file mode 100644
index 0000000000000000000000000000000000000000..2534ced55a0c369ed65d17409d0e55b63e6cc62f
--- /dev/null
+++ b/libadblockplus-android/src/org/adblockplus/libadblockplus/Platform.java
@@ -0,0 +1,108 @@
+/*
+ * This file is part of Adblock Plus <https://adblockplus.org/>,
+ * Copyright (C) 2006-present eyeo GmbH
+ *
+ * Adblock Plus is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3 as
+ * published by the Free Software Foundation.
+ *
+ * Adblock Plus is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package org.adblockplus.libadblockplus;
+
+public class Platform implements Disposable
+{
+ private final Disposer disposer;
+ protected final long ptr;
+
+ static
+ {
+ System.loadLibrary("adblockplus-jni");
+ registerNatives();
+ }
+
+ public Platform(final LogSystem logSystem, final WebRequest webRequest, final String basePath)
+ {
+ this(ctor(logSystem, webRequest, basePath));
+ }
+
+ public Platform(final WebRequest webRequest, final String basePath)
+ {
+ this(null, webRequest, basePath);
+ }
+
+ public Platform()
+ {
+ this(null, null, null);
anton 2017/09/06 06:21:28 it would be great to have some comment, how it wor
sergei 2017/09/08 09:45:02 I have added the comment to the constructor above
+ }
+
+ protected Platform(final long ptr)
+ {
+ this.ptr = ptr;
+ this.disposer = new Disposer(this, new DisposeWrapper(ptr));
+ }
+
+ public void setUpJsEngine(final AppInfo appInfo)
+ {
+ setUpJsEngine(this.ptr, appInfo);
+ }
+
+ public JsEngine getJsEngine()
+ {
+ return new JsEngine(getJsEnginePtr(this.ptr));
anton 2017/09/06 06:21:27 why JsEngine accepts js engine ptr, but filter eng
anton 2017/09/06 06:21:28 what's the purpose of creating new instance every
sergei 2017/09/08 09:45:02 Short story is to keep it simple. The main thing
sergei 2017/09/08 09:45:02 I think that generally corresponding Java classes
anton 2017/09/08 10:19:19 I'd say `getter` task is to `get`, not `create`. O
sergei 2017/09/08 12:25:30 getXXX methods create the corresponding entities o
+ }
+
+ public void setUpFilterEngine(final IsAllowedConnectionCallback isSubscriptionDownloadAllowedCallback)
+ {
+ setUpFilterEngine(this.ptr, isSubscriptionDownloadAllowedCallback);
+ }
+
+ public FilterEngine getFilterEngine()
+ {
+ ensureFilterEngine(this.ptr);
anton 2017/09/06 06:21:28 what does `ensure..` do? it's absolutely unclear w
sergei 2017/09/08 09:45:02 Done. BTW, I expect that the interface of Platform
+ return new FilterEngine(this.ptr);
anton 2017/09/06 06:21:28 same here - what's the purpose of creating new ins
sergei 2017/09/08 09:45:02 see comment for getJsEngine
+ }
+
+ @Override
+ public void dispose()
+ {
+ this.disposer.dispose();
+ }
+
+ private final static class DisposeWrapper implements Disposable
+ {
+ private final long ptr;
+
+ public DisposeWrapper(final long ptr)
+ {
+ this.ptr = ptr;
+ }
+
+ @Override
+ public void dispose()
+ {
+ dtor(this.ptr);
+ }
+ }
+
+ private final static native void registerNatives();
+
+ private final static native long ctor(LogSystem logSystem, WebRequest webRequest, String basePath);
+
+ private final static native void setUpJsEngine(long ptr, AppInfo appInfo);
+
+ private final static native long getJsEnginePtr(long ptr);
+
+ private final static native void setUpFilterEngine(long ptr, IsAllowedConnectionCallback isSubscriptionDownloadAllowedCallback);
+
+ private final static native void ensureFilterEngine(long ptr);
+
+ private final static native void dtor(long ptr);
+}

Powered by Google App Engine
This is Rietveld