| OLD | NEW | 
|---|
| 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-present eyeo GmbH | 3  * Copyright (C) 2006-present 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 29 matching lines...) Expand all  Loading... | 
| 40     v8::Isolate* isolate = arguments.GetIsolate(); | 40     v8::Isolate* isolate = arguments.GetIsolate(); | 
| 41     if (converted.size() != 2) | 41     if (converted.size() != 2) | 
| 42       return ThrowExceptionInJS(isolate, "_fileSystem.read requires 2 parameters
     "); | 42       return ThrowExceptionInJS(isolate, "_fileSystem.read requires 2 parameters
     "); | 
| 43     if (!converted[1].IsFunction()) | 43     if (!converted[1].IsFunction()) | 
| 44       return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.read mu
     st be a function"); | 44       return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.read mu
     st be a function"); | 
| 45 | 45 | 
| 46     JsValueList values; | 46     JsValueList values; | 
| 47     values.push_back(converted[1]); | 47     values.push_back(converted[1]); | 
| 48     auto weakCallback = jsEngine->StoreJsValues(values); | 48     auto weakCallback = jsEngine->StoreJsValues(values); | 
| 49     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 49     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 
| 50     jsEngine->GetPlatform().GetFileSystem().Read(converted[0].AsString(), | 50     auto fileName = converted[0].AsString(); | 
| 51       [weakJsEngine, weakCallback] | 51     jsEngine->GetPlatform().WithFileSystem( | 
| 52       (IFileSystem::IOBuffer&& content, const std::string& error) | 52       [weakJsEngine, weakCallback, fileName](IFileSystem& fileSystem) | 
| 53       { | 53       { | 
| 54         auto jsEngine = weakJsEngine.lock(); | 54         fileSystem.Read(fileName, | 
| 55         if (!jsEngine) | 55           [weakJsEngine, weakCallback] | 
| 56           return; | 56           (IFileSystem::IOBuffer&& content, const std::string& error) | 
|  | 57           { | 
|  | 58             auto jsEngine = weakJsEngine.lock(); | 
|  | 59             if (!jsEngine) | 
|  | 60               return; | 
| 57 | 61 | 
| 58         const JsContext context(*jsEngine); | 62             const JsContext context(*jsEngine); | 
| 59         auto result = jsEngine->NewObject(); | 63             auto result = jsEngine->NewObject(); | 
| 60         result.SetStringBufferProperty("content", std::move(content)); | 64             result.SetStringBufferProperty("content", std::move(content)); | 
| 61         if (!error.empty()) | 65             if (!error.empty()) | 
| 62           result.SetProperty("error", error); | 66               result.SetProperty("error", error); | 
| 63         jsEngine->TakeJsValues(weakCallback)[0].Call(result); | 67             jsEngine->TakeJsValues(weakCallback)[0].Call(result); | 
|  | 68           }); | 
| 64       }); | 69       }); | 
| 65   } | 70   } | 
| 66 | 71 | 
| 67   inline bool IsEndOfLine(char c) | 72   inline bool IsEndOfLine(char c) | 
| 68   { | 73   { | 
| 69     return c == 10 || c == 13; | 74     return c == 10 || c == 13; | 
| 70   } | 75   } | 
| 71 | 76 | 
| 72   inline StringBuffer::const_iterator SkipEndOfLine(StringBuffer::const_iterator
      ii, StringBuffer::const_iterator end) | 77   inline StringBuffer::const_iterator SkipEndOfLine(StringBuffer::const_iterator
      ii, StringBuffer::const_iterator end) | 
| 73   { | 78   { | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
| 94     if (!converted[1].IsFunction()) | 99     if (!converted[1].IsFunction()) | 
| 95       return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.readFro
     mFile must be a function (listener callback)"); | 100       return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.readFro
     mFile must be a function (listener callback)"); | 
| 96     if (!converted[2].IsFunction()) | 101     if (!converted[2].IsFunction()) | 
| 97       return ThrowExceptionInJS(isolate, "Third argument to _fileSystem.readFrom
     File must be a function (done callback)"); | 102       return ThrowExceptionInJS(isolate, "Third argument to _fileSystem.readFrom
     File must be a function (done callback)"); | 
| 98 | 103 | 
| 99     JsValueList values; | 104     JsValueList values; | 
| 100     values.push_back(converted[1]); | 105     values.push_back(converted[1]); | 
| 101     values.push_back(converted[2]); | 106     values.push_back(converted[2]); | 
| 102     auto weakCallback = jsEngine->StoreJsValues(values); | 107     auto weakCallback = jsEngine->StoreJsValues(values); | 
| 103     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 108     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 
| 104     jsEngine->GetPlatform().GetFileSystem().Read(converted[0].AsString(), | 109     auto fileName = converted[0].AsString(); | 
| 105       [weakJsEngine, weakCallback] | 110     jsEngine->GetPlatform().WithFileSystem( | 
| 106     (IFileSystem::IOBuffer&& content, const std::string& error) | 111       [weakJsEngine, weakCallback, fileName](IFileSystem& fileSystem) | 
| 107     { | 112       { | 
| 108       auto jsEngine = weakJsEngine.lock(); | 113         fileSystem.Read(fileName, | 
| 109       if (!jsEngine) | 114           [weakJsEngine, weakCallback] | 
| 110         return; | 115           (IFileSystem::IOBuffer&& content, const std::string& error) | 
|  | 116           { | 
|  | 117             auto jsEngine = weakJsEngine.lock(); | 
|  | 118             if (!jsEngine) | 
|  | 119               return; | 
| 111 | 120 | 
| 112       const JsContext context(*jsEngine); | 121             const JsContext context(*jsEngine); | 
| 113 | 122 | 
| 114       auto jsValues = jsEngine->TakeJsValues(weakCallback); | 123             auto jsValues = jsEngine->TakeJsValues(weakCallback); | 
| 115       if (!error.empty()) | 124             if (!error.empty()) | 
| 116       { | 125             { | 
| 117         jsValues[1].Call(jsEngine->NewValue(error)); | 126               jsValues[1].Call(jsEngine->NewValue(error)); | 
| 118         return; | 127               return; | 
| 119       } | 128             } | 
| 120 | 129 | 
| 121       auto processFunc = jsValues[0].UnwrapValue().As<v8::Function>(); | 130             auto processFunc = jsValues[0].UnwrapValue().As<v8::Function>(); | 
| 122 | 131 | 
| 123       auto globalContext = context.GetV8Context()->Global(); | 132             auto globalContext = context.GetV8Context()->Global(); | 
| 124       if (!globalContext->IsObject()) | 133             if (!globalContext->IsObject()) | 
| 125         throw std::runtime_error("`this` pointer has to be an object"); | 134               throw std::runtime_error("`this` pointer has to be an object"); | 
| 126 | 135 | 
| 127       const v8::TryCatch tryCatch; | 136             const v8::TryCatch tryCatch; | 
| 128 | 137 | 
| 129       const auto contentEnd = content.cend(); | 138             const auto contentEnd = content.cend(); | 
| 130       auto stringBegin = SkipEndOfLine(content.begin(), contentEnd); | 139             auto stringBegin = SkipEndOfLine(content.begin(), contentEnd); | 
| 131       do | 140             do | 
| 132       { | 141             { | 
| 133         auto stringEnd = AdvanceToEndOfLine(stringBegin, contentEnd); | 142               auto stringEnd = AdvanceToEndOfLine(stringBegin, contentEnd); | 
| 134         auto jsLine = Utils::StringBufferToV8String(jsEngine->GetIsolate(), Stri
     ngBuffer(stringBegin, stringEnd)).As<v8::Value>(); | 143               auto jsLine = Utils::StringBufferToV8String(jsEngine->GetIsolate()
     , StringBuffer(stringBegin, stringEnd)).As<v8::Value>(); | 
| 135         processFunc->Call(globalContext, 1, &jsLine); | 144               processFunc->Call(globalContext, 1, &jsLine); | 
| 136         if (tryCatch.HasCaught()) | 145               if (tryCatch.HasCaught()) | 
| 137         { | 146               { | 
| 138           jsValues[1].Call(jsEngine->NewValue(JsError::ExceptionToString(tryCatc
     h.Exception(), tryCatch.Message()))); | 147                 jsValues[1].Call(jsEngine->NewValue(JsError::ExceptionToString(t
     ryCatch.Exception(), tryCatch.Message()))); | 
| 139           return; | 148                 return; | 
| 140         } | 149               } | 
| 141         stringBegin = SkipEndOfLine(stringEnd, contentEnd); | 150               stringBegin = SkipEndOfLine(stringEnd, contentEnd); | 
| 142       } while (stringBegin != contentEnd); | 151             } while (stringBegin != contentEnd); | 
| 143       jsValues[1].Call(); | 152             jsValues[1].Call(); | 
| 144     }); | 153           }); | 
|  | 154       }); | 
| 145   } | 155   } | 
| 146 | 156 | 
| 147   void WriteCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 157   void WriteCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
| 148   { | 158   { | 
| 149     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); | 159     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); | 
| 150     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 160     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 
| 151 | 161 | 
| 152     v8::Isolate* isolate = arguments.GetIsolate(); | 162     v8::Isolate* isolate = arguments.GetIsolate(); | 
| 153     if (converted.size() != 3) | 163     if (converted.size() != 3) | 
| 154       return ThrowExceptionInJS(isolate, "_fileSystem.write requires 3 parameter
     s"); | 164       return ThrowExceptionInJS(isolate, "_fileSystem.write requires 3 parameter
     s"); | 
| 155     if (!converted[2].IsFunction()) | 165     if (!converted[2].IsFunction()) | 
| 156       return ThrowExceptionInJS(isolate, "Third argument to _fileSystem.write mu
     st be a function"); | 166       return ThrowExceptionInJS(isolate, "Third argument to _fileSystem.write mu
     st be a function"); | 
| 157 | 167 | 
| 158     JsValueList values; | 168     JsValueList values; | 
| 159     values.push_back(converted[2]); | 169     values.push_back(converted[2]); | 
| 160     auto weakCallback = jsEngine->StoreJsValues(values); | 170     auto weakCallback = jsEngine->StoreJsValues(values); | 
| 161     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 171     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 
| 162     auto content = converted[1].AsStringBuffer(); | 172     auto content = converted[1].AsStringBuffer(); | 
| 163     jsEngine->GetPlatform().GetFileSystem().Write(converted[0].AsString(), | 173     auto fileName = converted[0].AsString(); | 
| 164       content, | 174     jsEngine->GetPlatform().WithFileSystem( | 
| 165       [weakJsEngine, weakCallback](const std::string& error) | 175       [weakJsEngine, weakCallback, fileName, content](IFileSystem& fileSystem) | 
| 166       { | 176       { | 
| 167         auto jsEngine = weakJsEngine.lock(); | 177         fileSystem.Write(fileName, content, | 
| 168         if (!jsEngine) | 178           [weakJsEngine, weakCallback](const std::string& error) | 
| 169           return; | 179           { | 
|  | 180             auto jsEngine = weakJsEngine.lock(); | 
|  | 181             if (!jsEngine) | 
|  | 182               return; | 
| 170 | 183 | 
| 171         const JsContext context(*jsEngine); | 184             const JsContext context(*jsEngine); | 
| 172         JsValueList params; | 185             JsValueList params; | 
| 173         if (!error.empty()) | 186             if (!error.empty()) | 
| 174           params.push_back(jsEngine->NewValue(error)); | 187               params.push_back(jsEngine->NewValue(error)); | 
| 175         jsEngine->TakeJsValues(weakCallback)[0].Call(params); | 188             jsEngine->TakeJsValues(weakCallback)[0].Call(params); | 
|  | 189           }); | 
| 176       }); | 190       }); | 
| 177   } | 191   } | 
| 178 | 192 | 
| 179   void MoveCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 193   void MoveCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
| 180   { | 194   { | 
| 181     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); | 195     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); | 
| 182     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 196     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 
| 183 | 197 | 
| 184     v8::Isolate* isolate = arguments.GetIsolate(); | 198     v8::Isolate* isolate = arguments.GetIsolate(); | 
| 185     if (converted.size() != 3) | 199     if (converted.size() != 3) | 
| 186       return ThrowExceptionInJS(isolate, "_fileSystem.move requires 3 parameters
     "); | 200       return ThrowExceptionInJS(isolate, "_fileSystem.move requires 3 parameters
     "); | 
| 187     if (!converted[2].IsFunction()) | 201     if (!converted[2].IsFunction()) | 
| 188       return ThrowExceptionInJS(isolate, "Third argument to _fileSystem.move mus
     t be a function"); | 202       return ThrowExceptionInJS(isolate, "Third argument to _fileSystem.move mus
     t be a function"); | 
| 189 | 203 | 
| 190     JsValueList values; | 204     JsValueList values; | 
| 191     values.push_back(converted[2]); | 205     values.push_back(converted[2]); | 
| 192     auto weakCallback = jsEngine->StoreJsValues(values); | 206     auto weakCallback = jsEngine->StoreJsValues(values); | 
| 193     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 207     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 
| 194     jsEngine->GetPlatform().GetFileSystem().Move(converted[0].AsString(), | 208     auto from = converted[0].AsString(); | 
| 195       converted[1].AsString(), | 209     auto to = converted[1].AsString(); | 
| 196       [weakJsEngine, weakCallback](const std::string& error) | 210     jsEngine->GetPlatform().WithFileSystem( | 
|  | 211       [weakJsEngine, weakCallback, from, to](IFileSystem& fileSystem) | 
| 197       { | 212       { | 
| 198         auto jsEngine = weakJsEngine.lock(); | 213         fileSystem.Move(from, to, | 
| 199         if (!jsEngine) | 214           [weakJsEngine, weakCallback](const std::string& error) | 
| 200           return; | 215           { | 
|  | 216             auto jsEngine = weakJsEngine.lock(); | 
|  | 217             if (!jsEngine) | 
|  | 218               return; | 
| 201 | 219 | 
| 202         const JsContext context(*jsEngine); | 220             const JsContext context(*jsEngine); | 
| 203         JsValueList params; | 221             JsValueList params; | 
| 204         if (!error.empty()) | 222             if (!error.empty()) | 
| 205           params.push_back(jsEngine->NewValue(error)); | 223               params.push_back(jsEngine->NewValue(error)); | 
| 206         jsEngine->TakeJsValues(weakCallback)[0].Call(params); | 224             jsEngine->TakeJsValues(weakCallback)[0].Call(params); | 
|  | 225           }); | 
| 207       }); | 226       }); | 
| 208   } | 227   } | 
| 209 | 228 | 
| 210   void RemoveCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 229   void RemoveCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
| 211   { | 230   { | 
| 212     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); | 231     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); | 
| 213     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 232     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 
| 214 | 233 | 
| 215     v8::Isolate* isolate = arguments.GetIsolate(); | 234     v8::Isolate* isolate = arguments.GetIsolate(); | 
| 216     if (converted.size() != 2) | 235     if (converted.size() != 2) | 
| 217       return ThrowExceptionInJS(isolate, "_fileSystem.remove requires 2 paramete
     rs"); | 236       return ThrowExceptionInJS(isolate, "_fileSystem.remove requires 2 paramete
     rs"); | 
| 218     if (!converted[1].IsFunction()) | 237     if (!converted[1].IsFunction()) | 
| 219       return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.remove 
     must be a function"); | 238       return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.remove 
     must be a function"); | 
| 220 | 239 | 
| 221     JsValueList values; | 240     JsValueList values; | 
| 222     values.push_back(converted[1]); | 241     values.push_back(converted[1]); | 
| 223     auto weakCallback = jsEngine->StoreJsValues(values); | 242     auto weakCallback = jsEngine->StoreJsValues(values); | 
| 224     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 243     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 
| 225     jsEngine->GetPlatform().GetFileSystem().Remove(converted[0].AsString(), | 244     auto fileName = converted[0].AsString(); | 
| 226       [weakJsEngine, weakCallback](const std::string& error) | 245     jsEngine->GetPlatform().WithFileSystem( | 
|  | 246       [weakJsEngine, weakCallback, fileName](IFileSystem& fileSystem) | 
| 227       { | 247       { | 
| 228         auto jsEngine = weakJsEngine.lock(); | 248         fileSystem.Remove(fileName, | 
| 229         if (!jsEngine) | 249           [weakJsEngine, weakCallback](const std::string& error) | 
| 230           return; | 250           { | 
|  | 251             auto jsEngine = weakJsEngine.lock(); | 
|  | 252             if (!jsEngine) | 
|  | 253               return; | 
| 231 | 254 | 
| 232         const JsContext context(*jsEngine); | 255             const JsContext context(*jsEngine); | 
| 233         JsValueList params; | 256             JsValueList params; | 
| 234         if (!error.empty()) | 257             if (!error.empty()) | 
| 235           params.push_back(jsEngine->NewValue(error)); | 258               params.push_back(jsEngine->NewValue(error)); | 
| 236         jsEngine->TakeJsValues(weakCallback)[0].Call(params); | 259             jsEngine->TakeJsValues(weakCallback)[0].Call(params); | 
|  | 260           }); | 
| 237       }); | 261       }); | 
| 238   } | 262   } | 
| 239 | 263 | 
| 240   void StatCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 264   void StatCallback(const v8::FunctionCallbackInfo<v8::Value>& arguments) | 
| 241   { | 265   { | 
| 242     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); | 266     AdblockPlus::JsEnginePtr jsEngine = AdblockPlus::JsEngine::FromArguments(arg
     uments); | 
| 243     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 267     AdblockPlus::JsValueList converted = jsEngine->ConvertArguments(arguments); | 
| 244 | 268 | 
| 245     v8::Isolate* isolate = arguments.GetIsolate(); | 269     v8::Isolate* isolate = arguments.GetIsolate(); | 
| 246     if (converted.size() != 2) | 270     if (converted.size() != 2) | 
| 247       return ThrowExceptionInJS(isolate, "_fileSystem.stat requires 2 parameters
     "); | 271       return ThrowExceptionInJS(isolate, "_fileSystem.stat requires 2 parameters
     "); | 
| 248     if (!converted[1].IsFunction()) | 272     if (!converted[1].IsFunction()) | 
| 249       return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.stat mu
     st be a function"); | 273       return ThrowExceptionInJS(isolate, "Second argument to _fileSystem.stat mu
     st be a function"); | 
| 250 | 274 | 
| 251     JsValueList values; | 275     JsValueList values; | 
| 252     values.push_back(converted[1]); | 276     values.push_back(converted[1]); | 
| 253     auto weakCallback = jsEngine->StoreJsValues(values); | 277     auto weakCallback = jsEngine->StoreJsValues(values); | 
| 254     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 278     std::weak_ptr<JsEngine> weakJsEngine = jsEngine; | 
| 255     jsEngine->GetPlatform().GetFileSystem().Stat(converted[0].AsString(), | 279     auto fileName = converted[0].AsString(); | 
| 256       [weakJsEngine, weakCallback] | 280     jsEngine->GetPlatform().WithFileSystem( | 
| 257       (const IFileSystem::StatResult& statResult, const std::string& error) | 281       [weakJsEngine, weakCallback, fileName](IFileSystem& fileSystem) | 
| 258       { | 282       { | 
| 259         auto jsEngine = weakJsEngine.lock(); | 283         fileSystem.Stat(fileName, | 
| 260         if (!jsEngine) | 284            [weakJsEngine, weakCallback] | 
| 261           return; | 285            (const IFileSystem::StatResult& statResult, const std::string& error) | 
|  | 286            { | 
|  | 287              auto jsEngine = weakJsEngine.lock(); | 
|  | 288              if (!jsEngine) | 
|  | 289                return; | 
| 262 | 290 | 
| 263         const JsContext context(*jsEngine); | 291              const JsContext context(*jsEngine); | 
| 264         auto result = jsEngine->NewObject(); | 292              auto result = jsEngine->NewObject(); | 
| 265 | 293 | 
| 266         result.SetProperty("exists", statResult.exists); | 294              result.SetProperty("exists", statResult.exists); | 
| 267         result.SetProperty("lastModified", statResult.lastModified); | 295              result.SetProperty("lastModified", statResult.lastModified); | 
| 268         if (!error.empty()) | 296              if (!error.empty()) | 
| 269           result.SetProperty("error", error); | 297                result.SetProperty("error", error); | 
| 270 | 298 | 
| 271         JsValueList params; | 299              JsValueList params; | 
| 272         params.push_back(result); | 300              params.push_back(result); | 
| 273         jsEngine->TakeJsValues(weakCallback)[0].Call(params); | 301              jsEngine->TakeJsValues(weakCallback)[0].Call(params); | 
|  | 302            }); | 
| 274       }); | 303       }); | 
| 275   } | 304   } | 
| 276 } | 305 } | 
| 277 | 306 | 
| 278 | 307 | 
| 279 JsValue& FileSystemJsObject::Setup(JsEngine& jsEngine, JsValue& obj) | 308 JsValue& FileSystemJsObject::Setup(JsEngine& jsEngine, JsValue& obj) | 
| 280 { | 309 { | 
| 281   obj.SetProperty("read", jsEngine.NewCallback(::ReadCallback)); | 310   obj.SetProperty("read", jsEngine.NewCallback(::ReadCallback)); | 
| 282   obj.SetProperty("readFromFile", jsEngine.NewCallback(::ReadFromFileCallback)); | 311   obj.SetProperty("readFromFile", jsEngine.NewCallback(::ReadFromFileCallback)); | 
| 283   obj.SetProperty("write", jsEngine.NewCallback(::WriteCallback)); | 312   obj.SetProperty("write", jsEngine.NewCallback(::WriteCallback)); | 
| 284   obj.SetProperty("move", jsEngine.NewCallback(::MoveCallback)); | 313   obj.SetProperty("move", jsEngine.NewCallback(::MoveCallback)); | 
| 285   obj.SetProperty("remove", jsEngine.NewCallback(::RemoveCallback)); | 314   obj.SetProperty("remove", jsEngine.NewCallback(::RemoveCallback)); | 
| 286   obj.SetProperty("stat", jsEngine.NewCallback(::StatCallback)); | 315   obj.SetProperty("stat", jsEngine.NewCallback(::StatCallback)); | 
| 287   return obj; | 316   return obj; | 
| 288 } | 317 } | 
| OLD | NEW | 
|---|