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

Side by Side Diff: src/JsEngine.cpp

Issue 29377570: Issue 4931 - add possibility to not send data depending on connection properties (Closed)
Patch Set: Created Feb. 28, 2017, 10:21 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
OLDNEW
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-2016 Eyeo GmbH 3 * Copyright (C) 2006-2016 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 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 } 221 }
222 222
223 void AdblockPlus::JsEngine::SetWebRequest(AdblockPlus::WebRequestPtr val) 223 void AdblockPlus::JsEngine::SetWebRequest(AdblockPlus::WebRequestPtr val)
224 { 224 {
225 if (!val) 225 if (!val)
226 throw std::runtime_error("WebRequest cannot be null"); 226 throw std::runtime_error("WebRequest cannot be null");
227 227
228 webRequest = val; 228 webRequest = val;
229 } 229 }
230 230
231 void AdblockPlus::JsEngine::SetIsConnectionAllowedCallback(const IsConnectionAll owedCallback& callback)
232 {
233 std::lock_guard<std::mutex> lock(isConnectionAllowedMutex);
234 isConnectionAllowed = callback;
235 }
236
237 bool AdblockPlus::JsEngine::IsConnectionAllowed()
238 {
239 // The call of isConnectionAllowed can be very expensive and it makes a
240 // little sense to block execution of JavaScript for it. Currently this
241 // method is called from a thread of web request, so let only this thread be
242 // blocked by the call of the callback.
243 IsConnectionAllowedCallback localCopy;
244 {
245 std::lock_guard<std::mutex> lock(isConnectionAllowedMutex);
246 localCopy = isConnectionAllowed;
247 }
248 return !localCopy || localCopy();
249 }
250
231 AdblockPlus::LogSystemPtr AdblockPlus::JsEngine::GetLogSystem() 251 AdblockPlus::LogSystemPtr AdblockPlus::JsEngine::GetLogSystem()
232 { 252 {
233 if (!logSystem) 253 if (!logSystem)
234 logSystem.reset(new DefaultLogSystem()); 254 logSystem.reset(new DefaultLogSystem());
235 return logSystem; 255 return logSystem;
236 } 256 }
237 257
238 void AdblockPlus::JsEngine::SetLogSystem(AdblockPlus::LogSystemPtr val) 258 void AdblockPlus::JsEngine::SetLogSystem(AdblockPlus::LogSystemPtr val)
239 { 259 {
240 if (!val) 260 if (!val)
241 throw std::runtime_error("LogSystem cannot be null"); 261 throw std::runtime_error("LogSystem cannot be null");
242 262
243 logSystem = val; 263 logSystem = val;
244 } 264 }
245 265
246 266
247 void AdblockPlus::JsEngine::SetGlobalProperty(const std::string& name, 267 void AdblockPlus::JsEngine::SetGlobalProperty(const std::string& name,
248 AdblockPlus::JsValuePtr value) 268 AdblockPlus::JsValuePtr value)
249 { 269 {
250 auto global = GetGlobalObject(); 270 auto global = GetGlobalObject();
251 if (!global) 271 if (!global)
252 throw std::runtime_error("Global object cannot be null"); 272 throw std::runtime_error("Global object cannot be null");
253 global->SetProperty(name, value); 273 global->SetProperty(name, value);
254 } 274 }
OLDNEW
« src/FilterEngine.cpp ('K') | « src/FilterEngine.cpp ('k') | src/WebRequestJsObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld