| OLD | NEW |
| 1 #include <AdblockPlus.h> | 1 #include <AdblockPlus.h> |
| 2 | 2 |
| 3 namespace | 3 namespace |
| 4 { | 4 { |
| 5 std::string fromV8String(v8::Handle<v8::Value> value) | 5 std::string fromV8String(v8::Handle<v8::Value> value) |
| 6 { | 6 { |
| 7 v8::String::Utf8Value stringValue(value); | 7 v8::String::Utf8Value stringValue(value); |
| 8 if (stringValue.length()) | 8 if (stringValue.length()) |
| 9 return std::string(*stringValue, stringValue.length()); | 9 return std::string(*stringValue, stringValue.length()); |
| 10 else | 10 else |
| 11 return std::string(); | 11 return std::string(); |
| 12 } | 12 } |
| 13 | 13 |
| 14 v8::Local<v8::String> toV8String(const std::string& str) | 14 v8::Local<v8::String> toV8String(const std::string& str) |
| 15 { | 15 { |
| 16 return v8::String::New(str.c_str(), str.length()); | 16 return v8::String::New(str.c_str(), str.length()); |
| 17 } | 17 } |
| 18 } | 18 } |
| 19 | 19 |
| 20 AdblockPlus::JsValue::JsValue(AdblockPlus::JsEngine& jsEngine, | 20 AdblockPlus::JsValue::JsValue(AdblockPlus::JsEnginePtr jsEngine, |
| 21 v8::Handle<v8::Value> value) | 21 v8::Handle<v8::Value> value) |
| 22 : jsEngine(jsEngine), | 22 : jsEngine(jsEngine), |
| 23 value(v8::Persistent<v8::Value>::New(jsEngine.isolate, value)) | 23 value(v8::Persistent<v8::Value>::New(jsEngine->isolate, value)) |
| 24 { | 24 { |
| 25 } | 25 } |
| 26 | 26 |
| 27 AdblockPlus::JsValue::~JsValue() | 27 AdblockPlus::JsValue::~JsValue() |
| 28 { | 28 { |
| 29 value.Dispose(jsEngine.isolate); | 29 value.Dispose(jsEngine->isolate); |
| 30 } | 30 } |
| 31 | 31 |
| 32 bool AdblockPlus::JsValue::IsUndefined() const | 32 bool AdblockPlus::JsValue::IsUndefined() const |
| 33 { | 33 { |
| 34 const JsEngine::Context context(jsEngine); | 34 const JsEngine::Context context(jsEngine); |
| 35 return value->IsUndefined(); | 35 return value->IsUndefined(); |
| 36 } | 36 } |
| 37 | 37 |
| 38 bool AdblockPlus::JsValue::IsNull() const | 38 bool AdblockPlus::JsValue::IsNull() const |
| 39 { | 39 { |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 AdblockPlus::JsValuePtr AdblockPlus::JsValue::Call( | 185 AdblockPlus::JsValuePtr AdblockPlus::JsValue::Call( |
| 186 const JsValueList& params, | 186 const JsValueList& params, |
| 187 AdblockPlus::JsValuePtr thisPtr) const | 187 AdblockPlus::JsValuePtr thisPtr) const |
| 188 { | 188 { |
| 189 if (!IsFunction()) | 189 if (!IsFunction()) |
| 190 throw new std::runtime_error("Attempting to call a non-function"); | 190 throw new std::runtime_error("Attempting to call a non-function"); |
| 191 | 191 |
| 192 const JsEngine::Context context(jsEngine); | 192 const JsEngine::Context context(jsEngine); |
| 193 | 193 |
| 194 if (!thisPtr) | 194 if (!thisPtr) |
| 195 thisPtr = JsValuePtr(new JsValue(jsEngine, jsEngine.context->Global())); | 195 thisPtr = JsValuePtr(new JsValue(jsEngine, jsEngine->context->Global())); |
| 196 if (!thisPtr->IsObject()) | 196 if (!thisPtr->IsObject()) |
| 197 throw new std::runtime_error("`this` pointer has to be an object"); | 197 throw new std::runtime_error("`this` pointer has to be an object"); |
| 198 v8::Persistent<v8::Object> thisObj = v8::Persistent<v8::Object>::Cast(thisPtr-
>value); | 198 v8::Persistent<v8::Object> thisObj = v8::Persistent<v8::Object>::Cast(thisPtr-
>value); |
| 199 | 199 |
| 200 size_t argc = params.size(); | 200 size_t argc = params.size(); |
| 201 v8::Handle<v8::Value>* argv = new v8::Handle<v8::Value>[argc]; | 201 v8::Handle<v8::Value>* argv = new v8::Handle<v8::Value>[argc]; |
| 202 for (size_t i = 0; i < argc; ++i) | 202 for (size_t i = 0; i < argc; ++i) |
| 203 argv[i] = params[i]->value; | 203 argv[i] = params[i]->value; |
| 204 | 204 |
| 205 const v8::TryCatch tryCatch; | 205 const v8::TryCatch tryCatch; |
| 206 v8::Persistent<v8::Function> func = v8::Persistent<v8::Function>::Cast(value); | 206 v8::Persistent<v8::Function> func = v8::Persistent<v8::Function>::Cast(value); |
| 207 v8::Local<v8::Value> result = func->Call(thisObj, argc, argv); | 207 v8::Local<v8::Value> result = func->Call(thisObj, argc, argv); |
| 208 delete argv; | 208 delete argv; |
| 209 | 209 |
| 210 if (tryCatch.HasCaught()) | 210 if (tryCatch.HasCaught()) |
| 211 throw AdblockPlus::JsError(tryCatch.Exception(), tryCatch.Message()); | 211 throw AdblockPlus::JsError(tryCatch.Exception(), tryCatch.Message()); |
| 212 | 212 |
| 213 return JsValuePtr(new JsValue(jsEngine, result)); | 213 return JsValuePtr(new JsValue(jsEngine, result)); |
| 214 } | 214 } |
| OLD | NEW |