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

Side by Side Diff: src/FileSystemJsObject.cpp

Issue 29451722: Issue 4907 - Update v8 to 5.7.278 in libadblockplus (Closed) Base URL: https://github.com/adblockplus/libadblockplus.git
Patch Set: address comments Created May 31, 2017, 12:43 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/ConsoleJsObject.cpp ('k') | src/GlobalJsObject.cpp » ('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
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */ 16 */
17 17
18 #include <AdblockPlus/FileSystem.h> 18 #include <AdblockPlus/FileSystem.h>
19 #include <stdexcept> 19 #include <stdexcept>
20 #include <sstream> 20 #include <sstream>
21 #include <vector> 21 #include <vector>
22 22
23 #include <AdblockPlus/JsValue.h> 23 #include <AdblockPlus/JsValue.h>
24 #include "FileSystemJsObject.h" 24 #include "FileSystemJsObject.h"
25 #include "JsContext.h" 25 #include "JsContext.h"
26 #include "Thread.h" 26 #include "Thread.h"
27 #include "Utils.h" 27 #include "Utils.h"
28 28
29 using namespace AdblockPlus; 29 using namespace AdblockPlus;
30 using AdblockPlus::Utils::ThrowExceptionInJS;
30 31
31 namespace 32 namespace
32 { 33 {
33 class IoThread : public Thread 34 class IoThread : public Thread
34 { 35 {
35 public: 36 public:
36 IoThread(const JsEnginePtr& jsEngine, const JsValue& callback) 37 IoThread(const JsEnginePtr& jsEngine, const JsValue& callback)
37 : Thread(true), jsEngine(jsEngine), fileSystem(jsEngine->GetFileSystem()), 38 : Thread(true), jsEngine(jsEngine), fileSystem(jsEngine->GetFileSystem()),
38 callback(callback) 39 callback(callback)
39 { 40 {
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 235
235 JsValueList params; 236 JsValueList params;
236 params.push_back(result); 237 params.push_back(result);
237 callback.Call(params); 238 callback.Call(params);
238 } 239 }
239 240
240 private: 241 private:
241 std::string path; 242 std::string path;
242 }; 243 };
243 244
244 v8::Handle<v8::Value> ReadCallback(const v8::Arguments& arguments) 245 void ReadCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments)
245 { 246 {
246 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments); 247 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments);
247 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); 248 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments);
248 249
249 v8::Isolate* isolate = arguments.GetIsolate(); 250 v8::Isolate* isolate = arguments.GetIsolate();
250 if (converted.size() != 2) 251 if (converted.size() != 2)
251 return v8::ThrowException(Utils::ToV8String(isolate, 252 return ThrowExceptionInJS(isolate, "_fileSystem.read requires 2 parameters ");
252 "_fileSystem.read requires 2 parameters"));
253 if (!converted[1].IsFunction()) 253 if (!converted[1].IsFunction())
254 return v8::ThrowException(Utils::ToV8String(isolate, 254 return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.read mu st be a function");
255 "Second argument to _fileSystem.read must be a function"));
256 ReadThread* const readThread = new ReadThread(jsEngine, converted[1], 255 ReadThread* const readThread = new ReadThread(jsEngine, converted[1],
257 converted[0].AsString()); 256 converted[0].AsString());
258 readThread->Start(); 257 readThread->Start();
259 return v8::Undefined();
260 } 258 }
261 259
262 v8::Handle<v8::Value> WriteCallback(const v8::Arguments& arguments) 260 void WriteCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments)
263 { 261 {
264 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments); 262 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments);
265 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); 263 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments);
266 264
267 v8::Isolate* isolate = arguments.GetIsolate(); 265 v8::Isolate* isolate = arguments.GetIsolate();
268 if (converted.size() != 3) 266 if (converted.size() != 3)
269 return v8::ThrowException(Utils::ToV8String(isolate, 267 return ThrowExceptionInJS(isolate, "_fileSystem.write requires 3 parameter s");
270 "_fileSystem.write requires 3 parameters"));
271 if (!converted[2].IsFunction()) 268 if (!converted[2].IsFunction())
272 return v8::ThrowException(Utils::ToV8String(isolate, 269 return ThrowExceptionInJS(isolate, "Third argument to _fileSystem.write mu st be a function");
273 "Third argument to _fileSystem.write must be a function"));
274 WriteThread* const writeThread = new WriteThread(jsEngine, converted[2], 270 WriteThread* const writeThread = new WriteThread(jsEngine, converted[2],
275 converted[0].AsString(), converted[1].AsString()); 271 converted[0].AsString(), converted[1].AsString());
276 writeThread->Start(); 272 writeThread->Start();
277 return v8::Undefined();
278 } 273 }
279 274
280 v8::Handle<v8::Value> MoveCallback(const v8::Arguments& arguments) 275 void MoveCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments)
281 { 276 {
282 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments); 277 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments);
283 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); 278 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments);
284 279
285 v8::Isolate* isolate = arguments.GetIsolate(); 280 v8::Isolate* isolate = arguments.GetIsolate();
286 if (converted.size() != 3) 281 if (converted.size() != 3)
287 return v8::ThrowException(Utils::ToV8String(isolate, 282 return ThrowExceptionInJS(isolate, "_fileSystem.move requires 3 parameters ");
288 "_fileSystem.move requires 3 parameters"));
289 if (!converted[2].IsFunction()) 283 if (!converted[2].IsFunction())
290 return v8::ThrowException(Utils::ToV8String(isolate, 284 return ThrowExceptionInJS(isolate, "Third argument to _fileSystem.move mus t be a function");
291 "Third argument to _fileSystem.move must be a function"));
292 MoveThread* const moveThread = new MoveThread(jsEngine, converted[2], 285 MoveThread* const moveThread = new MoveThread(jsEngine, converted[2],
293 converted[0].AsString(), converted[1].AsString()); 286 converted[0].AsString(), converted[1].AsString());
294 moveThread->Start(); 287 moveThread->Start();
295 return v8::Undefined();
296 } 288 }
297 289
298 v8::Handle<v8::Value> RemoveCallback(const v8::Arguments& arguments) 290 void RemoveCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments)
299 { 291 {
300 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments); 292 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments);
301 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); 293 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments);
302 294
303 v8::Isolate* isolate = arguments.GetIsolate(); 295 v8::Isolate* isolate = arguments.GetIsolate();
304 if (converted.size() != 2) 296 if (converted.size() != 2)
305 return v8::ThrowException(Utils::ToV8String(isolate, 297 return ThrowExceptionInJS(isolate, "_fileSystem.remove requires 2 paramete rs");
306 "_fileSystem.remove requires 2 parameters"));
307 if (!converted[1].IsFunction()) 298 if (!converted[1].IsFunction())
308 return v8::ThrowException(Utils::ToV8String(isolate, 299 return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.remove must be a function");
309 "Second argument to _fileSystem.remove must be a function"));
310 RemoveThread* const removeThread = new RemoveThread(jsEngine, converted[1], 300 RemoveThread* const removeThread = new RemoveThread(jsEngine, converted[1],
311 converted[0].AsString()); 301 converted[0].AsString());
312 removeThread->Start(); 302 removeThread->Start();
313 return v8::Undefined();
314 } 303 }
315 304
316 v8::Handle<v8::Value> StatCallback(const v8::Arguments& arguments) 305 void StatCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments)
317 { 306 {
318 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments); 307 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments);
319 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); 308 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments);
320 309
321 v8::Isolate* isolate = arguments.GetIsolate(); 310 v8::Isolate* isolate = arguments.GetIsolate();
322 if (converted.size() != 2) 311 if (converted.size() != 2)
323 return v8::ThrowException(Utils::ToV8String(isolate, 312 return ThrowExceptionInJS(isolate, "_fileSystem.stat requires 2 parameters ");
324 "_fileSystem.stat requires 2 parameters"));
325 if (!converted[1].IsFunction()) 313 if (!converted[1].IsFunction())
326 return v8::ThrowException(Utils::ToV8String(isolate, 314 return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.stat mu st be a function");
327 "Second argument to _fileSystem.stat must be a function"));
328 StatThread* const statThread = new StatThread(jsEngine, converted[1], 315 StatThread* const statThread = new StatThread(jsEngine, converted[1],
329 converted[0].AsString()); 316 converted[0].AsString());
330 statThread->Start(); 317 statThread->Start();
331 return v8::Undefined();
332 } 318 }
333 319
334 v8::Handle<v8::Value> ResolveCallback(const v8::Arguments& arguments) 320 void ResolveCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments)
335 { 321 {
336 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments); 322 AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg uments);
337 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); 323 AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments);
338 324
339 v8::Isolate* isolate = arguments.GetIsolate(); 325 v8::Isolate* isolate = arguments.GetIsolate();
340 if (converted.size() != 1) 326 if (converted.size() != 1)
341 return v8::ThrowException(Utils::ToV8String(isolate, 327 return ThrowExceptionInJS(isolate, "_fileSystem.resolve requires 1 paramet er");
342 "_fileSystem.resolve requires 1 parameter"));
343 328
344 std::string resolved = jsEngine->GetFileSystem()->Resolve(converted[0].AsStr ing()); 329 std::string resolved = jsEngine->GetFileSystem()->Resolve(converted[0].AsStr ing());
345 330 arguments.GetReturnValue().Set(Utils::ToV8String(isolate, resolved));
346 return Utils::ToV8String(isolate, resolved);
347 } 331 }
348
349 } 332 }
350 333
351 334
352 JsValue& FileSystemJsObject::Setup(JsEngine& jsEngine, JsValue& obj) 335 JsValue& FileSystemJsObject::Setup(JsEngine& jsEngine, JsValue& obj)
353 { 336 {
354 obj.SetProperty("read", jsEngine.NewCallback(::ReadCallback)); 337 obj.SetProperty("read", jsEngine.NewCallback(::ReadCallback));
355 obj.SetProperty("write", jsEngine.NewCallback(::WriteCallback)); 338 obj.SetProperty("write", jsEngine.NewCallback(::WriteCallback));
356 obj.SetProperty("move", jsEngine.NewCallback(::MoveCallback)); 339 obj.SetProperty("move", jsEngine.NewCallback(::MoveCallback));
357 obj.SetProperty("remove", jsEngine.NewCallback(::RemoveCallback)); 340 obj.SetProperty("remove", jsEngine.NewCallback(::RemoveCallback));
358 obj.SetProperty("stat", jsEngine.NewCallback(::StatCallback)); 341 obj.SetProperty("stat", jsEngine.NewCallback(::StatCallback));
359 obj.SetProperty("resolve", jsEngine.NewCallback(::ResolveCallback)); 342 obj.SetProperty("resolve", jsEngine.NewCallback(::ResolveCallback));
360 return obj; 343 return obj;
361 } 344 }
OLDNEW
« no previous file with comments | « src/ConsoleJsObject.cpp ('k') | src/GlobalJsObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld