| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2014 Eyeo GmbH | 3 * Copyright (C) 2006-2014 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.android; | 18 package org.adblockplus.android; |
| 19 | 19 |
| 20 import java.io.BufferedReader; | 20 import java.io.BufferedReader; |
| 21 import java.io.File; | 21 import java.io.File; |
| 22 import java.io.FileNotFoundException; | 22 import java.io.FileNotFoundException; |
| 23 import java.io.IOException; | 23 import java.io.IOException; |
| 24 import java.io.InputStream; | 24 import java.io.InputStream; |
| 25 import java.io.InputStreamReader; | 25 import java.io.InputStreamReader; |
| 26 import java.util.ArrayList; | |
| 27 import java.util.Calendar; | 26 import java.util.Calendar; |
| 28 import java.util.LinkedHashMap; | |
| 29 import java.util.List; | 27 import java.util.List; |
| 30 import java.util.Map; | |
| 31 import java.util.TimeZone; | 28 import java.util.TimeZone; |
| 32 import java.util.regex.Pattern; | 29 import java.util.regex.Pattern; |
| 33 | 30 |
| 34 import org.adblockplus.android.updater.AlarmReceiver; | 31 import org.adblockplus.android.updater.AlarmReceiver; |
| 35 import org.apache.commons.lang.StringUtils; | 32 import org.apache.commons.lang.StringUtils; |
| 36 | 33 |
| 37 import android.app.ActivityManager; | 34 import android.app.ActivityManager; |
| 38 import android.app.ActivityManager.RunningServiceInfo; | 35 import android.app.ActivityManager.RunningServiceInfo; |
| 39 import android.app.AlarmManager; | 36 import android.app.AlarmManager; |
| 40 import android.app.Application; | 37 import android.app.Application; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 70 public static final int UPDATE_NOTIFICATION_ID = R.string.app_name + 1; | 67 public static final int UPDATE_NOTIFICATION_ID = R.string.app_name + 1; |
| 71 /** | 68 /** |
| 72 * Broadcasted when filtering is enabled or disabled. | 69 * Broadcasted when filtering is enabled or disabled. |
| 73 */ | 70 */ |
| 74 public static final String BROADCAST_FILTERING_CHANGE = "org.adblockplus.andro
id.filtering.status"; | 71 public static final String BROADCAST_FILTERING_CHANGE = "org.adblockplus.andro
id.filtering.status"; |
| 75 /** | 72 /** |
| 76 * Broadcasted when subscription status changes. | 73 * Broadcasted when subscription status changes. |
| 77 */ | 74 */ |
| 78 public static final String BROADCAST_SUBSCRIPTION_STATUS = "org.adblockplus.an
droid.subscription.status"; | 75 public static final String BROADCAST_SUBSCRIPTION_STATUS = "org.adblockplus.an
droid.subscription.status"; |
| 79 /** | 76 /** |
| 80 * Broadcasted when filter match check is performed. | |
| 81 */ | |
| 82 public static final String BROADCAST_FILTER_MATCHES = "org.adblockplus.android
.filter.matches"; | |
| 83 /** | |
| 84 * Cached list of recommended subscriptions. | 77 * Cached list of recommended subscriptions. |
| 85 */ | 78 */ |
| 86 private Subscription[] subscriptions; | 79 private Subscription[] subscriptions; |
| 87 /** | 80 /** |
| 88 * Indicates whether filtering is enabled or not. | 81 * Indicates whether filtering is enabled or not. |
| 89 */ | 82 */ |
| 90 private boolean filteringEnabled = false; | 83 private boolean filteringEnabled = false; |
| 91 | 84 |
| 92 private ABPEngine abpEngine; | 85 private ABPEngine abpEngine; |
| 93 | 86 |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 public boolean isFirstRun() | 214 public boolean isFirstRun() |
| 222 { | 215 { |
| 223 return abpEngine.isFirstRun(); | 216 return abpEngine.isFirstRun(); |
| 224 } | 217 } |
| 225 | 218 |
| 226 /** | 219 /** |
| 227 * Returns list of known subscriptions. | 220 * Returns list of known subscriptions. |
| 228 */ | 221 */ |
| 229 public Subscription[] getRecommendedSubscriptions() | 222 public Subscription[] getRecommendedSubscriptions() |
| 230 { | 223 { |
| 231 // TODO: Why don't we re-check? | |
| 232 if (subscriptions == null) | 224 if (subscriptions == null) |
| 233 subscriptions = abpEngine.getRecommendedSubscriptions(); | 225 subscriptions = abpEngine.getRecommendedSubscriptions(); |
| 234 return subscriptions; | 226 return subscriptions; |
| 235 } | 227 } |
| 236 | 228 |
| 237 /** | 229 /** |
| 238 * Returns list of enabled subscriptions. | 230 * Returns list of enabled subscriptions. |
| 239 */ | 231 */ |
| 240 public Subscription[] getListedSubscriptions() | 232 public Subscription[] getListedSubscriptions() |
| 241 { | 233 { |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 * Request query string | 325 * Request query string |
| 334 * @param referrer | 326 * @param referrer |
| 335 * Request referrer header | 327 * Request referrer header |
| 336 * @param accept | 328 * @param accept |
| 337 * Request accept header | 329 * Request accept header |
| 338 * @return true if matched filter was found | 330 * @return true if matched filter was found |
| 339 * @throws Exception | 331 * @throws Exception |
| 340 */ | 332 */ |
| 341 public boolean matches(final String url, final String query, final String refe
rrer, final String accept) | 333 public boolean matches(final String url, final String query, final String refe
rrer, final String accept) |
| 342 { | 334 { |
| 343 final String fullUrl = !"".equals(query) ? url + "?" + query : url; | 335 final String fullUrl = StringUtils.isNotEmpty(query) ? url + "?" + query : u
rl; |
| 344 if (referrer != null) | 336 if (referrer != null) |
| 345 referrerMapping.add(fullUrl, referrer); | 337 referrerMapping.add(fullUrl, referrer); |
| 346 | 338 |
| 347 if (!filteringEnabled) | 339 if (!filteringEnabled) |
| 348 return false; | 340 return false; |
| 349 | 341 |
| 350 String contentType = null; | 342 String contentType = null; |
| 351 | 343 |
| 352 if (accept != null) | 344 if (accept != null) |
| 353 { | 345 { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 369 contentType = "IMAGE"; | 361 contentType = "IMAGE"; |
| 370 else if (RE_FONT.matcher(url).find()) | 362 else if (RE_FONT.matcher(url).find()) |
| 371 contentType = "FONT"; | 363 contentType = "FONT"; |
| 372 else if (RE_HTML.matcher(url).find()) | 364 else if (RE_HTML.matcher(url).find()) |
| 373 contentType = "SUBDOCUMENT"; | 365 contentType = "SUBDOCUMENT"; |
| 374 } | 366 } |
| 375 if (contentType == null) | 367 if (contentType == null) |
| 376 contentType = "OTHER"; | 368 contentType = "OTHER"; |
| 377 | 369 |
| 378 final List<String> referrerChain = referrerMapping.buildReferrerChain(referr
er); | 370 final List<String> referrerChain = referrerMapping.buildReferrerChain(referr
er); |
| 379 Log.d("Referrer chain", fullUrl + ": " + referrerChain.toString()); | |
| 380 final String[] referrerChainArray = referrerChain.toArray(new String[referre
rChain.size()]); | 371 final String[] referrerChainArray = referrerChain.toArray(new String[referre
rChain.size()]); |
| 381 return abpEngine.matches(fullUrl, contentType, referrerChainArray); | 372 return abpEngine.matches(fullUrl, contentType, referrerChainArray); |
| 382 } | 373 } |
| 383 | 374 |
| 384 /** | 375 /** |
| 385 * Checks if filtering is enabled. | 376 * Checks if filtering is enabled. |
| 386 */ | 377 */ |
| 387 public boolean isFilteringEnabled() | 378 public boolean isFilteringEnabled() |
| 388 { | 379 { |
| 389 return filteringEnabled; | 380 return filteringEnabled; |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 Log.e(TAG, e.getMessage(), e); | 496 Log.e(TAG, e.getMessage(), e); |
| 506 } | 497 } |
| 507 | 498 |
| 508 // Set crash handler | 499 // Set crash handler |
| 509 Thread.setDefaultUncaughtExceptionHandler(new CrashHandler(this)); | 500 Thread.setDefaultUncaughtExceptionHandler(new CrashHandler(this)); |
| 510 | 501 |
| 511 // Initiate update check | 502 // Initiate update check |
| 512 scheduleUpdater(0); | 503 scheduleUpdater(0); |
| 513 } | 504 } |
| 514 } | 505 } |
| OLD | NEW |