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 #ifndef FPDFSDK_JAVASCRIPT_JS_VALUE_H_ | 7 #ifndef FPDFSDK_JAVASCRIPT_JS_VALUE_H_ |
| 8 #define FPDFSDK_JAVASCRIPT_JS_VALUE_H_ | 8 #define FPDFSDK_JAVASCRIPT_JS_VALUE_H_ |
| 9 | 9 |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 65 // Replace the current |m_pValue| with a v8::Number if possible | 65 // Replace the current |m_pValue| with a v8::Number if possible |
| 66 // to make one from the current |m_pValue|. | 66 // to make one from the current |m_pValue|. |
| 67 void MaybeCoerceToNumber(); | 67 void MaybeCoerceToNumber(); |
| 68 | 68 |
| 69 void operator=(int iValue); | 69 void operator=(int iValue); |
| 70 void operator=(bool bValue); | 70 void operator=(bool bValue); |
| 71 void operator=(double val); | 71 void operator=(double val); |
| 72 void operator=(float val); | 72 void operator=(float val); |
| 73 void operator=(CJS_Object* val); | 73 void operator=(CJS_Object* val); |
| 74 void operator=(v8::Local<v8::Object> val); | 74 void operator=(v8::Local<v8::Object> val); |
| 75 void operator=(CJS_Array& val); | 75 void operator=(const CJS_Array& val); |
| 76 void operator=(CJS_Date& val); | 76 void operator=(const CJS_Date& val); |
| 77 void operator=(const CJS_Value& value); | |
| 78 void operator=(const FX_CHAR* pStr); | |
| 77 void operator=(const FX_WCHAR* pWstr); | 79 void operator=(const FX_WCHAR* pWstr); |
| 78 void operator=(const FX_CHAR* pStr); | |
| 79 void operator=(CJS_Value value); | |
| 80 | 80 |
| 81 FX_BOOL IsArrayObject() const; | 81 FX_BOOL IsArrayObject() const; |
| 82 FX_BOOL IsDateObject() const; | 82 FX_BOOL IsDateObject() const; |
| 83 FX_BOOL ConvertToArray(CJS_Array&) const; | 83 FX_BOOL ConvertToArray(CJS_Array&) const; |
| 84 FX_BOOL ConvertToDate(CJS_Date&) const; | 84 FX_BOOL ConvertToDate(CJS_Date&) const; |
| 85 | 85 |
| 86 CJS_Runtime* GetJSRuntime() const { return m_pJSRuntime; } | 86 CJS_Runtime* GetJSRuntime() const { return m_pJSRuntime; } |
| 87 | 87 |
| 88 protected: | 88 protected: |
| 89 v8::Local<v8::Value> m_pValue; | 89 v8::Local<v8::Value> m_pValue; |
| 90 CJS_Runtime* m_pJSRuntime; | 90 CJS_Runtime* const m_pJSRuntime; |
| 91 }; | 91 }; |
| 92 | 92 |
| 93 class CJS_PropValue : public CJS_Value { | 93 class CJS_PropValue : public CJS_Value { |
| 94 public: | 94 public: |
| 95 explicit CJS_PropValue(CJS_Runtime* pRuntime); | |
| 95 CJS_PropValue(const CJS_Value&); | 96 CJS_PropValue(const CJS_Value&); |
| 96 CJS_PropValue(CJS_Runtime* pRuntime); | |
| 97 ~CJS_PropValue(); | 97 ~CJS_PropValue(); |
| 98 | 98 |
| 99 FX_BOOL IsSetting() const { return m_bIsSetting; } | 99 void StartSetting() { m_bIsSetting = true; } |
| 100 FX_BOOL IsGetting() const { return !m_bIsSetting; } | 100 void StartGetting() { m_bIsSetting = false; } |
| 101 bool IsSetting() const { return m_bIsSetting; } | |
| 102 bool IsGetting() const { return !m_bIsSetting; } | |
| 101 | 103 |
| 102 void operator<<(int val); | 104 void operator<<(int val); |
| 103 void operator>>(int&) const; | 105 void operator>>(int&) const; |
| 104 void operator<<(bool val); | 106 void operator<<(bool val); |
| 105 void operator>>(bool&) const; | 107 void operator>>(bool&) const; |
| 106 void operator<<(double val); | 108 void operator<<(double val); |
| 107 void operator>>(double&) const; | 109 void operator>>(double&) const; |
| 108 void operator<<(CJS_Object* pObj); | 110 void operator<<(CJS_Object* pObj); |
| 109 void operator>>(CJS_Object*& ppObj) const; | 111 void operator>>(CJS_Object*& ppObj) const; |
| 110 void operator<<(CJS_Document* pJsDoc); | 112 void operator<<(CJS_Document* pJsDoc); |
| 111 void operator>>(CJS_Document*& ppJsDoc) const; | 113 void operator>>(CJS_Document*& ppJsDoc) const; |
| 112 void operator<<(CFX_ByteString); | 114 void operator<<(CFX_ByteString); |
| 113 void operator>>(CFX_ByteString&) const; | 115 void operator>>(CFX_ByteString&) const; |
| 114 void operator<<(CFX_WideString); | 116 void operator<<(CFX_WideString); |
| 115 void operator>>(CFX_WideString&) const; | 117 void operator>>(CFX_WideString&) const; |
| 116 void operator<<(const FX_WCHAR* c_string); | 118 void operator<<(const FX_WCHAR* c_string); |
| 117 void operator<<(v8::Local<v8::Object>); | 119 void operator<<(v8::Local<v8::Object>); |
| 118 void operator>>(v8::Local<v8::Object>&) const; | 120 void operator>>(v8::Local<v8::Object>&) const; |
| 119 void operator>>(CJS_Array& array) const; | 121 void operator>>(CJS_Array& array) const; |
| 120 void operator<<(CJS_Array& array); | 122 void operator<<(CJS_Array& array); |
| 121 void operator<<(CJS_Date& date); | 123 void operator<<(CJS_Date& date); |
| 122 void operator>>(CJS_Date& date) const; | 124 void operator>>(CJS_Date& date) const; |
| 123 operator v8::Local<v8::Value>() const; | |
| 124 void StartSetting(); | |
| 125 void StartGetting(); | |
| 126 | 125 |
| 127 private: | 126 private: |
| 128 FX_BOOL m_bIsSetting; | 127 bool m_bIsSetting; |
| 129 }; | 128 }; |
| 130 | 129 |
| 131 class CJS_Array { | 130 class CJS_Array { |
| 132 public: | 131 public: |
| 133 CJS_Array(CJS_Runtime* pRuntime); | 132 explicit CJS_Array(CJS_Runtime* pRuntime); |
| 133 CJS_Array(const CJS_Array& other); | |
| 134 virtual ~CJS_Array(); | 134 virtual ~CJS_Array(); |
| 135 CJS_Array(const CJS_Array& other); | |
| 136 | 135 |
| 137 void Attach(v8::Local<v8::Array> pArray); | 136 void Attach(v8::Local<v8::Array> pArray); |
| 138 void GetElement(unsigned index, CJS_Value& value); | 137 void GetElement(unsigned index, CJS_Value& value) const; |
| 139 void SetElement(unsigned index, CJS_Value value); | 138 void SetElement(unsigned index, CJS_Value value); |
| 140 int GetLength(); | 139 int GetLength() const; |
| 141 FX_BOOL IsAttached(); | |
| 142 operator v8::Local<v8::Array>(); | |
| 143 | 140 |
| 141 v8::Local<v8::Array> ToV8Array() const; | |
| 144 CJS_Runtime* GetJSRuntime() const { return m_pJSRuntime; } | 142 CJS_Runtime* GetJSRuntime() const { return m_pJSRuntime; } |
| 145 | 143 |
| 146 private: | 144 private: |
| 147 v8::Local<v8::Array> m_pArray; | 145 mutable v8::Local<v8::Array> m_pArray; |
|
Tom Sepez
2016/07/25 17:24:46
Note: mutable because some const get operations ma
| |
| 148 CJS_Runtime* m_pJSRuntime; | 146 CJS_Runtime* const m_pJSRuntime; |
| 149 }; | 147 }; |
| 150 | 148 |
| 151 class CJS_Date { | 149 class CJS_Date { |
| 152 friend class CJS_Value; | |
| 153 | |
| 154 public: | 150 public: |
| 155 CJS_Date(CJS_Runtime* pRuntime); | 151 explicit CJS_Date(CJS_Runtime* pRuntime); |
| 156 CJS_Date(CJS_Runtime* pRuntime, double dMsec_time); | 152 CJS_Date(CJS_Runtime* pRuntime, double dMsec_time); |
| 157 CJS_Date(CJS_Runtime* pRuntime, | 153 CJS_Date(CJS_Runtime* pRuntime, |
| 158 int year, | 154 int year, |
| 159 int mon, | 155 int mon, |
| 160 int day, | 156 int day, |
| 161 int hour, | 157 int hour, |
| 162 int min, | 158 int min, |
| 163 int sec); | 159 int sec); |
| 164 virtual ~CJS_Date(); | 160 virtual ~CJS_Date(); |
| 161 | |
| 165 void Attach(v8::Local<v8::Value> pDate); | 162 void Attach(v8::Local<v8::Value> pDate); |
| 163 bool IsValidDate() const; | |
| 166 | 164 |
| 167 int GetYear(); | 165 int GetYear() const; |
| 168 void SetYear(int iYear); | 166 void SetYear(int iYear); |
| 169 | 167 |
| 170 int GetMonth(); | 168 int GetMonth() const; |
| 171 void SetMonth(int iMonth); | 169 void SetMonth(int iMonth); |
| 172 | 170 |
| 173 int GetDay(); | 171 int GetDay() const; |
| 174 void SetDay(int iDay); | 172 void SetDay(int iDay); |
| 175 | 173 |
| 176 int GetHours(); | 174 int GetHours() const; |
| 177 void SetHours(int iHours); | 175 void SetHours(int iHours); |
| 178 | 176 |
| 179 int GetMinutes(); | 177 int GetMinutes() const; |
| 180 void SetMinutes(int minutes); | 178 void SetMinutes(int minutes); |
| 181 | 179 |
| 182 int GetSeconds(); | 180 int GetSeconds() const; |
| 183 void SetSeconds(int seconds); | 181 void SetSeconds(int seconds); |
| 184 | 182 |
| 185 operator v8::Local<v8::Value>(); | 183 CJS_Runtime* GetJSRuntime() const { return m_pJSRuntime; } |
| 186 operator double() const; | 184 v8::Local<v8::Value> ToV8Value() const { return m_pDate; } |
| 187 | 185 double ToDouble() const; |
| 188 CFX_WideString ToString() const; | 186 CFX_WideString ToString() const; |
| 189 | 187 |
| 190 static double | |
| 191 MakeDate(int year, int mon, int mday, int hour, int min, int sec, int ms); | |
| 192 | |
| 193 FX_BOOL IsValidDate(); | |
| 194 | |
| 195 protected: | 188 protected: |
| 196 v8::Local<v8::Value> m_pDate; | 189 v8::Local<v8::Value> m_pDate; |
| 197 CJS_Runtime* m_pJSRuntime; | 190 CJS_Runtime* const m_pJSRuntime; |
| 198 }; | 191 }; |
| 199 | 192 |
| 200 double JS_GetDateTime(); | 193 double JS_GetDateTime(); |
| 201 int JS_GetYearFromTime(double dt); | 194 int JS_GetYearFromTime(double dt); |
| 202 int JS_GetMonthFromTime(double dt); | 195 int JS_GetMonthFromTime(double dt); |
| 203 int JS_GetDayFromTime(double dt); | 196 int JS_GetDayFromTime(double dt); |
| 204 int JS_GetHourFromTime(double dt); | 197 int JS_GetHourFromTime(double dt); |
| 205 int JS_GetMinFromTime(double dt); | 198 int JS_GetMinFromTime(double dt); |
| 206 int JS_GetSecFromTime(double dt); | 199 int JS_GetSecFromTime(double dt); |
| 207 double JS_DateParse(const CFX_WideString& str); | 200 double JS_DateParse(const CFX_WideString& str); |
| 208 double JS_MakeDay(int nYear, int nMonth, int nDay); | 201 double JS_MakeDay(int nYear, int nMonth, int nDay); |
| 209 double JS_MakeTime(int nHour, int nMin, int nSec, int nMs); | 202 double JS_MakeTime(int nHour, int nMin, int nSec, int nMs); |
| 210 double JS_MakeDate(double day, double time); | 203 double JS_MakeDate(double day, double time); |
| 211 bool JS_PortIsNan(double d); | 204 bool JS_PortIsNan(double d); |
| 212 double JS_LocalTime(double d); | 205 double JS_LocalTime(double d); |
| 213 | 206 |
| 214 // Some JS methods have the bizarre convention that they may also be called | 207 // Some JS methods have the bizarre convention that they may also be called |
| 215 // with a single argument which is an object containing the actual arguments | 208 // with a single argument which is an object containing the actual arguments |
| 216 // as its properties. The varying arguments to this method are the property | 209 // as its properties. The varying arguments to this method are the property |
| 217 // names as wchar_t string literals corresponding to each positional argument. | 210 // names as wchar_t string literals corresponding to each positional argument. |
| 218 // The result will always contain |nKeywords| value, with unspecified ones | 211 // The result will always contain |nKeywords| value, with unspecified ones |
| 219 // being set to type VT_unknown. | 212 // being set to type VT_unknown. |
| 220 std::vector<CJS_Value> JS_ExpandKeywordParams( | 213 std::vector<CJS_Value> JS_ExpandKeywordParams( |
| 221 CJS_Runtime* pRuntime, | 214 CJS_Runtime* pRuntime, |
| 222 const std::vector<CJS_Value>& originals, | 215 const std::vector<CJS_Value>& originals, |
| 223 size_t nKeywords, | 216 size_t nKeywords, |
| 224 ...); | 217 ...); |
| 225 | 218 |
| 226 #endif // FPDFSDK_JAVASCRIPT_JS_VALUE_H_ | 219 #endif // FPDFSDK_JAVASCRIPT_JS_VALUE_H_ |
| OLD | NEW |