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

Side by Side Diff: include/AdblockPlus/FilterEngine.h

Issue 5163715573841920: Issue 768 - Switch from TR1 to C++11 (Closed)
Patch Set: Created July 11, 2014, 2:24 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <http://adblockplus.org/>, 2 * This file is part of Adblock Plus <http://adblockplus.org/>,
3 * Copyright (C) 2006-2014 Eyeo GmbH 3 * Copyright (C) 2006-2014 Eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */ 16 */
17 17
18 #ifndef ADBLOCK_PLUS_FILTER_ENGINE_H 18 #ifndef ADBLOCK_PLUS_FILTER_ENGINE_H
19 #define ADBLOCK_PLUS_FILTER_ENGINE_H 19 #define ADBLOCK_PLUS_FILTER_ENGINE_H
20 20
21 #include <functional> 21 #include <functional>
22 #include <map> 22 #include <map>
23 #include <memory>
23 #include <string> 24 #include <string>
24 #include <vector> 25 #include <vector>
25 #include <AdblockPlus/JsEngine.h> 26 #include <AdblockPlus/JsEngine.h>
26 #include <AdblockPlus/JsValue.h> 27 #include <AdblockPlus/JsValue.h>
27 28
28 #include "tr1_memory.h"
29
30 namespace AdblockPlus 29 namespace AdblockPlus
31 { 30 {
32 class FilterEngine; 31 class FilterEngine;
33 32
34 class Filter : public JsValue, 33 class Filter : public JsValue,
35 public std::tr1::enable_shared_from_this<Filter> 34 public std::enable_shared_from_this<Filter>
36 { 35 {
37 public: 36 public:
38 enum Type {TYPE_BLOCKING, TYPE_EXCEPTION, 37 enum Type {TYPE_BLOCKING, TYPE_EXCEPTION,
39 TYPE_ELEMHIDE, TYPE_ELEMHIDE_EXCEPTION, 38 TYPE_ELEMHIDE, TYPE_ELEMHIDE_EXCEPTION,
40 TYPE_COMMENT, TYPE_INVALID}; 39 TYPE_COMMENT, TYPE_INVALID};
41 40
42 Type GetType(); 41 Type GetType();
43 bool IsListed(); 42 bool IsListed();
44 void AddToList(); 43 void AddToList();
45 void RemoveFromList(); 44 void RemoveFromList();
46 bool operator==(const Filter& filter) const; 45 bool operator==(const Filter& filter) const;
47 46
48 Filter(JsValuePtr value); 47 Filter(JsValuePtr value);
49 }; 48 };
50 49
51 class Subscription : public JsValue, 50 class Subscription : public JsValue,
52 public std::tr1::enable_shared_from_this<Subscription> 51 public std::enable_shared_from_this<Subscription>
53 { 52 {
54 public: 53 public:
55 bool IsListed(); 54 bool IsListed();
56 void AddToList(); 55 void AddToList();
57 void RemoveFromList(); 56 void RemoveFromList();
58 void UpdateFilters(); 57 void UpdateFilters();
59 bool IsUpdating(); 58 bool IsUpdating();
60 bool operator==(const Subscription& subscription) const; 59 bool operator==(const Subscription& subscription) const;
61 60
62 Subscription(JsValuePtr value); 61 Subscription(JsValuePtr value);
63 }; 62 };
64 63
65 typedef std::tr1::shared_ptr<Filter> FilterPtr; 64 typedef std::shared_ptr<Filter> FilterPtr;
66 typedef std::tr1::shared_ptr<Subscription> SubscriptionPtr; 65 typedef std::shared_ptr<Subscription> SubscriptionPtr;
67 66
68 class FilterEngine 67 class FilterEngine
69 { 68 {
70 public: 69 public:
71 typedef std::tr1::function<void(const std::string&)> UpdaterCallback; 70 typedef std::function<void(const std::string&)> UpdaterCallback;
72 typedef std::tr1::function<void(const std::string&, const JsValuePtr)> Filte rChangeCallback; 71 typedef std::function<void(const std::string&, const JsValuePtr)> FilterChan geCallback;
73 72
74 explicit FilterEngine(JsEnginePtr jsEngine); 73 explicit FilterEngine(JsEnginePtr jsEngine);
75 JsEnginePtr GetJsEngine() const { return jsEngine; } 74 JsEnginePtr GetJsEngine() const { return jsEngine; }
76 bool IsFirstRun() const; 75 bool IsFirstRun() const;
77 FilterPtr GetFilter(const std::string& text); 76 FilterPtr GetFilter(const std::string& text);
78 SubscriptionPtr GetSubscription(const std::string& url); 77 SubscriptionPtr GetSubscription(const std::string& url);
79 std::vector<FilterPtr> GetListedFilters() const; 78 std::vector<FilterPtr> GetListedFilters() const;
80 std::vector<SubscriptionPtr> GetListedSubscriptions() const; 79 std::vector<SubscriptionPtr> GetListedSubscriptions() const;
81 std::vector<SubscriptionPtr> FetchAvailableSubscriptions() const; 80 std::vector<SubscriptionPtr> FetchAvailableSubscriptions() const;
82 FilterPtr Matches(const std::string& url, 81 FilterPtr Matches(const std::string& url,
83 const std::string& contentType, 82 const std::string& contentType,
84 const std::string& documentUrl) const; 83 const std::string& documentUrl) const;
85 FilterPtr Matches(const std::string& url, 84 FilterPtr Matches(const std::string& url,
86 const std::string& contentType, 85 const std::string& contentType,
87 const std::vector<std::string>& documentUrls) const; 86 const std::vector<std::string>& documentUrls) const;
88 std::vector<std::string> GetElementHidingSelectors(const std::string& domain ) const; 87 std::vector<std::string> GetElementHidingSelectors(const std::string& domain ) const;
89 JsValuePtr GetPref(const std::string& pref) const; 88 JsValuePtr GetPref(const std::string& pref) const;
90 void SetPref(const std::string& pref, JsValuePtr value); 89 void SetPref(const std::string& pref, JsValuePtr value);
91 std::string GetHostFromURL(const std::string& url); 90 std::string GetHostFromURL(const std::string& url);
92 void ForceUpdateCheck(UpdaterCallback callback = 0); 91 void ForceUpdateCheck(UpdaterCallback callback);
Wladimir Palant 2014/07/11 14:29:11 Actually, there is one more actual code change her
sergei 2015/01/06 13:51:39 Actually, when do we need a default value here? R
Felix Dahlke 2015/08/04 11:21:49 Probably some subtle differences between std::func
93 void SetFilterChangeCallback(FilterChangeCallback callback); 92 void SetFilterChangeCallback(FilterChangeCallback callback);
94 void RemoveFilterChangeCallback(); 93 void RemoveFilterChangeCallback();
95 94
96 private: 95 private:
97 JsEnginePtr jsEngine; 96 JsEnginePtr jsEngine;
98 bool initialized; 97 bool initialized;
99 bool firstRun; 98 bool firstRun;
100 int updateCheckId; 99 int updateCheckId;
101 100
102 void InitDone(JsValueList& params); 101 void InitDone(JsValueList& params);
103 FilterPtr CheckFilterMatch(const std::string& url, 102 FilterPtr CheckFilterMatch(const std::string& url,
104 const std::string& contentType, 103 const std::string& contentType,
105 const std::string& documentUrl) const; 104 const std::string& documentUrl) const;
106 void UpdateCheckDone(const std::string& eventName, UpdaterCallback callback, JsValueList& params); 105 void UpdateCheckDone(const std::string& eventName, UpdaterCallback callback, JsValueList& params);
107 void FilterChanged(FilterChangeCallback callback, JsValueList& params); 106 void FilterChanged(FilterChangeCallback callback, JsValueList& params);
108 }; 107 };
109 } 108 }
110 109
111 #endif 110 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld