| Index: fpdfsdk/src/javascript/Document.cpp
|
| diff --git a/fpdfsdk/src/javascript/Document.cpp b/fpdfsdk/src/javascript/Document.cpp
|
| index f4a1090c3d5985ab79ecde74e5e0235300bce96b..0a85cece894a13ad509070dac1e53d0e9fce568a 100644
|
| --- a/fpdfsdk/src/javascript/Document.cpp
|
| +++ b/fpdfsdk/src/javascript/Document.cpp
|
| @@ -149,23 +149,13 @@ void CJS_Document::InitInstance(IJS_Runtime* pIRuntime) {
|
| Document::Document(CJS_Object* pJSObject)
|
| : CJS_EmbedObj(pJSObject),
|
| m_isolate(NULL),
|
| - m_pIconTree(NULL),
|
| m_pDocument(NULL),
|
| m_cwBaseURL(L""),
|
| m_bDelay(FALSE) {}
|
|
|
| Document::~Document() {
|
| - if (m_pIconTree) {
|
| - m_pIconTree->DeleteIconTree();
|
| - delete m_pIconTree;
|
| - m_pIconTree = NULL;
|
| - }
|
| for (int i = 0; i < m_DelayData.GetSize(); i++) {
|
| - if (CJS_DelayData* pData = m_DelayData.GetAt(i)) {
|
| - delete pData;
|
| - pData = NULL;
|
| - m_DelayData.SetAt(i, NULL);
|
| - }
|
| + delete m_DelayData.GetAt(i);
|
| }
|
|
|
| m_DelayData.RemoveAll();
|
| @@ -1255,51 +1245,6 @@ bool Document::IsEnclosedInRect(CFX_FloatRect rect, CFX_FloatRect LinkRect) {
|
| rect.right >= LinkRect.right && rect.bottom >= LinkRect.bottom);
|
| }
|
|
|
| -void IconTree::InsertIconElement(IconElement* pNewIcon) {
|
| - if (!pNewIcon)
|
| - return;
|
| -
|
| - if (m_pHead || m_pEnd) {
|
| - m_pEnd->NextIcon = pNewIcon;
|
| - m_pEnd = pNewIcon;
|
| - } else {
|
| - m_pHead = pNewIcon;
|
| - m_pEnd = pNewIcon;
|
| - }
|
| - m_iLength++;
|
| -}
|
| -
|
| -void IconTree::DeleteIconTree() {
|
| - if (!m_pHead || !m_pEnd)
|
| - return;
|
| -
|
| - IconElement* pTemp = NULL;
|
| - while (m_pEnd != m_pHead) {
|
| - pTemp = m_pHead;
|
| - m_pHead = m_pHead->NextIcon;
|
| - delete pTemp;
|
| - }
|
| -
|
| - delete m_pEnd;
|
| - m_pHead = NULL;
|
| - m_pEnd = NULL;
|
| -}
|
| -
|
| -int IconTree::GetLength() {
|
| - return m_iLength;
|
| -}
|
| -
|
| -IconElement* IconTree::operator[](int iIndex) {
|
| - if (iIndex >= 0 && iIndex <= m_iLength) {
|
| - IconElement* pTemp = m_pHead;
|
| - for (int i = 0; i < iIndex; i++) {
|
| - pTemp = pTemp->NextIcon;
|
| - }
|
| - return pTemp;
|
| - }
|
| - return NULL;
|
| -}
|
| -
|
| FX_BOOL Document::addIcon(IJS_Context* cc,
|
| const std::vector<CJS_Value>& params,
|
| CJS_Value& vRet,
|
| @@ -1328,15 +1273,8 @@ FX_BOOL Document::addIcon(IJS_Context* cc,
|
| return FALSE;
|
| }
|
|
|
| - Icon* pIcon = (Icon*)pEmbedObj;
|
| - if (!m_pIconTree)
|
| - m_pIconTree = new IconTree();
|
| -
|
| - IconElement* pNewIcon = new IconElement();
|
| - pNewIcon->IconName = swIconName;
|
| - pNewIcon->NextIcon = NULL;
|
| - pNewIcon->IconStream = pIcon;
|
| - m_pIconTree->InsertIconElement(pNewIcon);
|
| + m_IconList.push_back(std::unique_ptr<IconElement>(
|
| + new IconElement(swIconName, (Icon*)pEmbedObj)));
|
| return TRUE;
|
| }
|
|
|
| @@ -1349,18 +1287,16 @@ FX_BOOL Document::icons(IJS_Context* cc,
|
| return FALSE;
|
| }
|
|
|
| - if (!m_pIconTree) {
|
| + if (m_IconList.empty()) {
|
| vp.SetNull();
|
| return TRUE;
|
| }
|
|
|
| CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
|
| CJS_Array Icons(pRuntime);
|
| - IconElement* pIconElement = NULL;
|
| - int iIconTreeLength = m_pIconTree->GetLength();
|
| - for (int i = 0; i < iIconTreeLength; i++) {
|
| - pIconElement = (*m_pIconTree)[i];
|
|
|
| + int i = 0;
|
| + for (const auto& pIconElement : m_IconList) {
|
| v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj(
|
| pRuntime->GetIsolate(), pRuntime, CJS_Icon::g_nObjDefnID);
|
| if (pObj.IsEmpty())
|
| @@ -1376,7 +1312,7 @@ FX_BOOL Document::icons(IJS_Context* cc,
|
|
|
| pIcon->SetStream(pIconElement->IconStream->GetStream());
|
| pIcon->SetIconName(pIconElement->IconName);
|
| - Icons.SetElement(i, CJS_Value(pRuntime, pJS_Icon));
|
| + Icons.SetElement(i++, CJS_Value(pRuntime, pJS_Icon));
|
| }
|
|
|
| vp << Icons;
|
| @@ -1393,16 +1329,15 @@ FX_BOOL Document::getIcon(IJS_Context* cc,
|
| return FALSE;
|
| }
|
|
|
| - if (!m_pIconTree)
|
| + if (m_IconList.empty())
|
| return FALSE;
|
| - CFX_WideString swIconName = params[0].ToCFXWideString();
|
| - int iIconCounts = m_pIconTree->GetLength();
|
|
|
| + CFX_WideString swIconName = params[0].ToCFXWideString();
|
| CJS_Runtime* pRuntime = pContext->GetJSRuntime();
|
|
|
| - for (int i = 0; i < iIconCounts; i++) {
|
| - if ((*m_pIconTree)[i]->IconName == swIconName) {
|
| - Icon* pRetIcon = (*m_pIconTree)[i]->IconStream;
|
| + for (const auto& pIconElement : m_IconList) {
|
| + if (pIconElement->IconName == swIconName) {
|
| + Icon* pRetIcon = pIconElement->IconStream;
|
|
|
| v8::Local<v8::Object> pObj = FXJS_NewFxDynamicObj(
|
| pRuntime->GetIsolate(), pRuntime, CJS_Icon::g_nObjDefnID);
|
|
|