From: <rb...@us...> - 2018-06-29 13:18:43
|
Revision: 15411 http://sourceforge.net/p/htmlunit/code/15411 Author: rbri Date: 2018-06-29 13:18:27 +0000 (Fri, 29 Jun 2018) Log Message: ----------- ff60 support (wip) Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlDateTimeLocalInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlMonthInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTimeInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlWeekInput.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElement.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElementTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2018-06-29 11:57:58 UTC (rev 15410) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2018-06-29 13:18:27 UTC (rev 15411) @@ -443,6 +443,14 @@ @BrowserFeature({CHROME, FF60, IE}) HTMLINPUT_FILE_VALUE_FAKEPATH, + /** HTMLInputElement date and time types are supported. */ + @BrowserFeature({CHROME, FF60}) + HTMLINPUT_TYPE_DATETIME_SUPPORTED, + + /** HTMLInputElement date and time types are supported. */ + @BrowserFeature(FF60) + HTMLINPUT_TYPE_MONTH_NOT_SUPPORTED, + /** Should the HTMLElement of {@code keygen} have no end tag. */ @BrowserFeature(IE) HTMLKEYGEN_END_TAG_FORBIDDEN, @@ -1000,7 +1008,7 @@ @BrowserFeature(IE) JS_INPUT_SET_TYPE_LOWERCASE, - /** Setting the value of an Input Date to blank will result in an empty value. */ + /** Setting the value of an Input Date will check for correct format. */ @BrowserFeature({CHROME, FF60}) JS_INPUT_SET_VALUE_DATE_SUPPORTED, Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlDateTimeLocalInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlDateTimeLocalInput.java 2018-06-29 11:57:58 UTC (rev 15410) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlDateTimeLocalInput.java 2018-06-29 13:18:27 UTC (rev 15411) @@ -14,7 +14,8 @@ */ package com.gargoylesoftware.htmlunit.html; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_INPUT_SET_VALUE_DATE_SUPPORTED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_TYPE_DATETIME_SUPPORTED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_TYPE_MONTH_NOT_SUPPORTED; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -49,7 +50,8 @@ @Override public void setValueAttribute(final String newValue) { try { - if (hasFeature(JS_INPUT_SET_VALUE_DATE_SUPPORTED)) { + if (hasFeature(HTMLINPUT_TYPE_DATETIME_SUPPORTED) + && !hasFeature(HTMLINPUT_TYPE_MONTH_NOT_SUPPORTED)) { FORMATTER_.parse(newValue); } super.setValueAttribute(newValue); Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlMonthInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlMonthInput.java 2018-06-29 11:57:58 UTC (rev 15410) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlMonthInput.java 2018-06-29 13:18:27 UTC (rev 15411) @@ -14,7 +14,8 @@ */ package com.gargoylesoftware.htmlunit.html; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_INPUT_SET_VALUE_DATE_SUPPORTED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_TYPE_DATETIME_SUPPORTED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_TYPE_MONTH_NOT_SUPPORTED; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -49,7 +50,8 @@ @Override public void setValueAttribute(final String newValue) { try { - if (hasFeature(JS_INPUT_SET_VALUE_DATE_SUPPORTED)) { + if (hasFeature(HTMLINPUT_TYPE_DATETIME_SUPPORTED) + && !hasFeature(HTMLINPUT_TYPE_MONTH_NOT_SUPPORTED)) { FORMATTER_.parse(newValue); } super.setValueAttribute(newValue); Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTimeInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTimeInput.java 2018-06-29 11:57:58 UTC (rev 15410) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlTimeInput.java 2018-06-29 13:18:27 UTC (rev 15411) @@ -14,7 +14,7 @@ */ package com.gargoylesoftware.htmlunit.html; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_INPUT_SET_VALUE_DATE_SUPPORTED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_TYPE_DATETIME_SUPPORTED; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -49,7 +49,7 @@ @Override public void setValueAttribute(final String newValue) { try { - if (hasFeature(JS_INPUT_SET_VALUE_DATE_SUPPORTED)) { + if (hasFeature(HTMLINPUT_TYPE_DATETIME_SUPPORTED)) { FORMATTER_.parse(newValue); } super.setValueAttribute(newValue); Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlWeekInput.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlWeekInput.java 2018-06-29 11:57:58 UTC (rev 15410) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlWeekInput.java 2018-06-29 13:18:27 UTC (rev 15411) @@ -14,7 +14,8 @@ */ package com.gargoylesoftware.htmlunit.html; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_INPUT_SET_VALUE_DATE_SUPPORTED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_TYPE_DATETIME_SUPPORTED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_TYPE_MONTH_NOT_SUPPORTED; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -49,7 +50,8 @@ @Override public void setValueAttribute(final String newValue) { try { - if (hasFeature(JS_INPUT_SET_VALUE_DATE_SUPPORTED)) { + if (hasFeature(HTMLINPUT_TYPE_DATETIME_SUPPORTED) + && !hasFeature(HTMLINPUT_TYPE_MONTH_NOT_SUPPORTED)) { FORMATTER_.parse(newValue); } super.setValueAttribute(newValue); Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElement.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElement.java 2018-06-29 11:57:58 UTC (rev 15410) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElement.java 2018-06-29 13:18:27 UTC (rev 15411) @@ -18,16 +18,16 @@ import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_FILES_UNDEFINED; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_FILE_SELECTION_START_END_NULL; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_FILE_VALUE_FAKEPATH; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_TYPE_DATETIME_SUPPORTED; +import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLINPUT_TYPE_MONTH_NOT_SUPPORTED; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_ALIGN_FOR_INPUT_IGNORES_VALUES; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_INPUT_NUMBER_SELECTION_START_END_NULL; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_INPUT_SET_TYPE_LOWERCASE; -import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_INPUT_SET_VALUE_DATE_SUPPORTED; import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_SELECT_FILE_THROWS; import static com.gargoylesoftware.htmlunit.html.DomElement.ATTRIBUTE_NOT_DEFINED; import static com.gargoylesoftware.htmlunit.javascript.configuration.SupportedBrowser.CHROME; import static com.gargoylesoftware.htmlunit.javascript.configuration.SupportedBrowser.EDGE; import static com.gargoylesoftware.htmlunit.javascript.configuration.SupportedBrowser.FF; -import static com.gargoylesoftware.htmlunit.javascript.configuration.SupportedBrowser.FF52; import static com.gargoylesoftware.htmlunit.javascript.configuration.SupportedBrowser.FF60; import static com.gargoylesoftware.htmlunit.javascript.configuration.SupportedBrowser.IE; @@ -100,7 +100,7 @@ if (!InputElementFactory.isSupported(type)) { type = "text"; } - else if (!browserVersion.hasFeature(JS_INPUT_SET_VALUE_DATE_SUPPORTED)) { + else if (!browserVersion.hasFeature(HTMLINPUT_TYPE_DATETIME_SUPPORTED)) { switch (type) { case "date": case "time": @@ -113,6 +113,17 @@ default: } } + else if (browserVersion.hasFeature(HTMLINPUT_TYPE_MONTH_NOT_SUPPORTED)) { + switch (type) { + case "datetime-local": + case "month": + case "week": + type = "text"; + break; + + default: + } + } if ("color".equals(type) && browserVersion.hasFeature(HTMLINPUT_FILES_UNDEFINED)) { type = "text"; } @@ -425,7 +436,7 @@ * Gets the {@code minLength}. * @return the {@code minLength} */ - @JsxGetter({CHROME, FF52}) + @JsxGetter({CHROME, FF}) public int getMinLength() { final String attrValue = getDomNodeOrDie().getAttribute("minLength"); return NumberUtils.toInt(attrValue, -1); @@ -435,7 +446,7 @@ * Sets the value of {@code minLength} attribute. * @param length the new value */ - @JsxSetter({CHROME, FF52}) + @JsxSetter({CHROME, FF}) public void setMinLength(final int length) { getDomNodeOrDie().setMinLength(length); } Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElementTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElementTest.java 2018-06-29 11:57:58 UTC (rev 15410) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElementTest.java 2018-06-29 13:18:27 UTC (rev 15411) @@ -267,7 +267,7 @@ + "</form>\n" + "</body></html>"; - loadPageWithAlerts2(html, 2 * DEFAULT_WAIT_TIME); + loadPageWithAlerts2(html, 7777777); } /** |