Left: | ||
Right: |
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-2016 Eyeo GmbH | 3 * Copyright (C) 2006-2016 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 |
(...skipping 26 matching lines...) Expand all Loading... | |
37 import java.util.List; | 37 import java.util.List; |
38 import java.util.Map; | 38 import java.util.Map; |
39 import java.util.Set; | 39 import java.util.Set; |
40 import java.util.TreeSet; | 40 import java.util.TreeSet; |
41 import java.util.concurrent.LinkedBlockingQueue; | 41 import java.util.concurrent.LinkedBlockingQueue; |
42 import java.util.concurrent.TimeUnit; | 42 import java.util.concurrent.TimeUnit; |
43 import java.util.concurrent.locks.ReentrantLock; | 43 import java.util.concurrent.locks.ReentrantLock; |
44 | 44 |
45 import org.adblockplus.adblockplussbrowser.R; | 45 import org.adblockplus.adblockplussbrowser.R; |
46 import org.adblockplus.sbrowser.contentblocker.util.SharedPrefsUtils; | 46 import org.adblockplus.sbrowser.contentblocker.util.SharedPrefsUtils; |
47 import org.adblockplus.sbrowser.contentblocker.util.SubscriptionUtils; | |
47 | 48 |
48 import android.content.Context; | 49 import android.content.Context; |
49 import android.content.Intent; | 50 import android.content.Intent; |
50 import android.content.pm.PackageInfo; | 51 import android.content.pm.PackageInfo; |
51 import android.content.pm.PackageManager; | 52 import android.content.pm.PackageManager; |
52 import android.content.pm.ResolveInfo; | 53 import android.content.pm.ResolveInfo; |
53 import android.net.ConnectivityManager; | 54 import android.net.ConnectivityManager; |
54 import android.net.NetworkInfo; | 55 import android.net.NetworkInfo; |
55 import android.net.Uri; | 56 import android.net.Uri; |
56 import android.os.Handler; | 57 import android.os.Handler; |
57 import android.os.Looper; | 58 import android.os.Looper; |
58 import android.text.TextUtils; | 59 import android.text.TextUtils; |
59 import android.text.format.DateUtils; | 60 import android.text.format.DateUtils; |
60 import android.util.Log; | 61 import android.util.Log; |
61 | 62 |
62 public final class Engine | 63 public final class Engine |
63 { | 64 { |
64 private static final String TAG = Engine.class.getSimpleName(); | 65 private static final String TAG = Engine.class.getSimpleName(); |
65 | 66 |
66 public static final String USER_FILTERS_TITLE = "__filters"; | 67 public static final String USER_FILTERS_TITLE = "__filters"; |
67 public static final String USER_EXCEPTIONS_TITLE = "__exceptions"; | 68 public static final String USER_EXCEPTIONS_TITLE = "__exceptions"; |
68 | 69 |
69 public static final String SBROWSER_APP_ID = "com.sec.android.app.sbrowser"; | 70 public static final String SBROWSER_APP_ID = "com.sec.android.app.sbrowser"; |
71 public static final String EASYLIST_URL = "https://easylist-downloads.adblockp lus.org/easylist.txt"; | |
anton
2017/08/08 05:43:41
what's the point of changing order? seems to be no
jens
2017/08/08 13:53:05
I moved it to group it together with the other pub
| |
70 private static final String ACTION_OPEN_SETTINGS = "com.samsung.android.sbrows er.contentBlocker.ACTION_SETTING"; | 72 private static final String ACTION_OPEN_SETTINGS = "com.samsung.android.sbrows er.contentBlocker.ACTION_SETTING"; |
71 private static final String ACTION_UPDATE = "com.samsung.android.sbrowser.cont entBlocker.ACTION_UPDATE"; | 73 private static final String ACTION_UPDATE = "com.samsung.android.sbrowser.cont entBlocker.ACTION_UPDATE"; |
72 private static final String EASYLIST_URL = "https://easylist-downloads.adblock plus.org/easylist.txt"; | |
73 | 74 |
74 public static final String SUBSCRIPTIONS_EXCEPTIONSURL = "subscriptions_except ionsurl"; | 75 public static final String SUBSCRIPTIONS_EXCEPTIONSURL = "subscriptions_except ionsurl"; |
75 | 76 |
76 // The value below specifies an interval of [x, 2*x[, where x = | 77 // The value below specifies an interval of [x, 2*x[, where x = |
77 // INITIAL_UPDATE_CHECK_DELAY | 78 // INITIAL_UPDATE_CHECK_DELAY |
78 private static final long INITIAL_UPDATE_CHECK_DELAY = 5 * DateUtils.SECOND_IN _MILLIS; | 79 private static final long INITIAL_UPDATE_CHECK_DELAY = 5 * DateUtils.SECOND_IN _MILLIS; |
79 private static final long UPDATE_CHECK_INTERVAL = 30 * DateUtils.MINUTE_IN_MIL LIS; | 80 private static final long UPDATE_CHECK_INTERVAL = 30 * DateUtils.MINUTE_IN_MIL LIS; |
80 private static final long BROADCAST_COMBINATION_DELAY = 2500; | 81 private static final long BROADCAST_COMBINATION_DELAY = 2500; |
81 | 82 |
82 private static final int NO_FLAG = 0; | 83 private static final int NO_FLAG = 0; |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
198 boolean canUseInternet() | 199 boolean canUseInternet() |
199 { | 200 { |
200 final ConnectivityManager connManager = (ConnectivityManager) this.serviceCo ntext | 201 final ConnectivityManager connManager = (ConnectivityManager) this.serviceCo ntext |
201 .getSystemService(Context.CONNECTIVITY_SERVICE); | 202 .getSystemService(Context.CONNECTIVITY_SERVICE); |
202 final NetworkInfo current = connManager.getActiveNetworkInfo(); | 203 final NetworkInfo current = connManager.getActiveNetworkInfo(); |
203 if (current == null) | 204 if (current == null) |
204 { | 205 { |
205 return false; | 206 return false; |
206 } | 207 } |
207 | 208 |
209 if (wasFirstRun()) | |
210 { | |
211 return true; | |
212 } | |
213 | |
208 final boolean wifiOnly = "1".equals(SharedPrefsUtils.getString( | 214 final boolean wifiOnly = "1".equals(SharedPrefsUtils.getString( |
209 this.serviceContext, R.string.key_automatic_updates , "1")); | 215 this.serviceContext, R.string.key_automatic_updates , "1")); |
210 | 216 |
211 if (wifiOnly) | 217 if (wifiOnly) |
212 { | 218 { |
213 if (current.isConnected() && !current.isRoaming()) | 219 if (current.isConnected() && !current.isRoaming()) |
214 { | 220 { |
215 switch (current.getType()) | 221 switch (current.getType()) |
216 { | 222 { |
217 case ConnectivityManager.TYPE_BLUETOOTH: | 223 case ConnectivityManager.TYPE_BLUETOOTH: |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
310 { | 316 { |
311 this.unlock(); | 317 this.unlock(); |
312 } | 318 } |
313 } | 319 } |
314 | 320 |
315 public DefaultSubscriptionInfo getDefaultSubscriptionInfoForUrl(final String u rl) | 321 public DefaultSubscriptionInfo getDefaultSubscriptionInfoForUrl(final String u rl) |
316 { | 322 { |
317 return this.defaultSubscriptions.getForUrl(url); | 323 return this.defaultSubscriptions.getForUrl(url); |
318 } | 324 } |
319 | 325 |
320 public boolean wasFirstRun() | 326 /** |
327 * If the user starts the app for the first time, we force to update the subsc ription which was | |
328 * selected as the default, no matter if he has a WIFI connection or not. From the second start | |
329 * we only update when the user has a WIFI connection. | |
330 * | |
331 * @return a boolean that indicated if this is the first start of the app | |
332 */ | |
333 private boolean wasFirstRun() | |
321 { | 334 { |
322 return this.wasFirstRun; | 335 if (wasFirstRun) |
336 { | |
337 this.wasFirstRun = false; | |
338 return true; | |
339 } | |
340 else | |
341 { | |
342 return false; | |
343 } | |
323 } | 344 } |
324 | 345 |
325 private void migrateFromPreviousVersion(final Context context) | 346 private void migrateFromPreviousVersion(final Context context) |
326 { | 347 { |
327 try | 348 try |
328 { | 349 { |
329 final int versionCode = context.getPackageManager().getPackageInfo(context .getPackageName(), | 350 final int versionCode = context.getPackageManager().getPackageInfo(context .getPackageName(), |
330 0).versionCode; | 351 0).versionCode; |
331 | 352 |
332 final int previousVersionCode = SharedPrefsUtils.getInt( | 353 final int previousVersionCode = SharedPrefsUtils.getInt( |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
371 getFilterCacheDir(context)); | 392 getFilterCacheDir(context)); |
372 | 393 |
373 try (final InputStream prefsJson = context.getResources().openRawResource(R. raw.prefs)) | 394 try (final InputStream prefsJson = context.getResources().openRawResource(R. raw.prefs)) |
374 { | 395 { |
375 engine.jsonPrefs = JSONPrefs.create(prefsJson); | 396 engine.jsonPrefs = JSONPrefs.create(prefsJson); |
376 } | 397 } |
377 | 398 |
378 Log.d(TAG, "Finished reading JSON preferences"); | 399 Log.d(TAG, "Finished reading JSON preferences"); |
379 | 400 |
380 // Check if this is a fresh start, if so: initialize bundled easylist. | 401 // Check if this is a fresh start, if so: initialize bundled easylist. |
381 engine.wasFirstRun = engine.subscriptions.wasUnitialized(); | 402 engine.wasFirstRun = engine.subscriptions.wasUnitialized(); |
anton
2017/08/08 05:43:41
not related to this task, but anyway.
What is `was
jens
2017/08/08 13:53:05
Yeah, that's a typo. We should fix that in the nex
| |
382 if (engine.subscriptions.wasUnitialized()) | 403 if (engine.subscriptions.wasUnitialized()) |
383 { | 404 { |
384 Log.d(TAG, "Subscription storage was uninitialized, initializing..."); | 405 Log.d(TAG, "Subscription storage was uninitialized, initializing..."); |
385 | 406 |
386 try (final InputStream easylistTxt = context.getResources().openRawResourc e(R.raw.easylist)) | 407 try (final InputStream easylistTxt = context.getResources().openRawResourc e(R.raw.easylist)) |
387 { | 408 { |
388 final Subscription easylist = engine.subscriptions.add(Subscription | 409 final Subscription easylist = engine.subscriptions.add(Subscription |
389 .create(EASYLIST_URL) | 410 // Use bundled EasyList as default and update it with locale specifi c list later |
411 // see: https://issues.adblockplus.org/ticket/5237 | |
412 .create(SubscriptionUtils.chooseDefaultSubscriptionUrl(engine.defaul tSubscriptions.getAdsSubscriptions())) | |
390 .parseLines(readLines(easylistTxt))); | 413 .parseLines(readLines(easylistTxt))); |
391 easylist.putMeta(Subscription.KEY_UPDATE_TIMESTAMP, "0"); | 414 easylist.putMeta(Subscription.KEY_UPDATE_TIMESTAMP, "0"); |
392 easylist.setEnabled(true); | 415 easylist.setEnabled(true); |
393 } | 416 } |
394 Log.d(TAG, "Added and enabled bundled easylist"); | 417 Log.d(TAG, "Added and enabled bundled easylist"); |
395 | 418 |
396 try (final InputStream exceptionsTxt = context.getResources() | 419 try (final InputStream exceptionsTxt = context.getResources() |
397 .openRawResource(R.raw.exceptionrules)) | 420 .openRawResource(R.raw.exceptionrules)) |
398 { | 421 { |
399 final Subscription exceptions = engine.subscriptions.add(Subscription | 422 final Subscription exceptions = engine.subscriptions.add(Subscription |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
758 { | 781 { |
759 this.downloader.connectivityChanged(); | 782 this.downloader.connectivityChanged(); |
760 } | 783 } |
761 | 784 |
762 public interface SubscriptionUpdateCallback | 785 public interface SubscriptionUpdateCallback |
763 { | 786 { |
764 void subscriptionUpdateRequested(boolean enabled); | 787 void subscriptionUpdateRequested(boolean enabled); |
765 void subscriptionUpdatedApplied(); | 788 void subscriptionUpdatedApplied(); |
766 } | 789 } |
767 } | 790 } |
OLD | NEW |