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: address comment Created Sept. 8, 2017, 12:20 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..727af68691a6432c26b8cf06e2fbe51646739448
--- /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();
+ }
+
+ /**
+ * If an interface parameter value is null then a default implementation is
+ * chosen.
+ * If basePath is null then paths are not resolved to a full path, thus
+ * current working directory is used.
+ */
+ public Platform(final LogSystem logSystem, final WebRequest webRequest, final String basePath)
+ {
+ this(ctor(logSystem, webRequest, basePath));
+ }
+
+ 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));
+ }
+
+ public void setUpFilterEngine(final IsAllowedConnectionCallback isSubscriptionDownloadAllowedCallback)
+ {
+ setUpFilterEngine(this.ptr, isSubscriptionDownloadAllowedCallback);
+ }
+
+ public FilterEngine getFilterEngine()
+ {
+ // Initially FilterEngine is not constructed when Platform is instantiated
+ // and in addition FilterEngine is being created asynchronously, the call
+ // of `ensureFilterEngine` causes a construction of FilterEngine if it's
+ // not created yet and waits for it.
+ ensureFilterEngine(this.ptr);
+ return new FilterEngine(this.ptr);
+ }
+
+ @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