From e4fde52cc2c827e637c96e8e1f76ba4644cf718a Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Thu, 23 Apr 2015 11:23:10 -0700 Subject: Kill overloaded cast operators in CJS_Value. The red-flag here is the explicit invocation of things like params[1].operator CFX_WideString() rather than static_cast(params[1]) to invoke the conversion. Turns out the above won't compile due to ambiguity given the number of implicit constructors for widestrings. CJS_Value has both constructors and assignment operators for the primitive types, which means that conversions can take place unexpectedly in both directions, a second red flag. We don't want the compiler invoking these at will since it may hide bugs. In fact, when they are removed, three such places were discovered. Also rename ToJSValue to ToV8Value to match the other ToV8xxxxx functions added. R=thestig@chromium.org Review URL: https://codereview.chromium.org/1096813008 --- fpdfsdk/include/javascript/JS_Define.h | 6 +++--- fpdfsdk/include/javascript/JS_Value.h | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) (limited to 'fpdfsdk/include/javascript') diff --git a/fpdfsdk/include/javascript/JS_Define.h b/fpdfsdk/include/javascript/JS_Define.h index 67f283b40e..2a033d15c5 100644 --- a/fpdfsdk/include/javascript/JS_Define.h +++ b/fpdfsdk/include/javascript/JS_Define.h @@ -137,7 +137,7 @@ void JSMethod(const char* method_name_string, JS_Error(isolate, JSFormatErrorString(class_name_string, method_name_string, sError)); return; } - info.GetReturnValue().Set(valueRes.ToJSValue()); + info.GetReturnValue().Set(valueRes.ToV8Value()); } #define JS_STATIC_METHOD(method_name, class_name) \ @@ -404,7 +404,7 @@ void JSGlobalFunc(const char *func_name_string, JS_Error(isolate, JSFormatErrorString(func_name_string, nullptr, sError)); return; } - info.GetReturnValue().Set(valueRes.ToJSValue()); + info.GetReturnValue().Set(valueRes.ToV8Value()); } #define JS_STATIC_GLOBAL_FUN(fun_name) \ @@ -452,7 +452,7 @@ for (int i=0; i() const; - operator v8::Handle() const; - operator CFX_WideString() const; - operator CFX_ByteString() const; - v8::Handle ToJSValue(); + int ToInt() const; + bool ToBool() const; + double ToDouble() const; + float ToFloat() const; + CJS_Object* ToCJSObject() const; + CFX_WideString ToCFXWideString() const; + CFX_ByteString ToCFXByteString() const; + v8::Handle ToV8Object() const; + v8::Handle ToV8Array() const; + v8::Handle ToV8Value() const; void operator = (int iValue); void operator = (bool bValue); -- cgit v1.2.3