summaryrefslogtreecommitdiff
path: root/fxjs/fxjse.h
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2018-07-23 18:03:44 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-07-23 18:03:44 +0000
commit721f5fa5061f2dec8282b7bde48c9d4721208b7a (patch)
treeef73827b16830ae0fe3f535783aa34b194f8257a /fxjs/fxjse.h
parent3ba611a551efb23518ac16f8bb23ab5ac4ca2c59 (diff)
downloadpdfium-721f5fa5061f2dec8282b7bde48c9d4721208b7a.tar.xz
Replace CFXJSE_HostObject::type_ with polymorphic conversion methods
More foolproof technique, and saves one word in every instance at a cost of two pointers in every subclass vtable. Change-Id: Ied4f91d4d203b5e6d83abe751159eb7e55489bb5 Reviewed-on: https://pdfium-review.googlesource.com/38530 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'fxjs/fxjse.h')
-rw-r--r--fxjs/fxjse.h15
1 files changed, 7 insertions, 8 deletions
diff --git a/fxjs/fxjse.h b/fxjs/fxjse.h
index addd148117..3f2eb1d836 100644
--- a/fxjs/fxjse.h
+++ b/fxjs/fxjse.h
@@ -12,23 +12,22 @@
#include "v8/include/v8.h"
class CFXJSE_Arguments;
+class CFXJSE_FormCalcContext;
class CFXJSE_Value;
class CJS_Return;
+class CXFA_Object;
// C++ object which is retrieved from v8 object's slot.
class CFXJSE_HostObject {
public:
- virtual ~CFXJSE_HostObject() {}
+ virtual ~CFXJSE_HostObject();
- // Small layering violation here, but we need to distinguish between the
- // two kinds of subclasses.
- enum Type { kXFA, kFM2JS };
- Type type() const { return type_; }
+ // Two subclasses.
+ virtual CFXJSE_FormCalcContext* AsFormCalcContext();
+ virtual CXFA_Object* AsCXFAObject();
protected:
- explicit CFXJSE_HostObject(Type type) { type_ = type; }
-
- Type type_;
+ CFXJSE_HostObject();
};
typedef CJS_Return (*FXJSE_MethodCallback)(