Index: adblockplussbrowser/src/main/java/org/adblockplus/sbrowser/contentblocker/engine/EngineService.java |
=================================================================== |
deleted file mode 100644 |
--- a/adblockplussbrowser/src/main/java/org/adblockplus/sbrowser/contentblocker/engine/EngineService.java |
+++ /dev/null |
@@ -1,189 +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.sbrowser.contentblocker.engine; |
- |
-import java.util.concurrent.LinkedBlockingQueue; |
- |
-import android.app.Service; |
-import android.content.Context; |
-import android.content.Intent; |
-import android.os.IBinder; |
-import android.util.Log; |
- |
-public final class EngineService extends Service |
-{ |
- private static final String TAG = EngineService.class.getSimpleName(); |
- |
- private volatile Engine engine = null; |
- private volatile boolean isInitialized = false; |
- private Throwable failureCause = null; |
- private static final LinkedBlockingQueue<EngineCreatedCallbackWrapper> ON_CREATED_CALLBACKS = |
- new LinkedBlockingQueue<>(); |
- |
- @Override |
- public int onStartCommand(Intent intent, int flags, int startId) |
- { |
- return Service.START_NOT_STICKY; |
- } |
- |
- /** |
- * The callback gets executed on the UI thread. |
- * |
- * @param context |
- * @param callback |
- */ |
- public static void startService(final Context context, final OnEngineCreatedCallback callback) |
- { |
- startService(context, callback, true); |
- } |
- |
- /** |
- * |
- * @param context |
- * @param callback |
- * @param runOnUiThread |
- * {@code true} if the callback should be executed on the UI thread |
- */ |
- public static void startService(final Context context, final OnEngineCreatedCallback callback, |
- final boolean runOnUiThread) |
- { |
- context.startService(new Intent(context, EngineService.class)); |
- ON_CREATED_CALLBACKS.offer(new EngineCreatedCallbackWrapper(callback, runOnUiThread)); |
- } |
- |
- @Override |
- public void onCreate() |
- { |
- super.onCreate(); |
- startDaemonThread(new Initializer(this)); |
- startDaemonThread(new CreationNotifier(this)); |
- } |
- |
- @Override |
- public IBinder onBind(Intent intent) |
- { |
- return null; |
- } |
- |
- private static void startDaemonThread(final Runnable runnable) |
- { |
- final Thread t = new Thread(runnable); |
- t.setDaemon(true); |
- t.start(); |
- } |
- |
- private static class Initializer implements Runnable |
- { |
- private final EngineService service; |
- |
- public Initializer(final EngineService service) |
- { |
- this.service = service; |
- } |
- |
- @Override |
- public void run() |
- { |
- try |
- { |
- this.service.engine = Engine.create(this.service.getApplicationContext()); |
- } |
- catch (Throwable t) |
- { |
- Log.e(TAG, "Initialization failed: " + t.getMessage(), t); |
- this.service.failureCause = t; |
- } |
- finally |
- { |
- this.service.isInitialized = true; |
- } |
- } |
- } |
- |
- private static class CreationNotifier implements Runnable |
- { |
- private static final String TAG = CreationNotifier.class.getSimpleName(); |
- private final EngineService service; |
- |
- public CreationNotifier(final EngineService service) |
- { |
- this.service = service; |
- } |
- |
- @Override |
- public void run() |
- { |
- try |
- { |
- while (!this.service.isInitialized) |
- { |
- Thread.sleep(250); |
- } |
- |
- for (;;) |
- { |
- final EngineCreatedCallbackWrapper wrapper = EngineService.ON_CREATED_CALLBACKS.take(); |
- if (wrapper != null) |
- { |
- if (wrapper.runOnUiThread) |
- { |
- Engine.runOnUiThread(new Runnable() |
- { |
- private final EngineService service = CreationNotifier.this.service; |
- |
- @Override |
- public void run() |
- { |
- wrapper.callback.onEngineCreated(this.service.engine, |
- this.service.failureCause == null); |
- } |
- }); |
- } |
- else |
- { |
- wrapper.callback.onEngineCreated(this.service.engine, |
- this.service.failureCause == null); |
- } |
- } |
- } |
- } |
- catch (final Throwable t) |
- { |
- Log.e(TAG, "Notifier died: " + t.getMessage(), t); |
- } |
- } |
- } |
- |
- public interface OnEngineCreatedCallback |
- { |
- void onEngineCreated(Engine engine, boolean success); |
- } |
- |
- private static class EngineCreatedCallbackWrapper |
- { |
- final OnEngineCreatedCallback callback; |
- final boolean runOnUiThread; |
- |
- public EngineCreatedCallbackWrapper(final OnEngineCreatedCallback callback, |
- final boolean runOnUiThread) |
- { |
- this.callback = callback; |
- this.runOnUiThread = runOnUiThread; |
- } |
- } |
-} |