| Index: src/JsEngine.cpp |
| =================================================================== |
| --- a/src/JsEngine.cpp |
| +++ b/src/JsEngine.cpp |
| @@ -121,16 +121,19 @@ |
| callbackArgs.emplace_back(new JsValue(shared_from_this(), |
| v8::Local<v8::Value>::New(GetIsolate(), *timerTaskIterator->arguments[i]))); |
| callback.Call(callbackArgs); |
| timerTasks.erase(timerTaskIterator); |
| } |
| AdblockPlus::JsEngine::JsEngine(const ScopedV8IsolatePtr& isolate, TimerPtr timer) |
| : isolate(isolate) |
| + , fileSystem(new DefaultFileSystem()) |
| + , webRequest(new DefaultWebRequest()) |
| + , logSystem(new DefaultLogSystem()) |
| , timer(std::move(timer)) |
| { |
| } |
| AdblockPlus::JsEnginePtr AdblockPlus::JsEngine::New(const AppInfo& appInfo, |
| TimerPtr timer, |
| const ScopedV8IsolatePtr& isolate) |
| { |
| @@ -257,35 +260,31 @@ |
| { |
| const JsContext context(shared_from_this()); |
| JsValueList list; |
| for (int i = 0; i < arguments.Length(); i++) |
| list.push_back(JsValuePtr(new JsValue(shared_from_this(), arguments[i]))); |
| return list; |
| } |
| -AdblockPlus::FileSystemPtr AdblockPlus::JsEngine::GetFileSystem() |
| +AdblockPlus::FileSystemPtr AdblockPlus::JsEngine::GetFileSystem() const |
| { |
| - if (!fileSystem) |
| - fileSystem.reset(new DefaultFileSystem()); |
| return fileSystem; |
| } |
| void AdblockPlus::JsEngine::SetFileSystem(AdblockPlus::FileSystemPtr val) |
| { |
| if (!val) |
| throw std::runtime_error("FileSystem cannot be null"); |
| fileSystem = val; |
| } |
| -AdblockPlus::WebRequestPtr AdblockPlus::JsEngine::GetWebRequest() |
| +AdblockPlus::WebRequestPtr AdblockPlus::JsEngine::GetWebRequest() const |
| { |
| - if (!webRequest) |
| - webRequest.reset(new DefaultWebRequest()); |
| return webRequest; |
| } |
| void AdblockPlus::JsEngine::SetWebRequest(AdblockPlus::WebRequestPtr val) |
| { |
| if (!val) |
| throw std::runtime_error("WebRequest cannot be null"); |
| @@ -293,46 +292,44 @@ |
| } |
| void AdblockPlus::JsEngine::SetIsConnectionAllowedCallback(const IsConnectionAllowedCallback& callback) |
| { |
| std::lock_guard<std::mutex> lock(isConnectionAllowedMutex); |
| isConnectionAllowed = callback; |
| } |
| -bool AdblockPlus::JsEngine::IsConnectionAllowed() |
| +bool AdblockPlus::JsEngine::IsConnectionAllowed() const |
| { |
| // 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() |
| +AdblockPlus::LogSystemPtr AdblockPlus::JsEngine::GetLogSystem() const |
| { |
| - if (!logSystem) |
| - logSystem.reset(new DefaultLogSystem()); |
| return logSystem; |
| } |
| void AdblockPlus::JsEngine::SetLogSystem(AdblockPlus::LogSystemPtr val) |
| { |
| if (!val) |
| throw std::runtime_error("LogSystem cannot be null"); |
| logSystem = val; |
| } |
| -void AdblockPlus::JsEngine::SetGlobalProperty(const std::string& name, |
| +void AdblockPlus::JsEngine::SetGlobalProperty(const std::string& name, |
| AdblockPlus::JsValuePtr value) |
| { |
| auto global = GetGlobalObject(); |
| if (!global) |
| throw std::runtime_error("Global object cannot be null"); |
| global->SetProperty(name, value); |
| } |