| Index: adblockplussbrowser/src/main/java/org/adblockplus/sbrowser/contentblocker/engine/Subscriptions.java |
| =================================================================== |
| --- a/adblockplussbrowser/src/main/java/org/adblockplus/sbrowser/contentblocker/engine/Subscriptions.java |
| +++ b/adblockplussbrowser/src/main/java/org/adblockplus/sbrowser/contentblocker/engine/Subscriptions.java |
| @@ -26,16 +26,17 @@ import java.nio.charset.StandardCharsets |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.HashSet; |
| import java.util.List; |
| import java.util.Locale; |
| import java.util.Map; |
| import org.adblockplus.sbrowser.contentblocker.engine.Subscription.Type; |
| +import org.adblockplus.sbrowser.contentblocker.util.SubscriptionUtils; |
| import android.util.Log; |
| /** |
| * This class holds all listed subscriptions and manages the subscription |
| * aggregation cache folder. |
| */ |
| final class Subscriptions |
| @@ -139,16 +140,21 @@ final class Subscriptions |
| else |
| { |
| filtersFile = new File(this.subscriptionFolder, "url_" |
| + new File(sub.getURL().getPath()).getName() + ".sub"); |
| } |
| return filtersFile; |
| } |
| + private File getNotificationDataFile() |
| + { |
| + return new File (this.subscriptionFolder, Notification.NOTIFICATON_DATA_FILE_NAME); |
| + } |
| + |
| File getMetaFile(final Subscription sub) |
| { |
| return new File(getFiltersFile(sub).getAbsolutePath() + ".meta"); |
| } |
| void persistSubscription(final Subscription sub) throws IOException |
| { |
| sub.serializeSubscription(this.getMetaFile(sub), this.getFiltersFile(sub)); |
| @@ -169,17 +175,17 @@ final class Subscriptions |
| * @param output |
| * @throws IOException |
| */ |
| private void writeFile(final File output) throws IOException |
| { |
| final HashSet<String> filters = new HashSet<>(); |
| for (final Subscription s : this.subscriptions.values()) |
| { |
| - if (s.isEnabled()) |
| + if (s.isEnabled() && !SubscriptionUtils.isNotificationSubscription(s.getId())) |
| { |
| Log.d(TAG, "Adding filters for '" + s.getId() + "'"); |
| s.deserializeFilters(this.getFiltersFile(s)); |
| s.copyFilters(filters); |
| s.clearFilters(); |
| } |
| if ((!s.isMetaDataValid() || !s.isFiltersValid()) && s.getURL() != null) |
| { |
| @@ -283,16 +289,21 @@ final class Subscriptions |
| public void updateSubscription(final String id, final int responseCode, final String text, |
| final Map<String, String> httpHeaders) |
| throws IOException |
| { |
| final Subscription sub = this.subscriptions.get(id); |
| if (sub != null) |
| { |
| - if (sub.updateSubscription(responseCode, text, httpHeaders, this.getMetaFile(sub), |
| + if (SubscriptionUtils.isNotificationSubscription(id)) |
| + { |
| + sub.updateNotification(responseCode, text, getNotificationDataFile(), getMetaFile(sub)); |
| + return; |
| + } |
| + if (sub.updateSubscription(id, responseCode, text, httpHeaders, this.getMetaFile(sub), |
| this.getFiltersFile(sub))) |
| { |
| this.engine.requestUpdateBroadcast(); |
| } |
| } |
| } |
| } |