Reviewed by Hyatt.
* bindings/objc/objc_instance.mm:
(ObjcInstance::stringValue):
* bindings/objc/objc_utility.h:
* bindings/objc/objc_utility.mm:
(KJS::Bindings::convertNSStringToString):
(KJS::Bindings::convertObjcValueToValue):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8019
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2004-11-15 Richard Williamson <rjw@apple.com>
+
+ Fixed <rdar://problem/3880561> Default string value of ObjC object in JS should be [obj description].
+
+ Reviewed by Hyatt.
+
+ * bindings/objc/objc_instance.mm:
+ (ObjcInstance::stringValue):
+ * bindings/objc/objc_utility.h:
+ * bindings/objc/objc_utility.mm:
+ (KJS::Bindings::convertNSStringToString):
+ (KJS::Bindings::convertObjcValueToValue):
+
=== Safari-171 ===
2004-11-09 Chris Blumenberg <cblu@apple.com>
KJS::Value ObjcInstance::stringValue() const
{
- // FIXME: Implement something sensible, like calling toString...
- KJS::String v("");
- return v;
+ return convertNSStringToString ([getObject() description]);
}
KJS::Value ObjcInstance::numberValue() const
#include <objc_header.h>
+#ifdef __OBJC__
+@class NSString;
+#else
+class NSString;
+#endif
+
namespace KJS
{
} ObjcValueType;
ObjcValue convertValueToObjcValue (KJS::ExecState *exec, const KJS::Value &value, ObjcValueType type);
+Value convertNSStringToString(NSString *nsstring);
Value convertObjcValueToValue (KJS::ExecState *exec, void *buffer, ObjcValueType type);
ObjcValueType objcValueTypeForType (const char *type);
return result;
}
+Value KJS::Bindings::convertNSStringToString(NSString *nsstring)
+{
+ unichar *chars;
+ unsigned int length = [nsstring length];
+ chars = (unichar *)malloc(sizeof(unichar)*length);
+ [nsstring getCharacters:chars];
+ UString u((const KJS::UChar*)chars, length);
+ Value aValue = String (u);
+ free((void *)chars);
+ return aValue;
+}
+
/*
ObjC to JavaScript
*/
if ([*obj isKindOfClass:[NSString class]]){
NSString *string = (NSString *)*obj;
- unichar *chars;
- unsigned int length = [string length];
- chars = (unichar *)malloc(sizeof(unichar)*length);
- [string getCharacters:chars];
- UString u((const KJS::UChar*)chars, length);
- aValue = String (u);
- free((void *)chars);
+ aValue = convertNSStringToString (string);
}
else if (*obj == [WebUndefined undefined]) {
return Undefined();