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

Side by Side Diff: src/JsEngine.cpp

Issue 29409580: Issue 5013 - Make parameter const ref when applicable. (Closed) Base URL: https://hg.adblockplus.org/libadblockplus/
Patch Set: Pass ref or const ref instead of shared_ptr<> Created April 11, 2017, 3:37 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
« no previous file with comments | « src/JsContext.cpp ('k') | src/JsError.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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-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 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 timerTaskIterator->arguments.emplace_back(new v8::Persistent<v8::Value>(jsEn gine->GetIsolate(), arguments[i])); 105 timerTaskIterator->arguments.emplace_back(new v8::Persistent<v8::Value>(jsEn gine->GetIsolate(), arguments[i]));
106 106
107 std::weak_ptr<JsEngine> weakJsEngine = jsEngine; 107 std::weak_ptr<JsEngine> weakJsEngine = jsEngine;
108 jsEngine->timer->SetTimer(std::chrono::milliseconds(arguments[1]->IntegerValue ()), [weakJsEngine, timerTaskIterator] 108 jsEngine->timer->SetTimer(std::chrono::milliseconds(arguments[1]->IntegerValue ()), [weakJsEngine, timerTaskIterator]
109 { 109 {
110 if (auto jsEngine = weakJsEngine.lock()) 110 if (auto jsEngine = weakJsEngine.lock())
111 jsEngine->CallTimerTask(timerTaskIterator); 111 jsEngine->CallTimerTask(timerTaskIterator);
112 }); 112 });
113 } 113 }
114 114
115 void JsEngine::CallTimerTask(TimerTasks::const_iterator timerTaskIterator) 115 void JsEngine::CallTimerTask(const TimerTasks::const_iterator& timerTaskIterator )
116 { 116 {
117 const JsContext context(shared_from_this()); 117 const JsContext context(shared_from_this());
118 JsValue callback(shared_from_this(), v8::Local<v8::Value>::New(GetIsolate(), * timerTaskIterator->arguments[0])); 118 JsValue callback(shared_from_this(), v8::Local<v8::Value>::New(GetIsolate(), * timerTaskIterator->arguments[0]));
119 JsConstValueList callbackArgs; 119 JsConstValueList callbackArgs;
120 for (int i = 2; i < timerTaskIterator->arguments.size(); i++) 120 for (int i = 2; i < timerTaskIterator->arguments.size(); i++)
121 callbackArgs.emplace_back(new JsValue(shared_from_this(), 121 callbackArgs.emplace_back(new JsValue(shared_from_this(),
122 v8::Local<v8::Value>::New(GetIsolate(), *timerTaskIterator->arguments[i]))); 122 v8::Local<v8::Value>::New(GetIsolate(), *timerTaskIterator->arguments[i])));
123 callback.Call(callbackArgs); 123 callback.Call(callbackArgs);
124 timerTasks.erase(timerTaskIterator); 124 timerTasks.erase(timerTaskIterator);
125 } 125 }
(...skipping 12 matching lines...) Expand all
138 const ScopedV8IsolatePtr& isolate) 138 const ScopedV8IsolatePtr& isolate)
139 { 139 {
140 JsEnginePtr result(new JsEngine(isolate, std::move(timer))); 140 JsEnginePtr result(new JsEngine(isolate, std::move(timer)));
141 141
142 const v8::Locker locker(result->GetIsolate()); 142 const v8::Locker locker(result->GetIsolate());
143 const v8::Isolate::Scope isolateScope(result->GetIsolate()); 143 const v8::Isolate::Scope isolateScope(result->GetIsolate());
144 const v8::HandleScope handleScope(result->GetIsolate()); 144 const v8::HandleScope handleScope(result->GetIsolate());
145 145
146 result->context.reset(new v8::Persistent<v8::Context>(result->GetIsolate(), 146 result->context.reset(new v8::Persistent<v8::Context>(result->GetIsolate(),
147 v8::Context::New(result->GetIsolate()))); 147 v8::Context::New(result->GetIsolate())));
148 AdblockPlus::GlobalJsObject::Setup(result, appInfo, result->GetGlobalObject()) ; 148 AdblockPlus::GlobalJsObject::Setup(*result, appInfo, result->GetGlobalObject() );
149 return result; 149 return result;
150 } 150 }
151 151
152 AdblockPlus::JsValuePtr AdblockPlus::JsEngine::GetGlobalObject() 152 AdblockPlus::JsValuePtr AdblockPlus::JsEngine::GetGlobalObject()
153 { 153 {
154 JsContext context(shared_from_this()); 154 JsContext context(shared_from_this());
155 return JsValuePtr(new JsValue(shared_from_this(), context.GetV8Context()->Glob al())); 155 return JsValuePtr(new JsValue(shared_from_this(), context.GetV8Context()->Glob al()));
156 } 156 }
157 157
158 AdblockPlus::JsValuePtr AdblockPlus::JsEngine::Evaluate(const std::string& sourc e, 158 AdblockPlus::JsValuePtr AdblockPlus::JsEngine::Evaluate(const std::string& sourc e,
159 const std::string& filename) 159 const std::string& filename)
160 { 160 {
161 const JsContext context(shared_from_this()); 161 const JsContext context(shared_from_this());
162 const v8::TryCatch tryCatch; 162 const v8::TryCatch tryCatch;
163 const v8::Handle<v8::Script> script = CompileScript(GetIsolate(), source, 163 const v8::Handle<v8::Script> script = CompileScript(GetIsolate(), source,
164 filename); 164 filename);
165 CheckTryCatch(tryCatch); 165 CheckTryCatch(tryCatch);
166 v8::Local<v8::Value> result = script->Run(); 166 v8::Local<v8::Value> result = script->Run();
167 CheckTryCatch(tryCatch); 167 CheckTryCatch(tryCatch);
168 return JsValuePtr(new JsValue(shared_from_this(), result)); 168 return JsValuePtr(new JsValue(shared_from_this(), result));
169 } 169 }
170 170
171 void AdblockPlus::JsEngine::SetEventCallback(const std::string& eventName, 171 void AdblockPlus::JsEngine::SetEventCallback(const std::string& eventName,
172 AdblockPlus::JsEngine::EventCallback callback) 172 const AdblockPlus::JsEngine::EventCallback& callback)
173 { 173 {
174 if (!callback) 174 if (!callback)
175 { 175 {
176 RemoveEventCallback(eventName); 176 RemoveEventCallback(eventName);
177 return; 177 return;
178 } 178 }
179 std::lock_guard<std::mutex> lock(eventCallbacksMutex); 179 std::lock_guard<std::mutex> lock(eventCallbacksMutex);
180 eventCallbacks[eventName] = callback; 180 eventCallbacks[eventName] = callback;
181 } 181 }
182 182
183 void AdblockPlus::JsEngine::RemoveEventCallback(const std::string& eventName) 183 void AdblockPlus::JsEngine::RemoveEventCallback(const std::string& eventName)
184 { 184 {
185 std::lock_guard<std::mutex> lock(eventCallbacksMutex); 185 std::lock_guard<std::mutex> lock(eventCallbacksMutex);
186 eventCallbacks.erase(eventName); 186 eventCallbacks.erase(eventName);
187 } 187 }
188 188
189 void AdblockPlus::JsEngine::TriggerEvent(const std::string& eventName, AdblockPl us::JsValueList& params) 189 void AdblockPlus::JsEngine::TriggerEvent(const std::string& eventName, const Adb lockPlus::JsValueList& params)
190 { 190 {
191 EventCallback callback; 191 EventCallback callback;
192 { 192 {
193 std::lock_guard<std::mutex> lock(eventCallbacksMutex); 193 std::lock_guard<std::mutex> lock(eventCallbacksMutex);
194 auto it = eventCallbacks.find(eventName); 194 auto it = eventCallbacks.find(eventName);
195 if (it == eventCallbacks.end()) 195 if (it == eventCallbacks.end())
196 return; 196 return;
197 callback = it->second; 197 callback = it->second;
198 } 198 }
199 callback(params); 199 callback(params);
(...skipping 24 matching lines...) Expand all
224 return JsValuePtr(new JsValue(shared_from_this(), v8::Boolean::New(val))); 224 return JsValuePtr(new JsValue(shared_from_this(), v8::Boolean::New(val)));
225 } 225 }
226 226
227 AdblockPlus::JsValuePtr AdblockPlus::JsEngine::NewObject() 227 AdblockPlus::JsValuePtr AdblockPlus::JsEngine::NewObject()
228 { 228 {
229 const JsContext context(shared_from_this()); 229 const JsContext context(shared_from_this());
230 return JsValuePtr(new JsValue(shared_from_this(), v8::Object::New())); 230 return JsValuePtr(new JsValue(shared_from_this(), v8::Object::New()));
231 } 231 }
232 232
233 AdblockPlus::JsValuePtr AdblockPlus::JsEngine::NewCallback( 233 AdblockPlus::JsValuePtr AdblockPlus::JsEngine::NewCallback(
234 v8::InvocationCallback callback) 234 const v8::InvocationCallback& callback)
235 { 235 {
236 const JsContext context(shared_from_this()); 236 const JsContext context(shared_from_this());
237 237
238 // Note: we are leaking this weak pointer, no obvious way to destroy it when 238 // Note: we are leaking this weak pointer, no obvious way to destroy it when
239 // it's no longer used 239 // it's no longer used
240 std::weak_ptr<JsEngine>* data = 240 std::weak_ptr<JsEngine>* data =
241 new std::weak_ptr<JsEngine>(shared_from_this()); 241 new std::weak_ptr<JsEngine>(shared_from_this());
242 v8::Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(callback, 242 v8::Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(callback,
243 v8::External::New(data)); 243 v8::External::New(data));
244 return JsValuePtr(new JsValue(shared_from_this(), templ->GetFunction())); 244 return JsValuePtr(new JsValue(shared_from_this(), templ->GetFunction()));
(...skipping 18 matching lines...) Expand all
263 for (int i = 0; i < arguments.Length(); i++) 263 for (int i = 0; i < arguments.Length(); i++)
264 list.push_back(JsValuePtr(new JsValue(shared_from_this(), arguments[i]))); 264 list.push_back(JsValuePtr(new JsValue(shared_from_this(), arguments[i])));
265 return list; 265 return list;
266 } 266 }
267 267
268 AdblockPlus::FileSystemPtr AdblockPlus::JsEngine::GetFileSystem() const 268 AdblockPlus::FileSystemPtr AdblockPlus::JsEngine::GetFileSystem() const
269 { 269 {
270 return fileSystem; 270 return fileSystem;
271 } 271 }
272 272
273 void AdblockPlus::JsEngine::SetFileSystem(AdblockPlus::FileSystemPtr val) 273 void AdblockPlus::JsEngine::SetFileSystem(const AdblockPlus::FileSystemPtr& val)
274 { 274 {
275 if (!val) 275 if (!val)
276 throw std::runtime_error("FileSystem cannot be null"); 276 throw std::runtime_error("FileSystem cannot be null");
277 277
278 fileSystem = val; 278 fileSystem = val;
279 } 279 }
280 280
281 AdblockPlus::WebRequestPtr AdblockPlus::JsEngine::GetWebRequest() const 281 AdblockPlus::WebRequestPtr AdblockPlus::JsEngine::GetWebRequest() const
282 { 282 {
283 return webRequest; 283 return webRequest;
284 } 284 }
285 285
286 void AdblockPlus::JsEngine::SetWebRequest(AdblockPlus::WebRequestPtr val) 286 void AdblockPlus::JsEngine::SetWebRequest(const AdblockPlus::WebRequestPtr& val)
287 { 287 {
288 if (!val) 288 if (!val)
289 throw std::runtime_error("WebRequest cannot be null"); 289 throw std::runtime_error("WebRequest cannot be null");
290 290
291 webRequest = val; 291 webRequest = val;
292 } 292 }
293 293
294 void AdblockPlus::JsEngine::SetIsConnectionAllowedCallback(const IsConnectionAll owedCallback& callback) 294 void AdblockPlus::JsEngine::SetIsConnectionAllowedCallback(const IsConnectionAll owedCallback& callback)
295 { 295 {
296 std::lock_guard<std::mutex> lock(isConnectionAllowedMutex); 296 std::lock_guard<std::mutex> lock(isConnectionAllowedMutex);
(...skipping 12 matching lines...) Expand all
309 localCopy = isConnectionAllowed; 309 localCopy = isConnectionAllowed;
310 } 310 }
311 return !localCopy || localCopy(); 311 return !localCopy || localCopy();
312 } 312 }
313 313
314 AdblockPlus::LogSystemPtr AdblockPlus::JsEngine::GetLogSystem() const 314 AdblockPlus::LogSystemPtr AdblockPlus::JsEngine::GetLogSystem() const
315 { 315 {
316 return logSystem; 316 return logSystem;
317 } 317 }
318 318
319 void AdblockPlus::JsEngine::SetLogSystem(AdblockPlus::LogSystemPtr val) 319 void AdblockPlus::JsEngine::SetLogSystem(const AdblockPlus::LogSystemPtr& val)
320 { 320 {
321 if (!val) 321 if (!val)
322 throw std::runtime_error("LogSystem cannot be null"); 322 throw std::runtime_error("LogSystem cannot be null");
323 323
324 logSystem = val; 324 logSystem = val;
325 } 325 }
326 326
327 327
328 void AdblockPlus::JsEngine::SetGlobalProperty(const std::string& name, 328 void AdblockPlus::JsEngine::SetGlobalProperty(const std::string& name,
329 AdblockPlus::JsValuePtr value) 329 const AdblockPlus::JsValuePtr& val ue)
330 { 330 {
331 auto global = GetGlobalObject(); 331 auto global = GetGlobalObject();
332 if (!global) 332 if (!global)
333 throw std::runtime_error("Global object cannot be null"); 333 throw std::runtime_error("Global object cannot be null");
334 global->SetProperty(name, value); 334 global->SetProperty(name, value);
335 } 335 }
OLDNEW
« no previous file with comments | « src/JsContext.cpp ('k') | src/JsError.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld