OLD | NEW |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
3 * Copyright (C) 2006-2017 eyeo GmbH | 3 * Copyright (C) 2006-2017 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 |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 void operator()(LogLevel logLevel, const std::string& message, | 101 void operator()(LogLevel logLevel, const std::string& message, |
102 const std::string& source) | 102 const std::string& source) |
103 { | 103 { |
104 throw std::runtime_error("Unexpected error: " + message); | 104 throw std::runtime_error("Unexpected error: " + message); |
105 } | 105 } |
106 }; | 106 }; |
107 | 107 |
108 class ThrowingFileSystem : public AdblockPlus::IFileSystem | 108 class ThrowingFileSystem : public AdblockPlus::IFileSystem |
109 { | 109 { |
110 public: | 110 public: |
111 void Read(const std::string& path, const ReadCallback& callback) const overrid
e | 111 void Read(const std::string& fileName, const ReadCallback& callback) const ove
rride |
112 { | 112 { |
113 throw std::runtime_error("Not implemented"); | 113 throw std::runtime_error("Not implemented"); |
114 } | 114 } |
115 | 115 |
116 void Write(const std::string& path, const IOBuffer& data, | 116 void Write(const std::string& fileName, const IOBuffer& data, |
117 const Callback& callback) override | 117 const Callback& callback) override |
118 { | 118 { |
119 throw std::runtime_error("Not implemented"); | 119 throw std::runtime_error("Not implemented"); |
120 } | 120 } |
121 | 121 |
122 void Move(const std::string& fromPath, const std::string& toPath, | 122 void Move(const std::string& fromFileName, const std::string& toFileName, |
123 const Callback& callback) override | 123 const Callback& callback) override |
124 { | 124 { |
125 throw std::runtime_error("Not implemented"); | 125 throw std::runtime_error("Not implemented"); |
126 } | 126 } |
127 | 127 |
128 void Remove(const std::string& path, const Callback& callback) override | 128 void Remove(const std::string& fileName, const Callback& callback) override |
129 { | 129 { |
130 throw std::runtime_error("Not implemented"); | 130 throw std::runtime_error("Not implemented"); |
131 } | 131 } |
132 | 132 |
133 void Stat(const std::string& path, const StatCallback& callback) const overrid
e | 133 void Stat(const std::string& fileName, const StatCallback& callback) const ove
rride |
134 { | 134 { |
135 throw std::runtime_error("Not implemented"); | 135 throw std::runtime_error("Not implemented"); |
136 } | 136 } |
137 | |
138 std::string Resolve(const std::string& path) const override | |
139 { | |
140 throw std::runtime_error("Not implemented"); | |
141 } | |
142 }; | 137 }; |
143 | 138 |
144 class ThrowingWebRequest : public AdblockPlus::IWebRequest | 139 class ThrowingWebRequest : public AdblockPlus::IWebRequest |
145 { | 140 { |
146 public: | 141 public: |
147 void GET(const std::string& url, const AdblockPlus::HeaderList& requestHeaders
, const GetCallback&) override | 142 void GET(const std::string& url, const AdblockPlus::HeaderList& requestHeaders
, const GetCallback&) override |
148 { | 143 { |
149 throw std::runtime_error("Unexpected GET: " + url); | 144 throw std::runtime_error("Unexpected GET: " + url); |
150 } | 145 } |
151 }; | 146 }; |
152 | 147 |
153 class LazyFileSystem : public AdblockPlus::IFileSystem | 148 class LazyFileSystem : public AdblockPlus::IFileSystem |
154 { | 149 { |
155 public: | 150 public: |
156 typedef std::function<void()> Task; | 151 typedef std::function<void()> Task; |
157 typedef std::function<void(const Task& task)> Scheduler; | 152 typedef std::function<void(const Task& task)> Scheduler; |
158 static void ExecuteImmediately(const Task& task) | 153 static void ExecuteImmediately(const Task& task) |
159 { | 154 { |
160 if (task) | 155 if (task) |
161 task(); | 156 task(); |
162 } | 157 } |
163 explicit LazyFileSystem(const Scheduler& scheduler = LazyFileSystem::ExecuteIm
mediately) | 158 explicit LazyFileSystem(const Scheduler& scheduler = LazyFileSystem::ExecuteIm
mediately) |
164 : scheduler(scheduler) | 159 : scheduler(scheduler) |
165 { | 160 { |
166 } | 161 } |
167 | 162 |
168 void Read(const std::string& path, const ReadCallback& callback) const overrid
e | 163 void Read(const std::string& fileName, const ReadCallback& callback) const ove
rride |
169 { | 164 { |
170 scheduler([path, callback] | 165 scheduler([fileName, callback] |
171 { | 166 { |
172 if (path == "patterns.ini") | 167 if (fileName == "patterns.ini") |
173 { | 168 { |
174 std::string dummyData = "# Adblock Plus preferences\n[Subscription]\nurl
=~fl~"; | 169 std::string dummyData = "# Adblock Plus preferences\n[Subscription]\nurl
=~user~0000"; |
175 callback(IOBuffer(dummyData.cbegin(), dummyData.cend()), ""); | 170 callback(IOBuffer(dummyData.cbegin(), dummyData.cend()), ""); |
176 } | 171 } |
177 else if (path == "prefs.json") | 172 else if (fileName == "prefs.json") |
178 { | 173 { |
179 std::string dummyData = "{}"; | 174 std::string dummyData = "{}"; |
180 callback(IOBuffer(dummyData.cbegin(), dummyData.cend()), ""); | 175 callback(IOBuffer(dummyData.cbegin(), dummyData.cend()), ""); |
181 } | 176 } |
182 }); | 177 }); |
183 } | 178 } |
184 | 179 |
185 void Write(const std::string& path, const IOBuffer& data, | 180 void Write(const std::string& fileName, const IOBuffer& data, |
186 const Callback& callback) override | 181 const Callback& callback) override |
187 { | 182 { |
188 } | 183 } |
189 | 184 |
190 | 185 |
191 void Move(const std::string& fromPath, const std::string& toPath, | 186 void Move(const std::string& fromFileName, const std::string& toFileName, |
192 const Callback& callback) override | 187 const Callback& callback) override |
193 { | 188 { |
194 } | 189 } |
195 | 190 |
196 void Remove(const std::string& path, const Callback& callback) override | 191 void Remove(const std::string& fileName, const Callback& callback) override |
197 { | 192 { |
198 } | 193 } |
199 | 194 |
200 void Stat(const std::string& path, const StatCallback& callback) const overrid
e | 195 void Stat(const std::string& fileName, const StatCallback& callback) const ove
rride |
201 { | 196 { |
202 scheduler([path, callback] | 197 scheduler([fileName, callback] |
203 { | 198 { |
204 StatResult result; | 199 StatResult result; |
205 if (path == "patterns.ini") | 200 if (fileName == "patterns.ini") |
206 { | 201 { |
207 result.exists = true; | 202 result.exists = true; |
208 result.isFile = true; | |
209 } | 203 } |
210 callback(result, ""); | 204 callback(result, ""); |
211 }); | 205 }); |
212 } | 206 } |
213 | |
214 std::string Resolve(const std::string& path) const override | |
215 { | |
216 return path; | |
217 } | |
218 public: | 207 public: |
219 Scheduler scheduler; | 208 Scheduler scheduler; |
220 }; | 209 }; |
221 | 210 |
222 AdblockPlus::FilterEngine& CreateFilterEngine(LazyFileSystem& fileSystem, | 211 AdblockPlus::FilterEngine& CreateFilterEngine(LazyFileSystem& fileSystem, |
223 AdblockPlus::Platform& platform, | 212 AdblockPlus::Platform& platform, |
224 const AdblockPlus::FilterEngine::CreationParameters& creationParams = AdblockP
lus::FilterEngine::CreationParameters()); | 213 const AdblockPlus::FilterEngine::CreationParameters& creationParams = AdblockP
lus::FilterEngine::CreationParameters()); |
225 | 214 |
226 class NoopWebRequest : public AdblockPlus::IWebRequest | 215 class NoopWebRequest : public AdblockPlus::IWebRequest |
227 { | 216 { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 } | 269 } |
281 | 270 |
282 void TearDown() override | 271 void TearDown() override |
283 { | 272 { |
284 if (platform) | 273 if (platform) |
285 platform.reset(); | 274 platform.reset(); |
286 } | 275 } |
287 }; | 276 }; |
288 | 277 |
289 #endif | 278 #endif |
OLD | NEW |