Added exception logging. Also check for exception and
authorrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 19 May 2004 02:50:21 +0000 (02:50 +0000)
committerrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 19 May 2004 02:50:21 +0000 (02:50 +0000)
set results as appropriate.

        Reviewed by Maciej (partially reviewed).

        * bindings/objc/WebScriptObject.mm:
        (-[WebScriptObject callWebScriptMethod:withArguments:]):
        (-[WebScriptObject evaluateWebScript:]):
        (-[WebScriptObject setValue:forKey:]):
        (-[WebScriptObject valueForKey:]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@6630 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/bindings/objc/WebScriptObject.mm

index 79ec588ad38f15208158f1570cda3e615f8851ab..95f6c767806f101d0dcaca360f04b31347b5d1ef 100644 (file)
@@ -1,3 +1,16 @@
+2004-05-18  Richard Williamson   <rjw@apple.com>
+
+       Added exception logging.  Also check for exception and
+       set results as appropriate.
+
+        Reviewed by Maciej (partially reviewed).
+
+        * bindings/objc/WebScriptObject.mm:
+        (-[WebScriptObject callWebScriptMethod:withArguments:]):
+        (-[WebScriptObject evaluateWebScript:]):
+        (-[WebScriptObject setValue:forKey:]):
+        (-[WebScriptObject valueForKey:]):
+
 2004-05-18  Richard Williamson   <rjw@apple.com>
 
        Finsished implementing support for windowScriptObject.
index 558bd7543c4c4021982bdfbb597d9d41369d5d17..3bf919a84aec387fd737f710f34ce34e69778489 100644 (file)
 using namespace KJS;
 using namespace KJS::Bindings;
 
+#define LOG_EXCEPTION(exec) \
+    if (Interpreter::shouldPrintExceptions()) \
+        NSLog (@"%s:%d:  JavaScript exception:  %s\n", __FILE__, __LINE__, exec->exception().toObject(exec).get(exec, messagePropertyName).toString(exec).ascii());
+
 @interface WebScriptObjectPrivate : NSObject
 {
     KJS::ObjectImp *imp;
@@ -128,6 +132,11 @@ static KJS::List listFromNSArray(ExecState *exec, NSArray *array)
     Value result = funcImp->call (exec, thisObj, argList);
     Interpreter::unlock();
 
+    if (exec->hadException()) {
+        LOG_EXCEPTION (exec);
+        result = Undefined();
+    }
+
     // Convert and return the result of the function call.
     id resultObj = [WebScriptObject _convertValueToObjcValue:result root:_private->root];
 
@@ -145,6 +154,11 @@ static KJS::List listFromNSArray(ExecState *exec, NSArray *array)
     KJS::Value result = _private->root->interpreter()->evaluate(v.toString(exec)).value();
     Interpreter::unlock();
     
+    if (exec->hadException()) {
+        LOG_EXCEPTION (exec);
+        result = Undefined();
+    }
+
     id resultObj = [WebScriptObject _convertValueToObjcValue:result root:_private->root];
 
     _didExecute(self);
@@ -160,6 +174,10 @@ static KJS::List listFromNSArray(ExecState *exec, NSArray *array)
    _private->imp->put (exec, Identifier (v.toString(exec)), (convertObjcValueToValue(exec, &value, ObjcObjectType)));
     Interpreter::unlock();
 
+    if (exec->hadException()) {
+        LOG_EXCEPTION (exec);
+    }
+
     _didExecute(self);
 }
 
@@ -171,6 +189,11 @@ static KJS::List listFromNSArray(ExecState *exec, NSArray *array)
     Value result = _private->imp->get (exec, Identifier (v.toString(exec)));
     Interpreter::unlock();
     
+    if (exec->hadException()) {
+        LOG_EXCEPTION (exec);
+        result = Undefined();
+    }
+
     id resultObj = [WebScriptObject _convertValueToObjcValue:result root:_private->root];
 
     _didExecute(self);
@@ -186,6 +209,10 @@ static KJS::List listFromNSArray(ExecState *exec, NSArray *array)
     _private->imp->deleteProperty (exec, Identifier (v.toString(exec)));
     Interpreter::unlock();
 
+    if (exec->hadException()) {
+        LOG_EXCEPTION (exec);
+    }
+
     _didExecute(self);
 }
 
@@ -213,6 +240,11 @@ static KJS::List listFromNSArray(ExecState *exec, NSArray *array)
     Value result = _private->imp->get (exec, (unsigned)index);
     Interpreter::unlock();
 
+    if (exec->hadException()) {
+        LOG_EXCEPTION (exec);
+        result = Undefined();
+    }
+
     id resultObj = [WebScriptObject _convertValueToObjcValue:result root:_private->root];
 
     _didExecute(self);
@@ -227,6 +259,10 @@ static KJS::List listFromNSArray(ExecState *exec, NSArray *array)
     _private->imp->put (exec, (unsigned)index, (convertObjcValueToValue(exec, &value, ObjcObjectType)));
     Interpreter::unlock();
 
+    if (exec->hadException()) {
+        LOG_EXCEPTION (exec);
+    }
+
     _didExecute(self);
 }