| Index: src/org/adblockplus/android/ProxyService.java |
| =================================================================== |
| --- a/src/org/adblockplus/android/ProxyService.java |
| +++ b/src/org/adblockplus/android/ProxyService.java |
| @@ -70,9 +70,10 @@ |
| } |
| private static final String TAG = "ProxyService"; |
| - private static final boolean logRequests = false; |
| + private static final boolean logRequests = true; |
| - private static final int[] portVariants = new int[] {8080, 8888, 1111, 2222, 3333, 4444, 5555, 6666, 7777, 9999, 26571, 0}; |
| + // Do not use 8080 because it is a "dirty" port, Android uses it if something goes wrong |
| + private static final int[] portVariants = new int[] {8888, 1111, 2222, 3333, 4444, 5555, 6666, 7777, 9999, 26571, 0}; |
| private final static int DEFAULT_TIMEOUT = 3000; |
| private final static int NO_TRAFFIC_TIMEOUT = 5 * 60 * 1000; // 5 minutes |
| @@ -203,12 +204,16 @@ |
| registerReceiver(connectionReceiver, new IntentFilter(Proxy.PROXY_CHANGE_ACTION)); |
| } |
| } |
| - |
| - // Start engine |
| - AdblockPlus.getApplication().startEngine(); |
| + |
| + // Save current native proxy situation. The service is always started on the first run so |
| + // we will always have a correct value from the box |
| + SharedPreferences.Editor editor = prefs.edit(); |
| + editor.putBoolean(getString(R.string.pref_proxyautoconfigured), transparent || nativeProxyAutoConfigured); |
| + editor.commit(); |
| registerReceiver(proxyReceiver, new IntentFilter(ProxyService.BROADCAST_PROXY_FAILED)); |
| - registerReceiver(matchesReceiver, new IntentFilter(AdblockPlus.BROADCAST_FILTER_MATCHES)); |
| + registerReceiver(filterReceiver, new IntentFilter(AdblockPlus.BROADCAST_FILTERING_CHANGE)); |
| + registerReceiver(filterReceiver, new IntentFilter(AdblockPlus.BROADCAST_FILTER_MATCHES)); |
| // Start proxy |
| if (proxy == null) |
| @@ -291,7 +296,7 @@ |
| stopNoTrafficCheck(); |
| - unregisterReceiver(matchesReceiver); |
| + unregisterReceiver(filterReceiver); |
| unregisterReceiver(proxyReceiver); |
| // Stop IP redirecting |
| @@ -329,6 +334,7 @@ |
| if (proxy != null) |
| proxy.close(); |
| + // TODO Do we have to check current state? |
| // Stop engine if not in interactive mode |
| AdblockPlus.getApplication().stopEngine(false); |
| @@ -642,6 +648,7 @@ |
| sendStateChangedBroadcast(); |
| NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); |
| notificationManager.notify(ONGOING_NOTIFICATION_ID, getNotification()); |
| + notificationManager.cancel(NOTRAFFIC_NOTIFICATION_ID); |
| } |
| notrafficHandler = null; |
| } |
| @@ -649,9 +656,11 @@ |
| @SuppressLint("NewApi") |
| private Notification getNotification() |
| { |
| + boolean filtering = AdblockPlus.getApplication().isFilteringEnabled(); |
| + |
| int msgId = R.string.notif_waiting; |
| if (nativeProxyAutoConfigured || proxyManualyConfigured) |
| - msgId = R.string.notif_wifi; |
| + msgId = filtering ? R.string.notif_wifi : R.string.notif_wifi_nofiltering; |
| if (transparent) |
| msgId = R.string.notif_all; |
| @@ -671,6 +680,7 @@ |
| builder.setContentIntent(contentIntent); |
| builder.setContentTitle(getText(R.string.app_name)); |
| builder.setContentText(getText(msgId)); |
| + builder.setOngoing(true); |
| Notification notification = builder.getNotification(); |
| return notification; |
| @@ -740,11 +750,16 @@ |
| /** |
| * Stops no traffic check if traffic is detected by proxy service. |
| */ |
| - private BroadcastReceiver matchesReceiver = new BroadcastReceiver() |
| + private BroadcastReceiver filterReceiver = new BroadcastReceiver() |
| { |
| @Override |
| public void onReceive(final Context context, Intent intent) |
| { |
| + if (intent.getAction().equals(AdblockPlus.BROADCAST_FILTERING_CHANGE)) |
| + { |
| + NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); |
| + notificationManager.notify(ONGOING_NOTIFICATION_ID, getNotification()); |
| + } |
| if (intent.getAction().equals(AdblockPlus.BROADCAST_FILTER_MATCHES)) |
| { |
| proxyManualyConfigured = true; |