summaryrefslogtreecommitdiff
path: root/fxjs/fxjs_v8.cpp
diff options
context:
space:
mode:
authortsepez <tsepez@chromium.org>2017-01-18 14:38:18 -0800
committerCommit bot <commit-bot@chromium.org>2017-01-18 14:38:18 -0800
commite6cf01356e3336dc4f0717a391d9067693a418c1 (patch)
treea8d8c2cec202be753b3d558e320cf981c6983bb8 /fxjs/fxjs_v8.cpp
parent85c532b35b53836bebfdb8f8832905d5f313cf47 (diff)
downloadpdfium-e6cf01356e3336dc4f0717a391d9067693a418c1.tar.xz
Tidy FXJS_V8, backfill tests.chromium/2986
Move checks performed as part of JS_Value's object and array handling back into FXJS, to ease removal of JS_Value in the future. Remove some convenience routines in FXJS for objects, to shrink API to be covered during testing. Change some naming (number => double, string => widestring) to make it clearer when there is a C++ type involved. BUG= Review-Url: https://codereview.chromium.org/2637503002
Diffstat (limited to 'fxjs/fxjs_v8.cpp')
-rw-r--r--fxjs/fxjs_v8.cpp90
1 files changed, 16 insertions, 74 deletions
diff --git a/fxjs/fxjs_v8.cpp b/fxjs/fxjs_v8.cpp
index 5ce8c47569..c96cc1f0e0 100644
--- a/fxjs/fxjs_v8.cpp
+++ b/fxjs/fxjs_v8.cpp
@@ -596,79 +596,21 @@ std::vector<CFX_WideString> CFXJS_Engine::GetObjectPropertyNames(
std::vector<CFX_WideString> result;
for (uint32_t i = 0; i < val->Length(); ++i) {
- result.push_back(ToString(val->Get(context, i).ToLocalChecked()));
+ result.push_back(ToWideString(val->Get(context, i).ToLocalChecked()));
}
return result;
}
-void CFXJS_Engine::PutObjectString(v8::Local<v8::Object> pObj,
- const CFX_WideString& wsPropertyName,
- const CFX_WideString& wsValue) {
- if (pObj.IsEmpty())
- return;
- pObj->Set(m_isolate->GetCurrentContext(), WSToJSString(wsPropertyName),
- WSToJSString(wsValue))
- .FromJust();
-}
-
-void CFXJS_Engine::PutObjectNumber(v8::Local<v8::Object> pObj,
- const CFX_WideString& wsPropertyName,
- int nValue) {
- if (pObj.IsEmpty())
- return;
- pObj->Set(m_isolate->GetCurrentContext(), WSToJSString(wsPropertyName),
- v8::Int32::New(m_isolate, nValue))
- .FromJust();
-}
-
-void CFXJS_Engine::PutObjectNumber(v8::Local<v8::Object> pObj,
- const CFX_WideString& wsPropertyName,
- float fValue) {
- if (pObj.IsEmpty())
- return;
- pObj->Set(m_isolate->GetCurrentContext(), WSToJSString(wsPropertyName),
- v8::Number::New(m_isolate, (double)fValue))
- .FromJust();
-}
-
-void CFXJS_Engine::PutObjectNumber(v8::Local<v8::Object> pObj,
- const CFX_WideString& wsPropertyName,
- double dValue) {
- if (pObj.IsEmpty())
- return;
- pObj->Set(m_isolate->GetCurrentContext(), WSToJSString(wsPropertyName),
- v8::Number::New(m_isolate, (double)dValue))
- .FromJust();
-}
-
-void CFXJS_Engine::PutObjectBoolean(v8::Local<v8::Object> pObj,
- const CFX_WideString& wsPropertyName,
- bool bValue) {
- if (pObj.IsEmpty())
- return;
- pObj->Set(m_isolate->GetCurrentContext(), WSToJSString(wsPropertyName),
- v8::Boolean::New(m_isolate, bValue))
- .FromJust();
-}
-
-void CFXJS_Engine::PutObjectObject(v8::Local<v8::Object> pObj,
- const CFX_WideString& wsPropertyName,
- v8::Local<v8::Object> pPut) {
+void CFXJS_Engine::PutObjectProperty(v8::Local<v8::Object> pObj,
+ const CFX_WideString& wsPropertyName,
+ v8::Local<v8::Value> pPut) {
if (pObj.IsEmpty())
return;
pObj->Set(m_isolate->GetCurrentContext(), WSToJSString(wsPropertyName), pPut)
.FromJust();
}
-void CFXJS_Engine::PutObjectNull(v8::Local<v8::Object> pObj,
- const CFX_WideString& wsPropertyName) {
- if (pObj.IsEmpty())
- return;
- pObj->Set(m_isolate->GetCurrentContext(), WSToJSString(wsPropertyName),
- v8::Local<v8::Object>())
- .FromJust();
-}
v8::Local<v8::Array> CFXJS_Engine::NewArray() {
return v8::Array::New(m_isolate);
@@ -724,8 +666,8 @@ v8::Local<v8::Value> CFXJS_Engine::NewBoolean(bool b) {
return v8::Boolean::New(m_isolate, b);
}
-v8::Local<v8::Value> CFXJS_Engine::NewString(const wchar_t* str) {
- return WSToJSString(str);
+v8::Local<v8::Value> CFXJS_Engine::NewString(const CFX_WideString& str) {
+ return WSToJSString(str.c_str());
}
v8::Local<v8::Value> CFXJS_Engine::NewNull() {
@@ -752,30 +694,30 @@ bool CFXJS_Engine::ToBoolean(v8::Local<v8::Value> pValue) {
return pValue->ToBoolean(context).ToLocalChecked()->Value();
}
-double CFXJS_Engine::ToNumber(v8::Local<v8::Value> pValue) {
+double CFXJS_Engine::ToDouble(v8::Local<v8::Value> pValue) {
if (pValue.IsEmpty())
return 0.0;
v8::Local<v8::Context> context = m_isolate->GetCurrentContext();
return pValue->ToNumber(context).ToLocalChecked()->Value();
}
-v8::Local<v8::Object> CFXJS_Engine::ToObject(v8::Local<v8::Value> pValue) {
+CFX_WideString CFXJS_Engine::ToWideString(v8::Local<v8::Value> pValue) {
if (pValue.IsEmpty())
- return v8::Local<v8::Object>();
+ return CFX_WideString();
v8::Local<v8::Context> context = m_isolate->GetCurrentContext();
- return pValue->ToObject(context).ToLocalChecked();
+ v8::String::Utf8Value s(pValue->ToString(context).ToLocalChecked());
+ return CFX_WideString::FromUTF8(CFX_ByteStringC(*s, s.length()));
}
-CFX_WideString CFXJS_Engine::ToString(v8::Local<v8::Value> pValue) {
- if (pValue.IsEmpty())
- return L"";
+v8::Local<v8::Object> CFXJS_Engine::ToObject(v8::Local<v8::Value> pValue) {
+ if (pValue.IsEmpty() || !pValue->IsObject())
+ return v8::Local<v8::Object>();
v8::Local<v8::Context> context = m_isolate->GetCurrentContext();
- v8::String::Utf8Value s(pValue->ToString(context).ToLocalChecked());
- return CFX_WideString::FromUTF8(CFX_ByteStringC(*s, s.length()));
+ return pValue->ToObject(context).ToLocalChecked();
}
v8::Local<v8::Array> CFXJS_Engine::ToArray(v8::Local<v8::Value> pValue) {
- if (pValue.IsEmpty())
+ if (pValue.IsEmpty() || !pValue->IsArray())
return v8::Local<v8::Array>();
v8::Local<v8::Context> context = m_isolate->GetCurrentContext();
return v8::Local<v8::Array>::Cast(pValue->ToObject(context).ToLocalChecked());