| 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-2016 Eyeo GmbH | 3 * Copyright (C) 2006-2016 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 const JsContext context(jsEngine); | 89 const JsContext context(jsEngine); |
| 90 return UnwrapValue()->IsArray(); | 90 return UnwrapValue()->IsArray(); |
| 91 } | 91 } |
| 92 | 92 |
| 93 bool AdblockPlus::JsValue::IsFunction() const | 93 bool AdblockPlus::JsValue::IsFunction() const |
| 94 { | 94 { |
| 95 const JsContext context(jsEngine); | 95 const JsContext context(jsEngine); |
| 96 return UnwrapValue()->IsFunction(); | 96 return UnwrapValue()->IsFunction(); |
| 97 } | 97 } |
| 98 | 98 |
| 99 std::tuple<bool, std::string> ConvertString(v8::Local<v8::Value> v8value) |
| 100 { |
| 101 if (!(v8value->IsString() || v8value->IsStringObject())) |
| 102 { |
| 103 return std::make_tuple(false, std::string()); |
| 104 } |
| 105 return std::make_tuple(true, AdblockPlus::Utils::FromV8String(v8value)); |
| 106 } |
| 107 |
| 99 std::string AdblockPlus::JsValue::AsString() const | 108 std::string AdblockPlus::JsValue::AsString() const |
| 100 { | 109 { |
| 101 const JsContext context(jsEngine); | 110 const JsContext context(jsEngine); |
| 102 return Utils::FromV8String(UnwrapValue()); | 111 return Utils::FromV8String(UnwrapValue()); |
| 103 } | 112 } |
| 104 | 113 |
| 105 int64_t AdblockPlus::JsValue::AsInt() const | 114 int64_t AdblockPlus::JsValue::AsInt() const |
| 106 { | 115 { |
| 107 const JsContext context(jsEngine); | 116 const JsContext context(jsEngine); |
| 108 return UnwrapValue()->IntegerValue(); | 117 return UnwrapValue()->IntegerValue(); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 void AdblockPlus::JsValue::SetProperty(const std::string& name, v8::Handle<v8::V
alue> val) | 169 void AdblockPlus::JsValue::SetProperty(const std::string& name, v8::Handle<v8::V
alue> val) |
| 161 { | 170 { |
| 162 if (!IsObject()) | 171 if (!IsObject()) |
| 163 throw new std::runtime_error("Attempting to set property on a non-object"); | 172 throw new std::runtime_error("Attempting to set property on a non-object"); |
| 164 | 173 |
| 165 v8::Local<v8::String> property = Utils::ToV8String(jsEngine->GetIsolate(), nam
e); | 174 v8::Local<v8::String> property = Utils::ToV8String(jsEngine->GetIsolate(), nam
e); |
| 166 v8::Local<v8::Object> obj = v8::Local<v8::Object>::Cast(UnwrapValue()); | 175 v8::Local<v8::Object> obj = v8::Local<v8::Object>::Cast(UnwrapValue()); |
| 167 obj->Set(property, val); | 176 obj->Set(property, val); |
| 168 } | 177 } |
| 169 | 178 |
| 179 void SetPropertyOnV8Object(v8::Isolate* isolate, v8::Local<v8::Object>& target,
const std::string& propertyName, const v8::Handle<v8::Value>& propertyValue) |
| 180 { |
| 181 auto v8PropertyName = AdblockPlus::Utils::ToV8String(isolate, propertyName); |
| 182 target->Set(v8PropertyName, propertyValue); |
| 183 } |
| 184 |
| 170 v8::Local<v8::Value> AdblockPlus::JsValue::UnwrapValue() const | 185 v8::Local<v8::Value> AdblockPlus::JsValue::UnwrapValue() const |
| 171 { | 186 { |
| 172 return v8::Local<v8::Value>::New(jsEngine->GetIsolate(), *value); | 187 return v8::Local<v8::Value>::New(jsEngine->GetIsolate(), *value); |
| 173 } | 188 } |
| 174 | 189 |
| 175 void AdblockPlus::JsValue::SetProperty(const std::string& name, const std::strin
g& val) | 190 void AdblockPlus::JsValue::SetProperty(const std::string& name, const std::strin
g& val) |
| 176 { | 191 { |
| 177 const JsContext context(jsEngine); | 192 const JsContext context(jsEngine); |
| 178 SetProperty(name, Utils::ToV8String(jsEngine->GetIsolate(), val)); | 193 SetProperty(name, Utils::ToV8String(jsEngine->GetIsolate(), val)); |
| 179 } | 194 } |
| 180 | 195 |
| 196 void SetPropertyOnV8Object(v8::Isolate* isolate, v8::Local<v8::Object>& target,
const std::string& propertyName, const std::string& propertyValue) |
| 197 { |
| 198 SetPropertyOnV8Object(isolate, target, propertyName, AdblockPlus::Utils::ToV8S
tring(isolate, propertyValue)); |
| 199 } |
| 200 |
| 181 void AdblockPlus::JsValue::SetProperty(const std::string& name, int64_t val) | 201 void AdblockPlus::JsValue::SetProperty(const std::string& name, int64_t val) |
| 182 { | 202 { |
| 183 const JsContext context(jsEngine); | 203 const JsContext context(jsEngine); |
| 184 SetProperty(name, v8::Number::New(jsEngine->GetIsolate(), val)); | 204 SetProperty(name, v8::Number::New(jsEngine->GetIsolate(), val)); |
| 185 } | 205 } |
| 186 | 206 |
| 207 void SetPropertyOnV8Object(v8::Isolate* isolate, v8::Local<v8::Object>& target,
const std::string& propertyName, int64_t propertyValue) |
| 208 { |
| 209 SetPropertyOnV8Object(isolate, target, propertyName, v8::Number::New(isolate,
propertyValue)); |
| 210 } |
| 211 |
| 187 void AdblockPlus::JsValue::SetProperty(const std::string& name, const JsValuePtr
& val) | 212 void AdblockPlus::JsValue::SetProperty(const std::string& name, const JsValuePtr
& val) |
| 188 { | 213 { |
| 189 const JsContext context(jsEngine); | 214 const JsContext context(jsEngine); |
| 190 SetProperty(name, val->UnwrapValue()); | 215 SetProperty(name, val->UnwrapValue()); |
| 191 } | 216 } |
| 192 | 217 |
| 193 void AdblockPlus::JsValue::SetProperty(const std::string& name, bool val) | 218 void AdblockPlus::JsValue::SetProperty(const std::string& name, bool val) |
| 194 { | 219 { |
| 195 const JsContext context(jsEngine); | 220 const JsContext context(jsEngine); |
| 196 SetProperty(name, v8::Boolean::New(val)); | 221 SetProperty(name, v8::Boolean::New(val)); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 return JsValuePtr(new JsValue(jsEngine, result)); | 260 return JsValuePtr(new JsValue(jsEngine, result)); |
| 236 } | 261 } |
| 237 | 262 |
| 238 AdblockPlus::JsValuePtr AdblockPlus::JsValue::Call(const JsValue& arg) const | 263 AdblockPlus::JsValuePtr AdblockPlus::JsValue::Call(const JsValue& arg) const |
| 239 { | 264 { |
| 240 const JsContext context(jsEngine); | 265 const JsContext context(jsEngine); |
| 241 JsValueList params; | 266 JsValueList params; |
| 242 params.push_back(JsValuePtr(new JsValue(arg.jsEngine, arg.UnwrapValue()))); | 267 params.push_back(JsValuePtr(new JsValue(arg.jsEngine, arg.UnwrapValue()))); |
| 243 return Call(params); | 268 return Call(params); |
| 244 } | 269 } |
| OLD | NEW |