From: <rb...@us...> - 2017-12-02 11:44:03
|
Revision: 14987 http://sourceforge.net/p/htmlunit/code/14987 Author: rbri Date: 2017-12-02 11:44:00 +0000 (Sat, 02 Dec 2017) Log Message: ----------- Error.captureStackTrace is not available in FF and IE Modified Paths: -------------- trunk/htmlunit/src/changes/changes.xml trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeErrorTest.java Modified: trunk/htmlunit/src/changes/changes.xml =================================================================== --- trunk/htmlunit/src/changes/changes.xml 2017-12-01 08:43:28 UTC (rev 14986) +++ trunk/htmlunit/src/changes/changes.xml 2017-12-02 11:44:00 UTC (rev 14987) @@ -9,6 +9,9 @@ <body> <release version="2.29" date="xx, 2017" description=""> <action type="fix" dev="rbri" issue="1840"> + JavaScript: Error.captureStackTrace is not available in FF and IE. + </action> + <action type="fix" dev="rbri" issue="1840"> JavaScript: location.reload uses the same request method like the original request. </action> <action type="fix" dev="rbri"> Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2017-12-01 08:43:28 UTC (rev 14986) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2017-12-02 11:44:00 UTC (rev 14987) @@ -872,6 +872,10 @@ IE}) JS_ENUM_NUMBERS_FIRST, + /** Javascript {@code Error.captureStackTrace}. */ + @BrowserFeature(CHROME) + JS_ERROR_CAPTURE_STACK_TRACE, + /** Javascript {@code Error.stack}. */ @BrowserFeature({CHROME, FF}) JS_ERROR_STACK, Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java 2017-12-01 08:43:28 UTC (rev 14986) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java 2017-12-02 11:44:00 UTC (rev 14987) @@ -15,6 +15,7 @@ package com.gargoylesoftware.htmlunit.javascript; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_ARRAY_FROM; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_ERROR_CAPTURE_STACK_TRACE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_ERROR_STACK_TRACE_LIMIT; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_FUNCTION_TOSOURCE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_IMAGE_PROTOTYPE_SAME_AS_HTML_IMAGE; @@ -237,6 +238,9 @@ else { ScriptableObject.deleteProperty(errorObject, "stackTraceLimit"); } + if (!browserVersion.hasFeature(JS_ERROR_CAPTURE_STACK_TRACE)) { + ScriptableObject.deleteProperty(errorObject, "captureStackTrace"); + } final Intl intl = new Intl(); intl.setParentScope(window); Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeErrorTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeErrorTest.java 2017-12-01 08:43:28 UTC (rev 14986) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeErrorTest.java 2017-12-02 11:44:00 UTC (rev 14987) @@ -250,4 +250,22 @@ loadPageWithAlerts2(html); } + + /** + * @throws Exception if the test fails + */ + @Test + @Alerts(DEFAULT = "undefined", + CHROME = "function captureStackTrace() { [native code] }") + public void captureStackTrace() throws Exception { + final String html + = "<html><head><script>\n" + + "function test() {\n" + + " alert(Error.captureStackTrace);\n" + + "}\n" + + "</script></head><body onload='test()'>\n" + + "</body></html>"; + + loadPageWithAlerts2(html); + } } |