From fb2a824f87f7096382681fd258906823ef93ebec Mon Sep 17 00:00:00 2001 From: tsepez Date: Wed, 1 Jun 2016 16:10:41 -0700 Subject: Don't use array for only one compatible mode script Also, don't invent an enum that has one possible value that is always set. Review-Url: https://codereview.chromium.org/2028343002 --- xfa/fxjse/context.cpp | 66 +++++++++++++++++++++++------------------------ xfa/fxjse/include/fxjse.h | 9 +------ 2 files changed, 34 insertions(+), 41 deletions(-) (limited to 'xfa/fxjse') diff --git a/xfa/fxjse/context.cpp b/xfa/fxjse/context.cpp index a277d4d412..75be76d673 100644 --- a/xfa/fxjse/context.cpp +++ b/xfa/fxjse/context.cpp @@ -10,6 +10,37 @@ #include "xfa/fxjse/scope_inline.h" #include "xfa/fxjse/value.h" +namespace { + +const FX_CHAR szCompatibleModeScript[] = + "(function(global, list) {\n" + " 'use strict';\n" + " var objname;\n" + " for (objname in list) {\n" + " var globalobj = global[objname];\n" + " if (globalobj) {\n" + " list[objname].forEach(function(name) {\n" + " if (!globalobj[name]) {\n" + " Object.defineProperty(globalobj, name, {\n" + " writable: true,\n" + " enumerable: false,\n" + " value: (function(obj) {\n" + " if (arguments.length === 0) {\n" + " throw new TypeError('missing argument 0 when calling " + " function ' + objname + '.' + name);\n" + " }\n" + " return globalobj.prototype[name].apply(obj, " + " Array.prototype.slice.call(arguments, 1));\n" + " })\n" + " });\n" + " }\n" + " });\n" + " }\n" + " }\n" + "}(this, {String: ['substr', 'toUpperCase']}));"; + +} // namespace + v8::Local FXJSE_GetGlobalObjectFromContext( const v8::Local& hContext) { return hContext->Global()->GetPrototype().As(); @@ -73,39 +104,8 @@ CFXJSE_Value* FXJSE_Context_GetGlobalObject(CFXJSE_Context* pContext) { return lpValue; } -static const FX_CHAR* szCompatibleModeScripts[] = { - "(function(global, list) {\n" - " 'use strict';\n" - " var objname;\n" - " for (objname in list) {\n" - " var globalobj = global[objname];\n" - " if (globalobj) {\n" - " list[objname].forEach(function(name) {\n" - " if (!globalobj[name]) {\n" - " Object.defineProperty(globalobj, name, {\n" - " writable: true,\n" - " enumerable: false,\n" - " value: (function(obj) {\n" - " if (arguments.length === 0) {\n" - " throw new TypeError('missing argument 0 when calling " - " function ' + objname + '.' + name);\n" - " }\n" - " return globalobj.prototype[name].apply(obj, " - " Array.prototype.slice.call(arguments, 1));\n" - " })\n" - " });\n" - " }\n" - " });\n" - " }\n" - " }\n" - "}(this, {String: ['substr', 'toUpperCase']}));"}; -void FXJSE_Context_EnableCompatibleMode(CFXJSE_Context* pContext, - uint32_t dwCompatibleFlags) { - for (uint32_t i = 0; i < (uint32_t)FXJSE_COMPATIBLEMODEFLAGCOUNT; i++) { - if (dwCompatibleFlags & (1 << i)) { - FXJSE_ExecuteScript(pContext, szCompatibleModeScripts[i], NULL, NULL); - } - } +void FXJSE_Context_EnableCompatibleMode(CFXJSE_Context* pContext) { + FXJSE_ExecuteScript(pContext, szCompatibleModeScript, nullptr, nullptr); } FX_BOOL FXJSE_ExecuteScript(CFXJSE_Context* pContext, diff --git a/xfa/fxjse/include/fxjse.h b/xfa/fxjse/include/fxjse.h index ab95a6d675..8a34ad0c7b 100644 --- a/xfa/fxjse/include/fxjse.h +++ b/xfa/fxjse/include/fxjse.h @@ -36,11 +36,6 @@ enum FXJSE_ClassPropTypes { FXJSE_ClassPropType_Method }; -enum FXJSE_CompatibleModeFlags { - FXJSE_COMPATIBLEMODEFLAG_CONSTRUCTOREXTRAMETHODS = (1 << 0), - FXJSE_COMPATIBLEMODEFLAGCOUNT = 1, -}; - struct FXJSE_FUNCTION_DESCRIPTOR { const FX_CHAR* name; FXJSE_FuncCallback callbackProc; @@ -78,9 +73,7 @@ CFXJSE_Context* FXJSE_Context_Create( CFXJSE_HostObject* lpGlobalObject); void FXJSE_Context_Release(CFXJSE_Context* pContext); CFXJSE_Value* FXJSE_Context_GetGlobalObject(CFXJSE_Context* pContext); - -void FXJSE_Context_EnableCompatibleMode(CFXJSE_Context* pContext, - uint32_t dwCompatibleFlags); +void FXJSE_Context_EnableCompatibleMode(CFXJSE_Context* pContext); CFXJSE_Class* FXJSE_DefineClass(CFXJSE_Context* pContext, const FXJSE_CLASS_DESCRIPTOR* lpClass); -- cgit v1.2.3