| LEFT | RIGHT |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2014 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 |
| 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 * |
| (...skipping 19 matching lines...) Expand all Loading... |
| 33 : jsEngine(src.jsEngine), | 33 : jsEngine(src.jsEngine), |
| 34 value(std::move(src.value)) | 34 value(std::move(src.value)) |
| 35 { | 35 { |
| 36 } | 36 } |
| 37 | 37 |
| 38 AdblockPlus::JsValue::~JsValue() | 38 AdblockPlus::JsValue::~JsValue() |
| 39 { | 39 { |
| 40 if (value) | 40 if (value) |
| 41 { | 41 { |
| 42 value->Dispose(); | 42 value->Dispose(); |
| 43 value.reset(); |
| 43 } | 44 } |
| 44 } | 45 } |
| 45 | 46 |
| 46 bool AdblockPlus::JsValue::IsUndefined() const | 47 bool AdblockPlus::JsValue::IsUndefined() const |
| 47 { | 48 { |
| 48 const JsContext context(jsEngine); | 49 const JsContext context(jsEngine); |
| 49 return UnwrapValue()->IsUndefined(); | 50 return UnwrapValue()->IsUndefined(); |
| 50 } | 51 } |
| 51 | 52 |
| 52 bool AdblockPlus::JsValue::IsNull() const | 53 bool AdblockPlus::JsValue::IsNull() const |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 return result; | 144 return result; |
| 144 } | 145 } |
| 145 | 146 |
| 146 | 147 |
| 147 AdblockPlus::JsValuePtr AdblockPlus::JsValue::GetProperty(const std::string& nam
e) const | 148 AdblockPlus::JsValuePtr AdblockPlus::JsValue::GetProperty(const std::string& nam
e) const |
| 148 { | 149 { |
| 149 if (!IsObject()) | 150 if (!IsObject()) |
| 150 throw new std::runtime_error("Attempting to get property of a non-object"); | 151 throw new std::runtime_error("Attempting to get property of a non-object"); |
| 151 | 152 |
| 152 const JsContext context(jsEngine); | 153 const JsContext context(jsEngine); |
| 153 v8::Local<v8::String> property = Utils::ToV8String(name); | 154 v8::Local<v8::String> property = Utils::ToV8String(jsEngine->isolate, name); |
| 154 v8::Local<v8::Object> obj = v8::Local<v8::Object>::Cast(UnwrapValue()); | 155 v8::Local<v8::Object> obj = v8::Local<v8::Object>::Cast(UnwrapValue()); |
| 155 return JsValuePtr(new JsValue(jsEngine, obj->Get(property))); | 156 return JsValuePtr(new JsValue(jsEngine, obj->Get(property))); |
| 156 } | 157 } |
| 157 | 158 |
| 158 void AdblockPlus::JsValue::SetProperty(const std::string& name, v8::Handle<v8::V
alue> val) | 159 void AdblockPlus::JsValue::SetProperty(const std::string& name, v8::Handle<v8::V
alue> val) |
| 159 { | 160 { |
| 160 if (!IsObject()) | 161 if (!IsObject()) |
| 161 throw new std::runtime_error("Attempting to set property on a non-object"); | 162 throw new std::runtime_error("Attempting to set property on a non-object"); |
| 162 | 163 |
| 163 v8::Local<v8::String> property = Utils::ToV8String(name); | 164 v8::Local<v8::String> property = Utils::ToV8String(jsEngine->isolate, name); |
| 164 v8::Local<v8::Object> obj = v8::Local<v8::Object>::Cast(UnwrapValue()); | 165 v8::Local<v8::Object> obj = v8::Local<v8::Object>::Cast(UnwrapValue()); |
| 165 obj->Set(property, val); | 166 obj->Set(property, val); |
| 166 } | 167 } |
| 167 | 168 |
| 168 v8::Local<v8::Value> AdblockPlus::JsValue::UnwrapValue() const | 169 v8::Local<v8::Value> AdblockPlus::JsValue::UnwrapValue() const |
| 169 { | 170 { |
| 170 return v8::Local<v8::Value>::New(jsEngine->isolate, *value); | 171 return v8::Local<v8::Value>::New(jsEngine->isolate, *value); |
| 171 } | 172 } |
| 172 | 173 |
| 173 void AdblockPlus::JsValue::SetProperty(const std::string& name, const std::strin
g& val) | 174 void AdblockPlus::JsValue::SetProperty(const std::string& name, const std::strin
g& val) |
| 174 { | 175 { |
| 175 const JsContext context(jsEngine); | 176 const JsContext context(jsEngine); |
| 176 SetProperty(name, Utils::ToV8String(val)); | 177 SetProperty(name, Utils::ToV8String(jsEngine->isolate, val)); |
| 177 } | 178 } |
| 178 | 179 |
| 179 void AdblockPlus::JsValue::SetProperty(const std::string& name, int64_t val) | 180 void AdblockPlus::JsValue::SetProperty(const std::string& name, int64_t val) |
| 180 { | 181 { |
| 181 const JsContext context(jsEngine); | 182 const JsContext context(jsEngine); |
| 182 SetProperty(name, v8::Number::New(val)); | 183 SetProperty(name, v8::Number::New(jsEngine->isolate, val)); |
| 183 } | 184 } |
| 184 | 185 |
| 185 void AdblockPlus::JsValue::SetProperty(const std::string& name, const JsValuePtr
& val) | 186 void AdblockPlus::JsValue::SetProperty(const std::string& name, const JsValuePtr
& val) |
| 186 { | 187 { |
| 187 const JsContext context(jsEngine); | 188 const JsContext context(jsEngine); |
| 188 SetProperty(name, val->UnwrapValue()); | 189 SetProperty(name, val->UnwrapValue()); |
| 189 } | 190 } |
| 190 | 191 |
| 191 void AdblockPlus::JsValue::SetProperty(const std::string& name, bool val) | 192 void AdblockPlus::JsValue::SetProperty(const std::string& name, bool val) |
| 192 { | 193 { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 227 const v8::TryCatch tryCatch; | 228 const v8::TryCatch tryCatch; |
| 228 v8::Local<v8::Function> func = v8::Local<v8::Function>::Cast(UnwrapValue()); | 229 v8::Local<v8::Function> func = v8::Local<v8::Function>::Cast(UnwrapValue()); |
| 229 v8::Local<v8::Value> result = func->Call(thisObj, argv.size(), | 230 v8::Local<v8::Value> result = func->Call(thisObj, argv.size(), |
| 230 argv.size() ? &argv.front() : 0); | 231 argv.size() ? &argv.front() : 0); |
| 231 | 232 |
| 232 if (tryCatch.HasCaught()) | 233 if (tryCatch.HasCaught()) |
| 233 throw JsError(tryCatch.Exception(), tryCatch.Message()); | 234 throw JsError(tryCatch.Exception(), tryCatch.Message()); |
| 234 | 235 |
| 235 return JsValuePtr(new JsValue(jsEngine, result)); | 236 return JsValuePtr(new JsValue(jsEngine, result)); |
| 236 } | 237 } |
| 238 |
| 239 AdblockPlus::JsValuePtr AdblockPlus::JsValue::Call(const JsValue& arg) const |
| 240 { |
| 241 const JsContext context(jsEngine); |
| 242 JsValueList params; |
| 243 params.push_back(JsValuePtr(new JsValue(arg.jsEngine, arg.UnwrapValue()))); |
| 244 return Call(params); |
| 245 } |
| LEFT | RIGHT |