[Httpunit-commit] CVS: httpunit/src/com/meterware/httpunit/javascript JavaScript.java,1.5,1.6
Brought to you by:
russgold
From: Russell G. <rus...@us...> - 2002-08-06 19:15:03
|
Update of /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/javascript In directory usw-pr-cvs1:/tmp/cvs-serv24182/src/com/meterware/httpunit/javascript Modified Files: JavaScript.java Log Message: Added support for link.onClick and form.onSubmit events Index: JavaScript.java =================================================================== RCS file: /cvsroot/httpunit/httpunit/src/com/meterware/httpunit/javascript/JavaScript.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- JavaScript.java 5 Aug 2002 18:58:43 -0000 1.5 +++ JavaScript.java 6 Aug 2002 19:14:59 -0000 1.6 @@ -29,13 +29,7 @@ import java.lang.reflect.InvocationTargetException; import java.util.Arrays; -import org.mozilla.javascript.ClassDefinitionException; -import org.mozilla.javascript.Context; -import org.mozilla.javascript.JavaScriptException; -import org.mozilla.javascript.NotAFunctionException; -import org.mozilla.javascript.PropertyException; -import org.mozilla.javascript.Scriptable; -import org.mozilla.javascript.ScriptableObject; +import org.mozilla.javascript.*; import org.xml.sax.SAXException; @@ -45,6 +39,9 @@ **/ public class JavaScript { + private final static Object[] NO_ARGS = new Object[0]; + + /** * Initiates JavaScript execution for the specified web response. */ @@ -86,10 +83,24 @@ } + public boolean performEvent( String eventScript ) { + try { + final Context context = Context.getCurrentContext(); + Function f = context.compileFunction( this, "function x() { " + eventScript + "}", "httpunit", 0, null ); + Object result = f.call( context, this, null, NO_ARGS ); + return (result instanceof Boolean) ? ((Boolean) result).booleanValue() : true; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException( "Script '" + eventScript + "' failed: " + e ); + } + } + + void initialize( JavaScriptEngine parent, com.meterware.httpunit.ScriptableObject scriptable ) throws JavaScriptException, NotAFunctionException, PropertyException, SAXException { _scriptable = scriptable; _scriptable.setScriptEngine( this ); + if (parent != null) setParentScope( parent ); } @@ -170,7 +181,7 @@ void initialize( JavaScriptEngine parent, com.meterware.httpunit.ScriptableObject scriptable ) throws JavaScriptException, NotAFunctionException, PropertyException, SAXException { - super.initialize( this, scriptable ); + super.initialize( parent, scriptable ); _document = (Document) Context.getCurrentContext().newObject( this, "Document" ); _document.initialize( this, getDelegate().getDocument() ); @@ -208,7 +219,7 @@ void initialize( JavaScriptEngine parent, com.meterware.httpunit.ScriptableObject scriptable ) throws JavaScriptException, NotAFunctionException, PropertyException, SAXException { - super.initialize( this, scriptable ); + super.initialize( parent, scriptable ); initializeLinks(); initializeForms(); initializeImages(); |