Index: compiled/subscription/UserDefinedSubscription.cpp |
=================================================================== |
--- a/compiled/subscription/UserDefinedSubscription.cpp |
+++ b/compiled/subscription/UserDefinedSubscription.cpp |
@@ -13,30 +13,32 @@ |
* |
* You should have received a copy of the GNU General Public License |
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
*/ |
#include <cstdlib> |
#include "UserDefinedSubscription.h" |
+#include "../FilterNotifier.h" |
namespace |
{ |
enum FilterCategory |
{ |
+ NONE = 0, |
WHITELIST = 1, |
BLOCKING = 2, |
ELEMHIDE = 4, |
}; |
const FilterCategory filterTypeToCategory[] = { |
FilterCategory::BLOCKING, // UNKNOWN |
- FilterCategory::BLOCKING, // INVALID |
- FilterCategory::BLOCKING, // COMMENT |
+ FilterCategory::NONE, // INVALID |
+ FilterCategory::NONE, // COMMENT |
FilterCategory::BLOCKING, // BLOCKING |
FilterCategory::WHITELIST, // WHITELIST |
FilterCategory::ELEMHIDE, // ELEMHIDE |
FilterCategory::ELEMHIDE, // ELEMHIDEEXCEPTION |
FilterCategory::ELEMHIDE, // ELEMHIDEEMULATION |
}; |
static_assert( |
@@ -68,34 +70,45 @@ void UserDefinedSubscription::MakeDefaul |
abort(); |
} |
mDefaults |= filterTypeToCategory[filter->mType]; |
} |
void UserDefinedSubscription::InsertFilterAt(Filter* filter, unsigned pos) |
{ |
if (pos >= mFilters.size()) |
- mFilters.emplace_back(filter); |
- else |
- mFilters.emplace(mFilters.begin() + pos, filter); |
+ pos = mFilters.size(); |
+ mFilters.emplace(mFilters.begin() + pos, filter); |
+ |
+ if (GetListed()) |
+ { |
+ FilterNotifier::FilterChange(FilterNotifier::Topic::FILTER_ADDED, filter, this, |
+ pos); |
+ } |
} |
bool UserDefinedSubscription::RemoveFilterAt(unsigned pos) |
{ |
if (pos >= mFilters.size()) |
return false; |
+ FilterPtr filter(mFilters[pos]); |
mFilters.erase(mFilters.begin() + pos); |
+ if (GetListed()) |
+ { |
+ FilterNotifier::FilterChange(FilterNotifier::Topic::FILTER_REMOVED, |
sergei
2017/08/24 13:32:07
From the design point of view a subscription shoul
|
+ filter.get(), this, pos); |
+ } |
return true; |
} |
OwnedString UserDefinedSubscription::Serialize() const |
{ |
OwnedString result(Subscription::Serialize()); |
- if (mDefaults) |
+ if (!IsGeneric()) |
{ |
result.append(u"defaults="_str); |
if (mDefaults & FilterCategory::BLOCKING) |
result.append(u" blocking"_str); |
if (mDefaults & FilterCategory::WHITELIST) |
result.append(u" whitelist"_str); |
if (mDefaults & FilterCategory::ELEMHIDE) |
result.append(u" elemhide"_str); |