| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-present eyeo GmbH | 3  * Copyright (C) 2006-present eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 12  * GNU General Public License for more details. | 12  * GNU General Public License for more details. | 
| 13  * | 13  * | 
| 14  * You should have received a copy of the GNU General Public License | 14  * You should have received a copy of the GNU General Public License | 
| 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 16  */ | 16  */ | 
| 17 | 17 | 
| 18 package org.adblockplus.libadblockplus.tests; | 18 package org.adblockplus.libadblockplus.tests; | 
| 19 | 19 | 
| 20 import android.os.SystemClock; | 20 import org.adblockplus.libadblockplus.BaseFilterEngineTest; | 
| 21 |  | 
| 22 import org.adblockplus.libadblockplus.HeaderEntry; | 21 import org.adblockplus.libadblockplus.HeaderEntry; | 
| 23 import org.adblockplus.libadblockplus.ServerResponse; | 22 import org.adblockplus.libadblockplus.ServerResponse; | 
| 24 import org.adblockplus.libadblockplus.Subscription; | 23 import org.adblockplus.libadblockplus.ThrowingWebRequest; | 
| 25 import org.adblockplus.libadblockplus.WebRequest; |  | 
| 26 import org.adblockplus.libadblockplus.android.AndroidWebRequest; |  | 
| 27 import org.adblockplus.libadblockplus.android.AndroidWebRequestResourceWrapper; | 24 import org.adblockplus.libadblockplus.android.AndroidWebRequestResourceWrapper; | 
| 28 import org.adblockplus.libadblockplus.android.Utils; | 25 import org.adblockplus.libadblockplus.android.Utils; | 
| 29 import org.adblockplus.libadblockplus.tests.test.R; | 26 import org.adblockplus.libadblockplus.tests.test.R; | 
| 30 import org.junit.Test; | 27 import org.junit.Test; | 
| 31 | 28 | 
| 32 import java.util.Collection; | 29 import java.util.Collection; | 
| 33 import java.util.HashMap; | 30 import java.util.HashMap; | 
| 34 import java.util.HashSet; | 31 import java.util.HashSet; | 
| 35 import java.util.LinkedList; | 32 import java.util.LinkedList; | 
| 36 import java.util.List; | 33 import java.util.List; | 
| 37 import java.util.Map; | 34 import java.util.Map; | 
| 38 import java.util.Set; | 35 import java.util.Set; | 
| 39 | 36 | 
| 40 public class AndroidWebRequestResourceWrapperTest extends BaseFilterEngineTest | 37 public class AndroidWebRequestResourceWrapperTest extends BaseFilterEngineTest | 
| 41 { | 38 { | 
| 42   private static final int UPDATE_SUBSCRIPTIONS_WAIT_DELAY_MS = 5 * 1000; // 5s | 39   private static final class TestRequest extends ThrowingWebRequest | 
| 43 |  | 
| 44   private static final class TestRequest extends AndroidWebRequest |  | 
| 45   { | 40   { | 
| 46     private List<String> urls = new LinkedList<String>(); | 41     private List<String> urls = new LinkedList<String>(); | 
| 47 | 42 | 
| 48     public List<String> getUrls() | 43     public List<String> getUrls() | 
| 49     { | 44     { | 
| 50       return urls; | 45       return urls; | 
| 51     } | 46     } | 
| 52 | 47 | 
| 53     @Override | 48     @Override | 
| 54     public ServerResponse httpGET(String urlStr, List<HeaderEntry> headers) | 49     public ServerResponse httpGET(String urlStr, List<HeaderEntry> headers) | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 107   protected void setUp() throws Exception | 102   protected void setUp() throws Exception | 
| 108   { | 103   { | 
| 109     request = new TestRequest(); | 104     request = new TestRequest(); | 
| 110     preloadMap = new HashMap<String, Integer>(); | 105     preloadMap = new HashMap<String, Integer>(); | 
| 111     storage = new TestStorage(); | 106     storage = new TestStorage(); | 
| 112     wrapper = new AndroidWebRequestResourceWrapper( | 107     wrapper = new AndroidWebRequestResourceWrapper( | 
| 113       getInstrumentation().getContext(), request, preloadMap, storage); | 108       getInstrumentation().getContext(), request, preloadMap, storage); | 
| 114     wrapperListener = new TestWrapperListener(); | 109     wrapperListener = new TestWrapperListener(); | 
| 115     wrapper.setListener(wrapperListener); | 110     wrapper.setListener(wrapperListener); | 
| 116 | 111 | 
|  | 112     setWebRequest(wrapper); | 
|  | 113 | 
| 117     super.setUp(); | 114     super.setUp(); | 
| 118   } | 115   } | 
| 119 | 116 | 
| 120   @Override |  | 
| 121   protected WebRequest createWebRequest() |  | 
| 122   { |  | 
| 123     return wrapper; |  | 
| 124   } |  | 
| 125 |  | 
| 126   private void updateSubscriptions() |  | 
| 127   { |  | 
| 128     for (final Subscription s : this.filterEngine.getListedSubscriptions()) |  | 
| 129     { |  | 
| 130       try |  | 
| 131       { |  | 
| 132         s.updateFilters(); |  | 
| 133       } |  | 
| 134       finally |  | 
| 135       { |  | 
| 136         s.dispose(); |  | 
| 137       } |  | 
| 138     } |  | 
| 139   } |  | 
| 140 |  | 
| 141   private List<String> getUrlsListWithoutParams(Collection<String> urlWithParams
     ) | 117   private List<String> getUrlsListWithoutParams(Collection<String> urlWithParams
     ) | 
| 142   { | 118   { | 
| 143     List<String> list = new LinkedList<String>(); | 119     List<String> list = new LinkedList<String>(); | 
| 144     for (String eachUrl : urlWithParams) | 120     for (String eachUrl : urlWithParams) | 
| 145     { | 121     { | 
| 146       list.add(Utils.getUrlWithoutParams(eachUrl)); | 122       list.add(Utils.getUrlWithoutParams(eachUrl)); | 
| 147     } | 123     } | 
| 148     return list; | 124     return list; | 
| 149   } | 125   } | 
| 150 | 126 | 
|  | 127   private void reset() | 
|  | 128   { | 
|  | 129     preloadMap.clear(); | 
|  | 130     request.getUrls().clear(); | 
|  | 131     storage.getInterceptedUrls().clear(); | 
|  | 132     wrapperListener.getUrlsToResourceId().clear(); | 
|  | 133   } | 
|  | 134 | 
|  | 135   @Override | 
|  | 136   protected int getUpdateRequestCount() | 
|  | 137   { | 
|  | 138     return request.getUrls().size() + storage.getInterceptedUrls().size(); | 
|  | 139   } | 
|  | 140 | 
| 151   private void testIntercepted(final String preloadUrl, final int resourceId) | 141   private void testIntercepted(final String preloadUrl, final int resourceId) | 
| 152   { | 142   { | 
| 153     preloadMap.clear(); | 143     reset(); | 
| 154     preloadMap.put(preloadUrl, resourceId); | 144     preloadMap.put(preloadUrl, resourceId); | 
| 155 |  | 
| 156     assertEquals(0, request.getUrls().size()); | 145     assertEquals(0, request.getUrls().size()); | 
| 157 |  | 
| 158     assertEquals(0, storage.getInterceptedUrls().size()); | 146     assertEquals(0, storage.getInterceptedUrls().size()); | 
| 159 |  | 
| 160     assertEquals(0, wrapperListener.getUrlsToResourceId().size()); | 147     assertEquals(0, wrapperListener.getUrlsToResourceId().size()); | 
| 161 | 148 | 
| 162     updateSubscriptions(); | 149     updateSubscriptions(); | 
| 163     SystemClock.sleep(UPDATE_SUBSCRIPTIONS_WAIT_DELAY_MS); |  | 
| 164 | 150 | 
| 165     if (request.getUrls().size() > 0) | 151     if (request.getUrls().size() > 0) | 
| 166     { | 152     { | 
| 167       List<String> requestsWithoutParams = getUrlsListWithoutParams(request.getU
     rls()); | 153       List<String> requestsWithoutParams = getUrlsListWithoutParams(request.getU
     rls()); | 
| 168       assertFalse(requestsWithoutParams.contains(preloadUrl)); | 154       assertFalse(requestsWithoutParams.contains(preloadUrl)); | 
| 169     } | 155     } | 
| 170 | 156 | 
| 171     assertEquals(1, storage.getInterceptedUrls().size()); | 157     assertEquals(1, storage.getInterceptedUrls().size()); | 
| 172     assertTrue(storage.getInterceptedUrls().contains(preloadUrl)); | 158     assertTrue(storage.getInterceptedUrls().contains(preloadUrl)); | 
| 173 | 159 | 
| (...skipping 24 matching lines...) Expand all  Loading... | 
| 198   { | 184   { | 
| 199     testIntercepted( | 185     testIntercepted( | 
| 200       AndroidWebRequestResourceWrapper.ACCEPTABLE_ADS, R.raw.exceptionrules); | 186       AndroidWebRequestResourceWrapper.ACCEPTABLE_ADS, R.raw.exceptionrules); | 
| 201   } | 187   } | 
| 202 | 188 | 
| 203   @Test | 189   @Test | 
| 204   public void testIntercepted_OnceOnly() | 190   public void testIntercepted_OnceOnly() | 
| 205   { | 191   { | 
| 206     final String preloadUrl = AndroidWebRequestResourceWrapper.EASYLIST; | 192     final String preloadUrl = AndroidWebRequestResourceWrapper.EASYLIST; | 
| 207 | 193 | 
| 208     preloadMap.clear(); | 194     reset(); | 
| 209     preloadMap.put(preloadUrl, R.raw.easylist); | 195     preloadMap.put(preloadUrl, R.raw.easylist); | 
| 210 |  | 
| 211     assertEquals(0, request.getUrls().size()); | 196     assertEquals(0, request.getUrls().size()); | 
| 212 |  | 
| 213     assertEquals(0, storage.getInterceptedUrls().size()); | 197     assertEquals(0, storage.getInterceptedUrls().size()); | 
| 214 |  | 
| 215     assertEquals(0, wrapperListener.getUrlsToResourceId().size()); | 198     assertEquals(0, wrapperListener.getUrlsToResourceId().size()); | 
| 216 | 199 | 
| 217     // update #1 -  should be intercepted | 200     // update #1 -  should be intercepted | 
| 218     updateSubscriptions(); | 201     updateSubscriptions(); | 
| 219     SystemClock.sleep(UPDATE_SUBSCRIPTIONS_WAIT_DELAY_MS); |  | 
| 220 | 202 | 
| 221     int requestsCount = request.getUrls().size(); | 203     int requestsCount = request.getUrls().size(); | 
| 222     if (requestsCount > 0) | 204     if (requestsCount > 0) | 
| 223     { | 205     { | 
| 224       List<String> requestsWithoutParams = getUrlsListWithoutParams(request.getU
     rls()); | 206       List<String> requestsWithoutParams = getUrlsListWithoutParams(request.getU
     rls()); | 
| 225       assertFalse(requestsWithoutParams.contains(preloadUrl)); | 207       assertFalse(requestsWithoutParams.contains(preloadUrl)); | 
| 226     } | 208     } | 
| 227 | 209 | 
| 228     assertEquals(1, storage.getInterceptedUrls().size()); | 210     assertEquals(1, storage.getInterceptedUrls().size()); | 
| 229     assertTrue(storage.getInterceptedUrls().contains(preloadUrl)); | 211     assertTrue(storage.getInterceptedUrls().contains(preloadUrl)); | 
| 230 | 212 | 
| 231     assertTrue(wrapperListener.getUrlsToResourceId().size() >= 0); | 213     assertTrue(wrapperListener.getUrlsToResourceId().size() >= 0); | 
| 232     List<String> notifiedInterceptedUrls = getUrlsListWithoutParams( | 214     List<String> notifiedInterceptedUrls = getUrlsListWithoutParams( | 
| 233       wrapperListener.getUrlsToResourceId().keySet()); | 215       wrapperListener.getUrlsToResourceId().keySet()); | 
| 234     assertTrue(notifiedInterceptedUrls.contains(preloadUrl)); | 216     assertTrue(notifiedInterceptedUrls.contains(preloadUrl)); | 
| 235 | 217 | 
| 236     // update #2 -  should NOT be intercepted but actually requested from the we
     b | 218     // update #2 -  should NOT be intercepted but actually requested from the we
     b | 
| 237     wrapperListener.getUrlsToResourceId().clear(); | 219     wrapperListener.getUrlsToResourceId().clear(); | 
| 238 | 220 | 
| 239     updateSubscriptions(); | 221     updateSubscriptions(); | 
| 240     SystemClock.sleep(UPDATE_SUBSCRIPTIONS_WAIT_DELAY_MS); |  | 
| 241 | 222 | 
| 242     assertTrue(request.getUrls().size() > requestsCount); | 223     assertTrue(request.getUrls().size() > requestsCount); | 
| 243     List<String> requestsWithoutParams = getUrlsListWithoutParams(request.getUrl
     s()); | 224     List<String> requestsWithoutParams = getUrlsListWithoutParams(request.getUrl
     s()); | 
| 244     assertTrue(requestsWithoutParams.contains(preloadUrl)); | 225     assertTrue(requestsWithoutParams.contains(preloadUrl)); | 
| 245 | 226 | 
| 246     assertEquals(0, wrapperListener.getUrlsToResourceId().size()); | 227     assertEquals(0, wrapperListener.getUrlsToResourceId().size()); | 
| 247   } | 228   } | 
| 248 | 229 | 
| 249   private void testNotIntercepted(final String interceptedUrl, final int resourc
     eId, | 230   private void testNotIntercepted(final String interceptedUrl, final int resourc
     eId, | 
| 250                                   final String notInterceptedUrl) | 231                                   final String notInterceptedUrl) | 
| 251   { | 232   { | 
| 252     preloadMap.clear(); | 233     reset(); | 
| 253     preloadMap.put(interceptedUrl, resourceId); | 234     preloadMap.put(interceptedUrl, resourceId); | 
| 254 |  | 
| 255     assertEquals(0, request.getUrls().size()); | 235     assertEquals(0, request.getUrls().size()); | 
| 256     assertEquals(0, storage.getInterceptedUrls().size()); | 236     assertEquals(0, storage.getInterceptedUrls().size()); | 
| 257     assertEquals(0, wrapperListener.getUrlsToResourceId().size()); | 237     assertEquals(0, wrapperListener.getUrlsToResourceId().size()); | 
| 258 | 238 | 
| 259     updateSubscriptions(); | 239     updateSubscriptions(); | 
| 260     SystemClock.sleep(UPDATE_SUBSCRIPTIONS_WAIT_DELAY_MS); |  | 
| 261 | 240 | 
| 262     assertEquals(1, request.getUrls().size()); | 241     assertEquals(1, request.getUrls().size()); | 
| 263     List<String> requestUrlsWithoutParams = getUrlsListWithoutParams(request.get
     Urls()); | 242     List<String> requestUrlsWithoutParams = getUrlsListWithoutParams(request.get
     Urls()); | 
| 264     assertFalse(requestUrlsWithoutParams.contains(interceptedUrl)); | 243     assertFalse(requestUrlsWithoutParams.contains(interceptedUrl)); | 
| 265     assertTrue(requestUrlsWithoutParams.contains(notInterceptedUrl)); | 244     assertTrue(requestUrlsWithoutParams.contains(notInterceptedUrl)); | 
| 266     assertEquals(1, storage.getInterceptedUrls().size()); | 245     assertEquals(1, storage.getInterceptedUrls().size()); | 
| 267     assertTrue(storage.getInterceptedUrls().contains(interceptedUrl)); | 246     assertTrue(storage.getInterceptedUrls().contains(interceptedUrl)); | 
| 268     assertFalse(storage.getInterceptedUrls().contains(notInterceptedUrl)); | 247     assertFalse(storage.getInterceptedUrls().contains(notInterceptedUrl)); | 
| 269     assertTrue(wrapperListener.getUrlsToResourceId().size() > 0); | 248     assertTrue(wrapperListener.getUrlsToResourceId().size() > 0); | 
| 270 | 249 | 
| 271     for (String eachString : wrapperListener.getUrlsToResourceId().keySet()) | 250     for (String eachString : wrapperListener.getUrlsToResourceId().keySet()) | 
| 272     { | 251     { | 
| 273       if (Utils.getUrlWithoutParams(eachString).equals(notInterceptedUrl)) | 252       if (Utils.getUrlWithoutParams(eachString).equals(notInterceptedUrl)) | 
| 274       { | 253       { | 
| 275         fail(); | 254         fail(); | 
| 276       } | 255       } | 
| 277     } | 256     } | 
| 278   } | 257   } | 
| 279 | 258 | 
| 280   @Test | 259   @Test | 
| 281   public void testInterceptedAll() | 260   public void testInterceptedAll() | 
| 282   { | 261   { | 
| 283     preloadMap.clear(); | 262     reset(); | 
| 284     preloadMap.put(AndroidWebRequestResourceWrapper.EASYLIST, R.raw.easylist); | 263     preloadMap.put(AndroidWebRequestResourceWrapper.EASYLIST, R.raw.easylist); | 
| 285     preloadMap.put(AndroidWebRequestResourceWrapper.ACCEPTABLE_ADS, R.raw.except
     ionrules); | 264     preloadMap.put(AndroidWebRequestResourceWrapper.ACCEPTABLE_ADS, R.raw.except
     ionrules); | 
| 286 |  | 
| 287     assertEquals(0, request.getUrls().size()); | 265     assertEquals(0, request.getUrls().size()); | 
| 288 |  | 
| 289     assertEquals(0, storage.getInterceptedUrls().size()); | 266     assertEquals(0, storage.getInterceptedUrls().size()); | 
| 290 |  | 
| 291     assertEquals(0, wrapperListener.getUrlsToResourceId().size()); | 267     assertEquals(0, wrapperListener.getUrlsToResourceId().size()); | 
| 292 | 268 | 
| 293     updateSubscriptions(); | 269     updateSubscriptions(); | 
| 294     SystemClock.sleep(UPDATE_SUBSCRIPTIONS_WAIT_DELAY_MS); |  | 
| 295 | 270 | 
| 296     assertEquals(0, request.getUrls().size()); | 271     assertEquals(0, request.getUrls().size()); | 
| 297     assertEquals(2, storage.getInterceptedUrls().size()); | 272     assertEquals(2, storage.getInterceptedUrls().size()); | 
| 298     assertTrue(storage.getInterceptedUrls().contains(AndroidWebRequestResourceWr
     apper.EASYLIST)); | 273     assertTrue(storage.getInterceptedUrls().contains(AndroidWebRequestResourceWr
     apper.EASYLIST)); | 
| 299     assertTrue(storage.getInterceptedUrls().contains(AndroidWebRequestResourceWr
     apper.ACCEPTABLE_ADS)); | 274     assertTrue(storage.getInterceptedUrls().contains(AndroidWebRequestResourceWr
     apper.ACCEPTABLE_ADS)); | 
| 300 | 275 | 
| 301     assertTrue(wrapperListener.getUrlsToResourceId().size() >= 0); | 276     assertTrue(wrapperListener.getUrlsToResourceId().size() >= 0); | 
| 302     List<String> notifiedInterceptedUrls = getUrlsListWithoutParams( | 277     List<String> notifiedInterceptedUrls = getUrlsListWithoutParams( | 
| 303       wrapperListener.getUrlsToResourceId().keySet()); | 278       wrapperListener.getUrlsToResourceId().keySet()); | 
| 304     assertTrue(notifiedInterceptedUrls.contains(AndroidWebRequestResourceWrapper
     .EASYLIST)); | 279     assertTrue(notifiedInterceptedUrls.contains(AndroidWebRequestResourceWrapper
     .EASYLIST)); | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 328   } | 303   } | 
| 329 | 304 | 
| 330   @Test | 305   @Test | 
| 331   public void testNotIntercepted_AcceptableAds() | 306   public void testNotIntercepted_AcceptableAds() | 
| 332   { | 307   { | 
| 333     testNotIntercepted( | 308     testNotIntercepted( | 
| 334       AndroidWebRequestResourceWrapper.EASYLIST, R.raw.easylist, | 309       AndroidWebRequestResourceWrapper.EASYLIST, R.raw.easylist, | 
| 335       AndroidWebRequestResourceWrapper.ACCEPTABLE_ADS); | 310       AndroidWebRequestResourceWrapper.ACCEPTABLE_ADS); | 
| 336   } | 311   } | 
| 337 } | 312 } | 
| OLD | NEW | 
|---|