Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "JS_Value.h" | 7 #include "JS_Value.h" |
| 8 | 8 |
| 9 #include <time.h> | 9 #include <time.h> |
| 10 #include <algorithm> | |
| 10 #include <cmath> | 11 #include <cmath> |
| 11 #include <limits> | 12 #include <limits> |
| 12 | 13 |
| 13 #include "Document.h" | 14 #include "Document.h" |
| 14 #include "JS_Define.h" | 15 #include "JS_Define.h" |
| 15 #include "JS_Object.h" | 16 #include "JS_Object.h" |
| 16 | 17 |
| 17 static const FX_DWORD g_nan[2] = {0, 0x7FF80000}; | 18 static const FX_DWORD g_nan[2] = {0, 0x7FF80000}; |
| 18 static double GetNan() { | 19 static double GetNan() { |
| 19 return *(double*)g_nan; | 20 return *(double*)g_nan; |
| (...skipping 852 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 872 return day * 86400000 + time; | 873 return day * 86400000 + time; |
| 873 } | 874 } |
| 874 | 875 |
| 875 bool JS_PortIsNan(double d) { | 876 bool JS_PortIsNan(double d) { |
| 876 return d != d; | 877 return d != d; |
| 877 } | 878 } |
| 878 | 879 |
| 879 double JS_LocalTime(double d) { | 880 double JS_LocalTime(double d) { |
| 880 return JS_GetDateTime() + _getDaylightSavingTA(d); | 881 return JS_GetDateTime() + _getDaylightSavingTA(d); |
| 881 } | 882 } |
| 883 | |
| 884 std::vector<CJS_Value> JS_ExpandKeywordParams( | |
| 885 CJS_Runtime* pRuntime, | |
| 886 const std::vector<CJS_Value>& originals, | |
| 887 size_t nKeywords, | |
| 888 ...) { | |
| 889 ASSERT(nKeywords); | |
| 890 | |
| 891 std::vector<CJS_Value> result(nKeywords, CJS_Value(pRuntime)); | |
| 892 size_t size = std::min(originals.size(), nKeywords); | |
| 893 for (size_t i = 0; i < size; ++i) | |
| 894 result[i] = originals[i]; | |
| 895 | |
| 896 if (originals.size() != 1 || originals[0].GetType() != CJS_Value::VT_object || | |
|
Lei Zhang
2016/01/28 02:11:11
Wouldn't we go out of bounds if |originals| is emp
Tom Sepez
2016/01/28 17:07:36
I'm counting on the originals.size() != 1 check to
Lei Zhang
2016/01/28 22:58:55
Ya, I was being stupid. Ignore.
| |
| 897 originals[0].IsArrayObject()) | |
|
Lei Zhang
2016/01/28 02:11:11
braces?
Tom Sepez
2016/01/28 17:07:36
Yup.
| |
| 898 return result; | |
| 899 | |
| 900 v8::Local<v8::Object> pObj = originals[0].ToV8Object(); | |
| 901 result[0] = CJS_Value(pRuntime); // Make unknown. | |
| 902 | |
| 903 va_list ap; | |
| 904 va_start(ap, nKeywords); | |
| 905 for (int i = 0; i < nKeywords; ++i) { | |
| 906 const wchar_t* property = va_arg(ap, const wchar_t*); | |
| 907 v8::Local<v8::Value> v8Value = | |
| 908 FXJS_GetObjectElement(pRuntime->GetIsolate(), pObj, property); | |
| 909 if (!v8Value->IsUndefined()) | |
| 910 result[i] = CJS_Value(pRuntime, v8Value, CJS_Value::VT_unknown); | |
| 911 } | |
| 912 va_end(ap); | |
| 913 return result; | |
| 914 } | |
| OLD | NEW |