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

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

Issue 2217253002: Remove backpointer to runtime from CJS_Array. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Remove non-const refs Created 4 years, 4 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/JS_Value.cpp ('k') | fpdfsdk/javascript/app.cpp » ('j') | 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/PublicMethods.h" 7 #include "fpdfsdk/javascript/PublicMethods.h"
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 return std::min(dValue1, dValue2); 148 return std::min(dValue1, dValue2);
149 } 149 }
150 if (FXSYS_wcsicmp(sFuction, L"MAX") == 0) { 150 if (FXSYS_wcsicmp(sFuction, L"MAX") == 0) {
151 return std::max(dValue1, dValue2); 151 return std::max(dValue1, dValue2);
152 } 152 }
153 return dValue1; 153 return dValue1;
154 } 154 }
155 155
156 CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(CJS_Runtime* pRuntime, 156 CJS_Array CJS_PublicMethods::AF_MakeArrayFromList(CJS_Runtime* pRuntime,
157 CJS_Value val) { 157 CJS_Value val) {
158 CJS_Array StrArray(pRuntime); 158 CJS_Array StrArray;
159 if (val.IsArrayObject()) { 159 if (val.IsArrayObject()) {
160 val.ConvertToArray(StrArray); 160 val.ConvertToArray(StrArray);
161 return StrArray; 161 return StrArray;
162 } 162 }
163 CFX_WideString wsStr = val.ToCFXWideString(); 163 CFX_WideString wsStr = val.ToCFXWideString();
164 CFX_ByteString t = CFX_ByteString::FromUnicode(wsStr); 164 CFX_ByteString t = CFX_ByteString::FromUnicode(wsStr);
165 const char* p = t.c_str(); 165 const char* p = t.c_str();
166 166
167 int ch = ','; 167 int ch = ',';
168 int nIndex = 0; 168 int nIndex = 0;
169 169
170 while (*p) { 170 while (*p) {
171 const char* pTemp = strchr(p, ch); 171 const char* pTemp = strchr(p, ch);
172 if (!pTemp) { 172 if (!pTemp) {
173 StrArray.SetElement( 173 StrArray.SetElement(
174 nIndex, CJS_Value(pRuntime, StrTrim(CFX_ByteString(p)).c_str())); 174 pRuntime->GetIsolate(), nIndex,
175 CJS_Value(pRuntime, StrTrim(CFX_ByteString(p)).c_str()));
175 break; 176 break;
176 } 177 }
177 178
178 char* pSub = new char[pTemp - p + 1]; 179 char* pSub = new char[pTemp - p + 1];
179 strncpy(pSub, p, pTemp - p); 180 strncpy(pSub, p, pTemp - p);
180 *(pSub + (pTemp - p)) = '\0'; 181 *(pSub + (pTemp - p)) = '\0';
181 182
182 StrArray.SetElement( 183 StrArray.SetElement(
183 nIndex, CJS_Value(pRuntime, StrTrim(CFX_ByteString(pSub)).c_str())); 184 pRuntime->GetIsolate(), nIndex,
185 CJS_Value(pRuntime, StrTrim(CFX_ByteString(pSub)).c_str()));
184 delete[] pSub; 186 delete[] pSub;
185 187
186 nIndex++; 188 nIndex++;
187 p = ++pTemp; 189 p = ++pTemp;
188 } 190 }
189 return StrArray; 191 return StrArray;
190 } 192 }
191 193
192 int CJS_PublicMethods::ParseStringInteger(const CFX_WideString& str, 194 int CJS_PublicMethods::ParseStringInteger(const CFX_WideString& str,
193 int nStart, 195 int nStart,
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 822
821 // for processing negative style 823 // for processing negative style
822 if (iNegative) { 824 if (iNegative) {
823 if (iNegStyle == 0) { 825 if (iNegStyle == 0) {
824 Value = L"-" + Value; 826 Value = L"-" + Value;
825 } else if (iNegStyle == 2 || iNegStyle == 3) { 827 } else if (iNegStyle == 2 || iNegStyle == 3) {
826 Value = L"(" + Value + L")"; 828 Value = L"(" + Value + L")";
827 } 829 }
828 if (iNegStyle == 1 || iNegStyle == 3) { 830 if (iNegStyle == 1 || iNegStyle == 3) {
829 if (Field* fTarget = pEvent->Target_Field()) { 831 if (Field* fTarget = pEvent->Target_Field()) {
830 CJS_Array arColor(pRuntime); 832 CJS_Array arColor;
831 CJS_Value vColElm(pRuntime); 833 CJS_Value vColElm(pRuntime);
832 vColElm = L"RGB"; 834 vColElm = L"RGB";
833 arColor.SetElement(0, vColElm); 835 arColor.SetElement(pRuntime->GetIsolate(), 0, vColElm);
834 vColElm = 1; 836 vColElm = 1;
835 arColor.SetElement(1, vColElm); 837 arColor.SetElement(pRuntime->GetIsolate(), 1, vColElm);
836 vColElm = 0; 838 vColElm = 0;
837 arColor.SetElement(2, vColElm); 839 arColor.SetElement(pRuntime->GetIsolate(), 2, vColElm);
838 840 arColor.SetElement(pRuntime->GetIsolate(), 3, vColElm);
839 arColor.SetElement(3, vColElm);
840 841
841 CJS_PropValue vProp(pRuntime); 842 CJS_PropValue vProp(pRuntime);
842 vProp.StartGetting(); 843 vProp.StartGetting();
843 vProp << arColor; 844 vProp << arColor;
844 vProp.StartSetting(); 845 vProp.StartSetting();
845 fTarget->textColor(cc, vProp, sError); // red 846 fTarget->textColor(cc, vProp, sError); // red
846 } 847 }
847 } 848 }
848 } else { 849 } else {
849 if (iNegStyle == 1 || iNegStyle == 3) { 850 if (iNegStyle == 1 || iNegStyle == 3) {
850 if (Field* fTarget = pEvent->Target_Field()) { 851 if (Field* fTarget = pEvent->Target_Field()) {
851 CJS_Array arColor(pRuntime); 852 CJS_Array arColor;
852 CJS_Value vColElm(pRuntime); 853 CJS_Value vColElm(pRuntime);
853 vColElm = L"RGB"; 854 vColElm = L"RGB";
854 arColor.SetElement(0, vColElm); 855 arColor.SetElement(pRuntime->GetIsolate(), 0, vColElm);
855 vColElm = 0; 856 vColElm = 0;
856 arColor.SetElement(1, vColElm); 857 arColor.SetElement(pRuntime->GetIsolate(), 1, vColElm);
857 arColor.SetElement(2, vColElm); 858 arColor.SetElement(pRuntime->GetIsolate(), 2, vColElm);
858 arColor.SetElement(3, vColElm); 859 arColor.SetElement(pRuntime->GetIsolate(), 3, vColElm);
859 860
860 CJS_PropValue vProp(pRuntime); 861 CJS_PropValue vProp(pRuntime);
861 vProp.StartGetting(); 862 vProp.StartGetting();
862 fTarget->textColor(cc, vProp, sError); 863 fTarget->textColor(cc, vProp, sError);
863 864
864 CJS_Array aProp(pRuntime); 865 CJS_Array aProp;
865 vProp.ConvertToArray(aProp); 866 vProp.ConvertToArray(aProp);
866 867
867 CPWL_Color crProp; 868 CPWL_Color crProp;
868 CPWL_Color crColor; 869 CPWL_Color crColor;
869 color::ConvertArrayToPWLColor(aProp, crProp); 870 color::ConvertArrayToPWLColor(pRuntime, aProp, &crProp);
870 color::ConvertArrayToPWLColor(arColor, crColor); 871 color::ConvertArrayToPWLColor(pRuntime, arColor, &crColor);
871 872
872 if (crColor != crProp) { 873 if (crColor != crProp) {
873 CJS_PropValue vProp2(pRuntime); 874 CJS_PropValue vProp2(pRuntime);
874 vProp2.StartGetting(); 875 vProp2.StartGetting();
875 vProp2 << arColor; 876 vProp2 << arColor;
876 vProp2.StartSetting(); 877 vProp2.StartSetting();
877 fTarget->textColor(cc, vProp2, sError); 878 fTarget->textColor(cc, vProp2, sError);
878 } 879 }
879 } 880 }
880 } 881 }
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after
1649 1650
1650 CFX_WideString sFunction = params[0].ToCFXWideString(); 1651 CFX_WideString sFunction = params[0].ToCFXWideString();
1651 double dValue = wcscmp(sFunction.c_str(), L"PRD") == 0 ? 1.0 : 0.0; 1652 double dValue = wcscmp(sFunction.c_str(), L"PRD") == 0 ? 1.0 : 0.0;
1652 1653
1653 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1654 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1654 CJS_Array FieldNameArray = AF_MakeArrayFromList(pRuntime, params1); 1655 CJS_Array FieldNameArray = AF_MakeArrayFromList(pRuntime, params1);
1655 int nFieldsCount = 0; 1656 int nFieldsCount = 0;
1656 1657
1657 for (int i = 0, isz = FieldNameArray.GetLength(); i < isz; i++) { 1658 for (int i = 0, isz = FieldNameArray.GetLength(); i < isz; i++) {
1658 CJS_Value jsValue(pRuntime); 1659 CJS_Value jsValue(pRuntime);
1659 FieldNameArray.GetElement(i, jsValue); 1660 FieldNameArray.GetElement(pRuntime->GetIsolate(), i, jsValue);
1660 CFX_WideString wsFieldName = jsValue.ToCFXWideString(); 1661 CFX_WideString wsFieldName = jsValue.ToCFXWideString();
1661 1662
1662 for (int j = 0, jsz = pInterForm->CountFields(wsFieldName); j < jsz; j++) { 1663 for (int j = 0, jsz = pInterForm->CountFields(wsFieldName); j < jsz; j++) {
1663 if (CPDF_FormField* pFormField = pInterForm->GetField(j, wsFieldName)) { 1664 if (CPDF_FormField* pFormField = pInterForm->GetField(j, wsFieldName)) {
1664 double dTemp = 0.0; 1665 double dTemp = 0.0;
1665 switch (pFormField->GetFieldType()) { 1666 switch (pFormField->GetFieldType()) {
1666 case FIELDTYPE_TEXTFIELD: 1667 case FIELDTYPE_TEXTFIELD:
1667 case FIELDTYPE_COMBOBOX: { 1668 case FIELDTYPE_COMBOBOX: {
1668 CFX_WideString trimmed = pFormField->GetValue(); 1669 CFX_WideString trimmed = pFormField->GetValue();
1669 trimmed.TrimRight(); 1670 trimmed.TrimRight();
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1777 const std::vector<CJS_Value>& params, 1778 const std::vector<CJS_Value>& params,
1778 CJS_Value& vRet, 1779 CJS_Value& vRet,
1779 CFX_WideString& sError) { 1780 CFX_WideString& sError) {
1780 CJS_Context* pContext = (CJS_Context*)cc; 1781 CJS_Context* pContext = (CJS_Context*)cc;
1781 if (params.size() != 1) { 1782 if (params.size() != 1) {
1782 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR); 1783 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
1783 return FALSE; 1784 return FALSE;
1784 } 1785 }
1785 1786
1786 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 1787 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
1787 CJS_Array nums(pRuntime); 1788 CJS_Array nums;
1788 1789
1789 CFX_WideString str = params[0].ToCFXWideString(); 1790 CFX_WideString str = params[0].ToCFXWideString();
1790 CFX_WideString sPart; 1791 CFX_WideString sPart;
1791 1792
1792 if (str.GetAt(0) == L'.' || str.GetAt(0) == L',') 1793 if (str.GetAt(0) == L'.' || str.GetAt(0) == L',')
1793 str = L"0" + str; 1794 str = L"0" + str;
1794 1795
1795 int nIndex = 0; 1796 int nIndex = 0;
1796 for (int i = 0, sz = str.GetLength(); i < sz; i++) { 1797 for (int i = 0, sz = str.GetLength(); i < sz; i++) {
1797 FX_WCHAR wc = str.GetAt(i); 1798 FX_WCHAR wc = str.GetAt(i);
1798 if (FXSYS_iswdigit(wc)) { 1799 if (FXSYS_iswdigit(wc)) {
1799 sPart += wc; 1800 sPart += wc;
1800 } else { 1801 } else {
1801 if (sPart.GetLength() > 0) { 1802 if (sPart.GetLength() > 0) {
1802 nums.SetElement(nIndex, CJS_Value(pRuntime, sPart.c_str())); 1803 nums.SetElement(pRuntime->GetIsolate(), nIndex,
1804 CJS_Value(pRuntime, sPart.c_str()));
1803 sPart = L""; 1805 sPart = L"";
1804 nIndex++; 1806 nIndex++;
1805 } 1807 }
1806 } 1808 }
1807 } 1809 }
1808 1810
1809 if (sPart.GetLength() > 0) { 1811 if (sPart.GetLength() > 0) {
1810 nums.SetElement(nIndex, CJS_Value(pRuntime, sPart.c_str())); 1812 nums.SetElement(pRuntime->GetIsolate(), nIndex,
1813 CJS_Value(pRuntime, sPart.c_str()));
1811 } 1814 }
1812 1815
1813 if (nums.GetLength() > 0) 1816 if (nums.GetLength() > 0)
1814 vRet = nums; 1817 vRet = CJS_Value(pRuntime, nums);
1815 else 1818 else
1816 vRet.SetNull(); 1819 vRet.SetNull();
1817 1820
1818 return TRUE; 1821 return TRUE;
1819 } 1822 }
OLDNEW
« no previous file with comments | « fpdfsdk/javascript/JS_Value.cpp ('k') | fpdfsdk/javascript/app.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698