summaryrefslogtreecommitdiff
path: root/fxjs/include/cfxjse_value.h
diff options
context:
space:
mode:
authordsinclair <dsinclair@chromium.org>2016-07-12 10:37:52 -0700
committerCommit bot <commit-bot@chromium.org>2016-07-12 10:37:52 -0700
commit08fea801054f3afadb95d0a54efe7da6683c5c5d (patch)
treedc81937c50050c91e6f3ca483d2c0d9d1feceed0 /fxjs/include/cfxjse_value.h
parent5a6c1398d0e559fb6a048cb0dca46ba9f9309a77 (diff)
downloadpdfium-08fea801054f3afadb95d0a54efe7da6683c5c5d.tar.xz
Rename fxjse/ to fxjs/ update files to match class names.
This Cl moves the fxjse/ directory to fxjs/ in anticipation of merging in fpdfsdk/jsapi. In the process the filenames are updated to better match the class contents. Static methods are moved to anonymous namespaces as possible. Review-Url: https://codereview.chromium.org/2136213002
Diffstat (limited to 'fxjs/include/cfxjse_value.h')
-rw-r--r--fxjs/include/cfxjse_value.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/fxjs/include/cfxjse_value.h b/fxjs/include/cfxjse_value.h
new file mode 100644
index 0000000000..7bb2c2d235
--- /dev/null
+++ b/fxjs/include/cfxjse_value.h
@@ -0,0 +1,102 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#ifndef FXJS_INCLUDE_CFXJSE_VALUE_H_
+#define FXJS_INCLUDE_CFXJSE_VALUE_H_
+
+#include "v8/include/v8.h"
+
+#include "core/fxcrt/include/fx_string.h"
+#include "core/fxcrt/include/fx_system.h"
+#include "fxjs/cfxjse_isolatetracker.h"
+#include "fxjs/cfxjse_runtimedata.h"
+
+class CFXJSE_Class;
+class CFXJSE_HostObject;
+
+class CFXJSE_Value {
+ public:
+ explicit CFXJSE_Value(v8::Isolate* pIsolate);
+ ~CFXJSE_Value();
+
+ FX_BOOL IsUndefined() const;
+ FX_BOOL IsNull() const;
+ FX_BOOL IsBoolean() const;
+ FX_BOOL IsString() const;
+ FX_BOOL IsNumber() const;
+ FX_BOOL IsInteger() const;
+ FX_BOOL IsObject() const;
+ FX_BOOL IsArray() const;
+ FX_BOOL IsFunction() const;
+ FX_BOOL IsDate() const;
+ FX_BOOL ToBoolean() const;
+ FX_FLOAT ToFloat() const;
+ double ToDouble() const;
+ int32_t ToInteger() const;
+ CFX_ByteString ToString() const;
+ CFX_WideString ToWideString() const {
+ return CFX_WideString::FromUTF8(ToString().AsStringC());
+ }
+ CFXJSE_HostObject* ToHostObject(CFXJSE_Class* lpClass) const;
+
+ void SetUndefined();
+ void SetNull();
+ void SetBoolean(FX_BOOL bBoolean);
+ void SetInteger(int32_t nInteger);
+ void SetDouble(double dDouble);
+ void SetString(const CFX_ByteStringC& szString);
+ void SetFloat(FX_FLOAT fFloat);
+ void SetJSObject();
+
+ void SetObject(CFXJSE_HostObject* lpObject, CFXJSE_Class* pClass);
+ void SetHostObject(CFXJSE_HostObject* lpObject, CFXJSE_Class* lpClass);
+ void SetArray(uint32_t uValueCount, CFXJSE_Value** rgValues);
+ void SetDate(double dDouble);
+
+ FX_BOOL GetObjectProperty(const CFX_ByteStringC& szPropName,
+ CFXJSE_Value* lpPropValue);
+ FX_BOOL SetObjectProperty(const CFX_ByteStringC& szPropName,
+ CFXJSE_Value* lpPropValue);
+ FX_BOOL GetObjectPropertyByIdx(uint32_t uPropIdx, CFXJSE_Value* lpPropValue);
+ FX_BOOL SetObjectProperty(uint32_t uPropIdx, CFXJSE_Value* lpPropValue);
+ FX_BOOL DeleteObjectProperty(const CFX_ByteStringC& szPropName);
+ FX_BOOL HasObjectOwnProperty(const CFX_ByteStringC& szPropName,
+ FX_BOOL bUseTypeGetter);
+ FX_BOOL SetObjectOwnProperty(const CFX_ByteStringC& szPropName,
+ CFXJSE_Value* lpPropValue);
+ FX_BOOL SetFunctionBind(CFXJSE_Value* lpOldFunction, CFXJSE_Value* lpNewThis);
+ FX_BOOL Call(CFXJSE_Value* lpReceiver,
+ CFXJSE_Value* lpRetValue,
+ uint32_t nArgCount,
+ CFXJSE_Value** lpArgs);
+
+ v8::Isolate* GetIsolate() const { return m_pIsolate; }
+ const v8::Global<v8::Value>& DirectGetValue() const { return m_hValue; }
+ void ForceSetValue(v8::Local<v8::Value> hValue) {
+ m_hValue.Reset(m_pIsolate, hValue);
+ }
+ void Assign(const CFXJSE_Value* lpValue) {
+ ASSERT(lpValue);
+ if (lpValue) {
+ m_hValue.Reset(m_pIsolate, lpValue->m_hValue);
+ } else {
+ m_hValue.Reset();
+ }
+ }
+
+ private:
+ friend class CFXJSE_Class;
+ friend class CFXJSE_Context;
+
+ CFXJSE_Value();
+ CFXJSE_Value(const CFXJSE_Value&);
+ CFXJSE_Value& operator=(const CFXJSE_Value&);
+
+ v8::Isolate* m_pIsolate;
+ v8::Global<v8::Value> m_hValue;
+};
+
+#endif // FXJS_INCLUDE_CFXJSE_VALUE_H_