| OLD | NEW | 
| (Empty) |  | 
 |   1 #pragma once | 
 |   2  | 
 |   3 #include "Filter.h" | 
 |   4 #include "ActiveFilter.h" | 
 |   5  | 
 |   6 enum class TrippleState {YES, NO, ANY}; | 
 |   7  | 
 |   8 struct RegExpFilterData | 
 |   9 { | 
 |  10   mutable String::size_type mPatternStart; | 
 |  11   union | 
 |  12   { | 
 |  13     mutable int mRegexpId; | 
 |  14     mutable String::size_type mPatternEnd; | 
 |  15   }; | 
 |  16   mutable String::size_type mDomainsStart; | 
 |  17   mutable String::size_type mDomainsEnd; | 
 |  18   mutable String::size_type mSitekeysStart; | 
 |  19   mutable String::size_type mSitekeysEnd; | 
 |  20   int mContentType; | 
 |  21   bool mMatchCase; | 
 |  22   TrippleState mThirdParty; | 
 |  23   TrippleState mCollapse; | 
 |  24  | 
 |  25   bool RegExpParsingDone() const | 
 |  26   { | 
 |  27     return mPatternStart == String::npos; | 
 |  28   } | 
 |  29  | 
 |  30   void SetRegExp(int regexpId) const | 
 |  31   { | 
 |  32     mRegexpId = regexpId; | 
 |  33     mPatternStart = String::npos; | 
 |  34   } | 
 |  35  | 
 |  36   bool HasRegExp() const | 
 |  37   { | 
 |  38     return RegExpParsingDone() && mRegexpId; | 
 |  39   } | 
 |  40  | 
 |  41   const DependentString GetRegExpSource(const String& text) const | 
 |  42   { | 
 |  43     return DependentString(text, mPatternStart, mPatternEnd - mPatternStart); | 
 |  44   } | 
 |  45  | 
 |  46   bool DomainsParsingDone() const | 
 |  47   { | 
 |  48     return mDomainsStart == String::npos; | 
 |  49   } | 
 |  50  | 
 |  51   void SetDomainsParsingDone() const | 
 |  52   { | 
 |  53     mDomainsStart = String::npos; | 
 |  54   } | 
 |  55  | 
 |  56   const DependentString GetDomainsSource(const String& text) const | 
 |  57   { | 
 |  58     return DependentString(text, mDomainsStart, mDomainsEnd - mDomainsStart); | 
 |  59   } | 
 |  60  | 
 |  61   bool SitekeyParsingDone() const | 
 |  62   { | 
 |  63     return mSitekeysStart == String::npos; | 
 |  64   } | 
 |  65  | 
 |  66   void SetSitekeysParsingDone() const | 
 |  67   { | 
 |  68     mSitekeysStart = String::npos; | 
 |  69   } | 
 |  70  | 
 |  71   const DependentString GetSitekeysSource(const String& text) const | 
 |  72   { | 
 |  73     return DependentString(text, mSitekeysStart, mSitekeysEnd - mSitekeysStart); | 
 |  74   } | 
 |  75 }; | 
 |  76  | 
 |  77 class RegExpFilter : public ActiveFilter, protected RegExpFilterData | 
 |  78 { | 
 |  79 private: | 
 |  80   void ParseSitekeys(const String& sitekeys) const; | 
 |  81  | 
 |  82 protected: | 
 |  83   DomainMap* GetDomains() const override; | 
 |  84   SitekeySet* GetSitekeys() const override; | 
 |  85 public: | 
 |  86   RegExpFilter(const String& text, const RegExpFilterData& data); | 
 |  87   ~RegExpFilter(); | 
 |  88   static Type Parse(DependentString& text, DependentString& error, | 
 |  89       RegExpFilterData& data); | 
 |  90   EMSCRIPTEN_KEEPALIVE static void InitJSTypes(); | 
 |  91   static OwnedString RegExpFromSource(const String& source); | 
 |  92   EMSCRIPTEN_KEEPALIVE bool Matches(const String& location, int typeMask, | 
 |  93       DependentString& docDomain, bool thirdParty, const String& sitekey) const; | 
 |  94 }; | 
| OLD | NEW |