| Index: libadblockplus-android/src/org/adblockplus/libadblockplus/android/SingleInstanceEngineProvider.java |
| diff --git a/libadblockplus-android/src/org/adblockplus/libadblockplus/android/SingleInstanceEngineProvider.java b/libadblockplus-android/src/org/adblockplus/libadblockplus/android/SingleInstanceEngineProvider.java |
| deleted file mode 100644 |
| index 66b346e49e6fe66ed73aa1a03f9b2e84517f228e..0000000000000000000000000000000000000000 |
| --- a/libadblockplus-android/src/org/adblockplus/libadblockplus/android/SingleInstanceEngineProvider.java |
| +++ /dev/null |
| @@ -1,255 +0,0 @@ |
| -/* |
| - * 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.android; |
| - |
| -import org.adblockplus.libadblockplus.IsAllowedConnectionCallback; |
| - |
| -import android.content.Context; |
| -import android.content.SharedPreferences; |
| -import android.net.ConnectivityManager; |
| -import android.util.Log; |
| - |
| -import java.util.Map; |
| -import java.util.concurrent.CountDownLatch; |
| -import java.util.concurrent.atomic.AtomicInteger; |
| - |
| -/** |
| - * Provides single instance of AdblockEngine shared between registered clients |
| - */ |
| -public class SingleInstanceEngineProvider implements AdblockEngineProvider |
| -{ |
| - private static final String TAG = Utils.getTag(SingleInstanceEngineProvider.class); |
| - |
| - private Context context; |
| - private String basePath; |
| - private boolean developmentBuild; |
| - private String preloadedPreferenceName; |
| - private Map<String, Integer> urlToResourceIdMap; |
| - private AdblockEngine engine; |
| - private CountDownLatch engineCreated; |
| - private Long v8IsolateProviderPtr; |
| - private Runnable engineCreatedCallback; |
| - private Runnable engineDisposedCallback; |
| - |
| - /* |
| - Simple ARC management for AdblockEngine |
| - Use `retain` and `release` |
| - */ |
| - |
| - private AtomicInteger referenceCounter = new AtomicInteger(0); |
| - |
| - /** |
| - * Init with context |
| - * @param context application context |
| - * @param basePath file system root to store files |
| - * |
| - * Adblock Plus library will download subscription files and store them on |
| - * the path passed. The path should exist and the directory content should not be |
| - * cleared out occasionally. Using `context.getCacheDir().getAbsolutePath()` is not |
| - * recommended because it can be cleared by the system. |
| - * @param developmentBuild debug or release? |
| - */ |
| - public SingleInstanceEngineProvider(Context context, String basePath, boolean developmentBuild) |
| - { |
| - this.context = context.getApplicationContext(); |
| - this.basePath = basePath; |
| - this.developmentBuild = developmentBuild; |
| - } |
| - |
| - /** |
| - * Use preloaded subscriptions |
| - * @param preferenceName Shared Preferences name to store intercepted requests stats |
| - * @param urlToResourceIdMap |
| - */ |
| - public SingleInstanceEngineProvider preloadSubscriptions(String preferenceName, |
| - Map<String, Integer> urlToResourceIdMap) |
| - { |
| - this.preloadedPreferenceName = preferenceName; |
| - this.urlToResourceIdMap = urlToResourceIdMap; |
| - return this; |
| - } |
| - |
| - public SingleInstanceEngineProvider useV8IsolateProvider(long ptr) |
| - { |
| - this.v8IsolateProviderPtr = ptr; |
| - return this; |
| - } |
| - |
| - public SingleInstanceEngineProvider setEngineCreatedCallback(Runnable callback) |
| - { |
| - this.engineCreatedCallback = callback; |
| - return this; |
| - } |
| - |
| - public SingleInstanceEngineProvider setEngineDisposedCallback(Runnable callback) |
| - { |
| - this.engineDisposedCallback = callback; |
| - return this; |
| - } |
| - |
| - private void createAdblock() |
| - { |
| - ConnectivityManager connectivityManager = |
| - (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); |
| - IsAllowedConnectionCallback isAllowedConnectionCallback = |
| - new IsAllowedConnectionCallbackImpl(connectivityManager); |
| - |
| - Log.d(TAG, "Creating adblock engine ..."); |
| - |
| - AdblockEngine.Builder builder = AdblockEngine |
| - .builder( |
| - AdblockEngine.generateAppInfo(context, developmentBuild), |
| - basePath) |
| - .setIsAllowedConnectionCallback(isAllowedConnectionCallback) |
| - .enableElementHiding(true); |
| - |
| - if (v8IsolateProviderPtr != null) |
| - { |
| - builder.useV8IsolateProvider(v8IsolateProviderPtr); |
| - } |
| - |
| - // if preloaded subscriptions provided |
| - if (preloadedPreferenceName != null) |
| - { |
| - SharedPreferences preloadedSubscriptionsPrefs = context.getSharedPreferences( |
| - preloadedPreferenceName, |
| - Context.MODE_PRIVATE); |
| - builder.preloadSubscriptions( |
| - context, |
| - urlToResourceIdMap, |
| - new AndroidWebRequestResourceWrapper.SharedPrefsStorage(preloadedSubscriptionsPrefs)); |
| - } |
| - |
| - engine = builder.build(); |
| - |
| - Log.d(TAG, "AdblockHelper engine created"); |
| - |
| - // sometimes we need to init AdblockEngine instance, eg. set user settings |
| - if (engineCreatedCallback != null) |
| - { |
| - engineCreatedCallback.run(); |
| - } |
| - } |
| - |
| - @Override |
| - public synchronized boolean retain(boolean asynchronous) |
| - { |
| - boolean firstInstance = false; |
| - |
| - if (referenceCounter.getAndIncrement() == 0) |
| - { |
| - firstInstance = true; |
| - |
| - if (!asynchronous) |
| - { |
| - createAdblock(); |
| - } |
| - else |
| - { |
| - // latch is required for async (see `waitForReady()`) |
| - engineCreated = new CountDownLatch(1); |
| - |
| - new Thread(new Runnable() |
| - { |
| - @Override |
| - public void run() |
| - { |
| - createAdblock(); |
| - |
| - // unlock waiting client thread |
| - engineCreated.countDown(); |
| - } |
| - }).start(); |
| - } |
| - } |
| - return firstInstance; |
| - } |
| - |
| - @Override |
| - public void waitForReady() |
| - { |
| - if (engineCreated == null) |
| - { |
| - throw new IllegalStateException("Usage exception: call retain(true) first"); |
| - } |
| - |
| - try |
| - { |
| - Log.d(TAG, "Waiting for ready in " + Thread.currentThread()); |
| - engineCreated.await(); |
| - Log.d(TAG, "Ready"); |
| - } |
| - catch (InterruptedException e) |
| - { |
| - Log.w(TAG, "Interrupted", e); |
| - } |
| - } |
| - |
| - @Override |
| - public AdblockEngine getEngine() |
| - { |
| - return engine; |
| - } |
| - |
| - @Override |
| - public synchronized boolean release() |
| - { |
| - boolean lastInstance = false; |
| - |
| - if (referenceCounter.decrementAndGet() == 0) |
| - { |
| - lastInstance = true; |
| - |
| - if (engineCreated != null) |
| - { |
| - // retained asynchronously |
| - waitForReady(); |
| - disposeAdblock(); |
| - |
| - // to unlock waiting client in waitForReady() |
| - engineCreated.countDown(); |
| - engineCreated = null; |
| - } |
| - else |
| - { |
| - disposeAdblock(); |
| - } |
| - } |
| - return lastInstance; |
| - } |
| - |
| - private void disposeAdblock() |
| - { |
| - Log.w(TAG, "Disposing adblock engine"); |
| - |
| - engine.dispose(); |
| - engine = null; |
| - |
| - // sometimes we need to deinit something after AdblockEngine instance disposed |
| - // eg. release user settings |
| - if (engineDisposedCallback != null) |
| - { |
| - engineDisposedCallback.run(); |
| - } |
| - } |
| - |
| - @Override |
| - public int getCounter() |
| - { |
| - return referenceCounter.get(); |
| - } |
| -} |