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-present eyeo GmbH | 3 * Copyright (C) 2006-present 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& fileName, const ReadCallback& callback) const ove
rride | 111 void Read(const std::string& fileName, const ReadCallback& callback, const Cal
lback& errorCallback) const override |
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& fileName, 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 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 static void ExecuteImmediately(const Task& task) | 153 static void ExecuteImmediately(const Task& task) |
154 { | 154 { |
155 if (task) | 155 if (task) |
156 task(); | 156 task(); |
157 } | 157 } |
158 explicit LazyFileSystem(const Scheduler& scheduler = LazyFileSystem::ExecuteIm
mediately) | 158 explicit LazyFileSystem(const Scheduler& scheduler = LazyFileSystem::ExecuteIm
mediately) |
159 : scheduler(scheduler) | 159 : scheduler(scheduler) |
160 { | 160 { |
161 } | 161 } |
162 | 162 |
163 void Read(const std::string& fileName, const ReadCallback& callback) const ove
rride | 163 void Read(const std::string& fileName, const ReadCallback& callback, const Cal
lback& errorCallback) const override |
164 { | 164 { |
165 scheduler([fileName, callback] | 165 scheduler([fileName, callback, errorCallback] |
166 { | 166 { |
167 if (fileName == "patterns.ini") | 167 if (fileName == "patterns.ini") |
168 { | 168 { |
169 std::string dummyData = "# Adblock Plus preferences\n[Subscription]\nurl
=~user~0000"; | 169 std::string dummyData = "# Adblock Plus preferences\n[Subscription]\nurl
=~user~0000"; |
170 callback(IOBuffer(dummyData.cbegin(), dummyData.cend()), ""); | 170 callback(IOBuffer(dummyData.cbegin(), dummyData.cend())); |
171 } | 171 } |
172 else if (fileName == "prefs.json") | 172 else if (fileName == "prefs.json") |
173 { | 173 { |
174 std::string dummyData = "{}"; | 174 std::string dummyData = "{}"; |
175 callback(IOBuffer(dummyData.cbegin(), dummyData.cend()), ""); | 175 callback(IOBuffer(dummyData.cbegin(), dummyData.cend())); |
176 } | 176 } |
| 177 else |
| 178 errorCallback("File not found, " + fileName); |
177 }); | 179 }); |
178 } | 180 } |
179 | 181 |
180 void Write(const std::string& fileName, const IOBuffer& data, | 182 void Write(const std::string& fileName, const IOBuffer& data, |
181 const Callback& callback) override | 183 const Callback& callback) override |
182 { | 184 { |
183 } | 185 } |
184 | 186 |
185 | 187 |
186 void Move(const std::string& fromFileName, const std::string& toFileName, | 188 void Move(const std::string& fromFileName, const std::string& toFileName, |
(...skipping 19 matching lines...) Expand all Loading... |
206 } | 208 } |
207 public: | 209 public: |
208 Scheduler scheduler; | 210 Scheduler scheduler; |
209 }; | 211 }; |
210 | 212 |
211 class InMemoryFileSystem : public LazyFileSystem | 213 class InMemoryFileSystem : public LazyFileSystem |
212 { | 214 { |
213 std::map<std::string, IOBuffer> files; | 215 std::map<std::string, IOBuffer> files; |
214 public: | 216 public: |
215 using LazyFileSystem::LazyFileSystem; | 217 using LazyFileSystem::LazyFileSystem; |
216 void Read(const std::string& fileName, const ReadCallback& callback) const ove
rride | 218 void Read(const std::string& fileName, const ReadCallback& callback, const Cal
lback& errorCallback) const override |
217 { | 219 { |
218 scheduler([this, fileName, callback]() | 220 scheduler([this, fileName, callback, errorCallback]() |
219 { | 221 { |
220 auto ii_file = files.find(fileName); | 222 auto ii_file = files.find(fileName); |
221 if (ii_file == files.end()) | 223 if (ii_file != files.end()) |
222 { | 224 callback(IOBuffer(ii_file->second)); |
223 callback(IOBuffer(), "File not found, " + fileName); | 225 else |
224 return; | 226 errorCallback("File not found, " + fileName); |
225 } | |
226 callback(IOBuffer(ii_file->second), ""); | |
227 }); | 227 }); |
228 } | 228 } |
229 | 229 |
230 void Write(const std::string& fileName, const IOBuffer& data, | 230 void Write(const std::string& fileName, const IOBuffer& data, |
231 const Callback& callback) override | 231 const Callback& callback) override |
232 { | 232 { |
233 scheduler([this, fileName, data, callback]() | 233 scheduler([this, fileName, data, callback]() |
234 { | 234 { |
235 files[fileName] = data; | 235 files[fileName] = data; |
236 callback(""); | 236 callback(""); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
341 } | 341 } |
342 | 342 |
343 void TearDown() override | 343 void TearDown() override |
344 { | 344 { |
345 if (platform) | 345 if (platform) |
346 platform.reset(); | 346 platform.reset(); |
347 } | 347 } |
348 }; | 348 }; |
349 | 349 |
350 #endif | 350 #endif |
OLD | NEW |