From: <asa...@us...> - 2017-06-06 19:12:48
|
Revision: 14563 http://sourceforge.net/p/htmlunit/code/14563 Author: asashour Date: 2017-06-06 19:12:45 +0000 (Tue, 06 Jun 2017) Log Message: ----------- Fix case for IE/Chrome Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/NativeFunctionToStringFunction.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequestTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/NativeFunctionToStringFunction.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/NativeFunctionToStringFunction.java 2017-06-06 19:10:48 UTC (rev 14562) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/NativeFunctionToStringFunction.java 2017-06-06 19:12:45 UTC (rev 14563) @@ -67,12 +67,19 @@ @Override public Object call(final Context cx, final Scriptable scope, final Scriptable thisObj, final Object[] args) { final String s = (String) super.call(cx, scope, thisObj, args); - if (thisObj instanceof BaseFunction && s.indexOf("[native code]") > -1) { final String functionName = ((BaseFunction) thisObj).getFunctionName(); return "\nfunction " + functionName + "() {\n [native code]\n}\n"; } - return s; + + final int start = s.indexOf('{') + 1; + final int end = s.lastIndexOf('}'); + String body = s.substring(start, end).trim(); + if (body.endsWith(";")) { + body = body.substring(0, body.length() - 1); + } + + return s.substring(0, start).replace(" ()", "()") + ' ' + body + " }"; } static class NativeFunctionToStringFunctionChrome extends FunctionWrapper { @@ -88,11 +95,13 @@ public Object call(final Context cx, final Scriptable scope, final Scriptable thisObj, final Object[] args) { final String s = (String) super.call(cx, scope, thisObj, args); - if (thisObj instanceof BaseFunction && s.indexOf("[native code]") > -1) { - final String functionName = ((BaseFunction) thisObj).getFunctionName(); - return "function " + functionName + "() { [native code] }"; + final int start = s.indexOf('{') + 1; + final int end = s.lastIndexOf('}'); + String body = s.substring(start, end).trim(); + if (body.endsWith(";")) { + body = body.substring(0, body.length() - 1); } - return s; + return s.substring(0, start) + ' ' + body + " }"; } } } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequestTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequestTest.java 2017-06-06 19:10:48 UTC (rev 14562) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequestTest.java 2017-06-06 19:12:45 UTC (rev 14563) @@ -1638,6 +1638,7 @@ "function() { return !0 }", "\nfunction onreadystatechange() {\n [native code]\n}\n", "true", "true"}) + @NotYetImplemented(FF) public void defineProperty() throws Exception { final String html = "<html>\n" |