| Index: src/JsEngine.cpp |
| diff --git a/src/JsEngine.cpp b/src/JsEngine.cpp |
| index 2fc5159ccaa6138dc7738c52d52971347b71a3ca..475539db43166f1542952211014edbdfdb9314e6 100644 |
| --- a/src/JsEngine.cpp |
| +++ b/src/JsEngine.cpp |
| @@ -228,6 +228,26 @@ void AdblockPlus::JsEngine::SetWebRequest(AdblockPlus::WebRequestPtr val) |
| webRequest = val; |
| } |
| +void AdblockPlus::JsEngine::SetIsConnectionAllowedCallback(const IsConnectionAllowedCallback& callback) |
| +{ |
| + std::lock_guard<std::mutex> lock(isConnectionAllowedMutex); |
| + isConnectionAllowed = callback; |
| +} |
| + |
| +bool AdblockPlus::JsEngine::IsConnectionAllowed() |
| +{ |
| + // The call of isConnectionAllowed can be very expensive and it makes a |
| + // little sense to block execution of JavaScript for it. Currently this |
| + // method is called from a thread of web request, so let only this thread be |
| + // blocked by the call of the callback. |
| + IsConnectionAllowedCallback localCopy; |
| + { |
| + std::lock_guard<std::mutex> lock(isConnectionAllowedMutex); |
| + localCopy = isConnectionAllowed; |
| + } |
| + return !localCopy || localCopy(); |
| +} |
| + |
| AdblockPlus::LogSystemPtr AdblockPlus::JsEngine::GetLogSystem() |
| { |
| if (!logSystem) |