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

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

Issue 10173031: Don`t use references to JsEngine to avoid use-after-free errors,switch to shared_ptr instead (Closed)
Patch Set: Created April 18, 2013, 4:15 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
« no previous file with comments | « no previous file | include/AdblockPlus/JsEngine.h » ('j') | src/JsEngine.cpp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #ifndef ADBLOCKPLUS_FILTER_ENGINE_H 1 #ifndef ADBLOCKPLUS_FILTER_ENGINE_H
2 #define ADBLOCKPLUS_FILTER_ENGINE_H 2 #define ADBLOCKPLUS_FILTER_ENGINE_H
3 3
4 #include <vector> 4 #include <vector>
5 #include <map> 5 #include <map>
6 #include <string> 6 #include <string>
7 #include <AdblockPlus/JsEngine.h>
7 #include <AdblockPlus/JsValue.h> 8 #include <AdblockPlus/JsValue.h>
8 9
9 #include "tr1_memory.h" 10 #include "tr1_memory.h"
10 11
11 namespace AdblockPlus 12 namespace AdblockPlus
12 { 13 {
13 class JsEngine;
14 class FilterEngine; 14 class FilterEngine;
15 15
16 #if FILTER_ENGINE_STUBS 16 #if FILTER_ENGINE_STUBS
17 class JsObject 17 class JsObject
18 #else 18 #else
19 class JsObject : public JsValue 19 class JsObject : public JsValue
20 #endif 20 #endif
21 { 21 {
22 public: 22 public:
23 std::string GetProperty(const std::string& name, const std::string& defaultV alue) const; 23 std::string GetProperty(const std::string& name, const std::string& defaultV alue) const;
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 typedef void (*SubscriptionsCallback)(const std::vector<SubscriptionPtr>&); 106 typedef void (*SubscriptionsCallback)(const std::vector<SubscriptionPtr>&);
107 107
108 class FilterEngine 108 class FilterEngine
109 { 109 {
110 #if FILTER_ENGINE_STUBS 110 #if FILTER_ENGINE_STUBS
111 friend class Filter; 111 friend class Filter;
112 friend class Subscription; 112 friend class Subscription;
113 #endif 113 #endif
114 114
115 public: 115 public:
116 explicit FilterEngine(JsEngine& jsEngine); 116 explicit FilterEngine(JsEnginePtr jsEngine);
117 FilterPtr GetFilter(const std::string& text); 117 FilterPtr GetFilter(const std::string& text);
118 SubscriptionPtr GetSubscription(const std::string& url); 118 SubscriptionPtr GetSubscription(const std::string& url);
119 const std::vector<FilterPtr> GetListedFilters() const; 119 const std::vector<FilterPtr> GetListedFilters() const;
120 const std::vector<SubscriptionPtr> GetListedSubscriptions() const; 120 const std::vector<SubscriptionPtr> GetListedSubscriptions() const;
121 void FetchAvailableSubscriptions(SubscriptionsCallback callback); 121 void FetchAvailableSubscriptions(SubscriptionsCallback callback);
122 FilterPtr Matches(const std::string& url, 122 FilterPtr Matches(const std::string& url,
123 const std::string& contentType, 123 const std::string& contentType,
124 const std::string& documentUrl); 124 const std::string& documentUrl);
125 std::vector<std::string> GetElementHidingSelectors(const std::string& domain ) const; 125 std::vector<std::string> GetElementHidingSelectors(const std::string& domain ) const;
126 126
127 private: 127 private:
128 JsEngine& jsEngine; 128 JsEnginePtr jsEngine;
129 #if FILTER_ENGINE_STUBS 129 #if FILTER_ENGINE_STUBS
130 std::map<std::string, FilterPtr> knownFilters; 130 std::map<std::string, FilterPtr> knownFilters;
131 std::vector<FilterPtr> listedFilters; 131 std::vector<FilterPtr> listedFilters;
132 std::map<std::string, SubscriptionPtr> knownSubscriptions; 132 std::map<std::string, SubscriptionPtr> knownSubscriptions;
133 std::vector<SubscriptionPtr> listedSubscriptions; 133 std::vector<SubscriptionPtr> listedSubscriptions;
134 #endif 134 #endif
135 }; 135 };
136 } 136 }
137 137
138 #endif 138 #endif
OLDNEW
« no previous file with comments | « no previous file | include/AdblockPlus/JsEngine.h » ('j') | src/JsEngine.cpp » ('J')

Powered by Google App Engine
This is Rietveld