From: <rb...@us...> - 2017-05-03 06:43:21
|
Revision: 14323 http://sourceforge.net/p/htmlunit/code/14323 Author: rbri Date: 2017-05-03 06:43:19 +0000 (Wed, 03 May 2017) Log Message: ----------- FF52 Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenList.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenListTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2017-05-02 20:22:59 UTC (rev 14322) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2017-05-03 06:43:19 UTC (rev 14323) @@ -792,6 +792,10 @@ @BrowserFeature({CHROME, FF}) JS_DOMPARSER_PARSERERROR_ON_ERROR, + /** DOMTokenList returns false instead of throwing an exception when receiver is blank. */ + @BrowserFeature(FF52) + JS_DOMTOKENLIST_CONTAINS_RETURNS_FALSE_FOR_BLANK, + /** DOMTokenList uses an enhanced set of whitespace chars. */ @BrowserFeature(IE) JS_DOMTOKENLIST_ENHANCED_WHITESPACE_CHARS, Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenList.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenList.java 2017-05-02 20:22:59 UTC (rev 14322) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenList.java 2017-05-03 06:43:19 UTC (rev 14323) @@ -14,6 +14,7 @@ */ package com.gargoylesoftware.htmlunit.javascript.host.dom; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DOMTOKENLIST_CONTAINS_RETURNS_FALSE_FOR_BLANK; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DOMTOKENLIST_ENHANCED_WHITESPACE_CHARS; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DOMTOKENLIST_GET_NULL_IF_OUTSIDE; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DOMTOKENLIST_REMOVE_WHITESPACE_CHARS_ON_EDIT; @@ -109,8 +110,15 @@ */ @JsxFunction public void add(final String token) { - if (!contains(token)) { - String value = getDefaultValue(null); + if (StringUtils.isEmpty(token)) { + throw Context.reportRuntimeError("Empty imput not allowed"); + } + if (StringUtils.containsAny(token, whitespaceChars())) { + throw Context.reportRuntimeError("Empty imput not allowed"); + } + + String value = getDefaultValue(null); + if (position(value, token) < 0) { if (value.length() != 0 && !isWhitespache(value.charAt(value.length() - 1))) { value = value + " "; } @@ -131,6 +139,7 @@ if (StringUtils.containsAny(token, whitespaceChars())) { throw Context.reportRuntimeError("Empty imput not allowed"); } + String value = getDefaultValue(null); int pos = position(value, token); while (pos != -1) { @@ -186,6 +195,11 @@ */ @JsxFunction public boolean contains(final String token) { + if (getBrowserVersion().hasFeature(JS_DOMTOKENLIST_CONTAINS_RETURNS_FALSE_FOR_BLANK) + && StringUtils.isBlank(token)) { + return false; + } + if (StringUtils.isEmpty(token)) { throw Context.reportRuntimeError("Empty imput not allowed"); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenListTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenListTest.java 2017-05-02 20:22:59 UTC (rev 14322) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenListTest.java 2017-05-03 06:43:19 UTC (rev 14323) @@ -14,11 +14,14 @@ */ package com.gargoylesoftware.htmlunit.javascript.host.dom; +import static com.gargoylesoftware.htmlunit.BrowserRunner.TestedBrowser.FF52; + import org.junit.Test; import org.junit.runner.RunWith; import com.gargoylesoftware.htmlunit.BrowserRunner; import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts; +import com.gargoylesoftware.htmlunit.BrowserRunner.NotYetImplemented; import com.gargoylesoftware.htmlunit.WebDriverTestCase; /** @@ -680,6 +683,7 @@ @Test @Alerts(DEFAULT = {" \t \n ", "0", "0", " \t \n "}, FF52 = {" \t \n ", "0", "0", ""}) + @NotYetImplemented(FF52) public void removeFromWhitespace() throws Exception { remove(" \t \r ", "a"); } @@ -735,6 +739,7 @@ @Test @Alerts(DEFAULT = {"a \t c \n d e", "4", "3", "a d e"}, FF45 = {"a \t c \n d e", "4", "3", "a d e"}) + @NotYetImplemented(FF52) public void removeWhitespace() throws Exception { remove("a \t c \n d e", "c"); } |