| Index: src/engine/Main.cpp |
| =================================================================== |
| --- a/src/engine/Main.cpp |
| +++ b/src/engine/Main.cpp |
| @@ -114,13 +114,42 @@ |
| std::string url; |
| request >> url; |
| + AdblockPlus::JsValuePtr valuePtr = filterEngine->GetPref("subscriptions_exceptionsurl"); |
| + std::string aaUrl = ""; |
| + if (!valuePtr->IsNull()) |
| + { |
| + aaUrl = valuePtr->AsString(); |
| + } |
| std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetListedSubscriptions(); |
| + |
| + // Remove all subscriptions, besides the Acceptable Ads |
| for (size_t i = 0, count = subscriptions.size(); i < count; i++) |
| - subscriptions[i]->RemoveFromList(); |
| + { |
| + if (subscriptions[i]->GetProperty("url")->AsString() != aaUrl) |
| + { |
| + subscriptions[i]->RemoveFromList(); |
| + } |
| + } |
| filterEngine->GetSubscription(url)->AddToList(); |
| break; |
| } |
| + case Communication::PROC_ADD_SUBSCRIPTION: |
| + { |
| + std::string url; |
| + request >> url; |
| + |
| + filterEngine->GetSubscription(url)->AddToList(); |
| + break; |
| + } |
| + case Communication::PROC_REMOVE_SUBSCRIPTION: |
| + { |
| + std::string url; |
| + request >> url; |
| + |
| + filterEngine->GetSubscription(url)->RemoveFromList(); |
| + break; |
| + } |
| case Communication::PROC_UPDATE_ALL_SUBSCRIPTIONS: |
| { |
| std::vector<AdblockPlus::SubscriptionPtr> subscriptions = filterEngine->GetListedSubscriptions(); |