Break circular dependence between {Byte,Wide}String
Make ByteString willfully ignorant that WideString exists, doing
all the conversions in WideString. It was nearly this way except
for one method, UTF8Decode, which just called into widestring
anyways.
Change-Id: Ied8077d358cac600dcc1788d47eac3ed4e380029
Reviewed-on: https://pdfium-review.googlesource.com/c/45790
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fxjs/cjs_global.cpp b/fxjs/cjs_global.cpp
index 35619c0..6589f70 100644
--- a/fxjs/cjs_global.cpp
+++ b/fxjs/cjs_global.cpp
@@ -326,15 +326,16 @@
SetGlobalVariables(pData->data.sKey, CFX_Value::DataType::NUMBER,
pData->data.dData, false, "",
v8::Local<v8::Object>(), pData->bPersistent == 1);
- pRuntime->PutObjectProperty(ToV8Object(), pData->data.sKey.UTF8Decode(),
- pRuntime->NewNumber(pData->data.dData));
+ pRuntime->PutObjectProperty(
+ ToV8Object(), WideString::FromUTF8(pData->data.sKey.AsStringView()),
+ pRuntime->NewNumber(pData->data.dData));
break;
case CFX_Value::DataType::BOOLEAN:
SetGlobalVariables(pData->data.sKey, CFX_Value::DataType::BOOLEAN, 0,
pData->data.bData == 1, "", v8::Local<v8::Object>(),
pData->bPersistent == 1);
pRuntime->PutObjectProperty(
- ToV8Object(), pData->data.sKey.UTF8Decode(),
+ ToV8Object(), WideString::FromUTF8(pData->data.sKey.AsStringView()),
pRuntime->NewBoolean(pData->data.bData == 1));
break;
case CFX_Value::DataType::STRING:
@@ -342,8 +343,10 @@
false, pData->data.sData, v8::Local<v8::Object>(),
pData->bPersistent == 1);
pRuntime->PutObjectProperty(
- ToV8Object(), pData->data.sKey.UTF8Decode(),
- pRuntime->NewString(pData->data.sData.UTF8Decode().AsStringView()));
+ ToV8Object(), WideString::FromUTF8(pData->data.sKey.AsStringView()),
+ pRuntime->NewString(
+ WideString::FromUTF8(pData->data.sData.AsStringView())
+ .AsStringView()));
break;
case CFX_Value::DataType::OBJECT: {
v8::Local<v8::Object> pObj = pRuntime->NewObject();
@@ -351,16 +354,18 @@
PutObjectProperty(pObj, &pData->data);
SetGlobalVariables(pData->data.sKey, CFX_Value::DataType::OBJECT, 0,
false, "", pObj, pData->bPersistent == 1);
- pRuntime->PutObjectProperty(ToV8Object(),
- pData->data.sKey.UTF8Decode(), pObj);
+ pRuntime->PutObjectProperty(
+ ToV8Object(),
+ WideString::FromUTF8(pData->data.sKey.AsStringView()), pObj);
}
} break;
case CFX_Value::DataType::NULLOBJ:
SetGlobalVariables(pData->data.sKey, CFX_Value::DataType::NULLOBJ, 0,
false, "", v8::Local<v8::Object>(),
pData->bPersistent == 1);
- pRuntime->PutObjectProperty(ToV8Object(), pData->data.sKey.UTF8Decode(),
- pRuntime->NewNull());
+ pRuntime->PutObjectProperty(
+ ToV8Object(), WideString::FromUTF8(pData->data.sKey.AsStringView()),
+ pRuntime->NewNull());
break;
}
}
@@ -462,29 +467,35 @@
CFX_KeyValue* pObjData = pData->objData.GetAt(i);
switch (pObjData->nType) {
case CFX_Value::DataType::NUMBER:
- pRuntime->PutObjectProperty(pObj, pObjData->sKey.UTF8Decode(),
- pRuntime->NewNumber(pObjData->dData));
+ pRuntime->PutObjectProperty(
+ pObj, WideString::FromUTF8(pObjData->sKey.AsStringView()),
+ pRuntime->NewNumber(pObjData->dData));
break;
case CFX_Value::DataType::BOOLEAN:
- pRuntime->PutObjectProperty(pObj, pObjData->sKey.UTF8Decode(),
- pRuntime->NewBoolean(pObjData->bData == 1));
+ pRuntime->PutObjectProperty(
+ pObj, WideString::FromUTF8(pObjData->sKey.AsStringView()),
+ pRuntime->NewBoolean(pObjData->bData == 1));
break;
case CFX_Value::DataType::STRING:
pRuntime->PutObjectProperty(
- pObj, pObjData->sKey.UTF8Decode(),
- pRuntime->NewString(pObjData->sData.UTF8Decode().AsStringView()));
+ pObj, WideString::FromUTF8(pObjData->sKey.AsStringView()),
+ pRuntime->NewString(
+ WideString::FromUTF8(pObjData->sData.AsStringView())
+ .AsStringView()));
break;
case CFX_Value::DataType::OBJECT: {
v8::Local<v8::Object> pNewObj = pRuntime->NewObject();
if (!pNewObj.IsEmpty()) {
PutObjectProperty(pNewObj, pObjData);
- pRuntime->PutObjectProperty(pObj, pObjData->sKey.UTF8Decode(),
- pNewObj);
+ pRuntime->PutObjectProperty(
+ pObj, WideString::FromUTF8(pObjData->sKey.AsStringView()),
+ pNewObj);
}
} break;
case CFX_Value::DataType::NULLOBJ:
- pRuntime->PutObjectProperty(pObj, pObjData->sKey.UTF8Decode(),
- pRuntime->NewNull());
+ pRuntime->PutObjectProperty(
+ pObj, WideString::FromUTF8(pObjData->sKey.AsStringView()),
+ pRuntime->NewNull());
break;
}
}