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 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 }); | 258 }); |
259 } | 259 } |
260 | 260 |
261 jsEngine->SetEventCallback("_init", [jsEngine, filterEngine, onCreated](JsValu
eList&& params) | 261 jsEngine->SetEventCallback("_init", [jsEngine, filterEngine, onCreated](JsValu
eList&& params) |
262 { | 262 { |
263 filterEngine->firstRun = params.size() && params[0].AsBool(); | 263 filterEngine->firstRun = params.size() && params[0].AsBool(); |
264 onCreated(filterEngine); | 264 onCreated(filterEngine); |
265 jsEngine->RemoveEventCallback("_init"); | 265 jsEngine->RemoveEventCallback("_init"); |
266 }); | 266 }); |
267 | 267 |
| 268 std::weak_ptr<FilterEngine> weakFilterEngine = filterEngine; |
| 269 filterEngine->SetFilterChangeCallback([weakFilterEngine](const std::string& re
ason, JsValue&&) |
| 270 { |
| 271 auto filterEngine = weakFilterEngine.lock(); |
| 272 if (!filterEngine) |
| 273 return; |
| 274 if (reason == "save") |
| 275 filterEngine->GetJsEngine()->NotifyLowMemory(); |
| 276 }); |
| 277 |
268 // Lock the JS engine while we are loading scripts, no timeouts should fire | 278 // Lock the JS engine while we are loading scripts, no timeouts should fire |
269 // until we are done. | 279 // until we are done. |
270 const JsContext context(*jsEngine); | 280 const JsContext context(*jsEngine); |
271 // Set the preconfigured prefs | 281 // Set the preconfigured prefs |
272 auto preconfiguredPrefsObject = jsEngine->NewObject(); | 282 auto preconfiguredPrefsObject = jsEngine->NewObject(); |
273 for (const auto& pref : params.preconfiguredPrefs) | 283 for (const auto& pref : params.preconfiguredPrefs) |
274 { | 284 { |
275 preconfiguredPrefsObject.SetProperty(pref.first, pref.second); | 285 preconfiguredPrefsObject.SetProperty(pref.first, pref.second); |
276 } | 286 } |
277 jsEngine->SetGlobalProperty("_preconfiguredPrefs", preconfiguredPrefsObject); | 287 jsEngine->SetGlobalProperty("_preconfiguredPrefs", preconfiguredPrefsObject); |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
626 FilterPtr filter = GetWhitelistingFilter(currentUrl, contentTypeMask, parent
Url); | 636 FilterPtr filter = GetWhitelistingFilter(currentUrl, contentTypeMask, parent
Url); |
627 if (filter) | 637 if (filter) |
628 { | 638 { |
629 return filter; | 639 return filter; |
630 } | 640 } |
631 currentUrl = parentUrl; | 641 currentUrl = parentUrl; |
632 } | 642 } |
633 while (urlIterator != documentUrls.end()); | 643 while (urlIterator != documentUrls.end()); |
634 return FilterPtr(); | 644 return FilterPtr(); |
635 } | 645 } |
OLD | NEW |