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

Side by Side Diff: xfa/src/fxfa/fm2js/xfa_fm2jscontext.h

Issue 1803723002: Move xfa/src up to xfa/. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Rebase to master 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 | « xfa/src/fxfa/fm2js/xfa_fm2jsapi.cpp ('k') | xfa/src/fxfa/fm2js/xfa_fm2jscontext.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef XFA_SRC_FXFA_FM2JS_XFA_FM2JSCONTEXT_H_
8 #define XFA_SRC_FXFA_FM2JS_XFA_FM2JSCONTEXT_H_
9
10 #include "xfa/src/fxfa/parser/xfa_script.h"
11
12 class CXFA_FM2JSContext {
13 public:
14 static void Abs(FXJSE_HOBJECT hThis,
15 const CFX_ByteStringC& szFuncName,
16 CFXJSE_Arguments& args);
17 static void Avg(FXJSE_HOBJECT hThis,
18 const CFX_ByteStringC& szFuncName,
19 CFXJSE_Arguments& args);
20 static void Ceil(FXJSE_HOBJECT hThis,
21 const CFX_ByteStringC& szFuncName,
22 CFXJSE_Arguments& args);
23 static void Count(FXJSE_HOBJECT hThis,
24 const CFX_ByteStringC& szFuncName,
25 CFXJSE_Arguments& args);
26 static void Floor(FXJSE_HOBJECT hThis,
27 const CFX_ByteStringC& szFuncName,
28 CFXJSE_Arguments& args);
29 static void Max(FXJSE_HOBJECT hThis,
30 const CFX_ByteStringC& szFuncName,
31 CFXJSE_Arguments& args);
32 static void Min(FXJSE_HOBJECT hThis,
33 const CFX_ByteStringC& szFuncName,
34 CFXJSE_Arguments& args);
35 static void Mod(FXJSE_HOBJECT hThis,
36 const CFX_ByteStringC& szFuncName,
37 CFXJSE_Arguments& args);
38 static void Round(FXJSE_HOBJECT hThis,
39 const CFX_ByteStringC& szFuncName,
40 CFXJSE_Arguments& args);
41 static void Sum(FXJSE_HOBJECT hThis,
42 const CFX_ByteStringC& szFuncName,
43 CFXJSE_Arguments& args);
44 static void Date(FXJSE_HOBJECT hThis,
45 const CFX_ByteStringC& szFuncName,
46 CFXJSE_Arguments& args);
47 static void Date2Num(FXJSE_HOBJECT hThis,
48 const CFX_ByteStringC& szFuncName,
49 CFXJSE_Arguments& args);
50 static void DateFmt(FXJSE_HOBJECT hThis,
51 const CFX_ByteStringC& szFuncName,
52 CFXJSE_Arguments& args);
53 static void IsoDate2Num(FXJSE_HOBJECT hThis,
54 const CFX_ByteStringC& szFuncName,
55 CFXJSE_Arguments& args);
56 static void IsoTime2Num(FXJSE_HOBJECT hThis,
57 const CFX_ByteStringC& szFuncName,
58 CFXJSE_Arguments& args);
59 static void LocalDateFmt(FXJSE_HOBJECT hThis,
60 const CFX_ByteStringC& szFuncName,
61 CFXJSE_Arguments& args);
62 static void LocalTimeFmt(FXJSE_HOBJECT hThis,
63 const CFX_ByteStringC& szFuncName,
64 CFXJSE_Arguments& args);
65 static void Num2Date(FXJSE_HOBJECT hThis,
66 const CFX_ByteStringC& szFuncName,
67 CFXJSE_Arguments& args);
68 static void Num2GMTime(FXJSE_HOBJECT hThis,
69 const CFX_ByteStringC& szFuncName,
70 CFXJSE_Arguments& args);
71 static void Num2Time(FXJSE_HOBJECT hThis,
72 const CFX_ByteStringC& szFuncName,
73 CFXJSE_Arguments& args);
74 static void Time(FXJSE_HOBJECT hThis,
75 const CFX_ByteStringC& szFuncName,
76 CFXJSE_Arguments& args);
77 static void Time2Num(FXJSE_HOBJECT hThis,
78 const CFX_ByteStringC& szFuncName,
79 CFXJSE_Arguments& args);
80 static void TimeFmt(FXJSE_HOBJECT hThis,
81 const CFX_ByteStringC& szFuncName,
82 CFXJSE_Arguments& args);
83
84 static FX_BOOL IsIsoDateFormat(const FX_CHAR* pData,
85 int32_t iLength,
86 int32_t& iStyle,
87 int32_t& iYear,
88 int32_t& iMonth,
89 int32_t& iDay);
90 static FX_BOOL IsIsoTimeFormat(const FX_CHAR* pData,
91 int32_t iLength,
92 int32_t& iHour,
93 int32_t& iMinute,
94 int32_t& iSecond,
95 int32_t& iMilliSecond,
96 int32_t& iZoneHour,
97 int32_t& iZoneMinute);
98 static FX_BOOL IsIsoDateTimeFormat(const FX_CHAR* pData,
99 int32_t iLength,
100 int32_t& iYear,
101 int32_t& iMonth,
102 int32_t& iDay,
103 int32_t& iHour,
104 int32_t& iMinute,
105 int32_t& iSecond,
106 int32_t& iMillionSecond,
107 int32_t& iZoneHour,
108 int32_t& iZoneMinute);
109 static FX_BOOL Local2IsoDate(FXJSE_HOBJECT hThis,
110 const CFX_ByteStringC& szDate,
111 const CFX_ByteStringC& szFormat,
112 const CFX_ByteStringC& szLocale,
113 CFX_ByteString& strIsoDate);
114 static FX_BOOL Local2IsoTime(FXJSE_HOBJECT hThis,
115 const CFX_ByteStringC& szTime,
116 const CFX_ByteStringC& szFormat,
117 const CFX_ByteStringC& szLocale,
118 CFX_ByteString& strIsoTime);
119 static FX_BOOL IsoDate2Local(FXJSE_HOBJECT hThis,
120 const CFX_ByteStringC& szDate,
121 const CFX_ByteStringC& szFormat,
122 const CFX_ByteStringC& szLocale,
123 CFX_ByteString& strLocalDate);
124 static FX_BOOL IsoTime2Local(FXJSE_HOBJECT hThis,
125 const CFX_ByteStringC& szTime,
126 const CFX_ByteStringC& szFormat,
127 const CFX_ByteStringC& szLocale,
128 CFX_ByteString& strLocalTime);
129 static FX_BOOL GetGMTTime(FXJSE_HOBJECT hThis,
130 const CFX_ByteStringC& szTime,
131 const CFX_ByteStringC& szFormat,
132 const CFX_ByteStringC& szLocale,
133 CFX_ByteString& strGMTTime);
134 static int32_t DateString2Num(const CFX_ByteStringC& szDateString);
135 static void GetLocalDateFormat(FXJSE_HOBJECT hThis,
136 int32_t iStyle,
137 const CFX_ByteStringC& szLocalStr,
138 CFX_ByteString& strFormat,
139 FX_BOOL bStandard);
140 static void GetLocalTimeFormat(FXJSE_HOBJECT hThis,
141 int32_t iStyle,
142 const CFX_ByteStringC& szLocalStr,
143 CFX_ByteString& strFormat,
144 FX_BOOL bStandard);
145 static void GetStandardDateFormat(FXJSE_HOBJECT hThis,
146 int32_t iStyle,
147 const CFX_ByteStringC& szLocalStr,
148 CFX_ByteString& strFormat);
149 static void GetStandardTimeFormat(FXJSE_HOBJECT hThis,
150 int32_t iStyle,
151 const CFX_ByteStringC& szLocalStr,
152 CFX_ByteString& strFormat);
153
154 static void Num2AllTime(FXJSE_HOBJECT hThis,
155 int32_t iTime,
156 const CFX_ByteStringC& szFormat,
157 const CFX_ByteStringC& szLocale,
158 FX_BOOL bGM,
159 CFX_ByteString& strTime);
160 static void GetLocalTimeZone(int32_t& iHour, int32_t& iMin, int32_t& iSec);
161
162 static void Apr(FXJSE_HOBJECT hThis,
163 const CFX_ByteStringC& szFuncName,
164 CFXJSE_Arguments& args);
165 static void CTerm(FXJSE_HOBJECT hThis,
166 const CFX_ByteStringC& szFuncName,
167 CFXJSE_Arguments& args);
168 static void FV(FXJSE_HOBJECT hThis,
169 const CFX_ByteStringC& szFuncName,
170 CFXJSE_Arguments& args);
171 static void IPmt(FXJSE_HOBJECT hThis,
172 const CFX_ByteStringC& szFuncName,
173 CFXJSE_Arguments& args);
174 static void NPV(FXJSE_HOBJECT hThis,
175 const CFX_ByteStringC& szFuncName,
176 CFXJSE_Arguments& args);
177 static void Pmt(FXJSE_HOBJECT hThis,
178 const CFX_ByteStringC& szFuncName,
179 CFXJSE_Arguments& args);
180 static void PPmt(FXJSE_HOBJECT hThis,
181 const CFX_ByteStringC& szFuncName,
182 CFXJSE_Arguments& args);
183 static void PV(FXJSE_HOBJECT hThis,
184 const CFX_ByteStringC& szFuncName,
185 CFXJSE_Arguments& args);
186 static void Rate(FXJSE_HOBJECT hThis,
187 const CFX_ByteStringC& szFuncName,
188 CFXJSE_Arguments& args);
189 static void Term(FXJSE_HOBJECT hThis,
190 const CFX_ByteStringC& szFuncName,
191 CFXJSE_Arguments& args);
192 static void Choose(FXJSE_HOBJECT hThis,
193 const CFX_ByteStringC& szFuncName,
194 CFXJSE_Arguments& args);
195 static void Exists(FXJSE_HOBJECT hThis,
196 const CFX_ByteStringC& szFuncName,
197 CFXJSE_Arguments& args);
198 static void HasValue(FXJSE_HOBJECT hThis,
199 const CFX_ByteStringC& szFuncName,
200 CFXJSE_Arguments& args);
201 static void Oneof(FXJSE_HOBJECT hThis,
202 const CFX_ByteStringC& szFuncName,
203 CFXJSE_Arguments& args);
204 static void Within(FXJSE_HOBJECT hThis,
205 const CFX_ByteStringC& szFuncName,
206 CFXJSE_Arguments& args);
207 static void If(FXJSE_HOBJECT hThis,
208 const CFX_ByteStringC& szFuncName,
209 CFXJSE_Arguments& args);
210 static void Eval(FXJSE_HOBJECT hThis,
211 const CFX_ByteStringC& szFuncName,
212 CFXJSE_Arguments& args);
213 static void Ref(FXJSE_HOBJECT hThis,
214 const CFX_ByteStringC& szFuncName,
215 CFXJSE_Arguments& args);
216 static void UnitType(FXJSE_HOBJECT hThis,
217 const CFX_ByteStringC& szFuncName,
218 CFXJSE_Arguments& args);
219 static void UnitValue(FXJSE_HOBJECT hThis,
220 const CFX_ByteStringC& szFuncName,
221 CFXJSE_Arguments& args);
222
223 static void At(FXJSE_HOBJECT hThis,
224 const CFX_ByteStringC& szFuncName,
225 CFXJSE_Arguments& args);
226 static void Concat(FXJSE_HOBJECT hThis,
227 const CFX_ByteStringC& szFuncName,
228 CFXJSE_Arguments& args);
229 static void Decode(FXJSE_HOBJECT hThis,
230 const CFX_ByteStringC& szFuncName,
231 CFXJSE_Arguments& args);
232 static void DecodeURL(const CFX_ByteStringC& szURLString,
233 CFX_ByteTextBuf& szResultBuf);
234 static void DecodeHTML(const CFX_ByteStringC& szHTMLString,
235 CFX_ByteTextBuf& szResultBuf);
236 static void DecodeXML(const CFX_ByteStringC& szXMLString,
237 CFX_ByteTextBuf& szResultBuf);
238 static void Encode(FXJSE_HOBJECT hThis,
239 const CFX_ByteStringC& szFuncName,
240 CFXJSE_Arguments& args);
241 static void EncodeURL(const CFX_ByteStringC& szURLString,
242 CFX_ByteTextBuf& szResultBuf);
243 static void EncodeHTML(const CFX_ByteStringC& szHTMLString,
244 CFX_ByteTextBuf& szResultBuf);
245 static void EncodeXML(const CFX_ByteStringC& szXMLString,
246 CFX_ByteTextBuf& szResultBuf);
247 static FX_BOOL HTMLSTR2Code(const CFX_WideStringC& pData, uint32_t& iCode);
248 static FX_BOOL HTMLCode2STR(uint32_t iCode, CFX_WideString& wsHTMLReserve);
249 static void Format(FXJSE_HOBJECT hThis,
250 const CFX_ByteStringC& szFuncName,
251 CFXJSE_Arguments& args);
252 static void Left(FXJSE_HOBJECT hThis,
253 const CFX_ByteStringC& szFuncName,
254 CFXJSE_Arguments& args);
255 static void Len(FXJSE_HOBJECT hThis,
256 const CFX_ByteStringC& szFuncName,
257 CFXJSE_Arguments& args);
258 static void Lower(FXJSE_HOBJECT hThis,
259 const CFX_ByteStringC& szFuncName,
260 CFXJSE_Arguments& args);
261 static void Ltrim(FXJSE_HOBJECT hThis,
262 const CFX_ByteStringC& szFuncName,
263 CFXJSE_Arguments& args);
264 static void Parse(FXJSE_HOBJECT hThis,
265 const CFX_ByteStringC& szFuncName,
266 CFXJSE_Arguments& args);
267 static void Replace(FXJSE_HOBJECT hThis,
268 const CFX_ByteStringC& szFuncName,
269 CFXJSE_Arguments& args);
270 static void Right(FXJSE_HOBJECT hThis,
271 const CFX_ByteStringC& szFuncName,
272 CFXJSE_Arguments& args);
273 static void Rtrim(FXJSE_HOBJECT hThis,
274 const CFX_ByteStringC& szFuncName,
275 CFXJSE_Arguments& args);
276 static void Space(FXJSE_HOBJECT hThis,
277 const CFX_ByteStringC& szFuncName,
278 CFXJSE_Arguments& args);
279 static void Str(FXJSE_HOBJECT hThis,
280 const CFX_ByteStringC& szFuncName,
281 CFXJSE_Arguments& args);
282 static void Stuff(FXJSE_HOBJECT hThis,
283 const CFX_ByteStringC& szFuncName,
284 CFXJSE_Arguments& args);
285 static void Substr(FXJSE_HOBJECT hThis,
286 const CFX_ByteStringC& szFuncName,
287 CFXJSE_Arguments& args);
288 static void Uuid(FXJSE_HOBJECT hThis,
289 const CFX_ByteStringC& szFuncName,
290 CFXJSE_Arguments& args);
291 static void Upper(FXJSE_HOBJECT hThis,
292 const CFX_ByteStringC& szFuncName,
293 CFXJSE_Arguments& args);
294 static void WordNum(FXJSE_HOBJECT hThis,
295 const CFX_ByteStringC& szFuncName,
296 CFXJSE_Arguments& args);
297 static void TrillionUS(const CFX_ByteStringC& szData,
298 CFX_ByteTextBuf& strBuf);
299 static void WordUS(const CFX_ByteStringC& szData,
300 int32_t iStyle,
301 CFX_ByteTextBuf& strBuf);
302
303 static void Get(FXJSE_HOBJECT hThis,
304 const CFX_ByteStringC& szFuncName,
305 CFXJSE_Arguments& args);
306 static void Post(FXJSE_HOBJECT hThis,
307 const CFX_ByteStringC& szFuncName,
308 CFXJSE_Arguments& args);
309 static void Put(FXJSE_HOBJECT hThis,
310 const CFX_ByteStringC& szFuncName,
311 CFXJSE_Arguments& args);
312 static void assign_value_operator(FXJSE_HOBJECT hThis,
313 const CFX_ByteStringC& szFuncName,
314 CFXJSE_Arguments& args);
315 static void logical_or_operator(FXJSE_HOBJECT hThis,
316 const CFX_ByteStringC& szFuncName,
317 CFXJSE_Arguments& args);
318 static void logical_and_operator(FXJSE_HOBJECT hThis,
319 const CFX_ByteStringC& szFuncName,
320 CFXJSE_Arguments& args);
321 static void equality_operator(FXJSE_HOBJECT hThis,
322 const CFX_ByteStringC& szFuncName,
323 CFXJSE_Arguments& args);
324 static void notequality_operator(FXJSE_HOBJECT hThis,
325 const CFX_ByteStringC& szFuncName,
326 CFXJSE_Arguments& args);
327 static FX_BOOL fm_ref_equal(FXJSE_HOBJECT hThis, CFXJSE_Arguments& args);
328 static void less_operator(FXJSE_HOBJECT hThis,
329 const CFX_ByteStringC& szFuncName,
330 CFXJSE_Arguments& args);
331 static void lessequal_operator(FXJSE_HOBJECT hThis,
332 const CFX_ByteStringC& szFuncName,
333 CFXJSE_Arguments& args);
334 static void greater_operator(FXJSE_HOBJECT hThis,
335 const CFX_ByteStringC& szFuncName,
336 CFXJSE_Arguments& args);
337 static void greaterequal_operator(FXJSE_HOBJECT hThis,
338 const CFX_ByteStringC& szFuncName,
339 CFXJSE_Arguments& args);
340 static void plus_operator(FXJSE_HOBJECT hThis,
341 const CFX_ByteStringC& szFuncName,
342 CFXJSE_Arguments& args);
343 static void minus_operator(FXJSE_HOBJECT hThis,
344 const CFX_ByteStringC& szFuncName,
345 CFXJSE_Arguments& args);
346 static void multiple_operator(FXJSE_HOBJECT hThis,
347 const CFX_ByteStringC& szFuncName,
348 CFXJSE_Arguments& args);
349 static void divide_operator(FXJSE_HOBJECT hThis,
350 const CFX_ByteStringC& szFuncName,
351 CFXJSE_Arguments& args);
352 static void positive_operator(FXJSE_HOBJECT hThis,
353 const CFX_ByteStringC& szFuncName,
354 CFXJSE_Arguments& args);
355 static void negative_operator(FXJSE_HOBJECT hThis,
356 const CFX_ByteStringC& szFuncName,
357 CFXJSE_Arguments& args);
358 static void logical_not_operator(FXJSE_HOBJECT hThis,
359 const CFX_ByteStringC& szFuncName,
360 CFXJSE_Arguments& args);
361 static void dot_accessor(FXJSE_HOBJECT hThis,
362 const CFX_ByteStringC& szFuncName,
363 CFXJSE_Arguments& args);
364 static void dotdot_accessor(FXJSE_HOBJECT hThis,
365 const CFX_ByteStringC& szFuncName,
366 CFXJSE_Arguments& args);
367 static void eval_translation(FXJSE_HOBJECT hThis,
368 const CFX_ByteStringC& szFuncName,
369 CFXJSE_Arguments& args);
370 static void is_fm_object(FXJSE_HOBJECT hThis,
371 const CFX_ByteStringC& szFuncName,
372 CFXJSE_Arguments& args);
373 static void is_fm_array(FXJSE_HOBJECT hThis,
374 const CFX_ByteStringC& szFuncName,
375 CFXJSE_Arguments& args);
376 static void get_fm_value(FXJSE_HOBJECT hThis,
377 const CFX_ByteStringC& szFuncName,
378 CFXJSE_Arguments& args);
379 static void get_fm_jsobj(FXJSE_HOBJECT hThis,
380 const CFX_ByteStringC& szFuncName,
381 CFXJSE_Arguments& args);
382 static void fm_var_filter(FXJSE_HOBJECT hThis,
383 const CFX_ByteStringC& szFuncName,
384 CFXJSE_Arguments& args);
385 static void concat_fm_object(FXJSE_HOBJECT hThis,
386 const CFX_ByteStringC& szFuncName,
387 CFXJSE_Arguments& args);
388
389 static int32_t hvalue_get_array_length(FXJSE_HOBJECT hThis, FXJSE_HVALUE arg);
390 static FX_BOOL simpleValueCompare(FXJSE_HOBJECT hThis,
391 FXJSE_HVALUE firstValue,
392 FXJSE_HVALUE secondValue);
393 static void unfoldArgs(FXJSE_HOBJECT hThis,
394 CFXJSE_Arguments& args,
395 FXJSE_HVALUE*& resultValues,
396 int32_t& iCount,
397 int32_t iStart = 0);
398 static void GetObjectDefaultValue(FXJSE_HVALUE hObjectValue,
399 FXJSE_HVALUE hDefaultValue);
400 static FX_BOOL SetObjectDefaultValue(FXJSE_HVALUE hObjectValue,
401 FXJSE_HVALUE hNewValue);
402 static void GenerateSomExpression(const CFX_ByteStringC& szName,
403 int32_t iIndexFlags,
404 int32_t iIndexValue,
405 FX_BOOL bIsStar,
406 CFX_ByteString& szSomExp);
407 static FX_BOOL GetObjectByName(FXJSE_HOBJECT hThis,
408 FXJSE_HVALUE accessorValue,
409 const CFX_ByteStringC& szAccessorName);
410 static int32_t ResolveObjects(FXJSE_HOBJECT hThis,
411 FXJSE_HVALUE hParentValue,
412 const CFX_ByteStringC& bsSomExp,
413 XFA_RESOLVENODE_RS& resoveNodeRS,
414 FX_BOOL bdotAccessor = TRUE,
415 FX_BOOL bHasNoResolveName = FALSE);
416 static void ParseResolveResult(FXJSE_HOBJECT hThis,
417 const XFA_RESOLVENODE_RS& resoveNodeRS,
418 FXJSE_HVALUE hParentValue,
419 FXJSE_HVALUE*& resultValues,
420 int32_t& iSize,
421 FX_BOOL& bAttribute);
422
423 static FXJSE_HVALUE GetSimpleHValue(FXJSE_HOBJECT hThis,
424 CFXJSE_Arguments& args,
425 uint32_t index);
426 static FX_BOOL HValueIsNull(FXJSE_HOBJECT hThis, FXJSE_HVALUE hValue);
427 static int32_t HValueToInteger(FXJSE_HOBJECT hThis, FXJSE_HVALUE hValue);
428 static FX_DOUBLE StringToDouble(const CFX_ByteStringC& szStringVal);
429 static FX_FLOAT HValueToFloat(FXJSE_HOBJECT hThis, FXJSE_HVALUE hValue);
430 static FX_DOUBLE HValueToDouble(FXJSE_HOBJECT hThis, FXJSE_HVALUE hValue);
431 static void HValueToUTF8String(FXJSE_HVALUE hValue,
432 CFX_ByteString& outputValue);
433 CXFA_FM2JSContext();
434 ~CXFA_FM2JSContext();
435 static CXFA_FM2JSContext* Create();
436 void Initialize(FXJSE_HRUNTIME hScriptRuntime,
437 FXJSE_HCONTEXT hScriptContext,
438 CXFA_Document* pDoc);
439 void GlobalPropertyGetter(FXJSE_HVALUE hValue);
440 void Release();
441 FXJSE_HRUNTIME GetScriptRuntime() const { return m_hScriptRuntime; }
442 CXFA_Document* GetDocument() const { return m_pDocument; }
443 void ThrowScriptErrorMessage(int32_t iStringID, ...);
444
445 private:
446 FXJSE_HRUNTIME m_hScriptRuntime;
447 FXJSE_CLASS m_fmClass;
448 FXJSE_HCLASS m_hFMClass;
449 FXJSE_HVALUE m_hValue;
450 CXFA_Document* m_pDocument;
451 };
452
453 #endif // XFA_SRC_FXFA_FM2JS_XFA_FM2JSCONTEXT_H_
OLDNEW
« no previous file with comments | « xfa/src/fxfa/fm2js/xfa_fm2jsapi.cpp ('k') | xfa/src/fxfa/fm2js/xfa_fm2jscontext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698