Index: libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/FilterEngineTest.java
diff --git a/libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/FilterEngineTest.java b/libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/FilterEngineTest.java
deleted file mode 100644
index c5523b02a8dfd46c5321865688f09b1c71fe9a13..0000000000000000000000000000000000000000
--- a/libadblockplus-android-tests/src/org/adblockplus/libadblockplus/tests/FilterEngineTest.java
+++ /dev/null
@@ -1,487 +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.tests;
-
-import org.adblockplus.libadblockplus.Filter;
-import org.adblockplus.libadblockplus.FilterEngine;
-import org.adblockplus.libadblockplus.MockFilterChangeCallback;
-import org.adblockplus.libadblockplus.Subscription;
-
-import org.junit.Test;
-
-import java.util.List;
-
-public class FilterEngineTest extends BaseFilterEngineTest
-{
-  @Test
-  public void testFilterCreation()
-  {
-    Filter filter1 = filterEngine.getFilter("foo");
-    assertEquals(Filter.Type.BLOCKING, filter1.getType());
-    Filter filter2 = filterEngine.getFilter("@@foo");
-    assertEquals(Filter.Type.EXCEPTION, filter2.getType());
-    Filter filter3 = filterEngine.getFilter("example.com##foo");
-    assertEquals(Filter.Type.ELEMHIDE, filter3.getType());
-    Filter filter4 = filterEngine.getFilter("example.com#@#foo");
-    assertEquals(Filter.Type.ELEMHIDE_EXCEPTION, filter4.getType());
-    Filter filter5 = filterEngine.getFilter("  foo  ");
-    assertEquals(filter1, filter5);
-  }
-
-  @Test
-  public void testAddRemoveFilters()
-  {
-    while (filterEngine.getListedFilters().size() > 0)
-    {
-      filterEngine.getListedFilters().get(0).removeFromList();
-    }
-
-    assertEquals(0, filterEngine.getListedFilters().size());
-    Filter filter = filterEngine.getFilter("foo");
-    assertEquals(0, filterEngine.getListedFilters().size());
-    assertFalse(filter.isListed());
-
-    filter.addToList();
-    assertEquals(1, filterEngine.getListedFilters().size());
-    assertEquals(filter, filterEngine.getListedFilters().get(0));
-    assertTrue(filter.isListed());
-
-    filter.addToList();
-    assertEquals(1, filterEngine.getListedFilters().size());
-    assertEquals(filter, filterEngine.getListedFilters().get(0));
-    assertTrue(filter.isListed());
-
-    filter.removeFromList();
-    assertEquals(0, filterEngine.getListedFilters().size());
-    assertFalse(filter.isListed());
-
-    filter.removeFromList();
-    assertEquals(0, filterEngine.getListedFilters().size());
-    assertFalse(filter.isListed());
-  }
-
-  @Test
-  public void testAddRemoveSubscriptions()
-  {
-    while (filterEngine.getListedSubscriptions().size() > 0)
-    {
-      filterEngine.getListedSubscriptions().get(0).removeFromList();
-    }
-
-    assertEquals(0, filterEngine.getListedSubscriptions().size());
-    Subscription subscription = filterEngine.getSubscription("foo");
-    assertEquals(0, filterEngine.getListedSubscriptions().size());
-    assertFalse(subscription.isListed());
-    subscription.addToList();
-    assertEquals(1, filterEngine.getListedSubscriptions().size());
-    assertEquals(subscription, filterEngine.getListedSubscriptions().get(0));
-    assertTrue(subscription.isListed());
-    subscription.addToList();
-    assertEquals(1, filterEngine.getListedSubscriptions().size());
-    assertEquals(subscription, filterEngine.getListedSubscriptions().get(0));
-    assertTrue(subscription.isListed());
-    subscription.removeFromList();
-    assertEquals(0, filterEngine.getListedSubscriptions().size());
-    assertFalse(subscription.isListed());
-    subscription.removeFromList();
-    assertEquals(0, filterEngine.getListedSubscriptions().size());
-    assertFalse(subscription.isListed());
-  }
-
-  @Test
-  public void testSubscriptionUpdates()
-  {
-    Subscription subscription = filterEngine.getSubscription("foo");
-    assertFalse(subscription.isUpdating());
-    subscription.updateFilters();
-  }
-
-  @Test
-  public void testMatches()
-  {
-    filterEngine.getFilter("adbanner.gif").addToList();
-    filterEngine.getFilter("@@notbanner.gif").addToList();
-    filterEngine.getFilter("tpbanner.gif$third-party").addToList();
-    filterEngine.getFilter("fpbanner.gif$~third-party").addToList();
-    filterEngine.getFilter("combanner.gif$domain=example.com").addToList();
-    filterEngine.getFilter("orgbanner.gif$domain=~example.com").addToList();
-
-    Filter match1 = filterEngine.matches(
-      "http://example.org/foobar.gif",
-      FilterEngine.ContentType.IMAGE,
-      "");
-    assertNull(match1);
-
-    Filter match2 = filterEngine.matches(
-      "http://example.org/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "");
-    assertNotNull(match2);
-    assertEquals(Filter.Type.BLOCKING, match2.getType());
-
-    Filter match3 = filterEngine.matches(
-      "http://example.org/notbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "");
-    assertNotNull(match3);
-    assertEquals(Filter.Type.EXCEPTION, match3.getType());
-
-    Filter match4 = filterEngine.matches(
-      "http://example.org/notbanner.gif",
-      FilterEngine.ContentType.IMAGE, "");
-    assertNotNull(match4);
-    assertEquals(Filter.Type.EXCEPTION, match4.getType());
-
-    Filter match5 = filterEngine.matches(
-      "http://example.org/tpbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "http://example.org/");
-    assertNull(match5);
-
-    Filter match6 = filterEngine.matches(
-      "http://example.org/fpbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "http://example.org/");
-    assertNotNull(match6);
-    assertEquals(Filter.Type.BLOCKING, match6.getType());
-
-    Filter match7 = filterEngine.matches(
-      "http://example.org/tpbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "http://example.com/");
-    assertNotNull(match7);
-    assertEquals(Filter.Type.BLOCKING, match7.getType());
-
-    Filter match8 = filterEngine.matches(
-      "http://example.org/fpbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "http://example.com/");
-    assertNull(match8);
-
-    Filter match9 = filterEngine.matches(
-      "http://example.org/combanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "http://example.com/");
-    assertNotNull(match9);
-    assertEquals(Filter.Type.BLOCKING, match9.getType());
-
-    Filter match10 = filterEngine.matches(
-      "http://example.org/combanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "http://example.org/");
-    assertNull(match10);
-
-    Filter match11 = filterEngine.matches(
-      "http://example.org/orgbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "http://example.com/");
-    assertNull(match11);
-
-    Filter match12 = filterEngine.matches(
-      "http://example.org/orgbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "http://example.org/");
-    assertNotNull(match12);
-    assertEquals(Filter.Type.BLOCKING, match12.getType());
-  }
-
-  @Test
-  public void testMatchesOnWhitelistedDomain()
-  {
-    filterEngine.getFilter("adbanner.gif").addToList();
-    filterEngine.getFilter("@@||example.org^$document").addToList();
-
-    Filter match1 = filterEngine.matches(
-      "http://ads.com/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "http://example.com/");
-    assertNotNull(match1);
-    assertEquals(Filter.Type.BLOCKING, match1.getType());
-
-    Filter match2 = filterEngine.matches(
-      "http://ads.com/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      "http://example.org/");
-    assertNotNull(match2);
-    assertEquals(Filter.Type.EXCEPTION, match2.getType());
-  }
-
-  @Test
-  public void testMatchesNestedFrameRequest()
-  {
-    filterEngine.getFilter("adbanner.gif").addToList();
-    filterEngine.getFilter("@@adbanner.gif$domain=example.org").addToList();
-
-    Filter match1 = filterEngine.matches(
-      "http://ads.com/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      new String[]
-        {
-          "http://ads.com/frame/",
-          "http://example.com/"
-        });
-    assertNotNull(match1);
-    assertEquals(Filter.Type.BLOCKING, match1.getType());
-
-    Filter match2 = filterEngine.matches(
-      "http://ads.com/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      new String[]
-        {
-          "http://ads.com/frame/",
-          "http://example.org/"
-        });
-    assertNotNull(match2);
-    assertEquals(Filter.Type.EXCEPTION, match2.getType());
-
-    Filter match3 = filterEngine.matches(
-      "http://ads.com/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      new String[]
-        {
-          "http://example.org/",
-          "http://ads.com/frame/"
-        });
-    assertNotNull(match3);
-    assertEquals(Filter.Type.BLOCKING, match3.getType());
-  }
-
-  @Test
-  public void testMatchesNestedFrameOnWhitelistedDomain()
-  {
-    filterEngine.getFilter("adbanner.gif").addToList();
-    filterEngine.getFilter("@@||example.org^$document,domain=ads.com").addToList();
-
-    Filter match1 = filterEngine.matches(
-      "http://ads.com/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      new String[]
-        {
-          "http://ads.com/frame/",
-          "http://example.com/"
-        });
-    assertNotNull(match1);
-    assertEquals(Filter.Type.BLOCKING, match1.getType());
-
-    Filter match2 = filterEngine.matches(
-      "http://ads.com/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      new String[]
-        {
-          "http://ads.com/frame/",
-          "http://example.org/"
-        });
-    assertNotNull(match2);
-    assertEquals(Filter.Type.EXCEPTION, match2.getType());
-
-    Filter match3 = filterEngine.matches(
-      "http://ads.com/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      new String[]
-        {
-          "http://example.org/"
-        });
-    assertNotNull(match3);
-    assertEquals(Filter.Type.BLOCKING, match3.getType());
-
-    Filter match4 = filterEngine.matches(
-      "http://ads.com/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      new String[]
-        {
-          "http://example.org/",
-          "http://ads.com/frame/"
-        });
-    assertNotNull(match4);
-    assertEquals(Filter.Type.BLOCKING, match4.getType());
-
-    Filter match5 = filterEngine.matches(
-      "http://ads.com/adbanner.gif",
-      FilterEngine.ContentType.IMAGE,
-      new String[]
-        {
-          "http://ads.com/frame/",
-          "http://example.org/",
-          "http://example.com/"
-        });
-    assertNotNull(match5);
-    assertEquals(Filter.Type.EXCEPTION, match5.getType());
-  }
-
-  @Test
-  public void testFirstRunFlag()
-  {
-    assertFalse(filterEngine.isFirstRun());
-  }
-
-  @Test
-  public void testSetRemoveFilterChangeCallback()
-  {
-    MockFilterChangeCallback mockFilterChangeCallback = new MockFilterChangeCallback(0);
-
-    filterEngine.setFilterChangeCallback(mockFilterChangeCallback);
-    filterEngine.getFilter("foo").addToList();
-    assertEquals(1, mockFilterChangeCallback.getTimesCalled());
-
-    filterEngine.removeFilterChangeCallback();
-    filterEngine.getFilter("foo").removeFromList();
-    assertEquals(1, mockFilterChangeCallback.getTimesCalled());
-  }
-
-  @Test
-  public void testDocumentWhitelisting()
-  {
-    filterEngine.getFilter("@@||example.org^$document").addToList();
-    filterEngine.getFilter("@@||example.com^$document,domain=example.de").addToList();
-
-    String[] emptyArray = new String[]
-      {
-      };
-
-    assertTrue(filterEngine.isDocumentWhitelisted("http://example.org", emptyArray));
-    assertFalse(filterEngine.isDocumentWhitelisted("http://example.co.uk", emptyArray));
-    assertFalse(filterEngine.isDocumentWhitelisted("http://example.com", emptyArray));
-
-    String[] documentUrls1 = new String[]
-      {
-        "http://example.de"
-      };
-    assertTrue(filterEngine.isDocumentWhitelisted("http://example.com", documentUrls1));
-    assertFalse(filterEngine.isDocumentWhitelisted("http://example.co.uk", documentUrls1));
-  }
-
-  @Test
-  public void testElemhideWhitelisting()
-  {
-    filterEngine.getFilter("@@||example.org^$elemhide").addToList();
-    filterEngine.getFilter("@@||example.com^$elemhide,domain=example.de").addToList();
-
-    String[] emptyArray = new String[]
-      {
-      };
-
-    assertTrue(filterEngine.isElemhideWhitelisted("http://example.org", emptyArray));
-    assertFalse(filterEngine.isElemhideWhitelisted("http://example.co.uk", emptyArray));
-    assertFalse(filterEngine.isElemhideWhitelisted("http://example.com", emptyArray));
-
-    String[] documentUrls1 = new String[]
-      {
-        "http://example.de"
-      };
-    assertTrue(filterEngine.isElemhideWhitelisted("http://example.com", documentUrls1));
-    assertFalse(filterEngine.isElemhideWhitelisted("http://example.co.uk", documentUrls1));
-  }
-
-  @Test
-  public void testGetAcceptableAdsSubscriptionUrl()
-  {
-    String url = filterEngine.getAcceptableAdsSubscriptionURL();
-    assertNotNull(url);
-  }
-
-  @Test
-  public void testSetGetAcceptableAds()
-  {
-    boolean isAA = filterEngine.isAcceptableAdsEnabled();
-    isAA = !isAA;
-    filterEngine.setAcceptableAdsEnabled(isAA);
-    assertEquals(isAA, filterEngine.isAcceptableAdsEnabled());
-    isAA = !isAA;
-    filterEngine.setAcceptableAdsEnabled(isAA);
-    assertEquals(isAA, filterEngine.isAcceptableAdsEnabled());
-  }
-
-  @Test
-  public void testIsAcceptableAdsIfEnabled()
-  {
-    if (!filterEngine.isAcceptableAdsEnabled())
-    {
-      filterEngine.setAcceptableAdsEnabled(true);
-    }
-    assertTrue(filterEngine.isAcceptableAdsEnabled());
-
-    List<Subscription> listedSubscriptions = filterEngine.getListedSubscriptions();
-    for (Subscription eachSubscription : listedSubscriptions)
-    {
-      if (eachSubscription.isAcceptableAds())
-      {
-        return;
-      }
-    }
-    fail("AA subscription not found in listed subscriptions when enabled");
-  }
-
-  @Test
-  public void testSubscriptionsAreNotDisabled()
-  {
-    if (!filterEngine.isAcceptableAdsEnabled())
-    {
-      filterEngine.setAcceptableAdsEnabled(true);
-    }
-    assertTrue(filterEngine.isAcceptableAdsEnabled());
-
-    List<Subscription> listedSubscriptions = filterEngine.getListedSubscriptions();
-    for (Subscription eachSubscription : listedSubscriptions)
-    {
-      assertFalse(eachSubscription.isDisabled());
-    }
-  }
-
-  @Test
-  public void testSubscriptionsSetDisabled()
-  {
-    List<Subscription> listedSubscriptions = filterEngine.getListedSubscriptions();
-    Subscription subscription = listedSubscriptions.get(0);
-    boolean originalDisabled = subscription.isDisabled();
-
-    subscription.setDisabled(!originalDisabled);
-    assertEquals(!originalDisabled, subscription.isDisabled());
-
-    subscription.setDisabled(originalDisabled);
-    assertEquals(originalDisabled, subscription.isDisabled());
-  }
-
-  @Test
-  public void testDisableEnableAcceptableAdsSubscription()
-  {
-    if (filterEngine.isAcceptableAdsEnabled())
-    {
-      filterEngine.setAcceptableAdsEnabled(false);
-    }
-    assertFalse(filterEngine.isAcceptableAdsEnabled());
-
-    List<Subscription> listedSubscriptions = filterEngine.getListedSubscriptions();
-    for (Subscription eachSubscription : listedSubscriptions)
-    {
-      if (eachSubscription.isAcceptableAds())
-      {
-        assertTrue(eachSubscription.isDisabled());
-      }
-    }
-
-    filterEngine.setAcceptableAdsEnabled(true);
-    listedSubscriptions = filterEngine.getListedSubscriptions();
-    for (Subscription eachSubscription : listedSubscriptions)
-    {
-      if (eachSubscription.isAcceptableAds())
-      {
-        assertFalse(eachSubscription.isDisabled());
-      }
-    }
-  }
-}
