summaryrefslogtreecommitdiff
path: root/fpdfsdk/javascript/Document.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/javascript/Document.cpp')
-rw-r--r--fpdfsdk/javascript/Document.cpp44
1 files changed, 18 insertions, 26 deletions
diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
index 6928a061a2..a45b8b9ea7 100644
--- a/fpdfsdk/javascript/Document.cpp
+++ b/fpdfsdk/javascript/Document.cpp
@@ -6,6 +6,7 @@
#include "fpdfsdk/javascript/Document.h"
+#include <algorithm>
#include <utility>
#include <vector>
@@ -1215,14 +1216,12 @@ bool Document::addIcon(CJS_Runtime* pRuntime,
return false;
}
- CJS_EmbedObj* pEmbedObj = params[1].ToCJSObject(pRuntime)->GetEmbedObject();
- if (!pEmbedObj) {
+ if (!params[1].ToCJSObject(pRuntime)->GetEmbedObject()) {
sError = JSGetStringFromID(IDS_STRING_JSTYPEERROR);
return false;
}
- m_Icons.push_back(pdfium::MakeUnique<IconElement>(
- swIconName, static_cast<Icon*>(pEmbedObj)));
+ m_IconNames.push_back(swIconName);
return true;
}
@@ -1233,14 +1232,14 @@ bool Document::icons(CJS_Runtime* pRuntime,
sError = JSGetStringFromID(IDS_STRING_JSREADONLY);
return false;
}
- if (m_Icons.empty()) {
+ if (m_IconNames.empty()) {
vp.GetJSValue()->SetNull(pRuntime);
return true;
}
CJS_Array Icons;
int i = 0;
- for (const auto& pIconElement : m_Icons) {
+ for (const auto& name : m_IconNames) {
v8::Local<v8::Object> pObj =
pRuntime->NewFxDynamicObj(CJS_Icon::g_nObjDefnID);
if (pObj.IsEmpty())
@@ -1249,7 +1248,7 @@ bool Document::icons(CJS_Runtime* pRuntime,
CJS_Icon* pJS_Icon =
static_cast<CJS_Icon*>(pRuntime->GetObjectPrivate(pObj));
Icon* pIcon = static_cast<Icon*>(pJS_Icon->GetEmbedObject());
- pIcon->SetIconName(pIconElement->IconName);
+ pIcon->SetIconName(name);
Icons.SetElement(pRuntime, i++, CJS_Value(pRuntime, pJS_Icon));
}
@@ -1266,28 +1265,21 @@ bool Document::getIcon(CJS_Runtime* pRuntime,
return false;
}
- if (m_Icons.empty())
- return false;
-
CFX_WideString swIconName = params[0].ToCFXWideString(pRuntime);
- for (const auto& pIconElement : m_Icons) {
- if (pIconElement->IconName != swIconName)
- continue;
-
- v8::Local<v8::Object> pObj =
- pRuntime->NewFxDynamicObj(CJS_Icon::g_nObjDefnID);
- if (pObj.IsEmpty())
- return false;
+ auto it = std::find(m_IconNames.begin(), m_IconNames.end(), swIconName);
+ if (it == m_IconNames.end())
+ return false;
- CJS_Icon* pJS_Icon =
- static_cast<CJS_Icon*>(pRuntime->GetObjectPrivate(pObj));
- Icon* pIcon = static_cast<Icon*>(pJS_Icon->GetEmbedObject());
- pIcon->SetIconName(swIconName);
- vRet = CJS_Value(pRuntime, pJS_Icon);
- return true;
- }
+ v8::Local<v8::Object> pObj =
+ pRuntime->NewFxDynamicObj(CJS_Icon::g_nObjDefnID);
+ if (pObj.IsEmpty())
+ return false;
- return false;
+ CJS_Icon* pJS_Icon = static_cast<CJS_Icon*>(pRuntime->GetObjectPrivate(pObj));
+ Icon* pIcon = static_cast<Icon*>(pJS_Icon->GetEmbedObject());
+ pIcon->SetIconName(*it);
+ vRet = CJS_Value(pRuntime, pJS_Icon);
+ return true;
}
bool Document::removeIcon(CJS_Runtime* pRuntime,