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

Side by Side Diff: fpdfsdk/src/javascript/app.cpp

Issue 1641693003: Fix behaviour of app.alert() with a single object argument. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Fix spelling, naming, braces. Created 4 years, 10 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/src/javascript/JS_Value.cpp ('k') | samples/pdfium_test.cc » ('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 "app.h" 7 #include "app.h"
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 const std::vector<CJS_Value>& params, 239 const std::vector<CJS_Value>& params,
240 CJS_Value& vRet, 240 CJS_Value& vRet,
241 CFX_WideString& sError) { 241 CFX_WideString& sError) {
242 return TRUE; 242 return TRUE;
243 } 243 }
244 244
245 FX_BOOL app::alert(IJS_Context* cc, 245 FX_BOOL app::alert(IJS_Context* cc,
246 const std::vector<CJS_Value>& params, 246 const std::vector<CJS_Value>& params,
247 CJS_Value& vRet, 247 CJS_Value& vRet,
248 CFX_WideString& sError) { 248 CFX_WideString& sError) {
249 int iSize = params.size(); 249 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
250 if (iSize < 1) 250 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc);
251 std::vector<CJS_Value> newParams = JS_ExpandKeywordParams(
252 pRuntime, params, 4, L"cMsg", L"nIcon", L"nType", L"cTitle");
253
254 if (newParams[0].GetType() == CJS_Value::VT_unknown) {
255 sError = JSGetStringFromID(pContext, IDS_STRING_JSPARAMERROR);
251 return FALSE; 256 return FALSE;
257 }
252 258
253 CFX_WideString swMsg = L""; 259 CFX_WideString swMsg;
254 CFX_WideString swTitle = L""; 260 if (newParams[0].GetType() == CJS_Value::VT_object) {
255 int iIcon = 0; 261 CJS_Array carray(pRuntime);
256 int iType = 0; 262 if (newParams[0].ConvertToArray(carray)) {
257 263 swMsg = L"[";
258 CJS_Runtime* pRuntime = CJS_Runtime::FromContext(cc); 264 CJS_Value element(pRuntime);
259 v8::Isolate* isolate = pRuntime->GetIsolate(); 265 for (int i = 0; i < carray.GetLength(); ++i) {
260 266 if (i)
261 if (iSize == 1) { 267 swMsg += L", ";
262 if (params[0].GetType() == CJS_Value::VT_object) { 268 carray.GetElement(i, element);
263 v8::Local<v8::Object> pObj = params[0].ToV8Object(); 269 swMsg += element.ToCFXWideString();
264 {
265 v8::Local<v8::Value> pValue =
266 FXJS_GetObjectElement(isolate, pObj, L"cMsg");
267 swMsg = CJS_Value(pRuntime, pValue, CJS_Value::VT_unknown)
268 .ToCFXWideString();
269
270 pValue = FXJS_GetObjectElement(isolate, pObj, L"cTitle");
271 swTitle = CJS_Value(pRuntime, pValue, CJS_Value::VT_unknown)
272 .ToCFXWideString();
273
274 pValue = FXJS_GetObjectElement(isolate, pObj, L"nIcon");
275 iIcon = CJS_Value(pRuntime, pValue, CJS_Value::VT_unknown).ToInt();
276
277 pValue = FXJS_GetObjectElement(isolate, pObj, L"nType");
278 iType = CJS_Value(pRuntime, pValue, CJS_Value::VT_unknown).ToInt();
279 } 270 }
280 271 swMsg += L"]";
281 if (swMsg == L"") {
282 CJS_Array carray(pRuntime);
283 if (params[0].ConvertToArray(carray)) {
284 int iLength = carray.GetLength();
285 CJS_Value* pValue = new CJS_Value(pRuntime);
286 for (int i = 0; i < iLength; ++i) {
287 carray.GetElement(i, *pValue);
288 swMsg += (*pValue).ToCFXWideString();
289 if (i < iLength - 1)
290 swMsg += L", ";
291 }
292
293 delete pValue;
294 }
295 }
296
297 if (swTitle == L"")
298 swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
299 } else if (params[0].GetType() == CJS_Value::VT_boolean) {
300 FX_BOOL bGet = params[0].ToBool();
301 if (bGet)
302 swMsg = L"true";
303 else
304 swMsg = L"false";
305
306 swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
307 } else { 272 } else {
308 swMsg = params[0].ToCFXWideString(); 273 swMsg = newParams[0].ToCFXWideString();
309 swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
310 } 274 }
311 } else { 275 } else {
312 if (params[0].GetType() == CJS_Value::VT_boolean) { 276 swMsg = newParams[0].ToCFXWideString();
313 FX_BOOL bGet = params[0].ToBool(); 277 }
314 if (bGet)
315 swMsg = L"true";
316 else
317 swMsg = L"false";
318 } else {
319 swMsg = params[0].ToCFXWideString();
320 }
321 swTitle = JSGetStringFromID((CJS_Context*)cc, IDS_STRING_JSALERT);
322 278
323 for (int i = 1; i < iSize; i++) { 279 int iIcon = 0;
324 if (i == 1) 280 if (newParams[1].GetType() != CJS_Value::VT_unknown)
325 iIcon = params[i].ToInt(); 281 iIcon = newParams[1].ToInt();
326 if (i == 2) 282
327 iType = params[i].ToInt(); 283 int iType = 0;
328 if (i == 3) 284 if (newParams[2].GetType() != CJS_Value::VT_unknown)
329 swTitle = params[i].ToCFXWideString(); 285 iType = newParams[2].ToInt();
330 } 286
331 } 287 CFX_WideString swTitle;
288 if (newParams[3].GetType() != CJS_Value::VT_unknown)
289 swTitle = newParams[3].ToCFXWideString();
290 else
291 swTitle = JSGetStringFromID(pContext, IDS_STRING_JSALERT);
332 292
333 pRuntime->BeginBlock(); 293 pRuntime->BeginBlock();
334 vRet = MsgBox(pRuntime->GetReaderApp(), swMsg.c_str(), swTitle.c_str(), iType, 294 vRet = MsgBox(pRuntime->GetReaderApp(), swMsg.c_str(), swTitle.c_str(), iType,
335 iIcon); 295 iIcon);
336 pRuntime->EndBlock(); 296 pRuntime->EndBlock();
337 return TRUE; 297 return TRUE;
338 } 298 }
339 299
340 FX_BOOL app::beep(IJS_Context* cc, 300 FX_BOOL app::beep(IJS_Context* cc,
341 const std::vector<CJS_Value>& params, 301 const std::vector<CJS_Value>& params,
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 FX_BOOL app::media(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) { 750 FX_BOOL app::media(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) {
791 return FALSE; 751 return FALSE;
792 } 752 }
793 753
794 FX_BOOL app::execDialog(IJS_Context* cc, 754 FX_BOOL app::execDialog(IJS_Context* cc,
795 const std::vector<CJS_Value>& params, 755 const std::vector<CJS_Value>& params,
796 CJS_Value& vRet, 756 CJS_Value& vRet,
797 CFX_WideString& sError) { 757 CFX_WideString& sError) {
798 return TRUE; 758 return TRUE;
799 } 759 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/javascript/JS_Value.cpp ('k') | samples/pdfium_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698