| Index: src/JsEngine.cpp | 
| =================================================================== | 
| --- a/src/JsEngine.cpp | 
| +++ b/src/JsEngine.cpp | 
| @@ -107,17 +107,17 @@ | 
| std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 
| jsEngine->timer->SetTimer(std::chrono::milliseconds(arguments[1]->IntegerValue()), [weakJsEngine, timerTaskIterator] | 
| { | 
| if (auto jsEngine = weakJsEngine.lock()) | 
| jsEngine->CallTimerTask(timerTaskIterator); | 
| }); | 
| } | 
|  | 
| -void JsEngine::CallTimerTask(TimerTasks::const_iterator timerTaskIterator) | 
| +void JsEngine::CallTimerTask(const TimerTasks::const_iterator& timerTaskIterator) | 
| { | 
| const JsContext context(shared_from_this()); | 
| JsValue callback(shared_from_this(), v8::Local<v8::Value>::New(GetIsolate(), *timerTaskIterator->arguments[0])); | 
| JsConstValueList callbackArgs; | 
| for (int i = 2; i < timerTaskIterator->arguments.size(); i++) | 
| callbackArgs.emplace_back(new JsValue(shared_from_this(), | 
| v8::Local<v8::Value>::New(GetIsolate(), *timerTaskIterator->arguments[i]))); | 
| callback.Call(callbackArgs); | 
| @@ -140,17 +140,17 @@ | 
| JsEnginePtr result(new JsEngine(isolate, std::move(timer))); | 
|  | 
| const v8::Locker locker(result->GetIsolate()); | 
| const v8::Isolate::Scope isolateScope(result->GetIsolate()); | 
| const v8::HandleScope handleScope(result->GetIsolate()); | 
|  | 
| result->context.reset(new v8::Persistent<v8::Context>(result->GetIsolate(), | 
| v8::Context::New(result->GetIsolate()))); | 
| -  AdblockPlus::GlobalJsObject::Setup(result, appInfo, result->GetGlobalObject()); | 
| +  AdblockPlus::GlobalJsObject::Setup(*result, appInfo, result->GetGlobalObject()); | 
| return result; | 
| } | 
|  | 
| AdblockPlus::JsValuePtr AdblockPlus::JsEngine::GetGlobalObject() | 
| { | 
| JsContext context(shared_from_this()); | 
| return JsValuePtr(new JsValue(shared_from_this(), context.GetV8Context()->Global())); | 
| } | 
| @@ -164,34 +164,34 @@ | 
| filename); | 
| CheckTryCatch(tryCatch); | 
| v8::Local<v8::Value> result = script->Run(); | 
| CheckTryCatch(tryCatch); | 
| return JsValuePtr(new JsValue(shared_from_this(), result)); | 
| } | 
|  | 
| void AdblockPlus::JsEngine::SetEventCallback(const std::string& eventName, | 
| -    AdblockPlus::JsEngine::EventCallback callback) | 
| +    const AdblockPlus::JsEngine::EventCallback& callback) | 
| { | 
| if (!callback) | 
| { | 
| RemoveEventCallback(eventName); | 
| return; | 
| } | 
| std::lock_guard<std::mutex> lock(eventCallbacksMutex); | 
| eventCallbacks[eventName] = callback; | 
| } | 
|  | 
| void AdblockPlus::JsEngine::RemoveEventCallback(const std::string& eventName) | 
| { | 
| std::lock_guard<std::mutex> lock(eventCallbacksMutex); | 
| eventCallbacks.erase(eventName); | 
| } | 
|  | 
| -void AdblockPlus::JsEngine::TriggerEvent(const std::string& eventName, AdblockPlus::JsValueList& params) | 
| +void AdblockPlus::JsEngine::TriggerEvent(const std::string& eventName, const AdblockPlus::JsValueList& params) | 
| { | 
| EventCallback callback; | 
| { | 
| std::lock_guard<std::mutex> lock(eventCallbacksMutex); | 
| auto it = eventCallbacks.find(eventName); | 
| if (it == eventCallbacks.end()) | 
| return; | 
| callback = it->second; | 
| @@ -226,17 +226,17 @@ | 
|  | 
| AdblockPlus::JsValuePtr AdblockPlus::JsEngine::NewObject() | 
| { | 
| const JsContext context(shared_from_this()); | 
| return JsValuePtr(new JsValue(shared_from_this(), v8::Object::New())); | 
| } | 
|  | 
| AdblockPlus::JsValuePtr AdblockPlus::JsEngine::NewCallback( | 
| -    v8::InvocationCallback callback) | 
| +    const v8::InvocationCallback& callback) | 
| { | 
| const JsContext context(shared_from_this()); | 
|  | 
| // Note: we are leaking this weak pointer, no obvious way to destroy it when | 
| // it's no longer used | 
| std::weak_ptr<JsEngine>* data = | 
| new std::weak_ptr<JsEngine>(shared_from_this()); | 
| v8::Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(callback, | 
| @@ -265,30 +265,30 @@ | 
| return list; | 
| } | 
|  | 
| AdblockPlus::FileSystemPtr AdblockPlus::JsEngine::GetFileSystem() const | 
| { | 
| return fileSystem; | 
| } | 
|  | 
| -void AdblockPlus::JsEngine::SetFileSystem(AdblockPlus::FileSystemPtr val) | 
| +void AdblockPlus::JsEngine::SetFileSystem(const AdblockPlus::FileSystemPtr& val) | 
| { | 
| if (!val) | 
| throw std::runtime_error("FileSystem cannot be null"); | 
|  | 
| fileSystem = val; | 
| } | 
|  | 
| AdblockPlus::WebRequestPtr AdblockPlus::JsEngine::GetWebRequest() const | 
| { | 
| return webRequest; | 
| } | 
|  | 
| -void AdblockPlus::JsEngine::SetWebRequest(AdblockPlus::WebRequestPtr val) | 
| +void AdblockPlus::JsEngine::SetWebRequest(const AdblockPlus::WebRequestPtr& val) | 
| { | 
| if (!val) | 
| throw std::runtime_error("WebRequest cannot be null"); | 
|  | 
| webRequest = val; | 
| } | 
|  | 
| void AdblockPlus::JsEngine::SetIsConnectionAllowedCallback(const IsConnectionAllowedCallback& callback) | 
| @@ -311,25 +311,25 @@ | 
| return !localCopy || localCopy(); | 
| } | 
|  | 
| AdblockPlus::LogSystemPtr AdblockPlus::JsEngine::GetLogSystem() const | 
| { | 
| return logSystem; | 
| } | 
|  | 
| -void AdblockPlus::JsEngine::SetLogSystem(AdblockPlus::LogSystemPtr val) | 
| +void AdblockPlus::JsEngine::SetLogSystem(const AdblockPlus::LogSystemPtr& val) | 
| { | 
| if (!val) | 
| throw std::runtime_error("LogSystem cannot be null"); | 
|  | 
| logSystem = val; | 
| } | 
|  | 
|  | 
| void AdblockPlus::JsEngine::SetGlobalProperty(const std::string& name, | 
| -                                              AdblockPlus::JsValuePtr value) | 
| +                                              const AdblockPlus::JsValuePtr& value) | 
| { | 
| auto global = GetGlobalObject(); | 
| if (!global) | 
| throw std::runtime_error("Global object cannot be null"); | 
| global->SetProperty(name, value); | 
| } | 
|  |