Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: compiled/filter/ActiveFilter.h

Issue 29398669: Issue 5063 - [emscripten] Make FilterNotifier calls more efficient (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore
Patch Set: Rebased Created April 13, 2017, 1:07 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « compiled/bindings.ipp ('k') | compiled/shell.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: compiled/filter/ActiveFilter.h
===================================================================
--- a/compiled/filter/ActiveFilter.h
+++ b/compiled/filter/ActiveFilter.h
@@ -16,36 +16,37 @@
*/
#pragma once
#include <emscripten.h>
#include "Filter.h"
#include "../StringMap.h"
+#include "../FilterNotifier.h"
-#define FILTER_PROPERTY(type, name, getter, setter) \
+#define FILTER_PROPERTY(type, name, topic, getter, setter) \
private:\
type name;\
public:\
type EMSCRIPTEN_KEEPALIVE getter() const\
{\
return name;\
}\
void EMSCRIPTEN_KEEPALIVE setter(type value)\
{\
if (name != value)\
{\
type oldvalue = name;\
name = value;\
- DependentString action(u"filter."_str #name);\
- EM_ASM_ARGS({\
- var filter = new (exports[Filter_mapping[$2]])($1);\
- FilterNotifier.triggerListeners(readString($0), filter, $3, $4);\
- }, &action, this, mType, value, oldvalue);\
+ if (FilterNotifier::Topic::topic != FilterNotifier::Topic::NONE)\
+ {\
+ FilterNotifier::PropertyChange(FilterNotifier::Topic::topic,\
+ this, value, oldvalue);\
+ }\
}\
}
class ActiveFilter : public Filter
{
protected:
typedef StringMap<bool> DomainMap;
typedef StringSet SitekeySet;
@@ -54,17 +55,19 @@ protected:
virtual DomainMap* GetDomains() const;
virtual SitekeySet* GetSitekeys() const;
mutable std::unique_ptr<DomainMap> mDomains;
mutable std::unique_ptr<SitekeySet> mSitekeys;
private:
bool mIgnoreTrailingDot;
public:
explicit ActiveFilter(Type type, const String& text, bool ignoreTrailingDot);
- FILTER_PROPERTY(bool, mDisabled, GetDisabled, SetDisabled);
- FILTER_PROPERTY(unsigned int, mHitCount, GetHitCount, SetHitCount);
- FILTER_PROPERTY(unsigned int, mLastHit, GetLastHit, SetLastHit);
+ FILTER_PROPERTY(bool, mDisabled, FILTER_DISABLED, GetDisabled, SetDisabled);
+ FILTER_PROPERTY(unsigned int, mHitCount, FILTER_HITCOUNT,
+ GetHitCount, SetHitCount);
+ FILTER_PROPERTY(unsigned int, mLastHit, FILTER_LASTHIT,
+ GetLastHit, SetLastHit);
bool EMSCRIPTEN_KEEPALIVE IsActiveOnDomain(DependentString& docDomain,
const String& sitekey) const;
bool EMSCRIPTEN_KEEPALIVE IsActiveOnlyOnDomain(DependentString& docDomain) const;
bool EMSCRIPTEN_KEEPALIVE IsGeneric() const;
OwnedString EMSCRIPTEN_KEEPALIVE Serialize() const;
};
« no previous file with comments | « compiled/bindings.ipp ('k') | compiled/shell.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld