| Left: | ||
| Right: | 
| LEFT | RIGHT | 
|---|---|
| 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 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 131 { | 131 { | 
| 132 const JsContext context(*jsEngine); | 132 const JsContext context(*jsEngine); | 
| 133 return Utils::StringBufferFromV8String(jsEngine->GetIsolate(), UnwrapValue()); | 133 return Utils::StringBufferFromV8String(jsEngine->GetIsolate(), UnwrapValue()); | 
| 134 } | 134 } | 
| 135 | 135 | 
| 136 int64_t AdblockPlus::JsValue::AsInt() const | 136 int64_t AdblockPlus::JsValue::AsInt() const | 
| 137 { | 137 { | 
| 138 const JsContext context(*jsEngine); | 138 const JsContext context(*jsEngine); | 
| 139 auto currentContext = jsEngine->GetIsolate()->GetCurrentContext(); | 139 auto currentContext = jsEngine->GetIsolate()->GetCurrentContext(); | 
| 140 auto value = UnwrapValue()->IntegerValue(currentContext); | 140 auto value = UnwrapValue()->IntegerValue(currentContext); | 
| 141 return value.IsJust() ? value.FromJust() : 0; | 141 return CHECKED_TO_VALUE(std::move(value)); | 
| 
 
sergei
2018/08/07 13:14:52
What about using of CheckedToValue here?
Returning
 
hub
2018/08/07 14:36:48
I wanted to avoid throwing an exception. But it se
 
 | 
 
sergei
2018/08/07 16:47:35
I find the usage of std::move good here too, for t
 
 | 
| 142 } | 142 } | 
| 143 | 143 | 
| 144 bool AdblockPlus::JsValue::AsBool() const | 144 bool AdblockPlus::JsValue::AsBool() const | 
| 145 { | 145 { | 
| 146 const JsContext context(*jsEngine); | 146 const JsContext context(*jsEngine); | 
| 147 auto currentContext = jsEngine->GetIsolate()->GetCurrentContext(); | 147 auto currentContext = jsEngine->GetIsolate()->GetCurrentContext(); | 
| 148 auto value = UnwrapValue()->BooleanValue(currentContext); | 148 auto value = UnwrapValue()->BooleanValue(currentContext); | 
| 149 return value.IsJust() ? value.FromJust() : false; | 149 return CHECKED_TO_VALUE(std::move(value)); | 
| 150 } | 150 } | 
| 151 | 151 | 
| 152 AdblockPlus::JsValueList AdblockPlus::JsValue::AsList() const | 152 AdblockPlus::JsValueList AdblockPlus::JsValue::AsList() const | 
| 153 { | 153 { | 
| 154 if (!IsArray()) | 154 if (!IsArray()) | 
| 155 throw std::runtime_error("Cannot convert a non-array to list"); | 155 throw std::runtime_error("Cannot convert a non-array to list"); | 
| 156 | 156 | 
| 157 const JsContext context(*jsEngine); | 157 const JsContext context(*jsEngine); | 
| 158 auto isolate = jsEngine->GetIsolate(); | 158 auto isolate = jsEngine->GetIsolate(); | 
| 159 auto currentContext = isolate->GetCurrentContext(); | 159 auto currentContext = isolate->GetCurrentContext(); | 
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 307 auto isolate = jsEngine->GetIsolate(); | 307 auto isolate = jsEngine->GetIsolate(); | 
| 308 | 308 | 
| 309 const v8::TryCatch tryCatch(isolate); | 309 const v8::TryCatch tryCatch(isolate); | 
| 310 v8::Local<v8::Function> func = v8::Local<v8::Function>::Cast(UnwrapValue()); | 310 v8::Local<v8::Function> func = v8::Local<v8::Function>::Cast(UnwrapValue()); | 
| 311 auto result = CHECKED_TO_LOCAL_WITH_TRY_CATCH( | 311 auto result = CHECKED_TO_LOCAL_WITH_TRY_CATCH( | 
| 312 isolate, func->Call(isolate->GetCurrentContext(), | 312 isolate, func->Call(isolate->GetCurrentContext(), | 
| 313 thisObj, args.size(), args.size() ? &args[0] : nullptr), tryCatch); | 313 thisObj, args.size(), args.size() ? &args[0] : nullptr), tryCatch); | 
| 314 | 314 | 
| 315 return JsValue(jsEngine, result); | 315 return JsValue(jsEngine, result); | 
| 316 } | 316 } | 
| LEFT | RIGHT |