diff options
author | tsepez <tsepez@chromium.org> | 2016-07-14 12:07:48 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-07-14 12:07:48 -0700 |
commit | 88b6686f6e56a01dab0172f4b3129ab7ae0cd8d8 (patch) | |
tree | f468bcfd290387726af632c8a462b15cc4d1e241 | |
parent | 0089a685b6eb620ff24170cfddac502901fde495 (diff) | |
download | pdfium-88b6686f6e56a01dab0172f4b3129ab7ae0cd8d8.tar.xz |
Do not try to v8::Object::Clone() any objects
v8::Object::Clone() is deprecated, and gets us into trouble with
some corner cases. Create a new handle to the same object instead.
Remove FXJS_NewObject() and FXJS_NewObject2(), and replace with
direct assignments. Pass isolate to FXJS_NewNull() while were
at it, even though not needed, for consistency with all remaining
FXJS_New*() calls.
BUG=628106
R=jochen@chromium.org
Review-Url: https://codereview.chromium.org/2151023002
-rw-r--r-- | fpdfsdk/javascript/JS_Value.cpp | 7 | ||||
-rw-r--r-- | fxjs/fxjs_v8.cpp | 16 | ||||
-rw-r--r-- | fxjs/include/fxjs_v8.h | 6 |
3 files changed, 5 insertions, 24 deletions
diff --git a/fpdfsdk/javascript/JS_Value.cpp b/fpdfsdk/javascript/JS_Value.cpp index 53d6d59833..6bc45c555d 100644 --- a/fpdfsdk/javascript/JS_Value.cpp +++ b/fpdfsdk/javascript/JS_Value.cpp @@ -186,7 +186,7 @@ void CJS_Value::operator=(float fValue) { } void CJS_Value::operator=(v8::Local<v8::Object> pObj) { - m_pValue = FXJS_NewObject(m_pJSRuntime->GetIsolate(), pObj); + m_pValue = pObj; m_eType = VT_fxobject; } @@ -208,7 +208,7 @@ void CJS_Value::operator=(const FX_WCHAR* pWstr) { } void CJS_Value::SetNull() { - m_pValue = FXJS_NewNull(); + m_pValue = FXJS_NewNull(m_pJSRuntime->GetIsolate()); m_eType = VT_null; } @@ -217,8 +217,7 @@ void CJS_Value::operator=(const FX_CHAR* pStr) { } void CJS_Value::operator=(CJS_Array& array) { - m_pValue = - FXJS_NewObject2(m_pJSRuntime->GetIsolate(), (v8::Local<v8::Array>)array); + m_pValue = static_cast<v8::Local<v8::Array>>(array); m_eType = VT_object; } diff --git a/fxjs/fxjs_v8.cpp b/fxjs/fxjs_v8.cpp index c98de070ab..8595ac8a71 100644 --- a/fxjs/fxjs_v8.cpp +++ b/fxjs/fxjs_v8.cpp @@ -779,25 +779,11 @@ v8::Local<v8::Value> FXJS_NewBoolean(v8::Isolate* pIsolate, bool b) { return v8::Boolean::New(pIsolate, b); } -v8::Local<v8::Value> FXJS_NewObject(v8::Isolate* pIsolate, - v8::Local<v8::Object> pObj) { - if (pObj.IsEmpty()) - return v8::Local<v8::Value>(); - return pObj->Clone(); -} - -v8::Local<v8::Value> FXJS_NewObject2(v8::Isolate* pIsolate, - v8::Local<v8::Array> pObj) { - if (pObj.IsEmpty()) - return v8::Local<v8::Value>(); - return pObj->Clone(); -} - v8::Local<v8::Value> FXJS_NewString(v8::Isolate* pIsolate, const wchar_t* str) { return FXJS_WSToJSString(pIsolate, str); } -v8::Local<v8::Value> FXJS_NewNull() { +v8::Local<v8::Value> FXJS_NewNull(v8::Isolate* pIsolate) { return v8::Local<v8::Value>(); } diff --git a/fxjs/include/fxjs_v8.h b/fxjs/include/fxjs_v8.h index 465feef5e8..c8cd65be2f 100644 --- a/fxjs/include/fxjs_v8.h +++ b/fxjs/include/fxjs_v8.h @@ -263,17 +263,13 @@ unsigned FXJS_PutArrayElement(v8::Isolate* pIsolate, unsigned index, v8::Local<v8::Value> pValue); +v8::Local<v8::Value> FXJS_NewNull(v8::Isolate* pIsolate); v8::Local<v8::Array> FXJS_NewArray(v8::Isolate* pIsolate); v8::Local<v8::Value> FXJS_NewNumber(v8::Isolate* pIsolate, int number); v8::Local<v8::Value> FXJS_NewNumber(v8::Isolate* pIsolate, double number); v8::Local<v8::Value> FXJS_NewNumber(v8::Isolate* pIsolate, float number); v8::Local<v8::Value> FXJS_NewBoolean(v8::Isolate* pIsolate, bool b); -v8::Local<v8::Value> FXJS_NewObject(v8::Isolate* pIsolate, - v8::Local<v8::Object> pObj); -v8::Local<v8::Value> FXJS_NewObject2(v8::Isolate* pIsolate, - v8::Local<v8::Array> pObj); v8::Local<v8::Value> FXJS_NewString(v8::Isolate* pIsolate, const wchar_t* str); -v8::Local<v8::Value> FXJS_NewNull(); v8::Local<v8::Value> FXJS_NewDate(v8::Isolate* pIsolate, double d); int FXJS_ToInt32(v8::Isolate* pIsolate, v8::Local<v8::Value> pValue); |