| Index: fpdfsdk/javascript/JS_Value.cpp
|
| diff --git a/fpdfsdk/javascript/JS_Value.cpp b/fpdfsdk/javascript/JS_Value.cpp
|
| index c13d1d405e54a412d0a7ba135c52848bf226f8aa..fa1f7d95c5cfb42c39ce04129b8f9b3fd316fc13 100644
|
| --- a/fpdfsdk/javascript/JS_Value.cpp
|
| +++ b/fpdfsdk/javascript/JS_Value.cpp
|
| @@ -17,11 +17,22 @@
|
| #include "fpdfsdk/javascript/JS_Define.h"
|
| #include "fpdfsdk/javascript/JS_Object.h"
|
|
|
| -static const uint32_t g_nan[2] = {0, 0x7FF80000};
|
| -static double GetNan() {
|
| +namespace {
|
| +
|
| +const uint32_t g_nan[2] = {0, 0x7FF80000};
|
| +
|
| +double GetNan() {
|
| return *(double*)g_nan;
|
| }
|
|
|
| +double
|
| +MakeDate(int year, int mon, int day, int hour, int min, int sec, int ms) {
|
| + return JS_MakeDate(JS_MakeDay(year, mon, day),
|
| + JS_MakeTime(hour, min, sec, ms));
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| CJS_Value::CJS_Value(CJS_Runtime* pRuntime) : m_pJSRuntime(pRuntime) {}
|
|
|
| CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue)
|
| @@ -181,17 +192,19 @@ void CJS_Value::operator=(const FX_CHAR* pStr) {
|
| operator=(CFX_WideString::FromLocal(pStr).c_str());
|
| }
|
|
|
| -void CJS_Value::operator=(CJS_Array& array) {
|
| - m_pValue = static_cast<v8::Local<v8::Array>>(array);
|
| +void CJS_Value::operator=(const CJS_Array& array) {
|
| + ASSERT(m_pJSRuntime == array.GetJSRuntime());
|
| + m_pValue = array.ToV8Array();
|
| }
|
|
|
| -void CJS_Value::operator=(CJS_Date& date) {
|
| - m_pValue = FXJS_NewDate(m_pJSRuntime->GetIsolate(), (double)date);
|
| +void CJS_Value::operator=(const CJS_Date& date) {
|
| + ASSERT(m_pJSRuntime == date.GetJSRuntime());
|
| + m_pValue = FXJS_NewDate(m_pJSRuntime->GetIsolate(), date.ToDouble());
|
| }
|
|
|
| -void CJS_Value::operator=(CJS_Value value) {
|
| +void CJS_Value::operator=(const CJS_Value& value) {
|
| + ASSERT(m_pJSRuntime == value.m_pJSRuntime);
|
| m_pValue = value.ToV8Value();
|
| - m_pJSRuntime = value.m_pJSRuntime;
|
| }
|
|
|
| // static
|
| @@ -314,13 +327,6 @@ void CJS_PropValue::operator>>(v8::Local<v8::Object>& ppObj) const {
|
| ppObj = CJS_Value::ToV8Object();
|
| }
|
|
|
| -void CJS_PropValue::StartSetting() {
|
| - m_bIsSetting = 1;
|
| -}
|
| -
|
| -void CJS_PropValue::StartGetting() {
|
| - m_bIsSetting = 0;
|
| -}
|
| void CJS_PropValue::operator<<(CFX_ByteString str) {
|
| ASSERT(!m_bIsSetting);
|
| CJS_Value::operator=(str.c_str());
|
| @@ -366,10 +372,6 @@ void CJS_PropValue::operator<<(CJS_Date& date) {
|
| CJS_Value::operator=(date);
|
| }
|
|
|
| -CJS_PropValue::operator v8::Local<v8::Value>() const {
|
| - return m_pValue;
|
| -}
|
| -
|
| CJS_Array::CJS_Array(CJS_Runtime* pRuntime) : m_pJSRuntime(pRuntime) {}
|
|
|
| CJS_Array::~CJS_Array() {}
|
| @@ -380,11 +382,7 @@ void CJS_Array::Attach(v8::Local<v8::Array> pArray) {
|
| m_pArray = pArray;
|
| }
|
|
|
| -FX_BOOL CJS_Array::IsAttached() {
|
| - return FALSE;
|
| -}
|
| -
|
| -void CJS_Array::GetElement(unsigned index, CJS_Value& value) {
|
| +void CJS_Array::GetElement(unsigned index, CJS_Value& value) const {
|
| if (m_pArray.IsEmpty())
|
| return;
|
| v8::Local<v8::Value> p =
|
| @@ -400,13 +398,13 @@ void CJS_Array::SetElement(unsigned index, CJS_Value value) {
|
| value.ToV8Value());
|
| }
|
|
|
| -int CJS_Array::GetLength() {
|
| +int CJS_Array::GetLength() const {
|
| if (m_pArray.IsEmpty())
|
| return 0;
|
| return FXJS_GetArrayLength(m_pArray);
|
| }
|
|
|
| -CJS_Array::operator v8::Local<v8::Array>() {
|
| +v8::Local<v8::Array> CJS_Array::ToV8Array() const {
|
| if (m_pArray.IsEmpty())
|
| m_pArray = FXJS_NewArray(m_pJSRuntime->GetIsolate());
|
|
|
| @@ -432,35 +430,23 @@ CJS_Date::CJS_Date(CJS_Runtime* pRuntime,
|
| MakeDate(year, mon, day, hour, min, sec, 0));
|
| }
|
|
|
| -double CJS_Date::MakeDate(int year,
|
| - int mon,
|
| - int day,
|
| - int hour,
|
| - int min,
|
| - int sec,
|
| - int ms) {
|
| - return JS_MakeDate(JS_MakeDay(year, mon, day),
|
| - JS_MakeTime(hour, min, sec, ms));
|
| -}
|
| -
|
| CJS_Date::~CJS_Date() {}
|
|
|
| -FX_BOOL CJS_Date::IsValidDate() {
|
| - if (m_pDate.IsEmpty())
|
| - return FALSE;
|
| - return !JS_PortIsNan(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate));
|
| +bool CJS_Date::IsValidDate() const {
|
| + return !m_pDate.IsEmpty() &&
|
| + !JS_PortIsNan(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate));
|
| }
|
|
|
| void CJS_Date::Attach(v8::Local<v8::Value> pDate) {
|
| m_pDate = pDate;
|
| }
|
|
|
| -int CJS_Date::GetYear() {
|
| - if (IsValidDate())
|
| - return JS_GetYearFromTime(
|
| - JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| +int CJS_Date::GetYear() const {
|
| + if (!IsValidDate())
|
| + return 0;
|
|
|
| - return 0;
|
| + return JS_GetYearFromTime(
|
| + JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| }
|
|
|
| void CJS_Date::SetYear(int iYear) {
|
| @@ -469,12 +455,12 @@ void CJS_Date::SetYear(int iYear) {
|
| FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
|
| }
|
|
|
| -int CJS_Date::GetMonth() {
|
| - if (IsValidDate())
|
| - return JS_GetMonthFromTime(
|
| - JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| +int CJS_Date::GetMonth() const {
|
| + if (!IsValidDate())
|
| + return 0;
|
|
|
| - return 0;
|
| + return JS_GetMonthFromTime(
|
| + JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| }
|
|
|
| void CJS_Date::SetMonth(int iMonth) {
|
| @@ -483,12 +469,12 @@ void CJS_Date::SetMonth(int iMonth) {
|
| FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
|
| }
|
|
|
| -int CJS_Date::GetDay() {
|
| - if (IsValidDate())
|
| - return JS_GetDayFromTime(
|
| - JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| +int CJS_Date::GetDay() const {
|
| + if (!IsValidDate())
|
| + return 0;
|
|
|
| - return 0;
|
| + return JS_GetDayFromTime(
|
| + JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| }
|
|
|
| void CJS_Date::SetDay(int iDay) {
|
| @@ -497,12 +483,12 @@ void CJS_Date::SetDay(int iDay) {
|
| FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
|
| }
|
|
|
| -int CJS_Date::GetHours() {
|
| - if (IsValidDate())
|
| - return JS_GetHourFromTime(
|
| - JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| +int CJS_Date::GetHours() const {
|
| + if (!IsValidDate())
|
| + return 0;
|
|
|
| - return 0;
|
| + return JS_GetHourFromTime(
|
| + JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| }
|
|
|
| void CJS_Date::SetHours(int iHours) {
|
| @@ -511,12 +497,12 @@ void CJS_Date::SetHours(int iHours) {
|
| FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
|
| }
|
|
|
| -int CJS_Date::GetMinutes() {
|
| - if (IsValidDate())
|
| - return JS_GetMinFromTime(
|
| - JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| +int CJS_Date::GetMinutes() const {
|
| + if (!IsValidDate())
|
| + return 0;
|
|
|
| - return 0;
|
| + return JS_GetMinFromTime(
|
| + JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| }
|
|
|
| void CJS_Date::SetMinutes(int minutes) {
|
| @@ -525,12 +511,12 @@ void CJS_Date::SetMinutes(int minutes) {
|
| FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
|
| }
|
|
|
| -int CJS_Date::GetSeconds() {
|
| - if (IsValidDate())
|
| - return JS_GetSecFromTime(
|
| - JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| +int CJS_Date::GetSeconds() const {
|
| + if (!IsValidDate())
|
| + return 0;
|
|
|
| - return 0;
|
| + return JS_GetSecFromTime(
|
| + JS_LocalTime(FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate)));
|
| }
|
|
|
| void CJS_Date::SetSeconds(int seconds) {
|
| @@ -539,19 +525,17 @@ void CJS_Date::SetSeconds(int seconds) {
|
| FXJS_ValueCopy(m_pDate, FXJS_NewDate(m_pJSRuntime->GetIsolate(), date));
|
| }
|
|
|
| -CJS_Date::operator v8::Local<v8::Value>() {
|
| - return m_pDate;
|
| -}
|
| -
|
| -CJS_Date::operator double() const {
|
| +double CJS_Date::ToDouble() const {
|
| if (m_pDate.IsEmpty())
|
| return 0.0;
|
| +
|
| return FXJS_ToNumber(m_pJSRuntime->GetIsolate(), m_pDate);
|
| }
|
|
|
| CFX_WideString CJS_Date::ToString() const {
|
| if (m_pDate.IsEmpty())
|
| return L"";
|
| +
|
| return FXJS_ToString(m_pJSRuntime->GetIsolate(), m_pDate);
|
| }
|
|
|
|
|