Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Side by Side Diff: fpdfsdk/javascript/Document.cpp

Issue 1780093003: Remove CFX_DWordArray from Document.h (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: rebase past rename Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/javascript/Document.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "fpdfsdk/javascript/Document.h" 7 #include "fpdfsdk/javascript/Document.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 */ 151 */
152 152
153 Document::Document(CJS_Object* pJSObject) 153 Document::Document(CJS_Object* pJSObject)
154 : CJS_EmbedObj(pJSObject), 154 : CJS_EmbedObj(pJSObject),
155 m_isolate(NULL), 155 m_isolate(NULL),
156 m_pDocument(NULL), 156 m_pDocument(NULL),
157 m_cwBaseURL(L""), 157 m_cwBaseURL(L""),
158 m_bDelay(FALSE) {} 158 m_bDelay(FALSE) {}
159 159
160 Document::~Document() { 160 Document::~Document() {
161 for (int i = 0; i < m_DelayData.GetSize(); i++) {
162 delete m_DelayData.GetAt(i);
163 }
164
165 m_DelayData.RemoveAll();
166 } 161 }
167 162
168 // the total number of fileds in document. 163 // the total number of fileds in document.
169 FX_BOOL Document::numFields(IJS_Context* cc, 164 FX_BOOL Document::numFields(IJS_Context* cc,
170 CJS_PropValue& vp, 165 CJS_PropValue& vp,
171 CFX_WideString& sError) { 166 CFX_WideString& sError) {
172 if (vp.IsSetting()) { 167 if (vp.IsSetting()) {
173 CJS_Context* pContext = static_cast<CJS_Context*>(cc); 168 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
174 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); 169 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
175 return FALSE; 170 return FALSE;
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 CJS_PropValue& vp, 853 CJS_PropValue& vp,
859 CFX_WideString& sError) { 854 CFX_WideString& sError) {
860 if (vp.IsGetting()) { 855 if (vp.IsGetting()) {
861 vp << m_bDelay; 856 vp << m_bDelay;
862 } else { 857 } else {
863 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY)) 858 if (!m_pDocument->GetPermissions(FPDFPERM_MODIFY))
864 return FALSE; 859 return FALSE;
865 860
866 vp >> m_bDelay; 861 vp >> m_bDelay;
867 if (m_bDelay) { 862 if (m_bDelay) {
868 for (int i = 0, sz = m_DelayData.GetSize(); i < sz; i++) 863 m_DelayData.clear();
869 delete m_DelayData.GetAt(i);
870
871 m_DelayData.RemoveAll();
872 } else { 864 } else {
873 CFX_ArrayTemplate<CJS_DelayData*> DelayDataToProcess; 865 std::list<std::unique_ptr<CJS_DelayData>> DelayDataToProcess;
874 for (int i = 0, sz = m_DelayData.GetSize(); i < sz; i++) { 866 DelayDataToProcess.swap(m_DelayData);
875 if (CJS_DelayData* pData = m_DelayData.GetAt(i)) { 867 for (const auto& pData : DelayDataToProcess)
876 DelayDataToProcess.Add(pData); 868 Field::DoDelay(m_pDocument, pData.get());
877 m_DelayData.SetAt(i, NULL);
878 }
879 }
880 m_DelayData.RemoveAll();
881 for (int i = 0, sz = DelayDataToProcess.GetSize(); i < sz; i++) {
882 CJS_DelayData* pData = DelayDataToProcess.GetAt(i);
883 Field::DoDelay(m_pDocument, pData);
884 DelayDataToProcess.SetAt(i, NULL);
885 delete pData;
886 }
887 } 869 }
888 } 870 }
889 return TRUE; 871 return TRUE;
890 } 872 }
891 873
892 FX_BOOL Document::keywords(IJS_Context* cc, 874 FX_BOOL Document::keywords(IJS_Context* cc,
893 CJS_PropValue& vp, 875 CJS_PropValue& vp,
894 CFX_WideString& sError) { 876 CFX_WideString& sError) {
895 CPDF_Dictionary* pDictionary = m_pDocument->GetPDFDocument()->GetInfo(); 877 CPDF_Dictionary* pDictionary = m_pDocument->GetPDFDocument()->GetInfo();
896 if (!pDictionary) 878 if (!pDictionary)
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
1590 1572
1591 FX_BOOL Document::getURL(IJS_Context* cc, 1573 FX_BOOL Document::getURL(IJS_Context* cc,
1592 const std::vector<CJS_Value>& params, 1574 const std::vector<CJS_Value>& params,
1593 CJS_Value& vRet, 1575 CJS_Value& vRet,
1594 CFX_WideString& sError) { 1576 CFX_WideString& sError) {
1595 // Unsafe, not supported. 1577 // Unsafe, not supported.
1596 return TRUE; 1578 return TRUE;
1597 } 1579 }
1598 1580
1599 void Document::AddDelayData(CJS_DelayData* pData) { 1581 void Document::AddDelayData(CJS_DelayData* pData) {
1600 m_DelayData.Add(pData); 1582 m_DelayData.push_back(std::unique_ptr<CJS_DelayData>(pData));
1601 } 1583 }
1602 1584
1603 void Document::DoFieldDelay(const CFX_WideString& sFieldName, 1585 void Document::DoFieldDelay(const CFX_WideString& sFieldName,
1604 int nControlIndex) { 1586 int nControlIndex) {
1605 CFX_DWordArray DelArray; 1587 std::vector<std::unique_ptr<CJS_DelayData>> DelayDataForFieldAndControlIndex;
1606 CFX_ArrayTemplate<CJS_DelayData*> DelayDataForFieldAndControlIndex; 1588 auto iter = m_DelayData.begin();
1607 1589 while (iter != m_DelayData.end()) {
1608 for (int i = 0, sz = m_DelayData.GetSize(); i < sz; i++) { 1590 auto old = iter++;
1609 if (CJS_DelayData* pData = m_DelayData.GetAt(i)) { 1591 if ((*old)->sFieldName == sFieldName &&
1610 if (pData->sFieldName == sFieldName && 1592 (*old)->nControlIndex == nControlIndex) {
1611 pData->nControlIndex == nControlIndex) { 1593 DelayDataForFieldAndControlIndex.push_back(std::move(*old));
1612 DelayDataForFieldAndControlIndex.Add(pData); 1594 m_DelayData.erase(old);
1613 m_DelayData.SetAt(i, NULL);
1614 DelArray.Add(i);
1615 }
1616 } 1595 }
1617 } 1596 }
1618 1597
1619 for (int j = DelArray.GetSize() - 1; j >= 0; j--) { 1598 for (const auto& pData : DelayDataForFieldAndControlIndex)
1620 m_DelayData.RemoveAt(DelArray[j]); 1599 Field::DoDelay(m_pDocument, pData.get());
1621 }
1622
1623 for (int i = 0, sz = DelayDataForFieldAndControlIndex.GetSize(); i < sz;
1624 i++) {
1625 CJS_DelayData* pData = DelayDataForFieldAndControlIndex.GetAt(i);
1626 Field::DoDelay(m_pDocument, pData);
1627 DelayDataForFieldAndControlIndex.SetAt(i, NULL);
1628 delete pData;
1629 }
1630 } 1600 }
1631 1601
1632 CJS_Document* Document::GetCJSDoc() const { 1602 CJS_Document* Document::GetCJSDoc() const {
1633 return static_cast<CJS_Document*>(m_pJSObject); 1603 return static_cast<CJS_Document*>(m_pJSObject);
1634 } 1604 }
OLDNEW
« no previous file with comments | « fpdfsdk/javascript/Document.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698