LEFT | RIGHT |
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 |
(...skipping 14 matching lines...) Expand all Loading... |
25 import java.io.InputStreamReader; | 25 import java.io.InputStreamReader; |
26 import java.util.ArrayList; | 26 import java.util.ArrayList; |
27 import java.util.Calendar; | 27 import java.util.Calendar; |
28 import java.util.LinkedHashMap; | 28 import java.util.LinkedHashMap; |
29 import java.util.List; | 29 import java.util.List; |
30 import java.util.Map; | 30 import java.util.Map; |
31 import java.util.TimeZone; | 31 import java.util.TimeZone; |
32 import java.util.regex.Pattern; | 32 import java.util.regex.Pattern; |
33 | 33 |
34 import org.adblockplus.android.updater.AlarmReceiver; | 34 import org.adblockplus.android.updater.AlarmReceiver; |
35 | 35 import org.apache.commons.lang.StringUtils; |
36 import com.github.rjeschke.neetutils.Strings; | |
37 | 36 |
38 import android.app.ActivityManager; | 37 import android.app.ActivityManager; |
39 import android.app.ActivityManager.RunningServiceInfo; | 38 import android.app.ActivityManager.RunningServiceInfo; |
40 import android.app.AlarmManager; | 39 import android.app.AlarmManager; |
41 import android.app.Application; | 40 import android.app.Application; |
42 import android.app.PendingIntent; | 41 import android.app.PendingIntent; |
43 import android.content.Context; | 42 import android.content.Context; |
44 import android.content.Intent; | 43 import android.content.Intent; |
45 import android.content.SharedPreferences; | 44 import android.content.SharedPreferences; |
46 import android.content.SharedPreferences.Editor; | 45 import android.content.SharedPreferences.Editor; |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 } | 209 } |
211 | 210 |
212 /** | 211 /** |
213 * Checks if ProxyService is running. | 212 * Checks if ProxyService is running. |
214 * | 213 * |
215 * @return true if service is running | 214 * @return true if service is running |
216 */ | 215 */ |
217 public boolean isServiceRunning() | 216 public boolean isServiceRunning() |
218 { | 217 { |
219 final ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_
SERVICE); | 218 final ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_
SERVICE); |
220 | |
221 // Actually it returns not only running services, so extra check is required | 219 // Actually it returns not only running services, so extra check is required |
222 for (final RunningServiceInfo service : manager.getRunningServices(Integer.M
AX_VALUE)) | 220 for (final RunningServiceInfo service : manager.getRunningServices(Integer.M
AX_VALUE)) |
223 { | 221 { |
224 if (service.service.getClassName().equals(ProxyService.class.getCanonicalN
ame()) && service.pid > 0) | 222 if (service.service.getClassName().equals(ProxyService.class.getCanonicalN
ame()) && service.pid > 0) |
225 return true; | 223 return true; |
226 } | 224 } |
227 return false; | 225 return false; |
228 } | 226 } |
229 | 227 |
230 /** | 228 /** |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
326 * @return A list of CSS selectors | 324 * @return A list of CSS selectors |
327 */ | 325 */ |
328 public String[] getSelectorsForDomain(final String domain) | 326 public String[] getSelectorsForDomain(final String domain) |
329 { | 327 { |
330 /* We need to ignore element hiding rules here to work around two bugs: | 328 /* We need to ignore element hiding rules here to work around two bugs: |
331 * 1. CSS is being injected even when there's an exception rule with $elemhi
de | 329 * 1. CSS is being injected even when there's an exception rule with $elemhi
de |
332 * 2. The injected CSS causes blank pages in Chrome for Android | 330 * 2. The injected CSS causes blank pages in Chrome for Android |
333 * | 331 * |
334 * Starting with 1.1.2, we ignored element hiding rules after download anywa
y, to keep the | 332 * Starting with 1.1.2, we ignored element hiding rules after download anywa
y, to keep the |
335 * memory usage down. Doing this with libadblockplus is trickier, but would
be the clean | 333 * memory usage down. Doing this with libadblockplus is trickier, but would
be the clean |
336 * solution. | 334 * solution. */ |
337 */ | |
338 return null; | 335 return null; |
339 /* | 336 /* |
340 if (!filteringEnabled) | 337 if (!filteringEnabled) |
341 return null; | 338 return null; |
342 | 339 |
343 return abpEngine.getSelectorsForDomain(domain); | 340 return abpEngine.getSelectorsForDomain(domain); |
344 */ | 341 */ |
345 } | 342 } |
346 | 343 |
347 /** | 344 /** |
348 * Checks if filters match request parameters. | 345 * Checks if filters match request parameters. |
349 * | 346 * |
350 * @param url | 347 * @param url |
351 * Request URL | 348 * Request URL |
352 * @param query | 349 * @param query |
353 * Request query string | 350 * Request query string |
354 * @param referrer | 351 * @param referrer |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 /** | 423 /** |
427 * Enables or disables filtering. | 424 * Enables or disables filtering. |
428 */ | 425 */ |
429 public void setFilteringEnabled(final boolean enable) | 426 public void setFilteringEnabled(final boolean enable) |
430 { | 427 { |
431 filteringEnabled = enable; | 428 filteringEnabled = enable; |
432 sendBroadcast(new Intent(BROADCAST_FILTERING_CHANGE).putExtra("enabled", fil
teringEnabled)); | 429 sendBroadcast(new Intent(BROADCAST_FILTERING_CHANGE).putExtra("enabled", fil
teringEnabled)); |
433 } | 430 } |
434 | 431 |
435 /** | 432 /** |
436 * Starts ABP engine. It also initiates subscription refresh if it is enabled
in user settings. | 433 * Starts ABP engine. It also initiates subscription refresh if it is enabled |
| 434 * in user settings. |
437 */ | 435 */ |
438 public void startEngine() | 436 public void startEngine() |
439 { | 437 { |
440 if (abpEngine == null) | 438 if (abpEngine == null) |
441 { | 439 { |
442 final File basePath = getFilesDir(); | 440 final File basePath = getFilesDir(); |
443 abpEngine = ABPEngine.create(AdblockPlus.getApplication(), ABPEngine.gener
ateAppInfo(this), basePath.getAbsolutePath()); | 441 abpEngine = ABPEngine.create(AdblockPlus.getApplication(), ABPEngine.gener
ateAppInfo(this), basePath.getAbsolutePath()); |
444 } | 442 } |
445 } | 443 } |
446 | 444 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 final StringBuilder out = new StringBuilder(); | 512 final StringBuilder out = new StringBuilder(); |
515 int read; | 513 int read; |
516 do | 514 do |
517 { | 515 { |
518 read = reportFile.read(buffer, 0, buffer.length); | 516 read = reportFile.read(buffer, 0, buffer.length); |
519 if (read > 0) | 517 if (read > 0) |
520 out.append(buffer, 0, read); | 518 out.append(buffer, 0, read); |
521 } | 519 } |
522 while (read >= 0); | 520 while (read >= 0); |
523 final String report = out.toString(); | 521 final String report = out.toString(); |
524 if (!Strings.isEmpty(report)) | 522 if (StringUtils.isNotEmpty(report)) |
525 { | 523 { |
526 final Intent intent = new Intent(this, CrashReportDialog.class); | 524 final Intent intent = new Intent(this, CrashReportDialog.class); |
527 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | 525 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
528 intent.putExtra("report", report); | 526 intent.putExtra("report", report); |
529 startActivity(intent); | 527 startActivity(intent); |
530 } | 528 } |
531 } | 529 } |
532 catch (final FileNotFoundException e) | 530 catch (final FileNotFoundException e) |
533 { | 531 { |
534 // ignore | 532 // ignore |
535 } | 533 } |
536 catch (final IOException e) | 534 catch (final IOException e) |
537 { | 535 { |
538 Log.e(TAG, e.getMessage(), e); | 536 Log.e(TAG, e.getMessage(), e); |
539 } | 537 } |
540 | 538 |
541 // Set crash handler | 539 // Set crash handler |
542 Thread.setDefaultUncaughtExceptionHandler(new CrashHandler(this)); | 540 Thread.setDefaultUncaughtExceptionHandler(new CrashHandler(this)); |
543 | 541 |
544 // Initiate update check | 542 // Initiate update check |
545 scheduleUpdater(0); | 543 scheduleUpdater(0); |
546 } | 544 } |
547 } | 545 } |
LEFT | RIGHT |