Fixed <rdar://problem/3964634> undefined property value from binding seems to evalua...
[WebKit-https.git] / JavaScriptCore / bindings / objc / objc_runtime.mm
index 8c83e57963055e7fe690540d3e2b65c193f5e1c6..bcc00da113a52753c22b3e68bf80c92e344d9e08 100644 (file)
@@ -283,9 +283,24 @@ bool ObjcFallbackObjectImp::canPut(ExecState *exec, const Identifier &propertyNa
 }
 
 
 }
 
 
+Type ObjcFallbackObjectImp::type() const
+{
+    id targetObject = _instance->getObject();
+    
+    if ([targetObject respondsToSelector:@selector(invokeUndefinedMethodFromWebScript:withArguments:)])
+       return ObjectType;
+    
+    return UndefinedType;
+}
+
 bool ObjcFallbackObjectImp::implementsCall() const
 {
 bool ObjcFallbackObjectImp::implementsCall() const
 {
-    return true;
+    id targetObject = _instance->getObject();
+    
+    if ([targetObject respondsToSelector:@selector(invokeUndefinedMethodFromWebScript:withArguments:)])
+       return true;
+    
+    return false;
 }
 
 Value ObjcFallbackObjectImp::call(ExecState *exec, Object &thisObj, const List &args)
 }
 
 Value ObjcFallbackObjectImp::call(ExecState *exec, Object &thisObj, const List &args)
@@ -334,3 +349,12 @@ Value ObjcFallbackObjectImp::defaultValue(ExecState *exec, Type hint) const
     return _instance->getValueOfUndefinedField(exec, _item, hint);
 }
 
     return _instance->getValueOfUndefinedField(exec, _item, hint);
 }
 
+bool ObjcFallbackObjectImp::toBoolean(ExecState *exec) const
+{
+    id targetObject = _instance->getObject();
+    
+    if ([targetObject respondsToSelector:@selector(invokeUndefinedMethodFromWebScript:withArguments:)])
+       return true;
+    
+    return false;
+}