From 84bb798cd1fda361f78a4994fb90b7a7a55f32d5 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 26 Mar 2025 07:07:26 +0100
Subject: [PATCH 001/125] ups
---
src/site/xdoc/index.xml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index 0ff026ceb5a..0f663ffaf6f 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -92,9 +92,9 @@
- Latest release March 25, 2025
+ Latest release March 26, 2025
- version 4.11.0
+ version 4.11.1
Source code
@@ -220,14 +220,14 @@
org.htmlunit
htmlunit
- 4.11.0
+ 4.11.1
]]>
For gradle, you would add:
+implementation group: 'org.htmlunit', name: 'htmlunit', version: '4.11.1']]>
From 931f10870a0443879bc67567cccb0b7259caf9f2 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 26 Mar 2025 07:38:34 +0100
Subject: [PATCH 002/125] start working on 4.12.0 (again)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index eb6c1e3338b..6e321de5f65 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
org.htmlunit
htmlunit
- 4.11.1
+ 4.12.0-SNAPSHOT
HtmlUnit
Gargoyle Software Inc.
From 44652b459d9220320b0fcd42d9febaa19ec435e1 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 26 Mar 2025 11:32:47 +0100
Subject: [PATCH 003/125] cleanup alerts
---
src/test/java/org/htmlunit/archunit/Architecture2Test.java | 2 +-
.../javascript/host/css/property/ElementClientHeightTest.java | 4 +---
.../javascript/host/css/property/ElementOffsetHeightTest.java | 4 +---
3 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/src/test/java/org/htmlunit/archunit/Architecture2Test.java b/src/test/java/org/htmlunit/archunit/Architecture2Test.java
index c16a7b96198..e78f332c8f0 100644
--- a/src/test/java/org/htmlunit/archunit/Architecture2Test.java
+++ b/src/test/java/org/htmlunit/archunit/Architecture2Test.java
@@ -213,7 +213,7 @@ public void check(final JavaMethod method, final ConditionEvents events) {
* Validate test annotations.
*/
@ArchTest
- public static final ArchRule jsxGetterAnnotationStartsWithGet = methods()
+ public static final ArchRule consistentTestAnnotations = methods()
.that().areAnnotatedWith(Test.class)
.and().areNotDeclaredIn("org.htmlunit.junit.annotation.AnnotationUtilsTest")
.should(haveConsistentTestAnnotations);
diff --git a/src/test/java/org/htmlunit/javascript/host/css/property/ElementClientHeightTest.java b/src/test/java/org/htmlunit/javascript/host/css/property/ElementClientHeightTest.java
index d3dacd7a3f0..2de7c7498c6 100644
--- a/src/test/java/org/htmlunit/javascript/host/css/property/ElementClientHeightTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/css/property/ElementClientHeightTest.java
@@ -2130,9 +2130,7 @@ public void clientHeightSmallerLarger() throws Exception {
FF = "12, 49, 3",
FF_ESR = "12, 49, 3")
@HtmlUnitNYI(CHROME = "11, 49, 2",
- EDGE = "11, 49, 2",
- FF = "12, 49, 3",
- FF_ESR = "12, 49, 3")
+ EDGE = "11, 49, 2")
public void clientHeightUnits() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
diff --git a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java
index 8c95760118b..cedd6270850 100644
--- a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java
@@ -265,9 +265,7 @@ public void offsetHeightSmallerLarger() throws Exception {
FF = "12, 49, 3",
FF_ESR = "12, 49, 3")
@HtmlUnitNYI(CHROME = "11, 49, 2",
- EDGE = "11, 49, 2",
- FF = "12, 49, 3",
- FF_ESR = "12, 49, 3")
+ EDGE = "11, 49, 2")
public void offsetHeightUnits() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
From 7e122b65017b2665ce777d6a538a2ff302dec2c2 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 26 Mar 2025 16:23:27 +0100
Subject: [PATCH 004/125] core-js: Named capture groups in RegularExpressions
now supported
---
pom.xml | 2 +-
src/changes/changes.xml | 7 +++++++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 6e321de5f65..abb0ce7c6c4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
4.11.0
4.11.0
- 4.11.0
+ 4.12.0-SNAPSHOT
4.11.0
4.11.0
4.11.0
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 604a5436686..d7bb88fdee5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -7,6 +7,13 @@
+
+
+ core-js: Named capture groups in RegularExpressions now supported.
+
+
+
+
NumberFormatException when calculating the clientHeight/offsetHeight.
From ce97d3f53142c27ea2165ebef79bce85f4ff75fd Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 26 Mar 2025 17:30:48 +0100
Subject: [PATCH 005/125] deprecated method WebRequest.setRefererlHeader(URL)
removed
---
src/changes/changes.xml | 4 ++++
src/main/java/org/htmlunit/WebRequest.java | 11 -----------
2 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d7bb88fdee5..29e25a7197c 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,9 +8,13 @@
+ setRefererlHeader(URL)
core-js: Named capture groups in RegularExpressions now supported.
+
+ Deprecated method WebRequest.setRefererlHeader(URL) removed.
+
diff --git a/src/main/java/org/htmlunit/WebRequest.java b/src/main/java/org/htmlunit/WebRequest.java
index e07f4fd775b..556752ef295 100644
--- a/src/main/java/org/htmlunit/WebRequest.java
+++ b/src/main/java/org/htmlunit/WebRequest.java
@@ -559,17 +559,6 @@ public void setRefererHeader(final URL url) {
}
}
- /**
- * Sets the referer HTTP header - only if the provided url is valid.
- * @param url the url for the referer HTTP header
- *
- * @deprecated as of version 4.5.0; use {@link #setRefererHeader(URL)} instead
- */
- @Deprecated
- public void setRefererlHeader(final URL url) {
- setRefererHeader(url);
- }
-
/**
* Sets the specified name/value pair in the additional HTTP headers.
* @param name the name of the additional HTTP header
From 01baa87bc3fad6f1051825350dbdd5738838703a Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 26 Mar 2025 17:32:10 +0100
Subject: [PATCH 006/125] deprecated method HtmlForm.getElements() removed
---
src/changes/changes.xml | 3 +++
src/main/java/org/htmlunit/html/HtmlForm.java | 10 ----------
2 files changed, 3 insertions(+), 10 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 29e25a7197c..eeec005c286 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -12,6 +12,9 @@
core-js: Named capture groups in RegularExpressions now supported.
+
+ Deprecated method HtmlForm.getElements() removed.
+
Deprecated method WebRequest.setRefererlHeader(URL) removed.
diff --git a/src/main/java/org/htmlunit/html/HtmlForm.java b/src/main/java/org/htmlunit/html/HtmlForm.java
index fdb07d5c743..73602fc83d8 100644
--- a/src/main/java/org/htmlunit/html/HtmlForm.java
+++ b/src/main/java/org/htmlunit/html/HtmlForm.java
@@ -555,16 +555,6 @@ private List getFormElementsByAttribute(
return list;
}
- /**
- * @return returns a list of all form controls contained in the <form> element or referenced by formId
- * but ignoring elements that are contained in a nested form
- * @deprecated as of version 4.4.0; use {@link #getFormElements()}, {@link #getElementsJS()} instead
- */
- @Deprecated
- public List getElements() {
- return getElements(htmlElement -> SUBMITTABLE_TAG_NAMES.contains(htmlElement.getTagName()));
- }
-
/**
* @return A List containing all form controls in the form.
* The form controls in the returned collection are in the same order
From 4e3bd1c6e8f2cb5a7b8e2344c0239ca939bc8570 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 26 Mar 2025 17:33:03 +0100
Subject: [PATCH 007/125] Deprecated method
CssStyleSheet.validateSelectors(SelectorList, int, DomNode) removed
---
src/changes/changes.xml | 3 +++
.../java/org/htmlunit/css/CssStyleSheet.java | 19 -------------------
2 files changed, 3 insertions(+), 19 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index eeec005c286..9c668da8898 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -12,6 +12,9 @@
core-js: Named capture groups in RegularExpressions now supported.
+
+ Deprecated method CssStyleSheet.validateSelectors(SelectorList, int, DomNode) removed.
+
Deprecated method HtmlForm.getElements() removed.
diff --git a/src/main/java/org/htmlunit/css/CssStyleSheet.java b/src/main/java/org/htmlunit/css/CssStyleSheet.java
index afcbe5339de..8cce649b54a 100644
--- a/src/main/java/org/htmlunit/css/CssStyleSheet.java
+++ b/src/main/java/org/htmlunit/css/CssStyleSheet.java
@@ -1044,25 +1044,6 @@ private static String toString(final InputSource source) {
}
}
- /**
- * Validates the list of selectors.
- * @param selectorList the selectors
- * @param documentMode see {@link Document#getDocumentMode()}
- * @param domNode the dom node the query should work on
- * @throws CSSException if a selector is invalid
- *
- * @deprecated as of version 4.5.0; use {@link #validateSelectors(SelectorList, DomNode)} instead
- */
- @Deprecated
- public static void validateSelectors(final SelectorList selectorList, final int documentMode,
- final DomNode domNode) throws CSSException {
- for (final Selector selector : selectorList) {
- if (!isValidSelector(selector, domNode)) {
- throw new CSSException("Invalid selector: " + selector, null);
- }
- }
- }
-
/**
* Validates the list of selectors.
* @param selectorList the selectors
From b1755584da892db003448dc11e003f27b7093770 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 26 Mar 2025 17:33:20 +0100
Subject: [PATCH 008/125] ups
---
src/changes/changes.xml | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 9c668da8898..85f6cae0278 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,7 +8,6 @@
- setRefererlHeader(URL)
core-js: Named capture groups in RegularExpressions now supported.
From 95a244ad8f3a852a5ef1d48a0f77c678c82e45f9 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 26 Mar 2025 18:11:52 +0100
Subject: [PATCH 009/125] fix and simplify getFormElementsByAttribute()
---
src/main/java/org/htmlunit/html/HtmlForm.java | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)
diff --git a/src/main/java/org/htmlunit/html/HtmlForm.java b/src/main/java/org/htmlunit/html/HtmlForm.java
index 73602fc83d8..bd2cd911b79 100644
--- a/src/main/java/org/htmlunit/html/HtmlForm.java
+++ b/src/main/java/org/htmlunit/html/HtmlForm.java
@@ -541,18 +541,9 @@ private List getFormElementsByAttribute(
final String attributeName,
final String attributeValue) {
- final List list = new ArrayList<>();
- final String lowerCaseTagName = elementName.toLowerCase(Locale.ROOT);
-
- for (final HtmlElement element : getElements()) {
- if (element.getTagName().equals(lowerCaseTagName)) {
- final String attValue = element.getAttribute(attributeName);
- if (attValue.equals(attributeValue)) {
- list.add((E) element);
- }
- }
- }
- return list;
+ return (List) getElements(htmlElement ->
+ htmlElement.getTagName().equals(elementName)
+ && htmlElement.getAttribute(attributeName).equals(attributeValue));
}
/**
From 3ef7f14f83d364788aeb12013d6b3ed570b50cbb Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Thu, 27 Mar 2025 17:23:07 +0100
Subject: [PATCH 010/125] BLANK_IMAGE_URL to avoid long timeouts
---
.../resources/libraries/ExtJS/2.2/examples/desktop/sample.js | 1 +
src/test/resources/libraries/ExtJS/2.2/examples/grid/binding.js | 2 ++
2 files changed, 3 insertions(+)
diff --git a/src/test/resources/libraries/ExtJS/2.2/examples/desktop/sample.js b/src/test/resources/libraries/ExtJS/2.2/examples/desktop/sample.js
index fa593dda243..7fddee4032d 100644
--- a/src/test/resources/libraries/ExtJS/2.2/examples/desktop/sample.js
+++ b/src/test/resources/libraries/ExtJS/2.2/examples/desktop/sample.js
@@ -6,6 +6,7 @@
* http://extjs.com/license
*/
+Ext.BLANK_IMAGE_URL = '../../resources/images/default/s.gif';
// Sample desktop configuration
MyDesktop = new Ext.app.App({
diff --git a/src/test/resources/libraries/ExtJS/2.2/examples/grid/binding.js b/src/test/resources/libraries/ExtJS/2.2/examples/grid/binding.js
index 45a439636b7..e6048fa14dd 100644
--- a/src/test/resources/libraries/ExtJS/2.2/examples/grid/binding.js
+++ b/src/test/resources/libraries/ExtJS/2.2/examples/grid/binding.js
@@ -6,6 +6,8 @@
* http://extjs.com/license
*/
+Ext.BLANK_IMAGE_URL = '../../resources/images/default/s.gif';
+
Ext.onReady(function(){
// create the Data Store
From 9d01850b5884d75553cad671a48f6df40b81fdf0 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 29 Mar 2025 13:03:59 +0100
Subject: [PATCH 011/125] pmd 7.12.0
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index abb0ce7c6c4..91233db99c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@
10.21.4
4.9.3
- 7.11.0
+ 7.12.0
4.13.2
1.4.0
10.0.4
From c27f14c6049160ec3e922c2e797e4269cb74e7f9 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 29 Mar 2025 17:05:30 +0100
Subject: [PATCH 012/125] first try to make the web socket client replacable
---
src/main/java/org/htmlunit/WebClient.java | 26 +++++++
.../htmlunit/javascript/host/WebSocket.java | 6 +-
.../websocket/JettyWebSocketAdapter.java | 37 +++++++---
.../htmlunit/websocket/WebSocketAdapter.java | 49 +------------
.../websocket/WebSocketAdapterFactory.java | 37 ++++++++++
.../websocket/WebSocketCookieStore.java | 1 +
.../htmlunit/websocket/WebSocketListener.java | 72 +++++++++++++++++++
7 files changed, 169 insertions(+), 59 deletions(-)
create mode 100644 src/main/java/org/htmlunit/websocket/WebSocketAdapterFactory.java
create mode 100644 src/main/java/org/htmlunit/websocket/WebSocketListener.java
diff --git a/src/main/java/org/htmlunit/WebClient.java b/src/main/java/org/htmlunit/WebClient.java
index 15972c06e64..e5211be86be 100644
--- a/src/main/java/org/htmlunit/WebClient.java
+++ b/src/main/java/org/htmlunit/WebClient.java
@@ -60,6 +60,7 @@
import org.apache.http.NoHttpResponseException;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.cookie.MalformedCookieException;
+import org.eclipse.jetty.websocket.api.WebSocketAdapter;
import org.htmlunit.attachment.Attachment;
import org.htmlunit.attachment.AttachmentHandler;
import org.htmlunit.csp.Policy;
@@ -99,6 +100,9 @@
import org.htmlunit.util.MimeType;
import org.htmlunit.util.NameValuePair;
import org.htmlunit.util.UrlUtils;
+import org.htmlunit.websocket.JettyWebSocketAdapter.JettyWebSocketAdapterFactory;
+import org.htmlunit.websocket.WebSocketAdapterFactory;
+import org.htmlunit.websocket.WebSocketListener;
import org.htmlunit.webstart.WebStartHandler;
/**
@@ -191,6 +195,7 @@ public class WebClient implements Serializable, AutoCloseable {
private transient WebConnection webConnection_;
private CredentialsProvider credentialsProvider_ = new DefaultCredentialsProvider();
private CookieManager cookieManager_ = new CookieManager();
+ private WebSocketAdapterFactory webSocketAdapterFactory_;
private transient AbstractJavaScriptEngine> scriptEngine_;
private transient List loadQueue_;
private final Map requestHeaders_ = Collections.synchronizedMap(new HashMap<>(89));
@@ -332,6 +337,8 @@ public WebClient(final BrowserVersion browserVersion, final boolean javaScriptEn
}
loadQueue_ = new ArrayList<>();
+ webSocketAdapterFactory_ = new JettyWebSocketAdapterFactory();
+
// The window must be constructed AFTER the script engine.
currentWindowTracker_ = new CurrentWindowTracker(this, true);
currentWindow_ = new TopLevelWindow("", this);
@@ -2888,6 +2895,25 @@ public XHtmlPage loadXHtmlCodeIntoCurrentWindow(final String xhtmlCode) throws I
return page;
}
+ /**
+ * Creates a new {@link WebSocketAdapter}.
+ *
+ * @param webSocketListener the {@link WebSocketListener}
+ * @return a new {@link org.htmlunit.websocket.WebSocketAdapter}
+ */
+ public org.htmlunit.websocket.WebSocketAdapter buildWebSocketAdapter(final WebSocketListener webSocketListener) {
+ return webSocketAdapterFactory_.buildWebSocketAdapter(this, webSocketListener);
+ }
+
+ /**
+ * Defines a new factory method to create a new WebSocketAdapter.
+ *
+ * @param factory a {@link WebSocketAdapterFactory}
+ */
+ public void setWebSocketAdapter(final WebSocketAdapterFactory factory) {
+ webSocketAdapterFactory_ = factory;
+ }
+
/**
* INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
*
diff --git a/src/main/java/org/htmlunit/javascript/host/WebSocket.java b/src/main/java/org/htmlunit/javascript/host/WebSocket.java
index 0dd6c67ac52..93348356273 100644
--- a/src/main/java/org/htmlunit/javascript/host/WebSocket.java
+++ b/src/main/java/org/htmlunit/javascript/host/WebSocket.java
@@ -44,8 +44,8 @@
import org.htmlunit.javascript.host.event.EventTarget;
import org.htmlunit.javascript.host.event.MessageEvent;
import org.htmlunit.util.UrlUtils;
-import org.htmlunit.websocket.JettyWebSocketAdapter;
import org.htmlunit.websocket.WebSocketAdapter;
+import org.htmlunit.websocket.WebSocketListener;
/**
* A JavaScript object for {@code WebSocket}.
@@ -112,7 +112,7 @@ private WebSocket(final String url, final Window window) {
final WebClient webClient = webWindow.getWebClient();
originSet_ = true;
- webSocketImpl_ = new JettyWebSocketAdapter(webClient) {
+ final WebSocketListener webSocketListener = new WebSocketListener() {
@Override
public void onWebSocketConnecting() {
@@ -205,6 +205,8 @@ public void onWebSocketError(final Throwable cause) {
}
};
+ webSocketImpl_ = webClient.buildWebSocketAdapter(webSocketListener);
+
webSocketImpl_.start();
containingPage_.addAutoCloseable(this);
url_ = new URI(url);
diff --git a/src/main/java/org/htmlunit/websocket/JettyWebSocketAdapter.java b/src/main/java/org/htmlunit/websocket/JettyWebSocketAdapter.java
index 36d2f90bec2..0b396c8f7af 100644
--- a/src/main/java/org/htmlunit/websocket/JettyWebSocketAdapter.java
+++ b/src/main/java/org/htmlunit/websocket/JettyWebSocketAdapter.java
@@ -31,9 +31,25 @@
*
* @author Ronald Brill
*/
-public abstract class JettyWebSocketAdapter implements WebSocketAdapter {
+public final class JettyWebSocketAdapter implements WebSocketAdapter {
+
+ /**
+ * Our {@link WebSocketAdapterFactory}.
+ */
+ public static final class JettyWebSocketAdapterFactory implements WebSocketAdapterFactory {
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public WebSocketAdapter buildWebSocketAdapter(final WebClient webClient,
+ final WebSocketListener webSocketListener) {
+ return new JettyWebSocketAdapter(webClient, webSocketListener);
+ }
+ }
+
private final Object clientLock_ = new Object();
private WebSocketClient client_;
+ private WebSocketListener listener_;
private volatile Session incomingSession_;
private Session outgoingSession_;
@@ -41,8 +57,9 @@ public abstract class JettyWebSocketAdapter implements WebSocketAdapter {
/**
* Ctor.
* @param webClient the {@link WebClient}
+ * @param listener the {@link WebSocketListener}
*/
- public JettyWebSocketAdapter(final WebClient webClient) {
+ public JettyWebSocketAdapter(final WebClient webClient, final WebSocketListener listener) {
super();
final WebClientOptions options = webClient.getOptions();
@@ -56,6 +73,8 @@ public JettyWebSocketAdapter(final WebClient webClient) {
client_ = new WebSocketClient();
}
+ listener_ = listener;
+
// use the same executor as the rest
client_.setExecutor(webClient.getExecutor());
@@ -99,11 +118,11 @@ public void connect(final URI url) throws Exception {
final Future connectFuture = client_.connect(new JettyWebSocketAdapterImpl(), url);
client_.getExecutor().execute(() -> {
try {
- onWebSocketConnecting();
+ listener_.onWebSocketConnecting();
incomingSession_ = connectFuture.get();
}
catch (final Exception e) {
- onWebSocketConnectError(e);
+ listener_.onWebSocketConnectError(e);
}
});
}
@@ -179,7 +198,7 @@ public void onWebSocketConnect(final Session session) {
super.onWebSocketConnect(session);
outgoingSession_ = session;
- JettyWebSocketAdapter.this.onWebSocketConnect();
+ listener_.onWebSocketConnect();
}
/**
@@ -190,7 +209,7 @@ public void onWebSocketClose(final int statusCode, final String reason) {
super.onWebSocketClose(statusCode, reason);
outgoingSession_ = null;
- JettyWebSocketAdapter.this.onWebSocketClose(statusCode, reason);
+ listener_.onWebSocketClose(statusCode, reason);
}
/**
@@ -200,7 +219,7 @@ public void onWebSocketClose(final int statusCode, final String reason) {
public void onWebSocketText(final String message) {
super.onWebSocketText(message);
- JettyWebSocketAdapter.this.onWebSocketText(message);
+ listener_.onWebSocketText(message);
}
/**
@@ -210,7 +229,7 @@ public void onWebSocketText(final String message) {
public void onWebSocketBinary(final byte[] data, final int offset, final int length) {
super.onWebSocketBinary(data, offset, length);
- JettyWebSocketAdapter.this.onWebSocketBinary(data, offset, length);
+ listener_.onWebSocketBinary(data, offset, length);
}
/**
@@ -221,7 +240,7 @@ public void onWebSocketError(final Throwable cause) {
super.onWebSocketError(cause);
outgoingSession_ = null;
- JettyWebSocketAdapter.this.onWebSocketError(cause);
+ listener_.onWebSocketError(cause);
}
}
}
diff --git a/src/main/java/org/htmlunit/websocket/WebSocketAdapter.java b/src/main/java/org/htmlunit/websocket/WebSocketAdapter.java
index 07672d0ba41..9fa515d7b6c 100644
--- a/src/main/java/org/htmlunit/websocket/WebSocketAdapter.java
+++ b/src/main/java/org/htmlunit/websocket/WebSocketAdapter.java
@@ -24,6 +24,7 @@
* @author Ronald Brill
*/
public interface WebSocketAdapter {
+
/**
* Starts the client.
*
@@ -67,52 +68,4 @@ public interface WebSocketAdapter {
* @throws Exception in case of error
*/
void closeClient() throws Exception;
-
- /**
- * Callback to be called when connecting.
- */
- void onWebSocketConnecting();
-
- /**
- * Callback to be called when connected.
- */
- void onWebSocketConnect();
-
- /**
- * Callback to be called when closed.
- *
- * @param statusCode the status code
- * @param reason the reason
- */
- void onWebSocketClose(int statusCode, String reason);
-
- /**
- * Callback to be called when closed.
- *
- * @param message the message
- */
- void onWebSocketText(String message);
-
- /**
- * Callback to be called when binary data retrieved.
- *
- * @param data the bytes
- * @param offset start offset
- * @param length the length
- */
- void onWebSocketBinary(byte[] data, int offset, int length);
-
- /**
- * Callback to be called on connect error.
- *
- * @param cause the cause
- */
- void onWebSocketConnectError(Throwable cause);
-
- /**
- * Callback to be called on error.
- *
- * @param cause the cause
- */
- void onWebSocketError(Throwable cause);
}
diff --git a/src/main/java/org/htmlunit/websocket/WebSocketAdapterFactory.java b/src/main/java/org/htmlunit/websocket/WebSocketAdapterFactory.java
new file mode 100644
index 00000000000..342f246c89e
--- /dev/null
+++ b/src/main/java/org/htmlunit/websocket/WebSocketAdapterFactory.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2025 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.htmlunit.websocket;
+
+import java.io.Serializable;
+
+import org.htmlunit.WebClient;
+
+/**
+ * Helper to have no direct dependency to the WebSocket client
+ * implementation used by HtmlUnit.
+ *
+ * @author Ronald Brill
+ */
+public interface WebSocketAdapterFactory extends Serializable {
+
+ /**
+ * Builds a new {@link WebSocketAdapter}.
+ *
+ * @param webClient the {@link WebClient}
+ * @param webSocketListener the {@link WebSocketListener}
+ * @return a new {@link WebSocketAdapter}
+ */
+ WebSocketAdapter buildWebSocketAdapter(WebClient webClient, WebSocketListener webSocketListener);
+}
diff --git a/src/main/java/org/htmlunit/websocket/WebSocketCookieStore.java b/src/main/java/org/htmlunit/websocket/WebSocketCookieStore.java
index 667b6b60aae..4d4ef38fa3f 100644
--- a/src/main/java/org/htmlunit/websocket/WebSocketCookieStore.java
+++ b/src/main/java/org/htmlunit/websocket/WebSocketCookieStore.java
@@ -28,6 +28,7 @@
* A helper class for {@link WebSocket}.
*
* @author Ahmed Ashour
+ * @author Ronald Brill
*/
class WebSocketCookieStore implements CookieStore {
diff --git a/src/main/java/org/htmlunit/websocket/WebSocketListener.java b/src/main/java/org/htmlunit/websocket/WebSocketListener.java
new file mode 100644
index 00000000000..3a6b0532316
--- /dev/null
+++ b/src/main/java/org/htmlunit/websocket/WebSocketListener.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2002-2025 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.htmlunit.websocket;
+
+/**
+ * Helper to have no direct dependency to the WebSockt client
+ * implementation used by HtmlUnit.
+ *
+ * @author Ronald Brill
+ */
+public interface WebSocketListener {
+
+ /**
+ * Callback to be called when connecting.
+ */
+ void onWebSocketConnecting();
+
+ /**
+ * Callback to be called when connected.
+ */
+ void onWebSocketConnect();
+
+ /**
+ * Callback to be called when closed.
+ *
+ * @param statusCode the status code
+ * @param reason the reason
+ */
+ void onWebSocketClose(int statusCode, String reason);
+
+ /**
+ * Callback to be called when closed.
+ *
+ * @param message the message
+ */
+ void onWebSocketText(String message);
+
+ /**
+ * Callback to be called when binary data retrieved.
+ *
+ * @param data the bytes
+ * @param offset start offset
+ * @param length the length
+ */
+ void onWebSocketBinary(byte[] data, int offset, int length);
+
+ /**
+ * Callback to be called on connect error.
+ *
+ * @param cause the cause
+ */
+ void onWebSocketConnectError(Throwable cause);
+
+ /**
+ * Callback to be called on error.
+ *
+ * @param cause the cause
+ */
+ void onWebSocketError(Throwable cause);
+}
From 328a0c55bb446ba973d1ea2b708119122c4f1f6e Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 29 Mar 2025 17:11:25 +0100
Subject: [PATCH 013/125] fix import
---
src/main/java/org/htmlunit/WebClient.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/main/java/org/htmlunit/WebClient.java b/src/main/java/org/htmlunit/WebClient.java
index e5211be86be..5e61212d55c 100644
--- a/src/main/java/org/htmlunit/WebClient.java
+++ b/src/main/java/org/htmlunit/WebClient.java
@@ -60,7 +60,6 @@
import org.apache.http.NoHttpResponseException;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.cookie.MalformedCookieException;
-import org.eclipse.jetty.websocket.api.WebSocketAdapter;
import org.htmlunit.attachment.Attachment;
import org.htmlunit.attachment.AttachmentHandler;
import org.htmlunit.csp.Policy;
From 0b5c8a53a3ed62008abb3f2aeea827d8cde3061c Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 29 Mar 2025 17:30:06 +0100
Subject: [PATCH 014/125] another arch test
---
.../htmlunit/websocket/JettyWebSocketAdapter.java | 4 +++-
.../org/htmlunit/archunit/ArchitectureTest.java | 13 +++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/htmlunit/websocket/JettyWebSocketAdapter.java b/src/main/java/org/htmlunit/websocket/JettyWebSocketAdapter.java
index 0b396c8f7af..5e8d653b582 100644
--- a/src/main/java/org/htmlunit/websocket/JettyWebSocketAdapter.java
+++ b/src/main/java/org/htmlunit/websocket/JettyWebSocketAdapter.java
@@ -27,7 +27,9 @@
import org.htmlunit.jetty.websocket.client.WebSocketClient;
/**
- * Jetty based impl of the WebSocketAdapter.
+ * Jetty9 based impl of the WebSocketAdapter.
+ * To avoid conflicts with other jetty versions used by projects, we use
+ * our own shaded version of jetty9 (https://github.com/HtmlUnit/htmlunit-websocket-client).
*
* @author Ronald Brill
*/
diff --git a/src/test/java/org/htmlunit/archunit/ArchitectureTest.java b/src/test/java/org/htmlunit/archunit/ArchitectureTest.java
index 3742b9e085a..5594175bd08 100644
--- a/src/test/java/org/htmlunit/archunit/ArchitectureTest.java
+++ b/src/test/java/org/htmlunit/archunit/ArchitectureTest.java
@@ -90,6 +90,19 @@ public class ArchitectureTest {
.and().resideOutsideOfPackage("org.htmlunit.jetty..")
.should().dependOnClassesThat().resideInAnyPackage("java.awt..");
+ /**
+ * The jetty websocket stuff is only used by one class.
+ */
+ @ArchTest
+ public static final ArchRule webSocketPackageRule = noClasses()
+ .that()
+ .resideOutsideOfPackage("org.htmlunit.jetty..")
+ .and().doNotHaveFullyQualifiedName("org.htmlunit.websocket.JettyWebSocketAdapter")
+ .and().doNotHaveFullyQualifiedName("org.htmlunit.websocket.JettyWebSocketAdapter$JettyWebSocketAdapterFactory")
+ .and().doNotHaveFullyQualifiedName("org.htmlunit.websocket.JettyWebSocketAdapter$JettyWebSocketAdapterImpl")
+ .should()
+ .dependOnClassesThat().resideInAnyPackage("org.htmlunit.jetty..");
+
/**
* JsxClasses are always in the javascript package.
*/
From 01341a8426bf19febfb3d8216ab9959ad7bb3dd8 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 29 Mar 2025 19:44:56 +0100
Subject: [PATCH 015/125] jdoc fix
---
src/main/java/org/htmlunit/WebClient.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/htmlunit/WebClient.java b/src/main/java/org/htmlunit/WebClient.java
index 5e61212d55c..97fa9520e31 100644
--- a/src/main/java/org/htmlunit/WebClient.java
+++ b/src/main/java/org/htmlunit/WebClient.java
@@ -100,6 +100,7 @@
import org.htmlunit.util.NameValuePair;
import org.htmlunit.util.UrlUtils;
import org.htmlunit.websocket.JettyWebSocketAdapter.JettyWebSocketAdapterFactory;
+import org.htmlunit.websocket.WebSocketAdapter;
import org.htmlunit.websocket.WebSocketAdapterFactory;
import org.htmlunit.websocket.WebSocketListener;
import org.htmlunit.webstart.WebStartHandler;
@@ -2898,9 +2899,9 @@ public XHtmlPage loadXHtmlCodeIntoCurrentWindow(final String xhtmlCode) throws I
* Creates a new {@link WebSocketAdapter}.
*
* @param webSocketListener the {@link WebSocketListener}
- * @return a new {@link org.htmlunit.websocket.WebSocketAdapter}
+ * @return a new {@link WebSocketAdapter}
*/
- public org.htmlunit.websocket.WebSocketAdapter buildWebSocketAdapter(final WebSocketListener webSocketListener) {
+ public WebSocketAdapter buildWebSocketAdapter(final WebSocketListener webSocketListener) {
return webSocketAdapterFactory_.buildWebSocketAdapter(this, webSocketListener);
}
From 064398266832317cad4303900d87441ec088e3f0 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 30 Mar 2025 10:40:54 +0200
Subject: [PATCH 016/125] document last changes
---
src/changes/changes.xml | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 85f6cae0278..3c6c7872ae6 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,15 @@
+
+ WebClient.setWebSocketAdapter(WebSocketAdapterFactory) added. This should
+ help to use a different WebSocket implementation.
+
+
+ WebSocketAdapter splitted into WebSocketAdapter and WebSocketListener.
+ New interface WebSocketAdapterFactory introduced. This should help to
+ make it simpler to use a different WebSocket implementation.
+
core-js: Named capture groups in RegularExpressions now supported.
From 4874614f47eebe971e17b34817ff27826d2f7806 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 30 Mar 2025 18:51:38 +0200
Subject: [PATCH 017/125] codestyle
---
src/changes/changes.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3c6c7872ae6..a04fa0a257e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -9,7 +9,7 @@
- WebClient.setWebSocketAdapter(WebSocketAdapterFactory) added. This should
+ WebClient.setWebSocketAdapter(WebSocketAdapterFactory) added. This should
help to use a different WebSocket implementation.
From ce206d4a52ef133311e89b43d0415b2db0e1934f Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 31 Mar 2025 19:13:28 +0200
Subject: [PATCH 018/125] more strict protocol handling when opening an url
---
src/main/java/org/htmlunit/WebClient.java | 16 +++--
.../java/org/htmlunit/WebClient2Test.java | 61 +++++++++++++++++++
src/test/resources/simple.html | 9 +++
3 files changed, 81 insertions(+), 5 deletions(-)
create mode 100644 src/test/resources/simple.html
diff --git a/src/main/java/org/htmlunit/WebClient.java b/src/main/java/org/htmlunit/WebClient.java
index 97fa9520e31..a4dfc1da9f3 100644
--- a/src/main/java/org/htmlunit/WebClient.java
+++ b/src/main/java/org/htmlunit/WebClient.java
@@ -514,7 +514,8 @@ P getPage(final WebWindow webWindow, final WebRequest webReques
/**
* Convenient method to build a URL and load it into the current WebWindow as it would be done
* by {@link #getPage(WebWindow, WebRequest)}.
- * @param url the URL of the new content
+ * @param url the URL of the new content; in contrast to real browsers plain file url's are not supported.
+ * You have to use the 'file', 'data', 'blob', 'http' or 'https' protocol.
* @param
the page type
* @return the new page
* @throws FailingHttpStatusCodeException if the server returns a failing status code AND the property
@@ -530,7 +531,8 @@ public
P getPage(final String url) throws IOException, FailingH
/**
* Convenient method to load a URL into the current top WebWindow as it would be done
* by {@link #getPage(WebWindow, WebRequest)}.
- * @param url the URL of the new content
+ * @param url the URL of the new content; in contrast to real browsers plain file url's are not supported.
+ * You have to use the 'file', 'data', 'blob', 'http' or 'https' protocol.
* @param
the page type
* @return the new page
* @throws FailingHttpStatusCodeException if the server returns a failing status code AND the property
@@ -541,7 +543,6 @@ public
P getPage(final URL url) throws IOException, FailingHttp
final WebRequest request = new WebRequest(url, getBrowserVersion().getHtmlAcceptHeader(),
getBrowserVersion().getAcceptEncodingHeader());
request.setCharset(UTF_8);
-
return getPage(getCurrentWindow().getTopWindow(), request);
}
@@ -1546,7 +1547,8 @@ private WebResponse makeWebResponseForJavaScriptUrl(final WebWindow webWindow, f
* @return the WebResponse
*/
public WebResponse loadWebResponse(final WebRequest webRequest) throws IOException {
- switch (webRequest.getUrl().getProtocol()) {
+ final String protocol = webRequest.getUrl().getProtocol();
+ switch (protocol) {
case UrlUtils.ABOUT:
return makeWebResponseForAboutUrl(webRequest);
@@ -1559,8 +1561,12 @@ public WebResponse loadWebResponse(final WebRequest webRequest) throws IOExcepti
case "blob":
return makeWebResponseForBlobUrl(webRequest);
- default:
+ case "http":
+ case "https":
return loadWebResponseFromWebConnection(webRequest, ALLOWED_REDIRECTIONS_SAME_URL);
+
+ default:
+ throw new IOException("Unsupported protocol '" + protocol + "'");
}
}
diff --git a/src/test/java/org/htmlunit/WebClient2Test.java b/src/test/java/org/htmlunit/WebClient2Test.java
index a22ebec31a8..059dbb4e50a 100644
--- a/src/test/java/org/htmlunit/WebClient2Test.java
+++ b/src/test/java/org/htmlunit/WebClient2Test.java
@@ -15,7 +15,11 @@
package org.htmlunit;
import static org.htmlunit.httpclient.HtmlUnitBrowserCompatCookieSpec.EMPTY_COOKIE_NAME;
+import static org.junit.Assert.fail;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
@@ -378,4 +382,61 @@ public void toLocaleLowerCase() throws Exception {
page = loadPage(html);
assertEquals("\u0069", page.getTitleText());
}
+
+ /**
+ * This is supported by reals browsers but not with HtmlUnit.
+ * @throws Exception if the test fails
+ */
+ @Test
+ public void localFile() throws Exception {
+ final URL url = getClass().getClassLoader().getResource("simple.html");
+ String file = url.getFile();
+ if (file.startsWith("/")) {
+ file = file.substring(1);
+ }
+
+ assertTrue(new File(file).exists());
+
+ try (WebClient webClient = new WebClient(getBrowserVersion())) {
+ final HtmlPage page = webClient.getPage(file);
+ fail("IOException expected");
+ }
+ catch (final IOException e) {
+ assertEquals("Unsupported protocol 'c'", e.getMessage());
+ }
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("titel - simple.html")
+ public void localFileFile() throws Exception {
+ final URL url = getClass().getClassLoader().getResource("simple.html");
+ String file = url.getFile();
+ if (file.startsWith("/")) {
+ file = file.substring(1);
+ }
+
+ assertTrue(new File(file).exists());
+
+ try (WebClient webClient = new WebClient(getBrowserVersion())) {
+ final HtmlPage page = webClient.getPage("file://" + file);
+ assertEquals(getExpectedAlerts()[0], page.getTitleText());
+ }
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ public void unknownProtocol() throws Exception {
+ try (WebClient webClient = new WebClient(getBrowserVersion())) {
+ final HtmlPage page = webClient.getPage("unknown://simple.html");
+ fail("IOException expected");
+ }
+ catch (final IOException e) {
+ assertEquals("Unsupported protocol 'unknown'", e.getMessage());
+ }
+ }
}
diff --git a/src/test/resources/simple.html b/src/test/resources/simple.html
new file mode 100644
index 00000000000..22de16acf40
--- /dev/null
+++ b/src/test/resources/simple.html
@@ -0,0 +1,9 @@
+
+
+
+ titel - simple.html
+
+
+ Page Content
+
+
\ No newline at end of file
From d6b7d5fce07e67df84057957e5edfad0f5823cb9 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 31 Mar 2025 19:46:15 +0200
Subject: [PATCH 019/125] dep updates
---
pom.xml | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/pom.xml b/pom.xml
index 91233db99c1..56216750cdf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,7 @@
4.4.0
1.5.5
- 10.21.4
+ 10.22.0
4.9.3
7.12.0
4.13.2
@@ -198,7 +198,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
org.apache.maven.plugins
@@ -315,7 +315,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -345,7 +345,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -376,7 +376,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -404,7 +404,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -432,7 +432,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -462,7 +462,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -491,7 +491,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -520,7 +520,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -549,7 +549,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -577,7 +577,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -605,7 +605,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -633,7 +633,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
@@ -662,7 +662,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- 3.5.2
+ 3.5.3
false
From 124aaa2e72bd8ab84377408fd0bb8bad32332f1c Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 31 Mar 2025 19:46:27 +0200
Subject: [PATCH 020/125] better assert output
---
src/test/java/org/htmlunit/WebClient2Test.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/test/java/org/htmlunit/WebClient2Test.java b/src/test/java/org/htmlunit/WebClient2Test.java
index 059dbb4e50a..11130ba054d 100644
--- a/src/test/java/org/htmlunit/WebClient2Test.java
+++ b/src/test/java/org/htmlunit/WebClient2Test.java
@@ -395,7 +395,7 @@ public void localFile() throws Exception {
file = file.substring(1);
}
- assertTrue(new File(file).exists());
+ assertTrue("File '" + file + "' does not exist", new File(file).exists());
try (WebClient webClient = new WebClient(getBrowserVersion())) {
final HtmlPage page = webClient.getPage(file);
@@ -418,7 +418,7 @@ public void localFileFile() throws Exception {
file = file.substring(1);
}
- assertTrue(new File(file).exists());
+ assertTrue("File '" + file + "' does not exist", new File(file).exists());
try (WebClient webClient = new WebClient(getBrowserVersion())) {
final HtmlPage page = webClient.getPage("file://" + file);
From aec806491c5d85e5c6a985f0510c225c00264ea8 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Tue, 1 Apr 2025 06:58:49 +0200
Subject: [PATCH 021/125] next try
---
src/test/java/org/htmlunit/WebClient2Test.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/test/java/org/htmlunit/WebClient2Test.java b/src/test/java/org/htmlunit/WebClient2Test.java
index 11130ba054d..420fa95a24c 100644
--- a/src/test/java/org/htmlunit/WebClient2Test.java
+++ b/src/test/java/org/htmlunit/WebClient2Test.java
@@ -391,7 +391,7 @@ public void toLocaleLowerCase() throws Exception {
public void localFile() throws Exception {
final URL url = getClass().getClassLoader().getResource("simple.html");
String file = url.getFile();
- if (file.startsWith("/")) {
+ if (file.startsWith("/") && file.contains(":")) {
file = file.substring(1);
}
@@ -414,7 +414,7 @@ public void localFile() throws Exception {
public void localFileFile() throws Exception {
final URL url = getClass().getClassLoader().getResource("simple.html");
String file = url.getFile();
- if (file.startsWith("/")) {
+ if (file.startsWith("/") && file.contains(":")) {
file = file.substring(1);
}
From fe8762e5d2f99f6fe2d038d4368883a98958831f Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Tue, 1 Apr 2025 08:33:54 +0200
Subject: [PATCH 022/125] document core-js changes
---
src/changes/changes.xml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index a04fa0a257e..5e3ea005f5d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,12 @@
+
+ core-js: Some fixes for strict handling.
+
+
+ core-js: Several code improvements for the RegExp implementation.
+
WebClient.setWebSocketAdapter(WebSocketAdapterFactory) added. This should
help to use a different WebSocket implementation.
From 1acdeace410ebb6db132ae774dbbc82c2d23372a Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Tue, 1 Apr 2025 08:34:06 +0200
Subject: [PATCH 023/125] next try
---
src/test/java/org/htmlunit/WebClient2Test.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/test/java/org/htmlunit/WebClient2Test.java b/src/test/java/org/htmlunit/WebClient2Test.java
index 420fa95a24c..62520bf76e0 100644
--- a/src/test/java/org/htmlunit/WebClient2Test.java
+++ b/src/test/java/org/htmlunit/WebClient2Test.java
@@ -402,7 +402,9 @@ public void localFile() throws Exception {
fail("IOException expected");
}
catch (final IOException e) {
- assertEquals("Unsupported protocol 'c'", e.getMessage());
+ assertTrue(e.getMessage(),
+ e.getMessage().startsWith("Unsupported protocol '")
+ || e.getMessage().startsWith("no protocol: /"));
}
}
From d3b7ab9082a81cae8cd070e762d8ba9d33f99c66 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 2 Apr 2025 13:19:54 +0200
Subject: [PATCH 024/125] simplify code (the parameter was something used
during the IE times)
---
src/main/java/org/htmlunit/WebClient.java | 7 ++-----
src/main/java/org/htmlunit/html/HtmlAnchor.java | 2 +-
src/main/java/org/htmlunit/html/HtmlForm.java | 2 +-
src/main/java/org/htmlunit/javascript/host/Location.java | 4 ++--
4 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/src/main/java/org/htmlunit/WebClient.java b/src/main/java/org/htmlunit/WebClient.java
index a4dfc1da9f3..c476d856611 100644
--- a/src/main/java/org/htmlunit/WebClient.java
+++ b/src/main/java/org/htmlunit/WebClient.java
@@ -2602,13 +2602,12 @@ public boolean isOutdated() {
* @param target the name of the target window
* @param request the request to perform
* @param checkHash if true check for hashChenage
- * @param forceLoad if true always load the request even if there is already the same in the queue
* @param forceAttachmentWithFilename if not {@code null} the AttachmentHandler isAttachment() method is not called,
* the response has to be handled as attachment in any case
* @param description information about the origin of the request. Useful for debugging.
*/
public void download(final WebWindow requestingWindow, final String target,
- final WebRequest request, final boolean checkHash, final boolean forceLoad,
+ final WebRequest request, final boolean checkHash,
final String forceAttachmentWithFilename, final String description) {
final WebWindow targetWindow = resolveWindow(requestingWindow, target);
@@ -2645,9 +2644,7 @@ public void download(final WebWindow requestingWindow, final String target,
final WebRequest otherRequest = otherLoadJob.request_;
final URL otherUrl = otherRequest.getUrl();
- // TODO: investigate but it seems that IE considers query string too but not FF
- if (!forceLoad
- && url.getPath().equals(otherUrl.getPath()) // fail fast
+ if (url.getPath().equals(otherUrl.getPath()) // fail fast
&& url.toString().equals(otherUrl.toString())
&& request.getRequestParameters().equals(otherRequest.getRequestParameters())
&& Objects.equals(request.getRequestBody(), otherRequest.getRequestBody())) {
diff --git a/src/main/java/org/htmlunit/html/HtmlAnchor.java b/src/main/java/org/htmlunit/html/HtmlAnchor.java
index 09a55e7ac38..ba42f1b9857 100644
--- a/src/main/java/org/htmlunit/html/HtmlAnchor.java
+++ b/src/main/java/org/htmlunit/html/HtmlAnchor.java
@@ -195,7 +195,7 @@ protected void doClickStateUpdate(final boolean shiftKey, final boolean ctrlKey,
target = page.getResolvedTarget(getTargetAttribute());
}
page.getWebClient().download(page.getEnclosingWindow(), target, webRequest,
- true, false, (ATTRIBUTE_NOT_DEFINED != downloadAttribute) ? downloadAttribute : null, "Link click");
+ true, (ATTRIBUTE_NOT_DEFINED != downloadAttribute) ? downloadAttribute : null, "Link click");
}
private boolean relContainsNoreferrer() {
diff --git a/src/main/java/org/htmlunit/html/HtmlForm.java b/src/main/java/org/htmlunit/html/HtmlForm.java
index bd2cd911b79..dd7797388f3 100644
--- a/src/main/java/org/htmlunit/html/HtmlForm.java
+++ b/src/main/java/org/htmlunit/html/HtmlForm.java
@@ -191,7 +191,7 @@ && getAttributeDirect(ATTRIBUTE_NOVALIDATE) != ATTRIBUTE_NOT_DEFINED) {
final WebWindow webWindow = htmlPage.getEnclosingWindow();
// Calling form.submit() twice forces double download.
- webClient.download(webWindow, target, request, false, false, null, "JS form.submit()");
+ webClient.download(webWindow, target, request, false, null, "JS form.submit()");
}
/**
diff --git a/src/main/java/org/htmlunit/javascript/host/Location.java b/src/main/java/org/htmlunit/javascript/host/Location.java
index 9db713e6902..281d547e4bc 100644
--- a/src/main/java/org/htmlunit/javascript/host/Location.java
+++ b/src/main/java/org/htmlunit/javascript/host/Location.java
@@ -229,7 +229,7 @@ public void reload(final boolean force) throws IOException {
request.setRefererHeader(htmlPage.getUrl());
}
- webWindow.getWebClient().download(webWindow, "", request, false, false, null, "JS location.reload");
+ webWindow.getWebClient().download(webWindow, "", request, false, null, "JS location.reload");
}
/**
@@ -315,7 +315,7 @@ public void setHref(final String newLocation) throws IOException {
request.setRefererHeader(page.getUrl());
webWindow = window_.getWebWindow();
- webWindow.getWebClient().download(webWindow, "", request, true, false, null, "JS set location");
+ webWindow.getWebClient().download(webWindow, "", request, true, null, "JS set location");
}
catch (final MalformedURLException e) {
if (LOG.isErrorEnabled()) {
From f0ada14d5a3ba55501c43d0862745b24b9a25cc2 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 2 Apr 2025 15:25:33 +0200
Subject: [PATCH 025/125] check the request count also
---
.../java/org/htmlunit/html/HtmlForm2Test.java | 33 +++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/src/test/java/org/htmlunit/html/HtmlForm2Test.java b/src/test/java/org/htmlunit/html/HtmlForm2Test.java
index 7d42fe91840..5752b502e3e 100644
--- a/src/test/java/org/htmlunit/html/HtmlForm2Test.java
+++ b/src/test/java/org/htmlunit/html/HtmlForm2Test.java
@@ -196,6 +196,7 @@ public void base() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
final URL requestedUrl = getMockWebConnection().getLastWebRequest().getUrl();
final URL expectedUrl = new URL(URL_SECOND, "two.html");
assertEquals(expectedUrl, requestedUrl);
@@ -219,6 +220,7 @@ public void emptyActionWithBase() throws Exception {
final WebDriver driver = loadPage2(html);
driver.findElement(new ByTagName("input")).click();
+ assertEquals(2, getMockWebConnection().getRequestCount());
final URL requestedUrl = getMockWebConnection().getLastWebRequest().getUrl();
assertEquals(URL_FIRST.toExternalForm(), requestedUrl);
}
@@ -242,6 +244,7 @@ public void emptyActionWithBase2() throws Exception {
final WebDriver driver = loadPage2(html);
driver.findElement(new ByTagName("input")).click();
+ assertEquals(1, getMockWebConnection().getRequestCount());
final URL requestedUrl = getMockWebConnection().getLastWebRequest().getUrl();
assertEquals(URL_FIRST.toExternalForm(), requestedUrl);
}
@@ -322,6 +325,7 @@ public void encodingSubmit() throws Exception {
}
assertEquals(getExpectedAlerts()[0], driver.getCurrentUrl());
+ assertEquals(2, getMockWebConnection().getRequestCount());
final List requestedParams =
getMockWebConnection().getLastWebRequest().getRequestParameters();
@@ -360,6 +364,7 @@ public void originRefererHeaderGet() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
final Map lastAdditionalHeaders = webConnection.getLastAdditionalHeaders();
assertEquals(getExpectedAlerts()[0], "" + lastAdditionalHeaders.get(HttpHeader.ORIGIN));
assertEquals(getExpectedAlerts()[1], "" + lastAdditionalHeaders.get(HttpHeader.REFERER));
@@ -397,6 +402,7 @@ public void originRefererHeaderPost() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
final Map lastAdditionalHeaders = webConnection.getLastAdditionalHeaders();
assertEquals(getExpectedAlerts()[0], "" + lastAdditionalHeaders.get(HttpHeader.ORIGIN));
assertEquals(getExpectedAlerts()[1], "" + lastAdditionalHeaders.get(HttpHeader.REFERER));
@@ -892,6 +898,7 @@ public void inputTypeImageWithFormEnctype() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
assertEquals(URL_SECOND.toString(), getMockWebConnection().getLastWebRequest().getUrl());
assertEquals(getExpectedAlerts()[0],
getMockWebConnection().getLastWebRequest().getEncodingType().getName());
@@ -1074,6 +1081,7 @@ public void novalidate() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
assertEquals(getExpectedAlerts()[0], driver.getTitle());
}
@@ -1105,6 +1113,7 @@ public void submitFormnovalidate() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
assertEquals(getExpectedAlerts()[0], driver.getTitle());
}
@@ -1136,6 +1145,7 @@ public void submitButtonFormnovalidate() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
assertEquals(getExpectedAlerts()[0], driver.getTitle());
}
@@ -1167,6 +1177,7 @@ public void defaultButtonFormnovalidate() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
assertEquals(getExpectedAlerts()[0], driver.getTitle());
}
@@ -1212,6 +1223,8 @@ public void submitUsingFormAttribute() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
+
final List requestedParams =
getMockWebConnection().getLastWebRequest().getRequestParameters();
Collections.sort(requestedParams, Comparator.comparing(NameValuePair::getName));
@@ -1268,6 +1281,8 @@ public void submitUsingFormAttributeElementsDeclaredBeforeForm() throws Exceptio
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
+
final List requestedParams =
getMockWebConnection().getLastWebRequest().getRequestParameters();
Collections.sort(requestedParams, Comparator.comparing(NameValuePair::getName));
@@ -1309,6 +1324,8 @@ public void submitUsingFormAttributeElementsDeeplyNested() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
+
final List requestedParams =
getMockWebConnection().getLastWebRequest().getRequestParameters();
Collections.sort(requestedParams, Comparator.comparing(NameValuePair::getName));
@@ -1349,6 +1366,8 @@ public void submitFromInsideAnother() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
+
final List requestedParams =
getMockWebConnection().getLastWebRequest().getRequestParameters();
Collections.sort(requestedParams, Comparator.comparing(NameValuePair::getName));
@@ -1386,6 +1405,8 @@ public void submitFromInsideAnotherInvalidFormRef() throws Exception {
final WebDriver driver = loadPage2(html);
driver.findElement(new ById("mySubmit")).click();
+ assertEquals(1, getMockWebConnection().getRequestCount());
+
final List requestedParams =
getMockWebConnection().getLastWebRequest().getRequestParameters();
Collections.sort(requestedParams, Comparator.comparing(NameValuePair::getName));
@@ -1529,6 +1550,8 @@ private void submitParams(final String controls) throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
+
final List requestedParams =
getMockWebConnection().getLastWebRequest().getRequestParameters();
Collections.sort(requestedParams, Comparator.comparing(NameValuePair::getName));
@@ -1568,6 +1591,8 @@ public void submit_refererHeader() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
+
final Map lastAdditionalHeaders = getMockWebConnection().getLastAdditionalHeaders();
assertEquals(getExpectedAlerts()[0], lastAdditionalHeaders.get(HttpHeader.REFERER));
}
@@ -1601,6 +1626,8 @@ public void submit_refererHeaderNoreferrer() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
+
final Map lastAdditionalHeaders = getMockWebConnection().getLastAdditionalHeaders();
assertEquals(getExpectedAlerts()[0], "" + lastAdditionalHeaders.get(HttpHeader.REFERER));
}
@@ -1634,6 +1661,8 @@ public void submit_refererHeaderNoreferrerCaseSensitive() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
+
final Map lastAdditionalHeaders = getMockWebConnection().getLastAdditionalHeaders();
assertEquals(getExpectedAlerts()[0], "" + lastAdditionalHeaders.get(HttpHeader.REFERER));
}
@@ -1667,6 +1696,8 @@ public void submit_refererHeaderNoreferrerGet() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
+
final Map lastAdditionalHeaders = getMockWebConnection().getLastAdditionalHeaders();
assertEquals(getExpectedAlerts()[0], "" + lastAdditionalHeaders.get(HttpHeader.REFERER));
}
@@ -1826,6 +1857,8 @@ public void inputHiddenAdded() throws Exception {
Thread.sleep(400);
}
+ assertEquals(2, getMockWebConnection().getRequestCount());
+
final String url = getMockWebConnection().getLastWebRequest().getUrl().toExternalForm();
assertTrue(url.endsWith(getExpectedAlerts()[0]));
}
From 20c573ef4219f78385a6ee976c5af3ba80e269e3 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 4 Apr 2025 14:30:09 +0200
Subject: [PATCH 026/125] code style
---
src/main/java/org/htmlunit/html/HtmlPage.java | 2 +-
.../javascript/host/canvas/CanvasRenderingContext2D.java | 2 +-
.../java/org/htmlunit/javascript/host/event/MouseEvent.java | 2 +-
.../org/htmlunit/javascript/host/html/HTMLAnchorElement.java | 2 +-
src/test/java/org/htmlunit/javascript/NativeArrayTest.java | 4 ++--
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/htmlunit/html/HtmlPage.java b/src/main/java/org/htmlunit/html/HtmlPage.java
index a52a241cb47..f2149ea365e 100644
--- a/src/main/java/org/htmlunit/html/HtmlPage.java
+++ b/src/main/java/org/htmlunit/html/HtmlPage.java
@@ -923,7 +923,7 @@ public ScriptResult executeJavaScript(final String sourceCode) {
* Please note: Although this method is public, it is not intended for
* general execution of JavaScript. Users of HtmlUnit should interact with the pages
* as a user would by clicking on buttons or links and having the JavaScript event
- * handlers execute as needed..
+ * handlers execute as needed.
*
*
* @param sourceCode the JavaScript code to execute
diff --git a/src/main/java/org/htmlunit/javascript/host/canvas/CanvasRenderingContext2D.java b/src/main/java/org/htmlunit/javascript/host/canvas/CanvasRenderingContext2D.java
index f8a0f9d8e02..72bacfd3601 100644
--- a/src/main/java/org/htmlunit/javascript/host/canvas/CanvasRenderingContext2D.java
+++ b/src/main/java/org/htmlunit/javascript/host/canvas/CanvasRenderingContext2D.java
@@ -91,7 +91,7 @@ private RenderingBackend getRenderingBackend() {
/**
* Specifies the alpha (transparency) value that is applied to shapes and images
- * before they are drawn onto the canvas..
+ * before they are drawn onto the canvas.
* @return the {@code globalAlpha} property
*/
@JsxGetter
diff --git a/src/main/java/org/htmlunit/javascript/host/event/MouseEvent.java b/src/main/java/org/htmlunit/javascript/host/event/MouseEvent.java
index 3f737adc89d..7b65737303a 100644
--- a/src/main/java/org/htmlunit/javascript/host/event/MouseEvent.java
+++ b/src/main/java/org/htmlunit/javascript/host/event/MouseEvent.java
@@ -239,7 +239,7 @@ public int getScreenX() {
}
/**
- * Returns the horizontal coordinate of the event relative to whole document..
+ * Returns the horizontal coordinate of the event relative to whole document.
* @return the horizontal coordinate (currently the same as {@link #getScreenX()})
* @see Mozilla doc
*/
diff --git a/src/main/java/org/htmlunit/javascript/host/html/HTMLAnchorElement.java b/src/main/java/org/htmlunit/javascript/host/html/HTMLAnchorElement.java
index 53d8d1b2cdd..e4bec395f7f 100644
--- a/src/main/java/org/htmlunit/javascript/host/html/HTMLAnchorElement.java
+++ b/src/main/java/org/htmlunit/javascript/host/html/HTMLAnchorElement.java
@@ -254,7 +254,7 @@ public String getSearch() {
/**
* Sets the search portion of the link's URL (the portion starting with '?'
- * and up to but not including any '#')..
+ * and up to but not including any '#').
* @param search the new search portion of the link's URL
* @throws Exception if an error occurs
* @see MSDN Documentation
diff --git a/src/test/java/org/htmlunit/javascript/NativeArrayTest.java b/src/test/java/org/htmlunit/javascript/NativeArrayTest.java
index 45f54bf43cb..192220112e0 100644
--- a/src/test/java/org/htmlunit/javascript/NativeArrayTest.java
+++ b/src/test/java/org/htmlunit/javascript/NativeArrayTest.java
@@ -136,7 +136,7 @@ public void sortBoolComperator() throws Exception {
}
/**
- * Test for sort callback..
+ * Test for sort callback.
* @throws Exception if the test fails
*/
@Test
@@ -160,7 +160,7 @@ public void sortBool2IntComperator() throws Exception {
}
/**
- * Test for sort callback..
+ * Test for sort callback.
* @throws Exception if the test fails
*/
@Test
From 3dff1b85e663903c8d4353b1b290fb13ed6ab416 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 4 Apr 2025 18:16:58 +0200
Subject: [PATCH 027/125] one more test
---
.../javascript/host/dom/RangeTest.java | 25 +++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/src/test/java/org/htmlunit/javascript/host/dom/RangeTest.java b/src/test/java/org/htmlunit/javascript/host/dom/RangeTest.java
index e0592d5227f..1f781f8c8e6 100644
--- a/src/test/java/org/htmlunit/javascript/host/dom/RangeTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/dom/RangeTest.java
@@ -147,6 +147,31 @@ public void createContextualFragment2() throws Exception {
loadPageVerifyTitle2(html);
}
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("
hello:
")
+ public void createContextualStrangeCode() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + " \n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
/**
* @throws Exception if the test fails
*/
From e71f9e97fc7911f1c9d8f9a4b88580ac10dc5ad2 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 4 Apr 2025 18:31:12 +0200
Subject: [PATCH 028/125] neko 4.12.0-SNAPSHOT
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 56216750cdf..9c420c8cce2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
4.11.0
4.11.0
4.12.0-SNAPSHOT
- 4.11.0
+ 4.12.0-SNAPSHOT
4.11.0
4.11.0
From 26932cd46d5c45c32c769fd8be4c8cdae0409236 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 09:47:32 +0200
Subject: [PATCH 029/125] make test more robust when running with real browser
---
src/test/java/org/htmlunit/html/HtmlForm2Test.java | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/test/java/org/htmlunit/html/HtmlForm2Test.java b/src/test/java/org/htmlunit/html/HtmlForm2Test.java
index 5752b502e3e..8f58c75db0a 100644
--- a/src/test/java/org/htmlunit/html/HtmlForm2Test.java
+++ b/src/test/java/org/htmlunit/html/HtmlForm2Test.java
@@ -219,6 +219,9 @@ public void emptyActionWithBase() throws Exception {
final WebDriver driver = loadPage2(html);
driver.findElement(new ByTagName("input")).click();
+ if (useRealBrowser()) {
+ Thread.sleep(400);
+ }
assertEquals(2, getMockWebConnection().getRequestCount());
final URL requestedUrl = getMockWebConnection().getLastWebRequest().getUrl();
From 6410ac962e94dbb59fe53febf179ba4206bc6f44 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 09:48:17 +0200
Subject: [PATCH 030/125] adjust expectation Chrome/Edge 136
---
.../org/htmlunit/javascript/host/intl/DateTimeFormatTest.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/test/java/org/htmlunit/javascript/host/intl/DateTimeFormatTest.java b/src/test/java/org/htmlunit/javascript/host/intl/DateTimeFormatTest.java
index a52b3399189..662f0ad5aad 100644
--- a/src/test/java/org/htmlunit/javascript/host/intl/DateTimeFormatTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/intl/DateTimeFormatTest.java
@@ -271,7 +271,7 @@ public void timeZoneUTC() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = "Etc/GMT+5",
+ @Alerts(DEFAULT = "America/Panama",
FF = "EST",
FF_ESR = "EST")
@BuggyWebDriver(FF = "Europe/Berlin", FF_ESR = "Europe/Berlin")
From 05d31e515d409804670d6bb40fe28f37e56ed375 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 09:49:04 +0200
Subject: [PATCH 031/125] Chrome/Edge 135, FF 137
---
.../java/org/htmlunit/BrowserVersion.java | 20 +++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/htmlunit/BrowserVersion.java b/src/main/java/org/htmlunit/BrowserVersion.java
index 21f04601d44..6cfaf09687a 100644
--- a/src/main/java/org/htmlunit/BrowserVersion.java
+++ b/src/main/java/org/htmlunit/BrowserVersion.java
@@ -65,7 +65,7 @@
public final class BrowserVersion implements Serializable {
/** Latest Firefox. */
- public static final BrowserVersion FIREFOX = new BrowserVersion(136, "FF");
+ public static final BrowserVersion FIREFOX = new BrowserVersion(137, "FF");
private static final int FIREFOX_ESR_NUMERIC = 128;
@@ -73,10 +73,10 @@ public final class BrowserVersion implements Serializable {
public static final BrowserVersion FIREFOX_ESR = new BrowserVersion(FIREFOX_ESR_NUMERIC, "FF-ESR");
/** Latest Edge. */
- public static final BrowserVersion EDGE = new BrowserVersion(134, "Edge");
+ public static final BrowserVersion EDGE = new BrowserVersion(135, "Edge");
/** Latest Chrome. */
- public static final BrowserVersion CHROME = new BrowserVersion(134, "Chrome");
+ public static final BrowserVersion CHROME = new BrowserVersion(135, "Chrome");
/**
* Array with all supported browsers.
@@ -197,6 +197,7 @@ public final class BrowserVersion implements Serializable {
CHROME.cssAcceptHeader_ = "text/css,*/*;q=0.1";
CHROME.scriptAcceptHeader_ = "*/*";
+ /*
if (CHROME.getBrowserVersionNumeric() % 2 == 0) {
CHROME.secClientHintUserAgentHeader_ = "\"Chromium\";v=\""
+ CHROME.getBrowserVersionNumeric() + "\", \"Not:A-Brand\";v=\"24\", \"Google Chrome\";v=\""
@@ -207,6 +208,10 @@ public final class BrowserVersion implements Serializable {
+ CHROME.getBrowserVersionNumeric() + "\", \"Chromium\";v=\""
+ CHROME.getBrowserVersionNumeric() + "\"";
}
+ */
+ CHROME.secClientHintUserAgentHeader_ = "\"Google Chrome\";v=\""
+ + CHROME.getBrowserVersionNumeric() + "\", \"Not-A.Brand\";v=\"8\", \"Chromium\";v=\""
+ + CHROME.getBrowserVersionNumeric() + "\"";
CHROME.fontHeights_ = new int[] {
0, 1, 2, 4, 5, 5, 6, 8, 9, 10, 11, 12, 15, 16, 16, 17, 18, 20, 21, 22, 23, 25, 26, 26,
@@ -250,7 +255,9 @@ public final class BrowserVersion implements Serializable {
EDGE.imgAcceptHeader_ = "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8";
EDGE.cssAcceptHeader_ = "text/css,*/*;q=0.1";
EDGE.scriptAcceptHeader_ = "*/*";
- if (CHROME.getBrowserVersionNumeric() % 2 == 0) {
+
+ /*
+ if (EDGE.getBrowserVersionNumeric() % 2 == 0) {
EDGE.secClientHintUserAgentHeader_ = "\"Chromium\";v=\""
+ EDGE.getBrowserVersionNumeric() + "\", \"Not:A-Brand\";v=\"24\", \"Microsoft Edge\";v=\""
+ EDGE.getBrowserVersionNumeric() + "\"";
@@ -260,6 +267,11 @@ public final class BrowserVersion implements Serializable {
+ EDGE.getBrowserVersionNumeric() + "\", \"Chromium\";v=\""
+ EDGE.getBrowserVersionNumeric() + "\"";
}
+ */
+ EDGE.secClientHintUserAgentHeader_ = "\"Microsoft Edge\";v=\""
+ + EDGE.getBrowserVersionNumeric() + "\", \"Not-A.Brand\";v=\"8\", \"Chromium\";v=\""
+ + EDGE.getBrowserVersionNumeric() + "\"";
+
EDGE.fontHeights_ = new int[] {
0, 1, 2, 4, 5, 5, 6, 8, 9, 10, 11, 12, 15, 16, 16, 17, 18, 20, 21, 22, 23, 25, 26, 26,
27, 28, 30, 31, 32, 33, 34, 36, 37, 37, 38, 40, 42, 43, 44, 45, 47, 48, 48, 49, 51, 52, 53, 54, 55, 57,
From 8318c04a00e337961cfe1fe8965f439c3103c66d Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 09:54:14 +0200
Subject: [PATCH 032/125] Chrome/Edge 135, FF 137
---
src/test/java/org/htmlunit/BrowserVersionTest.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/test/java/org/htmlunit/BrowserVersionTest.java b/src/test/java/org/htmlunit/BrowserVersionTest.java
index 9140e5e53fa..2ff982d331a 100644
--- a/src/test/java/org/htmlunit/BrowserVersionTest.java
+++ b/src/test/java/org/htmlunit/BrowserVersionTest.java
@@ -38,10 +38,10 @@ public class BrowserVersionTest {
*/
@Test
public void getBrowserVersionNumeric() {
- assertEquals(136, BrowserVersion.FIREFOX.getBrowserVersionNumeric());
+ assertEquals(137, BrowserVersion.FIREFOX.getBrowserVersionNumeric());
assertEquals(128, BrowserVersion.FIREFOX_ESR.getBrowserVersionNumeric());
- assertEquals(134, BrowserVersion.CHROME.getBrowserVersionNumeric());
- assertEquals(134, BrowserVersion.EDGE.getBrowserVersionNumeric());
+ assertEquals(135, BrowserVersion.CHROME.getBrowserVersionNumeric());
+ assertEquals(135, BrowserVersion.EDGE.getBrowserVersionNumeric());
}
/**
From 2fc74e0f355a33c28be872ffc18fac93263f24bb Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 09:54:48 +0200
Subject: [PATCH 033/125] FF137: Set span for table cells to zero if provided
value is invalid
---
src/changes/changes.xml | 5 ++++-
.../org/htmlunit/BrowserVersionFeatures.java | 4 ----
.../java/org/htmlunit/html/HtmlTableCell.java | 17 ++++-------------
.../host/html/HTMLTableCellElement.java | 11 ++---------
.../host/html/HTMLTableCellElementTest.java | 8 ++------
5 files changed, 12 insertions(+), 33 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5e3ea005f5d..6d4e6d34826 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -7,7 +7,10 @@
-
+
+
+ FF137: Set span for table cells to zero if provided value is invalid.
+
core-js: Some fixes for strict handling.
diff --git a/src/main/java/org/htmlunit/BrowserVersionFeatures.java b/src/main/java/org/htmlunit/BrowserVersionFeatures.java
index e3133d721c7..30a87f38da6 100644
--- a/src/main/java/org/htmlunit/BrowserVersionFeatures.java
+++ b/src/main/java/org/htmlunit/BrowserVersionFeatures.java
@@ -412,10 +412,6 @@ public enum BrowserVersionFeatures {
@BrowserFeature({FF, FF_ESR})
JS_STYLE_WORD_SPACING_ACCEPTS_PERCENT,
- /** Set span zo zero if provided value is invalid. */
- @BrowserFeature({CHROME, EDGE})
- JS_TABLE_SPAN_SET_ZERO_IF_INVALID,
-
/** window.getComputedStyle works with pseudo selectors without colon in front. */
@BrowserFeature({CHROME, EDGE})
JS_WINDOW_COMPUTED_STYLE_PSEUDO_ACCEPT_WITHOUT_COLON,
diff --git a/src/main/java/org/htmlunit/html/HtmlTableCell.java b/src/main/java/org/htmlunit/html/HtmlTableCell.java
index 7225fda0abd..591a495729e 100644
--- a/src/main/java/org/htmlunit/html/HtmlTableCell.java
+++ b/src/main/java/org/htmlunit/html/HtmlTableCell.java
@@ -14,8 +14,6 @@
*/
package org.htmlunit.html;
-import static org.htmlunit.BrowserVersionFeatures.JS_TABLE_SPAN_SET_ZERO_IF_INVALID;
-
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
@@ -80,18 +78,11 @@ public int getRowSpan() {
}
try {
final int span = (int) Double.parseDouble(spanString);
- if (getPage().getWebClient().getBrowserVersion().hasFeature(JS_TABLE_SPAN_SET_ZERO_IF_INVALID)) {
- if (span < 0) {
- return 1;
- }
- if (span < 1) {
- return 0;
- }
+ if (span < 0) {
+ return 1;
}
- else {
- if (span < 1) {
- return 1;
- }
+ if (span < 1) {
+ return 0;
}
if (span > 65_534) {
diff --git a/src/main/java/org/htmlunit/javascript/host/html/HTMLTableCellElement.java b/src/main/java/org/htmlunit/javascript/host/html/HTMLTableCellElement.java
index c2d908b2066..12457766d53 100644
--- a/src/main/java/org/htmlunit/javascript/host/html/HTMLTableCellElement.java
+++ b/src/main/java/org/htmlunit/javascript/host/html/HTMLTableCellElement.java
@@ -14,8 +14,6 @@
*/
package org.htmlunit.javascript.host.html;
-import static org.htmlunit.BrowserVersionFeatures.JS_TABLE_SPAN_SET_ZERO_IF_INVALID;
-
import org.htmlunit.css.ComputedCssStyleDeclaration;
import org.htmlunit.css.StyleAttributes;
import org.htmlunit.html.DomNode;
@@ -210,7 +208,7 @@ public int getRowSpan() {
public void setRowSpan(final String rowSpan) {
try {
final int i = (int) Double.parseDouble(rowSpan);
- if (i < 0 && getBrowserVersion().hasFeature(JS_TABLE_SPAN_SET_ZERO_IF_INVALID)) {
+ if (i < 0) {
getDomNodeOrDie().setAttribute("rowSpan", "1");
return;
}
@@ -220,12 +218,7 @@ public void setRowSpan(final String rowSpan) {
getDomNodeOrDie().setAttribute("rowSpan", Integer.toString(i));
}
catch (final NumberFormatException e) {
- if (getBrowserVersion().hasFeature(JS_TABLE_SPAN_SET_ZERO_IF_INVALID)) {
- getDomNodeOrDie().setAttribute("rowSpan", "0");
- }
- else {
- getDomNodeOrDie().setAttribute("rowSpan", "1");
- }
+ getDomNodeOrDie().setAttribute("rowSpan", "0");
}
}
diff --git a/src/test/java/org/htmlunit/javascript/host/html/HTMLTableCellElementTest.java b/src/test/java/org/htmlunit/javascript/host/html/HTMLTableCellElementTest.java
index 311166c4114..4c78db8bca5 100644
--- a/src/test/java/org/htmlunit/javascript/host/html/HTMLTableCellElementTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/html/HTMLTableCellElementTest.java
@@ -409,9 +409,7 @@ public void colSpanLarge() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts(DEFAULT = {"1", "3", "1", "2", "1", "5", "1", "2", "1"},
- CHROME = {"1", "3", "1", "2", "0", "5", "1", "2", "0"},
- EDGE = {"1", "3", "1", "2", "0", "5", "1", "2", "0"})
+ @Alerts({"1", "3", "1", "2", "0", "5", "1", "2", "0"})
public void rowSpan() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
@@ -483,9 +481,7 @@ public void rowSpanLineBreaks() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts(DEFAULT = {"1", "0", "3", "3", "3"},
- FF = {"1", "1", "3", "3", "3"},
- FF_ESR = {"1", "1", "3", "3", "3"})
+ @Alerts({"1", "0", "3", "3", "3"})
public void rowSpanInvalid() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
From 055f59cffcddbc412cb0de2f2f56c3be34fcf95b Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 09:56:03 +0200
Subject: [PATCH 034/125] Chrome/Edge 135, FF 137
---
.../java/org/htmlunit/javascript/host/Window2Test.java | 2 +-
.../java/org/htmlunit/javascript/host/Window3Test.java | 2 ++
.../javascript/host/worker/WorkerNavigatorTest.java | 10 +++++-----
3 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/test/java/org/htmlunit/javascript/host/Window2Test.java b/src/test/java/org/htmlunit/javascript/host/Window2Test.java
index 6fa0044ee54..1f77e8c5da4 100644
--- a/src/test/java/org/htmlunit/javascript/host/Window2Test.java
+++ b/src/test/java/org/htmlunit/javascript/host/Window2Test.java
@@ -1126,7 +1126,7 @@ public void changeHeightsAndWidths() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = {"621", "1256", "604", "1239"},
+ @Alerts(CHROME = {"621", "1256", "606", "1241"},
EDGE = {"630", "1248", "615", "1233"},
FF = {"675", "1256", "658", "1239"},
FF_ESR = {"677", "1260", "660", "1243"})
diff --git a/src/test/java/org/htmlunit/javascript/host/Window3Test.java b/src/test/java/org/htmlunit/javascript/host/Window3Test.java
index 274d52b1e2e..0254021fd8d 100644
--- a/src/test/java/org/htmlunit/javascript/host/Window3Test.java
+++ b/src/test/java/org/htmlunit/javascript/host/Window3Test.java
@@ -1214,6 +1214,8 @@ public void detachEventInAttachEvent() throws Exception {
@Test
@Alerts({"window.name before: ", "window.name after: main"})
public void windowName() throws Exception {
+ shutDownAll();
+
final String html = DOCTYPE_HTML
+ "\n"
+ "\n"
diff --git a/src/test/java/org/htmlunit/javascript/host/worker/WorkerNavigatorTest.java b/src/test/java/org/htmlunit/javascript/host/worker/WorkerNavigatorTest.java
index 21b154488eb..200d61068a7 100644
--- a/src/test/java/org/htmlunit/javascript/host/worker/WorkerNavigatorTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/worker/WorkerNavigatorTest.java
@@ -82,9 +82,9 @@ public void appName() throws Exception {
*/
@Test
@Alerts(CHROME = "5.0\\s(Windows\\sNT\\s10.0;\\sWin64;\\sx64)\\sAppleWebKit/537.36\\s"
- + "(KHTML,\\slike\\sGecko)\\sChrome/134.0.0.0\\sSafari/537.36",
+ + "(KHTML,\\slike\\sGecko)\\sChrome/135.0.0.0\\sSafari/537.36",
EDGE = "5.0\\s(Windows\\sNT\\s10.0;\\sWin64;\\sx64)\\sAppleWebKit/537.36\\s"
- + "(KHTML,\\slike\\sGecko)\\sChrome/134.0.0.0\\sSafari/537.36\\sEdg/134.0.0.0",
+ + "(KHTML,\\slike\\sGecko)\\sChrome/135.0.0.0\\sSafari/537.36\\sEdg/135.0.0.0",
FF = "5.0\\s(Windows)",
FF_ESR = "5.0\\s(Windows)")
public void appVersion() throws Exception {
@@ -161,10 +161,10 @@ public void product() throws Exception {
*/
@Test
@Alerts(CHROME = "Mozilla/5.0\\s(Windows\\sNT\\s10.0;\\sWin64;\\sx64)\\sAppleWebKit/537.36\\s"
- + "(KHTML,\\slike\\sGecko)\\sChrome/134.0.0.0\\sSafari/537.36",
+ + "(KHTML,\\slike\\sGecko)\\sChrome/135.0.0.0\\sSafari/537.36",
EDGE = "Mozilla/5.0\\s(Windows\\sNT\\s10.0;\\sWin64;\\sx64)\\sAppleWebKit/537.36\\s"
- + "(KHTML,\\slike\\sGecko)\\sChrome/134.0.0.0\\sSafari/537.36\\sEdg/134.0.0.0",
- FF = "Mozilla/5.0\\s(Windows\\sNT\\s10.0;\\sWin64;\\sx64;\\srv:136.0)\\sGecko/20100101\\sFirefox/136.0",
+ + "(KHTML,\\slike\\sGecko)\\sChrome/135.0.0.0\\sSafari/537.36\\sEdg/135.0.0.0",
+ FF = "Mozilla/5.0\\s(Windows\\sNT\\s10.0;\\sWin64;\\sx64;\\srv:137.0)\\sGecko/20100101\\sFirefox/137.0",
FF_ESR = "Mozilla/5.0\\s(Windows\\sNT\\s10.0;\\sWin64;\\sx64;\\srv:128.0)\\sGecko/20100101\\sFirefox/128.0")
public void userAgent() throws Exception {
final String workerJs = "postMessage(navigator.userAgent);\n";
From 9776c8846e780b55e4336d4e7f04291464dae843 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 10:04:04 +0200
Subject: [PATCH 035/125] Chrome/Edge 135, FF137: Fixed font sizes for
smaller/larger css prooerty value
---
src/main/java/org/htmlunit/BrowserVersion.java | 9 +++++----
.../host/css/property/ElementOffsetHeightTest.java | 14 ++++----------
2 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/src/main/java/org/htmlunit/BrowserVersion.java b/src/main/java/org/htmlunit/BrowserVersion.java
index 6cfaf09687a..122b808b70c 100644
--- a/src/main/java/org/htmlunit/BrowserVersion.java
+++ b/src/main/java/org/htmlunit/BrowserVersion.java
@@ -818,13 +818,13 @@ public int getFontHeight(final String fontSize) {
}
if ("xx-small".equalsIgnoreCase(fontSize)) {
- return fontHeights_[10];
+ return fontHeights_[9];
}
if ("x-small".equalsIgnoreCase(fontSize)) {
return fontHeights_[10];
}
if ("small".equalsIgnoreCase(fontSize)) {
- return fontHeights_[12];
+ return fontHeights_[13];
}
if ("medium".equalsIgnoreCase(fontSize)) {
return fontHeights_[16];
@@ -833,7 +833,7 @@ public int getFontHeight(final String fontSize) {
return fontHeights_[18];
}
if ("x-large".equalsIgnoreCase(fontSize)) {
- return fontHeights_[25];
+ return fontHeights_[24];
}
if ("xx-large".equalsIgnoreCase(fontSize)) {
return fontHeights_[32];
@@ -841,8 +841,9 @@ public int getFontHeight(final String fontSize) {
if ("xxx-large".equalsIgnoreCase(fontSize)) {
return fontHeights_[48];
}
+
if ("smaller".equalsIgnoreCase(fontSize)) {
- return fontHeights_[12];
+ return fontHeights_[13];
}
if ("larger".equalsIgnoreCase(fontSize)) {
return fontHeights_[19];
diff --git a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java
index cedd6270850..ce8c231bd8d 100644
--- a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java
@@ -175,11 +175,9 @@ public void offsetHeightManualLineBreaks() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = "11, 11, 15, 18, 21, 28, 37, 55",
- FF = "11, 11, 15, 19, 21, 28, 37, 56",
- FF_ESR = "11, 11, 15, 19, 21, 28, 37, 56")
- @HtmlUnitNYI(FF = "12, 12, 15, 18, 21, 29, 38, 56",
- FF_ESR = "12, 12, 15, 18, 21, 29, 38, 56")
+ @Alerts(DEFAULT = "10, 11, 16, 18, 21, 27, 37, 55",
+ FF = "11, 12, 16, 18, 21, 28, 38, 56",
+ FF_ESR = "11, 12, 16, 18, 21, 28, 38, 56")
public void offsetHeightSmallLarge() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
@@ -227,11 +225,7 @@ public void offsetHeightSmallLarge() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = "15, 22",
- FF = "15, 23",
- FF_ESR = "15, 23")
- @HtmlUnitNYI(FF = "15, 22",
- FF_ESR = "15, 22")
+ @Alerts("16, 22")
public void offsetHeightSmallerLarger() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
From f2d1b488542a6a18a83e9055bf1a8419035f1c3c Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 10:04:33 +0200
Subject: [PATCH 036/125] Chrome/Edge 135, FF 137
---
src/test/java/org/htmlunit/ExternalTest.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/test/java/org/htmlunit/ExternalTest.java b/src/test/java/org/htmlunit/ExternalTest.java
index d6af778aa7b..94d300d47a0 100644
--- a/src/test/java/org/htmlunit/ExternalTest.java
+++ b/src/test/java/org/htmlunit/ExternalTest.java
@@ -55,11 +55,11 @@ public class ExternalTest {
static String MAVEN_REPO_URL_ = "https://repo1.maven.org/maven2/";
/** Chrome driver. */
- static String CHROME_DRIVER_ = "134.0.6998";
+ static String CHROME_DRIVER_ = "135.0.7049";
static String CHROME_DRIVER_URL_ =
"https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json";
- static String EDGE_DRIVER_ = "134.0.3124";
+ static String EDGE_DRIVER_ = "135.0.3179";
static String EDGE_DRIVER_URL_ = "https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/";
/** Gecko driver. */
From 1522ebf41ca22046c6e81cfe146cb96599a48517 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 10:27:26 +0200
Subject: [PATCH 037/125] Chrome/Edge 135: Improved <br> handling in
options tags
---
.../serializer/HtmlSerializerVisibleText.java | 21 ------------------
.../HtmlSerializerVisibleText2Test.java | 22 ++++++++++++++-----
2 files changed, 16 insertions(+), 27 deletions(-)
diff --git a/src/main/java/org/htmlunit/html/serializer/HtmlSerializerVisibleText.java b/src/main/java/org/htmlunit/html/serializer/HtmlSerializerVisibleText.java
index b57f2f485a5..435a3d22201 100644
--- a/src/main/java/org/htmlunit/html/serializer/HtmlSerializerVisibleText.java
+++ b/src/main/java/org/htmlunit/html/serializer/HtmlSerializerVisibleText.java
@@ -512,9 +512,7 @@ protected void appendSelect(final HtmlSerializerTextBuilder builder,
*/
protected void appendOption(final HtmlSerializerTextBuilder builder,
final HtmlOption htmlOption, final Mode mode) {
- builder.ignoreHtmlBreaks();
appendChildren(builder, htmlOption, mode);
- builder.processHtmlBreaks();
}
/**
@@ -787,7 +785,6 @@ private enum State {
private final StringBuilder builder_;
private int trimRightPos_;
private boolean contentAdded_;
- private boolean ignoreHtmlBreaks_;
/**
* Ctor.
@@ -985,10 +982,6 @@ public void appendBlockSeparator() {
* @param mode the {@link Mode}
*/
public void appendBreak(final Mode mode) {
- if (ignoreHtmlBreaks_) {
- return;
- }
-
builder_.setLength(trimRightPos_);
builder_.append('\n');
@@ -1046,20 +1039,6 @@ public void resetContentAdded() {
contentAdded_ = false;
}
- /**
- * Ignore the following html breaks in the content to be added.
- */
- public void ignoreHtmlBreaks() {
- ignoreHtmlBreaks_ = true;
- }
-
- /**
- * Prozess the following html breaks in the content to be added.
- */
- public void processHtmlBreaks() {
- ignoreHtmlBreaks_ = false;
- }
-
/**
* @return the constructed text.
*/
diff --git a/src/test/java/org/htmlunit/html/serializer/HtmlSerializerVisibleText2Test.java b/src/test/java/org/htmlunit/html/serializer/HtmlSerializerVisibleText2Test.java
index 8020c4dd417..91484fcd7ea 100644
--- a/src/test/java/org/htmlunit/html/serializer/HtmlSerializerVisibleText2Test.java
+++ b/src/test/java/org/htmlunit/html/serializer/HtmlSerializerVisibleText2Test.java
@@ -799,7 +799,7 @@ private void getVisibleTextWhiteSpaceTitle(final String whiteSpace) throws Excep
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = " A B C D EF G H I\n Second\n ",
+ @Alerts(DEFAULT = " A B C D EF G H\nI\n Second\n ",
FF = "A B C D EF G H I\nSecond",
FF_ESR = "A B C D EF G H I\nSecond")
@HtmlUnitNYI(CHROME = "A B C D EF G H I\nSecond",
@@ -813,7 +813,11 @@ public void getVisibleTextWhiteSpaceSelect() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("A B C D EF G H I\nSecond")
+ @Alerts(DEFAULT = "A B C D EF G H\nI\nSecond",
+ FF = "A B C D EF G H I\nSecond",
+ FF_ESR = "A B C D EF G H I\nSecond")
+ @HtmlUnitNYI(CHROME = "A B C D EF G H I\nSecond",
+ EDGE = "A B C D EF G H I\nSecond")
public void getVisibleTextWhiteSpaceSelectNormal() throws Exception {
getVisibleTextWhiteSpaceSelect("normal");
}
@@ -823,7 +827,11 @@ public void getVisibleTextWhiteSpaceSelectNormal() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("A B C D EF G H I\nSecond")
+ @Alerts(DEFAULT = "A B C D EF G H\nI\nSecond",
+ FF = "A B C D EF G H I\nSecond",
+ FF_ESR = "A B C D EF G H I\nSecond")
+ @HtmlUnitNYI(CHROME = "A B C D EF G H I\nSecond",
+ EDGE = "A B C D EF G H I\nSecond")
public void getVisibleTextWhiteSpaceSelectNowrap() throws Exception {
getVisibleTextWhiteSpaceSelect("nowrap");
}
@@ -833,7 +841,7 @@ public void getVisibleTextWhiteSpaceSelectNowrap() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = " A B C D EF G H I\n Second\n ",
+ @Alerts(DEFAULT = " A B C D EF G H\nI\n Second\n ",
FF = "A B C D EF G H I\nSecond",
FF_ESR = "A B C D EF G H I\nSecond")
@HtmlUnitNYI(CHROME = " A B C D \nEF\nG \n H I \n Second\n ",
@@ -849,7 +857,7 @@ public void getVisibleTextWhiteSpaceSelectPre() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = " A B C D EF G H I\n Second\n ",
+ @Alerts(DEFAULT = " A B C D EF G H\nI\n Second\n ",
FF = "A B C D EF G H I\nSecond",
FF_ESR = "A B C D EF G H I\nSecond")
@HtmlUnitNYI(CHROME = " A B C D \nEF\nG \n H I \n Second\n ",
@@ -865,7 +873,9 @@ public void getVisibleTextWhiteSpaceSelectPreWrap() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("A B C D EF G H I\nSecond")
+ @Alerts(DEFAULT = "A B C D EF G H\nI\nSecond",
+ FF = "A B C D EF G H I\nSecond",
+ FF_ESR = "A B C D EF G H I\nSecond")
@HtmlUnitNYI(CHROME = "A B C D \nEF\nG \n H I\n Second",
EDGE = "A B C D \nEF\nG \n H I\n Second",
FF = "A B C D \nEF\nG \n H I\n Second",
From b0792abe3d2698fe7f234fc3b996da266cf3b0e3 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 12:06:43 +0200
Subject: [PATCH 038/125] Improved namespace handling when sending an html
document via XMLHttpRequest
---
src/main/java/org/htmlunit/html/Html.java | 3 +++
.../host/dom/DOMImplementation.java | 6 ++++--
.../javascript/host/xml/XMLHttpRequest.java | 3 ++-
.../javascript/host/xml/XMLSerializer.java | 5 +++--
.../host/xml/XMLHttpRequest5Test.java | 20 +++++++++++--------
5 files changed, 24 insertions(+), 13 deletions(-)
diff --git a/src/main/java/org/htmlunit/html/Html.java b/src/main/java/org/htmlunit/html/Html.java
index 9a00ceca549..d12ed2e2454 100644
--- a/src/main/java/org/htmlunit/html/Html.java
+++ b/src/main/java/org/htmlunit/html/Html.java
@@ -21,6 +21,9 @@
*/
public final class Html {
+ /** The html5 doctype. */
+ public static final String DOCTYPE_HTML = "";
+
/** XHTML namespace. */
public static final String XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/DOMImplementation.java b/src/main/java/org/htmlunit/javascript/host/dom/DOMImplementation.java
index 9f9ca2b6f3d..75684c3d253 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/DOMImplementation.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/DOMImplementation.java
@@ -19,6 +19,7 @@
import org.htmlunit.StringWebResponse;
import org.htmlunit.WebResponse;
import org.htmlunit.WebWindow;
+import org.htmlunit.html.Html;
import org.htmlunit.html.HtmlPage;
import org.htmlunit.html.parser.HTMLParser;
import org.htmlunit.javascript.HtmlUnitScriptable;
@@ -241,10 +242,11 @@ public HTMLDocument createHTMLDocument(final Object titleObj) {
final WebWindow webWindow = getWindow().getWebWindow();
final String html;
if (JavaScriptEngine.isUndefined(titleObj)) {
- html = "";
+ html = Html.DOCTYPE_HTML + "";
}
else {
- html = ""
+ html = Html.DOCTYPE_HTML
+ + ""
+ JavaScriptEngine.toString(titleObj)
+ " ";
}
diff --git a/src/main/java/org/htmlunit/javascript/host/xml/XMLHttpRequest.java b/src/main/java/org/htmlunit/javascript/host/xml/XMLHttpRequest.java
index b3bf073223e..1b90419938c 100644
--- a/src/main/java/org/htmlunit/javascript/host/xml/XMLHttpRequest.java
+++ b/src/main/java/org/htmlunit/javascript/host/xml/XMLHttpRequest.java
@@ -64,6 +64,7 @@
import org.htmlunit.corejs.javascript.json.JsonParser.ParseException;
import org.htmlunit.corejs.javascript.typedarrays.NativeArrayBuffer;
import org.htmlunit.corejs.javascript.typedarrays.NativeArrayBufferView;
+import org.htmlunit.html.Html;
import org.htmlunit.html.HtmlPage;
import org.htmlunit.httpclient.HtmlUnitUsernamePasswordCredentials;
import org.htmlunit.javascript.HtmlUnitContextFactory;
@@ -822,7 +823,7 @@ private void prepareRequestContent(final Object content) {
if (LOG.isDebugEnabled()) {
LOG.debug("Setting request body to: " + body);
}
- webRequest_.setRequestBody(body);
+ webRequest_.setRequestBody(Html.DOCTYPE_HTML + body);
if (setEncodingType) {
webRequest_.setAdditionalHeader(HttpHeader.CONTENT_TYPE, "text/html;charset=UTF-8");
}
diff --git a/src/main/java/org/htmlunit/javascript/host/xml/XMLSerializer.java b/src/main/java/org/htmlunit/javascript/host/xml/XMLSerializer.java
index d52a43b2a97..b78b15413bd 100644
--- a/src/main/java/org/htmlunit/javascript/host/xml/XMLSerializer.java
+++ b/src/main/java/org/htmlunit/javascript/host/xml/XMLSerializer.java
@@ -118,7 +118,8 @@ public String serializeToString(Node root) {
return builder.toString().trim();
}
- if (root instanceof Document) {
+ final boolean rootIsDocument = root instanceof Document;
+ if (rootIsDocument) {
root = ((Document) root).getDocumentElement();
}
@@ -129,7 +130,7 @@ public String serializeToString(Node root) {
final boolean isHtmlPage = page != null && page.isHtmlPage();
String forcedNamespace = null;
- if (isHtmlPage) {
+ if (!rootIsDocument && isHtmlPage) {
forcedNamespace = "http://www.w3.org/1999/xhtml";
}
toXml(1, node, builder, forcedNamespace);
diff --git a/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest5Test.java b/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest5Test.java
index 0a5def8890d..a462dee95e2 100644
--- a/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest5Test.java
+++ b/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest5Test.java
@@ -344,8 +344,8 @@ public void sendXMLDocumentRootNamespace() throws Exception {
*/
@Test
@Alerts(DEFAULT = {"text/html;charset=UTF-8",
- ""
- + "foo \n"
+ + "\n"
+ + ""},
+ FF = {"text/html;charset=UTF-8",
+ "foo \n"
+ + "\n"
+ + ""},
+ FF_ESR = {"text/html;charset=UTF-8",
+ "foo \n"
+ + "\n"
+ + ""})
+ @HtmlUnitNYI(CHROME = {"text/html;charset=UTF-8",
+ "foo "
+ + "\n"
+ + ""},
+ EDGE = {"text/html;charset=UTF-8",
+ "foo "
+ + "\n"
+ + ""},
+ FF = {"text/html;charset=UTF-8",
+ "foo "
+ + "\n"
+ + ""},
+ FF_ESR = {"text/html;charset=UTF-8",
+ "foo "
+ + "\n"
+ + ""})
+ public void sendDocumentNoDoctype() throws Exception {
+ final String createXmlDoc =
+ " var doc = document;\n";
+ sendXMLDocument("", createXmlDoc, getExpectedAlerts()[0], getExpectedAlerts()[1]);
+ }
+
+ private void sendXMLDocument(final String doctype, final String createXmlDoc,
final String expectedMimeType, final String expectedBody) throws Exception {
startWebServer(getMockWebConnection(), Charset.defaultCharset());
final String url = URL_SECOND.toString();
- final String html = DOCTYPE_HTML
+ final String html = doctype
+ "foo "
+ "\n"
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.Chrome.txt b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.Chrome.txt
index 6e0476ec670..b1b11b490d6 100644
--- a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.Chrome.txt
+++ b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.Chrome.txt
@@ -236,6 +236,7 @@ insetBlockStart
insetInline
insetInlineEnd
insetInlineStart
+interactivity
interpolateSize
isolation
justifyContent
@@ -310,7 +311,9 @@ outlineStyle
outlineWidth
overflow
overflowAnchor
+overflowBlock
overflowClipMargin
+overflowInline
overflowWrap
overflowX
overflowY
@@ -378,6 +381,7 @@ scrollMarginInlineStart
scrollMarginLeft
scrollMarginRight
scrollMarginTop
+scrollMarkerGroup
scrollPadding
scrollPaddingBlock
scrollPaddingBlockEnd
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.Edge.txt b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.Edge.txt
index 6e0476ec670..b1b11b490d6 100644
--- a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.Edge.txt
+++ b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.Edge.txt
@@ -236,6 +236,7 @@ insetBlockStart
insetInline
insetInlineEnd
insetInlineStart
+interactivity
interpolateSize
isolation
justifyContent
@@ -310,7 +311,9 @@ outlineStyle
outlineWidth
overflow
overflowAnchor
+overflowBlock
overflowClipMargin
+overflowInline
overflowWrap
overflowX
overflowY
@@ -378,6 +381,7 @@ scrollMarginInlineStart
scrollMarginLeft
scrollMarginRight
scrollMarginTop
+scrollMarkerGroup
scrollPadding
scrollPaddingBlock
scrollPaddingBlockEnd
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.FF.txt b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.FF.txt
index 4971d6cff63..102a50d3192 100644
--- a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.FF.txt
+++ b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.FF.txt
@@ -324,6 +324,7 @@ gridTemplateColumns
gridTemplateRows
height
hyphenateCharacter
+hyphenateLimitChars
hyphens
imageOrientation
imageRendering
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.Chrome.txt b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.Chrome.txt
index f635fa20157..44b48794ed9 100644
--- a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.Chrome.txt
+++ b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.Chrome.txt
@@ -236,6 +236,7 @@ insetBlockStart
insetInline
insetInlineEnd
insetInlineStart
+interactivity
interpolateSize
isolation
justifyContent
@@ -309,7 +310,9 @@ outlineStyle
outlineWidth
overflow
overflowAnchor
+overflowBlock
overflowClipMargin
+overflowInline
overflowWrap
overflowX
overflowY
@@ -377,6 +380,7 @@ scrollMarginInlineStart
scrollMarginLeft
scrollMarginRight
scrollMarginTop
+scrollMarkerGroup
scrollPadding
scrollPaddingBlock
scrollPaddingBlockEnd
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.Edge.txt b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.Edge.txt
index f635fa20157..44b48794ed9 100644
--- a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.Edge.txt
+++ b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.Edge.txt
@@ -236,6 +236,7 @@ insetBlockStart
insetInline
insetInlineEnd
insetInlineStart
+interactivity
interpolateSize
isolation
justifyContent
@@ -309,7 +310,9 @@ outlineStyle
outlineWidth
overflow
overflowAnchor
+overflowBlock
overflowClipMargin
+overflowInline
overflowWrap
overflowX
overflowY
@@ -377,6 +380,7 @@ scrollMarginInlineStart
scrollMarginLeft
scrollMarginRight
scrollMarginTop
+scrollMarkerGroup
scrollPadding
scrollPaddingBlock
scrollPaddingBlockEnd
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.FF.txt b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.FF.txt
index e2ad8b74475..9c519954a2a 100644
--- a/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.FF.txt
+++ b/src/test/resources/org/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.FF.txt
@@ -322,6 +322,7 @@ gridTemplateColumns
gridTemplateRows
height
hyphenateCharacter
+hyphenateLimitChars
hyphens
imageOrientation
imageRendering
From 79021eadf7bfc0764278a7b47bfb96536527dfe9 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 15:41:04 +0200
Subject: [PATCH 044/125] IE will never die
---
.../host/css/property/ElementOffsetHeightTest.properties.IE.txt | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 src/test/resources/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.properties.IE.txt
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.properties.IE.txt b/src/test/resources/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.properties.IE.txt
deleted file mode 100644
index 4eb69981463..00000000000
--- a/src/test/resources/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.properties.IE.txt
+++ /dev/null
@@ -1 +0,0 @@
-0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 71, 72, 74, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 109, 110, 112, 113, 114, 115, 116, 117, 118, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 147
\ No newline at end of file
From 5b7ef2036c195fdaf998950d1d27fd39e9283fe5 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 17:09:31 +0200
Subject: [PATCH 045/125] selenium 4.31.0
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index 9c420c8cce2..26c4ef99538 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,8 +39,8 @@
0.1.2
- 4.30.0
- 4.30.0
+ 4.31.0-SNAPSHOT
+ 4.31.0
selenium-devtools-v134
9.4.57.v20241219
From f5e15e8096d5591dc13b41244fd488ce91ce4492 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 17:20:33 +0200
Subject: [PATCH 046/125] SVGDiscardElement added
---
src/changes/changes.xml | 3 ++
.../JavaScriptConfiguration.java | 4 +-
.../host/svg/SVGDiscardElement.java | 38 +++++++++++++++++++
.../htmlunit/general/HostClassNameTest.java | 3 +-
.../org/htmlunit/general/HostTypeOfTest.java | 3 +-
.../general/huge/HostParentOfDTest.java | 24 ++++++++++++
.../general/huge/HostParentOfNTest.java | 13 +++++++
7 files changed, 85 insertions(+), 3 deletions(-)
create mode 100644 src/main/java/org/htmlunit/javascript/host/svg/SVGDiscardElement.java
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index de9a96ae24e..34910e8447d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,9 @@
+
+ FF137: SVGDiscardElement added.
+
Chrome/Edge 135, FF137: Setter validation for length style properties adjusted.
diff --git a/src/main/java/org/htmlunit/javascript/configuration/JavaScriptConfiguration.java b/src/main/java/org/htmlunit/javascript/configuration/JavaScriptConfiguration.java
index fa559847325..753fdc3dd32 100644
--- a/src/main/java/org/htmlunit/javascript/configuration/JavaScriptConfiguration.java
+++ b/src/main/java/org/htmlunit/javascript/configuration/JavaScriptConfiguration.java
@@ -446,6 +446,7 @@
import org.htmlunit.javascript.host.svg.SVGComponentTransferFunctionElement;
import org.htmlunit.javascript.host.svg.SVGDefsElement;
import org.htmlunit.javascript.host.svg.SVGDescElement;
+import org.htmlunit.javascript.host.svg.SVGDiscardElement;
import org.htmlunit.javascript.host.svg.SVGElement;
import org.htmlunit.javascript.host.svg.SVGEllipseElement;
import org.htmlunit.javascript.host.svg.SVGFEBlendElement;
@@ -674,7 +675,8 @@ public final class JavaScriptConfiguration extends AbstractJavaScriptConfigurati
SVGDefsElement.class, SVGDescElement.class, SVGElement.class,
SVGEllipseElement.class, SVGFEBlendElement.class, SVGFEColorMatrixElement.class,
SVGFEComponentTransferElement.class, SVGFECompositeElement.class, SVGFEConvolveMatrixElement.class,
- SVGFEDiffuseLightingElement.class, SVGFEDisplacementMapElement.class, SVGFEDistantLightElement.class,
+ SVGFEDiffuseLightingElement.class, SVGDiscardElement.class,
+ SVGFEDisplacementMapElement.class, SVGFEDistantLightElement.class,
SVGFEDropShadowElement.class,
SVGFEFloodElement.class, SVGFEFuncAElement.class, SVGFEFuncBElement.class, SVGFEFuncGElement.class,
SVGFEFuncRElement.class, SVGFEGaussianBlurElement.class, SVGFEImageElement.class, SVGFEMergeElement.class,
diff --git a/src/main/java/org/htmlunit/javascript/host/svg/SVGDiscardElement.java b/src/main/java/org/htmlunit/javascript/host/svg/SVGDiscardElement.java
new file mode 100644
index 00000000000..d6d46ca1921
--- /dev/null
+++ b/src/main/java/org/htmlunit/javascript/host/svg/SVGDiscardElement.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2002-2025 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.htmlunit.javascript.host.svg;
+
+import static org.htmlunit.javascript.configuration.SupportedBrowser.FF;
+
+import org.htmlunit.javascript.configuration.JsxClass;
+import org.htmlunit.javascript.configuration.JsxConstructor;
+
+/**
+ * A JavaScript object for {@code SVGDiscardElement}.
+ *
+ * @author Ronald Brill
+ */
+@JsxClass(FF)
+public class SVGDiscardElement extends SVGAnimationElement {
+
+ /**
+ * Creates an instance.
+ */
+ @Override
+ @JsxConstructor
+ public void jsConstructor() {
+ super.jsConstructor();
+ }
+}
diff --git a/src/test/java/org/htmlunit/general/HostClassNameTest.java b/src/test/java/org/htmlunit/general/HostClassNameTest.java
index 9c764f5c871..9caf591e761 100644
--- a/src/test/java/org/htmlunit/general/HostClassNameTest.java
+++ b/src/test/java/org/htmlunit/general/HostClassNameTest.java
@@ -7657,7 +7657,8 @@ public void svgDescElement() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("ReferenceError")
+ @Alerts(DEFAULT = "ReferenceError",
+ FF = "function SVGDiscardElement() { [native code] }")
public void svgDiscardElement() throws Exception {
test("SVGDiscardElement");
}
diff --git a/src/test/java/org/htmlunit/general/HostTypeOfTest.java b/src/test/java/org/htmlunit/general/HostTypeOfTest.java
index 07932df2adb..00aad7156bd 100644
--- a/src/test/java/org/htmlunit/general/HostTypeOfTest.java
+++ b/src/test/java/org/htmlunit/general/HostTypeOfTest.java
@@ -7637,7 +7637,8 @@ public void svgDescElement() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("undefined")
+ @Alerts(DEFAULT = "undefined",
+ FF = "function")
public void svgDiscardElement() throws Exception {
test("SVGDiscardElement");
}
diff --git a/src/test/java/org/htmlunit/general/huge/HostParentOfDTest.java b/src/test/java/org/htmlunit/general/huge/HostParentOfDTest.java
index 8c7367cc9b4..b747bd862af 100644
--- a/src/test/java/org/htmlunit/general/huge/HostParentOfDTest.java
+++ b/src/test/java/org/htmlunit/general/huge/HostParentOfDTest.java
@@ -1290,6 +1290,18 @@ public void _Element_SVGDescElement() throws Exception {
test("Element", "SVGDescElement");
}
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "true",
+ CHROME = "false",
+ EDGE = "false",
+ FF_ESR = "false")
+ public void _Element_SVGDiscardElement() throws Exception {
+ test("Element", "SVGDiscardElement");
+ }
+
/**
* @throws Exception if the test fails
*/
@@ -4091,6 +4103,18 @@ public void _EventTarget_SVGDescElement() throws Exception {
test("EventTarget", "SVGDescElement");
}
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "true",
+ CHROME = "false",
+ EDGE = "false",
+ FF_ESR = "false")
+ public void _EventTarget_SVGDiscardElement() throws Exception {
+ test("EventTarget", "SVGDiscardElement");
+ }
+
/**
* @throws Exception if the test fails
*/
diff --git a/src/test/java/org/htmlunit/general/huge/HostParentOfNTest.java b/src/test/java/org/htmlunit/general/huge/HostParentOfNTest.java
index 90c7b4deb7e..7dc4e30f9cd 100644
--- a/src/test/java/org/htmlunit/general/huge/HostParentOfNTest.java
+++ b/src/test/java/org/htmlunit/general/huge/HostParentOfNTest.java
@@ -1160,6 +1160,19 @@ public void _Node_SVGDescElement() throws Exception {
test("Node", "SVGDescElement");
}
+ /**
+ * @throws Exception
+ * if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "true",
+ CHROME = "false",
+ EDGE = "false",
+ FF_ESR = "false")
+ public void _Node_SVGDiscardElement() throws Exception {
+ test("Node", "SVGDiscardElement");
+ }
+
/**
* @throws Exception
* if the test fails
From 867ad82039cee6fa0d8458f073dd4caac263d9b6 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 17:48:26 +0200
Subject: [PATCH 047/125] Chrome/Edge 135, FF137: Setter validation for length
style properties adjusted
---
.../host/css/CSSStyleDeclaration.java | 17 ++-
.../host/css/CSSStyleDeclarationTest.java | 124 +++++++++---------
2 files changed, 70 insertions(+), 71 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java b/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
index 75355c83095..41f39b88f25 100644
--- a/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
+++ b/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
@@ -80,8 +80,7 @@ public class CSSStyleDeclaration extends HtmlUnitScriptable {
Definition.BORDER_TOP_WIDTH.getAttributeName(),
Definition.BORDER_LEFT_WIDTH.getAttributeName(),
Definition.BORDER_BOTTOM_WIDTH.getAttributeName(),
- Definition.BORDER_RIGHT_WIDTH.getAttributeName(),
- Definition.LETTER_SPACING.getAttributeName()));
+ Definition.BORDER_RIGHT_WIDTH.getAttributeName()));
private static final Set LENGTH_PROPERTIES_TTFF = new HashSet<>(Arrays.asList(
Definition.HEIGHT.getAttributeName(),
@@ -1844,24 +1843,28 @@ public void setProperty(final String name, final Object value, final String impo
}
if (LENGTH_PROPERTIES_FFFF.contains(name)) {
- setStyleLengthAttribute(name, value, imp, false, false, false, null);
+ setStyleLengthAttribute(name, value, imp, false, false, true, null);
}
else if (LENGTH_PROPERTIES_TTFF.contains(name)) {
- setStyleLengthAttribute(name, value, imp, true, true, false, null);
+ setStyleLengthAttribute(name, value, imp, true, true, true, null);
}
else if (LENGTH_PROPERTIES_FTFF.contains(name)) {
- setStyleLengthAttribute(name, value, imp, false, true, false, null);
+ setStyleLengthAttribute(name, value, imp, false, true, true, null);
}
else if (Definition.OUTLINE_WIDTH.getAttributeName().equals(name)) {
setStyleLengthAttribute(Definition.OUTLINE_WIDTH.getAttributeName(),
value, imp, false, false, true, THIN_MED_THICK);
}
+ else if (Definition.LETTER_SPACING.getAttributeName().equals(name)) {
+ setStyleLengthAttribute(Definition.LETTER_SPACING.getAttributeName(), value, imp,
+ false, getBrowserVersion().hasFeature(JS_STYLE_LETTER_SPACING_ACCEPTS_PERCENT), true, null);
+ }
else if (Definition.WORD_SPACING.getAttributeName().equals(name)) {
setStyleLengthAttribute(Definition.WORD_SPACING.getAttributeName(), value, imp,
- false, getBrowserVersion().hasFeature(JS_STYLE_WORD_SPACING_ACCEPTS_PERCENT), false, null);
+ false, getBrowserVersion().hasFeature(JS_STYLE_WORD_SPACING_ACCEPTS_PERCENT), true, null);
}
else if (Definition.VERTICAL_ALIGN.getAttributeName().equals(name)) {
- setStyleLengthAttribute(Definition.VERTICAL_ALIGN.getAttributeName(), value, imp, false, true, false, null);
+ setStyleLengthAttribute(Definition.VERTICAL_ALIGN.getAttributeName(), value, imp, false, true, true, null);
}
else {
setStyleAttribute(name, JavaScriptEngine.toString(value), imp);
diff --git a/src/test/java/org/htmlunit/javascript/host/css/CSSStyleDeclarationTest.java b/src/test/java/org/htmlunit/javascript/host/css/CSSStyleDeclarationTest.java
index 6c150a6f09b..07db10ed8d1 100644
--- a/src/test/java/org/htmlunit/javascript/host/css/CSSStyleDeclarationTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/css/CSSStyleDeclarationTest.java
@@ -2214,7 +2214,7 @@ private void setPropertyBackgroundColor(final String params, final String... exp
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setWidthProperty() throws Exception {
setLengthProperty("width", "width");
@@ -2224,7 +2224,7 @@ public void setWidthProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setWidth() throws Exception {
setLength("width", "width");
@@ -2234,7 +2234,7 @@ public void setWidth() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setHeightProperty() throws Exception {
setLengthProperty("height", "height");
@@ -2244,7 +2244,7 @@ public void setHeightProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setHeight() throws Exception {
setLength("height", "height");
@@ -2254,7 +2254,7 @@ public void setHeight() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setTopProperty() throws Exception {
setLengthProperty("top", "top");
@@ -2264,7 +2264,7 @@ public void setTopProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setTop() throws Exception {
setLength("top", "top");
@@ -2274,7 +2274,7 @@ public void setTop() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setLeftProperty() throws Exception {
setLengthProperty("left", "left");
@@ -2284,7 +2284,7 @@ public void setLeftProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setLeft() throws Exception {
setLength("left", "left");
@@ -2294,7 +2294,7 @@ public void setLeft() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setBottomProperty() throws Exception {
setLengthProperty("bottom", "bottom");
@@ -2304,7 +2304,7 @@ public void setBottomProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setBottom() throws Exception {
setLength("bottom", "bottom");
@@ -2314,7 +2314,7 @@ public void setBottom() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setRightProperty() throws Exception {
setLengthProperty("right", "right");
@@ -2324,7 +2324,7 @@ public void setRightProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setRight() throws Exception {
setLength("right", "right");
@@ -2334,7 +2334,7 @@ public void setRight() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMarginTopProperty() throws Exception {
setLengthProperty("margin-top", "marginTop");
@@ -2344,7 +2344,7 @@ public void setMarginTopProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMarginTop() throws Exception {
setLength("margin-top", "marginTop");
@@ -2354,7 +2354,7 @@ public void setMarginTop() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMarginLeftProperty() throws Exception {
setLengthProperty("margin-left", "marginLeft");
@@ -2364,7 +2364,7 @@ public void setMarginLeftProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMarginLeft() throws Exception {
setLength("margin-left", "marginLeft");
@@ -2374,7 +2374,7 @@ public void setMarginLeft() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMarginBottomProperty() throws Exception {
setLengthProperty("margin-bottom", "marginBottom");
@@ -2384,7 +2384,7 @@ public void setMarginBottomProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMarginBottom() throws Exception {
setLength("margin-bottom", "marginBottom");
@@ -2394,7 +2394,7 @@ public void setMarginBottom() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMarginRightProperty() throws Exception {
setLengthProperty("margin-right", "marginRight");
@@ -2404,7 +2404,7 @@ public void setMarginRightProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMarginRight() throws Exception {
setLength("margin-right", "marginRight");
@@ -2414,7 +2414,7 @@ public void setMarginRight() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setPaddingTopProperty() throws Exception {
setLengthProperty("padding-top", "paddingTop");
@@ -2424,7 +2424,7 @@ public void setPaddingTopProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setPaddingTop() throws Exception {
setLength("padding-top", "paddingTop");
@@ -2434,7 +2434,7 @@ public void setPaddingTop() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setPaddingLeftProperty() throws Exception {
setLengthProperty("padding-left", "paddingLeft");
@@ -2444,7 +2444,7 @@ public void setPaddingLeftProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setPaddingLeft() throws Exception {
setLength("padding-left", "paddingLeft");
@@ -2454,7 +2454,7 @@ public void setPaddingLeft() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setPaddingBottomProperty() throws Exception {
setLengthProperty("padding-bottom", "paddingBottom");
@@ -2464,7 +2464,7 @@ public void setPaddingBottomProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setPaddingBottom() throws Exception {
setLength("padding-bottom", "paddingBottom");
@@ -2474,7 +2474,7 @@ public void setPaddingBottom() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setPaddingRightProperty() throws Exception {
setLengthProperty("padding-right", "paddingRight");
@@ -2484,7 +2484,7 @@ public void setPaddingRightProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setPaddingRight() throws Exception {
setLength("padding-right", "paddingRight");
@@ -2494,7 +2494,7 @@ public void setPaddingRight() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setBorderTopWidthProperty() throws Exception {
setLengthProperty("border-top-width", "borderTopWidth");
@@ -2504,7 +2504,7 @@ public void setBorderTopWidthProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setBorderTopWidth() throws Exception {
setLength("border-top-width", "borderTopWidth");
@@ -2514,7 +2514,7 @@ public void setBorderTopWidth() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setBorderLeftWidthProperty() throws Exception {
setLengthProperty("border-left-width", "borderLeftWidth");
@@ -2524,7 +2524,7 @@ public void setBorderLeftWidthProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setBorderLeftWidth() throws Exception {
setLength("border-left-width", "borderLeftWidth");
@@ -2534,7 +2534,7 @@ public void setBorderLeftWidth() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setBorderBottomWidthProperty() throws Exception {
setLengthProperty("border-bottom-width", "borderBottomWidth");
@@ -2544,7 +2544,7 @@ public void setBorderBottomWidthProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setBorderBottomWidth() throws Exception {
setLength("border-bottom-width", "borderBottomWidth");
@@ -2554,7 +2554,7 @@ public void setBorderBottomWidth() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setBorderRightWidthProperty() throws Exception {
setLengthProperty("border-right-width", "borderRightWidth");
@@ -2564,7 +2564,7 @@ public void setBorderRightWidthProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setBorderRightWidth() throws Exception {
setLength("border-right-width", "borderRightWidth");
@@ -2574,7 +2574,7 @@ public void setBorderRightWidth() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMaxWidthProperty() throws Exception {
setLengthProperty("max-width", "maxWidth");
@@ -2584,7 +2584,7 @@ public void setMaxWidthProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMaxWidth() throws Exception {
setLength("max-width", "maxWidth");
@@ -2594,7 +2594,7 @@ public void setMaxWidth() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMinWidthProperty() throws Exception {
setLengthProperty("min-width", "minWidth");
@@ -2604,7 +2604,7 @@ public void setMinWidthProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMinWidth() throws Exception {
setLength("min-width", "minWidth");
@@ -2614,7 +2614,7 @@ public void setMinWidth() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMaxHeightProperty() throws Exception {
setLengthProperty("max-height", "maxHeight");
@@ -2624,7 +2624,7 @@ public void setMaxHeightProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMaxHeight() throws Exception {
setLength("max-height", "maxHeight");
@@ -2634,7 +2634,7 @@ public void setMaxHeight() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMinHeightProperty() throws Exception {
setLengthProperty("min-height", "minHeight");
@@ -2644,7 +2644,7 @@ public void setMinHeightProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "auto", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "auto", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setMinHeight() throws Exception {
setLength("min-height", "minHeight");
@@ -2654,7 +2654,7 @@ public void setMinHeight() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setTextIndentProperty() throws Exception {
setLengthProperty("text-indent", "textIndent");
@@ -2664,7 +2664,7 @@ public void setTextIndentProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setTextIndent() throws Exception {
setLength("text-indent", "textIndent");
@@ -2674,7 +2674,7 @@ public void setTextIndent() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setFontSizeProperty() throws Exception {
setLengthProperty("font-size", "fontSize");
@@ -2684,7 +2684,7 @@ public void setFontSizeProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setFontSize() throws Exception {
setLength("font-size", "fontSize");
@@ -2694,11 +2694,11 @@ public void setFontSize() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts(DEFAULT = {"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts(DEFAULT = {"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"},
- FF = {"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ FF = {"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"},
- FF_ESR = {"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ FF_ESR = {"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setWordSpacingProperty() throws Exception {
setLengthProperty("word-spacing", "wordSpacing");
@@ -2708,11 +2708,11 @@ public void setWordSpacingProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts(DEFAULT = {"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts(DEFAULT = {"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px", "17px"},
- FF = {"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ FF = {"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px", "17px"},
- FF_ESR = {"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ FF_ESR = {"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px", "17px"})
public void setWordSpacing() throws Exception {
setLength("word-spacing", "wordSpacing");
@@ -2722,12 +2722,10 @@ public void setWordSpacing() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts(DEFAULT = {"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts(DEFAULT = {"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"},
- FF = {"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ FF = {"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
- @HtmlUnitNYI(FF = {"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
- "17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setLetterSpacingProperty() throws Exception {
setLengthProperty("letter-spacing", "letterSpacing");
}
@@ -2736,12 +2734,10 @@ public void setLetterSpacingProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts(DEFAULT = {"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
+ @Alerts(DEFAULT = {"17px", "5px", "6em", "17px", "17px", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"},
- FF = {"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ FF = {"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
- @HtmlUnitNYI(FF = {"4px", "5px", "6em", "17px", "17px", "initial", "inherit",
- "17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setLetterSpacing() throws Exception {
setLength("letter-spacing", "letterSpacing");
}
@@ -2750,7 +2746,7 @@ public void setLetterSpacing() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "7%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "7%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setVerticalAlignProperty() throws Exception {
setLengthProperty("vertical-align", "verticalAlign");
@@ -2760,7 +2756,7 @@ public void setVerticalAlignProperty() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"4px", "5px", "6em", "17px", "70%", "initial", "inherit",
+ @Alerts({"17px", "5px", "6em", "17px", "70%", "initial", "inherit",
"17px", "17px", "17px", "", "17px", "", "17px", "17px", "17px"})
public void setVerticalAlign() throws Exception {
setLength("vertical-align", "verticalAlign");
From 814d66215bfbb1a276cf0f6186975b79f412970f Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 17:55:40 +0200
Subject: [PATCH 048/125] cleanup
---
.../host/css/CSSStyleDeclaration.java | 187 +++++++++---------
1 file changed, 91 insertions(+), 96 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java b/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
index 41f39b88f25..432575a8b5e 100644
--- a/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
+++ b/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
@@ -400,7 +400,7 @@ public String getBorderBottomWidth() {
@JsxSetter
public void setBorderBottomWidth(final Object borderBottomWidth) {
setStyleLengthAttribute(Definition.BORDER_BOTTOM_WIDTH.getAttributeName(), borderBottomWidth, "",
- false, false, true, null);
+ false, false, null);
}
/**
@@ -464,7 +464,7 @@ public String getBorderLeftWidth() {
@JsxSetter
public void setBorderLeftWidth(final Object borderLeftWidth) {
setStyleLengthAttribute(Definition.BORDER_LEFT_WIDTH.getAttributeName(), borderLeftWidth, "",
- false, false, true, null);
+ false, false, null);
}
/**
@@ -528,7 +528,7 @@ public String getBorderRightWidth() {
@JsxSetter
public void setBorderRightWidth(final Object borderRightWidth) {
setStyleLengthAttribute(Definition.BORDER_RIGHT_WIDTH.getAttributeName(), borderRightWidth, "",
- false, false, true, null);
+ false, false, null);
}
/**
@@ -613,7 +613,7 @@ public String getBorderTopWidth() {
@JsxSetter
public void setBorderTopWidth(final Object borderTopWidth) {
setStyleLengthAttribute(Definition.BORDER_TOP_WIDTH.getAttributeName(), borderTopWidth, "",
- false, false, true, null);
+ false, false, null);
}
/**
@@ -634,7 +634,7 @@ public String getBottom() {
*/
@JsxSetter
public void setBottom(final Object bottom) {
- setStyleLengthAttribute(Definition.BOTTOM.getAttributeName(), bottom, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.BOTTOM.getAttributeName(), bottom, "", true, true, null);
}
/**
@@ -744,7 +744,7 @@ public String getFontSize() {
*/
@JsxSetter
public void setFontSize(final Object fontSize) {
- setStyleLengthAttribute(Definition.FONT_SIZE.getAttributeName(), fontSize, "", false, true, true, FONT_SIZES);
+ setStyleLengthAttribute(Definition.FONT_SIZE.getAttributeName(), fontSize, "", false, true, FONT_SIZES);
updateFont(getFont(), false);
}
@@ -867,7 +867,7 @@ public String getHeight() {
*/
@JsxSetter
public void setHeight(final Object height) {
- setStyleLengthAttribute(Definition.HEIGHT.getAttributeName(), height, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.HEIGHT.getAttributeName(), height, "", true, true, null);
}
/**
@@ -888,7 +888,7 @@ public String getLeft() {
*/
@JsxSetter
public void setLeft(final Object left) {
- setStyleLengthAttribute(Definition.LEFT.getAttributeName(), left, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.LEFT.getAttributeName(), left, "", true, true, null);
}
/**
@@ -944,7 +944,7 @@ public String getLetterSpacing() {
@JsxSetter
public void setLetterSpacing(final Object letterSpacing) {
setStyleLengthAttribute(Definition.LETTER_SPACING.getAttributeName(), letterSpacing, "",
- false, getBrowserVersion().hasFeature(JS_STYLE_LETTER_SPACING_ACCEPTS_PERCENT), true, null);
+ false, getBrowserVersion().hasFeature(JS_STYLE_LETTER_SPACING_ACCEPTS_PERCENT), null);
}
/**
@@ -986,7 +986,7 @@ public String getMarginBottom() {
*/
@JsxSetter
public void setMarginBottom(final Object marginBottom) {
- setStyleLengthAttribute(Definition.MARGIN_BOTTOM.getAttributeName(), marginBottom, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.MARGIN_BOTTOM.getAttributeName(), marginBottom, "", true, true, null);
}
/**
@@ -1007,7 +1007,7 @@ public String getMarginLeft() {
*/
@JsxSetter
public void setMarginLeft(final Object marginLeft) {
- setStyleLengthAttribute(Definition.MARGIN_LEFT.getAttributeName(), marginLeft, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.MARGIN_LEFT.getAttributeName(), marginLeft, "", true, true, null);
}
/**
@@ -1028,7 +1028,7 @@ public String getMarginRight() {
*/
@JsxSetter
public void setMarginRight(final Object marginRight) {
- setStyleLengthAttribute(Definition.MARGIN_RIGHT.getAttributeName(), marginRight, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.MARGIN_RIGHT.getAttributeName(), marginRight, "", true, true, null);
}
/**
@@ -1049,7 +1049,7 @@ public String getMarginTop() {
*/
@JsxSetter
public void setMarginTop(final Object marginTop) {
- setStyleLengthAttribute(Definition.MARGIN_TOP.getAttributeName(), marginTop, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.MARGIN_TOP.getAttributeName(), marginTop, "", true, true, null);
}
/**
@@ -1070,7 +1070,7 @@ public String getMaxHeight() {
*/
@JsxSetter
public void setMaxHeight(final Object maxHeight) {
- setStyleLengthAttribute(Definition.MAX_HEIGHT.getAttributeName(), maxHeight, "", false, true, true, null);
+ setStyleLengthAttribute(Definition.MAX_HEIGHT.getAttributeName(), maxHeight, "", false, true, null);
}
/**
@@ -1091,7 +1091,7 @@ public String getMaxWidth() {
*/
@JsxSetter
public void setMaxWidth(final Object maxWidth) {
- setStyleLengthAttribute(Definition.MAX_WIDTH.getAttributeName(), maxWidth, "", false, true, true, null);
+ setStyleLengthAttribute(Definition.MAX_WIDTH.getAttributeName(), maxWidth, "", false, true, null);
}
/**
@@ -1112,7 +1112,7 @@ public String getMinHeight() {
*/
@JsxSetter
public void setMinHeight(final Object minHeight) {
- setStyleLengthAttribute(Definition.MIN_HEIGHT.getAttributeName(), minHeight, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.MIN_HEIGHT.getAttributeName(), minHeight, "", true, true, null);
}
/**
@@ -1133,7 +1133,7 @@ public String getMinWidth() {
*/
@JsxSetter
public void setMinWidth(final Object minWidth) {
- setStyleLengthAttribute(Definition.MIN_WIDTH.getAttributeName(), minWidth, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.MIN_WIDTH.getAttributeName(), minWidth, "", true, true, null);
}
/**
@@ -1362,7 +1362,7 @@ public String getOutlineWidth() {
@JsxSetter
public void setOutlineWidth(final Object outlineWidth) {
setStyleLengthAttribute(Definition.OUTLINE_WIDTH.getAttributeName(), outlineWidth, "",
- false, false, true, THIN_MED_THICK);
+ false, false, THIN_MED_THICK);
}
/**
@@ -1405,7 +1405,7 @@ public String getPaddingBottom() {
@JsxSetter
public void setPaddingBottom(final Object paddingBottom) {
setStyleLengthAttribute(Definition.PADDING_BOTTOM.getAttributeName(),
- paddingBottom, "", false, true, true, null);
+ paddingBottom, "", false, true, null);
}
/**
@@ -1426,7 +1426,7 @@ public String getPaddingLeft() {
*/
@JsxSetter
public void setPaddingLeft(final Object paddingLeft) {
- setStyleLengthAttribute(Definition.PADDING_LEFT.getAttributeName(), paddingLeft, "", false, true, true, null);
+ setStyleLengthAttribute(Definition.PADDING_LEFT.getAttributeName(), paddingLeft, "", false, true, null);
}
/**
@@ -1448,7 +1448,7 @@ public String getPaddingRight() {
@JsxSetter
public void setPaddingRight(final Object paddingRight) {
setStyleLengthAttribute(Definition.PADDING_RIGHT.getAttributeName(),
- paddingRight, "", false, true, true, null);
+ paddingRight, "", false, true, null);
}
/**
@@ -1469,7 +1469,7 @@ public String getPaddingTop() {
*/
@JsxSetter
public void setPaddingTop(final Object paddingTop) {
- setStyleLengthAttribute(Definition.PADDING_TOP.getAttributeName(), paddingTop, "", false, true, true, null);
+ setStyleLengthAttribute(Definition.PADDING_TOP.getAttributeName(), paddingTop, "", false, true, null);
}
/**
@@ -1514,7 +1514,7 @@ public String getRight() {
*/
@JsxSetter
public void setRight(final Object right) {
- setStyleLengthAttribute(Definition.RIGHT.getAttributeName(), right, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.RIGHT.getAttributeName(), right, "", true, true, null);
}
/**
@@ -1577,7 +1577,7 @@ public String getTextIndent() {
*/
@JsxSetter
public void setTextIndent(final Object textIndent) {
- setStyleLengthAttribute(Definition.TEXT_INDENT.getAttributeName(), textIndent, "", false, true, true, null);
+ setStyleLengthAttribute(Definition.TEXT_INDENT.getAttributeName(), textIndent, "", false, true, null);
}
/**
@@ -1598,7 +1598,7 @@ public String getTop() {
*/
@JsxSetter
public void setTop(final Object top) {
- setStyleLengthAttribute(Definition.TOP.getAttributeName(), top, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.TOP.getAttributeName(), top, "", true, true, null);
}
/**
@@ -1620,7 +1620,7 @@ public String getVerticalAlign() {
@JsxSetter
public void setVerticalAlign(final Object verticalAlign) {
setStyleLengthAttribute(Definition.VERTICAL_ALIGN.getAttributeName(),
- verticalAlign, "", false, true, true, ALIGN_KEYWORDS);
+ verticalAlign, "", false, true, ALIGN_KEYWORDS);
}
/**
@@ -1641,7 +1641,7 @@ public String getWidth() {
*/
@JsxSetter
public void setWidth(final Object width) {
- setStyleLengthAttribute(Definition.WIDTH.getAttributeName(), width, "", true, true, true, null);
+ setStyleLengthAttribute(Definition.WIDTH.getAttributeName(), width, "", true, true, null);
}
/**
@@ -1750,7 +1750,7 @@ public String getWordSpacing() {
@JsxSetter
public void setWordSpacing(final Object wordSpacing) {
setStyleLengthAttribute(Definition.WORD_SPACING.getAttributeName(), wordSpacing, "",
- false, getBrowserVersion().hasFeature(JS_STYLE_WORD_SPACING_ACCEPTS_PERCENT), true, null);
+ false, getBrowserVersion().hasFeature(JS_STYLE_WORD_SPACING_ACCEPTS_PERCENT), null);
}
/**
@@ -1843,28 +1843,28 @@ public void setProperty(final String name, final Object value, final String impo
}
if (LENGTH_PROPERTIES_FFFF.contains(name)) {
- setStyleLengthAttribute(name, value, imp, false, false, true, null);
+ setStyleLengthAttribute(name, value, imp, false, false, null);
}
else if (LENGTH_PROPERTIES_TTFF.contains(name)) {
- setStyleLengthAttribute(name, value, imp, true, true, true, null);
+ setStyleLengthAttribute(name, value, imp, true, true, null);
}
else if (LENGTH_PROPERTIES_FTFF.contains(name)) {
- setStyleLengthAttribute(name, value, imp, false, true, true, null);
+ setStyleLengthAttribute(name, value, imp, false, true, null);
}
else if (Definition.OUTLINE_WIDTH.getAttributeName().equals(name)) {
setStyleLengthAttribute(Definition.OUTLINE_WIDTH.getAttributeName(),
- value, imp, false, false, true, THIN_MED_THICK);
+ value, imp, false, false, THIN_MED_THICK);
}
else if (Definition.LETTER_SPACING.getAttributeName().equals(name)) {
setStyleLengthAttribute(Definition.LETTER_SPACING.getAttributeName(), value, imp,
- false, getBrowserVersion().hasFeature(JS_STYLE_LETTER_SPACING_ACCEPTS_PERCENT), true, null);
+ false, getBrowserVersion().hasFeature(JS_STYLE_LETTER_SPACING_ACCEPTS_PERCENT), null);
}
else if (Definition.WORD_SPACING.getAttributeName().equals(name)) {
setStyleLengthAttribute(Definition.WORD_SPACING.getAttributeName(), value, imp,
- false, getBrowserVersion().hasFeature(JS_STYLE_WORD_SPACING_ACCEPTS_PERCENT), true, null);
+ false, getBrowserVersion().hasFeature(JS_STYLE_WORD_SPACING_ACCEPTS_PERCENT), null);
}
else if (Definition.VERTICAL_ALIGN.getAttributeName().equals(name)) {
- setStyleLengthAttribute(Definition.VERTICAL_ALIGN.getAttributeName(), value, imp, false, true, true, null);
+ setStyleLengthAttribute(Definition.VERTICAL_ALIGN.getAttributeName(), value, imp, false, true, null);
}
else {
setStyleAttribute(name, JavaScriptEngine.toString(value), imp);
@@ -1931,8 +1931,7 @@ public String toString() {
* @param validValues valid values
*/
private void setStyleLengthAttribute(final String name, final Object value, final String important,
- final boolean auto, final boolean percent, final boolean unitRequired, final String[] validValues) {
-
+ final boolean auto, final boolean percent, final String[] validValues) {
if (JavaScriptEngine.isNaN(value)) {
return;
}
@@ -1940,83 +1939,79 @@ private void setStyleLengthAttribute(final String name, final Object value, fina
final double doubleValue;
String unit = "px";
if (value instanceof Number) {
- if (unitRequired) {
- return;
- }
- doubleValue = ((Number) value).doubleValue();
+ return;
}
- else {
- String valueString = JavaScriptEngine.toString(value);
- if (null == value) {
- valueString = "";
- }
- if (StringUtils.isEmpty(valueString)) {
- setStyleAttribute(name, valueString, important);
- return;
- }
+ String valueString = JavaScriptEngine.toString(value);
+ if (null == value) {
+ valueString = "";
+ }
- if ((auto && AUTO.equals(valueString))
- || INITIAL.equals(valueString)
- || INHERIT.equals(valueString)) {
- setStyleAttribute(name, valueString, important);
- return;
- }
+ if (StringUtils.isEmpty(valueString)) {
+ setStyleAttribute(name, valueString, important);
+ return;
+ }
- if (validValues != null && ArrayUtils.contains(validValues, valueString)) {
- setStyleAttribute(name, valueString, important);
- return;
- }
+ if ((auto && AUTO.equals(valueString))
+ || INITIAL.equals(valueString)
+ || INHERIT.equals(valueString)) {
+ setStyleAttribute(name, valueString, important);
+ return;
+ }
- if (percent && valueString.endsWith("%")) {
- unit = valueString.substring(valueString.length() - 1);
- valueString = valueString.substring(0, valueString.length() - 1);
- }
- else if (valueString.endsWith("px")
- || valueString.endsWith("em")
- || valueString.endsWith("ex")
- || valueString.endsWith("pt")
- || valueString.endsWith("cm")
- || valueString.endsWith("mm")
- || valueString.endsWith("in")
- || valueString.endsWith("pc")
- || valueString.endsWith("ch")
- || valueString.endsWith("vh")
- || valueString.endsWith("vw")) {
- unit = valueString.substring(valueString.length() - 2);
- valueString = valueString.substring(0, valueString.length() - 2);
- }
- else if (valueString.endsWith("rem")
- || valueString.endsWith("vmin")
- || valueString.endsWith("vmax")) {
- unit = valueString.substring(valueString.length() - 3);
- valueString = valueString.substring(0, valueString.length() - 3);
- }
- else if (unitRequired) {
- return;
- }
+ if (validValues != null && ArrayUtils.contains(validValues, valueString)) {
+ setStyleAttribute(name, valueString, important);
+ return;
+ }
- if (!valueString.equals(valueString.trim())) {
- // we have a unit but surrounding blanks
- return;
- }
- doubleValue = JavaScriptEngine.toNumber(valueString);
+ if (percent && valueString.endsWith("%")) {
+ unit = valueString.substring(valueString.length() - 1);
+ valueString = valueString.substring(0, valueString.length() - 1);
+ }
+ else if (valueString.endsWith("px")
+ || valueString.endsWith("em")
+ || valueString.endsWith("ex")
+ || valueString.endsWith("pt")
+ || valueString.endsWith("cm")
+ || valueString.endsWith("mm")
+ || valueString.endsWith("in")
+ || valueString.endsWith("pc")
+ || valueString.endsWith("ch")
+ || valueString.endsWith("vh")
+ || valueString.endsWith("vw")) {
+ unit = valueString.substring(valueString.length() - 2);
+ valueString = valueString.substring(0, valueString.length() - 2);
+ }
+ else if (valueString.endsWith("rem")
+ || valueString.endsWith("vmin")
+ || valueString.endsWith("vmax")) {
+ unit = valueString.substring(valueString.length() - 3);
+ valueString = valueString.substring(0, valueString.length() - 3);
+ }
+ else {
+ return;
}
+ if (!valueString.equals(valueString.trim())) {
+ // we have a unit but surrounding blanks
+ return;
+ }
+ doubleValue = JavaScriptEngine.toNumber(valueString);
+
try {
if (Double.isNaN(doubleValue) || Double.isInfinite(doubleValue)) {
return;
}
- final String valueString;
+ final String valueStr;
if (doubleValue % 1 == 0) {
- valueString = (int) doubleValue + unit;
+ valueStr = (int) doubleValue + unit;
}
else {
- valueString = doubleValue + unit;
+ valueStr = doubleValue + unit;
}
- setStyleAttribute(name, valueString, important);
+ setStyleAttribute(name, valueStr, important);
}
catch (final Exception ignored) {
// ignore
From 239098b47812d97a34d96da562c2c587ebdb5a1d Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 18:00:51 +0200
Subject: [PATCH 049/125] Chrome/Edge 135, FF 137
---
.../general/ElementOwnPropertiesTest.java | 652 ++++----
.../general/ElementPropertiesTest.java | 1305 +++++++++--------
2 files changed, 1000 insertions(+), 957 deletions(-)
diff --git a/src/test/java/org/htmlunit/general/ElementOwnPropertiesTest.java b/src/test/java/org/htmlunit/general/ElementOwnPropertiesTest.java
index caff7f2af0d..4c92c30934a 100644
--- a/src/test/java/org/htmlunit/general/ElementOwnPropertiesTest.java
+++ b/src/test/java/org/htmlunit/general/ElementOwnPropertiesTest.java
@@ -504,65 +504,69 @@ public void htmlElement() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "after(),animate(),append(),ariaAtomic[GSCE],ariaAutoComplete[GSCE],ariaBrailleLabel[GSCE],"
- + "ariaBrailleRoleDescription[GSCE],ariaBusy[GSCE],ariaChecked[GSCE],ariaColCount[GSCE],"
- + "ariaColIndex[GSCE],ariaColIndexText[GSCE],ariaColSpan[GSCE],ariaCurrent[GSCE],"
- + "ariaDescription[GSCE],ariaDisabled[GSCE],ariaExpanded[GSCE],ariaHasPopup[GSCE],ariaHidden[GSCE],"
- + "ariaInvalid[GSCE],ariaKeyShortcuts[GSCE],ariaLabel[GSCE],ariaLevel[GSCE],ariaLive[GSCE],"
- + "ariaModal[GSCE],ariaMultiLine[GSCE],ariaMultiSelectable[GSCE],ariaOrientation[GSCE],"
- + "ariaPlaceholder[GSCE],ariaPosInSet[GSCE],ariaPressed[GSCE],ariaReadOnly[GSCE],ariaRelevant[GSCE],"
- + "ariaRequired[GSCE],ariaRoleDescription[GSCE],ariaRowCount[GSCE],ariaRowIndex[GSCE],"
- + "ariaRowIndexText[GSCE],ariaRowSpan[GSCE],ariaSelected[GSCE],ariaSetSize[GSCE],ariaSort[GSCE],"
- + "ariaValueMax[GSCE],ariaValueMin[GSCE],ariaValueNow[GSCE],ariaValueText[GSCE],assignedSlot[GCE],"
- + "attachShadow(),attributes[GCE],before(),checkVisibility(),childElementCount[GCE],children[GCE],"
- + "classList[GSCE],className[GSCE],clientHeight[GCE],clientLeft[GCE],clientTop[GCE],"
- + "clientWidth[GCE],closest(),computedStyleMap(),constructor(),currentCSSZoom[GCE],"
- + "elementTiming[GSCE],firstElementChild[GCE],getAnimations(),getAttribute(),getAttributeNames(),"
- + "getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),getBoundingClientRect(),"
- + "getClientRects(),getElementsByClassName(),getElementsByTagName(),getElementsByTagNameNS(),"
- + "getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),hasPointerCapture(),id[GSCE],"
- + "innerHTML[GSCE],insertAdjacentElement(),insertAdjacentHTML(),insertAdjacentText(),"
- + "lastElementChild[GCE],localName[GCE],matches(),moveBefore(),namespaceURI[GCE],"
- + "nextElementSibling[GCE],onbeforecopy[GSCE],onbeforecut[GSCE],onbeforepaste[GSCE],"
- + "onfullscreenchange[GSCE],onfullscreenerror[GSCE],onsearch[GSCE],onwebkitfullscreenchange[GSCE],"
- + "onwebkitfullscreenerror[GSCE],outerHTML[GSCE],part[GSCE],prefix[GCE],prepend(),"
- + "previousElementSibling[GCE],querySelector(),querySelectorAll(),releasePointerCapture(),remove(),"
- + "removeAttribute(),removeAttributeNode(),removeAttributeNS(),replaceChildren(),replaceWith(),"
- + "requestFullscreen(),requestPointerLock(),role[GSCE],scroll(),scrollBy(),scrollHeight[GCE],"
- + "scrollIntoView(),scrollIntoViewIfNeeded(),scrollLeft[GSCE],scrollTo(),scrollTop[GSCE],"
- + "scrollWidth[GCE],setAttribute(),setAttributeNode(),setAttributeNodeNS(),setAttributeNS(),"
- + "setHTMLUnsafe(),setPointerCapture(),shadowRoot[GCE],slot[GSCE],tagName[GCE],toggleAttribute(),"
- + "webkitMatchesSelector(),webkitRequestFullScreen(),"
+ @Alerts(CHROME = "after(),animate(),append(),ariaActiveDescendantElement[GSCE],ariaAtomic[GSCE],"
+ + "ariaAutoComplete[GSCE],ariaBrailleLabel[GSCE],ariaBrailleRoleDescription[GSCE],ariaBusy[GSCE],"
+ + "ariaChecked[GSCE],ariaColCount[GSCE],ariaColIndex[GSCE],ariaColIndexText[GSCE],ariaColSpan[GSCE],"
+ + "ariaControlsElements[GSCE],ariaCurrent[GSCE],ariaDescribedByElements[GSCE],ariaDescription[GSCE],"
+ + "ariaDetailsElements[GSCE],ariaDisabled[GSCE],ariaErrorMessageElements[GSCE],ariaExpanded[GSCE],"
+ + "ariaFlowToElements[GSCE],ariaHasPopup[GSCE],ariaHidden[GSCE],ariaInvalid[GSCE],"
+ + "ariaKeyShortcuts[GSCE],ariaLabel[GSCE],ariaLabelledByElements[GSCE],ariaLevel[GSCE],"
+ + "ariaLive[GSCE],ariaModal[GSCE],ariaMultiLine[GSCE],ariaMultiSelectable[GSCE],"
+ + "ariaOrientation[GSCE],ariaPlaceholder[GSCE],ariaPosInSet[GSCE],ariaPressed[GSCE],"
+ + "ariaReadOnly[GSCE],ariaRelevant[GSCE],ariaRequired[GSCE],ariaRoleDescription[GSCE],"
+ + "ariaRowCount[GSCE],ariaRowIndex[GSCE],ariaRowIndexText[GSCE],ariaRowSpan[GSCE],"
+ + "ariaSelected[GSCE],ariaSetSize[GSCE],ariaSort[GSCE],ariaValueMax[GSCE],ariaValueMin[GSCE],"
+ + "ariaValueNow[GSCE],ariaValueText[GSCE],assignedSlot[GCE],attachShadow(),attributes[GCE],before(),"
+ + "checkVisibility(),childElementCount[GCE],children[GCE],classList[GSCE],className[GSCE],"
+ + "clientHeight[GCE],clientLeft[GCE],clientTop[GCE],clientWidth[GCE],closest(),computedStyleMap(),"
+ + "constructor(),currentCSSZoom[GCE],elementTiming[GSCE],firstElementChild[GCE],getAnimations(),"
+ + "getAttribute(),getAttributeNames(),getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),"
+ + "getBoundingClientRect(),getClientRects(),getElementsByClassName(),getElementsByTagName(),"
+ + "getElementsByTagNameNS(),getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),"
+ + "hasPointerCapture(),id[GSCE],innerHTML[GSCE],insertAdjacentElement(),insertAdjacentHTML(),"
+ + "insertAdjacentText(),lastElementChild[GCE],localName[GCE],matches(),moveBefore(),"
+ + "namespaceURI[GCE],nextElementSibling[GCE],onbeforecopy[GSCE],onbeforecut[GSCE],"
+ + "onbeforepaste[GSCE],onfullscreenchange[GSCE],onfullscreenerror[GSCE],onsearch[GSCE],"
+ + "onwebkitfullscreenchange[GSCE],onwebkitfullscreenerror[GSCE],outerHTML[GSCE],part[GSCE],"
+ + "prefix[GCE],prepend(),previousElementSibling[GCE],querySelector(),querySelectorAll(),"
+ + "releasePointerCapture(),remove(),removeAttribute(),removeAttributeNode(),removeAttributeNS(),"
+ + "replaceChildren(),replaceWith(),requestFullscreen(),requestPointerLock(),role[GSCE],scroll(),"
+ + "scrollBy(),scrollHeight[GCE],scrollIntoView(),scrollIntoViewIfNeeded(),scrollLeft[GSCE],"
+ + "scrollTo(),scrollTop[GSCE],scrollWidth[GCE],setAttribute(),setAttributeNode(),"
+ + "setAttributeNodeNS(),setAttributeNS(),setHTMLUnsafe(),setPointerCapture(),shadowRoot[GCE],"
+ + "slot[GSCE],tagName[GCE],toggleAttribute(),webkitMatchesSelector(),webkitRequestFullScreen(),"
+ "webkitRequestFullscreen()",
- EDGE = "after(),animate(),append(),ariaAtomic[GSCE],ariaAutoComplete[GSCE],ariaBrailleLabel[GSCE],"
- + "ariaBrailleRoleDescription[GSCE],ariaBusy[GSCE],ariaChecked[GSCE],ariaColCount[GSCE],"
- + "ariaColIndex[GSCE],ariaColIndexText[GSCE],ariaColSpan[GSCE],ariaCurrent[GSCE],"
- + "ariaDescription[GSCE],ariaDisabled[GSCE],ariaExpanded[GSCE],ariaHasPopup[GSCE],ariaHidden[GSCE],"
- + "ariaInvalid[GSCE],ariaKeyShortcuts[GSCE],ariaLabel[GSCE],ariaLevel[GSCE],ariaLive[GSCE],"
- + "ariaModal[GSCE],ariaMultiLine[GSCE],ariaMultiSelectable[GSCE],ariaOrientation[GSCE],"
- + "ariaPlaceholder[GSCE],ariaPosInSet[GSCE],ariaPressed[GSCE],ariaReadOnly[GSCE],ariaRelevant[GSCE],"
- + "ariaRequired[GSCE],ariaRoleDescription[GSCE],ariaRowCount[GSCE],ariaRowIndex[GSCE],"
- + "ariaRowIndexText[GSCE],ariaRowSpan[GSCE],ariaSelected[GSCE],ariaSetSize[GSCE],ariaSort[GSCE],"
- + "ariaValueMax[GSCE],ariaValueMin[GSCE],ariaValueNow[GSCE],ariaValueText[GSCE],assignedSlot[GCE],"
- + "attachShadow(),attributes[GCE],before(),checkVisibility(),childElementCount[GCE],children[GCE],"
- + "classList[GSCE],className[GSCE],clientHeight[GCE],clientLeft[GCE],clientTop[GCE],"
- + "clientWidth[GCE],closest(),computedStyleMap(),constructor(),currentCSSZoom[GCE],"
- + "elementTiming[GSCE],firstElementChild[GCE],getAnimations(),getAttribute(),getAttributeNames(),"
- + "getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),getBoundingClientRect(),"
- + "getClientRects(),getElementsByClassName(),getElementsByTagName(),getElementsByTagNameNS(),"
- + "getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),hasPointerCapture(),id[GSCE],"
- + "innerHTML[GSCE],insertAdjacentElement(),insertAdjacentHTML(),insertAdjacentText(),"
- + "lastElementChild[GCE],localName[GCE],matches(),moveBefore(),namespaceURI[GCE],"
- + "nextElementSibling[GCE],onbeforecopy[GSCE],onbeforecut[GSCE],onbeforepaste[GSCE],"
- + "onfullscreenchange[GSCE],onfullscreenerror[GSCE],onsearch[GSCE],onwebkitfullscreenchange[GSCE],"
- + "onwebkitfullscreenerror[GSCE],outerHTML[GSCE],part[GSCE],prefix[GCE],prepend(),"
- + "previousElementSibling[GCE],querySelector(),querySelectorAll(),releasePointerCapture(),remove(),"
- + "removeAttribute(),removeAttributeNode(),removeAttributeNS(),replaceChildren(),replaceWith(),"
- + "requestFullscreen(),requestPointerLock(),role[GSCE],scroll(),scrollBy(),scrollHeight[GCE],"
- + "scrollIntoView(),scrollIntoViewIfNeeded(),scrollLeft[GSCE],scrollTo(),scrollTop[GSCE],"
- + "scrollWidth[GCE],setAttribute(),setAttributeNode(),setAttributeNodeNS(),setAttributeNS(),"
- + "setHTMLUnsafe(),setPointerCapture(),shadowRoot[GCE],slot[GSCE],tagName[GCE],toggleAttribute(),"
- + "webkitMatchesSelector(),webkitRequestFullScreen(),"
+ EDGE = "after(),animate(),append(),ariaActiveDescendantElement[GSCE],ariaAtomic[GSCE],"
+ + "ariaAutoComplete[GSCE],ariaBrailleLabel[GSCE],ariaBrailleRoleDescription[GSCE],ariaBusy[GSCE],"
+ + "ariaChecked[GSCE],ariaColCount[GSCE],ariaColIndex[GSCE],ariaColIndexText[GSCE],ariaColSpan[GSCE],"
+ + "ariaControlsElements[GSCE],ariaCurrent[GSCE],ariaDescribedByElements[GSCE],ariaDescription[GSCE],"
+ + "ariaDetailsElements[GSCE],ariaDisabled[GSCE],ariaErrorMessageElements[GSCE],ariaExpanded[GSCE],"
+ + "ariaFlowToElements[GSCE],ariaHasPopup[GSCE],ariaHidden[GSCE],ariaInvalid[GSCE],"
+ + "ariaKeyShortcuts[GSCE],ariaLabel[GSCE],ariaLabelledByElements[GSCE],ariaLevel[GSCE],"
+ + "ariaLive[GSCE],ariaModal[GSCE],ariaMultiLine[GSCE],ariaMultiSelectable[GSCE],"
+ + "ariaOrientation[GSCE],ariaPlaceholder[GSCE],ariaPosInSet[GSCE],ariaPressed[GSCE],"
+ + "ariaReadOnly[GSCE],ariaRelevant[GSCE],ariaRequired[GSCE],ariaRoleDescription[GSCE],"
+ + "ariaRowCount[GSCE],ariaRowIndex[GSCE],ariaRowIndexText[GSCE],ariaRowSpan[GSCE],"
+ + "ariaSelected[GSCE],ariaSetSize[GSCE],ariaSort[GSCE],ariaValueMax[GSCE],ariaValueMin[GSCE],"
+ + "ariaValueNow[GSCE],ariaValueText[GSCE],assignedSlot[GCE],attachShadow(),attributes[GCE],before(),"
+ + "checkVisibility(),childElementCount[GCE],children[GCE],classList[GSCE],className[GSCE],"
+ + "clientHeight[GCE],clientLeft[GCE],clientTop[GCE],clientWidth[GCE],closest(),computedStyleMap(),"
+ + "constructor(),currentCSSZoom[GCE],elementTiming[GSCE],firstElementChild[GCE],getAnimations(),"
+ + "getAttribute(),getAttributeNames(),getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),"
+ + "getBoundingClientRect(),getClientRects(),getElementsByClassName(),getElementsByTagName(),"
+ + "getElementsByTagNameNS(),getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),"
+ + "hasPointerCapture(),id[GSCE],innerHTML[GSCE],insertAdjacentElement(),insertAdjacentHTML(),"
+ + "insertAdjacentText(),lastElementChild[GCE],localName[GCE],matches(),moveBefore(),"
+ + "namespaceURI[GCE],nextElementSibling[GCE],onbeforecopy[GSCE],onbeforecut[GSCE],"
+ + "onbeforepaste[GSCE],onfullscreenchange[GSCE],onfullscreenerror[GSCE],onsearch[GSCE],"
+ + "onwebkitfullscreenchange[GSCE],onwebkitfullscreenerror[GSCE],outerHTML[GSCE],part[GSCE],"
+ + "prefix[GCE],prepend(),previousElementSibling[GCE],querySelector(),querySelectorAll(),"
+ + "releasePointerCapture(),remove(),removeAttribute(),removeAttributeNode(),removeAttributeNS(),"
+ + "replaceChildren(),replaceWith(),requestFullscreen(),requestPointerLock(),role[GSCE],scroll(),"
+ + "scrollBy(),scrollHeight[GCE],scrollIntoView(),scrollIntoViewIfNeeded(),scrollLeft[GSCE],"
+ + "scrollTo(),scrollTop[GSCE],scrollWidth[GCE],setAttribute(),setAttributeNode(),"
+ + "setAttributeNodeNS(),setAttributeNS(),setHTMLUnsafe(),setPointerCapture(),shadowRoot[GCE],"
+ + "slot[GSCE],tagName[GCE],toggleAttribute(),webkitMatchesSelector(),webkitRequestFullScreen(),"
+ "webkitRequestFullscreen()",
FF = "after(),animate(),append(),ariaActiveDescendantElement[GSCE],ariaAtomic[GSCE],"
+ "ariaAutoComplete[GSCE],ariaBrailleLabel[GSCE],ariaBrailleRoleDescription[GSCE],ariaBusy[GSCE],"
@@ -692,65 +696,69 @@ public void element() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "after(),animate(),append(),ariaAtomic[GSCE],ariaAutoComplete[GSCE],ariaBrailleLabel[GSCE],"
- + "ariaBrailleRoleDescription[GSCE],ariaBusy[GSCE],ariaChecked[GSCE],ariaColCount[GSCE],"
- + "ariaColIndex[GSCE],ariaColIndexText[GSCE],ariaColSpan[GSCE],ariaCurrent[GSCE],"
- + "ariaDescription[GSCE],ariaDisabled[GSCE],ariaExpanded[GSCE],ariaHasPopup[GSCE],ariaHidden[GSCE],"
- + "ariaInvalid[GSCE],ariaKeyShortcuts[GSCE],ariaLabel[GSCE],ariaLevel[GSCE],ariaLive[GSCE],"
- + "ariaModal[GSCE],ariaMultiLine[GSCE],ariaMultiSelectable[GSCE],ariaOrientation[GSCE],"
- + "ariaPlaceholder[GSCE],ariaPosInSet[GSCE],ariaPressed[GSCE],ariaReadOnly[GSCE],ariaRelevant[GSCE],"
- + "ariaRequired[GSCE],ariaRoleDescription[GSCE],ariaRowCount[GSCE],ariaRowIndex[GSCE],"
- + "ariaRowIndexText[GSCE],ariaRowSpan[GSCE],ariaSelected[GSCE],ariaSetSize[GSCE],ariaSort[GSCE],"
- + "ariaValueMax[GSCE],ariaValueMin[GSCE],ariaValueNow[GSCE],ariaValueText[GSCE],assignedSlot[GCE],"
- + "attachShadow(),attributes[GCE],before(),checkVisibility(),childElementCount[GCE],children[GCE],"
- + "classList[GSCE],className[GSCE],clientHeight[GCE],clientLeft[GCE],clientTop[GCE],"
- + "clientWidth[GCE],closest(),computedStyleMap(),constructor(),currentCSSZoom[GCE],"
- + "elementTiming[GSCE],firstElementChild[GCE],getAnimations(),getAttribute(),getAttributeNames(),"
- + "getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),getBoundingClientRect(),"
- + "getClientRects(),getElementsByClassName(),getElementsByTagName(),getElementsByTagNameNS(),"
- + "getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),hasPointerCapture(),id[GSCE],"
- + "innerHTML[GSCE],insertAdjacentElement(),insertAdjacentHTML(),insertAdjacentText(),"
- + "lastElementChild[GCE],localName[GCE],matches(),moveBefore(),namespaceURI[GCE],"
- + "nextElementSibling[GCE],onbeforecopy[GSCE],onbeforecut[GSCE],onbeforepaste[GSCE],"
- + "onfullscreenchange[GSCE],onfullscreenerror[GSCE],onsearch[GSCE],onwebkitfullscreenchange[GSCE],"
- + "onwebkitfullscreenerror[GSCE],outerHTML[GSCE],part[GSCE],prefix[GCE],prepend(),"
- + "previousElementSibling[GCE],querySelector(),querySelectorAll(),releasePointerCapture(),remove(),"
- + "removeAttribute(),removeAttributeNode(),removeAttributeNS(),replaceChildren(),replaceWith(),"
- + "requestFullscreen(),requestPointerLock(),role[GSCE],scroll(),scrollBy(),scrollHeight[GCE],"
- + "scrollIntoView(),scrollIntoViewIfNeeded(),scrollLeft[GSCE],scrollTo(),scrollTop[GSCE],"
- + "scrollWidth[GCE],setAttribute(),setAttributeNode(),setAttributeNodeNS(),setAttributeNS(),"
- + "setHTMLUnsafe(),setPointerCapture(),shadowRoot[GCE],slot[GSCE],tagName[GCE],toggleAttribute(),"
- + "webkitMatchesSelector(),webkitRequestFullScreen(),"
+ @Alerts(CHROME = "after(),animate(),append(),ariaActiveDescendantElement[GSCE],ariaAtomic[GSCE],"
+ + "ariaAutoComplete[GSCE],ariaBrailleLabel[GSCE],ariaBrailleRoleDescription[GSCE],ariaBusy[GSCE],"
+ + "ariaChecked[GSCE],ariaColCount[GSCE],ariaColIndex[GSCE],ariaColIndexText[GSCE],ariaColSpan[GSCE],"
+ + "ariaControlsElements[GSCE],ariaCurrent[GSCE],ariaDescribedByElements[GSCE],ariaDescription[GSCE],"
+ + "ariaDetailsElements[GSCE],ariaDisabled[GSCE],ariaErrorMessageElements[GSCE],ariaExpanded[GSCE],"
+ + "ariaFlowToElements[GSCE],ariaHasPopup[GSCE],ariaHidden[GSCE],ariaInvalid[GSCE],"
+ + "ariaKeyShortcuts[GSCE],ariaLabel[GSCE],ariaLabelledByElements[GSCE],ariaLevel[GSCE],"
+ + "ariaLive[GSCE],ariaModal[GSCE],ariaMultiLine[GSCE],ariaMultiSelectable[GSCE],"
+ + "ariaOrientation[GSCE],ariaPlaceholder[GSCE],ariaPosInSet[GSCE],ariaPressed[GSCE],"
+ + "ariaReadOnly[GSCE],ariaRelevant[GSCE],ariaRequired[GSCE],ariaRoleDescription[GSCE],"
+ + "ariaRowCount[GSCE],ariaRowIndex[GSCE],ariaRowIndexText[GSCE],ariaRowSpan[GSCE],"
+ + "ariaSelected[GSCE],ariaSetSize[GSCE],ariaSort[GSCE],ariaValueMax[GSCE],ariaValueMin[GSCE],"
+ + "ariaValueNow[GSCE],ariaValueText[GSCE],assignedSlot[GCE],attachShadow(),attributes[GCE],before(),"
+ + "checkVisibility(),childElementCount[GCE],children[GCE],classList[GSCE],className[GSCE],"
+ + "clientHeight[GCE],clientLeft[GCE],clientTop[GCE],clientWidth[GCE],closest(),computedStyleMap(),"
+ + "constructor(),currentCSSZoom[GCE],elementTiming[GSCE],firstElementChild[GCE],getAnimations(),"
+ + "getAttribute(),getAttributeNames(),getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),"
+ + "getBoundingClientRect(),getClientRects(),getElementsByClassName(),getElementsByTagName(),"
+ + "getElementsByTagNameNS(),getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),"
+ + "hasPointerCapture(),id[GSCE],innerHTML[GSCE],insertAdjacentElement(),insertAdjacentHTML(),"
+ + "insertAdjacentText(),lastElementChild[GCE],localName[GCE],matches(),moveBefore(),"
+ + "namespaceURI[GCE],nextElementSibling[GCE],onbeforecopy[GSCE],onbeforecut[GSCE],"
+ + "onbeforepaste[GSCE],onfullscreenchange[GSCE],onfullscreenerror[GSCE],onsearch[GSCE],"
+ + "onwebkitfullscreenchange[GSCE],onwebkitfullscreenerror[GSCE],outerHTML[GSCE],part[GSCE],"
+ + "prefix[GCE],prepend(),previousElementSibling[GCE],querySelector(),querySelectorAll(),"
+ + "releasePointerCapture(),remove(),removeAttribute(),removeAttributeNode(),removeAttributeNS(),"
+ + "replaceChildren(),replaceWith(),requestFullscreen(),requestPointerLock(),role[GSCE],scroll(),"
+ + "scrollBy(),scrollHeight[GCE],scrollIntoView(),scrollIntoViewIfNeeded(),scrollLeft[GSCE],"
+ + "scrollTo(),scrollTop[GSCE],scrollWidth[GCE],setAttribute(),setAttributeNode(),"
+ + "setAttributeNodeNS(),setAttributeNS(),setHTMLUnsafe(),setPointerCapture(),shadowRoot[GCE],"
+ + "slot[GSCE],tagName[GCE],toggleAttribute(),webkitMatchesSelector(),webkitRequestFullScreen(),"
+ "webkitRequestFullscreen()",
- EDGE = "after(),animate(),append(),ariaAtomic[GSCE],ariaAutoComplete[GSCE],ariaBrailleLabel[GSCE],"
- + "ariaBrailleRoleDescription[GSCE],ariaBusy[GSCE],ariaChecked[GSCE],ariaColCount[GSCE],"
- + "ariaColIndex[GSCE],ariaColIndexText[GSCE],ariaColSpan[GSCE],ariaCurrent[GSCE],"
- + "ariaDescription[GSCE],ariaDisabled[GSCE],ariaExpanded[GSCE],ariaHasPopup[GSCE],ariaHidden[GSCE],"
- + "ariaInvalid[GSCE],ariaKeyShortcuts[GSCE],ariaLabel[GSCE],ariaLevel[GSCE],ariaLive[GSCE],"
- + "ariaModal[GSCE],ariaMultiLine[GSCE],ariaMultiSelectable[GSCE],ariaOrientation[GSCE],"
- + "ariaPlaceholder[GSCE],ariaPosInSet[GSCE],ariaPressed[GSCE],ariaReadOnly[GSCE],ariaRelevant[GSCE],"
- + "ariaRequired[GSCE],ariaRoleDescription[GSCE],ariaRowCount[GSCE],ariaRowIndex[GSCE],"
- + "ariaRowIndexText[GSCE],ariaRowSpan[GSCE],ariaSelected[GSCE],ariaSetSize[GSCE],ariaSort[GSCE],"
- + "ariaValueMax[GSCE],ariaValueMin[GSCE],ariaValueNow[GSCE],ariaValueText[GSCE],assignedSlot[GCE],"
- + "attachShadow(),attributes[GCE],before(),checkVisibility(),childElementCount[GCE],children[GCE],"
- + "classList[GSCE],className[GSCE],clientHeight[GCE],clientLeft[GCE],clientTop[GCE],"
- + "clientWidth[GCE],closest(),computedStyleMap(),constructor(),currentCSSZoom[GCE],"
- + "elementTiming[GSCE],firstElementChild[GCE],getAnimations(),getAttribute(),getAttributeNames(),"
- + "getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),getBoundingClientRect(),"
- + "getClientRects(),getElementsByClassName(),getElementsByTagName(),getElementsByTagNameNS(),"
- + "getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),hasPointerCapture(),id[GSCE],"
- + "innerHTML[GSCE],insertAdjacentElement(),insertAdjacentHTML(),insertAdjacentText(),"
- + "lastElementChild[GCE],localName[GCE],matches(),moveBefore(),namespaceURI[GCE],"
- + "nextElementSibling[GCE],onbeforecopy[GSCE],onbeforecut[GSCE],onbeforepaste[GSCE],"
- + "onfullscreenchange[GSCE],onfullscreenerror[GSCE],onsearch[GSCE],onwebkitfullscreenchange[GSCE],"
- + "onwebkitfullscreenerror[GSCE],outerHTML[GSCE],part[GSCE],prefix[GCE],prepend(),"
- + "previousElementSibling[GCE],querySelector(),querySelectorAll(),releasePointerCapture(),remove(),"
- + "removeAttribute(),removeAttributeNode(),removeAttributeNS(),replaceChildren(),replaceWith(),"
- + "requestFullscreen(),requestPointerLock(),role[GSCE],scroll(),scrollBy(),scrollHeight[GCE],"
- + "scrollIntoView(),scrollIntoViewIfNeeded(),scrollLeft[GSCE],scrollTo(),scrollTop[GSCE],"
- + "scrollWidth[GCE],setAttribute(),setAttributeNode(),setAttributeNodeNS(),setAttributeNS(),"
- + "setHTMLUnsafe(),setPointerCapture(),shadowRoot[GCE],slot[GSCE],tagName[GCE],toggleAttribute(),"
- + "webkitMatchesSelector(),webkitRequestFullScreen(),"
+ EDGE = "after(),animate(),append(),ariaActiveDescendantElement[GSCE],ariaAtomic[GSCE],"
+ + "ariaAutoComplete[GSCE],ariaBrailleLabel[GSCE],ariaBrailleRoleDescription[GSCE],ariaBusy[GSCE],"
+ + "ariaChecked[GSCE],ariaColCount[GSCE],ariaColIndex[GSCE],ariaColIndexText[GSCE],ariaColSpan[GSCE],"
+ + "ariaControlsElements[GSCE],ariaCurrent[GSCE],ariaDescribedByElements[GSCE],ariaDescription[GSCE],"
+ + "ariaDetailsElements[GSCE],ariaDisabled[GSCE],ariaErrorMessageElements[GSCE],ariaExpanded[GSCE],"
+ + "ariaFlowToElements[GSCE],ariaHasPopup[GSCE],ariaHidden[GSCE],ariaInvalid[GSCE],"
+ + "ariaKeyShortcuts[GSCE],ariaLabel[GSCE],ariaLabelledByElements[GSCE],ariaLevel[GSCE],"
+ + "ariaLive[GSCE],ariaModal[GSCE],ariaMultiLine[GSCE],ariaMultiSelectable[GSCE],"
+ + "ariaOrientation[GSCE],ariaPlaceholder[GSCE],ariaPosInSet[GSCE],ariaPressed[GSCE],"
+ + "ariaReadOnly[GSCE],ariaRelevant[GSCE],ariaRequired[GSCE],ariaRoleDescription[GSCE],"
+ + "ariaRowCount[GSCE],ariaRowIndex[GSCE],ariaRowIndexText[GSCE],ariaRowSpan[GSCE],"
+ + "ariaSelected[GSCE],ariaSetSize[GSCE],ariaSort[GSCE],ariaValueMax[GSCE],ariaValueMin[GSCE],"
+ + "ariaValueNow[GSCE],ariaValueText[GSCE],assignedSlot[GCE],attachShadow(),attributes[GCE],before(),"
+ + "checkVisibility(),childElementCount[GCE],children[GCE],classList[GSCE],className[GSCE],"
+ + "clientHeight[GCE],clientLeft[GCE],clientTop[GCE],clientWidth[GCE],closest(),computedStyleMap(),"
+ + "constructor(),currentCSSZoom[GCE],elementTiming[GSCE],firstElementChild[GCE],getAnimations(),"
+ + "getAttribute(),getAttributeNames(),getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),"
+ + "getBoundingClientRect(),getClientRects(),getElementsByClassName(),getElementsByTagName(),"
+ + "getElementsByTagNameNS(),getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),"
+ + "hasPointerCapture(),id[GSCE],innerHTML[GSCE],insertAdjacentElement(),insertAdjacentHTML(),"
+ + "insertAdjacentText(),lastElementChild[GCE],localName[GCE],matches(),moveBefore(),"
+ + "namespaceURI[GCE],nextElementSibling[GCE],onbeforecopy[GSCE],onbeforecut[GSCE],"
+ + "onbeforepaste[GSCE],onfullscreenchange[GSCE],onfullscreenerror[GSCE],onsearch[GSCE],"
+ + "onwebkitfullscreenchange[GSCE],onwebkitfullscreenerror[GSCE],outerHTML[GSCE],part[GSCE],"
+ + "prefix[GCE],prepend(),previousElementSibling[GCE],querySelector(),querySelectorAll(),"
+ + "releasePointerCapture(),remove(),removeAttribute(),removeAttributeNode(),removeAttributeNS(),"
+ + "replaceChildren(),replaceWith(),requestFullscreen(),requestPointerLock(),role[GSCE],scroll(),"
+ + "scrollBy(),scrollHeight[GCE],scrollIntoView(),scrollIntoViewIfNeeded(),scrollLeft[GSCE],"
+ + "scrollTo(),scrollTop[GSCE],scrollWidth[GCE],setAttribute(),setAttributeNode(),"
+ + "setAttributeNodeNS(),setAttributeNS(),setHTMLUnsafe(),setPointerCapture(),shadowRoot[GCE],"
+ + "slot[GSCE],tagName[GCE],toggleAttribute(),webkitMatchesSelector(),webkitRequestFullScreen(),"
+ "webkitRequestFullscreen()",
FF = "after(),animate(),append(),ariaActiveDescendantElement[GSCE],ariaAtomic[GSCE],"
+ "ariaAutoComplete[GSCE],ariaBrailleLabel[GSCE],ariaBrailleRoleDescription[GSCE],ariaBusy[GSCE],"
@@ -1089,7 +1097,7 @@ public void window() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -1119,7 +1127,7 @@ public void window() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -1317,7 +1325,7 @@ public void abbr() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -1347,7 +1355,7 @@ public void abbr() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -1591,7 +1599,7 @@ public void a() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -1621,7 +1629,7 @@ public void a() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -1867,7 +1875,7 @@ public void area() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -1897,7 +1905,7 @@ public void area() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -2095,7 +2103,7 @@ public void article() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -2125,7 +2133,7 @@ public void article() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -2364,7 +2372,7 @@ public void base() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -2394,7 +2402,7 @@ public void base() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -2592,7 +2600,7 @@ public void basefont() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -2622,7 +2630,7 @@ public void basefont() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -2819,7 +2827,7 @@ public void bdi() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -2849,7 +2857,7 @@ public void bdi() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -3046,7 +3054,7 @@ public void bdo() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -3076,7 +3084,7 @@ public void bdo() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -3337,7 +3345,7 @@ public void body() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -3367,7 +3375,7 @@ public void body() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -3571,15 +3579,15 @@ public void br() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "checkValidity(),constructor(),disabled[GSCE],form[GCE],formAction[GSCE],formEnctype[GSCE],"
- + "formMethod[GSCE],formNoValidate[GSCE],formTarget[GSCE],labels[GCE],name[GSCE],"
- + "popoverTargetAction[GSCE],popoverTargetElement[GSCE],reportValidity(),setCustomValidity(),"
- + "type[GSCE],validationMessage[GCE],validity[GCE],value[GSCE],"
+ @Alerts(CHROME = "checkValidity(),command[GSCE],commandForElement[GSCE],constructor(),disabled[GSCE],form[GCE],"
+ + "formAction[GSCE],formEnctype[GSCE],formMethod[GSCE],formNoValidate[GSCE],formTarget[GSCE],"
+ + "labels[GCE],name[GSCE],popoverTargetAction[GSCE],popoverTargetElement[GSCE],reportValidity(),"
+ + "setCustomValidity(),type[GSCE],validationMessage[GCE],validity[GCE],value[GSCE],"
+ "willValidate[GCE]",
- EDGE = "checkValidity(),constructor(),disabled[GSCE],form[GCE],formAction[GSCE],formEnctype[GSCE],"
- + "formMethod[GSCE],formNoValidate[GSCE],formTarget[GSCE],labels[GCE],name[GSCE],"
- + "popoverTargetAction[GSCE],popoverTargetElement[GSCE],reportValidity(),setCustomValidity(),"
- + "type[GSCE],validationMessage[GCE],validity[GCE],value[GSCE],"
+ EDGE = "checkValidity(),command[GSCE],commandForElement[GSCE],constructor(),disabled[GSCE],form[GCE],"
+ + "formAction[GSCE],formEnctype[GSCE],formMethod[GSCE],formNoValidate[GSCE],formTarget[GSCE],"
+ + "labels[GCE],name[GSCE],popoverTargetAction[GSCE],popoverTargetElement[GSCE],reportValidity(),"
+ + "setCustomValidity(),type[GSCE],validationMessage[GCE],validity[GCE],value[GSCE],"
+ "willValidate[GCE]",
FF = "checkValidity(),constructor(),disabled[GSCE],form[GCE],formAction[GSCE],formEnctype[GSCE],"
+ "formMethod[GSCE],formNoValidate[GSCE],formTarget[GSCE],labels[GCE],name[GSCE],"
@@ -3657,7 +3665,7 @@ public void caption() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -3687,7 +3695,7 @@ public void caption() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -3885,7 +3893,7 @@ public void center() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -3915,7 +3923,7 @@ public void center() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -4112,7 +4120,7 @@ public void cite() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -4142,7 +4150,7 @@ public void cite() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -4367,7 +4375,7 @@ public void datalist() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -4397,7 +4405,7 @@ public void datalist() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -4594,7 +4602,7 @@ public void dfn() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -4624,7 +4632,7 @@ public void dfn() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -4918,7 +4926,7 @@ public void dl() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -4948,7 +4956,7 @@ public void dl() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -5168,7 +5176,7 @@ public void embed() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -5198,7 +5206,7 @@ public void embed() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -5425,7 +5433,7 @@ public void fieldset() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -5455,7 +5463,7 @@ public void fieldset() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -5652,7 +5660,7 @@ public void figcaption() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -5682,7 +5690,7 @@ public void figcaption() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -5946,7 +5954,7 @@ public void formData() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -5976,7 +5984,7 @@ public void formData() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -6256,7 +6264,7 @@ public void head() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -6286,7 +6294,7 @@ public void head() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -6836,7 +6844,7 @@ public void isindex() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -6866,7 +6874,7 @@ public void isindex() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -7064,7 +7072,7 @@ public void i() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -7094,7 +7102,7 @@ public void i() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -7317,7 +7325,7 @@ public void label() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -7347,7 +7355,7 @@ public void label() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -7521,7 +7529,7 @@ public void link() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -7551,7 +7559,7 @@ public void link() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -7762,7 +7770,7 @@ public void map() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -7792,7 +7800,7 @@ public void map() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -8093,7 +8101,7 @@ public void multicol() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -8123,7 +8131,7 @@ public void multicol() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -8334,7 +8342,7 @@ public void nextid() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -8364,7 +8372,7 @@ public void nextid() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -8561,7 +8569,7 @@ public void nobr() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -8591,7 +8599,7 @@ public void nobr() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -8788,7 +8796,7 @@ public void noembed() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -8818,7 +8826,7 @@ public void noembed() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -9015,7 +9023,7 @@ public void noframes() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -9045,7 +9053,7 @@ public void noframes() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -9141,7 +9149,7 @@ public void nolayer() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -9171,7 +9179,7 @@ public void nolayer() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -9564,7 +9572,7 @@ public void performance() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -9594,7 +9602,7 @@ public void performance() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -9823,7 +9831,7 @@ public void progress() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -9853,7 +9861,7 @@ public void progress() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -10062,7 +10070,7 @@ public void rbc() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -10092,7 +10100,7 @@ public void rbc() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -10287,7 +10295,7 @@ public void rp() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -10317,7 +10325,7 @@ public void rp() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -10513,7 +10521,7 @@ public void rt() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -10543,7 +10551,7 @@ public void rt() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -10738,7 +10746,7 @@ public void rtc() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -10768,7 +10776,7 @@ public void rtc() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -10963,7 +10971,7 @@ public void ruby() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -10993,7 +11001,7 @@ public void ruby() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -11180,7 +11188,7 @@ public void s() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -11210,7 +11218,7 @@ public void s() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -11425,7 +11433,7 @@ public void script() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -11455,7 +11463,7 @@ public void script() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -11716,7 +11724,7 @@ public void optionsCollection() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -11746,7 +11754,7 @@ public void optionsCollection() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -11975,7 +11983,7 @@ public void span() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -12005,7 +12013,7 @@ public void span() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -12203,7 +12211,7 @@ public void strike() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -12233,7 +12241,7 @@ public void strike() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -12448,7 +12456,7 @@ public void style() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -12478,7 +12486,7 @@ public void style() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -12675,7 +12683,7 @@ public void sub() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -12705,7 +12713,7 @@ public void sub() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -12903,7 +12911,7 @@ public void summary() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -12933,7 +12941,7 @@ public void summary() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -13438,7 +13446,7 @@ public void thead() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -13468,7 +13476,7 @@ public void thead() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -13719,7 +13727,7 @@ public void track() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -13749,7 +13757,7 @@ public void track() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -13965,7 +13973,7 @@ public void ul() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -13995,7 +14003,7 @@ public void ul() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -14226,7 +14234,7 @@ public void video() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -14256,7 +14264,7 @@ public void video() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],"
+ "oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
- + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncommand[GSCE],oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
@@ -15216,7 +15224,7 @@ public void slot() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforecopy[GSCE],onbeforecut[GSCE],onbeforeinput[GSCE],onbeforematch[GSCE],onbeforepaste[GSCE],"
+ "onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],oncancel[GSCE],oncanplay[GSCE],"
- + "oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
+ + "oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],oncommand[GSCE],"
+ "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
@@ -15270,7 +15278,7 @@ public void slot() throws Exception {
+ "onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],onauxclick[GSCE],"
+ "onbeforecopy[GSCE],onbeforecut[GSCE],onbeforeinput[GSCE],onbeforematch[GSCE],onbeforepaste[GSCE],"
+ "onbeforetoggle[GSCE],onbeforexrselect[GSCE],onblur[GSCE],oncancel[GSCE],oncanplay[GSCE],"
- + "oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],"
+ + "oncanplaythrough[GSCE],onchange[GSCE],onclick[GSCE],onclose[GSCE],oncommand[GSCE],"
+ "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
@@ -15455,51 +15463,51 @@ public void xmlDocument() throws Exception {
+ "nonce[GSCE],onabort[GSCE],onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],"
+ "onauxclick[GSCE],onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],"
+ "onbeforexrselect[GSCE],onblur[GSCE],oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],"
- + "onchange[GSCE],onclick[GSCE],onclose[GSCE],oncontentvisibilityautostatechange[GSCE],"
- + "oncontextlost[GSCE],oncontextmenu[GSCE],oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],"
- + "oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],"
- + "ondragover[GSCE],ondragstart[GSCE],ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],"
- + "onended[GSCE],onerror[GSCE],onfocus[GSCE],onformdata[GSCE],ongotpointercapture[GSCE],"
- + "oninput[GSCE],oninvalid[GSCE],onkeydown[GSCE],onkeypress[GSCE],onkeyup[GSCE],onload[GSCE],"
- + "onloadeddata[GSCE],onloadedmetadata[GSCE],onloadstart[GSCE],onlostpointercapture[GSCE],"
- + "onmousedown[GSCE],onmouseenter[GSCE],onmouseleave[GSCE],onmousemove[GSCE],onmouseout[GSCE],"
- + "onmouseover[GSCE],onmouseup[GSCE],onmousewheel[GSCE],onpaste[GSCE],onpause[GSCE],onplay[GSCE],"
- + "onplaying[GSCE],onpointercancel[GSCE],onpointerdown[GSCE],onpointerenter[GSCE],"
- + "onpointerleave[GSCE],onpointermove[GSCE],onpointerout[GSCE],onpointerover[GSCE],"
- + "onpointerrawupdate[GSCE],onpointerup[GSCE],onprogress[GSCE],onratechange[GSCE],onreset[GSCE],"
- + "onresize[GSCE],onscroll[GSCE],onscrollend[GSCE],onscrollsnapchange[GSCE],"
- + "onscrollsnapchanging[GSCE],onsecuritypolicyviolation[GSCE],onseeked[GSCE],onseeking[GSCE],"
- + "onselect[GSCE],onselectionchange[GSCE],onselectstart[GSCE],onslotchange[GSCE],onstalled[GSCE],"
- + "onsubmit[GSCE],onsuspend[GSCE],ontimeupdate[GSCE],ontoggle[GSCE],ontransitioncancel[GSCE],"
- + "ontransitionend[GSCE],ontransitionrun[GSCE],ontransitionstart[GSCE],onvolumechange[GSCE],"
- + "onwaiting[GSCE],onwebkitanimationend[GSCE],onwebkitanimationiteration[GSCE],"
- + "onwebkitanimationstart[GSCE],onwebkittransitionend[GSCE],onwheel[GSCE],ownerSVGElement[GCE],"
- + "style[GSCE],tabIndex[GSCE],"
+ + "onchange[GSCE],onclick[GSCE],onclose[GSCE],oncommand[GSCE],"
+ + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ + "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ + "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
+ + "onformdata[GSCE],ongotpointercapture[GSCE],oninput[GSCE],oninvalid[GSCE],onkeydown[GSCE],"
+ + "onkeypress[GSCE],onkeyup[GSCE],onload[GSCE],onloadeddata[GSCE],onloadedmetadata[GSCE],"
+ + "onloadstart[GSCE],onlostpointercapture[GSCE],onmousedown[GSCE],onmouseenter[GSCE],"
+ + "onmouseleave[GSCE],onmousemove[GSCE],onmouseout[GSCE],onmouseover[GSCE],onmouseup[GSCE],"
+ + "onmousewheel[GSCE],onpaste[GSCE],onpause[GSCE],onplay[GSCE],onplaying[GSCE],"
+ + "onpointercancel[GSCE],onpointerdown[GSCE],onpointerenter[GSCE],onpointerleave[GSCE],"
+ + "onpointermove[GSCE],onpointerout[GSCE],onpointerover[GSCE],onpointerrawupdate[GSCE],"
+ + "onpointerup[GSCE],onprogress[GSCE],onratechange[GSCE],onreset[GSCE],onresize[GSCE],"
+ + "onscroll[GSCE],onscrollend[GSCE],onscrollsnapchange[GSCE],onscrollsnapchanging[GSCE],"
+ + "onsecuritypolicyviolation[GSCE],onseeked[GSCE],onseeking[GSCE],onselect[GSCE],"
+ + "onselectionchange[GSCE],onselectstart[GSCE],onslotchange[GSCE],onstalled[GSCE],onsubmit[GSCE],"
+ + "onsuspend[GSCE],ontimeupdate[GSCE],ontoggle[GSCE],ontransitioncancel[GSCE],ontransitionend[GSCE],"
+ + "ontransitionrun[GSCE],ontransitionstart[GSCE],onvolumechange[GSCE],onwaiting[GSCE],"
+ + "onwebkitanimationend[GSCE],onwebkitanimationiteration[GSCE],onwebkitanimationstart[GSCE],"
+ + "onwebkittransitionend[GSCE],onwheel[GSCE],ownerSVGElement[GCE],style[GSCE],tabIndex[GSCE],"
+ "viewportElement[GCE]",
EDGE = "attributeStyleMap[GCE],autofocus[GSCE],blur(),className[GCE],constructor(),dataset[GCE],focus(),"
+ "nonce[GSCE],onabort[GSCE],onanimationend[GSCE],onanimationiteration[GSCE],onanimationstart[GSCE],"
+ "onauxclick[GSCE],onbeforeinput[GSCE],onbeforematch[GSCE],onbeforetoggle[GSCE],"
+ "onbeforexrselect[GSCE],onblur[GSCE],oncancel[GSCE],oncanplay[GSCE],oncanplaythrough[GSCE],"
- + "onchange[GSCE],onclick[GSCE],onclose[GSCE],oncontentvisibilityautostatechange[GSCE],"
- + "oncontextlost[GSCE],oncontextmenu[GSCE],oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],"
- + "oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],"
- + "ondragover[GSCE],ondragstart[GSCE],ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],"
- + "onended[GSCE],onerror[GSCE],onfocus[GSCE],onformdata[GSCE],ongotpointercapture[GSCE],"
- + "oninput[GSCE],oninvalid[GSCE],onkeydown[GSCE],onkeypress[GSCE],onkeyup[GSCE],onload[GSCE],"
- + "onloadeddata[GSCE],onloadedmetadata[GSCE],onloadstart[GSCE],onlostpointercapture[GSCE],"
- + "onmousedown[GSCE],onmouseenter[GSCE],onmouseleave[GSCE],onmousemove[GSCE],onmouseout[GSCE],"
- + "onmouseover[GSCE],onmouseup[GSCE],onmousewheel[GSCE],onpaste[GSCE],onpause[GSCE],onplay[GSCE],"
- + "onplaying[GSCE],onpointercancel[GSCE],onpointerdown[GSCE],onpointerenter[GSCE],"
- + "onpointerleave[GSCE],onpointermove[GSCE],onpointerout[GSCE],onpointerover[GSCE],"
- + "onpointerrawupdate[GSCE],onpointerup[GSCE],onprogress[GSCE],onratechange[GSCE],onreset[GSCE],"
- + "onresize[GSCE],onscroll[GSCE],onscrollend[GSCE],onscrollsnapchange[GSCE],"
- + "onscrollsnapchanging[GSCE],onsecuritypolicyviolation[GSCE],onseeked[GSCE],onseeking[GSCE],"
- + "onselect[GSCE],onselectionchange[GSCE],onselectstart[GSCE],onslotchange[GSCE],onstalled[GSCE],"
- + "onsubmit[GSCE],onsuspend[GSCE],ontimeupdate[GSCE],ontoggle[GSCE],ontransitioncancel[GSCE],"
- + "ontransitionend[GSCE],ontransitionrun[GSCE],ontransitionstart[GSCE],onvolumechange[GSCE],"
- + "onwaiting[GSCE],onwebkitanimationend[GSCE],onwebkitanimationiteration[GSCE],"
- + "onwebkitanimationstart[GSCE],onwebkittransitionend[GSCE],onwheel[GSCE],ownerSVGElement[GCE],"
- + "style[GSCE],tabIndex[GSCE],"
+ + "onchange[GSCE],onclick[GSCE],onclose[GSCE],oncommand[GSCE],"
+ + "oncontentvisibilityautostatechange[GSCE],oncontextlost[GSCE],oncontextmenu[GSCE],"
+ + "oncontextrestored[GSCE],oncopy[GSCE],oncuechange[GSCE],oncut[GSCE],ondblclick[GSCE],ondrag[GSCE],"
+ + "ondragend[GSCE],ondragenter[GSCE],ondragleave[GSCE],ondragover[GSCE],ondragstart[GSCE],"
+ + "ondrop[GSCE],ondurationchange[GSCE],onemptied[GSCE],onended[GSCE],onerror[GSCE],onfocus[GSCE],"
+ + "onformdata[GSCE],ongotpointercapture[GSCE],oninput[GSCE],oninvalid[GSCE],onkeydown[GSCE],"
+ + "onkeypress[GSCE],onkeyup[GSCE],onload[GSCE],onloadeddata[GSCE],onloadedmetadata[GSCE],"
+ + "onloadstart[GSCE],onlostpointercapture[GSCE],onmousedown[GSCE],onmouseenter[GSCE],"
+ + "onmouseleave[GSCE],onmousemove[GSCE],onmouseout[GSCE],onmouseover[GSCE],onmouseup[GSCE],"
+ + "onmousewheel[GSCE],onpaste[GSCE],onpause[GSCE],onplay[GSCE],onplaying[GSCE],"
+ + "onpointercancel[GSCE],onpointerdown[GSCE],onpointerenter[GSCE],onpointerleave[GSCE],"
+ + "onpointermove[GSCE],onpointerout[GSCE],onpointerover[GSCE],onpointerrawupdate[GSCE],"
+ + "onpointerup[GSCE],onprogress[GSCE],onratechange[GSCE],onreset[GSCE],onresize[GSCE],"
+ + "onscroll[GSCE],onscrollend[GSCE],onscrollsnapchange[GSCE],onscrollsnapchanging[GSCE],"
+ + "onsecuritypolicyviolation[GSCE],onseeked[GSCE],onseeking[GSCE],onselect[GSCE],"
+ + "onselectionchange[GSCE],onselectstart[GSCE],onslotchange[GSCE],onstalled[GSCE],onsubmit[GSCE],"
+ + "onsuspend[GSCE],ontimeupdate[GSCE],ontoggle[GSCE],ontransitioncancel[GSCE],ontransitionend[GSCE],"
+ + "ontransitionrun[GSCE],ontransitionstart[GSCE],onvolumechange[GSCE],onwaiting[GSCE],"
+ + "onwebkitanimationend[GSCE],onwebkitanimationiteration[GSCE],onwebkitanimationstart[GSCE],"
+ + "onwebkittransitionend[GSCE],onwheel[GSCE],ownerSVGElement[GCE],style[GSCE],tabIndex[GSCE],"
+ "viewportElement[GCE]",
FF = "autofocus[GSCE],blur(),className[GCE],constructor(),dataset[GCE],focus(),id[GSCE],nonce[GSCE],"
+ "onabort[GSCE],onanimationcancel[GSCE],onanimationend[GSCE],onanimationiteration[GSCE],"
@@ -16286,33 +16294,33 @@ public void nodeListButtonLabels() throws Exception {
+ "gridAutoRows[GSCE],gridColumn[GSCE],gridColumnEnd[GSCE],gridColumnGap[GSCE],"
+ "gridColumnStart[GSCE],gridGap[GSCE],gridRow[GSCE],gridRowEnd[GSCE],gridRowGap[GSCE],"
+ "gridRowStart[GSCE],gridTemplate[GSCE],gridTemplateAreas[GSCE],gridTemplateColumns[GSCE],"
- + "gridTemplateRows[GSCE],height[GSCE],hyphenate-character[GSCE],hyphenateCharacter[GSCE],"
- + "hyphens[GSCE],image-orientation[GSCE],image-rendering[GSCE],imageOrientation[GSCE],"
- + "imageRendering[GSCE],ime-mode[GSCE],imeMode[GSCE],inline-size[GSCE],inlineSize[GSCE],"
- + "inset-block-end[GSCE],inset-block-start[GSCE],inset-block[GSCE],inset-inline-end[GSCE],"
- + "inset-inline-start[GSCE],inset-inline[GSCE],inset[GSCE],insetBlock[GSCE],insetBlockEnd[GSCE],"
- + "insetBlockStart[GSCE],insetInline[GSCE],insetInlineEnd[GSCE],insetInlineStart[GSCE],"
- + "isolation[GSCE],justify-content[GSCE],justify-items[GSCE],justify-self[GSCE],"
- + "justifyContent[GSCE],justifyItems[GSCE],justifySelf[GSCE],left[GSCE],letter-spacing[GSCE],"
- + "letterSpacing[GSCE],lighting-color[GSCE],lightingColor[GSCE],line-break[GSCE],line-height[GSCE],"
- + "lineBreak[GSCE],lineHeight[GSCE],list-style-image[GSCE],list-style-position[GSCE],"
- + "list-style-type[GSCE],list-style[GSCE],listStyle[GSCE],listStyleImage[GSCE],"
- + "listStylePosition[GSCE],listStyleType[GSCE],margin-block-end[GSCE],margin-block-start[GSCE],"
- + "margin-block[GSCE],margin-bottom[GSCE],margin-inline-end[GSCE],margin-inline-start[GSCE],"
- + "margin-inline[GSCE],margin-left[GSCE],margin-right[GSCE],margin-top[GSCE],margin[GSCE],"
- + "marginBlock[GSCE],marginBlockEnd[GSCE],marginBlockStart[GSCE],marginBottom[GSCE],"
- + "marginInline[GSCE],marginInlineEnd[GSCE],marginInlineStart[GSCE],marginLeft[GSCE],"
- + "marginRight[GSCE],marginTop[GSCE],marker-end[GSCE],marker-mid[GSCE],marker-start[GSCE],"
- + "marker[GSCE],markerEnd[GSCE],markerMid[GSCE],markerStart[GSCE],mask-clip[GSCE],"
- + "mask-composite[GSCE],mask-image[GSCE],mask-mode[GSCE],mask-origin[GSCE],mask-position-x[GSCE],"
- + "mask-position-y[GSCE],mask-position[GSCE],mask-repeat[GSCE],mask-size[GSCE],mask-type[GSCE],"
- + "mask[GSCE],maskClip[GSCE],maskComposite[GSCE],maskImage[GSCE],maskMode[GSCE],maskOrigin[GSCE],"
- + "maskPosition[GSCE],maskPositionX[GSCE],maskPositionY[GSCE],maskRepeat[GSCE],maskSize[GSCE],"
- + "maskType[GSCE],math-depth[GSCE],math-style[GSCE],mathDepth[GSCE],mathStyle[GSCE],"
- + "max-block-size[GSCE],max-height[GSCE],max-inline-size[GSCE],max-width[GSCE],maxBlockSize[GSCE],"
- + "maxHeight[GSCE],maxInlineSize[GSCE],maxWidth[GSCE],min-block-size[GSCE],min-height[GSCE],"
- + "min-inline-size[GSCE],min-width[GSCE],minBlockSize[GSCE],minHeight[GSCE],minInlineSize[GSCE],"
- + "minWidth[GSCE],mix-blend-mode[GSCE],mixBlendMode[GSCE],MozAnimation[GSCE],"
+ + "gridTemplateRows[GSCE],height[GSCE],hyphenate-character[GSCE],hyphenate-limit-chars[GSCE],"
+ + "hyphenateCharacter[GSCE],hyphenateLimitChars[GSCE],hyphens[GSCE],image-orientation[GSCE],"
+ + "image-rendering[GSCE],imageOrientation[GSCE],imageRendering[GSCE],ime-mode[GSCE],imeMode[GSCE],"
+ + "inline-size[GSCE],inlineSize[GSCE],inset-block-end[GSCE],inset-block-start[GSCE],"
+ + "inset-block[GSCE],inset-inline-end[GSCE],inset-inline-start[GSCE],inset-inline[GSCE],inset[GSCE],"
+ + "insetBlock[GSCE],insetBlockEnd[GSCE],insetBlockStart[GSCE],insetInline[GSCE],"
+ + "insetInlineEnd[GSCE],insetInlineStart[GSCE],isolation[GSCE],justify-content[GSCE],"
+ + "justify-items[GSCE],justify-self[GSCE],justifyContent[GSCE],justifyItems[GSCE],justifySelf[GSCE],"
+ + "left[GSCE],letter-spacing[GSCE],letterSpacing[GSCE],lighting-color[GSCE],lightingColor[GSCE],"
+ + "line-break[GSCE],line-height[GSCE],lineBreak[GSCE],lineHeight[GSCE],list-style-image[GSCE],"
+ + "list-style-position[GSCE],list-style-type[GSCE],list-style[GSCE],listStyle[GSCE],"
+ + "listStyleImage[GSCE],listStylePosition[GSCE],listStyleType[GSCE],margin-block-end[GSCE],"
+ + "margin-block-start[GSCE],margin-block[GSCE],margin-bottom[GSCE],margin-inline-end[GSCE],"
+ + "margin-inline-start[GSCE],margin-inline[GSCE],margin-left[GSCE],margin-right[GSCE],"
+ + "margin-top[GSCE],margin[GSCE],marginBlock[GSCE],marginBlockEnd[GSCE],marginBlockStart[GSCE],"
+ + "marginBottom[GSCE],marginInline[GSCE],marginInlineEnd[GSCE],marginInlineStart[GSCE],"
+ + "marginLeft[GSCE],marginRight[GSCE],marginTop[GSCE],marker-end[GSCE],marker-mid[GSCE],"
+ + "marker-start[GSCE],marker[GSCE],markerEnd[GSCE],markerMid[GSCE],markerStart[GSCE],"
+ + "mask-clip[GSCE],mask-composite[GSCE],mask-image[GSCE],mask-mode[GSCE],mask-origin[GSCE],"
+ + "mask-position-x[GSCE],mask-position-y[GSCE],mask-position[GSCE],mask-repeat[GSCE],"
+ + "mask-size[GSCE],mask-type[GSCE],mask[GSCE],maskClip[GSCE],maskComposite[GSCE],maskImage[GSCE],"
+ + "maskMode[GSCE],maskOrigin[GSCE],maskPosition[GSCE],maskPositionX[GSCE],maskPositionY[GSCE],"
+ + "maskRepeat[GSCE],maskSize[GSCE],maskType[GSCE],math-depth[GSCE],math-style[GSCE],mathDepth[GSCE],"
+ + "mathStyle[GSCE],max-block-size[GSCE],max-height[GSCE],max-inline-size[GSCE],max-width[GSCE],"
+ + "maxBlockSize[GSCE],maxHeight[GSCE],maxInlineSize[GSCE],maxWidth[GSCE],min-block-size[GSCE],"
+ + "min-height[GSCE],min-inline-size[GSCE],min-width[GSCE],minBlockSize[GSCE],minHeight[GSCE],"
+ + "minInlineSize[GSCE],minWidth[GSCE],mix-blend-mode[GSCE],mixBlendMode[GSCE],MozAnimation[GSCE],"
+ "MozAnimationDelay[GSCE],MozAnimationDirection[GSCE],MozAnimationDuration[GSCE],"
+ "MozAnimationFillMode[GSCE],MozAnimationIterationCount[GSCE],MozAnimationName[GSCE],"
+ "MozAnimationPlayState[GSCE],MozAnimationTimingFunction[GSCE],MozAppearance[GSCE],"
@@ -16919,33 +16927,33 @@ public void computedStyle() throws Exception {
+ "gridAutoRows[GSCE],gridColumn[GSCE],gridColumnEnd[GSCE],gridColumnGap[GSCE],"
+ "gridColumnStart[GSCE],gridGap[GSCE],gridRow[GSCE],gridRowEnd[GSCE],gridRowGap[GSCE],"
+ "gridRowStart[GSCE],gridTemplate[GSCE],gridTemplateAreas[GSCE],gridTemplateColumns[GSCE],"
- + "gridTemplateRows[GSCE],height[GSCE],hyphenate-character[GSCE],hyphenateCharacter[GSCE],"
- + "hyphens[GSCE],image-orientation[GSCE],image-rendering[GSCE],imageOrientation[GSCE],"
- + "imageRendering[GSCE],ime-mode[GSCE],imeMode[GSCE],inline-size[GSCE],inlineSize[GSCE],"
- + "inset-block-end[GSCE],inset-block-start[GSCE],inset-block[GSCE],inset-inline-end[GSCE],"
- + "inset-inline-start[GSCE],inset-inline[GSCE],inset[GSCE],insetBlock[GSCE],insetBlockEnd[GSCE],"
- + "insetBlockStart[GSCE],insetInline[GSCE],insetInlineEnd[GSCE],insetInlineStart[GSCE],"
- + "isolation[GSCE],justify-content[GSCE],justify-items[GSCE],justify-self[GSCE],"
- + "justifyContent[GSCE],justifyItems[GSCE],justifySelf[GSCE],left[GSCE],letter-spacing[GSCE],"
- + "letterSpacing[GSCE],lighting-color[GSCE],lightingColor[GSCE],line-break[GSCE],line-height[GSCE],"
- + "lineBreak[GSCE],lineHeight[GSCE],list-style-image[GSCE],list-style-position[GSCE],"
- + "list-style-type[GSCE],list-style[GSCE],listStyle[GSCE],listStyleImage[GSCE],"
- + "listStylePosition[GSCE],listStyleType[GSCE],margin-block-end[GSCE],margin-block-start[GSCE],"
- + "margin-block[GSCE],margin-bottom[GSCE],margin-inline-end[GSCE],margin-inline-start[GSCE],"
- + "margin-inline[GSCE],margin-left[GSCE],margin-right[GSCE],margin-top[GSCE],margin[GSCE],"
- + "marginBlock[GSCE],marginBlockEnd[GSCE],marginBlockStart[GSCE],marginBottom[GSCE],"
- + "marginInline[GSCE],marginInlineEnd[GSCE],marginInlineStart[GSCE],marginLeft[GSCE],"
- + "marginRight[GSCE],marginTop[GSCE],marker-end[GSCE],marker-mid[GSCE],marker-start[GSCE],"
- + "marker[GSCE],markerEnd[GSCE],markerMid[GSCE],markerStart[GSCE],mask-clip[GSCE],"
- + "mask-composite[GSCE],mask-image[GSCE],mask-mode[GSCE],mask-origin[GSCE],mask-position-x[GSCE],"
- + "mask-position-y[GSCE],mask-position[GSCE],mask-repeat[GSCE],mask-size[GSCE],mask-type[GSCE],"
- + "mask[GSCE],maskClip[GSCE],maskComposite[GSCE],maskImage[GSCE],maskMode[GSCE],maskOrigin[GSCE],"
- + "maskPosition[GSCE],maskPositionX[GSCE],maskPositionY[GSCE],maskRepeat[GSCE],maskSize[GSCE],"
- + "maskType[GSCE],math-depth[GSCE],math-style[GSCE],mathDepth[GSCE],mathStyle[GSCE],"
- + "max-block-size[GSCE],max-height[GSCE],max-inline-size[GSCE],max-width[GSCE],maxBlockSize[GSCE],"
- + "maxHeight[GSCE],maxInlineSize[GSCE],maxWidth[GSCE],min-block-size[GSCE],min-height[GSCE],"
- + "min-inline-size[GSCE],min-width[GSCE],minBlockSize[GSCE],minHeight[GSCE],minInlineSize[GSCE],"
- + "minWidth[GSCE],mix-blend-mode[GSCE],mixBlendMode[GSCE],MozAnimation[GSCE],"
+ + "gridTemplateRows[GSCE],height[GSCE],hyphenate-character[GSCE],hyphenate-limit-chars[GSCE],"
+ + "hyphenateCharacter[GSCE],hyphenateLimitChars[GSCE],hyphens[GSCE],image-orientation[GSCE],"
+ + "image-rendering[GSCE],imageOrientation[GSCE],imageRendering[GSCE],ime-mode[GSCE],imeMode[GSCE],"
+ + "inline-size[GSCE],inlineSize[GSCE],inset-block-end[GSCE],inset-block-start[GSCE],"
+ + "inset-block[GSCE],inset-inline-end[GSCE],inset-inline-start[GSCE],inset-inline[GSCE],inset[GSCE],"
+ + "insetBlock[GSCE],insetBlockEnd[GSCE],insetBlockStart[GSCE],insetInline[GSCE],"
+ + "insetInlineEnd[GSCE],insetInlineStart[GSCE],isolation[GSCE],justify-content[GSCE],"
+ + "justify-items[GSCE],justify-self[GSCE],justifyContent[GSCE],justifyItems[GSCE],justifySelf[GSCE],"
+ + "left[GSCE],letter-spacing[GSCE],letterSpacing[GSCE],lighting-color[GSCE],lightingColor[GSCE],"
+ + "line-break[GSCE],line-height[GSCE],lineBreak[GSCE],lineHeight[GSCE],list-style-image[GSCE],"
+ + "list-style-position[GSCE],list-style-type[GSCE],list-style[GSCE],listStyle[GSCE],"
+ + "listStyleImage[GSCE],listStylePosition[GSCE],listStyleType[GSCE],margin-block-end[GSCE],"
+ + "margin-block-start[GSCE],margin-block[GSCE],margin-bottom[GSCE],margin-inline-end[GSCE],"
+ + "margin-inline-start[GSCE],margin-inline[GSCE],margin-left[GSCE],margin-right[GSCE],"
+ + "margin-top[GSCE],margin[GSCE],marginBlock[GSCE],marginBlockEnd[GSCE],marginBlockStart[GSCE],"
+ + "marginBottom[GSCE],marginInline[GSCE],marginInlineEnd[GSCE],marginInlineStart[GSCE],"
+ + "marginLeft[GSCE],marginRight[GSCE],marginTop[GSCE],marker-end[GSCE],marker-mid[GSCE],"
+ + "marker-start[GSCE],marker[GSCE],markerEnd[GSCE],markerMid[GSCE],markerStart[GSCE],"
+ + "mask-clip[GSCE],mask-composite[GSCE],mask-image[GSCE],mask-mode[GSCE],mask-origin[GSCE],"
+ + "mask-position-x[GSCE],mask-position-y[GSCE],mask-position[GSCE],mask-repeat[GSCE],"
+ + "mask-size[GSCE],mask-type[GSCE],mask[GSCE],maskClip[GSCE],maskComposite[GSCE],maskImage[GSCE],"
+ + "maskMode[GSCE],maskOrigin[GSCE],maskPosition[GSCE],maskPositionX[GSCE],maskPositionY[GSCE],"
+ + "maskRepeat[GSCE],maskSize[GSCE],maskType[GSCE],math-depth[GSCE],math-style[GSCE],mathDepth[GSCE],"
+ + "mathStyle[GSCE],max-block-size[GSCE],max-height[GSCE],max-inline-size[GSCE],max-width[GSCE],"
+ + "maxBlockSize[GSCE],maxHeight[GSCE],maxInlineSize[GSCE],maxWidth[GSCE],min-block-size[GSCE],"
+ + "min-height[GSCE],min-inline-size[GSCE],min-width[GSCE],minBlockSize[GSCE],minHeight[GSCE],"
+ + "minInlineSize[GSCE],minWidth[GSCE],mix-blend-mode[GSCE],mixBlendMode[GSCE],MozAnimation[GSCE],"
+ "MozAnimationDelay[GSCE],MozAnimationDirection[GSCE],MozAnimationDuration[GSCE],"
+ "MozAnimationFillMode[GSCE],MozAnimationIterationCount[GSCE],MozAnimationName[GSCE],"
+ "MozAnimationPlayState[GSCE],MozAnimationTimingFunction[GSCE],MozAppearance[GSCE],"
diff --git a/src/test/java/org/htmlunit/general/ElementPropertiesTest.java b/src/test/java/org/htmlunit/general/ElementPropertiesTest.java
index 709b39e063d..2a6d239b9d5 100644
--- a/src/test/java/org/htmlunit/general/ElementPropertiesTest.java
+++ b/src/test/java/org/htmlunit/general/ElementPropertiesTest.java
@@ -473,40 +473,42 @@ public void unknown() throws Exception {
+ "inert,innerText,inputMode,isContentEditable,lang,nonce,offsetHeight,offsetLeft,offsetParent,"
+ "offsetTop,offsetWidth,onabort,onanimationend,onanimationiteration,onanimationstart,onauxclick,"
+ "onbeforeinput,onbeforematch,onbeforetoggle,onbeforexrselect,onblur,oncancel,oncanplay,"
- + "oncanplaythrough,onchange,onclick,onclose,oncontentvisibilityautostatechange,oncontextlost,"
- + "oncontextmenu,oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,"
- + "ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,"
- + "onformdata,ongotpointercapture,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onload,"
- + "onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,onmousedown,onmouseenter,"
- + "onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpaste,onpause,onplay,"
- + "onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,onpointermove,onpointerout,"
- + "onpointerover,onpointerrawupdate,onpointerup,onprogress,onratechange,onreset,onresize,onscroll,"
- + "onscrollend,onscrollsnapchange,onscrollsnapchanging,onsecuritypolicyviolation,onseeked,onseeking,"
- + "onselect,onselectionchange,onselectstart,onslotchange,onstalled,onsubmit,onsuspend,ontimeupdate,"
- + "ontoggle,ontransitioncancel,ontransitionend,ontransitionrun,ontransitionstart,onvolumechange,"
- + "onwaiting,onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,"
- + "onwebkittransitionend,onwheel,outerText,popover,showPopover(),spellcheck,style,tabIndex,title,"
- + "togglePopover(),translate,virtualKeyboardPolicy,"
+ + "oncanplaythrough,onchange,onclick,onclose,oncommand,oncontentvisibilityautostatechange,"
+ + "oncontextlost,oncontextmenu,oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,"
+ + "ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,"
+ + "onended,onerror,onfocus,onformdata,ongotpointercapture,oninput,oninvalid,onkeydown,onkeypress,"
+ + "onkeyup,onload,onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,onmousedown,"
+ + "onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpaste,"
+ + "onpause,onplay,onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,"
+ + "onpointermove,onpointerout,onpointerover,onpointerrawupdate,onpointerup,onprogress,onratechange,"
+ + "onreset,onresize,onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,"
+ + "onsecuritypolicyviolation,onseeked,onseeking,onselect,onselectionchange,onselectstart,"
+ + "onslotchange,onstalled,onsubmit,onsuspend,ontimeupdate,ontoggle,ontransitioncancel,"
+ + "ontransitionend,ontransitionrun,ontransitionstart,onvolumechange,onwaiting,onwebkitanimationend,"
+ + "onwebkitanimationiteration,onwebkitanimationstart,onwebkittransitionend,onwheel,outerText,"
+ + "popover,showPopover(),spellcheck,style,tabIndex,title,togglePopover(),translate,"
+ + "virtualKeyboardPolicy,"
+ "writingSuggestions",
EDGE = "accessKey,attachInternals(),attributeStyleMap,autocapitalize,autofocus,blur(),click(),"
+ "contentEditable,dataset,dir,draggable,editContext,enterKeyHint,focus(),hidden,hidePopover(),"
+ "inert,innerText,inputMode,isContentEditable,lang,nonce,offsetHeight,offsetLeft,offsetParent,"
+ "offsetTop,offsetWidth,onabort,onanimationend,onanimationiteration,onanimationstart,onauxclick,"
+ "onbeforeinput,onbeforematch,onbeforetoggle,onbeforexrselect,onblur,oncancel,oncanplay,"
- + "oncanplaythrough,onchange,onclick,onclose,oncontentvisibilityautostatechange,oncontextlost,"
- + "oncontextmenu,oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,"
- + "ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,"
- + "onformdata,ongotpointercapture,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onload,"
- + "onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,onmousedown,onmouseenter,"
- + "onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpaste,onpause,onplay,"
- + "onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,onpointermove,onpointerout,"
- + "onpointerover,onpointerrawupdate,onpointerup,onprogress,onratechange,onreset,onresize,onscroll,"
- + "onscrollend,onscrollsnapchange,onscrollsnapchanging,onsecuritypolicyviolation,onseeked,onseeking,"
- + "onselect,onselectionchange,onselectstart,onslotchange,onstalled,onsubmit,onsuspend,ontimeupdate,"
- + "ontoggle,ontransitioncancel,ontransitionend,ontransitionrun,ontransitionstart,onvolumechange,"
- + "onwaiting,onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,"
- + "onwebkittransitionend,onwheel,outerText,popover,showPopover(),spellcheck,style,tabIndex,title,"
- + "togglePopover(),translate,virtualKeyboardPolicy,"
+ + "oncanplaythrough,onchange,onclick,onclose,oncommand,oncontentvisibilityautostatechange,"
+ + "oncontextlost,oncontextmenu,oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,"
+ + "ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,"
+ + "onended,onerror,onfocus,onformdata,ongotpointercapture,oninput,oninvalid,onkeydown,onkeypress,"
+ + "onkeyup,onload,onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,onmousedown,"
+ + "onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpaste,"
+ + "onpause,onplay,onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,"
+ + "onpointermove,onpointerout,onpointerover,onpointerrawupdate,onpointerup,onprogress,onratechange,"
+ + "onreset,onresize,onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,"
+ + "onsecuritypolicyviolation,onseeked,onseeking,onselect,onselectionchange,onselectstart,"
+ + "onslotchange,onstalled,onsubmit,onsuspend,ontimeupdate,ontoggle,ontransitioncancel,"
+ + "ontransitionend,ontransitionrun,ontransitionstart,onvolumechange,onwaiting,onwebkitanimationend,"
+ + "onwebkitanimationiteration,onwebkitanimationstart,onwebkittransitionend,onwheel,outerText,"
+ + "popover,showPopover(),spellcheck,style,tabIndex,title,togglePopover(),translate,"
+ + "virtualKeyboardPolicy,"
+ "writingSuggestions",
FF = "accessKey,accessKeyLabel,attachInternals(),autocapitalize,autocorrect,autofocus,blur(),click(),"
+ "contentEditable,dataset,dir,draggable,enterKeyHint,focus(),hidden,hidePopover(),inert,innerText,"
@@ -627,51 +629,55 @@ public void htmlElement() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "animate(),append(),ariaAtomic,ariaAutoComplete,ariaBrailleLabel,ariaBrailleRoleDescription,"
- + "ariaBusy,ariaChecked,ariaColCount,ariaColIndex,ariaColIndexText,ariaColSpan,ariaCurrent,"
- + "ariaDescription,ariaDisabled,ariaExpanded,ariaHasPopup,ariaHidden,ariaInvalid,ariaKeyShortcuts,"
- + "ariaLabel,ariaLevel,ariaLive,ariaModal,ariaMultiLine,ariaMultiSelectable,ariaOrientation,"
- + "ariaPlaceholder,ariaPosInSet,ariaPressed,ariaReadOnly,ariaRelevant,ariaRequired,"
- + "ariaRoleDescription,ariaRowCount,ariaRowIndex,ariaRowIndexText,ariaRowSpan,ariaSelected,"
- + "ariaSetSize,ariaSort,ariaValueMax,ariaValueMin,ariaValueNow,ariaValueText,attachShadow(),"
- + "attributes,checkVisibility(),childElementCount,children,classList,className,clientHeight,"
- + "clientLeft,clientTop,clientWidth,closest(),computedStyleMap(),currentCSSZoom,elementTiming,"
- + "firstElementChild,getAnimations(),getAttribute(),getAttributeNames(),getAttributeNode(),"
- + "getAttributeNodeNS(),getAttributeNS(),getBoundingClientRect(),getClientRects(),"
- + "getElementsByClassName(),getElementsByTagName(),getElementsByTagNameNS(),getHTML(),"
- + "hasAttribute(),hasAttributeNS(),hasAttributes(),hasPointerCapture(),id,innerHTML,"
- + "insertAdjacentElement(),insertAdjacentHTML(),insertAdjacentText(),lastElementChild,localName,"
- + "matches(),moveBefore(),namespaceURI,onbeforecopy,onbeforecut,onbeforepaste,onfullscreenchange,"
- + "onfullscreenerror,onsearch,onwebkitfullscreenchange,onwebkitfullscreenerror,outerHTML,part,"
- + "prefix,prepend(),querySelector(),querySelectorAll(),releasePointerCapture(),removeAttribute(),"
- + "removeAttributeNode(),removeAttributeNS(),replaceChildren(),requestFullscreen(),"
- + "requestPointerLock(),role,scroll(),scrollBy(),scrollHeight,scrollIntoView(),"
- + "scrollIntoViewIfNeeded(),scrollLeft,scrollTo(),scrollTop,scrollWidth,setAttribute(),"
- + "setAttributeNode(),setAttributeNodeNS(),setAttributeNS(),setHTMLUnsafe(),setPointerCapture(),"
- + "shadowRoot,slot,tagName,toggleAttribute(),webkitMatchesSelector(),webkitRequestFullScreen(),"
+ @Alerts(CHROME = "animate(),append(),ariaActiveDescendantElement,ariaAtomic,ariaAutoComplete,ariaBrailleLabel,"
+ + "ariaBrailleRoleDescription,ariaBusy,ariaChecked,ariaColCount,ariaColIndex,ariaColIndexText,"
+ + "ariaColSpan,ariaControlsElements,ariaCurrent,ariaDescribedByElements,ariaDescription,"
+ + "ariaDetailsElements,ariaDisabled,ariaErrorMessageElements,ariaExpanded,ariaFlowToElements,"
+ + "ariaHasPopup,ariaHidden,ariaInvalid,ariaKeyShortcuts,ariaLabel,ariaLabelledByElements,ariaLevel,"
+ + "ariaLive,ariaModal,ariaMultiLine,ariaMultiSelectable,ariaOrientation,ariaPlaceholder,"
+ + "ariaPosInSet,ariaPressed,ariaReadOnly,ariaRelevant,ariaRequired,ariaRoleDescription,ariaRowCount,"
+ + "ariaRowIndex,ariaRowIndexText,ariaRowSpan,ariaSelected,ariaSetSize,ariaSort,ariaValueMax,"
+ + "ariaValueMin,ariaValueNow,ariaValueText,attachShadow(),attributes,checkVisibility(),"
+ + "childElementCount,children,classList,className,clientHeight,clientLeft,clientTop,clientWidth,"
+ + "closest(),computedStyleMap(),currentCSSZoom,elementTiming,firstElementChild,getAnimations(),"
+ + "getAttribute(),getAttributeNames(),getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),"
+ + "getBoundingClientRect(),getClientRects(),getElementsByClassName(),getElementsByTagName(),"
+ + "getElementsByTagNameNS(),getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),"
+ + "hasPointerCapture(),id,innerHTML,insertAdjacentElement(),insertAdjacentHTML(),"
+ + "insertAdjacentText(),lastElementChild,localName,matches(),moveBefore(),namespaceURI,onbeforecopy,"
+ + "onbeforecut,onbeforepaste,onfullscreenchange,onfullscreenerror,onsearch,onwebkitfullscreenchange,"
+ + "onwebkitfullscreenerror,outerHTML,part,prefix,prepend(),querySelector(),querySelectorAll(),"
+ + "releasePointerCapture(),removeAttribute(),removeAttributeNode(),removeAttributeNS(),"
+ + "replaceChildren(),requestFullscreen(),requestPointerLock(),role,scroll(),scrollBy(),scrollHeight,"
+ + "scrollIntoView(),scrollIntoViewIfNeeded(),scrollLeft,scrollTo(),scrollTop,scrollWidth,"
+ + "setAttribute(),setAttributeNode(),setAttributeNodeNS(),setAttributeNS(),setHTMLUnsafe(),"
+ + "setPointerCapture(),shadowRoot,slot,tagName,toggleAttribute(),webkitMatchesSelector(),"
+ + "webkitRequestFullScreen(),"
+ "webkitRequestFullscreen()",
- EDGE = "animate(),append(),ariaAtomic,ariaAutoComplete,ariaBrailleLabel,ariaBrailleRoleDescription,"
- + "ariaBusy,ariaChecked,ariaColCount,ariaColIndex,ariaColIndexText,ariaColSpan,ariaCurrent,"
- + "ariaDescription,ariaDisabled,ariaExpanded,ariaHasPopup,ariaHidden,ariaInvalid,ariaKeyShortcuts,"
- + "ariaLabel,ariaLevel,ariaLive,ariaModal,ariaMultiLine,ariaMultiSelectable,ariaOrientation,"
- + "ariaPlaceholder,ariaPosInSet,ariaPressed,ariaReadOnly,ariaRelevant,ariaRequired,"
- + "ariaRoleDescription,ariaRowCount,ariaRowIndex,ariaRowIndexText,ariaRowSpan,ariaSelected,"
- + "ariaSetSize,ariaSort,ariaValueMax,ariaValueMin,ariaValueNow,ariaValueText,attachShadow(),"
- + "attributes,checkVisibility(),childElementCount,children,classList,className,clientHeight,"
- + "clientLeft,clientTop,clientWidth,closest(),computedStyleMap(),currentCSSZoom,elementTiming,"
- + "firstElementChild,getAnimations(),getAttribute(),getAttributeNames(),getAttributeNode(),"
- + "getAttributeNodeNS(),getAttributeNS(),getBoundingClientRect(),getClientRects(),"
- + "getElementsByClassName(),getElementsByTagName(),getElementsByTagNameNS(),getHTML(),"
- + "hasAttribute(),hasAttributeNS(),hasAttributes(),hasPointerCapture(),id,innerHTML,"
- + "insertAdjacentElement(),insertAdjacentHTML(),insertAdjacentText(),lastElementChild,localName,"
- + "matches(),moveBefore(),namespaceURI,onbeforecopy,onbeforecut,onbeforepaste,onfullscreenchange,"
- + "onfullscreenerror,onsearch,onwebkitfullscreenchange,onwebkitfullscreenerror,outerHTML,part,"
- + "prefix,prepend(),querySelector(),querySelectorAll(),releasePointerCapture(),removeAttribute(),"
- + "removeAttributeNode(),removeAttributeNS(),replaceChildren(),requestFullscreen(),"
- + "requestPointerLock(),role,scroll(),scrollBy(),scrollHeight,scrollIntoView(),"
- + "scrollIntoViewIfNeeded(),scrollLeft,scrollTo(),scrollTop,scrollWidth,setAttribute(),"
- + "setAttributeNode(),setAttributeNodeNS(),setAttributeNS(),setHTMLUnsafe(),setPointerCapture(),"
- + "shadowRoot,slot,tagName,toggleAttribute(),webkitMatchesSelector(),webkitRequestFullScreen(),"
+ EDGE = "animate(),append(),ariaActiveDescendantElement,ariaAtomic,ariaAutoComplete,ariaBrailleLabel,"
+ + "ariaBrailleRoleDescription,ariaBusy,ariaChecked,ariaColCount,ariaColIndex,ariaColIndexText,"
+ + "ariaColSpan,ariaControlsElements,ariaCurrent,ariaDescribedByElements,ariaDescription,"
+ + "ariaDetailsElements,ariaDisabled,ariaErrorMessageElements,ariaExpanded,ariaFlowToElements,"
+ + "ariaHasPopup,ariaHidden,ariaInvalid,ariaKeyShortcuts,ariaLabel,ariaLabelledByElements,ariaLevel,"
+ + "ariaLive,ariaModal,ariaMultiLine,ariaMultiSelectable,ariaOrientation,ariaPlaceholder,"
+ + "ariaPosInSet,ariaPressed,ariaReadOnly,ariaRelevant,ariaRequired,ariaRoleDescription,ariaRowCount,"
+ + "ariaRowIndex,ariaRowIndexText,ariaRowSpan,ariaSelected,ariaSetSize,ariaSort,ariaValueMax,"
+ + "ariaValueMin,ariaValueNow,ariaValueText,attachShadow(),attributes,checkVisibility(),"
+ + "childElementCount,children,classList,className,clientHeight,clientLeft,clientTop,clientWidth,"
+ + "closest(),computedStyleMap(),currentCSSZoom,elementTiming,firstElementChild,getAnimations(),"
+ + "getAttribute(),getAttributeNames(),getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),"
+ + "getBoundingClientRect(),getClientRects(),getElementsByClassName(),getElementsByTagName(),"
+ + "getElementsByTagNameNS(),getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),"
+ + "hasPointerCapture(),id,innerHTML,insertAdjacentElement(),insertAdjacentHTML(),"
+ + "insertAdjacentText(),lastElementChild,localName,matches(),moveBefore(),namespaceURI,onbeforecopy,"
+ + "onbeforecut,onbeforepaste,onfullscreenchange,onfullscreenerror,onsearch,onwebkitfullscreenchange,"
+ + "onwebkitfullscreenerror,outerHTML,part,prefix,prepend(),querySelector(),querySelectorAll(),"
+ + "releasePointerCapture(),removeAttribute(),removeAttributeNode(),removeAttributeNS(),"
+ + "replaceChildren(),requestFullscreen(),requestPointerLock(),role,scroll(),scrollBy(),scrollHeight,"
+ + "scrollIntoView(),scrollIntoViewIfNeeded(),scrollLeft,scrollTo(),scrollTop,scrollWidth,"
+ + "setAttribute(),setAttributeNode(),setAttributeNodeNS(),setAttributeNS(),setHTMLUnsafe(),"
+ + "setPointerCapture(),shadowRoot,slot,tagName,toggleAttribute(),webkitMatchesSelector(),"
+ + "webkitRequestFullScreen(),"
+ "webkitRequestFullscreen()",
FF = "animate(),append(),ariaActiveDescendantElement,ariaAtomic,ariaAutoComplete,ariaBrailleLabel,"
+ "ariaBrailleRoleDescription,ariaBusy,ariaChecked,ariaColCount,ariaColIndex,ariaColIndexText,"
@@ -789,19 +795,21 @@ public void element() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "after(),animate(),ariaAtomic,ariaAutoComplete,ariaBrailleLabel,ariaBrailleRoleDescription,"
- + "ariaBusy,ariaChecked,ariaColCount,ariaColIndex,ariaColIndexText,ariaColSpan,ariaCurrent,"
- + "ariaDescription,ariaDisabled,ariaExpanded,ariaHasPopup,ariaHidden,ariaInvalid,ariaKeyShortcuts,"
- + "ariaLabel,ariaLevel,ariaLive,ariaModal,ariaMultiLine,ariaMultiSelectable,ariaOrientation,"
- + "ariaPlaceholder,ariaPosInSet,ariaPressed,ariaReadOnly,ariaRelevant,ariaRequired,"
- + "ariaRoleDescription,ariaRowCount,ariaRowIndex,ariaRowIndexText,ariaRowSpan,ariaSelected,"
- + "ariaSetSize,ariaSort,ariaValueMax,ariaValueMin,ariaValueNow,ariaValueText,assignedSlot,"
- + "attachShadow(),attributes,before(),checkVisibility(),classList,className,clientHeight,clientLeft,"
- + "clientTop,clientWidth,closest(),computedStyleMap(),currentCSSZoom,elementTiming,getAnimations(),"
- + "getAttribute(),getAttributeNames(),getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),"
+ @Alerts(CHROME = "after(),animate(),ariaActiveDescendantElement,ariaAtomic,ariaAutoComplete,ariaBrailleLabel,"
+ + "ariaBrailleRoleDescription,ariaBusy,ariaChecked,ariaColCount,ariaColIndex,ariaColIndexText,"
+ + "ariaColSpan,ariaControlsElements,ariaCurrent,ariaDescribedByElements,ariaDescription,"
+ + "ariaDetailsElements,ariaDisabled,ariaErrorMessageElements,ariaExpanded,ariaFlowToElements,"
+ + "ariaHasPopup,ariaHidden,ariaInvalid,ariaKeyShortcuts,ariaLabel,ariaLabelledByElements,ariaLevel,"
+ + "ariaLive,ariaModal,ariaMultiLine,ariaMultiSelectable,ariaOrientation,ariaPlaceholder,"
+ + "ariaPosInSet,ariaPressed,ariaReadOnly,ariaRelevant,ariaRequired,ariaRoleDescription,ariaRowCount,"
+ + "ariaRowIndex,ariaRowIndexText,ariaRowSpan,ariaSelected,ariaSetSize,ariaSort,ariaValueMax,"
+ + "ariaValueMin,ariaValueNow,ariaValueText,assignedSlot,attachShadow(),attributes,before(),"
+ + "checkVisibility(),classList,className,clientHeight,clientLeft,clientTop,clientWidth,closest(),"
+ + "computedStyleMap(),currentCSSZoom,elementTiming,getAnimations(),getAttribute(),"
+ + "getAttributeNames(),getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),"
+ "getBoundingClientRect(),getClientRects(),getElementsByClassName(),getElementsByTagName(),"
- + "getElementsByTagNameNS(),getHTML(),hasAttribute(),hasAttributeNS(),"
- + "hasAttributes(),hasPointerCapture(),id,innerHTML,insertAdjacentElement(),insertAdjacentHTML(),"
+ + "getElementsByTagNameNS(),getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),"
+ + "hasPointerCapture(),id,innerHTML,insertAdjacentElement(),insertAdjacentHTML(),"
+ "insertAdjacentText(),localName,matches(),namespaceURI,nextElementSibling,onbeforecopy,"
+ "onbeforecut,onbeforepaste,onfullscreenchange,onfullscreenerror,onsearch,onwebkitfullscreenchange,"
+ "onwebkitfullscreenerror,outerHTML,part,prefix,previousElementSibling,releasePointerCapture(),"
@@ -811,19 +819,21 @@ public void element() throws Exception {
+ "setAttributeNode(),setAttributeNodeNS(),setAttributeNS(),setHTMLUnsafe(),setPointerCapture(),"
+ "shadowRoot,slot,tagName,toggleAttribute(),webkitMatchesSelector(),webkitRequestFullScreen(),"
+ "webkitRequestFullscreen()",
- EDGE = "after(),animate(),ariaAtomic,ariaAutoComplete,ariaBrailleLabel,ariaBrailleRoleDescription,"
- + "ariaBusy,ariaChecked,ariaColCount,ariaColIndex,ariaColIndexText,ariaColSpan,ariaCurrent,"
- + "ariaDescription,ariaDisabled,ariaExpanded,ariaHasPopup,ariaHidden,ariaInvalid,ariaKeyShortcuts,"
- + "ariaLabel,ariaLevel,ariaLive,ariaModal,ariaMultiLine,ariaMultiSelectable,ariaOrientation,"
- + "ariaPlaceholder,ariaPosInSet,ariaPressed,ariaReadOnly,ariaRelevant,ariaRequired,"
- + "ariaRoleDescription,ariaRowCount,ariaRowIndex,ariaRowIndexText,ariaRowSpan,ariaSelected,"
- + "ariaSetSize,ariaSort,ariaValueMax,ariaValueMin,ariaValueNow,ariaValueText,assignedSlot,"
- + "attachShadow(),attributes,before(),checkVisibility(),classList,className,clientHeight,clientLeft,"
- + "clientTop,clientWidth,closest(),computedStyleMap(),currentCSSZoom,elementTiming,getAnimations(),"
- + "getAttribute(),getAttributeNames(),getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),"
+ EDGE = "after(),animate(),ariaActiveDescendantElement,ariaAtomic,ariaAutoComplete,ariaBrailleLabel,"
+ + "ariaBrailleRoleDescription,ariaBusy,ariaChecked,ariaColCount,ariaColIndex,ariaColIndexText,"
+ + "ariaColSpan,ariaControlsElements,ariaCurrent,ariaDescribedByElements,ariaDescription,"
+ + "ariaDetailsElements,ariaDisabled,ariaErrorMessageElements,ariaExpanded,ariaFlowToElements,"
+ + "ariaHasPopup,ariaHidden,ariaInvalid,ariaKeyShortcuts,ariaLabel,ariaLabelledByElements,ariaLevel,"
+ + "ariaLive,ariaModal,ariaMultiLine,ariaMultiSelectable,ariaOrientation,ariaPlaceholder,"
+ + "ariaPosInSet,ariaPressed,ariaReadOnly,ariaRelevant,ariaRequired,ariaRoleDescription,ariaRowCount,"
+ + "ariaRowIndex,ariaRowIndexText,ariaRowSpan,ariaSelected,ariaSetSize,ariaSort,ariaValueMax,"
+ + "ariaValueMin,ariaValueNow,ariaValueText,assignedSlot,attachShadow(),attributes,before(),"
+ + "checkVisibility(),classList,className,clientHeight,clientLeft,clientTop,clientWidth,closest(),"
+ + "computedStyleMap(),currentCSSZoom,elementTiming,getAnimations(),getAttribute(),"
+ + "getAttributeNames(),getAttributeNode(),getAttributeNodeNS(),getAttributeNS(),"
+ "getBoundingClientRect(),getClientRects(),getElementsByClassName(),getElementsByTagName(),"
- + "getElementsByTagNameNS(),getHTML(),hasAttribute(),hasAttributeNS(),"
- + "hasAttributes(),hasPointerCapture(),id,innerHTML,insertAdjacentElement(),insertAdjacentHTML(),"
+ + "getElementsByTagNameNS(),getHTML(),hasAttribute(),hasAttributeNS(),hasAttributes(),"
+ + "hasPointerCapture(),id,innerHTML,insertAdjacentElement(),insertAdjacentHTML(),"
+ "insertAdjacentText(),localName,matches(),namespaceURI,nextElementSibling,onbeforecopy,"
+ "onbeforecut,onbeforepaste,onfullscreenchange,onfullscreenerror,onsearch,onwebkitfullscreenchange,"
+ "onwebkitfullscreenerror,outerHTML,part,prefix,previousElementSibling,releasePointerCapture(),"
@@ -1003,13 +1013,13 @@ public void event() throws Exception {
+ "cdc_adoQpoasnfa76pfcZLmcfl_Symbol(),cdc_adoQpoasnfa76pfcZLmcfl_Window(),chrome,clearInterval(),"
+ "clearTimeout(),clientInformation,close(),closed,confirm(),cookieStore,createImageBitmap(),"
+ "credentialless,crossOriginIsolated,crypto,customElements,devicePixelRatio,dispatchEvent(),"
- + "document,documentPictureInPicture,event,external,fence,fetch(),find(),focus(),frameElement,"
- + "frames,getComputedStyle(),getScreenDetails(),getSelection(),history,indexedDB,innerHeight,"
- + "innerWidth,isSecureContext,launchQueue,length,localStorage,location,locationbar,log(),logEx(),"
- + "matchMedia(),menubar,moveBy(),moveTo(),name,navigation,navigator,onabort,onafterprint,"
- + "onanimationend,onanimationiteration,onanimationstart,onappinstalled,onauxclick,onbeforeinput,"
- + "onbeforeinstallprompt,onbeforematch,onbeforeprint,onbeforetoggle,onbeforeunload,onbeforexrselect,"
- + "onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,onclose,"
+ + "document,documentPictureInPicture,event,external,fence,fetch(),fetchLater(),find(),focus(),"
+ + "frameElement,frames,getComputedStyle(),getScreenDetails(),getSelection(),history,indexedDB,"
+ + "innerHeight,innerWidth,isSecureContext,launchQueue,length,localStorage,location,locationbar,"
+ + "log(),logEx(),matchMedia(),menubar,moveBy(),moveTo(),name,navigation,navigator,onabort,"
+ + "onafterprint,onanimationend,onanimationiteration,onanimationstart,onappinstalled,onauxclick,"
+ + "onbeforeinput,onbeforeinstallprompt,onbeforematch,onbeforeprint,onbeforetoggle,onbeforeunload,"
+ + "onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,onclose,oncommand,"
+ "oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,oncontextrestored,oncuechange,"
+ "ondblclick,ondevicemotion,ondeviceorientation,ondeviceorientationabsolute,ondrag,ondragend,"
+ "ondragenter,ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,"
@@ -1033,7 +1043,7 @@ public void event() throws Exception {
+ "setInterval(),setTimeout(),sharedStorage,showDirectoryPicker(),showOpenFilePicker(),"
+ "showSaveFilePicker(),sortFunction(),speechSynthesis,status,statusbar,stop(),structuredClone(),"
+ "styleMedia,TEMPORARY,test(),toolbar,top,trustedTypes,visualViewport,webkitCancelAnimationFrame(),"
- + "webkitRequestAnimationFrame(),webkitRequestFileSystem(),webkitResolveLocalFileSystemURL(),"
+ + "webkitRequestAnimationFrame(),webkitRequestFileSystem(),webkitResolveLocalFileSystemURL(),when(),"
+ "window",
EDGE = "addEventListener(),alert(),atob(),blur(),btoa(),caches,cancelAnimationFrame(),"
+ "cancelIdleCallback(),captureEvents(),cdc_adoQpoasnfa76pfcZLmcfl_Array(),"
@@ -1042,70 +1052,71 @@ public void event() throws Exception {
+ "cdc_adoQpoasnfa76pfcZLmcfl_Symbol(),cdc_adoQpoasnfa76pfcZLmcfl_Window(),chrome,clearInterval(),"
+ "clearTimeout(),clientInformation,close(),closed,confirm(),cookieStore,createImageBitmap(),"
+ "credentialless,crossOriginIsolated,crypto,customElements,devicePixelRatio,dispatchEvent(),"
- + "document,documentPictureInPicture,event,external,fence,fetch(),find(),focus(),frameElement,"
- + "frames,getComputedStyle(),getDigitalGoodsService(),getScreenDetails(),getSelection(),history,"
- + "indexedDB,innerHeight,innerWidth,isSecureContext,launchQueue,length,localStorage,location,"
- + "locationbar,log(),logEx(),matchMedia(),menubar,moveBy(),moveTo(),name,navigation,navigator,"
- + "onabort,onafterprint,onanimationend,onanimationiteration,onanimationstart,onappinstalled,"
- + "onauxclick,onbeforeinput,onbeforeinstallprompt,onbeforematch,onbeforeprint,onbeforetoggle,"
- + "onbeforeunload,onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,"
- + "onclose,oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,oncontextrestored,"
- + "oncuechange,ondblclick,ondevicemotion,ondeviceorientation,ondeviceorientationabsolute,ondrag,"
- + "ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,"
- + "onended,onerror,onfocus,onformdata,ongotpointercapture,onhashchange,oninput,oninvalid,onkeydown,"
- + "onkeypress,onkeyup,onlanguagechange,onload(),onloadeddata,onloadedmetadata,onloadstart,"
- + "onlostpointercapture,onmessage,onmessageerror,onmousedown,onmouseenter,onmouseleave,onmousemove,"
- + "onmouseout,onmouseover,onmouseup,onmousewheel,onoffline,ononline,onpagehide,onpagereveal,"
- + "onpageshow,onpageswap,onpause,onplay,onplaying,onpointercancel,onpointerdown,onpointerenter,"
- + "onpointerleave,onpointermove,onpointerout,onpointerover,onpointerrawupdate,onpointerup,"
- + "onpopstate,onprogress,onratechange,onrejectionhandled,onreset,onresize,onscroll,onscrollend,"
- + "onscrollsnapchange,onscrollsnapchanging,onsearch,onsecuritypolicyviolation,onseeked,onseeking,"
- + "onselect,onselectionchange,onselectstart,onslotchange,onstalled,onstorage,onsubmit,onsuspend,"
- + "ontimeupdate,ontoggle,ontransitioncancel,ontransitionend,ontransitionrun,ontransitionstart,"
- + "onunhandledrejection,onunload,onvolumechange,onwaiting,onwebkitanimationend,"
- + "onwebkitanimationiteration,onwebkitanimationstart,onwebkittransitionend,onwheel,open(),opener,"
- + "origin,originAgentCluster,outerHeight,outerWidth,pageXOffset,pageYOffset,parent,performance,"
- + "PERSISTENT,personalbar,postMessage(),print(),process(),prompt(),queryLocalFonts(),"
- + "queueMicrotask(),releaseEvents(),removeEventListener(),reportError(),requestAnimationFrame(),"
- + "requestIdleCallback(),resizeBy(),resizeTo(),scheduler,screen,screenLeft,screenTop,screenX,"
- + "screenY,scroll(),scrollbars,scrollBy(),scrollTo(),scrollX,scrollY,self,sessionStorage,"
- + "setInterval(),setTimeout(),sharedStorage,showDirectoryPicker(),showOpenFilePicker(),"
- + "showSaveFilePicker(),sortFunction(),speechSynthesis,status,statusbar,stop(),structuredClone(),"
- + "styleMedia,TEMPORARY,test(),toolbar,top,trustedTypes,visualViewport,webkitCancelAnimationFrame(),"
- + "webkitRequestAnimationFrame(),webkitRequestFileSystem(),webkitResolveLocalFileSystemURL(),"
+ + "document,documentPictureInPicture,event,external,fence,fetch(),fetchLater(),find(),focus(),"
+ + "frameElement,frames,getComputedStyle(),getDigitalGoodsService(),getScreenDetails(),"
+ + "getSelection(),history,indexedDB,innerHeight,innerWidth,isSecureContext,launchQueue,length,"
+ + "localStorage,location,locationbar,log(),logEx(),matchMedia(),menubar,moveBy(),moveTo(),name,"
+ + "navigation,navigator,onabort,onafterprint,onanimationend,onanimationiteration,onanimationstart,"
+ + "onappinstalled,onauxclick,onbeforeinput,onbeforeinstallprompt,onbeforematch,onbeforeprint,"
+ + "onbeforetoggle,onbeforeunload,onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,"
+ + "onchange,onclick,onclose,oncommand,oncontentvisibilityautostatechange,oncontextlost,"
+ + "oncontextmenu,oncontextrestored,oncuechange,ondblclick,ondevicemotion,ondeviceorientation,"
+ + "ondeviceorientationabsolute,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,"
+ + "ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,ongotpointercapture,"
+ + "onhashchange,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onlanguagechange,onload(),"
+ + "onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,onmessage,onmessageerror,"
+ + "onmousedown,onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,"
+ + "onoffline,ononline,onpagehide,onpagereveal,onpageshow,onpageswap,onpause,onplay,onplaying,"
+ + "onpointercancel,onpointerdown,onpointerenter,onpointerleave,onpointermove,onpointerout,"
+ + "onpointerover,onpointerrawupdate,onpointerup,onpopstate,onprogress,onratechange,"
+ + "onrejectionhandled,onreset,onresize,onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,"
+ + "onsearch,onsecuritypolicyviolation,onseeked,onseeking,onselect,onselectionchange,onselectstart,"
+ + "onslotchange,onstalled,onstorage,onsubmit,onsuspend,ontimeupdate,ontoggle,ontransitioncancel,"
+ + "ontransitionend,ontransitionrun,ontransitionstart,onunhandledrejection,onunload,onvolumechange,"
+ + "onwaiting,onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,"
+ + "onwebkittransitionend,onwheel,open(),opener,origin,originAgentCluster,outerHeight,outerWidth,"
+ + "pageXOffset,pageYOffset,parent,performance,PERSISTENT,personalbar,postMessage(),print(),"
+ + "process(),prompt(),queryLocalFonts(),queueMicrotask(),releaseEvents(),removeEventListener(),"
+ + "reportError(),requestAnimationFrame(),requestIdleCallback(),resizeBy(),resizeTo(),scheduler,"
+ + "screen,screenLeft,screenTop,screenX,screenY,scroll(),scrollbars,scrollBy(),scrollTo(),scrollX,"
+ + "scrollY,self,sessionStorage,setInterval(),setTimeout(),sharedStorage,showDirectoryPicker(),"
+ + "showOpenFilePicker(),showSaveFilePicker(),sortFunction(),speechSynthesis,status,statusbar,stop(),"
+ + "structuredClone(),styleMedia,TEMPORARY,test(),toolbar,top,trustedTypes,visualViewport,"
+ + "webkitCancelAnimationFrame(),webkitRequestAnimationFrame(),webkitRequestFileSystem(),"
+ + "webkitResolveLocalFileSystemURL(),when(),"
+ "window",
FF = "addEventListener(),alert(),atob(),blur(),btoa(),caches,cancelAnimationFrame(),"
+ "cancelIdleCallback(),captureEvents(),clearInterval(),clearTimeout(),clientInformation,close(),"
- + "closed,confirm(),cookieStore,createImageBitmap(),crossOriginIsolated,crypto,customElements,"
- + "devicePixelRatio,dispatchEvent(),document,dump(),event,external,fetch(),find(),focus(),"
- + "frameElement,frames,fullScreen,getComputedStyle(),getDefaultComputedStyle(),getSelection(),"
- + "history,indexedDB,innerHeight,innerWidth,InstallTrigger,isSecureContext,length,localStorage,"
- + "location,locationbar,log(),logEx(),matchMedia(),menubar,moveBy(),moveTo(),mozInnerScreenX,"
- + "mozInnerScreenY,name,navigator,onabort,onafterprint,onanimationcancel,onanimationend,"
- + "onanimationiteration,onanimationstart,onauxclick,onbeforeinput,onbeforeprint,onbeforetoggle,"
- + "onbeforeunload,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,onclose,"
- + "oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,oncontextrestored,oncopy,"
- + "oncuechange,oncut,ondblclick,ondevicemotion,ondeviceorientation,ondeviceorientationabsolute,"
- + "ondrag,ondragend,ondragenter,ondragexit,ondragleave,ondragover,ondragstart,ondrop,"
- + "ondurationchange,onemptied,onended,onerror,onfocus,onformdata,ongamepadconnected,"
- + "ongamepaddisconnected,ongotpointercapture,onhashchange,oninput,oninvalid,onkeydown,onkeypress,"
- + "onkeyup,onlanguagechange,onload(),onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,"
- + "onmessage,onmessageerror,onmousedown,onmouseenter,onmouseleave,onmousemove,onmouseout,"
- + "onmouseover,onmouseup,onmozfullscreenchange,onmozfullscreenerror,onoffline,ononline,onpagehide,"
- + "onpageshow,onpaste,onpause,onplay,onplaying,onpointercancel,onpointerdown,onpointerenter,"
- + "onpointerleave,onpointermove,onpointerout,onpointerover,onpointerup,onpopstate,onprogress,"
- + "onratechange,onrejectionhandled,onreset,onresize,onscroll,onscrollend,onsecuritypolicyviolation,"
- + "onseeked,onseeking,onselect,onselectionchange,onselectstart,onslotchange,onstalled,onstorage,"
- + "onsubmit,onsuspend,ontimeupdate,ontoggle,ontransitioncancel,ontransitionend,ontransitionrun,"
- + "ontransitionstart,onunhandledrejection,onunload,onvolumechange,onwaiting,onwebkitanimationend,"
- + "onwebkitanimationiteration,onwebkitanimationstart,onwebkittransitionend,onwheel,open(),opener,"
- + "origin,outerHeight,outerWidth,pageXOffset,pageYOffset,parent,performance,personalbar,"
- + "postMessage(),print(),process(),prompt(),queueMicrotask(),releaseEvents(),removeEventListener(),"
- + "reportError(),requestAnimationFrame(),requestIdleCallback(),resizeBy(),resizeTo(),screen,"
- + "screenLeft,screenTop,screenX,screenY,scroll(),scrollbars,scrollBy(),scrollByLines(),"
- + "scrollByPages(),scrollMaxX,scrollMaxY,scrollTo(),scrollX,scrollY,self,sessionStorage,"
- + "setInterval(),setResizable(),setTimeout(),sortFunction(),speechSynthesis,status,statusbar,stop(),"
- + "structuredClone(),test(),toolbar,top,updateCommands(),visualViewport,"
+ + "closed,confirm(),createImageBitmap(),crossOriginIsolated,crypto,customElements,devicePixelRatio,"
+ + "dispatchEvent(),document,dump(),event,external,fetch(),find(),focus(),frameElement,frames,"
+ + "fullScreen,getComputedStyle(),getDefaultComputedStyle(),getSelection(),history,indexedDB,"
+ + "innerHeight,innerWidth,InstallTrigger,isSecureContext,length,localStorage,location,locationbar,"
+ + "log(),logEx(),matchMedia(),menubar,moveBy(),moveTo(),mozInnerScreenX,mozInnerScreenY,name,"
+ + "navigator,onabort,onafterprint,onanimationcancel,onanimationend,onanimationiteration,"
+ + "onanimationstart,onauxclick,onbeforeinput,onbeforeprint,onbeforetoggle,onbeforeunload,onblur,"
+ + "oncancel,oncanplay,oncanplaythrough,onchange,onclick,onclose,oncontentvisibilityautostatechange,"
+ + "oncontextlost,oncontextmenu,oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondevicemotion,"
+ + "ondeviceorientation,ondeviceorientationabsolute,ondrag,ondragend,ondragenter,ondragexit,"
+ + "ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,"
+ + "onformdata,ongamepadconnected,ongamepaddisconnected,ongotpointercapture,onhashchange,oninput,"
+ + "oninvalid,onkeydown,onkeypress,onkeyup,onlanguagechange,onload(),onloadeddata,onloadedmetadata,"
+ + "onloadstart,onlostpointercapture,onmessage,onmessageerror,onmousedown,onmouseenter,onmouseleave,"
+ + "onmousemove,onmouseout,onmouseover,onmouseup,onmozfullscreenchange,onmozfullscreenerror,"
+ + "onoffline,ononline,onpagehide,onpageshow,onpaste,onpause,onplay,onplaying,onpointercancel,"
+ + "onpointerdown,onpointerenter,onpointerleave,onpointermove,onpointerout,onpointerover,onpointerup,"
+ + "onpopstate,onprogress,onratechange,onrejectionhandled,onreset,onresize,onscroll,onscrollend,"
+ + "onsecuritypolicyviolation,onseeked,onseeking,onselect,onselectionchange,onselectstart,"
+ + "onslotchange,onstalled,onstorage,onsubmit,onsuspend,ontimeupdate,ontoggle,ontransitioncancel,"
+ + "ontransitionend,ontransitionrun,ontransitionstart,onunhandledrejection,onunload,onvolumechange,"
+ + "onwaiting,onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,"
+ + "onwebkittransitionend,onwheel,open(),opener,origin,outerHeight,outerWidth,pageXOffset,"
+ + "pageYOffset,parent,performance,personalbar,postMessage(),print(),process(),prompt(),"
+ + "queueMicrotask(),releaseEvents(),removeEventListener(),reportError(),requestAnimationFrame(),"
+ + "requestIdleCallback(),resizeBy(),resizeTo(),screen,screenLeft,screenTop,screenX,screenY,scroll(),"
+ + "scrollbars,scrollBy(),scrollByLines(),scrollByPages(),scrollMaxX,scrollMaxY,scrollTo(),scrollX,"
+ + "scrollY,self,sessionStorage,setInterval(),setResizable(),setTimeout(),sortFunction(),"
+ + "speechSynthesis,status,statusbar,stop(),structuredClone(),test(),toolbar,top,updateCommands(),"
+ + "visualViewport,"
+ "window",
FF_ESR = "addEventListener(),alert(),atob(),blur(),btoa(),caches,cancelAnimationFrame(),"
+ "cancelIdleCallback(),captureEvents(),clearInterval(),clearTimeout(),clientInformation,close(),"
@@ -1565,13 +1576,13 @@ public void br() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "checkValidity(),disabled,form,formAction,formEnctype,formMethod,formNoValidate,formTarget,labels,"
- + "name,popoverTargetAction,popoverTargetElement,reportValidity(),setCustomValidity(),type,"
- + "validationMessage,validity,value,"
+ @Alerts(CHROME = "checkValidity(),command,commandForElement,disabled,form,formAction,formEnctype,formMethod,"
+ + "formNoValidate,formTarget,labels,name,popoverTargetAction,popoverTargetElement,reportValidity(),"
+ + "setCustomValidity(),type,validationMessage,validity,value,"
+ "willValidate",
- EDGE = "checkValidity(),disabled,form,formAction,formEnctype,formMethod,formNoValidate,formTarget,labels,"
- + "name,popoverTargetAction,popoverTargetElement,reportValidity(),setCustomValidity(),type,"
- + "validationMessage,validity,value,"
+ EDGE = "checkValidity(),command,commandForElement,disabled,form,formAction,formEnctype,formMethod,"
+ + "formNoValidate,formTarget,labels,name,popoverTargetAction,popoverTargetElement,reportValidity(),"
+ + "setCustomValidity(),type,validationMessage,validity,value,"
+ "willValidate",
FF = "checkValidity(),disabled,form,formAction,formEnctype,formMethod,formNoValidate,formTarget,labels,"
+ "name,popoverTargetAction,popoverTargetElement,reportValidity(),setCustomValidity(),type,"
@@ -2600,11 +2611,13 @@ public void param() throws Exception {
@Alerts(CHROME = "addEventListener(),clearMarks(),clearMeasures(),clearResourceTimings(),dispatchEvent(),"
+ "eventCounts,getEntries(),getEntriesByName(),getEntriesByType(),mark(),measure(),memory,"
+ "navigation,now(),onresourcetimingbufferfull,removeEventListener(),setResourceTimingBufferSize(),"
- + "timeOrigin,timing,toJSON()",
+ + "timeOrigin,timing,toJSON(),"
+ + "when()",
EDGE = "addEventListener(),clearMarks(),clearMeasures(),clearResourceTimings(),dispatchEvent(),"
+ "eventCounts,getEntries(),getEntriesByName(),getEntriesByType(),mark(),measure(),memory,"
+ "navigation,now(),onresourcetimingbufferfull,removeEventListener(),setResourceTimingBufferSize(),"
- + "timeOrigin,timing,toJSON()",
+ + "timeOrigin,timing,toJSON(),"
+ + "when()",
FF = "addEventListener(),clearMarks(),clearMeasures(),clearResourceTimings(),dispatchEvent(),"
+ "eventCounts,getEntries(),getEntriesByName(),getEntriesByType(),mark(),measure(),navigation,"
+ "now(),onresourcetimingbufferfull,removeEventListener(),setResourceTimingBufferSize(),"
@@ -4286,20 +4299,20 @@ public void slot() throws Exception {
+ "nodeType,nodeValue,normalize(),NOTATION_NODE,onabort,onanimationend,onanimationiteration,"
+ "onanimationstart,onauxclick,onbeforecopy,onbeforecut,onbeforeinput,onbeforematch,onbeforepaste,"
+ "onbeforetoggle,onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,"
- + "onclose,oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,oncontextrestored,oncopy,"
- + "oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,"
- + "ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,onfreeze,onfullscreenchange,"
- + "onfullscreenerror,ongotpointercapture,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onload,"
- + "onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,onmousedown,onmouseenter,"
- + "onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpaste,onpause,onplay,"
- + "onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,onpointerlockchange,"
- + "onpointerlockerror,onpointermove,onpointerout,onpointerover,onpointerrawupdate,onpointerup,"
- + "onprerenderingchange,onprogress,onratechange,onreadystatechange,onreset,onresize,onresume,"
- + "onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,onsearch,onsecuritypolicyviolation,"
- + "onseeked,onseeking,onselect,onselectionchange,onselectstart,onslotchange,onstalled,onsubmit,"
- + "onsuspend,ontimeupdate,ontoggle,ontransitioncancel,ontransitionend,ontransitionrun,"
- + "ontransitionstart,onvisibilitychange,onvolumechange,onwaiting,onwebkitanimationend,"
- + "onwebkitanimationiteration,onwebkitanimationstart,onwebkitfullscreenchange,"
+ + "onclose,oncommand,oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,"
+ + "oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,ondragleave,"
+ + "ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,"
+ + "onfreeze,onfullscreenchange,onfullscreenerror,ongotpointercapture,oninput,oninvalid,onkeydown,"
+ + "onkeypress,onkeyup,onload,onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,"
+ + "onmousedown,onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,"
+ + "onpaste,onpause,onplay,onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,"
+ + "onpointerlockchange,onpointerlockerror,onpointermove,onpointerout,onpointerover,"
+ + "onpointerrawupdate,onpointerup,onprerenderingchange,onprogress,onratechange,onreadystatechange,"
+ + "onreset,onresize,onresume,onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,onsearch,"
+ + "onsecuritypolicyviolation,onseeked,onseeking,onselect,onselectionchange,onselectstart,"
+ + "onslotchange,onstalled,onsubmit,onsuspend,ontimeupdate,ontoggle,ontransitioncancel,"
+ + "ontransitionend,ontransitionrun,ontransitionstart,onvisibilitychange,onvolumechange,onwaiting,"
+ + "onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,onwebkitfullscreenchange,"
+ "onwebkitfullscreenerror,onwebkittransitionend,onwheel,open(),ownerDocument,parentElement,"
+ "parentNode,pictureInPictureElement,pictureInPictureEnabled,plugins,pointerLockElement,prepend(),"
+ "prerendering,previousSibling,PROCESSING_INSTRUCTION_NODE,queryCommandEnabled(),"
@@ -4310,7 +4323,7 @@ public void slot() throws Exception {
+ "TEXT_NODE,textContent,timeline,title,URL,visibilityState,vlinkColor,wasDiscarded,"
+ "webkitCancelFullScreen(),webkitCurrentFullScreenElement,webkitExitFullscreen(),"
+ "webkitFullscreenElement,webkitFullscreenEnabled,webkitHidden,webkitIsFullScreen,"
- + "webkitVisibilityState,write(),writeln(),xmlEncoding,xmlStandalone,"
+ + "webkitVisibilityState,when(),write(),writeln(),xmlEncoding,xmlStandalone,"
+ "xmlVersion",
EDGE = "activeElement,addEventListener(),adoptedStyleSheets,adoptNode(),alinkColor,all,anchors,append(),"
+ "appendChild(),applets,ATTRIBUTE_NODE,baseURI,bgColor,body,browsingTopics(),captureEvents(),"
@@ -4337,20 +4350,20 @@ public void slot() throws Exception {
+ "nodeType,nodeValue,normalize(),NOTATION_NODE,onabort,onanimationend,onanimationiteration,"
+ "onanimationstart,onauxclick,onbeforecopy,onbeforecut,onbeforeinput,onbeforematch,onbeforepaste,"
+ "onbeforetoggle,onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,"
- + "onclose,oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,oncontextrestored,oncopy,"
- + "oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,"
- + "ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,onfreeze,onfullscreenchange,"
- + "onfullscreenerror,ongotpointercapture,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onload,"
- + "onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,onmousedown,onmouseenter,"
- + "onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpaste,onpause,onplay,"
- + "onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,onpointerlockchange,"
- + "onpointerlockerror,onpointermove,onpointerout,onpointerover,onpointerrawupdate,onpointerup,"
- + "onprerenderingchange,onprogress,onratechange,onreadystatechange,onreset,onresize,onresume,"
- + "onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,onsearch,onsecuritypolicyviolation,"
- + "onseeked,onseeking,onselect,onselectionchange,onselectstart,onslotchange,onstalled,onsubmit,"
- + "onsuspend,ontimeupdate,ontoggle,ontransitioncancel,ontransitionend,ontransitionrun,"
- + "ontransitionstart,onvisibilitychange,onvolumechange,onwaiting,onwebkitanimationend,"
- + "onwebkitanimationiteration,onwebkitanimationstart,onwebkitfullscreenchange,"
+ + "onclose,oncommand,oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,"
+ + "oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,ondragleave,"
+ + "ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,"
+ + "onfreeze,onfullscreenchange,onfullscreenerror,ongotpointercapture,oninput,oninvalid,onkeydown,"
+ + "onkeypress,onkeyup,onload,onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,"
+ + "onmousedown,onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,"
+ + "onpaste,onpause,onplay,onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,"
+ + "onpointerlockchange,onpointerlockerror,onpointermove,onpointerout,onpointerover,"
+ + "onpointerrawupdate,onpointerup,onprerenderingchange,onprogress,onratechange,onreadystatechange,"
+ + "onreset,onresize,onresume,onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,onsearch,"
+ + "onsecuritypolicyviolation,onseeked,onseeking,onselect,onselectionchange,onselectstart,"
+ + "onslotchange,onstalled,onsubmit,onsuspend,ontimeupdate,ontoggle,ontransitioncancel,"
+ + "ontransitionend,ontransitionrun,ontransitionstart,onvisibilitychange,onvolumechange,onwaiting,"
+ + "onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,onwebkitfullscreenchange,"
+ "onwebkitfullscreenerror,onwebkittransitionend,onwheel,open(),ownerDocument,parentElement,"
+ "parentNode,pictureInPictureElement,pictureInPictureEnabled,plugins,pointerLockElement,prepend(),"
+ "prerendering,previousSibling,PROCESSING_INSTRUCTION_NODE,queryCommandEnabled(),"
@@ -4361,7 +4374,7 @@ public void slot() throws Exception {
+ "TEXT_NODE,textContent,timeline,title,URL,visibilityState,vlinkColor,wasDiscarded,"
+ "webkitCancelFullScreen(),webkitCurrentFullScreenElement,webkitExitFullscreen(),"
+ "webkitFullscreenElement,webkitFullscreenEnabled,webkitHidden,webkitIsFullScreen,"
- + "webkitVisibilityState,write(),writeln(),xmlEncoding,xmlStandalone,"
+ + "webkitVisibilityState,when(),write(),writeln(),xmlEncoding,xmlStandalone,"
+ "xmlVersion",
FF = "activeElement,addEventListener(),adoptedStyleSheets,adoptNode(),alinkColor,all,anchors,append(),"
+ "appendChild(),applets,ATTRIBUTE_NODE,baseURI,bgColor,body,captureEvents(),"
@@ -4492,31 +4505,32 @@ public void document() throws Exception {
+ "nodeName,nodeType,nodeValue,normalize(),NOTATION_NODE,onabort,onanimationend,"
+ "onanimationiteration,onanimationstart,onauxclick,onbeforecopy,onbeforecut,onbeforeinput,"
+ "onbeforematch,onbeforepaste,onbeforetoggle,onbeforexrselect,onblur,oncancel,oncanplay,"
- + "oncanplaythrough,onchange,onclick,onclose,oncontentvisibilityautostatechange,oncontextlost,"
- + "oncontextmenu,oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,"
- + "ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,"
- + "onformdata,onfreeze,onfullscreenchange,onfullscreenerror,ongotpointercapture,oninput,oninvalid,"
- + "onkeydown,onkeypress,onkeyup,onload,onloadeddata,onloadedmetadata,onloadstart,"
- + "onlostpointercapture,onmousedown,onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,"
- + "onmouseup,onmousewheel,onpaste,onpause,onplay,onplaying,onpointercancel,onpointerdown,"
- + "onpointerenter,onpointerleave,onpointerlockchange,onpointerlockerror,onpointermove,onpointerout,"
- + "onpointerover,onpointerrawupdate,onpointerup,onprerenderingchange,onprogress,onratechange,"
- + "onreadystatechange,onreset,onresize,onresume,onscroll,onscrollend,onscrollsnapchange,"
- + "onscrollsnapchanging,onsearch,onsecuritypolicyviolation,onseeked,onseeking,onselect,"
- + "onselectionchange,onselectstart,onslotchange,onstalled,onsubmit,onsuspend,ontimeupdate,ontoggle,"
- + "ontransitioncancel,ontransitionend,ontransitionrun,ontransitionstart,onvisibilitychange,"
- + "onvolumechange,onwaiting,onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,"
- + "onwebkitfullscreenchange,onwebkitfullscreenerror,onwebkittransitionend,onwheel,open(),"
- + "ownerDocument,parentElement,parentNode,pictureInPictureElement,pictureInPictureEnabled,plugins,"
- + "pointerLockElement,prepend(),prerendering,previousSibling,PROCESSING_INSTRUCTION_NODE,"
- + "queryCommandEnabled(),queryCommandIndeterm(),queryCommandState(),queryCommandSupported(),"
- + "queryCommandValue(),querySelector(),querySelectorAll(),readyState,referrer,releaseEvents(),"
- + "removeChild(),removeEventListener(),replaceChild(),replaceChildren(),requestStorageAccess(),"
+ + "oncanplaythrough,onchange,onclick,onclose,oncommand,oncontentvisibilityautostatechange,"
+ + "oncontextlost,oncontextmenu,oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,"
+ + "ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,"
+ + "onended,onerror,onfocus,onformdata,onfreeze,onfullscreenchange,onfullscreenerror,"
+ + "ongotpointercapture,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onload,onloadeddata,"
+ + "onloadedmetadata,onloadstart,onlostpointercapture,onmousedown,onmouseenter,onmouseleave,"
+ + "onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpaste,onpause,onplay,onplaying,"
+ + "onpointercancel,onpointerdown,onpointerenter,onpointerleave,onpointerlockchange,"
+ + "onpointerlockerror,onpointermove,onpointerout,onpointerover,onpointerrawupdate,onpointerup,"
+ + "onprerenderingchange,onprogress,onratechange,onreadystatechange,onreset,onresize,onresume,"
+ + "onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,onsearch,onsecuritypolicyviolation,"
+ + "onseeked,onseeking,onselect,onselectionchange,onselectstart,onslotchange,onstalled,onsubmit,"
+ + "onsuspend,ontimeupdate,ontoggle,ontransitioncancel,ontransitionend,ontransitionrun,"
+ + "ontransitionstart,onvisibilitychange,onvolumechange,onwaiting,onwebkitanimationend,"
+ + "onwebkitanimationiteration,onwebkitanimationstart,onwebkitfullscreenchange,"
+ + "onwebkitfullscreenerror,onwebkittransitionend,onwheel,open(),ownerDocument,parentElement,"
+ + "parentNode,pictureInPictureElement,pictureInPictureEnabled,plugins,pointerLockElement,prepend(),"
+ + "prerendering,previousSibling,PROCESSING_INSTRUCTION_NODE,queryCommandEnabled(),"
+ + "queryCommandIndeterm(),queryCommandState(),queryCommandSupported(),queryCommandValue(),"
+ + "querySelector(),querySelectorAll(),readyState,referrer,releaseEvents(),removeChild(),"
+ + "removeEventListener(),replaceChild(),replaceChildren(),requestStorageAccess(),"
+ "requestStorageAccessFor(),rootElement,scripts,scrollingElement,startViewTransition(),styleSheets,"
+ "TEXT_NODE,textContent,timeline,title,URL,visibilityState,vlinkColor,wasDiscarded,"
+ "webkitCancelFullScreen(),webkitCurrentFullScreenElement,webkitExitFullscreen(),"
+ "webkitFullscreenElement,webkitFullscreenEnabled,webkitHidden,webkitIsFullScreen,"
- + "webkitVisibilityState,write(),writeln(),xmlEncoding,xmlStandalone,"
+ + "webkitVisibilityState,when(),write(),writeln(),xmlEncoding,xmlStandalone,"
+ "xmlVersion",
EDGE = "activeElement,addEventListener(),adoptedStyleSheets,adoptNode(),alinkColor,all,anchors,append(),"
+ "appendChild(),applets,ATTRIBUTE_NODE,baseURI,bgColor,body,browsingTopics(),captureEvents(),"
@@ -4543,31 +4557,32 @@ public void document() throws Exception {
+ "nodeName,nodeType,nodeValue,normalize(),NOTATION_NODE,onabort,onanimationend,"
+ "onanimationiteration,onanimationstart,onauxclick,onbeforecopy,onbeforecut,onbeforeinput,"
+ "onbeforematch,onbeforepaste,onbeforetoggle,onbeforexrselect,onblur,oncancel,oncanplay,"
- + "oncanplaythrough,onchange,onclick,onclose,oncontentvisibilityautostatechange,oncontextlost,"
- + "oncontextmenu,oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,"
- + "ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,"
- + "onformdata,onfreeze,onfullscreenchange,onfullscreenerror,ongotpointercapture,oninput,oninvalid,"
- + "onkeydown,onkeypress,onkeyup,onload,onloadeddata,onloadedmetadata,onloadstart,"
- + "onlostpointercapture,onmousedown,onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,"
- + "onmouseup,onmousewheel,onpaste,onpause,onplay,onplaying,onpointercancel,onpointerdown,"
- + "onpointerenter,onpointerleave,onpointerlockchange,onpointerlockerror,onpointermove,onpointerout,"
- + "onpointerover,onpointerrawupdate,onpointerup,onprerenderingchange,onprogress,onratechange,"
- + "onreadystatechange,onreset,onresize,onresume,onscroll,onscrollend,onscrollsnapchange,"
- + "onscrollsnapchanging,onsearch,onsecuritypolicyviolation,onseeked,onseeking,onselect,"
- + "onselectionchange,onselectstart,onslotchange,onstalled,onsubmit,onsuspend,ontimeupdate,ontoggle,"
- + "ontransitioncancel,ontransitionend,ontransitionrun,ontransitionstart,onvisibilitychange,"
- + "onvolumechange,onwaiting,onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,"
- + "onwebkitfullscreenchange,onwebkitfullscreenerror,onwebkittransitionend,onwheel,open(),"
- + "ownerDocument,parentElement,parentNode,pictureInPictureElement,pictureInPictureEnabled,plugins,"
- + "pointerLockElement,prepend(),prerendering,previousSibling,PROCESSING_INSTRUCTION_NODE,"
- + "queryCommandEnabled(),queryCommandIndeterm(),queryCommandState(),queryCommandSupported(),"
- + "queryCommandValue(),querySelector(),querySelectorAll(),readyState,referrer,releaseEvents(),"
- + "removeChild(),removeEventListener(),replaceChild(),replaceChildren(),requestStorageAccess(),"
+ + "oncanplaythrough,onchange,onclick,onclose,oncommand,oncontentvisibilityautostatechange,"
+ + "oncontextlost,oncontextmenu,oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,"
+ + "ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,ondurationchange,onemptied,"
+ + "onended,onerror,onfocus,onformdata,onfreeze,onfullscreenchange,onfullscreenerror,"
+ + "ongotpointercapture,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onload,onloadeddata,"
+ + "onloadedmetadata,onloadstart,onlostpointercapture,onmousedown,onmouseenter,onmouseleave,"
+ + "onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpaste,onpause,onplay,onplaying,"
+ + "onpointercancel,onpointerdown,onpointerenter,onpointerleave,onpointerlockchange,"
+ + "onpointerlockerror,onpointermove,onpointerout,onpointerover,onpointerrawupdate,onpointerup,"
+ + "onprerenderingchange,onprogress,onratechange,onreadystatechange,onreset,onresize,onresume,"
+ + "onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,onsearch,onsecuritypolicyviolation,"
+ + "onseeked,onseeking,onselect,onselectionchange,onselectstart,onslotchange,onstalled,onsubmit,"
+ + "onsuspend,ontimeupdate,ontoggle,ontransitioncancel,ontransitionend,ontransitionrun,"
+ + "ontransitionstart,onvisibilitychange,onvolumechange,onwaiting,onwebkitanimationend,"
+ + "onwebkitanimationiteration,onwebkitanimationstart,onwebkitfullscreenchange,"
+ + "onwebkitfullscreenerror,onwebkittransitionend,onwheel,open(),ownerDocument,parentElement,"
+ + "parentNode,pictureInPictureElement,pictureInPictureEnabled,plugins,pointerLockElement,prepend(),"
+ + "prerendering,previousSibling,PROCESSING_INSTRUCTION_NODE,queryCommandEnabled(),"
+ + "queryCommandIndeterm(),queryCommandState(),queryCommandSupported(),queryCommandValue(),"
+ + "querySelector(),querySelectorAll(),readyState,referrer,releaseEvents(),removeChild(),"
+ + "removeEventListener(),replaceChild(),replaceChildren(),requestStorageAccess(),"
+ "requestStorageAccessFor(),rootElement,scripts,scrollingElement,startViewTransition(),styleSheets,"
+ "TEXT_NODE,textContent,timeline,title,URL,visibilityState,vlinkColor,wasDiscarded,"
+ "webkitCancelFullScreen(),webkitCurrentFullScreenElement,webkitExitFullscreen(),"
+ "webkitFullscreenElement,webkitFullscreenEnabled,webkitHidden,webkitIsFullScreen,"
- + "webkitVisibilityState,write(),writeln(),xmlEncoding,xmlStandalone,"
+ + "webkitVisibilityState,when(),write(),writeln(),xmlEncoding,xmlStandalone,"
+ "xmlVersion",
FF = "activeElement,addEventListener(),adoptedStyleSheets,adoptNode(),alinkColor,all,anchors,append(),"
+ "appendChild(),applets,ATTRIBUTE_NODE,baseURI,bgColor,body,captureEvents(),"
@@ -4823,20 +4838,20 @@ public void htmlDocument() throws Exception {
+ "nodeType,nodeValue,normalize(),NOTATION_NODE,onabort,onanimationend,onanimationiteration,"
+ "onanimationstart,onauxclick,onbeforecopy,onbeforecut,onbeforeinput,onbeforematch,onbeforepaste,"
+ "onbeforetoggle,onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,"
- + "onclose,oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,oncontextrestored,oncopy,"
- + "oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,"
- + "ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,onfreeze,onfullscreenchange,"
- + "onfullscreenerror,ongotpointercapture,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onload,"
- + "onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,onmousedown,onmouseenter,"
- + "onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpaste,onpause,onplay,"
- + "onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,onpointerlockchange,"
- + "onpointerlockerror,onpointermove,onpointerout,onpointerover,onpointerrawupdate,onpointerup,"
- + "onprerenderingchange,onprogress,onratechange,onreadystatechange,onreset,onresize,onresume,"
- + "onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,onsearch,onsecuritypolicyviolation,"
- + "onseeked,onseeking,onselect,onselectionchange,onselectstart,onslotchange,onstalled,onsubmit,"
- + "onsuspend,ontimeupdate,ontoggle,ontransitioncancel,ontransitionend,ontransitionrun,"
- + "ontransitionstart,onvisibilitychange,onvolumechange,onwaiting,onwebkitanimationend,"
- + "onwebkitanimationiteration,onwebkitanimationstart,onwebkitfullscreenchange,"
+ + "onclose,oncommand,oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,"
+ + "oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,ondragleave,"
+ + "ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,"
+ + "onfreeze,onfullscreenchange,onfullscreenerror,ongotpointercapture,oninput,oninvalid,onkeydown,"
+ + "onkeypress,onkeyup,onload,onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,"
+ + "onmousedown,onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,"
+ + "onpaste,onpause,onplay,onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,"
+ + "onpointerlockchange,onpointerlockerror,onpointermove,onpointerout,onpointerover,"
+ + "onpointerrawupdate,onpointerup,onprerenderingchange,onprogress,onratechange,onreadystatechange,"
+ + "onreset,onresize,onresume,onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,onsearch,"
+ + "onsecuritypolicyviolation,onseeked,onseeking,onselect,onselectionchange,onselectstart,"
+ + "onslotchange,onstalled,onsubmit,onsuspend,ontimeupdate,ontoggle,ontransitioncancel,"
+ + "ontransitionend,ontransitionrun,ontransitionstart,onvisibilitychange,onvolumechange,onwaiting,"
+ + "onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,onwebkitfullscreenchange,"
+ "onwebkitfullscreenerror,onwebkittransitionend,onwheel,open(),ownerDocument,parentElement,"
+ "parentNode,pictureInPictureElement,pictureInPictureEnabled,plugins,pointerLockElement,prepend(),"
+ "prerendering,previousSibling,PROCESSING_INSTRUCTION_NODE,queryCommandEnabled(),"
@@ -4847,7 +4862,7 @@ public void htmlDocument() throws Exception {
+ "TEXT_NODE,textContent,timeline,title,URL,visibilityState,vlinkColor,wasDiscarded,"
+ "webkitCancelFullScreen(),webkitCurrentFullScreenElement,webkitExitFullscreen(),"
+ "webkitFullscreenElement,webkitFullscreenEnabled,webkitHidden,webkitIsFullScreen,"
- + "webkitVisibilityState,write(),writeln(),xmlEncoding,xmlStandalone,"
+ + "webkitVisibilityState,when(),write(),writeln(),xmlEncoding,xmlStandalone,"
+ "xmlVersion",
EDGE = "activeElement,addEventListener(),adoptedStyleSheets,adoptNode(),alinkColor,all,anchors,append(),"
+ "appendChild(),applets,ATTRIBUTE_NODE,baseURI,bgColor,body,browsingTopics(),captureEvents(),"
@@ -4874,20 +4889,20 @@ public void htmlDocument() throws Exception {
+ "nodeType,nodeValue,normalize(),NOTATION_NODE,onabort,onanimationend,onanimationiteration,"
+ "onanimationstart,onauxclick,onbeforecopy,onbeforecut,onbeforeinput,onbeforematch,onbeforepaste,"
+ "onbeforetoggle,onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,"
- + "onclose,oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,oncontextrestored,oncopy,"
- + "oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,"
- + "ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,onfreeze,onfullscreenchange,"
- + "onfullscreenerror,ongotpointercapture,oninput,oninvalid,onkeydown,onkeypress,onkeyup,onload,"
- + "onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,onmousedown,onmouseenter,"
- + "onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,onpaste,onpause,onplay,"
- + "onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,onpointerlockchange,"
- + "onpointerlockerror,onpointermove,onpointerout,onpointerover,onpointerrawupdate,onpointerup,"
- + "onprerenderingchange,onprogress,onratechange,onreadystatechange,onreset,onresize,onresume,"
- + "onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,onsearch,onsecuritypolicyviolation,"
- + "onseeked,onseeking,onselect,onselectionchange,onselectstart,onslotchange,onstalled,onsubmit,"
- + "onsuspend,ontimeupdate,ontoggle,ontransitioncancel,ontransitionend,ontransitionrun,"
- + "ontransitionstart,onvisibilitychange,onvolumechange,onwaiting,onwebkitanimationend,"
- + "onwebkitanimationiteration,onwebkitanimationstart,onwebkitfullscreenchange,"
+ + "onclose,oncommand,oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,"
+ + "oncontextrestored,oncopy,oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,ondragleave,"
+ + "ondragover,ondragstart,ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,"
+ + "onfreeze,onfullscreenchange,onfullscreenerror,ongotpointercapture,oninput,oninvalid,onkeydown,"
+ + "onkeypress,onkeyup,onload,onloadeddata,onloadedmetadata,onloadstart,onlostpointercapture,"
+ + "onmousedown,onmouseenter,onmouseleave,onmousemove,onmouseout,onmouseover,onmouseup,onmousewheel,"
+ + "onpaste,onpause,onplay,onplaying,onpointercancel,onpointerdown,onpointerenter,onpointerleave,"
+ + "onpointerlockchange,onpointerlockerror,onpointermove,onpointerout,onpointerover,"
+ + "onpointerrawupdate,onpointerup,onprerenderingchange,onprogress,onratechange,onreadystatechange,"
+ + "onreset,onresize,onresume,onscroll,onscrollend,onscrollsnapchange,onscrollsnapchanging,onsearch,"
+ + "onsecuritypolicyviolation,onseeked,onseeking,onselect,onselectionchange,onselectstart,"
+ + "onslotchange,onstalled,onsubmit,onsuspend,ontimeupdate,ontoggle,ontransitioncancel,"
+ + "ontransitionend,ontransitionrun,ontransitionstart,onvisibilitychange,onvolumechange,onwaiting,"
+ + "onwebkitanimationend,onwebkitanimationiteration,onwebkitanimationstart,onwebkitfullscreenchange,"
+ "onwebkitfullscreenerror,onwebkittransitionend,onwheel,open(),ownerDocument,parentElement,"
+ "parentNode,pictureInPictureElement,pictureInPictureEnabled,plugins,pointerLockElement,prepend(),"
+ "prerendering,previousSibling,PROCESSING_INSTRUCTION_NODE,queryCommandEnabled(),"
@@ -4898,7 +4913,7 @@ public void htmlDocument() throws Exception {
+ "TEXT_NODE,textContent,timeline,title,URL,visibilityState,vlinkColor,wasDiscarded,"
+ "webkitCancelFullScreen(),webkitCurrentFullScreenElement,webkitExitFullscreen(),"
+ "webkitFullscreenElement,webkitFullscreenEnabled,webkitHidden,webkitIsFullScreen,"
- + "webkitVisibilityState,write(),writeln(),xmlEncoding,xmlStandalone,"
+ + "webkitVisibilityState,when(),write(),writeln(),xmlEncoding,xmlStandalone,"
+ "xmlVersion",
FF = "activeElement,addEventListener(),adoptedStyleSheets,adoptNode(),alinkColor,all,anchors,append(),"
+ "appendChild(),applets,ATTRIBUTE_NODE,baseURI,bgColor,body,captureEvents(),"
@@ -5130,7 +5145,7 @@ public void xmlDocument() throws Exception {
@Test
@Alerts(CHROME = "attributeStyleMap,autofocus,blur(),dataset,focus(),nonce,onabort,onanimationend,"
+ "onanimationiteration,onanimationstart,onauxclick,onbeforeinput,onbeforematch,onbeforetoggle,"
- + "onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,onclose,"
+ + "onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,onclose,oncommand,"
+ "oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,oncontextrestored,oncopy,"
+ "oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,"
+ "ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,ongotpointercapture,oninput,"
@@ -5147,7 +5162,7 @@ public void xmlDocument() throws Exception {
+ "viewportElement",
EDGE = "attributeStyleMap,autofocus,blur(),dataset,focus(),nonce,onabort,onanimationend,"
+ "onanimationiteration,onanimationstart,onauxclick,onbeforeinput,onbeforematch,onbeforetoggle,"
- + "onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,onclose,"
+ + "onbeforexrselect,onblur,oncancel,oncanplay,oncanplaythrough,onchange,onclick,onclose,oncommand,"
+ "oncontentvisibilityautostatechange,oncontextlost,oncontextmenu,oncontextrestored,oncopy,"
+ "oncuechange,oncut,ondblclick,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,"
+ "ondrop,ondurationchange,onemptied,onended,onerror,onfocus,onformdata,ongotpointercapture,oninput,"
@@ -5244,28 +5259,30 @@ public void svgElement() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "addEventListener(),appendChild(),ATTRIBUTE_NODE,baseURI,CDATA_SECTION_NODE,"
- + "childNodes,cloneNode(),COMMENT_NODE,"
- + "compareDocumentPosition(),contains(),dispatchEvent(),DOCUMENT_FRAGMENT_NODE,DOCUMENT_NODE,"
- + "DOCUMENT_POSITION_CONTAINED_BY,DOCUMENT_POSITION_CONTAINS,DOCUMENT_POSITION_DISCONNECTED,"
- + "DOCUMENT_POSITION_FOLLOWING,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC,DOCUMENT_POSITION_PRECEDING,"
- + "DOCUMENT_TYPE_NODE,ELEMENT_NODE,ENTITY_NODE,ENTITY_REFERENCE_NODE,firstChild,getRootNode(),"
- + "hasChildNodes(),insertBefore(),isConnected,isDefaultNamespace(),isEqualNode(),isSameNode(),"
- + "lastChild,localName,lookupNamespaceURI(),lookupPrefix(),name,namespaceURI,nextSibling,nodeName,"
- + "nodeType,nodeValue,normalize(),NOTATION_NODE,ownerDocument,ownerElement,parentElement,parentNode,"
- + "prefix,previousSibling,PROCESSING_INSTRUCTION_NODE,removeChild(),removeEventListener(),"
- + "replaceChild(),specified,TEXT_NODE,textContent,value",
- EDGE = "addEventListener(),appendChild(),ATTRIBUTE_NODE,baseURI,CDATA_SECTION_NODE,"
- + "childNodes,cloneNode(),COMMENT_NODE,"
- + "compareDocumentPosition(),contains(),dispatchEvent(),DOCUMENT_FRAGMENT_NODE,DOCUMENT_NODE,"
- + "DOCUMENT_POSITION_CONTAINED_BY,DOCUMENT_POSITION_CONTAINS,DOCUMENT_POSITION_DISCONNECTED,"
- + "DOCUMENT_POSITION_FOLLOWING,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC,DOCUMENT_POSITION_PRECEDING,"
- + "DOCUMENT_TYPE_NODE,ELEMENT_NODE,ENTITY_NODE,ENTITY_REFERENCE_NODE,firstChild,getRootNode(),"
- + "hasChildNodes(),insertBefore(),isConnected,isDefaultNamespace(),isEqualNode(),isSameNode(),"
- + "lastChild,localName,lookupNamespaceURI(),lookupPrefix(),name,namespaceURI,nextSibling,nodeName,"
- + "nodeType,nodeValue,normalize(),NOTATION_NODE,ownerDocument,ownerElement,parentElement,parentNode,"
- + "prefix,previousSibling,PROCESSING_INSTRUCTION_NODE,removeChild(),removeEventListener(),"
- + "replaceChild(),specified,TEXT_NODE,textContent,value",
+ @Alerts(CHROME = "addEventListener(),appendChild(),ATTRIBUTE_NODE,baseURI,CDATA_SECTION_NODE,childNodes,"
+ + "cloneNode(),COMMENT_NODE,compareDocumentPosition(),contains(),dispatchEvent(),"
+ + "DOCUMENT_FRAGMENT_NODE,DOCUMENT_NODE,DOCUMENT_POSITION_CONTAINED_BY,DOCUMENT_POSITION_CONTAINS,"
+ + "DOCUMENT_POSITION_DISCONNECTED,DOCUMENT_POSITION_FOLLOWING,"
+ + "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC,DOCUMENT_POSITION_PRECEDING,DOCUMENT_TYPE_NODE,"
+ + "ELEMENT_NODE,ENTITY_NODE,ENTITY_REFERENCE_NODE,firstChild,getRootNode(),hasChildNodes(),"
+ + "insertBefore(),isConnected,isDefaultNamespace(),isEqualNode(),isSameNode(),lastChild,localName,"
+ + "lookupNamespaceURI(),lookupPrefix(),name,namespaceURI,nextSibling,nodeName,nodeType,nodeValue,"
+ + "normalize(),NOTATION_NODE,ownerDocument,ownerElement,parentElement,parentNode,prefix,"
+ + "previousSibling,PROCESSING_INSTRUCTION_NODE,removeChild(),removeEventListener(),replaceChild(),"
+ + "specified,TEXT_NODE,textContent,value,"
+ + "when()",
+ EDGE = "addEventListener(),appendChild(),ATTRIBUTE_NODE,baseURI,CDATA_SECTION_NODE,childNodes,"
+ + "cloneNode(),COMMENT_NODE,compareDocumentPosition(),contains(),dispatchEvent(),"
+ + "DOCUMENT_FRAGMENT_NODE,DOCUMENT_NODE,DOCUMENT_POSITION_CONTAINED_BY,DOCUMENT_POSITION_CONTAINS,"
+ + "DOCUMENT_POSITION_DISCONNECTED,DOCUMENT_POSITION_FOLLOWING,"
+ + "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC,DOCUMENT_POSITION_PRECEDING,DOCUMENT_TYPE_NODE,"
+ + "ELEMENT_NODE,ENTITY_NODE,ENTITY_REFERENCE_NODE,firstChild,getRootNode(),hasChildNodes(),"
+ + "insertBefore(),isConnected,isDefaultNamespace(),isEqualNode(),isSameNode(),lastChild,localName,"
+ + "lookupNamespaceURI(),lookupPrefix(),name,namespaceURI,nextSibling,nodeName,nodeType,nodeValue,"
+ + "normalize(),NOTATION_NODE,ownerDocument,ownerElement,parentElement,parentNode,prefix,"
+ + "previousSibling,PROCESSING_INSTRUCTION_NODE,removeChild(),removeEventListener(),replaceChild(),"
+ + "specified,TEXT_NODE,textContent,value,"
+ + "when()",
FF = "addEventListener(),appendChild(),ATTRIBUTE_NODE,baseURI,CDATA_SECTION_NODE,"
+ "childNodes,cloneNode(),COMMENT_NODE,"
+ "compareDocumentPosition(),contains(),dispatchEvent(),DOCUMENT_FRAGMENT_NODE,DOCUMENT_NODE,"
@@ -5412,8 +5429,8 @@ public void range() throws Exception {
+ "nextSibling,nodeName,nodeType,nodeValue,normalize(),NOTATION_NODE,ownerDocument,parentElement,"
+ "parentNode,prepend(),previousSibling,PROCESSING_INSTRUCTION_NODE,querySelector(),"
+ "querySelectorAll(),removeChild(),removeEventListener(),replaceChild(),replaceChildren(),"
- + "TEXT_NODE,"
- + "textContent",
+ + "TEXT_NODE,textContent,"
+ + "when()",
EDGE = "addEventListener(),append(),appendChild(),ATTRIBUTE_NODE,baseURI,CDATA_SECTION_NODE,"
+ "childElementCount,childNodes,children,cloneNode(),COMMENT_NODE,compareDocumentPosition(),"
+ "contains(),dispatchEvent(),DOCUMENT_FRAGMENT_NODE,DOCUMENT_NODE,DOCUMENT_POSITION_CONTAINED_BY,"
@@ -5425,8 +5442,8 @@ public void range() throws Exception {
+ "nextSibling,nodeName,nodeType,nodeValue,normalize(),NOTATION_NODE,ownerDocument,parentElement,"
+ "parentNode,prepend(),previousSibling,PROCESSING_INSTRUCTION_NODE,querySelector(),"
+ "querySelectorAll(),removeChild(),removeEventListener(),replaceChild(),replaceChildren(),"
- + "TEXT_NODE,"
- + "textContent",
+ + "TEXT_NODE,textContent,"
+ + "when()",
FF = "addEventListener(),append(),appendChild(),ATTRIBUTE_NODE,baseURI,CDATA_SECTION_NODE,"
+ "childElementCount,childNodes,"
+ "children,cloneNode(),COMMENT_NODE,compareDocumentPosition(),contains(),dispatchEvent(),"
@@ -5524,8 +5541,8 @@ public void documentFragment() throws Exception {
+ "createMediaStreamSource(),createOscillator(),createPanner(),createPeriodicWave(),"
+ "createScriptProcessor(),createStereoPanner(),createWaveShaper(),currentTime,decodeAudioData(),"
+ "destination,dispatchEvent(),getOutputTimestamp(),listener,onerror,onsinkchange,onstatechange,"
- + "outputLatency,removeEventListener(),resume(),sampleRate,setSinkId(),sinkId,state,"
- + "suspend()",
+ + "outputLatency,removeEventListener(),resume(),sampleRate,setSinkId(),sinkId,state,suspend(),"
+ + "when()",
EDGE = "addEventListener(),audioWorklet,baseLatency,close(),createAnalyser(),createBiquadFilter(),"
+ "createBuffer(),createBufferSource(),createChannelMerger(),createChannelSplitter(),"
+ "createConstantSource(),createConvolver(),createDelay(),createDynamicsCompressor(),createGain(),"
@@ -5533,8 +5550,8 @@ public void documentFragment() throws Exception {
+ "createMediaStreamSource(),createOscillator(),createPanner(),createPeriodicWave(),"
+ "createScriptProcessor(),createStereoPanner(),createWaveShaper(),currentTime,decodeAudioData(),"
+ "destination,dispatchEvent(),getOutputTimestamp(),listener,onerror,onsinkchange,onstatechange,"
- + "outputLatency,removeEventListener(),resume(),sampleRate,setSinkId(),sinkId,state,"
- + "suspend()",
+ + "outputLatency,removeEventListener(),resume(),sampleRate,setSinkId(),sinkId,state,suspend(),"
+ + "when()",
FF = "addEventListener(),audioWorklet,baseLatency,close(),createAnalyser(),createBiquadFilter(),"
+ "createBuffer(),createBufferSource(),createChannelMerger(),createChannelSplitter(),"
+ "createConstantSource(),createConvolver(),createDelay(),createDynamicsCompressor(),createGain(),"
@@ -5573,14 +5590,16 @@ public void audioContext() throws Exception {
+ "createOscillator(),createPanner(),createPeriodicWave(),createScriptProcessor(),"
+ "createStereoPanner(),createWaveShaper(),currentTime,decodeAudioData(),destination,"
+ "dispatchEvent(),length,listener,oncomplete,onstatechange,removeEventListener(),resume(),"
- + "sampleRate,startRendering(),state,suspend()",
+ + "sampleRate,startRendering(),state,suspend(),"
+ + "when()",
EDGE = "addEventListener(),audioWorklet,createAnalyser(),createBiquadFilter(),createBuffer(),"
+ "createBufferSource(),createChannelMerger(),createChannelSplitter(),createConstantSource(),"
+ "createConvolver(),createDelay(),createDynamicsCompressor(),createGain(),createIIRFilter(),"
+ "createOscillator(),createPanner(),createPeriodicWave(),createScriptProcessor(),"
+ "createStereoPanner(),createWaveShaper(),currentTime,decodeAudioData(),destination,"
+ "dispatchEvent(),length,listener,oncomplete,onstatechange,removeEventListener(),resume(),"
- + "sampleRate,startRendering(),state,suspend()",
+ + "sampleRate,startRendering(),state,suspend(),"
+ + "when()",
FF = "addEventListener(),audioWorklet,createAnalyser(),createBiquadFilter(),createBuffer(),"
+ "createBufferSource(),createChannelMerger(),createChannelSplitter(),createConstantSource(),"
+ "createConvolver(),createDelay(),createDynamicsCompressor(),createGain(),createIIRFilter(),"
@@ -5635,10 +5654,12 @@ public void audioParam() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "addEventListener(),channelCount,channelCountMode,channelInterpretation,connect(),"
- + "context,disconnect(),dispatchEvent(),gain,numberOfInputs,numberOfOutputs,removeEventListener()",
- EDGE = "addEventListener(),channelCount,channelCountMode,channelInterpretation,connect(),"
- + "context,disconnect(),dispatchEvent(),gain,numberOfInputs,numberOfOutputs,removeEventListener()",
+ @Alerts(CHROME = "addEventListener(),channelCount,channelCountMode,channelInterpretation,connect(),context,"
+ + "disconnect(),dispatchEvent(),gain,numberOfInputs,numberOfOutputs,removeEventListener(),"
+ + "when()",
+ EDGE = "addEventListener(),channelCount,channelCountMode,channelInterpretation,connect(),context,"
+ + "disconnect(),dispatchEvent(),gain,numberOfInputs,numberOfOutputs,removeEventListener(),"
+ + "when()",
FF = "addEventListener(),channelCount,channelCountMode,channelInterpretation,connect(),"
+ "context,disconnect(),dispatchEvent(),gain,numberOfInputs,numberOfOutputs,removeEventListener()",
FF_ESR = "addEventListener(),channelCount,channelCountMode,channelInterpretation,connect(),"
@@ -6012,10 +6033,12 @@ public void pageTransitionEvent() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "addEventListener(),dispatchEvent(),length,onaddsourcebuffer,"
- + "onremovesourcebuffer,removeEventListener()",
- EDGE = "addEventListener(),dispatchEvent(),length,onaddsourcebuffer,"
- + "onremovesourcebuffer,removeEventListener()",
+ @Alerts(CHROME = "addEventListener(),dispatchEvent(),length,onaddsourcebuffer,onremovesourcebuffer,"
+ + "removeEventListener(),"
+ + "when()",
+ EDGE = "addEventListener(),dispatchEvent(),length,onaddsourcebuffer,onremovesourcebuffer,"
+ + "removeEventListener(),"
+ + "when()",
FF = "addEventListener(),dispatchEvent(),length,onaddsourcebuffer,"
+ "onremovesourcebuffer,removeEventListener()",
FF_ESR = "addEventListener(),dispatchEvent(),length,onaddsourcebuffer,"
@@ -6199,30 +6222,30 @@ public void nodeListButtonLabels() throws Exception {
+ "319,32,320,321,322,323,324,325,326,327,328,329,33,330,331,332,333,334,335,336,337,338,339,34,340,"
+ "341,342,343,344,345,346,347,348,349,35,350,351,352,353,354,355,356,357,358,359,36,360,361,362,"
+ "363,364,365,366,367,368,369,37,370,371,372,373,374,375,376,377,378,379,38,380,381,382,383,384,"
- + "385,386,39,4,40,41,42,43,44,45,46,47,48,49,5,50,51,52,53,54,55,56,57,58,59,6,60,61,62,63,64,65,"
- + "66,67,68,69,7,70,71,72,73,74,75,76,77,78,79,8,80,81,82,83,84,85,86,87,88,89,9,90,91,92,93,94,95,"
- + "96,97,98,99,accentColor,additiveSymbols,alignContent,alignItems,alignmentBaseline,alignSelf,all,"
- + "anchorName,anchorScope,animation,animationComposition,animationDelay,animationDirection,"
- + "animationDuration,animationFillMode,animationIterationCount,animationName,animationPlayState,"
- + "animationRange,animationRangeEnd,animationRangeStart,animationTimeline,animationTimingFunction,"
- + "appearance,appRegion,ascentOverride,aspectRatio,backdropFilter,backfaceVisibility,background,"
- + "backgroundAttachment,backgroundBlendMode,backgroundClip,backgroundColor,backgroundImage,"
- + "backgroundOrigin,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundRepeat,"
- + "backgroundSize,baselineShift,baselineSource,basePalette,blockSize,border,borderBlock,"
- + "borderBlockColor,borderBlockEnd,borderBlockEndColor,borderBlockEndStyle,borderBlockEndWidth,"
- + "borderBlockStart,borderBlockStartColor,borderBlockStartStyle,borderBlockStartWidth,"
- + "borderBlockStyle,borderBlockWidth,borderBottom,borderBottomColor,borderBottomLeftRadius,"
- + "borderBottomRightRadius,borderBottomStyle,borderBottomWidth,borderCollapse,borderColor,"
- + "borderEndEndRadius,borderEndStartRadius,borderImage,borderImageOutset,borderImageRepeat,"
- + "borderImageSlice,borderImageSource,borderImageWidth,borderInline,borderInlineColor,"
- + "borderInlineEnd,borderInlineEndColor,borderInlineEndStyle,borderInlineEndWidth,borderInlineStart,"
- + "borderInlineStartColor,borderInlineStartStyle,borderInlineStartWidth,borderInlineStyle,"
- + "borderInlineWidth,borderLeft,borderLeftColor,borderLeftStyle,borderLeftWidth,borderRadius,"
- + "borderRight,borderRightColor,borderRightStyle,borderRightWidth,borderSpacing,"
- + "borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,borderTopColor,"
- + "borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,borderWidth,bottom,"
- + "boxDecorationBreak,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,bufferedRendering,"
- + "captionSide,caretColor,clear,clip,clipPath,clipRule,color,colorInterpolation,"
+ + "385,386,387,388,389,39,390,4,40,41,42,43,44,45,46,47,48,49,5,50,51,52,53,54,55,56,57,58,59,6,60,"
+ + "61,62,63,64,65,66,67,68,69,7,70,71,72,73,74,75,76,77,78,79,8,80,81,82,83,84,85,86,87,88,89,9,90,"
+ + "91,92,93,94,95,96,97,98,99,accentColor,additiveSymbols,alignContent,alignItems,alignmentBaseline,"
+ + "alignSelf,all,anchorName,anchorScope,animation,animationComposition,animationDelay,"
+ + "animationDirection,animationDuration,animationFillMode,animationIterationCount,animationName,"
+ + "animationPlayState,animationRange,animationRangeEnd,animationRangeStart,animationTimeline,"
+ + "animationTimingFunction,appearance,appRegion,ascentOverride,aspectRatio,backdropFilter,"
+ + "backfaceVisibility,background,backgroundAttachment,backgroundBlendMode,backgroundClip,"
+ + "backgroundColor,backgroundImage,backgroundOrigin,backgroundPosition,backgroundPositionX,"
+ + "backgroundPositionY,backgroundRepeat,backgroundSize,baselineShift,baselineSource,basePalette,"
+ + "blockSize,border,borderBlock,borderBlockColor,borderBlockEnd,borderBlockEndColor,"
+ + "borderBlockEndStyle,borderBlockEndWidth,borderBlockStart,borderBlockStartColor,"
+ + "borderBlockStartStyle,borderBlockStartWidth,borderBlockStyle,borderBlockWidth,borderBottom,"
+ + "borderBottomColor,borderBottomLeftRadius,borderBottomRightRadius,borderBottomStyle,"
+ + "borderBottomWidth,borderCollapse,borderColor,borderEndEndRadius,borderEndStartRadius,borderImage,"
+ + "borderImageOutset,borderImageRepeat,borderImageSlice,borderImageSource,borderImageWidth,"
+ + "borderInline,borderInlineColor,borderInlineEnd,borderInlineEndColor,borderInlineEndStyle,"
+ + "borderInlineEndWidth,borderInlineStart,borderInlineStartColor,borderInlineStartStyle,"
+ + "borderInlineStartWidth,borderInlineStyle,borderInlineWidth,borderLeft,borderLeftColor,"
+ + "borderLeftStyle,borderLeftWidth,borderRadius,borderRight,borderRightColor,borderRightStyle,"
+ + "borderRightWidth,borderSpacing,borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,"
+ + "borderTopColor,borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,"
+ + "borderWidth,bottom,boxDecorationBreak,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,"
+ + "bufferedRendering,captionSide,caretColor,clear,clip,clipPath,clipRule,color,colorInterpolation,"
+ "colorInterpolationFilters,colorRendering,colorScheme,columnCount,columnFill,columnGap,columnRule,"
+ "columnRuleColor,columnRuleStyle,columnRuleWidth,columns,columnSpan,columnWidth,contain,container,"
+ "containerName,containerType,containIntrinsicBlockSize,containIntrinsicHeight,"
@@ -6240,43 +6263,43 @@ public void nodeListButtonLabels() throws Exception {
+ "gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,height,hyphenateCharacter,"
+ "hyphenateLimitChars,hyphens,imageOrientation,imageRendering,inherits,initialLetter,initialValue,"
+ "inlineSize,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,"
- + "insetInlineStart,interpolateSize,isolation,item(),justifyContent,justifyItems,justifySelf,left,"
- + "length,letterSpacing,lightingColor,lineBreak,lineGapOverride,lineHeight,listStyle,listStyleImage,"
- + "listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,"
- + "marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marker,markerEnd,"
- + "markerMid,markerStart,mask,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,"
- + "maskRepeat,maskSize,maskType,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,"
- + "maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,navigation,negative,"
- + "objectFit,objectPosition,objectViewBox,offset,offsetAnchor,offsetDistance,offsetPath,"
- + "offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,"
- + "outlineStyle,outlineWidth,overflow,overflowAnchor,overflowClipMargin,overflowWrap,overflowX,"
- + "overflowY,overlay,overrideColors,overscrollBehavior,overscrollBehaviorBlock,"
- + "overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,pad,padding,paddingBlock,"
- + "paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,"
- + "paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,"
- + "pageBreakInside,pageOrientation,paintOrder,parentRule,perspective,perspectiveOrigin,placeContent,"
- + "placeItems,placeSelf,pointerEvents,position,positionAnchor,positionArea,positionTry,"
- + "positionTryFallbacks,positionTryOrder,positionVisibility,prefix,quotes,r,range,removeProperty(),"
- + "resize,right,rotate,rowGap,rubyAlign,rubyPosition,rx,ry,scale,scrollbarColor,scrollbarGutter,"
- + "scrollbarWidth,scrollBehavior,scrollInitialTarget,scrollMargin,scrollMarginBlock,"
- + "scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,scrollMarginInline,"
- + "scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,scrollMarginRight,scrollMarginTop,"
- + "scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,"
- + "scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,"
- + "scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapStop,"
- + "scrollSnapType,scrollTimeline,scrollTimelineAxis,scrollTimelineName,setProperty(),"
- + "shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,size,sizeAdjust,speak,speakAs,src,"
- + "stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,"
- + "strokeMiterlimit,strokeOpacity,strokeWidth,suffix,symbols,syntax,system,tableLayout,tabSize,"
- + "textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,textCombineUpright,"
- + "textDecoration,textDecorationColor,textDecorationLine,textDecorationSkipInk,textDecorationStyle,"
- + "textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,"
- + "textIndent,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textSpacingTrim,"
- + "textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,textWrapMode,textWrapStyle,"
- + "timelineScope,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,"
- + "transitionBehavior,transitionDelay,transitionDuration,transitionProperty,"
- + "transitionTimingFunction,translate,types,unicodeBidi,unicodeRange,userSelect,vectorEffect,"
- + "verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,"
+ + "insetInlineStart,interactivity,interpolateSize,isolation,item(),justifyContent,justifyItems,"
+ + "justifySelf,left,length,letterSpacing,lightingColor,lineBreak,lineGapOverride,lineHeight,"
+ + "listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,"
+ + "marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,"
+ + "marginRight,marginTop,marker,markerEnd,markerMid,markerStart,mask,maskClip,maskComposite,"
+ + "maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,mathDepth,mathShift,"
+ + "mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxWidth,minBlockSize,minHeight,minInlineSize,"
+ + "minWidth,mixBlendMode,navigation,negative,objectFit,objectPosition,objectViewBox,offset,"
+ + "offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,"
+ + "outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,"
+ + "overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overlay,overrideColors,"
+ + "overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,"
+ + "overscrollBehaviorY,pad,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,"
+ + "paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,"
+ + "pageBreakAfter,pageBreakBefore,pageBreakInside,pageOrientation,paintOrder,parentRule,perspective,"
+ + "perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,positionAnchor,"
+ + "positionArea,positionTry,positionTryFallbacks,positionTryOrder,positionVisibility,prefix,quotes,"
+ + "r,range,removeProperty(),resize,right,rotate,rowGap,rubyAlign,rubyPosition,rx,ry,scale,"
+ + "scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,scrollInitialTarget,scrollMargin,"
+ + "scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,"
+ + "scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,"
+ + "scrollMarginRight,scrollMarginTop,scrollMarkerGroup,scrollPadding,scrollPaddingBlock,"
+ + "scrollPaddingBlockEnd,scrollPaddingBlockStart,scrollPaddingBottom,scrollPaddingInline,"
+ + "scrollPaddingInlineEnd,scrollPaddingInlineStart,scrollPaddingLeft,scrollPaddingRight,"
+ + "scrollPaddingTop,scrollSnapAlign,scrollSnapStop,scrollSnapType,scrollTimeline,scrollTimelineAxis,"
+ + "scrollTimelineName,setProperty(),shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,"
+ + "size,sizeAdjust,speak,speakAs,src,stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,"
+ + "strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,strokeWidth,suffix,symbols,syntax,"
+ + "system,tableLayout,tabSize,textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,"
+ + "textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkipInk,"
+ + "textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,"
+ + "textEmphasisStyle,textIndent,textOrientation,textOverflow,textRendering,textShadow,"
+ + "textSizeAdjust,textSpacingTrim,textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,"
+ + "textWrapMode,textWrapStyle,timelineScope,top,touchAction,transform,transformBox,transformOrigin,"
+ + "transformStyle,transition,transitionBehavior,transitionDelay,transitionDuration,"
+ + "transitionProperty,transitionTimingFunction,translate,types,unicodeBidi,unicodeRange,userSelect,"
+ + "vectorEffect,verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,"
+ "viewTransitionClass,viewTransitionName,visibility,webkitAlignContent,webkitAlignItems,"
+ "webkitAlignSelf,webkitAnimation,webkitAnimationDelay,webkitAnimationDirection,"
+ "webkitAnimationDuration,webkitAnimationFillMode,webkitAnimationIterationCount,"
@@ -6329,30 +6352,30 @@ public void nodeListButtonLabels() throws Exception {
+ "319,32,320,321,322,323,324,325,326,327,328,329,33,330,331,332,333,334,335,336,337,338,339,34,340,"
+ "341,342,343,344,345,346,347,348,349,35,350,351,352,353,354,355,356,357,358,359,36,360,361,362,"
+ "363,364,365,366,367,368,369,37,370,371,372,373,374,375,376,377,378,379,38,380,381,382,383,384,"
- + "385,386,39,4,40,41,42,43,44,45,46,47,48,49,5,50,51,52,53,54,55,56,57,58,59,6,60,61,62,63,64,65,"
- + "66,67,68,69,7,70,71,72,73,74,75,76,77,78,79,8,80,81,82,83,84,85,86,87,88,89,9,90,91,92,93,94,95,"
- + "96,97,98,99,accentColor,additiveSymbols,alignContent,alignItems,alignmentBaseline,alignSelf,all,"
- + "anchorName,anchorScope,animation,animationComposition,animationDelay,animationDirection,"
- + "animationDuration,animationFillMode,animationIterationCount,animationName,animationPlayState,"
- + "animationRange,animationRangeEnd,animationRangeStart,animationTimeline,animationTimingFunction,"
- + "appearance,appRegion,ascentOverride,aspectRatio,backdropFilter,backfaceVisibility,background,"
- + "backgroundAttachment,backgroundBlendMode,backgroundClip,backgroundColor,backgroundImage,"
- + "backgroundOrigin,backgroundPosition,backgroundPositionX,backgroundPositionY,backgroundRepeat,"
- + "backgroundSize,baselineShift,baselineSource,basePalette,blockSize,border,borderBlock,"
- + "borderBlockColor,borderBlockEnd,borderBlockEndColor,borderBlockEndStyle,borderBlockEndWidth,"
- + "borderBlockStart,borderBlockStartColor,borderBlockStartStyle,borderBlockStartWidth,"
- + "borderBlockStyle,borderBlockWidth,borderBottom,borderBottomColor,borderBottomLeftRadius,"
- + "borderBottomRightRadius,borderBottomStyle,borderBottomWidth,borderCollapse,borderColor,"
- + "borderEndEndRadius,borderEndStartRadius,borderImage,borderImageOutset,borderImageRepeat,"
- + "borderImageSlice,borderImageSource,borderImageWidth,borderInline,borderInlineColor,"
- + "borderInlineEnd,borderInlineEndColor,borderInlineEndStyle,borderInlineEndWidth,borderInlineStart,"
- + "borderInlineStartColor,borderInlineStartStyle,borderInlineStartWidth,borderInlineStyle,"
- + "borderInlineWidth,borderLeft,borderLeftColor,borderLeftStyle,borderLeftWidth,borderRadius,"
- + "borderRight,borderRightColor,borderRightStyle,borderRightWidth,borderSpacing,"
- + "borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,borderTopColor,"
- + "borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,borderWidth,bottom,"
- + "boxDecorationBreak,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,bufferedRendering,"
- + "captionSide,caretColor,clear,clip,clipPath,clipRule,color,colorInterpolation,"
+ + "385,386,387,388,389,39,390,4,40,41,42,43,44,45,46,47,48,49,5,50,51,52,53,54,55,56,57,58,59,6,60,"
+ + "61,62,63,64,65,66,67,68,69,7,70,71,72,73,74,75,76,77,78,79,8,80,81,82,83,84,85,86,87,88,89,9,90,"
+ + "91,92,93,94,95,96,97,98,99,accentColor,additiveSymbols,alignContent,alignItems,alignmentBaseline,"
+ + "alignSelf,all,anchorName,anchorScope,animation,animationComposition,animationDelay,"
+ + "animationDirection,animationDuration,animationFillMode,animationIterationCount,animationName,"
+ + "animationPlayState,animationRange,animationRangeEnd,animationRangeStart,animationTimeline,"
+ + "animationTimingFunction,appearance,appRegion,ascentOverride,aspectRatio,backdropFilter,"
+ + "backfaceVisibility,background,backgroundAttachment,backgroundBlendMode,backgroundClip,"
+ + "backgroundColor,backgroundImage,backgroundOrigin,backgroundPosition,backgroundPositionX,"
+ + "backgroundPositionY,backgroundRepeat,backgroundSize,baselineShift,baselineSource,basePalette,"
+ + "blockSize,border,borderBlock,borderBlockColor,borderBlockEnd,borderBlockEndColor,"
+ + "borderBlockEndStyle,borderBlockEndWidth,borderBlockStart,borderBlockStartColor,"
+ + "borderBlockStartStyle,borderBlockStartWidth,borderBlockStyle,borderBlockWidth,borderBottom,"
+ + "borderBottomColor,borderBottomLeftRadius,borderBottomRightRadius,borderBottomStyle,"
+ + "borderBottomWidth,borderCollapse,borderColor,borderEndEndRadius,borderEndStartRadius,borderImage,"
+ + "borderImageOutset,borderImageRepeat,borderImageSlice,borderImageSource,borderImageWidth,"
+ + "borderInline,borderInlineColor,borderInlineEnd,borderInlineEndColor,borderInlineEndStyle,"
+ + "borderInlineEndWidth,borderInlineStart,borderInlineStartColor,borderInlineStartStyle,"
+ + "borderInlineStartWidth,borderInlineStyle,borderInlineWidth,borderLeft,borderLeftColor,"
+ + "borderLeftStyle,borderLeftWidth,borderRadius,borderRight,borderRightColor,borderRightStyle,"
+ + "borderRightWidth,borderSpacing,borderStartEndRadius,borderStartStartRadius,borderStyle,borderTop,"
+ + "borderTopColor,borderTopLeftRadius,borderTopRightRadius,borderTopStyle,borderTopWidth,"
+ + "borderWidth,bottom,boxDecorationBreak,boxShadow,boxSizing,breakAfter,breakBefore,breakInside,"
+ + "bufferedRendering,captionSide,caretColor,clear,clip,clipPath,clipRule,color,colorInterpolation,"
+ "colorInterpolationFilters,colorRendering,colorScheme,columnCount,columnFill,columnGap,columnRule,"
+ "columnRuleColor,columnRuleStyle,columnRuleWidth,columns,columnSpan,columnWidth,contain,container,"
+ "containerName,containerType,containIntrinsicBlockSize,containIntrinsicHeight,"
@@ -6370,43 +6393,43 @@ public void nodeListButtonLabels() throws Exception {
+ "gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,height,hyphenateCharacter,"
+ "hyphenateLimitChars,hyphens,imageOrientation,imageRendering,inherits,initialLetter,initialValue,"
+ "inlineSize,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,"
- + "insetInlineStart,interpolateSize,isolation,item(),justifyContent,justifyItems,justifySelf,left,"
- + "length,letterSpacing,lightingColor,lineBreak,lineGapOverride,lineHeight,listStyle,listStyleImage,"
- + "listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,"
- + "marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marker,markerEnd,"
- + "markerMid,markerStart,mask,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,"
- + "maskRepeat,maskSize,maskType,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,"
- + "maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,navigation,negative,"
- + "objectFit,objectPosition,objectViewBox,offset,offsetAnchor,offsetDistance,offsetPath,"
- + "offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,"
- + "outlineStyle,outlineWidth,overflow,overflowAnchor,overflowClipMargin,overflowWrap,overflowX,"
- + "overflowY,overlay,overrideColors,overscrollBehavior,overscrollBehaviorBlock,"
- + "overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,pad,padding,paddingBlock,"
- + "paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,"
- + "paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,"
- + "pageBreakInside,pageOrientation,paintOrder,parentRule,perspective,perspectiveOrigin,placeContent,"
- + "placeItems,placeSelf,pointerEvents,position,positionAnchor,positionArea,positionTry,"
- + "positionTryFallbacks,positionTryOrder,positionVisibility,prefix,quotes,r,range,removeProperty(),"
- + "resize,right,rotate,rowGap,rubyAlign,rubyPosition,rx,ry,scale,scrollbarColor,scrollbarGutter,"
- + "scrollbarWidth,scrollBehavior,scrollInitialTarget,scrollMargin,scrollMarginBlock,"
- + "scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,scrollMarginInline,"
- + "scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,scrollMarginRight,scrollMarginTop,"
- + "scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,"
- + "scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,"
- + "scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapStop,"
- + "scrollSnapType,scrollTimeline,scrollTimelineAxis,scrollTimelineName,setProperty(),"
- + "shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,size,sizeAdjust,speak,speakAs,src,"
- + "stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,"
- + "strokeMiterlimit,strokeOpacity,strokeWidth,suffix,symbols,syntax,system,tableLayout,tabSize,"
- + "textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,textCombineUpright,"
- + "textDecoration,textDecorationColor,textDecorationLine,textDecorationSkipInk,textDecorationStyle,"
- + "textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,"
- + "textIndent,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textSpacingTrim,"
- + "textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,textWrapMode,textWrapStyle,"
- + "timelineScope,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,"
- + "transitionBehavior,transitionDelay,transitionDuration,transitionProperty,"
- + "transitionTimingFunction,translate,types,unicodeBidi,unicodeRange,userSelect,vectorEffect,"
- + "verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,"
+ + "insetInlineStart,interactivity,interpolateSize,isolation,item(),justifyContent,justifyItems,"
+ + "justifySelf,left,length,letterSpacing,lightingColor,lineBreak,lineGapOverride,lineHeight,"
+ + "listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,"
+ + "marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,"
+ + "marginRight,marginTop,marker,markerEnd,markerMid,markerStart,mask,maskClip,maskComposite,"
+ + "maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,mathDepth,mathShift,"
+ + "mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxWidth,minBlockSize,minHeight,minInlineSize,"
+ + "minWidth,mixBlendMode,navigation,negative,objectFit,objectPosition,objectViewBox,offset,"
+ + "offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,"
+ + "outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,"
+ + "overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overlay,overrideColors,"
+ + "overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,"
+ + "overscrollBehaviorY,pad,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,"
+ + "paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,"
+ + "pageBreakAfter,pageBreakBefore,pageBreakInside,pageOrientation,paintOrder,parentRule,perspective,"
+ + "perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,positionAnchor,"
+ + "positionArea,positionTry,positionTryFallbacks,positionTryOrder,positionVisibility,prefix,quotes,"
+ + "r,range,removeProperty(),resize,right,rotate,rowGap,rubyAlign,rubyPosition,rx,ry,scale,"
+ + "scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,scrollInitialTarget,scrollMargin,"
+ + "scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,"
+ + "scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,"
+ + "scrollMarginRight,scrollMarginTop,scrollMarkerGroup,scrollPadding,scrollPaddingBlock,"
+ + "scrollPaddingBlockEnd,scrollPaddingBlockStart,scrollPaddingBottom,scrollPaddingInline,"
+ + "scrollPaddingInlineEnd,scrollPaddingInlineStart,scrollPaddingLeft,scrollPaddingRight,"
+ + "scrollPaddingTop,scrollSnapAlign,scrollSnapStop,scrollSnapType,scrollTimeline,scrollTimelineAxis,"
+ + "scrollTimelineName,setProperty(),shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,"
+ + "size,sizeAdjust,speak,speakAs,src,stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,"
+ + "strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,strokeWidth,suffix,symbols,syntax,"
+ + "system,tableLayout,tabSize,textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,"
+ + "textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkipInk,"
+ + "textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,"
+ + "textEmphasisStyle,textIndent,textOrientation,textOverflow,textRendering,textShadow,"
+ + "textSizeAdjust,textSpacingTrim,textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,"
+ + "textWrapMode,textWrapStyle,timelineScope,top,touchAction,transform,transformBox,transformOrigin,"
+ + "transformStyle,transition,transitionBehavior,transitionDelay,transitionDuration,"
+ + "transitionProperty,transitionTimingFunction,translate,types,unicodeBidi,unicodeRange,userSelect,"
+ + "vectorEffect,verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,"
+ "viewTransitionClass,viewTransitionName,visibility,webkitAlignContent,webkitAlignItems,"
+ "webkitAlignSelf,webkitAnimation,webkitAnimationDelay,webkitAnimationDirection,"
+ "webkitAnimationDuration,webkitAnimationFillMode,webkitAnimationIterationCount,"
@@ -6488,9 +6511,9 @@ public void nodeListButtonLabels() throws Exception {
+ "298,299,3,30,300,301,302,303,304,305,306,307,308,309,31,310,311,312,313,314,315,316,317,318,319,"
+ "32,320,321,322,323,324,325,326,327,328,329,33,330,331,332,333,334,335,336,337,338,339,34,340,341,"
+ "342,343,344,345,346,347,348,349,35,350,351,352,353,354,355,356,357,358,359,36,360,361,362,363,"
- + "364,365,366,367,37,38,39,4,40,41,42,43,44,45,46,47,48,49,5,50,51,52,53,54,55,56,57,58,59,6,60,61,"
- + "62,63,64,65,66,67,68,69,7,70,71,72,73,74,75,76,77,78,79,8,80,81,82,83,84,85,86,87,88,89,9,90,91,"
- + "92,93,94,95,96,97,98,99,accent-color,accentColor,align-content,align-items,align-self,"
+ + "364,365,366,367,368,37,38,39,4,40,41,42,43,44,45,46,47,48,49,5,50,51,52,53,54,55,56,57,58,59,6,"
+ + "60,61,62,63,64,65,66,67,68,69,7,70,71,72,73,74,75,76,77,78,79,8,80,81,82,83,84,85,86,87,88,89,9,"
+ + "90,91,92,93,94,95,96,97,98,99,accent-color,accentColor,align-content,align-items,align-self,"
+ "alignContent,alignItems,alignSelf,all,animation,animation-composition,animation-delay,"
+ "animation-direction,animation-duration,animation-fill-mode,animation-iteration-count,"
+ "animation-name,animation-play-state,animation-timing-function,animationComposition,"
@@ -6559,58 +6582,59 @@ public void nodeListButtonLabels() throws Exception {
+ "grid-template,grid-template-areas,grid-template-columns,grid-template-rows,gridArea,"
+ "gridAutoColumns,gridAutoFlow,gridAutoRows,gridColumn,gridColumnEnd,gridColumnGap,gridColumnStart,"
+ "gridGap,gridRow,gridRowEnd,gridRowGap,gridRowStart,gridTemplate,gridTemplateAreas,"
- + "gridTemplateColumns,gridTemplateRows,height,hyphenate-character,hyphenateCharacter,hyphens,"
- + "image-orientation,image-rendering,imageOrientation,imageRendering,ime-mode,imeMode,inline-size,"
- + "inlineSize,inset,inset-block,inset-block-end,inset-block-start,inset-inline,inset-inline-end,"
- + "inset-inline-start,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,"
- + "insetInlineStart,isolation,item(),justify-content,justify-items,justify-self,justifyContent,"
- + "justifyItems,justifySelf,left,length,letter-spacing,letterSpacing,lighting-color,lightingColor,"
- + "line-break,line-height,lineBreak,lineHeight,list-style,list-style-image,list-style-position,"
- + "list-style-type,listStyle,listStyleImage,listStylePosition,listStyleType,margin,margin-block,"
- + "margin-block-end,margin-block-start,margin-bottom,margin-inline,margin-inline-end,"
- + "margin-inline-start,margin-left,margin-right,margin-top,marginBlock,marginBlockEnd,"
- + "marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,"
- + "marginRight,marginTop,marker,marker-end,marker-mid,marker-start,markerEnd,markerMid,markerStart,"
- + "mask,mask-clip,mask-composite,mask-image,mask-mode,mask-origin,mask-position,mask-position-x,"
- + "mask-position-y,mask-repeat,mask-size,mask-type,maskClip,maskComposite,maskImage,maskMode,"
- + "maskOrigin,maskPosition,maskPositionX,maskPositionY,maskRepeat,maskSize,maskType,math-depth,"
- + "math-style,mathDepth,mathStyle,max-block-size,max-height,max-inline-size,max-width,maxBlockSize,"
- + "maxHeight,maxInlineSize,maxWidth,min-block-size,min-height,min-inline-size,min-width,"
- + "minBlockSize,minHeight,minInlineSize,minWidth,mix-blend-mode,mixBlendMode,MozAnimation,"
- + "MozAnimationDelay,MozAnimationDirection,MozAnimationDuration,MozAnimationFillMode,"
- + "MozAnimationIterationCount,MozAnimationName,MozAnimationPlayState,MozAnimationTimingFunction,"
- + "MozAppearance,MozBackfaceVisibility,MozBorderEnd,MozBorderEndColor,MozBorderEndStyle,"
- + "MozBorderEndWidth,MozBorderImage,MozBorderStart,MozBorderStartColor,MozBorderStartStyle,"
- + "MozBorderStartWidth,MozBoxAlign,MozBoxDirection,MozBoxFlex,MozBoxOrdinalGroup,MozBoxOrient,"
- + "MozBoxPack,MozBoxSizing,MozFloatEdge,MozFontFeatureSettings,MozFontLanguageOverride,"
- + "MozForceBrokenImageIcon,MozHyphens,MozMarginEnd,MozMarginStart,MozOrient,MozPaddingEnd,"
- + "MozPaddingStart,MozPerspective,MozPerspectiveOrigin,MozTabSize,MozTextSizeAdjust,MozTransform,"
- + "MozTransformOrigin,MozTransformStyle,MozUserSelect,MozWindowDragging,object-fit,object-position,"
- + "objectFit,objectPosition,offset,offset-anchor,offset-distance,offset-path,offset-position,"
- + "offset-rotate,offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,"
- + "outline,outline-color,outline-offset,outline-style,outline-width,outlineColor,outlineOffset,"
- + "outlineStyle,outlineWidth,overflow,overflow-anchor,overflow-block,overflow-clip-margin,"
- + "overflow-inline,overflow-wrap,overflow-x,overflow-y,overflowAnchor,overflowBlock,"
- + "overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overscroll-behavior,"
- + "overscroll-behavior-block,overscroll-behavior-inline,overscroll-behavior-x,overscroll-behavior-y,"
- + "overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,"
- + "overscrollBehaviorY,padding,padding-block,padding-block-end,padding-block-start,padding-bottom,"
- + "padding-inline,padding-inline-end,padding-inline-start,padding-left,padding-right,padding-top,"
- + "paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,"
- + "paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,page-break-after,page-break-before,"
- + "page-break-inside,pageBreakAfter,pageBreakBefore,pageBreakInside,paint-order,paintOrder,"
- + "parentRule,perspective,perspective-origin,perspectiveOrigin,place-content,place-items,place-self,"
- + "placeContent,placeItems,placeSelf,pointer-events,pointerEvents,position,print-color-adjust,"
- + "printColorAdjust,quotes,r,removeProperty(),resize,right,rotate,row-gap,rowGap,ruby-align,"
- + "ruby-position,rubyAlign,rubyPosition,rx,ry,scale,scroll-behavior,scroll-margin,"
- + "scroll-margin-block,scroll-margin-block-end,scroll-margin-block-start,scroll-margin-bottom,"
- + "scroll-margin-inline,scroll-margin-inline-end,scroll-margin-inline-start,scroll-margin-left,"
- + "scroll-margin-right,scroll-margin-top,scroll-padding,scroll-padding-block,"
- + "scroll-padding-block-end,scroll-padding-block-start,scroll-padding-bottom,scroll-padding-inline,"
- + "scroll-padding-inline-end,scroll-padding-inline-start,scroll-padding-left,scroll-padding-right,"
- + "scroll-padding-top,scroll-snap-align,scroll-snap-stop,scroll-snap-type,scrollbar-color,"
- + "scrollbar-gutter,scrollbar-width,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,"
- + "scrollMargin,scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,"
+ + "gridTemplateColumns,gridTemplateRows,height,hyphenate-character,hyphenate-limit-chars,"
+ + "hyphenateCharacter,hyphenateLimitChars,hyphens,image-orientation,image-rendering,"
+ + "imageOrientation,imageRendering,ime-mode,imeMode,inline-size,inlineSize,inset,inset-block,"
+ + "inset-block-end,inset-block-start,inset-inline,inset-inline-end,inset-inline-start,insetBlock,"
+ + "insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,insetInlineStart,isolation,item(),"
+ + "justify-content,justify-items,justify-self,justifyContent,justifyItems,justifySelf,left,length,"
+ + "letter-spacing,letterSpacing,lighting-color,lightingColor,line-break,line-height,lineBreak,"
+ + "lineHeight,list-style,list-style-image,list-style-position,list-style-type,listStyle,"
+ + "listStyleImage,listStylePosition,listStyleType,margin,margin-block,margin-block-end,"
+ + "margin-block-start,margin-bottom,margin-inline,margin-inline-end,margin-inline-start,margin-left,"
+ + "margin-right,margin-top,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,"
+ + "marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marker,marker-end,marker-mid,"
+ + "marker-start,markerEnd,markerMid,markerStart,mask,mask-clip,mask-composite,mask-image,mask-mode,"
+ + "mask-origin,mask-position,mask-position-x,mask-position-y,mask-repeat,mask-size,mask-type,"
+ + "maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,maskPositionX,maskPositionY,"
+ + "maskRepeat,maskSize,maskType,math-depth,math-style,mathDepth,mathStyle,max-block-size,max-height,"
+ + "max-inline-size,max-width,maxBlockSize,maxHeight,maxInlineSize,maxWidth,min-block-size,"
+ + "min-height,min-inline-size,min-width,minBlockSize,minHeight,minInlineSize,minWidth,"
+ + "mix-blend-mode,mixBlendMode,MozAnimation,MozAnimationDelay,MozAnimationDirection,"
+ + "MozAnimationDuration,MozAnimationFillMode,MozAnimationIterationCount,MozAnimationName,"
+ + "MozAnimationPlayState,MozAnimationTimingFunction,MozAppearance,MozBackfaceVisibility,"
+ + "MozBorderEnd,MozBorderEndColor,MozBorderEndStyle,MozBorderEndWidth,MozBorderImage,MozBorderStart,"
+ + "MozBorderStartColor,MozBorderStartStyle,MozBorderStartWidth,MozBoxAlign,MozBoxDirection,"
+ + "MozBoxFlex,MozBoxOrdinalGroup,MozBoxOrient,MozBoxPack,MozBoxSizing,MozFloatEdge,"
+ + "MozFontFeatureSettings,MozFontLanguageOverride,MozForceBrokenImageIcon,MozHyphens,MozMarginEnd,"
+ + "MozMarginStart,MozOrient,MozPaddingEnd,MozPaddingStart,MozPerspective,MozPerspectiveOrigin,"
+ + "MozTabSize,MozTextSizeAdjust,MozTransform,MozTransformOrigin,MozTransformStyle,MozUserSelect,"
+ + "MozWindowDragging,object-fit,object-position,objectFit,objectPosition,offset,offset-anchor,"
+ + "offset-distance,offset-path,offset-position,offset-rotate,offsetAnchor,offsetDistance,offsetPath,"
+ + "offsetPosition,offsetRotate,opacity,order,outline,outline-color,outline-offset,outline-style,"
+ + "outline-width,outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflow-anchor,"
+ + "overflow-block,overflow-clip-margin,overflow-inline,overflow-wrap,overflow-x,overflow-y,"
+ + "overflowAnchor,overflowBlock,overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,"
+ + "overscroll-behavior,overscroll-behavior-block,overscroll-behavior-inline,overscroll-behavior-x,"
+ + "overscroll-behavior-y,overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,"
+ + "overscrollBehaviorX,overscrollBehaviorY,padding,padding-block,padding-block-end,"
+ + "padding-block-start,padding-bottom,padding-inline,padding-inline-end,padding-inline-start,"
+ + "padding-left,padding-right,padding-top,paddingBlock,paddingBlockEnd,paddingBlockStart,"
+ + "paddingBottom,paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,"
+ + "paddingTop,page,page-break-after,page-break-before,page-break-inside,pageBreakAfter,"
+ + "pageBreakBefore,pageBreakInside,paint-order,paintOrder,parentRule,perspective,perspective-origin,"
+ + "perspectiveOrigin,place-content,place-items,place-self,placeContent,placeItems,placeSelf,"
+ + "pointer-events,pointerEvents,position,print-color-adjust,printColorAdjust,quotes,r,"
+ + "removeProperty(),resize,right,rotate,row-gap,rowGap,ruby-align,ruby-position,rubyAlign,"
+ + "rubyPosition,rx,ry,scale,scroll-behavior,scroll-margin,scroll-margin-block,"
+ + "scroll-margin-block-end,scroll-margin-block-start,scroll-margin-bottom,scroll-margin-inline,"
+ + "scroll-margin-inline-end,scroll-margin-inline-start,scroll-margin-left,scroll-margin-right,"
+ + "scroll-margin-top,scroll-padding,scroll-padding-block,scroll-padding-block-end,"
+ + "scroll-padding-block-start,scroll-padding-bottom,scroll-padding-inline,scroll-padding-inline-end,"
+ + "scroll-padding-inline-start,scroll-padding-left,scroll-padding-right,scroll-padding-top,"
+ + "scroll-snap-align,scroll-snap-stop,scroll-snap-type,scrollbar-color,scrollbar-gutter,"
+ + "scrollbar-width,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,scrollMargin,"
+ + "scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,"
+ "scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,"
+ "scrollMarginRight,scrollMarginTop,scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,"
+ "scrollPaddingBlockStart,scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,"
@@ -7677,43 +7701,43 @@ public void computedStyle() throws Exception {
+ "gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,height,hyphenateCharacter,"
+ "hyphenateLimitChars,hyphens,imageOrientation,imageRendering,inherits,initialLetter,initialValue,"
+ "inlineSize,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,"
- + "insetInlineStart,interpolateSize,isolation,item(),justifyContent,justifyItems,justifySelf,left,"
- + "length,letterSpacing,lightingColor,lineBreak,lineGapOverride,lineHeight,listStyle,listStyleImage,"
- + "listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,"
- + "marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marker,markerEnd,"
- + "markerMid,markerStart,mask,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,"
- + "maskRepeat,maskSize,maskType,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,"
- + "maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,navigation,negative,"
- + "objectFit,objectPosition,objectViewBox,offset,offsetAnchor,offsetDistance,offsetPath,"
- + "offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,"
- + "outlineStyle,outlineWidth,overflow,overflowAnchor,overflowClipMargin,overflowWrap,overflowX,"
- + "overflowY,overlay,overrideColors,overscrollBehavior,overscrollBehaviorBlock,"
- + "overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,pad,padding,paddingBlock,"
- + "paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,"
- + "paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,"
- + "pageBreakInside,pageOrientation,paintOrder,parentRule,perspective,perspectiveOrigin,placeContent,"
- + "placeItems,placeSelf,pointerEvents,position,positionAnchor,positionArea,positionTry,"
- + "positionTryFallbacks,positionTryOrder,positionVisibility,prefix,quotes,r,range,removeProperty(),"
- + "resize,right,rotate,rowGap,rubyAlign,rubyPosition,rx,ry,scale,scrollbarColor,scrollbarGutter,"
- + "scrollbarWidth,scrollBehavior,scrollInitialTarget,scrollMargin,scrollMarginBlock,"
- + "scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,scrollMarginInline,"
- + "scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,scrollMarginRight,scrollMarginTop,"
- + "scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,"
- + "scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,"
- + "scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapStop,"
- + "scrollSnapType,scrollTimeline,scrollTimelineAxis,scrollTimelineName,setProperty(),"
- + "shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,size,sizeAdjust,speak,speakAs,src,"
- + "stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,"
- + "strokeMiterlimit,strokeOpacity,strokeWidth,suffix,symbols,syntax,system,tableLayout,tabSize,"
- + "textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,textCombineUpright,"
- + "textDecoration,textDecorationColor,textDecorationLine,textDecorationSkipInk,textDecorationStyle,"
- + "textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,"
- + "textIndent,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textSpacingTrim,"
- + "textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,textWrapMode,textWrapStyle,"
- + "timelineScope,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,"
- + "transitionBehavior,transitionDelay,transitionDuration,transitionProperty,"
- + "transitionTimingFunction,translate,types,unicodeBidi,unicodeRange,userSelect,vectorEffect,"
- + "verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,"
+ + "insetInlineStart,interactivity,interpolateSize,isolation,item(),justifyContent,justifyItems,"
+ + "justifySelf,left,length,letterSpacing,lightingColor,lineBreak,lineGapOverride,lineHeight,"
+ + "listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,"
+ + "marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,"
+ + "marginRight,marginTop,marker,markerEnd,markerMid,markerStart,mask,maskClip,maskComposite,"
+ + "maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,mathDepth,mathShift,"
+ + "mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxWidth,minBlockSize,minHeight,minInlineSize,"
+ + "minWidth,mixBlendMode,navigation,negative,objectFit,objectPosition,objectViewBox,offset,"
+ + "offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,"
+ + "outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,"
+ + "overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overlay,overrideColors,"
+ + "overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,"
+ + "overscrollBehaviorY,pad,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,"
+ + "paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,"
+ + "pageBreakAfter,pageBreakBefore,pageBreakInside,pageOrientation,paintOrder,parentRule,perspective,"
+ + "perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,positionAnchor,"
+ + "positionArea,positionTry,positionTryFallbacks,positionTryOrder,positionVisibility,prefix,quotes,"
+ + "r,range,removeProperty(),resize,right,rotate,rowGap,rubyAlign,rubyPosition,rx,ry,scale,"
+ + "scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,scrollInitialTarget,scrollMargin,"
+ + "scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,"
+ + "scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,"
+ + "scrollMarginRight,scrollMarginTop,scrollMarkerGroup,scrollPadding,scrollPaddingBlock,"
+ + "scrollPaddingBlockEnd,scrollPaddingBlockStart,scrollPaddingBottom,scrollPaddingInline,"
+ + "scrollPaddingInlineEnd,scrollPaddingInlineStart,scrollPaddingLeft,scrollPaddingRight,"
+ + "scrollPaddingTop,scrollSnapAlign,scrollSnapStop,scrollSnapType,scrollTimeline,scrollTimelineAxis,"
+ + "scrollTimelineName,setProperty(),shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,"
+ + "size,sizeAdjust,speak,speakAs,src,stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,"
+ + "strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,strokeWidth,suffix,symbols,syntax,"
+ + "system,tableLayout,tabSize,textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,"
+ + "textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkipInk,"
+ + "textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,"
+ + "textEmphasisStyle,textIndent,textOrientation,textOverflow,textRendering,textShadow,"
+ + "textSizeAdjust,textSpacingTrim,textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,"
+ + "textWrapMode,textWrapStyle,timelineScope,top,touchAction,transform,transformBox,transformOrigin,"
+ + "transformStyle,transition,transitionBehavior,transitionDelay,transitionDuration,"
+ + "transitionProperty,transitionTimingFunction,translate,types,unicodeBidi,unicodeRange,userSelect,"
+ + "vectorEffect,verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,"
+ "viewTransitionClass,viewTransitionName,visibility,webkitAlignContent,webkitAlignItems,"
+ "webkitAlignSelf,webkitAnimation,webkitAnimationDelay,webkitAnimationDirection,"
+ "webkitAnimationDuration,webkitAnimationFillMode,webkitAnimationIterationCount,"
@@ -7792,43 +7816,43 @@ public void computedStyle() throws Exception {
+ "gridTemplate,gridTemplateAreas,gridTemplateColumns,gridTemplateRows,height,hyphenateCharacter,"
+ "hyphenateLimitChars,hyphens,imageOrientation,imageRendering,inherits,initialLetter,initialValue,"
+ "inlineSize,inset,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,"
- + "insetInlineStart,interpolateSize,isolation,item(),justifyContent,justifyItems,justifySelf,left,"
- + "length,letterSpacing,lightingColor,lineBreak,lineGapOverride,lineHeight,listStyle,listStyleImage,"
- + "listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,"
- + "marginInline,marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marker,markerEnd,"
- + "markerMid,markerStart,mask,maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,"
- + "maskRepeat,maskSize,maskType,mathDepth,mathShift,mathStyle,maxBlockSize,maxHeight,maxInlineSize,"
- + "maxWidth,minBlockSize,minHeight,minInlineSize,minWidth,mixBlendMode,navigation,negative,"
- + "objectFit,objectPosition,objectViewBox,offset,offsetAnchor,offsetDistance,offsetPath,"
- + "offsetPosition,offsetRotate,opacity,order,orphans,outline,outlineColor,outlineOffset,"
- + "outlineStyle,outlineWidth,overflow,overflowAnchor,overflowClipMargin,overflowWrap,overflowX,"
- + "overflowY,overlay,overrideColors,overscrollBehavior,overscrollBehaviorBlock,"
- + "overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,pad,padding,paddingBlock,"
- + "paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,"
- + "paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,pageBreakAfter,pageBreakBefore,"
- + "pageBreakInside,pageOrientation,paintOrder,parentRule,perspective,perspectiveOrigin,placeContent,"
- + "placeItems,placeSelf,pointerEvents,position,positionAnchor,positionArea,positionTry,"
- + "positionTryFallbacks,positionTryOrder,positionVisibility,prefix,quotes,r,range,removeProperty(),"
- + "resize,right,rotate,rowGap,rubyAlign,rubyPosition,rx,ry,scale,scrollbarColor,scrollbarGutter,"
- + "scrollbarWidth,scrollBehavior,scrollInitialTarget,scrollMargin,scrollMarginBlock,"
- + "scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,scrollMarginInline,"
- + "scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,scrollMarginRight,scrollMarginTop,"
- + "scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,"
- + "scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,"
- + "scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapStop,"
- + "scrollSnapType,scrollTimeline,scrollTimelineAxis,scrollTimelineName,setProperty(),"
- + "shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,size,sizeAdjust,speak,speakAs,src,"
- + "stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,strokeLinecap,strokeLinejoin,"
- + "strokeMiterlimit,strokeOpacity,strokeWidth,suffix,symbols,syntax,system,tableLayout,tabSize,"
- + "textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,textCombineUpright,"
- + "textDecoration,textDecorationColor,textDecorationLine,textDecorationSkipInk,textDecorationStyle,"
- + "textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,textEmphasisStyle,"
- + "textIndent,textOrientation,textOverflow,textRendering,textShadow,textSizeAdjust,textSpacingTrim,"
- + "textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,textWrapMode,textWrapStyle,"
- + "timelineScope,top,touchAction,transform,transformBox,transformOrigin,transformStyle,transition,"
- + "transitionBehavior,transitionDelay,transitionDuration,transitionProperty,"
- + "transitionTimingFunction,translate,types,unicodeBidi,unicodeRange,userSelect,vectorEffect,"
- + "verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,"
+ + "insetInlineStart,interactivity,interpolateSize,isolation,item(),justifyContent,justifyItems,"
+ + "justifySelf,left,length,letterSpacing,lightingColor,lineBreak,lineGapOverride,lineHeight,"
+ + "listStyle,listStyleImage,listStylePosition,listStyleType,margin,marginBlock,marginBlockEnd,"
+ + "marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,"
+ + "marginRight,marginTop,marker,markerEnd,markerMid,markerStart,mask,maskClip,maskComposite,"
+ + "maskImage,maskMode,maskOrigin,maskPosition,maskRepeat,maskSize,maskType,mathDepth,mathShift,"
+ + "mathStyle,maxBlockSize,maxHeight,maxInlineSize,maxWidth,minBlockSize,minHeight,minInlineSize,"
+ + "minWidth,mixBlendMode,navigation,negative,objectFit,objectPosition,objectViewBox,offset,"
+ + "offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,orphans,outline,"
+ + "outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowBlock,"
+ + "overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overlay,overrideColors,"
+ + "overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,"
+ + "overscrollBehaviorY,pad,padding,paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,"
+ + "paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,"
+ + "pageBreakAfter,pageBreakBefore,pageBreakInside,pageOrientation,paintOrder,parentRule,perspective,"
+ + "perspectiveOrigin,placeContent,placeItems,placeSelf,pointerEvents,position,positionAnchor,"
+ + "positionArea,positionTry,positionTryFallbacks,positionTryOrder,positionVisibility,prefix,quotes,"
+ + "r,range,removeProperty(),resize,right,rotate,rowGap,rubyAlign,rubyPosition,rx,ry,scale,"
+ + "scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,scrollInitialTarget,scrollMargin,"
+ + "scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,"
+ + "scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,"
+ + "scrollMarginRight,scrollMarginTop,scrollMarkerGroup,scrollPadding,scrollPaddingBlock,"
+ + "scrollPaddingBlockEnd,scrollPaddingBlockStart,scrollPaddingBottom,scrollPaddingInline,"
+ + "scrollPaddingInlineEnd,scrollPaddingInlineStart,scrollPaddingLeft,scrollPaddingRight,"
+ + "scrollPaddingTop,scrollSnapAlign,scrollSnapStop,scrollSnapType,scrollTimeline,scrollTimelineAxis,"
+ + "scrollTimelineName,setProperty(),shapeImageThreshold,shapeMargin,shapeOutside,shapeRendering,"
+ + "size,sizeAdjust,speak,speakAs,src,stopColor,stopOpacity,stroke,strokeDasharray,strokeDashoffset,"
+ + "strokeLinecap,strokeLinejoin,strokeMiterlimit,strokeOpacity,strokeWidth,suffix,symbols,syntax,"
+ + "system,tableLayout,tabSize,textAlign,textAlignLast,textAnchor,textBox,textBoxEdge,textBoxTrim,"
+ + "textCombineUpright,textDecoration,textDecorationColor,textDecorationLine,textDecorationSkipInk,"
+ + "textDecorationStyle,textDecorationThickness,textEmphasis,textEmphasisColor,textEmphasisPosition,"
+ + "textEmphasisStyle,textIndent,textOrientation,textOverflow,textRendering,textShadow,"
+ + "textSizeAdjust,textSpacingTrim,textTransform,textUnderlineOffset,textUnderlinePosition,textWrap,"
+ + "textWrapMode,textWrapStyle,timelineScope,top,touchAction,transform,transformBox,transformOrigin,"
+ + "transformStyle,transition,transitionBehavior,transitionDelay,transitionDuration,"
+ + "transitionProperty,transitionTimingFunction,translate,types,unicodeBidi,unicodeRange,userSelect,"
+ + "vectorEffect,verticalAlign,viewTimeline,viewTimelineAxis,viewTimelineInset,viewTimelineName,"
+ "viewTransitionClass,viewTransitionName,visibility,webkitAlignContent,webkitAlignItems,"
+ "webkitAlignSelf,webkitAnimation,webkitAnimationDelay,webkitAnimationDirection,"
+ "webkitAnimationDuration,webkitAnimationFillMode,webkitAnimationIterationCount,"
@@ -7967,58 +7991,59 @@ public void computedStyle() throws Exception {
+ "grid-template,grid-template-areas,grid-template-columns,grid-template-rows,gridArea,"
+ "gridAutoColumns,gridAutoFlow,gridAutoRows,gridColumn,gridColumnEnd,gridColumnGap,gridColumnStart,"
+ "gridGap,gridRow,gridRowEnd,gridRowGap,gridRowStart,gridTemplate,gridTemplateAreas,"
- + "gridTemplateColumns,gridTemplateRows,height,hyphenate-character,hyphenateCharacter,hyphens,"
- + "image-orientation,image-rendering,imageOrientation,imageRendering,ime-mode,imeMode,inline-size,"
- + "inlineSize,inset,inset-block,inset-block-end,inset-block-start,inset-inline,inset-inline-end,"
- + "inset-inline-start,insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,"
- + "insetInlineStart,isolation,item(),justify-content,justify-items,justify-self,justifyContent,"
- + "justifyItems,justifySelf,left,length,letter-spacing,letterSpacing,lighting-color,lightingColor,"
- + "line-break,line-height,lineBreak,lineHeight,list-style,list-style-image,list-style-position,"
- + "list-style-type,listStyle,listStyleImage,listStylePosition,listStyleType,margin,margin-block,"
- + "margin-block-end,margin-block-start,margin-bottom,margin-inline,margin-inline-end,"
- + "margin-inline-start,margin-left,margin-right,margin-top,marginBlock,marginBlockEnd,"
- + "marginBlockStart,marginBottom,marginInline,marginInlineEnd,marginInlineStart,marginLeft,"
- + "marginRight,marginTop,marker,marker-end,marker-mid,marker-start,markerEnd,markerMid,markerStart,"
- + "mask,mask-clip,mask-composite,mask-image,mask-mode,mask-origin,mask-position,mask-position-x,"
- + "mask-position-y,mask-repeat,mask-size,mask-type,maskClip,maskComposite,maskImage,maskMode,"
- + "maskOrigin,maskPosition,maskPositionX,maskPositionY,maskRepeat,maskSize,maskType,math-depth,"
- + "math-style,mathDepth,mathStyle,max-block-size,max-height,max-inline-size,max-width,maxBlockSize,"
- + "maxHeight,maxInlineSize,maxWidth,min-block-size,min-height,min-inline-size,min-width,"
- + "minBlockSize,minHeight,minInlineSize,minWidth,mix-blend-mode,mixBlendMode,MozAnimation,"
- + "MozAnimationDelay,MozAnimationDirection,MozAnimationDuration,MozAnimationFillMode,"
- + "MozAnimationIterationCount,MozAnimationName,MozAnimationPlayState,MozAnimationTimingFunction,"
- + "MozAppearance,MozBackfaceVisibility,MozBorderEnd,MozBorderEndColor,MozBorderEndStyle,"
- + "MozBorderEndWidth,MozBorderImage,MozBorderStart,MozBorderStartColor,MozBorderStartStyle,"
- + "MozBorderStartWidth,MozBoxAlign,MozBoxDirection,MozBoxFlex,MozBoxOrdinalGroup,MozBoxOrient,"
- + "MozBoxPack,MozBoxSizing,MozFloatEdge,MozFontFeatureSettings,MozFontLanguageOverride,"
- + "MozForceBrokenImageIcon,MozHyphens,MozMarginEnd,MozMarginStart,MozOrient,MozPaddingEnd,"
- + "MozPaddingStart,MozPerspective,MozPerspectiveOrigin,MozTabSize,MozTextSizeAdjust,MozTransform,"
- + "MozTransformOrigin,MozTransformStyle,MozUserSelect,MozWindowDragging,object-fit,object-position,"
- + "objectFit,objectPosition,offset,offset-anchor,offset-distance,offset-path,offset-position,"
- + "offset-rotate,offsetAnchor,offsetDistance,offsetPath,offsetPosition,offsetRotate,opacity,order,"
- + "outline,outline-color,outline-offset,outline-style,outline-width,outlineColor,outlineOffset,"
- + "outlineStyle,outlineWidth,overflow,overflow-anchor,overflow-block,overflow-clip-margin,"
- + "overflow-inline,overflow-wrap,overflow-x,overflow-y,overflowAnchor,overflowBlock,"
- + "overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,overscroll-behavior,"
- + "overscroll-behavior-block,overscroll-behavior-inline,overscroll-behavior-x,overscroll-behavior-y,"
- + "overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,overscrollBehaviorX,"
- + "overscrollBehaviorY,padding,padding-block,padding-block-end,padding-block-start,padding-bottom,"
- + "padding-inline,padding-inline-end,padding-inline-start,padding-left,padding-right,padding-top,"
- + "paddingBlock,paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,"
- + "paddingInlineStart,paddingLeft,paddingRight,paddingTop,page,page-break-after,page-break-before,"
- + "page-break-inside,pageBreakAfter,pageBreakBefore,pageBreakInside,paint-order,paintOrder,"
- + "parentRule,perspective,perspective-origin,perspectiveOrigin,place-content,place-items,place-self,"
- + "placeContent,placeItems,placeSelf,pointer-events,pointerEvents,position,print-color-adjust,"
- + "printColorAdjust,quotes,r,removeProperty(),resize,right,rotate,row-gap,rowGap,ruby-align,"
- + "ruby-position,rubyAlign,rubyPosition,rx,ry,scale,scroll-behavior,scroll-margin,"
- + "scroll-margin-block,scroll-margin-block-end,scroll-margin-block-start,scroll-margin-bottom,"
- + "scroll-margin-inline,scroll-margin-inline-end,scroll-margin-inline-start,scroll-margin-left,"
- + "scroll-margin-right,scroll-margin-top,scroll-padding,scroll-padding-block,"
- + "scroll-padding-block-end,scroll-padding-block-start,scroll-padding-bottom,scroll-padding-inline,"
- + "scroll-padding-inline-end,scroll-padding-inline-start,scroll-padding-left,scroll-padding-right,"
- + "scroll-padding-top,scroll-snap-align,scroll-snap-stop,scroll-snap-type,scrollbar-color,"
- + "scrollbar-gutter,scrollbar-width,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,"
- + "scrollMargin,scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,"
+ + "gridTemplateColumns,gridTemplateRows,height,hyphenate-character,hyphenate-limit-chars,"
+ + "hyphenateCharacter,hyphenateLimitChars,hyphens,image-orientation,image-rendering,"
+ + "imageOrientation,imageRendering,ime-mode,imeMode,inline-size,inlineSize,inset,inset-block,"
+ + "inset-block-end,inset-block-start,inset-inline,inset-inline-end,inset-inline-start,insetBlock,"
+ + "insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,insetInlineStart,isolation,item(),"
+ + "justify-content,justify-items,justify-self,justifyContent,justifyItems,justifySelf,left,length,"
+ + "letter-spacing,letterSpacing,lighting-color,lightingColor,line-break,line-height,lineBreak,"
+ + "lineHeight,list-style,list-style-image,list-style-position,list-style-type,listStyle,"
+ + "listStyleImage,listStylePosition,listStyleType,margin,margin-block,margin-block-end,"
+ + "margin-block-start,margin-bottom,margin-inline,margin-inline-end,margin-inline-start,margin-left,"
+ + "margin-right,margin-top,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,"
+ + "marginInlineEnd,marginInlineStart,marginLeft,marginRight,marginTop,marker,marker-end,marker-mid,"
+ + "marker-start,markerEnd,markerMid,markerStart,mask,mask-clip,mask-composite,mask-image,mask-mode,"
+ + "mask-origin,mask-position,mask-position-x,mask-position-y,mask-repeat,mask-size,mask-type,"
+ + "maskClip,maskComposite,maskImage,maskMode,maskOrigin,maskPosition,maskPositionX,maskPositionY,"
+ + "maskRepeat,maskSize,maskType,math-depth,math-style,mathDepth,mathStyle,max-block-size,max-height,"
+ + "max-inline-size,max-width,maxBlockSize,maxHeight,maxInlineSize,maxWidth,min-block-size,"
+ + "min-height,min-inline-size,min-width,minBlockSize,minHeight,minInlineSize,minWidth,"
+ + "mix-blend-mode,mixBlendMode,MozAnimation,MozAnimationDelay,MozAnimationDirection,"
+ + "MozAnimationDuration,MozAnimationFillMode,MozAnimationIterationCount,MozAnimationName,"
+ + "MozAnimationPlayState,MozAnimationTimingFunction,MozAppearance,MozBackfaceVisibility,"
+ + "MozBorderEnd,MozBorderEndColor,MozBorderEndStyle,MozBorderEndWidth,MozBorderImage,MozBorderStart,"
+ + "MozBorderStartColor,MozBorderStartStyle,MozBorderStartWidth,MozBoxAlign,MozBoxDirection,"
+ + "MozBoxFlex,MozBoxOrdinalGroup,MozBoxOrient,MozBoxPack,MozBoxSizing,MozFloatEdge,"
+ + "MozFontFeatureSettings,MozFontLanguageOverride,MozForceBrokenImageIcon,MozHyphens,MozMarginEnd,"
+ + "MozMarginStart,MozOrient,MozPaddingEnd,MozPaddingStart,MozPerspective,MozPerspectiveOrigin,"
+ + "MozTabSize,MozTextSizeAdjust,MozTransform,MozTransformOrigin,MozTransformStyle,MozUserSelect,"
+ + "MozWindowDragging,object-fit,object-position,objectFit,objectPosition,offset,offset-anchor,"
+ + "offset-distance,offset-path,offset-position,offset-rotate,offsetAnchor,offsetDistance,offsetPath,"
+ + "offsetPosition,offsetRotate,opacity,order,outline,outline-color,outline-offset,outline-style,"
+ + "outline-width,outlineColor,outlineOffset,outlineStyle,outlineWidth,overflow,overflow-anchor,"
+ + "overflow-block,overflow-clip-margin,overflow-inline,overflow-wrap,overflow-x,overflow-y,"
+ + "overflowAnchor,overflowBlock,overflowClipMargin,overflowInline,overflowWrap,overflowX,overflowY,"
+ + "overscroll-behavior,overscroll-behavior-block,overscroll-behavior-inline,overscroll-behavior-x,"
+ + "overscroll-behavior-y,overscrollBehavior,overscrollBehaviorBlock,overscrollBehaviorInline,"
+ + "overscrollBehaviorX,overscrollBehaviorY,padding,padding-block,padding-block-end,"
+ + "padding-block-start,padding-bottom,padding-inline,padding-inline-end,padding-inline-start,"
+ + "padding-left,padding-right,padding-top,paddingBlock,paddingBlockEnd,paddingBlockStart,"
+ + "paddingBottom,paddingInline,paddingInlineEnd,paddingInlineStart,paddingLeft,paddingRight,"
+ + "paddingTop,page,page-break-after,page-break-before,page-break-inside,pageBreakAfter,"
+ + "pageBreakBefore,pageBreakInside,paint-order,paintOrder,parentRule,perspective,perspective-origin,"
+ + "perspectiveOrigin,place-content,place-items,place-self,placeContent,placeItems,placeSelf,"
+ + "pointer-events,pointerEvents,position,print-color-adjust,printColorAdjust,quotes,r,"
+ + "removeProperty(),resize,right,rotate,row-gap,rowGap,ruby-align,ruby-position,rubyAlign,"
+ + "rubyPosition,rx,ry,scale,scroll-behavior,scroll-margin,scroll-margin-block,"
+ + "scroll-margin-block-end,scroll-margin-block-start,scroll-margin-bottom,scroll-margin-inline,"
+ + "scroll-margin-inline-end,scroll-margin-inline-start,scroll-margin-left,scroll-margin-right,"
+ + "scroll-margin-top,scroll-padding,scroll-padding-block,scroll-padding-block-end,"
+ + "scroll-padding-block-start,scroll-padding-bottom,scroll-padding-inline,scroll-padding-inline-end,"
+ + "scroll-padding-inline-start,scroll-padding-left,scroll-padding-right,scroll-padding-top,"
+ + "scroll-snap-align,scroll-snap-stop,scroll-snap-type,scrollbar-color,scrollbar-gutter,"
+ + "scrollbar-width,scrollbarColor,scrollbarGutter,scrollbarWidth,scrollBehavior,scrollMargin,"
+ + "scrollMarginBlock,scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,"
+ "scrollMarginInline,scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,"
+ "scrollMarginRight,scrollMarginTop,scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,"
+ "scrollPaddingBlockStart,scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,"
@@ -8321,17 +8346,21 @@ public void location() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,"
- + "dispatchEvent(),height,isExtended,onchange,orientation,pixelDepth,removeEventListener(),width",
- EDGE = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,"
- + "dispatchEvent(),height,isExtended,onchange,orientation,pixelDepth,removeEventListener(),width",
+ @Alerts(CHROME = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,dispatchEvent(),height,"
+ + "isExtended,onchange,orientation,pixelDepth,removeEventListener(),when(),width",
+ EDGE = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,dispatchEvent(),height,"
+ + "isExtended,onchange,orientation,pixelDepth,removeEventListener(),when(),width",
FF = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,dispatchEvent(),height,"
+ "left,mozLockOrientation(),mozOrientation,mozUnlockOrientation(),onmozorientationchange,"
+ "orientation,pixelDepth,removeEventListener(),top,width",
FF_ESR = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,dispatchEvent(),height,"
+ "left,mozLockOrientation(),mozOrientation,mozUnlockOrientation(),onmozorientationchange,"
+ "orientation,pixelDepth,removeEventListener(),top,width")
- @HtmlUnitNYI(FF = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,dispatchEvent(),"
+ @HtmlUnitNYI(CHROME = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,dispatchEvent(),"
+ + "height,isExtended,onchange,orientation,pixelDepth,removeEventListener(),width",
+ EDGE = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,dispatchEvent(),"
+ + "height,isExtended,onchange,orientation,pixelDepth,removeEventListener(),width",
+ FF = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,dispatchEvent(),"
+ "height,left,mozOrientation,orientation,pixelDepth,removeEventListener(),top,width",
FF_ESR = "addEventListener(),availHeight,availLeft,availTop,availWidth,colorDepth,dispatchEvent(),"
+ "height,left,mozOrientation,orientation,pixelDepth,removeEventListener(),top,width")
@@ -8345,8 +8374,10 @@ public void screen() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(CHROME = "addEventListener(),angle,dispatchEvent(),lock(),onchange,removeEventListener(),type,unlock()",
- EDGE = "addEventListener(),angle,dispatchEvent(),lock(),onchange,removeEventListener(),type,unlock()",
+ @Alerts(CHROME = "addEventListener(),angle,dispatchEvent(),lock(),onchange,removeEventListener(),type,unlock(),"
+ + "when()",
+ EDGE = "addEventListener(),angle,dispatchEvent(),lock(),onchange,removeEventListener(),type,unlock(),"
+ + "when()",
FF = "addEventListener(),angle,dispatchEvent(),lock(),onchange,removeEventListener(),type,unlock()",
FF_ESR = "addEventListener(),angle,dispatchEvent(),lock(),onchange,removeEventListener(),type,unlock()")
@HtmlUnitNYI(CHROME = "addEventListener(),angle,dispatchEvent(),onchange,removeEventListener(),type",
@@ -8455,7 +8486,7 @@ public void xPathExpression() throws Exception {
+ "lookupPrefix(),nextElementSibling,nextSibling,nodeName,nodeType,nodeValue,normalize(),"
+ "NOTATION_NODE,ownerDocument,parentElement,parentNode,previousElementSibling,previousSibling,"
+ "PROCESSING_INSTRUCTION_NODE,remove(),removeChild(),removeEventListener(),replaceChild(),"
- + "replaceData(),replaceWith(),splitText(),substringData(),TEXT_NODE,textContent,"
+ + "replaceData(),replaceWith(),splitText(),substringData(),TEXT_NODE,textContent,when(),"
+ "wholeText",
EDGE = "addEventListener(),after(),appendChild(),appendData(),assignedSlot,ATTRIBUTE_NODE,baseURI,"
+ "before(),CDATA_SECTION_NODE,childNodes,cloneNode(),COMMENT_NODE,compareDocumentPosition(),"
@@ -8468,7 +8499,7 @@ public void xPathExpression() throws Exception {
+ "lookupPrefix(),nextElementSibling,nextSibling,nodeName,nodeType,nodeValue,normalize(),"
+ "NOTATION_NODE,ownerDocument,parentElement,parentNode,previousElementSibling,previousSibling,"
+ "PROCESSING_INSTRUCTION_NODE,remove(),removeChild(),removeEventListener(),replaceChild(),"
- + "replaceData(),replaceWith(),splitText(),substringData(),TEXT_NODE,textContent,"
+ + "replaceData(),replaceWith(),splitText(),substringData(),TEXT_NODE,textContent,when(),"
+ "wholeText",
FF = "addEventListener(),after(),appendChild(),appendData(),assignedSlot,ATTRIBUTE_NODE,baseURI,"
+ "before(),CDATA_SECTION_NODE,childNodes,cloneNode(),COMMENT_NODE,compareDocumentPosition(),"
@@ -8568,7 +8599,8 @@ public void cDATASection() throws Exception {
+ "lookupNamespaceURI(),lookupPrefix(),name,nextSibling,nodeName,nodeType,nodeValue,normalize(),"
+ "NOTATION_NODE,ownerDocument,parentElement,parentNode,previousSibling,PROCESSING_INSTRUCTION_NODE,"
+ "publicId,remove(),removeChild(),removeEventListener(),replaceChild(),replaceWith(),systemId,"
- + "TEXT_NODE,textContent",
+ + "TEXT_NODE,textContent,"
+ + "when()",
EDGE = "addEventListener(),after(),appendChild(),ATTRIBUTE_NODE,baseURI,before(),CDATA_SECTION_NODE,"
+ "childNodes,cloneNode(),COMMENT_NODE,compareDocumentPosition(),contains(),dispatchEvent(),"
+ "DOCUMENT_FRAGMENT_NODE,DOCUMENT_NODE,DOCUMENT_POSITION_CONTAINED_BY,DOCUMENT_POSITION_CONTAINS,"
@@ -8579,7 +8611,8 @@ public void cDATASection() throws Exception {
+ "lookupNamespaceURI(),lookupPrefix(),name,nextSibling,nodeName,nodeType,nodeValue,normalize(),"
+ "NOTATION_NODE,ownerDocument,parentElement,parentNode,previousSibling,PROCESSING_INSTRUCTION_NODE,"
+ "publicId,remove(),removeChild(),removeEventListener(),replaceChild(),replaceWith(),systemId,"
- + "TEXT_NODE,textContent",
+ + "TEXT_NODE,textContent,"
+ + "when()",
FF = "addEventListener(),after(),appendChild(),ATTRIBUTE_NODE,baseURI,before(),CDATA_SECTION_NODE,"
+ "childNodes,cloneNode(),COMMENT_NODE,compareDocumentPosition(),contains(),dispatchEvent(),"
+ "DOCUMENT_FRAGMENT_NODE,DOCUMENT_NODE,DOCUMENT_POSITION_CONTAINED_BY,DOCUMENT_POSITION_CONTAINS,"
@@ -8965,13 +8998,13 @@ public void geolocation() throws Exception {
+ "HEADERS_RECEIVED,LOADING,onabort,onerror,onload,onloadend,onloadstart,onprogress,"
+ "onreadystatechange,ontimeout,open(),OPENED,overrideMimeType(),readyState,removeEventListener(),"
+ "response,responseText,responseType,responseURL,responseXML,send(),setAttributionReporting(),"
- + "setPrivateToken(),setRequestHeader(),status,statusText,timeout,UNSENT,upload,"
+ + "setPrivateToken(),setRequestHeader(),status,statusText,timeout,UNSENT,upload,when(),"
+ "withCredentials",
EDGE = "abort(),addEventListener(),dispatchEvent(),DONE,getAllResponseHeaders(),getResponseHeader(),"
+ "HEADERS_RECEIVED,LOADING,onabort,onerror,onload,onloadend,onloadstart,onprogress,"
+ "onreadystatechange,ontimeout,open(),OPENED,overrideMimeType(),readyState,removeEventListener(),"
+ "response,responseText,responseType,responseURL,responseXML,send(),setAttributionReporting(),"
- + "setPrivateToken(),setRequestHeader(),status,statusText,timeout,UNSENT,upload,"
+ + "setPrivateToken(),setRequestHeader(),status,statusText,timeout,UNSENT,upload,when(),"
+ "withCredentials",
FF = "abort(),addEventListener(),dispatchEvent(),DONE,getAllResponseHeaders(),getResponseHeader(),"
+ "HEADERS_RECEIVED,LOADING,mozAnon,mozSystem,onabort,onerror,onload,onloadend,onloadstart,"
@@ -9115,8 +9148,10 @@ public void abortController() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts(CHROME = "aborted,addEventListener(),dispatchEvent(),onabort,reason,removeEventListener(),throwIfAborted()",
- EDGE = "aborted,addEventListener(),dispatchEvent(),onabort,reason,removeEventListener(),throwIfAborted()",
+ @Alerts(CHROME = "aborted,addEventListener(),dispatchEvent(),onabort,reason,removeEventListener(),throwIfAborted(),"
+ + "when()",
+ EDGE = "aborted,addEventListener(),dispatchEvent(),onabort,reason,removeEventListener(),throwIfAborted(),"
+ + "when()",
FF = "aborted,addEventListener(),dispatchEvent(),onabort,reason,removeEventListener(),throwIfAborted()",
FF_ESR = "aborted,addEventListener(),dispatchEvent(),onabort,reason,removeEventListener(),throwIfAborted()")
@HtmlUnitNYI(CHROME = "addEventListener(),dispatchEvent(),removeEventListener()",
From 798016ebc20abc4a61d8741bdeca6a7a3b111eb0 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 18:23:52 +0200
Subject: [PATCH 050/125] Chrome/Edge 135, FF 137
---
.../org/htmlunit/css/StyleAttributes.java | 39 +++++++++++--------
1 file changed, 22 insertions(+), 17 deletions(-)
diff --git a/src/main/java/org/htmlunit/css/StyleAttributes.java b/src/main/java/org/htmlunit/css/StyleAttributes.java
index b10d3a1c76b..3612798a0ea 100644
--- a/src/main/java/org/htmlunit/css/StyleAttributes.java
+++ b/src/main/java/org/htmlunit/css/StyleAttributes.java
@@ -338,10 +338,11 @@ public enum Definition {
BASELINE_SOURCE_("baseline-source", "baseline-source", ff("auto")),
/** The style property {@code blockSize}. */
- BLOCK_SIZE("blockSize", "block-size", chromeAndEdgeAndFirefox("328px")),
+ BLOCK_SIZE("blockSize", "block-size", chromeAndEdge("328px"),
+ ff("328.5px")),
/** The style property {@code block-size}. */
- BLOCK_SIZE_("block-size", "block-size", ff("328px")),
+ BLOCK_SIZE_("block-size", "block-size", ff("328.5px")),
/** The style property {@code border}. */
BORDER("border", "border", chromeAndEdge("0px none rgb(0, 0, 0)"), ff("0px rgb(0, 0, 0)")),
@@ -1426,7 +1427,10 @@ public enum Definition {
HYPHENATE_CHARACTER_("hyphenate-character", "hyphenate-character", ff("auto")),
/** The style property {@code hyphenateLimitChars}. */
- HYPHENATE_LIMIT_CHAR("hyphenateLimitChars", "hyphenate-limit-char", chromeAndEdgeAuto(), ffLatest("auto")),
+ HYPHENATE_LIMIT_CHAR("hyphenateLimitChars", "hyphenate-limit-chars", chromeAndEdgeAuto(), ffLatest("auto")),
+
+ /** The style property {@code hyphenate-limit-chars}. */
+ HYPHENATE_LIMIT_CHAR_("hyphenate-limit-chars", "hyphenate-limit-chars", ffLatest("auto")),
/** The style property {@code hyphens}. */
HYPHENS("hyphens", "hyphens", ff("manual"), chromeAndEdge("manual")),
@@ -2087,10 +2091,10 @@ public enum Definition {
MOZ_PERSPECTIVE__("-moz-perspective", "-moz-perspective", ffLatest("none")),
/** The style property {@code MozPerspectiveOrigin}. */
- MOZ_PERSPECTIVE_ORIGIN("MozPerspectiveOrigin", "-moz-perspective-origin", ffLatest("620px 164px")),
+ MOZ_PERSPECTIVE_ORIGIN("MozPerspectiveOrigin", "-moz-perspective-origin", ffLatest("620px 164.25px")),
/** The style property {@code -moz-perspective-origin}. */
- MOZ_PERSPECTIVE_ORIGIN__("-moz-perspective-origin", "-moz-perspective-origin", ffLatest("620px 164px")),
+ MOZ_PERSPECTIVE_ORIGIN__("-moz-perspective-origin", "-moz-perspective-origin", ffLatest("620px 164.25px")),
/** The style property {@code MozTabSize}. */
MOZ_TAB_SIZE("MozTabSize", "-moz-tab-size", ff("8")),
@@ -2122,11 +2126,11 @@ public enum Definition {
/** The style property {@code MozTransformOrigin}. */
MOZ_TRANSFORM_ORIGIN("MozTransformOrigin", "-moz-transform-origin",
- ffEsr("622px 164px"), ffLatest("620px 164px")),
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
/** The style property {@code -moz-transform-origin}. */
MOZ_TRANSFORM_ORIGIN__("-moz-transform-origin", "-moz-transform-origin",
- ffEsr("622px 164px"), ffLatest("620px 164px")),
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
/** The style property {@code MozTransformStyle}. */
MOZ_TRANSFORM_STYLE("MozTransformStyle", "-moz-transform-style", ffLatest("flat")),
@@ -2436,10 +2440,11 @@ public enum Definition {
/** The style property {@code perspectiveOrigin}. */
PERSPECTIVE_ORIGIN("perspectiveOrigin", "perspective-origin",
- ffEsr("622px 164px"), ffLatest("620px 164px"), chrome("620px 164px"), edge("616px 162px")),
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px"), chrome("620px 164px"), edge("616px 162px")),
/** The style property {@code perspective-origin}. */
- PERSPECTIVE_ORIGIN_("perspective-origin", "perspective-origin", ffEsr("622px 164px"), ffLatest("620px 164px")),
+ PERSPECTIVE_ORIGIN_("perspective-origin", "perspective-origin",
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
/** The style property {@code placeContent}. */
PLACE_CONTENT("placeContent", "place-content", chromeAndEdgeNormal(), ffNormal()),
@@ -3068,10 +3073,10 @@ public enum Definition {
/** The style property {@code transformOrigin}. */
TRANSFORM_ORIGIN("transformOrigin", "transform-origin",
- ffEsr("622px 164px"), ffLatest("620px 164px"), chrome("620px 164px"), edge("616px 162px")),
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px"), chrome("620px 164px"), edge("616px 162px")),
/** The style property {@code transform-origin}. */
- TRANSFORM_ORIGIN_("transform-origin", "transform-origin", ffEsr("622px 164px"), ffLatest("620px 164px")),
+ TRANSFORM_ORIGIN_("transform-origin", "transform-origin", ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
/** The style property {@code transformStyle}. */
TRANSFORM_STYLE("transformStyle", "transform-style", ff("flat"), chromeAndEdge("flat")),
@@ -3885,15 +3890,15 @@ public enum Definition {
/** The style property {@code webkitPerspectiveOrigin}. */
WEBKIT_PERSPECTIVE_ORIGIN("webkitPerspectiveOrigin", "webkit-perspective-origin",
- ffEsr("622px 164px"), ffLatest("620px 164px"), chrome("620px 164px"), edge("616px 162px")),
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px"), chrome("620px 164px"), edge("616px 162px")),
/** The style property {@code WebkitPerspectiveOrigin}. */
WEBKIT_PERSPECTIVE_ORIGIN_("WebkitPerspectiveOrigin", "webkit-perspective-origin",
- ffEsr("622px 164px"), ffLatest("620px 164px")),
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
/** The style property {@code -webkit-perspective-origin}. */
WEBKIT_PERSPECTIVE_ORIGIN__("-webkit-perspective-origin", "webkit-perspective-origin",
- ffEsr("622px 164px"), ffLatest("620px 164px")),
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
/** The style property {@code webkitPerspectiveOriginX}. */
WEBKIT_PERSPECTIVE_ORIGIN_X("webkitPerspectiveOriginX", "webkit-perspective-origin-x", chromeAndEdgeEmpty()),
@@ -4019,15 +4024,15 @@ public enum Definition {
/** The style property {@code webkitTransformOrigin}. */
WEBKIT_TRANSFORM_ORIGIN("webkitTransformOrigin", "webkit-transform-origin",
- ffEsr("622px 164px"), ffLatest("620px 164px"), chrome("620px 164px"), edge("616px 162px")),
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px"), chrome("620px 164px"), edge("616px 162px")),
/** The style property {@code WebkitTransformOrigin}. */
WEBKIT_TRANSFORM_ORIGIN_("WebkitTransformOrigin", "webkit-transform-origin",
- ffEsr("622px 164px"), ffLatest("620px 164px")),
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
/** The style property {@code -webkit-transform-origin}. */
WEBKIT_TRANSFORM_ORIGIN__("-webkit-transform-origin", "webkit-transform-origin",
- ffEsr("622px 164px"), ffLatest("620px 164px")),
+ ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
/** The style property {@code webkitTransformOriginX}. */
WEBKIT_TRANSFORM_ORIGIN_X("webkitTransformOriginX", "webkit-transform-origin-x", chromeAndEdgeEmpty()),
From c481258c1bdf7bc7b53519b5d653fda5e8253c86 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 6 Apr 2025 18:24:37 +0200
Subject: [PATCH 051/125] Chrome/Edge 135, FF 137
---
.../general/ElementPropertiesTest.java | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/src/test/java/org/htmlunit/general/ElementPropertiesTest.java b/src/test/java/org/htmlunit/general/ElementPropertiesTest.java
index 2a6d239b9d5..f8c148c50a1 100644
--- a/src/test/java/org/htmlunit/general/ElementPropertiesTest.java
+++ b/src/test/java/org/htmlunit/general/ElementPropertiesTest.java
@@ -6967,7 +6967,7 @@ public void nodeListButtonLabels() throws Exception {
+ "gridTemplateRows,height,hyphenateCharacter,hyphenateLimitChars,hyphens,"
+ "imageOrientation,imageRendering,inherits,initialLetter,initialValue,inlineSize,"
+ "inset,insetBlock,insetBlockEnd,insetBlockStart,"
- + "insetInline,insetInlineEnd,insetInlineStart,interpolateSize,"
+ + "insetInline,insetInlineEnd,insetInlineStart,interactivity,interpolateSize,"
+ "isolation,item(),justifyContent,justifyItems,justifySelf,left,length,letterSpacing,lightingColor,"
+ "lineBreak,lineGapOverride,lineHeight,listStyle,listStyleImage,listStylePosition,listStyleType,"
+ "margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,marginInlineEnd,"
@@ -6979,7 +6979,8 @@ public void nodeListButtonLabels() throws Exception {
+ "objectFit,objectPosition,objectViewBox,offset,"
+ "offsetAnchor,offsetDistance,offsetPath,offsetPosition,"
+ "offsetRotate,opacity,order,orphans,outline,outlineColor,"
- + "outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowClipMargin,overflowWrap,"
+ + "outlineOffset,outlineStyle,outlineWidth,"
+ + "overflow,overflowAnchor,overflowBlock,overflowClipMargin,overflowInline,overflowWrap,"
+ "overflowX,overflowY,overlay,overrideColors,overscrollBehavior,overscrollBehaviorBlock,"
+ "overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,pad,padding,paddingBlock,"
+ "paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,"
@@ -6993,7 +6994,7 @@ public void nodeListButtonLabels() throws Exception {
+ "scrollMargin,scrollMarginBlock,"
+ "scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,scrollMarginInline,"
+ "scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,scrollMarginRight,scrollMarginTop,"
- + "scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,"
+ + "scrollMarkerGroup,scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,"
+ "scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,"
+ "scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapStop,"
+ "scrollSnapType,scrollTimeline,scrollTimelineAxis,scrollTimelineName,"
@@ -7099,7 +7100,7 @@ public void nodeListButtonLabels() throws Exception {
+ "gridTemplateRows,height,hyphenateCharacter,hyphenateLimitChars,hyphens,"
+ "imageOrientation,imageRendering,inherits,initialLetter,initialValue,inlineSize,"
+ "inset,insetBlock,insetBlockEnd,insetBlockStart,"
- + "insetInline,insetInlineEnd,insetInlineStart,interpolateSize,"
+ + "insetInline,insetInlineEnd,insetInlineStart,interactivity,interpolateSize,"
+ "isolation,item(),justifyContent,justifyItems,justifySelf,left,length,letterSpacing,lightingColor,"
+ "lineBreak,lineGapOverride,lineHeight,listStyle,listStyleImage,listStylePosition,listStyleType,"
+ "margin,marginBlock,marginBlockEnd,marginBlockStart,marginBottom,marginInline,marginInlineEnd,"
@@ -7111,7 +7112,8 @@ public void nodeListButtonLabels() throws Exception {
+ "objectFit,objectPosition,objectViewBox,offset,"
+ "offsetAnchor,offsetDistance,offsetPath,offsetPosition,"
+ "offsetRotate,opacity,order,orphans,outline,outlineColor,"
- + "outlineOffset,outlineStyle,outlineWidth,overflow,overflowAnchor,overflowClipMargin,overflowWrap,"
+ + "outlineOffset,outlineStyle,outlineWidth,"
+ + "overflow,overflowAnchor,overflowBlock,overflowClipMargin,overflowInline,overflowWrap,"
+ "overflowX,overflowY,overlay,overrideColors,overscrollBehavior,overscrollBehaviorBlock,"
+ "overscrollBehaviorInline,overscrollBehaviorX,overscrollBehaviorY,pad,padding,paddingBlock,"
+ "paddingBlockEnd,paddingBlockStart,paddingBottom,paddingInline,paddingInlineEnd,"
@@ -7125,7 +7127,7 @@ public void nodeListButtonLabels() throws Exception {
+ "scrollMargin,scrollMarginBlock,"
+ "scrollMarginBlockEnd,scrollMarginBlockStart,scrollMarginBottom,scrollMarginInline,"
+ "scrollMarginInlineEnd,scrollMarginInlineStart,scrollMarginLeft,scrollMarginRight,scrollMarginTop,"
- + "scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,"
+ + "scrollMarkerGroup,scrollPadding,scrollPaddingBlock,scrollPaddingBlockEnd,scrollPaddingBlockStart,"
+ "scrollPaddingBottom,scrollPaddingInline,scrollPaddingInlineEnd,scrollPaddingInlineStart,"
+ "scrollPaddingLeft,scrollPaddingRight,scrollPaddingTop,scrollSnapAlign,scrollSnapStop,"
+ "scrollSnapType,scrollTimeline,scrollTimelineAxis,scrollTimelineName,"
@@ -7296,7 +7298,9 @@ public void nodeListButtonLabels() throws Exception {
+ "grid-template-areas,grid-template-columns,grid-template-rows,gridArea,gridAutoColumns,"
+ "gridAutoFlow,gridAutoRows,gridColumn,gridColumnEnd,gridColumnGap,gridColumnStart,gridGap,gridRow,"
+ "gridRowEnd,gridRowGap,gridRowStart,gridTemplate,gridTemplateAreas,gridTemplateColumns,"
- + "gridTemplateRows,height,hyphenate-character,hyphenateCharacter,hyphens,image-orientation,"
+ + "gridTemplateRows,height,"
+ + "hyphenate-character,hyphenate-limit-chars,hyphenateCharacter,hyphenateLimitChars,"
+ + "hyphens,image-orientation,"
+ "image-rendering,imageOrientation,imageRendering,ime-mode,imeMode,inline-size,inlineSize,inset,"
+ "inset-block,inset-block-end,inset-block-start,inset-inline,inset-inline-end,inset-inline-start,"
+ "insetBlock,insetBlockEnd,insetBlockStart,insetInline,insetInlineEnd,insetInlineStart,isolation,"
From 47e84b5279477cf8fa64436872ef3451724e6762 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 7 Apr 2025 08:37:04 +0200
Subject: [PATCH 052/125] code style fixes
---
.../JavaScriptConfiguration.java | 7 +-
.../configuration/ClassConfigurationTest.java | 7 +-
.../JavaScriptConfigurationTest.java | 9 +-
.../javascript/host/LocationTest.java | 4 +-
.../host/xml/XMLHttpRequest5Test.java | 124 +++++-------------
5 files changed, 47 insertions(+), 104 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/configuration/JavaScriptConfiguration.java b/src/main/java/org/htmlunit/javascript/configuration/JavaScriptConfiguration.java
index 753fdc3dd32..80077f2aa47 100644
--- a/src/main/java/org/htmlunit/javascript/configuration/JavaScriptConfiguration.java
+++ b/src/main/java/org/htmlunit/javascript/configuration/JavaScriptConfiguration.java
@@ -672,12 +672,11 @@ public final class JavaScriptConfiguration extends AbstractJavaScriptConfigurati
SVGAnimateMotionElement.class, SVGAnimateTransformElement.class, SVGAnimationElement.class,
SVGCircleElement.class,
SVGClipPathElement.class, SVGComponentTransferFunctionElement.class,
- SVGDefsElement.class, SVGDescElement.class, SVGElement.class,
+ SVGDefsElement.class, SVGDescElement.class, SVGDiscardElement.class, SVGElement.class,
SVGEllipseElement.class, SVGFEBlendElement.class, SVGFEColorMatrixElement.class,
SVGFEComponentTransferElement.class, SVGFECompositeElement.class, SVGFEConvolveMatrixElement.class,
- SVGFEDiffuseLightingElement.class, SVGDiscardElement.class,
- SVGFEDisplacementMapElement.class, SVGFEDistantLightElement.class,
- SVGFEDropShadowElement.class,
+ SVGFEDiffuseLightingElement.class, SVGFEDisplacementMapElement.class,
+ SVGFEDistantLightElement.class, SVGFEDropShadowElement.class,
SVGFEFloodElement.class, SVGFEFuncAElement.class, SVGFEFuncBElement.class, SVGFEFuncGElement.class,
SVGFEFuncRElement.class, SVGFEGaussianBlurElement.class, SVGFEImageElement.class, SVGFEMergeElement.class,
SVGFEMergeNodeElement.class, SVGFEMorphologyElement.class, SVGFEOffsetElement.class,
diff --git a/src/test/java/org/htmlunit/javascript/configuration/ClassConfigurationTest.java b/src/test/java/org/htmlunit/javascript/configuration/ClassConfigurationTest.java
index c125e39fcee..84bf164bc4c 100644
--- a/src/test/java/org/htmlunit/javascript/configuration/ClassConfigurationTest.java
+++ b/src/test/java/org/htmlunit/javascript/configuration/ClassConfigurationTest.java
@@ -14,7 +14,9 @@
*/
package org.htmlunit.javascript.configuration;
-import org.htmlunit.SimpleWebTestCase;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
import org.htmlunit.javascript.HtmlUnitScriptable;
import org.junit.Test;
@@ -23,8 +25,9 @@
*
* @author Chris Erskine
* @author Ahmed Ashour
+ * @author Ronald Brill
*/
-public class ClassConfigurationTest extends SimpleWebTestCase {
+public class ClassConfigurationTest {
/**
* @throws Exception on error
diff --git a/src/test/java/org/htmlunit/javascript/configuration/JavaScriptConfigurationTest.java b/src/test/java/org/htmlunit/javascript/configuration/JavaScriptConfigurationTest.java
index d0a1d3cf4da..a01f310c431 100644
--- a/src/test/java/org/htmlunit/javascript/configuration/JavaScriptConfigurationTest.java
+++ b/src/test/java/org/htmlunit/javascript/configuration/JavaScriptConfigurationTest.java
@@ -15,6 +15,8 @@
package org.htmlunit.javascript.configuration;
import static org.htmlunit.BrowserVersion.FIREFOX;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.File;
@@ -36,8 +38,8 @@
import org.apache.commons.text.RandomStringGenerator;
import org.htmlunit.BrowserVersion;
import org.htmlunit.MockWebConnection;
-import org.htmlunit.SimpleWebTestCase;
import org.htmlunit.WebClient;
+import org.htmlunit.WebTestCase;
import org.htmlunit.javascript.HtmlUnitScriptable;
import org.htmlunit.javascript.JavaScriptEngine;
import org.junit.Test;
@@ -51,7 +53,7 @@
* @author Frank Danek
* @author Joerg Werner
*/
-public class JavaScriptConfigurationTest extends SimpleWebTestCase {
+public class JavaScriptConfigurationTest {
private static final Log LOG = LogFactory.getLog(JavaScriptConfigurationTest.class);
@@ -317,7 +319,8 @@ public void clonedAndModified() throws Exception {
private static void test(final BrowserVersion browserVersion) throws IOException {
try (WebClient webClient = new WebClient(browserVersion)) {
final MockWebConnection conn = new MockWebConnection();
- conn.setDefaultResponse(DOCTYPE_HTML + "");
+ conn.setDefaultResponse(WebTestCase.DOCTYPE_HTML
+ + "");
webClient.setWebConnection(conn);
webClient.getPage("http://localhost/");
diff --git a/src/test/java/org/htmlunit/javascript/host/LocationTest.java b/src/test/java/org/htmlunit/javascript/host/LocationTest.java
index 855d4f26a4c..a94b1b9d85b 100644
--- a/src/test/java/org/htmlunit/javascript/host/LocationTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/LocationTest.java
@@ -250,10 +250,10 @@ public void setPort() throws Exception {
@Test
public void setProtocol() throws Exception {
final URL url = new URL("http://abc.com/index.html?blah=bleh");
- final URL url2 = new URL("ftp://abc.com/index.html?blah=bleh");
+ final URL url2 = new URL("https://abc.com/index.html?blah=bleh");
final String html = DOCTYPE_HTML
+ "Test 1 \n"
- + "...";
+ + "...";
final String html2 = DOCTYPE_HTML
+ "Test 2 ...";
diff --git a/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest5Test.java b/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest5Test.java
index a6e4a86e555..ad0200a170c 100644
--- a/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest5Test.java
+++ b/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest5Test.java
@@ -343,54 +343,22 @@ public void sendXMLDocumentRootNamespace() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = {"text/html;charset=UTF-8",
- ""
- + "foo \n"
- + "\n"
- + ""},
- FF = {"text/html;charset=UTF-8",
- ""
- + "foo \n"
- + "\n"
- + ""},
- FF_ESR = {"text/html;charset=UTF-8",
- ""
- + "foo \n"
- + "\n"
- + ""})
+ @Alerts({"text/html;charset=UTF-8",
+ ""
+ + "foo \n"
+ + "\n"
+ + ""})
@HtmlUnitNYI(CHROME = {"text/html;charset=UTF-8",
""
+ "foo \n"
- + "\n"
- + ""},
- FF = {"text/html;charset=UTF-8",
- "foo \n"
- + "\n"
- + ""},
- FF_ESR = {"text/html;charset=UTF-8",
- "foo \n"
- + "\n"
- + ""})
+ @Alerts({"text/html;charset=UTF-8",
+ "foo \n"
+ + "\n"
+ + ""})
@HtmlUnitNYI(CHROME = {"text/html;charset=UTF-8",
"foo \n"
+ + "\n"
+ + "\n"
+ + "
\n"
+ + "";
+ loadPageVerifyTitle2(html);
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts({"true", "false"})
+ public void offsetHeight_setting_height_quirks() throws Exception {
+ final String html =
+ "\n"
+ + "\n"
+ "\n"
diff --git a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeight2Test.java b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeight2Test.java
new file mode 100644
index 00000000000..5fd9c135a4c
--- /dev/null
+++ b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeight2Test.java
@@ -0,0 +1,398 @@
+/*
+ * Copyright (c) 2002-2025 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.htmlunit.javascript.host.css.property;
+
+import org.htmlunit.WebDriverTestCase;
+import org.htmlunit.junit.BrowserRunner;
+import org.htmlunit.junit.annotation.Alerts;
+import org.htmlunit.junit.annotation.HtmlUnitNYI;
+import org.htmlunit.junit.annotation.NotYetImplemented;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+
+/**
+ * Tests for ComputedHeight.
+ *
+ * @author Ahmed Ashour
+ * @author Ronald Brill
+ */
+@RunWith(BrowserRunner.class)
+public class ElementOffsetHeight2Test extends WebDriverTestCase {
+
+ /**
+ * Tests the relation between {@code fontSize} and {@code offsetHeight}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ public void offsetHeight() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + " a
\n"
+ + " \n"
+ + "";
+
+ final WebDriver driver = loadPage2(html);
+ final String expected = loadExpectation("ElementOffsetHeightTest.properties", ".txt");
+ final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
+ assertEquals(expected, actual);
+ }
+
+ /**
+ * Try to do a line break if width is fixed.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "12, 27, 44, 60, 80, 108, 126, 161, 208, 216, 270, 288, 340, 407",
+ FF = "14, 30, 48, 60, 80, 108, 126, 161, 208, 224, 279, 297, 350, 418",
+ FF_ESR = "14, 30, 48, 60, 80, 108, 126, 161, 208, 224, 279, 297, 350, 418")
+ @NotYetImplemented // we will see other results on unix
+ public void offsetHeightLineBreaks() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + " "
+ + "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt "
+ + "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo "
+ + "dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor "
+ + "sit amet.
\n"
+ + " \n"
+ + "\n"
+ + "";
+
+ final WebDriver driver = loadPage2(html);
+ final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
+ assertEquals(getExpectedAlerts()[0], actual);
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("true, true, true, true, true, true, true, true, true, true, true, true, true, true")
+ public void offsetHeightLineBreaks2() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + " Lorem ipsum
\n"
+ + " "
+ + "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt "
+ + "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo "
+ + "dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor "
+ + "sit amet.
\n"
+ + " \n"
+ + "\n"
+ + "";
+
+ final WebDriver driver = loadPage2(html);
+ final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
+ assertEquals(getExpectedAlerts()[0], actual);
+ }
+
+ /**
+ * Try to do a line break if width is fixed.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("true")
+ public void offsetHeightManualLineBreaks() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+
+ + " "
+ + "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, "
+ + "sed diam nonumy eirmod tempor invidunt "
+ + "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo "
+ + "dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor "
+ + "sit amet.
\n"
+
+ + " "
+ + "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, "
+ + "sed diam nonumy eirmod tempor invidunt "
+ + "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo "
+ + "dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor "
+ + "sit amet.
\n"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ final WebDriver driver = loadPage2(html);
+ final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
+ assertEquals(getExpectedAlerts()[0], actual);
+ }
+
+ /**
+ * Tests the relation between {@code fontSize} and {@code offsetHeight}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "10, 11, 16, 18, 21, 27, 37, 55",
+ FF = "11, 12, 16, 18, 21, 28, 38, 56",
+ FF_ESR = "11, 12, 16, 18, 21, 28, 38, 56")
+ public void offsetHeightSmallLarge() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + " a
\n"
+ + " \n"
+ + "";
+
+ final WebDriver driver = loadPage2(html);
+ final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
+ assertEquals(getExpectedAlerts()[0], actual);
+ }
+
+ /**
+ * Tests the relation between {@code fontSize} and {@code offsetHeight}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("16, 22")
+ public void offsetHeightSmallerLarger() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + " a
\n"
+ + " \n"
+ + "";
+
+ final WebDriver driver = loadPage2(html);
+ final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
+ assertEquals(getExpectedAlerts()[0], actual);
+ }
+
+ /**
+ * Tests the relation between {@code fontSize} and {@code offsetHeight}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "11, 49, 6",
+ FF = "12, 49, 3",
+ FF_ESR = "12, 49, 3")
+ @HtmlUnitNYI(CHROME = "11, 49, 2",
+ EDGE = "11, 49, 2")
+ public void offsetHeightUnits() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + " a
\n"
+ + " a
\n"
+ + " a
\n"
+ + " \n"
+ + "";
+
+ final WebDriver driver = loadPage2(html);
+ final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
+ assertEquals(getExpectedAlerts()[0], actual);
+ }
+
+ /**
+ * Tests the relation between {@code fontSize} and {@code offsetHeight}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "12, 49, 6",
+ FF = "13, 49, 4",
+ FF_ESR = "13, 49, 4")
+ @HtmlUnitNYI(CHROME = "12, 49, 4",
+ EDGE = "12, 49, 4",
+ FF = "13, 49, 5",
+ FF_ESR = "13, 49, 5")
+ public void offsetHeightUnitsWidth() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + " a
\n"
+ + " a
\n"
+ + " a
\n"
+ + " \n"
+ + "";
+
+ final WebDriver driver = loadPage2(html);
+ final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
+ assertEquals(getExpectedAlerts()[0], actual);
+ }
+
+ /**
+ * Test case for #124.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts({"300", "549", "945", "60", "273", "938", "35"})
+ @HtmlUnitNYI(CHROME = {"300", "552", "9690", "60", "294", "6885", "43"},
+ EDGE = {"300", "552", "9690", "60", "294", "6885", "43"},
+ FF = {"300", "552", "9690", "60", "294", "6885", "43"},
+ FF_ESR = {"300", "552", "9690", "60", "294", "6885", "43"})
+ public void issue124() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + " 8oz steak from Good and Gather. 8oz steak from Good and Gather. 8oz"
+ + " steak from Good and Gather. 8oz steak from Good and Gather. 8oz steak"
+ + " from Good and Gather. 8oz steak from Good and Gather. 8oz steak from"
+ + " Good and Gather. 8oz steak from Good and Gather."
+ + " \n"
+ + " \n"
+ + "
\n"
+ + " \n"
+
+ + " \n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+}
diff --git a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java
index ce8c231bd8d..dd83ed843e4 100644
--- a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetHeightTest.java
@@ -18,14 +18,11 @@
import org.htmlunit.junit.BrowserRunner;
import org.htmlunit.junit.annotation.Alerts;
import org.htmlunit.junit.annotation.HtmlUnitNYI;
-import org.htmlunit.junit.annotation.NotYetImplemented;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.openqa.selenium.By;
-import org.openqa.selenium.WebDriver;
/**
- * Tests for ComputedHeight.
+ * Unit tests for {@code offsetHeight} of an element.
*
* @author Ahmed Ashour
* @author Ronald Brill
@@ -33,366 +30,2149 @@
@RunWith(BrowserRunner.class)
public class ElementOffsetHeightTest extends WebDriverTestCase {
+ private static final String VALUE_ = "e == null ? e : e.offsetHeight";
+
+ private void test(final String tagName) throws Exception {
+ String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "<" + tagName + " id='outer'><" + tagName + ">" + tagName + ">" + tagName + ">\n"
+ + "";
+
+ if ("basefont".equals(tagName) || "isindex".equals(tagName)) {
+ html = DOCTYPE_HTML
+ + "\n"
+ + "<" + tagName + " id='outer'><" + tagName + ">\n"
+ + "\n"
+ + "\n"
+ + "";
+ }
+
+ if ("title".equals(tagName)) {
+ // title is a bit special, we have to provide at least
+ // one closing tab otherwise title spans to the end of the file
+ html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + " \n"
+ + " \n"
+ + "";
+ }
+
+ if ("frame".equals(tagName)) {
+ html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + " \n"
+ + " ";
+ }
+ if ("script".equals(tagName)) {
+ html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "";
+ }
+ if ("frameset".equals(tagName)) {
+ html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + " ";
+ }
+
+ if ("basefont".equals(tagName)
+ || "isindex".equals(tagName)) {
+ loadPageWithAlerts2(html);
+ return;
+ }
+
+ loadPageVerifyTitle2(html);
+ }
+
+ private static String testInput(final String type) {
+ return DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + " \n"
+ + "";
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlAbbreviated}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void abbr() throws Exception {
+ test("abbr");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlAcronym}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void acronym() throws Exception {
+ test("acronym");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlAnchor}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void a() throws Exception {
+ test("a");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlAddress}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void address() throws Exception {
+ test("address");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlApplet}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void applet() throws Exception {
+ test("applet");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlArea}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void area() throws Exception {
+ test("area");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlArticle}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void article() throws Exception {
+ test("article");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlAside}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void aside() throws Exception {
+ test("aside");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlAudio}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void audio() throws Exception {
+ test("audio");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBackgroundSound}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void bgsound() throws Exception {
+ test("bgsound");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBase}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void base() throws Exception {
+ test("base");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBaseFont}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void basefont() throws Exception {
+ test("basefont");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBidirectionalIsolation}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void bdi() throws Exception {
+ test("bdi");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBidirectionalOverride}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void bdo() throws Exception {
+ test("bdo");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBig}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "21")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void big() throws Exception {
+ test("big");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBlink}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void blink() throws Exception {
+ test("blink");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBlockQuote}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void blockquote() throws Exception {
+ test("blockquote");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBody}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void body() throws Exception {
+ test("body");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBold}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void b() throws Exception {
+ test("b");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlBreak}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF = "18",
+ FF_ESR = "18")
+ @HtmlUnitNYI(FF = "0",
+ FF_ESR = "0")
+ public void br() throws Exception {
+ test("br");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlButton}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("6")
+ @HtmlUnitNYI(CHROME = "20",
+ EDGE = "20",
+ FF = "20",
+ FF_ESR = "20")
+ public void button() throws Exception {
+ test("button");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlCanvas}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("150")
+ public void canvas() throws Exception {
+ test("canvas");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlCaption}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("null")
+ public void caption() throws Exception {
+ test("caption");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlCenter}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void center() throws Exception {
+ test("center");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlCitation}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void cite() throws Exception {
+ test("cite");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlCode}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "15")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void code() throws Exception {
+ test("code");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlCommand}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void command() throws Exception {
+ test("command");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlDataList}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void datalist() throws Exception {
+ test("datalist");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlDetails}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "18",
+ FF = "19",
+ FF_ESR = "19")
+ @HtmlUnitNYI(FF = "18",
+ FF_ESR = "18")
+ public void details() throws Exception {
+ test("details");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlDefinition}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void dfn() throws Exception {
+ test("dfn");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlDefinitionDescription}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void dd() throws Exception {
+ test("dd");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlDeletedText}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void del() throws Exception {
+ test("del");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlDialog}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void dialog() throws Exception {
+ test("dialog");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlDirectory}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void dir() throws Exception {
+ test("dir");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlDivision}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void div() throws Exception {
+ test("div");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlDefinitionList}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void dl() throws Exception {
+ test("dl");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlDefinitionTerm}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void dt() throws Exception {
+ test("dt");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlEmbed}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void embed() throws Exception {
+ test("embed");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlEmphasis}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void em() throws Exception {
+ test("em");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlFieldSet}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("39")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void fieldset() throws Exception {
+ test("fieldset");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlFigureCaption}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void figcaption() throws Exception {
+ test("figcaption");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlFigure}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void figure() throws Exception {
+ test("figure");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlFont}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void font() throws Exception {
+ test("font");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlFooter}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void footer() throws Exception {
+ test("footer");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlForm}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void form() throws Exception {
+ test("form");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlFrame}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(CHROME = "621",
+ FF = "675",
+ FF_ESR = "677",
+ EDGE = "630")
+ @HtmlUnitNYI(CHROME = "0",
+ EDGE = "0",
+ FF = "0",
+ FF_ESR = "0")
+ public void frame() throws Exception {
+ test("frame");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlFrameSet}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "621",
+ EDGE = "630",
+ FF = "675",
+ FF_ESR = "677")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void frameset() throws Exception {
+ test("frameset");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlHeading1}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void h1() throws Exception {
+ test("h1");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlHeading2}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void h2() throws Exception {
+ test("h2");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlHeading3}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void h3() throws Exception {
+ test("h3");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlHeading4}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void h4() throws Exception {
+ test("h4");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlHeading5}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void h5() throws Exception {
+ test("h5");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlHeading6}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void h6() throws Exception {
+ test("h6");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlHead}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("null")
+ public void head() throws Exception {
+ test("head");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlHeader}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void header() throws Exception {
+ test("header");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlHorizontalRule}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("2")
+ @HtmlUnitNYI(CHROME = "0",
+ EDGE = "0",
+ FF = "0",
+ FF_ESR = "0")
+ public void hr() throws Exception {
+ test("hr");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlHtml}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("8")
+ public void html() throws Exception {
+ test("html");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlInlineFrame}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("154")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void iframe() throws Exception {
+ test("iframe");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlInlineQuotation}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("17")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void q() throws Exception {
+ test("q");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlImage}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void image() throws Exception {
+ test("image");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlImage}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void img() throws Exception {
+ test("img");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlInsertedText}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void ins() throws Exception {
+ test("ins");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlIsIndex}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void isindex() throws Exception {
+ test("isindex");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlItalic}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void i() throws Exception {
+ test("i");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlKeyboard}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "15")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void kbd() throws Exception {
+ test("kbd");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void keygen() throws Exception {
+ test("keygen");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlLabel}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void label() throws Exception {
+ test("label");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlLayer}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void layer() throws Exception {
+ test("layer");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlLegend}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void legend() throws Exception {
+ test("legend");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlListing}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void listing() throws Exception {
+ test("listing");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlListItem}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "18",
+ FF = "19",
+ FF_ESR = "19")
+ @HtmlUnitNYI(CHROME = "0",
+ EDGE = "0",
+ FF = "0",
+ FF_ESR = "0")
+ public void li() throws Exception {
+ test("li");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlLink}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void link() throws Exception {
+ test("link");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlMain}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void main() throws Exception {
+ test("main");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlMap}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void map() throws Exception {
+ test("map");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlMarquee}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("18")
+ public void marquee() throws Exception {
+ test("marquee");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlMark}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void mark() throws Exception {
+ test("mark");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlMenu}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void menu() throws Exception {
+ test("menu");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlMenuItem}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void menuitem() throws Exception {
+ test("menuitem");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlMeta}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void meta() throws Exception {
+ test("meta");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlMeter}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("16")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void meter() throws Exception {
+ test("meter");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlMultiColumn}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void multicol() throws Exception {
+ test("multicol");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlNoBreak}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void nobr() throws Exception {
+ test("nobr");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlNav}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void nav() throws Exception {
+ test("nav");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlNextId}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void nextid() throws Exception {
+ test("nextid");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlNoEmbed}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void noembed() throws Exception {
+ test("noembed");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlNoFrames}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void noframes() throws Exception {
+ test("noframes");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlNoLayer}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void nolayer() throws Exception {
+ test("nolayer");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlNoScript}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18")
+ public void noscript() throws Exception {
+ test("noscript");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlObject}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "17",
+ FF = "0")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void object() throws Exception {
+ test("object");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlOrderedList}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void ol() throws Exception {
+ test("ol");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlOptionGroup}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "20",
+ FF = "18",
+ FF_ESR = "18")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18")
+ public void optgroup() throws Exception {
+ test("optgroup");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlOption}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("20")
+ @HtmlUnitNYI(CHROME = "0",
+ EDGE = "0",
+ FF = "0",
+ FF_ESR = "0")
+ public void option() throws Exception {
+ test("option");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlOutput}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void output() throws Exception {
+ test("output");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlParagraph}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void p() throws Exception {
+ test("p");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlParameter}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void param() throws Exception {
+ test("param");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlPlainText}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("30")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void plaintext() throws Exception {
+ test("plaintext");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlPreformattedText}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void pre() throws Exception {
+ test("pre");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlProgress}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("16")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void progress() throws Exception {
+ test("progress");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlRuby}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF = "17",
+ FF_ESR = "17")
+ public void ruby() throws Exception {
+ test("ruby");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlRb}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF = "17",
+ FF_ESR = "17")
+ public void rb() throws Exception {
+ test("rb");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlRp}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void rp() throws Exception {
+ test("rp");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlRt}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF = "9",
+ FF_ESR = "9")
+ public void rt() throws Exception {
+ test("rt");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlRtc}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF = "9",
+ FF_ESR = "9")
+ @HtmlUnitNYI(FF = "0",
+ FF_ESR = "0")
+ public void rtc() throws Exception {
+ test("rtc");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlS}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void s() throws Exception {
+ test("s");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlSample}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "15")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void samp() throws Exception {
+ test("samp");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlScript}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void script() throws Exception {
+ test("script");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlSection}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void section() throws Exception {
+ test("section");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlSelect}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "19",
+ FF = "22",
+ FF_ESR = "22")
+ @HtmlUnitNYI(CHROME = "20",
+ EDGE = "20",
+ FF = "20",
+ FF_ESR = "20")
+ public void select() throws Exception {
+ test("select");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlSmall}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "15")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void small() throws Exception {
+ test("small");
+ }
+
+ /**
+ * Test {@link org.htmlunit.html.HtmlSource}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void source() throws Exception {
+ test("source");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void spacer() throws Exception {
+ test("spacer");
+ }
+
/**
- * Tests the relation between {@code fontSize} and {@code offsetHeight}.
+ * Test {@link org.htmlunit.html.HtmlSpan}.
*
* @throws Exception if the test fails
*/
@Test
- public void offsetHeight() throws Exception {
- final String html = DOCTYPE_HTML
- + "\n"
- + " a
\n"
- + " \n"
- + "";
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void span() throws Exception {
+ test("span");
+ }
- final WebDriver driver = loadPage2(html);
- final String expected = loadExpectation("ElementOffsetHeightTest.properties", ".txt");
- final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
- assertEquals(expected, actual);
+ /**
+ * Test {@link org.htmlunit.html.HtmlStrike}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void strike() throws Exception {
+ test("strike");
}
/**
- * Try to do a line break if width is fixed.
+ * Test {@link org.htmlunit.html.HtmlStrong}.
*
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = "12, 27, 44, 60, 80, 108, 126, 161, 208, 216, 270, 288, 340, 407",
- FF = "14, 30, 48, 60, 80, 108, 126, 161, 208, 224, 279, 297, 350, 418",
- FF_ESR = "14, 30, 48, 60, 80, 108, 126, 161, 208, 224, 279, 297, 350, 418")
- @NotYetImplemented // we will see other results on unix
- public void offsetHeightLineBreaks() throws Exception {
- final String html = DOCTYPE_HTML
- + "\n"
- + " "
- + "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt "
- + "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo "
- + "dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor "
- + "sit amet.
\n"
- + " \n"
- + "\n"
- + "";
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void strong() throws Exception {
+ test("strong");
+ }
- final WebDriver driver = loadPage2(html);
- final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
- assertEquals(getExpectedAlerts()[0], actual);
+ /**
+ * Test {@link org.htmlunit.html.HtmlStyle}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void style() throws Exception {
+ test("style");
}
/**
+ * Test {@link org.htmlunit.html.HtmlSubscript}.
+ *
* @throws Exception if the test fails
*/
@Test
- @Alerts("true, true, true, true, true, true, true, true, true, true, true, true, true, true")
- public void offsetHeightLineBreaks2() throws Exception {
- final String html = DOCTYPE_HTML
- + "\n"
- + " Lorem ipsum
\n"
- + " "
- + "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt "
- + "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo "
- + "dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor "
- + "sit amet.
\n"
- + " \n"
- + "\n"
- + "";
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "15")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void sub() throws Exception {
+ test("sub");
+ }
- final WebDriver driver = loadPage2(html);
- final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
- assertEquals(getExpectedAlerts()[0], actual);
+ /**
+ * Test {@link org.htmlunit.html.HtmlSummary}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void summary() throws Exception {
+ test("summary");
}
/**
- * Try to do a line break if width is fixed.
+ * Test {@link org.htmlunit.html.HtmlSuperscript}.
*
* @throws Exception if the test fails
*/
@Test
- @Alerts("true")
- public void offsetHeightManualLineBreaks() throws Exception {
- final String html = DOCTYPE_HTML
- + "\n"
-
- + " "
- + "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, "
- + "sed diam nonumy eirmod tempor invidunt "
- + "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo "
- + "dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor "
- + "sit amet.
\n"
-
- + " "
- + "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, "
- + "sed diam nonumy eirmod tempor invidunt "
- + "ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo "
- + "dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor "
- + "sit amet.
\n"
-
- + " \n"
- + "\n"
- + "";
+ /**
+ * Test {@link org.htmlunit.html.HtmlSvg}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("undefined")
+ public void svg() throws Exception {
+ test("svg");
+ }
- final WebDriver driver = loadPage2(html);
- final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
- assertEquals(getExpectedAlerts()[0], actual);
+ /**
+ * Test {@link org.htmlunit.html.HtmlTable}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void table() throws Exception {
+ test("table");
}
/**
- * Tests the relation between {@code fontSize} and {@code offsetHeight}.
+ * Test {@link org.htmlunit.html.HtmlTableColumn}.
*
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = "10, 11, 16, 18, 21, 27, 37, 55",
- FF = "11, 12, 16, 18, 21, 28, 38, 56",
- FF_ESR = "11, 12, 16, 18, 21, 28, 38, 56")
- public void offsetHeightSmallLarge() throws Exception {
- final String html = DOCTYPE_HTML
- + "\n"
- + " a
\n"
- + " \n"
- + "";
+ /**
+ * Test {@link org.htmlunit.html.HtmlTeletype}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "15")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void tt() throws Exception {
+ test("tt");
+ }
- final WebDriver driver = loadPage2(html);
- final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
- assertEquals(getExpectedAlerts()[0], actual);
+ /**
+ * Test {@link org.htmlunit.html.HtmlTime}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void time() throws Exception {
+ test("time");
}
/**
- * Tests the relation between {@code fontSize} and {@code offsetHeight}.
+ * Test {@link org.htmlunit.html.HtmlTitle}.
*
* @throws Exception if the test fails
*/
@Test
- @Alerts("16, 22")
- public void offsetHeightSmallerLarger() throws Exception {
+ @Alerts("0")
+ public void title() throws Exception {
+ // title is a bit special, we have to provide at least
+ // one closing tab otherwise title spans to the end of the file
final String html = DOCTYPE_HTML
- + "\n"
- + " a
\n"
- + " \n"
+ + "\n"
+ "\n"
+ + " \n"
+ + " \n"
+ + "";
+
+ loadPageWithAlerts2(html);
+ }
- + "e.style.fontSize = 'smaller';\n"
- + "array.push(e.offsetHeight);\n"
+ /**
+ * Test {@link org.htmlunit.html.HtmlUnderlined}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void u() throws Exception {
+ test("u");
+ }
- + "e.style.fontSize = 'larger';\n"
- + "array.push(e.offsetHeight);\n"
+ /**
+ * Test {@link org.htmlunit.html.HtmlUnorderedList}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void ul() throws Exception {
+ test("ul");
+ }
- + "document.getElementById('myTextarea').value = array.join(', ');\n"
- + "";
+ /**
+ * Test {@link org.htmlunit.html.HtmlVariable}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void var() throws Exception {
+ test("var");
+ }
- final WebDriver driver = loadPage2(html);
- final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
- assertEquals(getExpectedAlerts()[0], actual);
+ /**
+ * Test {@link org.htmlunit.html.HtmlVideo}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("150")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void video() throws Exception {
+ test("video");
}
/**
- * Tests the relation between {@code fontSize} and {@code offsetHeight}.
+ * Test {@link org.htmlunit.html.HtmlWordBreak}.
*
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = "11, 49, 6",
- FF = "12, 49, 3",
- FF_ESR = "12, 49, 3")
- @HtmlUnitNYI(CHROME = "11, 49, 2",
- EDGE = "11, 49, 2")
- public void offsetHeightUnits() throws Exception {
- final String html = DOCTYPE_HTML
- + "\n"
- + " a
\n"
- + " a
\n"
- + " a
\n"
- + " \n"
- + "";
+ /**
+ * Test {@link org.htmlunit.html.HtmlInput}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "13",
+ FF = "14",
+ FF_ESR = "14")
+ @HtmlUnitNYI(FF_ESR = "10")
+ public void inputCheckbox() throws Exception {
+ loadPageVerifyTitle2(testInput("checkbox"));
+ }
- final WebDriver driver = loadPage2(html);
- final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
- assertEquals(getExpectedAlerts()[0], actual);
+ /**
+ * Test {@link org.htmlunit.html.HtmlInput}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "21",
+ FF = "22",
+ FF_ESR = "22")
+ @HtmlUnitNYI(CHROME = "17",
+ EDGE = "17",
+ FF = "18",
+ FF_ESR = "18")
+ public void inputFile() throws Exception {
+ loadPageVerifyTitle2(testInput("file"));
}
/**
- * Tests the relation between {@code fontSize} and {@code offsetHeight}.
+ * Test {@link org.htmlunit.html.HtmlInput}.
*
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = "12, 49, 6",
- FF = "13, 49, 4",
- FF_ESR = "13, 49, 4")
- @HtmlUnitNYI(CHROME = "12, 49, 4",
- EDGE = "12, 49, 4",
- FF = "13, 49, 5",
- FF_ESR = "13, 49, 5")
- public void offsetHeightUnitsWidth() throws Exception {
- final String html = DOCTYPE_HTML
- + "\n"
- + " a
\n"
- + " a
\n"
- + " a
\n"
- + " \n"
- + "";
+ /**
+ * Test HtmlContent.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(FF_ESR = "0")
+ public void content() throws Exception {
+ test("content");
+ }
- final WebDriver driver = loadPage2(html);
- final String actual = driver.findElement(By.id("myTextarea")).getDomProperty("value");
- assertEquals(getExpectedAlerts()[0], actual);
+ /**
+ * Test {@link org.htmlunit.html.HtmlPicture}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "0",
+ FF_ESR = "17")
+ @HtmlUnitNYI(CHROME = "18",
+ EDGE = "18",
+ FF = "18",
+ FF_ESR = "18")
+ public void picture() throws Exception {
+ test("picture");
}
/**
- * Test case for #124.
+ * Test {@link org.htmlunit.html.HtmlTemplate}.
*
* @throws Exception if the test fails
*/
@Test
- @Alerts({"300", "549", "945", "60", "273", "938", "35"})
- @HtmlUnitNYI(CHROME = {"300", "552", "9690", "60", "294", "6885", "43"},
- EDGE = {"300", "552", "9690", "60", "294", "6885", "43"},
- FF = {"300", "552", "9690", "60", "294", "6885", "43"},
- FF_ESR = {"300", "552", "9690", "60", "294", "6885", "43"})
- public void issue124() throws Exception {
- final String html = DOCTYPE_HTML
- + "\n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " 8oz steak from Good and Gather. 8oz steak from Good and Gather. 8oz"
- + " steak from Good and Gather. 8oz steak from Good and Gather. 8oz steak"
- + " from Good and Gather. 8oz steak from Good and Gather. 8oz steak from"
- + " Good and Gather. 8oz steak from Good and Gather."
- + " \n"
- + " \n"
- + "
\n"
- + " \n"
-
- + " \n"
- + "";
+ @Alerts("0")
+ public void template() throws Exception {
+ test("template");
+ }
- loadPageVerifyTitle2(html);
+ /**
+ * Test {@link org.htmlunit.html.HtmlSlot}.
+ *
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("0")
+ public void slot() throws Exception {
+ test("slot");
}
+
}
diff --git a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetWidthTest.java b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetWidthTest.java
index ad6a6603e4b..7148d9763e9 100644
--- a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetWidthTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetWidthTest.java
@@ -30,8 +30,7 @@
@RunWith(BrowserRunner.class)
public class ElementOffsetWidthTest extends WebDriverTestCase {
- private static final String VALUE_ = "e == null ? e : (e.offsetWidth < 1000 ? e.offsetWidth :"
- + "e.offsetWidth - document.documentElement.offsetWidth)";
+ private static final String VALUE_ = "e == null ? e : e.offsetWidth";
private void test(final String tagName) throws Exception {
String html = DOCTYPE_HTML
@@ -186,7 +185,12 @@ public void a() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void address() throws Exception {
test("address");
}
@@ -219,7 +223,12 @@ public void area() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void article() throws Exception {
test("article");
}
@@ -230,7 +239,13 @@ public void article() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF = "1240",
+ FF_ESR = "1240")
public void aside() throws Exception {
test("aside");
}
@@ -329,11 +344,14 @@ public void blink() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-96")
- @HtmlUnitNYI(CHROME = "-16",
- EDGE = "-16",
- FF = "-16",
- FF_ESR = "-16")
+ @Alerts(CHROME = "1160",
+ EDGE = "1152",
+ FF = "1160",
+ FF_ESR = "1164")
+ @HtmlUnitNYI(CHROME = "1240",
+ EDGE = "1240",
+ FF = "1240",
+ FF_ESR = "1240")
public void blockquote() throws Exception {
test("blockquote");
}
@@ -344,7 +362,12 @@ public void blockquote() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void body() throws Exception {
test("body");
}
@@ -417,7 +440,13 @@ public void caption() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF = "1240",
+ FF_ESR = "1240")
public void center() throws Exception {
test("center");
}
@@ -472,7 +501,13 @@ public void datalist() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF = "1240",
+ FF_ESR = "1240")
public void details() throws Exception {
test("details");
}
@@ -494,11 +529,14 @@ public void dfn() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-56")
- @HtmlUnitNYI(CHROME = "-16",
- EDGE = "-16",
- FF = "-16",
- FF_ESR = "-16")
+ @Alerts(CHROME = "1200",
+ EDGE = "1192",
+ FF = "1200",
+ FF_ESR = "1204")
+ @HtmlUnitNYI(CHROME = "1240",
+ EDGE = "1240",
+ FF = "1240",
+ FF_ESR = "1240")
public void dd() throws Exception {
test("dd");
}
@@ -531,7 +569,12 @@ public void dialog() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void dir() throws Exception {
test("dir");
}
@@ -542,7 +585,12 @@ public void dir() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void div() throws Exception {
test("div");
}
@@ -553,7 +601,12 @@ public void div() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void dl() throws Exception {
test("dl");
}
@@ -564,7 +617,12 @@ public void dl() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void dt() throws Exception {
test("dt");
}
@@ -597,11 +655,14 @@ public void em() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-20")
- @HtmlUnitNYI(CHROME = "-16",
- EDGE = "-16",
- FF = "-16",
- FF_ESR = "-16")
+ @Alerts(CHROME = "1236",
+ EDGE = "1228",
+ FF = "1236",
+ FF_ESR = "1240")
+ @HtmlUnitNYI(CHROME = "1240",
+ EDGE = "1240",
+ FF = "1240",
+ FF_ESR = "1240")
public void fieldset() throws Exception {
test("fieldset");
}
@@ -612,7 +673,13 @@ public void fieldset() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF = "1240",
+ FF_ESR = "1240")
public void figcaption() throws Exception {
test("figcaption");
}
@@ -623,11 +690,14 @@ public void figcaption() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-96")
- @HtmlUnitNYI(CHROME = "-16",
- EDGE = "-16",
- FF = "-16",
- FF_ESR = "-16")
+ @Alerts(CHROME = "1160",
+ EDGE = "1152",
+ FF = "1160",
+ FF_ESR = "1164")
+ @HtmlUnitNYI(CHROME = "1240",
+ EDGE = "1240",
+ FF = "1240",
+ FF_ESR = "1240")
public void figure() throws Exception {
test("figure");
}
@@ -649,7 +719,12 @@ public void font() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void footer() throws Exception {
test("footer");
}
@@ -660,7 +735,12 @@ public void footer() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void form() throws Exception {
test("form");
}
@@ -671,7 +751,13 @@ public void form() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("0")
+ @Alerts(CHROME = "1256",
+ EDGE = "1248",
+ FF = "1256",
+ FF_ESR = "1260")
+ @HtmlUnitNYI(EDGE = "1256",
+ FF = "1256",
+ FF_ESR = "1256")
public void frame() throws Exception {
test("frame");
}
@@ -682,7 +768,13 @@ public void frame() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("0")
+ @Alerts(CHROME = "1256",
+ EDGE = "1248",
+ FF = "1256",
+ FF_ESR = "1260")
+ @HtmlUnitNYI(EDGE = "1256",
+ FF = "1256",
+ FF_ESR = "1256")
public void frameset() throws Exception {
test("frameset");
}
@@ -693,7 +785,12 @@ public void frameset() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void h1() throws Exception {
test("h1");
}
@@ -704,7 +801,12 @@ public void h1() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void h2() throws Exception {
test("h2");
}
@@ -715,7 +817,12 @@ public void h2() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void h3() throws Exception {
test("h3");
}
@@ -726,7 +833,12 @@ public void h3() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void h4() throws Exception {
test("h4");
}
@@ -737,7 +849,12 @@ public void h4() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void h5() throws Exception {
test("h5");
}
@@ -748,7 +865,12 @@ public void h5() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void h6() throws Exception {
test("h6");
}
@@ -770,7 +892,13 @@ public void head() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF = "1240",
+ FF_ESR = "1240")
public void header() throws Exception {
test("header");
}
@@ -781,7 +909,12 @@ public void header() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void hr() throws Exception {
test("hr");
}
@@ -792,7 +925,12 @@ public void hr() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("0")
+ @Alerts(CHROME = "1256",
+ EDGE = "1248",
+ FF = "1256",
+ FF_ESR = "1260")
+ @HtmlUnitNYI(EDGE = "1256",
+ FF_ESR = "1256")
public void html() throws Exception {
test("html");
}
@@ -804,10 +942,10 @@ public void html() throws Exception {
*/
@Test
@Alerts("304")
- @HtmlUnitNYI(CHROME = "0",
- EDGE = "0",
- FF = "0",
- FF_ESR = "0")
+ @HtmlUnitNYI(CHROME = "1256",
+ EDGE = "1256",
+ FF = "1256",
+ FF_ESR = "1256")
public void iframe() throws Exception {
test("iframe");
}
@@ -930,7 +1068,12 @@ public void layer() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void legend() throws Exception {
test("legend");
}
@@ -941,7 +1084,12 @@ public void legend() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void listing() throws Exception {
test("listing");
}
@@ -952,7 +1100,10 @@ public void listing() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
@HtmlUnitNYI(CHROME = "0",
EDGE = "0",
FF = "0",
@@ -978,7 +1129,12 @@ public void link() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void main() throws Exception {
test("main");
}
@@ -1000,7 +1156,10 @@ public void map() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
@HtmlUnitNYI(CHROME = "0",
EDGE = "0",
FF = "0",
@@ -1026,7 +1185,12 @@ public void mark() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void menu() throws Exception {
test("menu");
}
@@ -1096,7 +1260,12 @@ public void nobr() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void nav() throws Exception {
test("nav");
}
@@ -1179,7 +1348,12 @@ public void object() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void ol() throws Exception {
test("ol");
}
@@ -1190,7 +1364,12 @@ public void ol() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void optgroup() throws Exception {
test("optgroup");
}
@@ -1201,7 +1380,12 @@ public void optgroup() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void option() throws Exception {
test("option");
}
@@ -1223,7 +1407,12 @@ public void output() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void p() throws Exception {
test("p");
}
@@ -1245,7 +1434,12 @@ public void param() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void plaintext() throws Exception {
test("plaintext");
}
@@ -1256,7 +1450,12 @@ public void plaintext() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void pre() throws Exception {
test("pre");
}
@@ -1370,7 +1569,12 @@ public void script() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void section() throws Exception {
test("section");
}
@@ -1485,7 +1689,12 @@ public void sub() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void summary() throws Exception {
test("summary");
}
@@ -1507,7 +1716,10 @@ public void sup() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("NaN")
+ @Alerts(CHROME = "undefined",
+ EDGE = "undefined",
+ FF = "undefined",
+ FF_ESR = "undefined")
public void svg() throws Exception {
test("svg");
}
@@ -1704,7 +1916,12 @@ public void u() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void ul() throws Exception {
test("ul");
}
@@ -1752,7 +1969,12 @@ public void wbr() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts("-16")
+ @Alerts(CHROME = "1240",
+ EDGE = "1232",
+ FF = "1240",
+ FF_ESR = "1244")
+ @HtmlUnitNYI(EDGE = "1240",
+ FF_ESR = "1240")
public void xmp() throws Exception {
test("xmp");
}
From 0938f8a6d1421125e3e6f4e065557bec79c17e1e Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 7 Apr 2025 15:33:19 +0200
Subject: [PATCH 057/125] better var naming
---
.../java/org/htmlunit/css/ComputedCssStyleDeclaration.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java b/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java
index 10c1b99ef41..b88a8f7331c 100644
--- a/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java
+++ b/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java
@@ -1674,9 +1674,9 @@ else if (child instanceof DomText) {
* elements
*/
private int getEmptyHeight(final DomElement element) {
- final Integer cachedHeight2 = getCachedEmptyHeight();
- if (cachedHeight2 != null) {
- return cachedHeight2.intValue();
+ final Integer cachedEmptyHeight = getCachedEmptyHeight();
+ if (cachedEmptyHeight != null) {
+ return cachedEmptyHeight.intValue();
}
if (!element.mayBeDisplayed()) {
From ec048553075e3efaa07cb60e19339f0703c0109b Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 7 Apr 2025 15:33:55 +0200
Subject: [PATCH 058/125] Chrome/Edge 135, FF 137
---
.../java/org/htmlunit/general/ElementChildNodesTest.java | 2 +-
.../org/htmlunit/javascript/host/html/HTMLElement2Test.java | 6 ++++--
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/test/java/org/htmlunit/general/ElementChildNodesTest.java b/src/test/java/org/htmlunit/general/ElementChildNodesTest.java
index 047cc40faa8..cc65d9ec841 100644
--- a/src/test/java/org/htmlunit/general/ElementChildNodesTest.java
+++ b/src/test/java/org/htmlunit/general/ElementChildNodesTest.java
@@ -1379,7 +1379,7 @@ public void svg() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts({"3", "2", "2", "3", "3", "2"})
+ @Alerts({"1", "0", "1", "1", "0", "1"})
public void table() throws Exception {
loadPageVerifyTitle2(test("table"));
}
diff --git a/src/test/java/org/htmlunit/javascript/host/html/HTMLElement2Test.java b/src/test/java/org/htmlunit/javascript/host/html/HTMLElement2Test.java
index 56575cea06a..272e8e9904f 100644
--- a/src/test/java/org/htmlunit/javascript/host/html/HTMLElement2Test.java
+++ b/src/test/java/org/htmlunit/javascript/host/html/HTMLElement2Test.java
@@ -328,7 +328,7 @@ public void offsetTopAndLeft_Nothing() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"50", "50"})
+ @Alerts({"8", "8"})
public void offsetTopAndLeft_AbsolutelyPositioned() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
@@ -558,7 +558,9 @@ public void offsetTopAndLeftWithRelativePosition() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"30px", "46", "55px", "71", "71", "0", "0", "0", "0"})
+ @Alerts(DEFAULT = {"", "1240", "", "34", "34", "0", "0", "0", "0"},
+ EDGE = {"", "1232", "", "34", "34", "0", "0", "0", "0"},
+ FF_ESR = {"", "1244", "", "34", "34", "0", "0", "0", "0"})
public void offsetWidthAndHeight() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
From fecac515784c3d42f84fa8eb6d7c9e0b49bbb5b0 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 7 Apr 2025 18:02:39 +0200
Subject: [PATCH 059/125] code style
---
.../host/css/property/ElementOffsetWidthTest.java | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetWidthTest.java b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetWidthTest.java
index 7148d9763e9..02952924960 100644
--- a/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetWidthTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/css/property/ElementOffsetWidthTest.java
@@ -244,7 +244,6 @@ public void article() throws Exception {
FF = "1240",
FF_ESR = "1244")
@HtmlUnitNYI(EDGE = "1240",
- FF = "1240",
FF_ESR = "1240")
public void aside() throws Exception {
test("aside");
@@ -445,7 +444,6 @@ public void caption() throws Exception {
FF = "1240",
FF_ESR = "1244")
@HtmlUnitNYI(EDGE = "1240",
- FF = "1240",
FF_ESR = "1240")
public void center() throws Exception {
test("center");
@@ -506,7 +504,6 @@ public void datalist() throws Exception {
FF = "1240",
FF_ESR = "1244")
@HtmlUnitNYI(EDGE = "1240",
- FF = "1240",
FF_ESR = "1240")
public void details() throws Exception {
test("details");
@@ -661,8 +658,7 @@ public void em() throws Exception {
FF_ESR = "1240")
@HtmlUnitNYI(CHROME = "1240",
EDGE = "1240",
- FF = "1240",
- FF_ESR = "1240")
+ FF = "1240")
public void fieldset() throws Exception {
test("fieldset");
}
@@ -678,7 +674,6 @@ public void fieldset() throws Exception {
FF = "1240",
FF_ESR = "1244")
@HtmlUnitNYI(EDGE = "1240",
- FF = "1240",
FF_ESR = "1240")
public void figcaption() throws Exception {
test("figcaption");
@@ -756,7 +751,6 @@ public void form() throws Exception {
FF = "1256",
FF_ESR = "1260")
@HtmlUnitNYI(EDGE = "1256",
- FF = "1256",
FF_ESR = "1256")
public void frame() throws Exception {
test("frame");
@@ -773,7 +767,6 @@ public void frame() throws Exception {
FF = "1256",
FF_ESR = "1260")
@HtmlUnitNYI(EDGE = "1256",
- FF = "1256",
FF_ESR = "1256")
public void frameset() throws Exception {
test("frameset");
@@ -897,7 +890,6 @@ public void head() throws Exception {
FF = "1240",
FF_ESR = "1244")
@HtmlUnitNYI(EDGE = "1240",
- FF = "1240",
FF_ESR = "1240")
public void header() throws Exception {
test("header");
@@ -1385,7 +1377,7 @@ public void optgroup() throws Exception {
FF = "1240",
FF_ESR = "1244")
@HtmlUnitNYI(EDGE = "1240",
- FF_ESR = "1240")
+ FF_ESR = "1240")
public void option() throws Exception {
test("option");
}
From 47292c8cd9429e96f4048dc39747bc9085a01487 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 7 Apr 2025 18:07:37 +0200
Subject: [PATCH 060/125] fix test (hopefully)
---
src/test/java/org/htmlunit/WebClient2Test.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/test/java/org/htmlunit/WebClient2Test.java b/src/test/java/org/htmlunit/WebClient2Test.java
index 5bd467fe2e3..46db9c1285a 100644
--- a/src/test/java/org/htmlunit/WebClient2Test.java
+++ b/src/test/java/org/htmlunit/WebClient2Test.java
@@ -418,8 +418,9 @@ public void localFile() throws Exception {
@Alerts("titel - simple.html")
public void localFileFile() throws Exception {
final URL url = getClass().getClassLoader().getResource("simple.html");
- String file = url.getFile();
+ String file = URLDecoder.decode(url.getFile(), StandardCharsets.UTF_8);
if (file.startsWith("/") && file.contains(":")) {
+ // we have to remove the trailing slash to test the c:\.... case.
file = file.substring(1);
}
From a3bb9d823f78a9681c95fe330525f90da927acf9 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Thu, 10 Apr 2025 18:29:04 +0200
Subject: [PATCH 061/125] fix test
---
.../java/org/htmlunit/general/ElementChildNodesTest.java | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/test/java/org/htmlunit/general/ElementChildNodesTest.java b/src/test/java/org/htmlunit/general/ElementChildNodesTest.java
index cc65d9ec841..ca837ffac10 100644
--- a/src/test/java/org/htmlunit/general/ElementChildNodesTest.java
+++ b/src/test/java/org/htmlunit/general/ElementChildNodesTest.java
@@ -17,6 +17,7 @@
import org.htmlunit.WebDriverTestCase;
import org.htmlunit.junit.BrowserRunner;
import org.htmlunit.junit.annotation.Alerts;
+import org.htmlunit.junit.annotation.HtmlUnitNYI;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -1380,6 +1381,10 @@ public void svg() throws Exception {
*/
@Test
@Alerts({"1", "0", "1", "1", "0", "1"})
+ @HtmlUnitNYI(CHROME = {"3", "2", "2", "3", "3", "2"},
+ EDGE = {"3", "2", "2", "3", "3", "2"},
+ FF = {"3", "2", "2", "3", "3", "2"},
+ FF_ESR = {"3", "2", "2", "3", "3", "2"})
public void table() throws Exception {
loadPageVerifyTitle2(test("table"));
}
From 7ca7774d83358b35cc8547be73aebe00513602f6 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Thu, 10 Apr 2025 18:29:32 +0200
Subject: [PATCH 062/125] code cleanup
---
.../javascript/host/html/HTMLElement.java | 128 +++++++++---------
1 file changed, 64 insertions(+), 64 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
index 3fbe110f1e6..e1983218937 100644
--- a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
+++ b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
@@ -392,7 +392,7 @@ public HtmlUnitScriptable getAttributeNode(final String attributeName) {
@JsxGetter
public String getInnerText() {
final HtmlSerializerInnerOuterText ser = new HtmlSerializerInnerOuterText(getBrowserVersion());
- return ser.asText(this.getDomNodeOrDie());
+ return ser.asText(getDomNodeOrDie());
}
/**
@@ -904,58 +904,6 @@ protected void setChOff(String chOff) {
getDomNodeOrDie().setAttribute("charOff", chOff);
}
- /**
- * Returns this element's offsetLeft
, which is the calculated left position of this
- * element relative to the offsetParent
.
- *
- * @return this element's offsetLeft
- * @see MSDN Documentation
- * @see Element Dimensions
- * @see Reverse Engineering by Anne van Kesteren
- */
- @JsxGetter
- public int getOffsetLeft() {
- if (this instanceof HTMLBodyElement) {
- return 0;
- }
-
- int left = 0;
-
- // Add the offset for this node.
- DomNode node = getDomNodeOrDie();
- HTMLElement element = node.getScriptableObject();
- final WebWindow webWindow = element.getWindow().getWebWindow();
- ComputedCssStyleDeclaration style = webWindow.getComputedStyle(element.getDomNodeOrDie(), null);
- left += style.getLeft(true, false, false);
-
- // If this node is absolutely positioned, we're done.
- final String position = style.getPositionWithInheritance();
- if (ABSOLUTE.equals(position) || FIXED.equals(position)) {
- return left;
- }
-
- final HTMLElement offsetParent = getOffsetParent();
-
- // Add the offset for the ancestor nodes.
- node = node.getParentNode();
- while (node != null && node.getScriptableObject() != offsetParent) {
- if (node.getScriptableObject() instanceof HTMLElement) {
- element = node.getScriptableObject();
- style = webWindow.getComputedStyle(element.getDomNodeOrDie(), null);
- left += style.getLeft(true, true, true);
- }
- node = node.getParentNode();
- }
-
- if (offsetParent != null) {
- style = webWindow.getComputedStyle(offsetParent.getDomNodeOrDie(), null);
- left += style.getMarginLeftValue();
- left += style.getPaddingLeftValue();
- }
-
- return left;
- }
-
/**
* Returns this element's X position.
* @return this element's X position
@@ -1026,10 +974,9 @@ public int getOffsetTop() {
int top = 0;
// Add the offset for this node.
- DomNode node = getDomNodeOrDie();
- HTMLElement element = node.getScriptableObject();
- final WebWindow webWindow = element.getWindow().getWebWindow();
- ComputedCssStyleDeclaration style = webWindow.getComputedStyle(element.getDomNodeOrDie(), null);
+ final HtmlElement htmlElement = getDomNodeOrDie();
+ final WebWindow webWindow = getWindow().getWebWindow();
+ ComputedCssStyleDeclaration style = webWindow.getComputedStyle(htmlElement, null);
top += style.getTop(true, false, false);
// If this node is absolutely positioned, we're done.
@@ -1041,18 +988,17 @@ public int getOffsetTop() {
final HTMLElement offsetParent = getOffsetParent();
// Add the offset for the ancestor nodes.
- node = node.getParentNode();
- while (node != null && node.getScriptableObject() != offsetParent) {
- if (node.getScriptableObject() instanceof HTMLElement) {
- element = node.getScriptableObject();
- style = webWindow.getComputedStyle(element.getDomNodeOrDie(), null);
+ DomNode parentNode = htmlElement.getParentNode();
+ while (parentNode != null && parentNode.getScriptableObject() != offsetParent) {
+ if (parentNode instanceof HtmlElement) {
+ style = webWindow.getComputedStyle((HtmlElement) parentNode, null);
top += style.getTop(false, true, true);
}
- node = node.getParentNode();
+ parentNode = parentNode.getParentNode();
}
if (offsetParent != null) {
- style = webWindow.getComputedStyle(getDomNodeOrDie(), null);
+ style = webWindow.getComputedStyle(htmlElement, null);
final boolean thisElementHasTopMargin = style.getMarginTopValue() != 0;
style = webWindow.getComputedStyle(offsetParent.getDomNodeOrDie(), null);
@@ -1065,6 +1011,60 @@ public int getOffsetTop() {
return top;
}
+ /**
+ * Returns this element's offsetLeft
, which is the calculated left position of this
+ * element relative to the offsetParent
.
+ *
+ * @return this element's offsetLeft
+ * @see MSDN Documentation
+ * @see Element Dimensions
+ * @see Reverse Engineering by Anne van Kesteren
+ */
+ @JsxGetter
+ public int getOffsetLeft() {
+ if (this instanceof HTMLBodyElement) {
+ return 0;
+ }
+
+ int left = 0;
+
+ // Add the offset for this node.
+ final HtmlElement htmlElement = getDomNodeOrDie();
+ final WebWindow webWindow = getWindow().getWebWindow();
+ ComputedCssStyleDeclaration style = webWindow.getComputedStyle(htmlElement, null);
+ left += style.getLeft(true, false, false);
+
+ // If this node is absolutely positioned, we're done.
+ final String position = style.getPositionWithInheritance();
+ if (ABSOLUTE.equals(position) || FIXED.equals(position)) {
+ return left;
+ }
+
+ final HTMLElement offsetParent = getOffsetParent();
+
+ DomNode parentNode = htmlElement.getParentNode();
+ while (parentNode != null && parentNode.getScriptableObject() != offsetParent) {
+ if (parentNode instanceof HtmlElement) {
+ style = webWindow.getComputedStyle((HtmlElement) parentNode, null);
+ left += style.getLeft(true, true, true);
+ }
+ parentNode = parentNode.getParentNode();
+ }
+
+ if (offsetParent != null) {
+ style = webWindow.getComputedStyle(htmlElement, null);
+ final boolean thisElementHasLeftMargin = style.getMarginLeftValue() != 0;
+
+ style = webWindow.getComputedStyle(offsetParent.getDomNodeOrDie(), null);
+ if (!thisElementHasLeftMargin) {
+ left += style.getMarginLeftValue();
+ }
+ left += style.getPaddingLeftValue();
+ }
+
+ return left;
+ }
+
/**
* Returns this element's offsetParent
. The offsetLeft
and
* offsetTop
attributes are relative to the offsetParent
.
From ed4b08e56c589ebc163ab5e4b76234990eeeb632 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Thu, 10 Apr 2025 19:12:20 +0200
Subject: [PATCH 063/125] fix last commit
---
.../org/htmlunit/javascript/host/html/HTMLElement.java | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
index e1983218937..90244aea9ac 100644
--- a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
+++ b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
@@ -1052,13 +1052,8 @@ public int getOffsetLeft() {
}
if (offsetParent != null) {
- style = webWindow.getComputedStyle(htmlElement, null);
- final boolean thisElementHasLeftMargin = style.getMarginLeftValue() != 0;
-
style = webWindow.getComputedStyle(offsetParent.getDomNodeOrDie(), null);
- if (!thisElementHasLeftMargin) {
- left += style.getMarginLeftValue();
- }
+ left += style.getMarginLeftValue();
left += style.getPaddingLeftValue();
}
From 744ecfda4c2dfd46a0a0c578151bf8b1fc9eb565 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Thu, 10 Apr 2025 19:21:32 +0200
Subject: [PATCH 064/125] cleanup
---
.../javascript/host/html/HTMLElement.java | 46 +++++++------------
1 file changed, 17 insertions(+), 29 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
index 90244aea9ac..2ee0cad72d5 100644
--- a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
+++ b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
@@ -919,7 +919,7 @@ public int getPosX() {
webWindow.getComputedStyle(element.getDomNodeOrDie(), null);
cumulativeOffset += style.getBorderLeftValue();
}
- element = element.getOffsetParent();
+ element = element.getOffsetParentInternal(false).getScriptableObject();
}
return cumulativeOffset;
}
@@ -939,23 +939,11 @@ public int getPosY() {
webWindow.getComputedStyle(element.getDomNodeOrDie(), null);
cumulativeOffset += style.getBorderTopValue();
}
- element = element.getOffsetParent();
+ element = element.getOffsetParentInternal(false).getScriptableObject();
}
return cumulativeOffset;
}
- /**
- * Gets the offset parent or {@code null} if this is not an {@link HTMLElement}.
- * @return the offset parent or {@code null}
- */
- private HTMLElement getOffsetParent() {
- final Object offsetParent = getOffsetParentInternal(false);
- if (offsetParent instanceof HTMLElement) {
- return (HTMLElement) offsetParent;
- }
- return null;
- }
-
/**
* Returns this element's {@code offsetTop}, which is the calculated top position of this
* element relative to the {@code offsetParent}.
@@ -985,11 +973,11 @@ public int getOffsetTop() {
return top;
}
- final HTMLElement offsetParent = getOffsetParent();
+ final HtmlElement offsetParent = getOffsetParentInternal(false);
// Add the offset for the ancestor nodes.
DomNode parentNode = htmlElement.getParentNode();
- while (parentNode != null && parentNode.getScriptableObject() != offsetParent) {
+ while (parentNode != null && parentNode != offsetParent) {
if (parentNode instanceof HtmlElement) {
style = webWindow.getComputedStyle((HtmlElement) parentNode, null);
top += style.getTop(false, true, true);
@@ -1001,7 +989,7 @@ public int getOffsetTop() {
style = webWindow.getComputedStyle(htmlElement, null);
final boolean thisElementHasTopMargin = style.getMarginTopValue() != 0;
- style = webWindow.getComputedStyle(offsetParent.getDomNodeOrDie(), null);
+ style = webWindow.getComputedStyle(offsetParent, null);
if (!thisElementHasTopMargin) {
top += style.getMarginTopValue();
}
@@ -1040,10 +1028,10 @@ public int getOffsetLeft() {
return left;
}
- final HTMLElement offsetParent = getOffsetParent();
+ final HtmlElement offsetParent = getOffsetParentInternal(false);
DomNode parentNode = htmlElement.getParentNode();
- while (parentNode != null && parentNode.getScriptableObject() != offsetParent) {
+ while (parentNode != null && parentNode != offsetParent) {
if (parentNode instanceof HtmlElement) {
style = webWindow.getComputedStyle((HtmlElement) parentNode, null);
left += style.getLeft(true, true, true);
@@ -1052,7 +1040,7 @@ public int getOffsetLeft() {
}
if (offsetParent != null) {
- style = webWindow.getComputedStyle(offsetParent.getDomNodeOrDie(), null);
+ style = webWindow.getComputedStyle(offsetParent, null);
left += style.getMarginLeftValue();
left += style.getPaddingLeftValue();
}
@@ -1074,25 +1062,25 @@ public int getOffsetLeft() {
*/
@JsxGetter(propertyName = "offsetParent")
public HtmlUnitScriptable getOffsetParent_js() {
- return getOffsetParentInternal(getBrowserVersion().hasFeature(JS_OFFSET_PARENT_NULL_IF_FIXED));
+ final boolean feature = getBrowserVersion().hasFeature(JS_OFFSET_PARENT_NULL_IF_FIXED);
+ return getOffsetParentInternal(feature).getScriptableObject();
}
- private HtmlUnitScriptable getOffsetParentInternal(final boolean returnNullIfFixed) {
+ private HtmlElement getOffsetParentInternal(final boolean returnNullIfFixed) {
DomNode currentElement = getDomNodeOrDie();
if (currentElement.getParentNode() == null) {
return null;
}
- final HTMLElement htmlElement = currentElement.getScriptableObject();
if (returnNullIfFixed
- && FIXED.equals(htmlElement.getStyle().getStyleAttribute(
+ && FIXED.equals(getStyle().getStyleAttribute(
StyleAttributes.Definition.POSITION, true))) {
return null;
}
- final WebWindow webWindow = htmlElement.getWindow().getWebWindow();
- final ComputedCssStyleDeclaration style = webWindow.getComputedStyle(htmlElement.getDomNodeOrDie(), null);
+ final WebWindow webWindow = getWindow().getWebWindow();
+ final ComputedCssStyleDeclaration style = webWindow.getComputedStyle((DomElement) currentElement, null);
final String position = style.getPositionWithInheritance();
final boolean staticPos = "static".equals(position);
@@ -1102,16 +1090,16 @@ private HtmlUnitScriptable getOffsetParentInternal(final boolean returnNullIfFix
if (parentNode instanceof HtmlBody
|| (staticPos && parentNode instanceof HtmlTableDataCell)
|| (staticPos && parentNode instanceof HtmlTable)) {
- return parentNode.getScriptableObject();
+ return (HtmlElement) parentNode;
}
- if (parentNode != null && parentNode.getScriptableObject() instanceof HTMLElement) {
+ if (parentNode != null && parentNode instanceof HtmlElement) {
final HTMLElement parentElement = parentNode.getScriptableObject();
final ComputedCssStyleDeclaration parentStyle =
webWindow.getComputedStyle(parentElement.getDomNodeOrDie(), null);
final String parentPosition = parentStyle.getPositionWithInheritance();
if (!"static".equals(parentPosition)) {
- return parentNode.getScriptableObject();
+ return (HtmlElement) parentNode;
}
}
From 173793e76ec17e9004fbfa320d8d5b215111fac9 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Thu, 10 Apr 2025 19:29:54 +0200
Subject: [PATCH 065/125] cleanup
---
src/main/java/org/htmlunit/javascript/host/dom/Node.java | 2 +-
.../java/org/htmlunit/javascript/host/html/HTMLElement.java | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/Node.java b/src/main/java/org/htmlunit/javascript/host/dom/Node.java
index 175f7119e03..da5b61780f0 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/Node.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/Node.java
@@ -676,7 +676,7 @@ public final Node getParent() {
* @return the parent node
*/
@JsxGetter
- public Object getParentNode() {
+ public Node getParentNode() {
return getJavaScriptNode(getDomNodeOrDie().getParentNode());
}
diff --git a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
index 2ee0cad72d5..fe4d4d7008d 100644
--- a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
+++ b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
@@ -1120,14 +1120,14 @@ public ClientRect getBoundingClientRect() {
int top = getPosY();
// account for any scrolled ancestors
- Object parentNode = getOffsetParentInternal(false);
+ Node parentNode = getOffsetParentInternal(false).getScriptableObject();
while ((parentNode instanceof HTMLElement)
&& !(parentNode instanceof HTMLBodyElement)) {
final HTMLElement elem = (HTMLElement) parentNode;
left -= elem.getScrollLeft();
top -= elem.getScrollTop();
- parentNode = elem.getParentNode();
+ parentNode = elem.getParent();
}
textRectangle.setBottom(top + getOffsetHeight());
From bb7d706533814acdecc4494e05d99cb6e3d07277 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 11 Apr 2025 08:01:04 +0200
Subject: [PATCH 066/125] fix build
---
src/main/java/org/htmlunit/javascript/host/dom/Node.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/Node.java b/src/main/java/org/htmlunit/javascript/host/dom/Node.java
index da5b61780f0..175f7119e03 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/Node.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/Node.java
@@ -676,7 +676,7 @@ public final Node getParent() {
* @return the parent node
*/
@JsxGetter
- public Node getParentNode() {
+ public Object getParentNode() {
return getJavaScriptNode(getDomNodeOrDie().getParentNode());
}
From 21e5bacdce3bb187777f2fc5b44ad9ae9002335c Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 11 Apr 2025 08:57:36 +0200
Subject: [PATCH 067/125] fix a stupid error i made in the last cleanup
---
.../javascript/host/html/HTMLElement.java | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
index fe4d4d7008d..786e1528498 100644
--- a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
+++ b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
@@ -919,7 +919,7 @@ public int getPosX() {
webWindow.getComputedStyle(element.getDomNodeOrDie(), null);
cumulativeOffset += style.getBorderLeftValue();
}
- element = element.getOffsetParentInternal(false).getScriptableObject();
+ element = element.getOffestParentElement(false);
}
return cumulativeOffset;
}
@@ -939,7 +939,7 @@ public int getPosY() {
webWindow.getComputedStyle(element.getDomNodeOrDie(), null);
cumulativeOffset += style.getBorderTopValue();
}
- element = element.getOffsetParentInternal(false).getScriptableObject();
+ element = element.getOffestParentElement(false);
}
return cumulativeOffset;
}
@@ -1063,7 +1063,15 @@ public int getOffsetLeft() {
@JsxGetter(propertyName = "offsetParent")
public HtmlUnitScriptable getOffsetParent_js() {
final boolean feature = getBrowserVersion().hasFeature(JS_OFFSET_PARENT_NULL_IF_FIXED);
- return getOffsetParentInternal(feature).getScriptableObject();
+ return getOffestParentElement(feature);
+ }
+
+ private HTMLElement getOffestParentElement(final boolean returnNullIfFixed) {
+ final HtmlElement html = getOffsetParentInternal(returnNullIfFixed);
+ if (html == null) {
+ return null;
+ }
+ return html.getScriptableObject();
}
private HtmlElement getOffsetParentInternal(final boolean returnNullIfFixed) {
@@ -1120,7 +1128,7 @@ public ClientRect getBoundingClientRect() {
int top = getPosY();
// account for any scrolled ancestors
- Node parentNode = getOffsetParentInternal(false).getScriptableObject();
+ Node parentNode = getOffestParentElement(false);
while ((parentNode instanceof HTMLElement)
&& !(parentNode instanceof HTMLBodyElement)) {
final HTMLElement elem = (HTMLElement) parentNode;
From 26196ff497e64995df4a908acf042e15d5630368 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 11 Apr 2025 11:32:17 +0200
Subject: [PATCH 068/125] move some code out of the js world
---
.../java/org/htmlunit/html/HtmlElement.java | 185 ++++++++++++++++++
.../java/org/htmlunit/html/HtmlImage.java | 6 +-
.../javascript/host/html/HTMLElement.java | 160 +--------------
3 files changed, 192 insertions(+), 159 deletions(-)
diff --git a/src/main/java/org/htmlunit/html/HtmlElement.java b/src/main/java/org/htmlunit/html/HtmlElement.java
index d028fc6fa93..3e9b9544b10 100644
--- a/src/main/java/org/htmlunit/html/HtmlElement.java
+++ b/src/main/java/org/htmlunit/html/HtmlElement.java
@@ -16,6 +16,9 @@
import static org.htmlunit.BrowserVersionFeatures.HTMLELEMENT_REMOVE_ACTIVE_TRIGGERS_BLUR_EVENT;
import static org.htmlunit.BrowserVersionFeatures.KEYBOARD_EVENT_SPECIAL_KEYPRESS;
+import static org.htmlunit.css.CssStyleSheet.ABSOLUTE;
+import static org.htmlunit.css.CssStyleSheet.FIXED;
+import static org.htmlunit.css.CssStyleSheet.STATIC;
import java.io.IOException;
import java.util.ArrayList;
@@ -31,6 +34,8 @@
import org.htmlunit.SgmlPage;
import org.htmlunit.WebAssert;
import org.htmlunit.WebClient;
+import org.htmlunit.WebWindow;
+import org.htmlunit.css.ComputedCssStyleDeclaration;
import org.htmlunit.html.impl.SelectableTextInput;
import org.htmlunit.javascript.HtmlUnitScriptable;
import org.htmlunit.javascript.host.dom.Document;
@@ -1423,6 +1428,186 @@ public void setRequired(final boolean required) {
}
}
+ /**
+ * INTERNAL API - SUBJECT TO CHANGE AT ANY TIME - USE AT YOUR OWN RISK.
+ *
+ * @param returnNullIfFixed if position is 'fixed' return null
+ * @return the offset parent {@link HtmlElement}
+ */
+ public HtmlElement getOffsetParentInternal(final boolean returnNullIfFixed) {
+ if (getParentNode() == null) {
+ return null;
+ }
+
+ final WebWindow webWindow = getPage().getEnclosingWindow();
+ final ComputedCssStyleDeclaration style = webWindow.getComputedStyle(this, null);
+ final String position = style.getPositionWithInheritance();
+
+ if (returnNullIfFixed && FIXED.equals(position)) {
+ return null;
+ }
+
+ final boolean staticPos = STATIC.equals(position);
+
+ DomNode currentElement = this;
+ while (currentElement != null) {
+
+ final DomNode parentNode = currentElement.getParentNode();
+ if (parentNode instanceof HtmlBody
+ || (staticPos && parentNode instanceof HtmlTableDataCell)
+ || (staticPos && parentNode instanceof HtmlTable)) {
+ return (HtmlElement) parentNode;
+ }
+
+ if (parentNode instanceof HtmlElement) {
+ final ComputedCssStyleDeclaration parentStyle =
+ webWindow.getComputedStyle((HtmlElement) parentNode, null);
+ final String parentPosition = parentStyle.getPositionWithInheritance();
+ if (!STATIC.equals(parentPosition)) {
+ return (HtmlElement) parentNode;
+ }
+ }
+
+ currentElement = currentElement.getParentNode();
+ }
+
+ return null;
+ }
+
+ /**
+ * @return this element's top offset, which is the calculated left position of this
+ * element relative to the offsetParent
.
+ */
+ public int getOffsetTop() {
+ if (this instanceof HtmlBody) {
+ return 0;
+ }
+
+ int top = 0;
+
+ // Add the offset for this node.
+ final WebWindow webWindow = getPage().getEnclosingWindow();
+ ComputedCssStyleDeclaration style = webWindow.getComputedStyle(this, null);
+ top += style.getTop(true, false, false);
+
+ // If this node is absolutely positioned, we're done.
+ final String position = style.getPositionWithInheritance();
+ if (ABSOLUTE.equals(position) || FIXED.equals(position)) {
+ return top;
+ }
+
+ final HtmlElement offsetParent = getOffsetParentInternal(false);
+
+ // Add the offset for the ancestor nodes.
+ DomNode parentNode = getParentNode();
+ while (parentNode != null && parentNode != offsetParent) {
+ if (parentNode instanceof HtmlElement) {
+ style = webWindow.getComputedStyle((HtmlElement) parentNode, null);
+ top += style.getTop(false, true, true);
+ }
+ parentNode = parentNode.getParentNode();
+ }
+
+ if (offsetParent != null) {
+ style = webWindow.getComputedStyle(this, null);
+ final boolean thisElementHasTopMargin = style.getMarginTopValue() != 0;
+
+ style = webWindow.getComputedStyle(offsetParent, null);
+ if (!thisElementHasTopMargin) {
+ top += style.getMarginTopValue();
+ }
+ top += style.getPaddingTopValue();
+ }
+
+ return top;
+ }
+
+ /**
+ * @return this element's left offset, which is the calculated left position of this
+ * element relative to the offsetParent
.
+ */
+ public int getOffsetLeft() {
+ if (this instanceof HtmlBody) {
+ return 0;
+ }
+
+ int left = 0;
+
+ // Add the offset for this node.
+ final WebWindow webWindow = getPage().getEnclosingWindow();
+ ComputedCssStyleDeclaration style = webWindow.getComputedStyle(this, null);
+ left += style.getLeft(true, false, false);
+
+ // If this node is absolutely positioned, we're done.
+ final String position = style.getPositionWithInheritance();
+ if (ABSOLUTE.equals(position) || FIXED.equals(position)) {
+ return left;
+ }
+
+ final HtmlElement offsetParent = getOffsetParentInternal(false);
+
+ DomNode parentNode = getParentNode();
+ while (parentNode != null && parentNode != offsetParent) {
+ if (parentNode instanceof HtmlElement) {
+ style = webWindow.getComputedStyle((HtmlElement) parentNode, null);
+ left += style.getLeft(true, true, true);
+ }
+ parentNode = parentNode.getParentNode();
+ }
+
+ if (offsetParent != null) {
+ style = webWindow.getComputedStyle(offsetParent, null);
+ left += style.getMarginLeftValue();
+ left += style.getPaddingLeftValue();
+ }
+
+ return left;
+ }
+
+ /**
+ * Returns this element's X position.
+ * @return this element's X position
+ */
+ public int getPosX() {
+ int cumulativeOffset = 0;
+ final WebWindow webWindow = getPage().getEnclosingWindow();
+
+ HtmlElement element = this;
+ while (element != null) {
+ cumulativeOffset += element.getOffsetLeft();
+ if (element != this) {
+ final ComputedCssStyleDeclaration style =
+ webWindow.getComputedStyle(element, null);
+ cumulativeOffset += style.getBorderLeftValue();
+ }
+ element = element.getOffsetParentInternal(false);
+ }
+
+ return cumulativeOffset;
+ }
+
+ /**
+ * Returns this element's Y position.
+ * @return this element's Y position
+ */
+ public int getPosY() {
+ int cumulativeOffset = 0;
+ final WebWindow webWindow = getPage().getEnclosingWindow();
+
+ HtmlElement element = this;
+ while (element != null) {
+ cumulativeOffset += element.getOffsetTop();
+ if (element != this) {
+ final ComputedCssStyleDeclaration style =
+ webWindow.getComputedStyle(element, null);
+ cumulativeOffset += style.getBorderTopValue();
+ }
+ element = element.getOffsetParentInternal(false);
+ }
+
+ return cumulativeOffset;
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/src/main/java/org/htmlunit/html/HtmlImage.java b/src/main/java/org/htmlunit/html/HtmlImage.java
index 0695114fa4b..ec90e4aa4f4 100644
--- a/src/main/java/org/htmlunit/html/HtmlImage.java
+++ b/src/main/java/org/htmlunit/html/HtmlImage.java
@@ -47,7 +47,6 @@
import org.htmlunit.javascript.host.dom.Document;
import org.htmlunit.javascript.host.event.Event;
import org.htmlunit.javascript.host.event.MouseEvent;
-import org.htmlunit.javascript.host.html.HTMLElement;
import org.htmlunit.platform.Platform;
import org.htmlunit.platform.geom.IntDimension2D;
import org.htmlunit.platform.image.ImageData;
@@ -876,12 +875,11 @@ public String getLocalName() {
public ScriptResult fireEvent(final Event event) {
if (event instanceof MouseEvent) {
final MouseEvent mouseEvent = (MouseEvent) event;
- final HTMLElement scriptableObject = getScriptableObject();
if (lastClickX_ >= 0) {
- mouseEvent.setClientX(scriptableObject.getPosX() + lastClickX_);
+ mouseEvent.setClientX(getPosX() + lastClickX_);
}
if (lastClickY_ >= 0) {
- mouseEvent.setClientY(scriptableObject.getPosX() + lastClickY_);
+ mouseEvent.setClientY(getPosX() + lastClickY_);
}
}
diff --git a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
index 786e1528498..a5ad199c299 100644
--- a/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
+++ b/src/main/java/org/htmlunit/javascript/host/html/HTMLElement.java
@@ -15,8 +15,6 @@
package org.htmlunit.javascript.host.html;
import static org.htmlunit.BrowserVersionFeatures.JS_OFFSET_PARENT_NULL_IF_FIXED;
-import static org.htmlunit.css.CssStyleSheet.ABSOLUTE;
-import static org.htmlunit.css.CssStyleSheet.FIXED;
import static org.htmlunit.html.DisabledElement.ATTRIBUTE_DISABLED;
import static org.htmlunit.html.DomElement.ATTRIBUTE_NOT_DEFINED;
import static org.htmlunit.html.DomElement.ATTRIBUTE_VALUE_EMPTY;
@@ -35,11 +33,9 @@
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.htmlunit.SgmlPage;
-import org.htmlunit.WebWindow;
import org.htmlunit.corejs.javascript.Function;
import org.htmlunit.corejs.javascript.ScriptableObject;
import org.htmlunit.css.ComputedCssStyleDeclaration;
-import org.htmlunit.css.StyleAttributes;
import org.htmlunit.html.DomElement;
import org.htmlunit.html.DomNode;
import org.htmlunit.html.DomText;
@@ -52,7 +48,6 @@
import org.htmlunit.html.HtmlBidirectionalIsolation;
import org.htmlunit.html.HtmlBidirectionalOverride;
import org.htmlunit.html.HtmlBig;
-import org.htmlunit.html.HtmlBody;
import org.htmlunit.html.HtmlBold;
import org.htmlunit.html.HtmlBreak;
import org.htmlunit.html.HtmlCenter;
@@ -95,8 +90,6 @@
import org.htmlunit.html.HtmlSubscript;
import org.htmlunit.html.HtmlSummary;
import org.htmlunit.html.HtmlSuperscript;
-import org.htmlunit.html.HtmlTable;
-import org.htmlunit.html.HtmlTableDataCell;
import org.htmlunit.html.HtmlTeletype;
import org.htmlunit.html.HtmlUnderlined;
import org.htmlunit.html.HtmlVariable;
@@ -909,19 +902,7 @@ protected void setChOff(String chOff) {
* @return this element's X position
*/
public int getPosX() {
- int cumulativeOffset = 0;
- HTMLElement element = this;
- final WebWindow webWindow = element.getWindow().getWebWindow();
- while (element != null) {
- cumulativeOffset += element.getOffsetLeft();
- if (element != this) {
- final ComputedCssStyleDeclaration style =
- webWindow.getComputedStyle(element.getDomNodeOrDie(), null);
- cumulativeOffset += style.getBorderLeftValue();
- }
- element = element.getOffestParentElement(false);
- }
- return cumulativeOffset;
+ return getDomNodeOrDie().getPosX();
}
/**
@@ -929,19 +910,7 @@ public int getPosX() {
* @return this element's Y position
*/
public int getPosY() {
- int cumulativeOffset = 0;
- HTMLElement element = this;
- final WebWindow webWindow = element.getWindow().getWebWindow();
- while (element != null) {
- cumulativeOffset += element.getOffsetTop();
- if (element != this) {
- final ComputedCssStyleDeclaration style =
- webWindow.getComputedStyle(element.getDomNodeOrDie(), null);
- cumulativeOffset += style.getBorderTopValue();
- }
- element = element.getOffestParentElement(false);
- }
- return cumulativeOffset;
+ return getDomNodeOrDie().getPosY();
}
/**
@@ -955,48 +924,7 @@ public int getPosY() {
*/
@JsxGetter
public int getOffsetTop() {
- if (this instanceof HTMLBodyElement) {
- return 0;
- }
-
- int top = 0;
-
- // Add the offset for this node.
- final HtmlElement htmlElement = getDomNodeOrDie();
- final WebWindow webWindow = getWindow().getWebWindow();
- ComputedCssStyleDeclaration style = webWindow.getComputedStyle(htmlElement, null);
- top += style.getTop(true, false, false);
-
- // If this node is absolutely positioned, we're done.
- final String position = style.getPositionWithInheritance();
- if (ABSOLUTE.equals(position) || FIXED.equals(position)) {
- return top;
- }
-
- final HtmlElement offsetParent = getOffsetParentInternal(false);
-
- // Add the offset for the ancestor nodes.
- DomNode parentNode = htmlElement.getParentNode();
- while (parentNode != null && parentNode != offsetParent) {
- if (parentNode instanceof HtmlElement) {
- style = webWindow.getComputedStyle((HtmlElement) parentNode, null);
- top += style.getTop(false, true, true);
- }
- parentNode = parentNode.getParentNode();
- }
-
- if (offsetParent != null) {
- style = webWindow.getComputedStyle(htmlElement, null);
- final boolean thisElementHasTopMargin = style.getMarginTopValue() != 0;
-
- style = webWindow.getComputedStyle(offsetParent, null);
- if (!thisElementHasTopMargin) {
- top += style.getMarginTopValue();
- }
- top += style.getPaddingTopValue();
- }
-
- return top;
+ return getDomNodeOrDie().getOffsetTop();
}
/**
@@ -1010,42 +938,7 @@ public int getOffsetTop() {
*/
@JsxGetter
public int getOffsetLeft() {
- if (this instanceof HTMLBodyElement) {
- return 0;
- }
-
- int left = 0;
-
- // Add the offset for this node.
- final HtmlElement htmlElement = getDomNodeOrDie();
- final WebWindow webWindow = getWindow().getWebWindow();
- ComputedCssStyleDeclaration style = webWindow.getComputedStyle(htmlElement, null);
- left += style.getLeft(true, false, false);
-
- // If this node is absolutely positioned, we're done.
- final String position = style.getPositionWithInheritance();
- if (ABSOLUTE.equals(position) || FIXED.equals(position)) {
- return left;
- }
-
- final HtmlElement offsetParent = getOffsetParentInternal(false);
-
- DomNode parentNode = htmlElement.getParentNode();
- while (parentNode != null && parentNode != offsetParent) {
- if (parentNode instanceof HtmlElement) {
- style = webWindow.getComputedStyle((HtmlElement) parentNode, null);
- left += style.getLeft(true, true, true);
- }
- parentNode = parentNode.getParentNode();
- }
-
- if (offsetParent != null) {
- style = webWindow.getComputedStyle(offsetParent, null);
- left += style.getMarginLeftValue();
- left += style.getPaddingLeftValue();
- }
-
- return left;
+ return getDomNodeOrDie().getOffsetLeft();
}
/**
@@ -1067,56 +960,13 @@ public HtmlUnitScriptable getOffsetParent_js() {
}
private HTMLElement getOffestParentElement(final boolean returnNullIfFixed) {
- final HtmlElement html = getOffsetParentInternal(returnNullIfFixed);
+ final HtmlElement html = getDomNodeOrDie().getOffsetParentInternal(returnNullIfFixed);
if (html == null) {
return null;
}
return html.getScriptableObject();
}
- private HtmlElement getOffsetParentInternal(final boolean returnNullIfFixed) {
- DomNode currentElement = getDomNodeOrDie();
-
- if (currentElement.getParentNode() == null) {
- return null;
- }
-
- if (returnNullIfFixed
- && FIXED.equals(getStyle().getStyleAttribute(
- StyleAttributes.Definition.POSITION, true))) {
- return null;
- }
-
- final WebWindow webWindow = getWindow().getWebWindow();
- final ComputedCssStyleDeclaration style = webWindow.getComputedStyle((DomElement) currentElement, null);
- final String position = style.getPositionWithInheritance();
- final boolean staticPos = "static".equals(position);
-
- while (currentElement != null) {
-
- final DomNode parentNode = currentElement.getParentNode();
- if (parentNode instanceof HtmlBody
- || (staticPos && parentNode instanceof HtmlTableDataCell)
- || (staticPos && parentNode instanceof HtmlTable)) {
- return (HtmlElement) parentNode;
- }
-
- if (parentNode != null && parentNode instanceof HtmlElement) {
- final HTMLElement parentElement = parentNode.getScriptableObject();
- final ComputedCssStyleDeclaration parentStyle =
- webWindow.getComputedStyle(parentElement.getDomNodeOrDie(), null);
- final String parentPosition = parentStyle.getPositionWithInheritance();
- if (!"static".equals(parentPosition)) {
- return (HtmlElement) parentNode;
- }
- }
-
- currentElement = currentElement.getParentNode();
- }
-
- return null;
- }
-
/**
* {@inheritDoc}
*/
From 14880425a13e12a79651b119a9e97b5742154d2c Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 11 Apr 2025 11:36:49 +0200
Subject: [PATCH 069/125] document last changes
---
src/changes/changes.xml | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 34910e8447d..9e976eaf26d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,16 @@
+
+ core-js: Complete reimplementation of 'String.prototype.search', 'String.prototype.replace',
+ 'String.prototype.replaceAll', and 'String.prototype.split'. The new impl is much closer to the spec.
+
+
+ core-js: Fix a character class parsing regression for regexp.
+
+
+ core-js: Fix handling of \x and \u in regexp.
+
FF137: SVGDiscardElement added.
From 5f458fde942ab3ccc5c4aedf0ba9b858ca1d56ec Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 11 Apr 2025 11:51:57 +0200
Subject: [PATCH 070/125] Chrome/Edge 135, FF 137
---
.../host/html/HTMLElement2Test.java | 38 ++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
diff --git a/src/test/java/org/htmlunit/javascript/host/html/HTMLElement2Test.java b/src/test/java/org/htmlunit/javascript/host/html/HTMLElement2Test.java
index 272e8e9904f..ef183744b22 100644
--- a/src/test/java/org/htmlunit/javascript/host/html/HTMLElement2Test.java
+++ b/src/test/java/org/htmlunit/javascript/host/html/HTMLElement2Test.java
@@ -328,8 +328,42 @@ public void offsetTopAndLeft_Nothing() throws Exception {
* @throws Exception if an error occurs
*/
@Test
- @Alerts({"8", "8"})
+ @Alerts({"50", "50"})
public void offsetTopAndLeft_AbsolutelyPositioned() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + " \n"
+ + "";
+ loadPageVerifyTitle2(html);
+ }
+
+ /**
+ * @throws Exception if an error occurs
+ */
+ @Test
+ @Alerts({"8", "8"})
+ // so far we still support the quirks behaviour
+ @HtmlUnitNYI(CHROME = {"50", "50"},
+ EDGE = {"50", "50"},
+ FF = {"50", "50"},
+ FF_ESR = {"50", "50"})
+ public void offsetTopAndLeft_AbsolutelyPositionedValueWithoutUnit() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
+ " \n"
@@ -561,6 +595,8 @@ public void offsetTopAndLeftWithRelativePosition() throws Exception {
@Alerts(DEFAULT = {"", "1240", "", "34", "34", "0", "0", "0", "0"},
EDGE = {"", "1232", "", "34", "34", "0", "0", "0", "0"},
FF_ESR = {"", "1244", "", "34", "34", "0", "0", "0", "0"})
+ @HtmlUnitNYI(EDGE = {"", "1240", "", "34", "34", "0", "0", "0", "0"},
+ FF_ESR = {"", "1240", "", "34", "34", "0", "0", "0", "0"})
public void offsetWidthAndHeight() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
From 6e9a55ec6ad9cc7d2cf084ac29b4fa888c0b1a21 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 11 Apr 2025 13:03:02 +0200
Subject: [PATCH 071/125] cleanup
---
.../org/htmlunit/css/StyleAttributes.java | 5 +--
.../css/ComputedCSSStyleDeclarationTest.java | 40 ++++++++++++++++---
...StyleDeclarationTest.properties.Chrome.txt | 14 +++----
...SSStyleDeclarationTest.properties.Edge.txt | 14 +++----
...StyleDeclarationTest.properties.FF-ESR.txt | 30 +++++++-------
...dCSSStyleDeclarationTest.properties.FF.txt | 34 ++++++++--------
6 files changed, 83 insertions(+), 54 deletions(-)
diff --git a/src/main/java/org/htmlunit/css/StyleAttributes.java b/src/main/java/org/htmlunit/css/StyleAttributes.java
index 3612798a0ea..c713ca6b938 100644
--- a/src/main/java/org/htmlunit/css/StyleAttributes.java
+++ b/src/main/java/org/htmlunit/css/StyleAttributes.java
@@ -338,11 +338,10 @@ public enum Definition {
BASELINE_SOURCE_("baseline-source", "baseline-source", ff("auto")),
/** The style property {@code blockSize}. */
- BLOCK_SIZE("blockSize", "block-size", chromeAndEdge("328px"),
- ff("328.5px")),
+ BLOCK_SIZE("blockSize", "block-size", chromeAndEdgeAndFirefox("auto")),
/** The style property {@code block-size}. */
- BLOCK_SIZE_("block-size", "block-size", ff("328.5px")),
+ BLOCK_SIZE_("block-size", "block-size", ff("auto")),
/** The style property {@code border}. */
BORDER("border", "border", chromeAndEdge("0px none rgb(0, 0, 0)"), ff("0px rgb(0, 0, 0)")),
diff --git a/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java b/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java
index e995403b2f7..67c86b332ad 100644
--- a/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java
@@ -104,9 +104,8 @@ public void cssFloat() throws Exception {
public void stringProperties() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
- + " \n"
+ + "
HtmlUnit
\n"
+ "
\n"
- + "
\n"
+ "\n"
+ + "\n"
+ + "\n"
+ + "
\n"
+ + " \n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
}
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Chrome.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Chrome.txt
index 4ec98f35fff..c69fde76b10 100644
--- a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Chrome.txt
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Chrome.txt
@@ -42,7 +42,7 @@ backgroundSize=:auto
basePalette=:
baselineShift=:0px
baselineSource=:auto
-blockSize=:328px
+blockSize=:18px
border=:0px none rgb(0, 0, 0)
borderBlock=:0px none rgb(0, 0, 0)
borderBlockColor=:rgb(0, 0, 0)
@@ -219,7 +219,7 @@ gridTemplate=:none
gridTemplateAreas=:none
gridTemplateColumns=:none
gridTemplateRows=:none
-height=:328px
+height=:18px
hyphenateCharacter=:auto
hyphenateLimitChars=:auto
hyphens=:manual
@@ -342,7 +342,7 @@ pageBreakInside=:auto
pageOrientation=:
paintOrder=:normal
perspective=:none
-perspectiveOrigin=:620px 164px
+perspectiveOrigin=:620px 9px
placeContent=:normal
placeItems=:normal
placeSelf=:auto
@@ -461,7 +461,7 @@ top=:auto
touchAction=:auto
transform=:none
transformBox=:view-box
-transformOrigin=:620px 164px
+transformOrigin=:620px 9px
transformStyle=:flat
transition=:all
transitionBehavior=:normal
@@ -563,7 +563,7 @@ webkitJustifyContent=:normal
webkitLineBreak=:auto
webkitLineClamp=:none
webkitLocale=:auto
-webkitLogicalHeight=:328px
+webkitLogicalHeight=:18px
webkitLogicalWidth=:1240px
webkitMarginAfter=:0px
webkitMarginBefore=:0px
@@ -596,7 +596,7 @@ webkitPaddingBefore=:0px
webkitPaddingEnd=:0px
webkitPaddingStart=:0px
webkitPerspective=:none
-webkitPerspectiveOrigin=:620px 164px
+webkitPerspectiveOrigin=:620px 9px
webkitPerspectiveOriginX=:
webkitPerspectiveOriginY=:
webkitPrintColorAdjust=:economy
@@ -620,7 +620,7 @@ webkitTextStroke=:0px rgb(0, 0, 0)
webkitTextStrokeColor=:rgb(0, 0, 0)
webkitTextStrokeWidth=:0px
webkitTransform=:none
-webkitTransformOrigin=:620px 164px
+webkitTransformOrigin=:620px 9px
webkitTransformOriginX=:
webkitTransformOriginY=:
webkitTransformOriginZ=:
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Edge.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Edge.txt
index 38676e1cc39..940ad196464 100644
--- a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Edge.txt
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Edge.txt
@@ -42,7 +42,7 @@ backgroundSize=:auto
basePalette=:
baselineShift=:0px
baselineSource=:auto
-blockSize=:328px
+blockSize=:18px
border=:0px none rgb(0, 0, 0)
borderBlock=:0px none rgb(0, 0, 0)
borderBlockColor=:rgb(0, 0, 0)
@@ -219,7 +219,7 @@ gridTemplate=:none
gridTemplateAreas=:none
gridTemplateColumns=:none
gridTemplateRows=:none
-height=:328px
+height=:18px
hyphenateCharacter=:auto
hyphenateLimitChars=:auto
hyphens=:manual
@@ -342,7 +342,7 @@ pageBreakInside=:auto
pageOrientation=:
paintOrder=:normal
perspective=:none
-perspectiveOrigin=:616px 164px
+perspectiveOrigin=:616px 9px
placeContent=:normal
placeItems=:normal
placeSelf=:auto
@@ -461,7 +461,7 @@ top=:auto
touchAction=:auto
transform=:none
transformBox=:view-box
-transformOrigin=:616px 164px
+transformOrigin=:616px 9px
transformStyle=:flat
transition=:all
transitionBehavior=:normal
@@ -563,7 +563,7 @@ webkitJustifyContent=:normal
webkitLineBreak=:auto
webkitLineClamp=:none
webkitLocale=:auto
-webkitLogicalHeight=:328px
+webkitLogicalHeight=:18px
webkitLogicalWidth=:1232px
webkitMarginAfter=:0px
webkitMarginBefore=:0px
@@ -596,7 +596,7 @@ webkitPaddingBefore=:0px
webkitPaddingEnd=:0px
webkitPaddingStart=:0px
webkitPerspective=:none
-webkitPerspectiveOrigin=:616px 164px
+webkitPerspectiveOrigin=:616px 9px
webkitPerspectiveOriginX=:
webkitPerspectiveOriginY=:
webkitPrintColorAdjust=:economy
@@ -620,7 +620,7 @@ webkitTextStroke=:0px rgb(0, 0, 0)
webkitTextStrokeColor=:rgb(0, 0, 0)
webkitTextStrokeWidth=:0px
webkitTransform=:none
-webkitTransformOrigin=:616px 164px
+webkitTransformOrigin=:616px 9px
webkitTransformOriginX=:
webkitTransformOriginY=:
webkitTransformOriginZ=:
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF-ESR.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF-ESR.txt
index f8ea3367c06..1f2cd1fc653 100644
--- a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF-ESR.txt
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF-ESR.txt
@@ -36,7 +36,7 @@
-moz-padding-start=:0px
-moz-tab-size=:8
-moz-text-size-adjust=:auto
--moz-transform-origin=:622px 164.25px
+-moz-transform-origin=:622px 9px
-moz-transform=:none
-moz-user-input=:auto
-moz-user-modify=:read-only
@@ -95,7 +95,7 @@
-webkit-mask-size=:auto
-webkit-mask=:none
-webkit-order=:0
--webkit-perspective-origin=:622px 164.25px
+-webkit-perspective-origin=:622px 9px
-webkit-perspective=:none
-webkit-text-fill-color=:rgb(0, 0, 0)
-webkit-text-security=:none
@@ -103,7 +103,7 @@
-webkit-text-stroke-color=:rgb(0, 0, 0)
-webkit-text-stroke-width=:0px
-webkit-text-stroke=:0px rgb(0, 0, 0)
--webkit-transform-origin=:622px 164.25px
+-webkit-transform-origin=:622px 9px
-webkit-transform-style=:flat
-webkit-transform=:none
-webkit-transition-delay=:0s
@@ -151,7 +151,7 @@ MozPaddingStart=:0px
MozTabSize=:8
MozTextSizeAdjust=:auto
MozTransform=:none
-MozTransformOrigin=:622px 164.25px
+MozTransformOrigin=:622px 9px
MozUserInput=:auto
MozUserModify=:read-only
MozUserSelect=:auto
@@ -210,7 +210,7 @@ WebkitMaskRepeat=:repeat
WebkitMaskSize=:auto
WebkitOrder=:0
WebkitPerspective=:none
-WebkitPerspectiveOrigin=:622px 164.25px
+WebkitPerspectiveOrigin=:622px 9px
WebkitTextFillColor=:rgb(0, 0, 0)
WebkitTextSecurity=:none
WebkitTextSizeAdjust=:auto
@@ -218,7 +218,7 @@ WebkitTextStroke=:0px rgb(0, 0, 0)
WebkitTextStrokeColor=:rgb(0, 0, 0)
WebkitTextStrokeWidth=:0px
WebkitTransform=:none
-WebkitTransformOrigin=:622px 164.25px
+WebkitTransformOrigin=:622px 9px
WebkitTransformStyle=:flat
WebkitTransition=:all
WebkitTransitionDelay=:0s
@@ -286,8 +286,8 @@ backgroundRepeat=:repeat
backgroundSize=:auto
baseline-source=:auto
baselineSource=:auto
-block-size=:328.5px
-blockSize=:328.5px
+block-size=:18px
+blockSize=:18px
border-block-color=:rgb(0, 0, 0)
border-block-end-color=:rgb(0, 0, 0)
border-block-end-style=:none
@@ -608,7 +608,7 @@ gridTemplate=:none
gridTemplateAreas=:none
gridTemplateColumns=:none
gridTemplateRows=:none
-height=:328.5px
+height=:18px
hyphenate-character=:auto
hyphenateCharacter=:auto
hyphens=:manual
@@ -811,9 +811,9 @@ pageBreakBefore=:auto
pageBreakInside=:auto
paint-order=:normal
paintOrder=:normal
-perspective-origin=:622px 164.25px
+perspective-origin=:622px 9px
perspective=:none
-perspectiveOrigin=:622px 164.25px
+perspectiveOrigin=:622px 9px
place-content=:normal
place-items=:normal legacy
place-self=:auto
@@ -984,11 +984,11 @@ top=:auto
touch-action=:auto
touchAction=:auto
transform-box=:view-box
-transform-origin=:622px 164.25px
+transform-origin=:622px 9px
transform-style=:flat
transform=:none
transformBox=:view-box
-transformOrigin=:622px 164.25px
+transformOrigin=:622px 9px
transformStyle=:flat
transition-delay=:0s
transition-duration=:0s
@@ -1063,7 +1063,7 @@ webkitMaskRepeat=:repeat
webkitMaskSize=:auto
webkitOrder=:0
webkitPerspective=:none
-webkitPerspectiveOrigin=:622px 164.25px
+webkitPerspectiveOrigin=:622px 9px
webkitTextFillColor=:rgb(0, 0, 0)
webkitTextSecurity=:none
webkitTextSizeAdjust=:auto
@@ -1071,7 +1071,7 @@ webkitTextStroke=:0px rgb(0, 0, 0)
webkitTextStrokeColor=:rgb(0, 0, 0)
webkitTextStrokeWidth=:0px
webkitTransform=:none
-webkitTransformOrigin=:622px 164.25px
+webkitTransformOrigin=:622px 9px
webkitTransformStyle=:flat
webkitTransition=:all
webkitTransitionDelay=:0s
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF.txt
index 61efcb6be6a..c814fd7b742 100644
--- a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF.txt
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF.txt
@@ -35,11 +35,11 @@
-moz-orient=:inline
-moz-padding-end=:0px
-moz-padding-start=:0px
--moz-perspective-origin=:620px 164.25px
+-moz-perspective-origin=:620px 9px
-moz-perspective=:none
-moz-tab-size=:8
-moz-text-size-adjust=:auto
--moz-transform-origin=:620px 164.25px
+-moz-transform-origin=:620px 9px
-moz-transform-style=:flat
-moz-transform=:none
-moz-user-select=:auto
@@ -98,7 +98,7 @@
-webkit-mask-size=:auto
-webkit-mask=:none
-webkit-order=:0
--webkit-perspective-origin=:620px 164.25px
+-webkit-perspective-origin=:620px 9px
-webkit-perspective=:none
-webkit-text-fill-color=:rgb(0, 0, 0)
-webkit-text-security=:none
@@ -106,7 +106,7 @@
-webkit-text-stroke-color=:rgb(0, 0, 0)
-webkit-text-stroke-width=:0px
-webkit-text-stroke=:0px rgb(0, 0, 0)
--webkit-transform-origin=:620px 164.25px
+-webkit-transform-origin=:620px 9px
-webkit-transform-style=:flat
-webkit-transform=:none
-webkit-transition-delay=:0s
@@ -153,11 +153,11 @@ MozOrient=:inline
MozPaddingEnd=:0px
MozPaddingStart=:0px
MozPerspective=:none
-MozPerspectiveOrigin=:620px 164.25px
+MozPerspectiveOrigin=:620px 9px
MozTabSize=:8
MozTextSizeAdjust=:auto
MozTransform=:none
-MozTransformOrigin=:620px 164.25px
+MozTransformOrigin=:620px 9px
MozTransformStyle=:flat
MozUserSelect=:auto
MozWindowDragging=:default
@@ -216,7 +216,7 @@ WebkitMaskRepeat=:repeat
WebkitMaskSize=:auto
WebkitOrder=:0
WebkitPerspective=:none
-WebkitPerspectiveOrigin=:620px 164.25px
+WebkitPerspectiveOrigin=:620px 9px
WebkitTextFillColor=:rgb(0, 0, 0)
WebkitTextSecurity=:none
WebkitTextSizeAdjust=:auto
@@ -224,7 +224,7 @@ WebkitTextStroke=:0px rgb(0, 0, 0)
WebkitTextStrokeColor=:rgb(0, 0, 0)
WebkitTextStrokeWidth=:0px
WebkitTransform=:none
-WebkitTransformOrigin=:620px 164.25px
+WebkitTransformOrigin=:620px 9px
WebkitTransformStyle=:flat
WebkitTransition=:all
WebkitTransitionDelay=:0s
@@ -292,8 +292,8 @@ backgroundRepeat=:repeat
backgroundSize=:auto
baseline-source=:auto
baselineSource=:auto
-block-size=:328.5px
-blockSize=:328.5px
+block-size=:18px
+blockSize=:18px
border-block-color=:rgb(0, 0, 0)
border-block-end-color=:rgb(0, 0, 0)
border-block-end-style=:none
@@ -614,7 +614,7 @@ gridTemplate=:none
gridTemplateAreas=:none
gridTemplateColumns=:none
gridTemplateRows=:none
-height=:328.5px
+height=:18px
hyphenate-character=:auto
hyphenate-limit-chars=:auto
hyphenateCharacter=:auto
@@ -819,9 +819,9 @@ pageBreakBefore=:auto
pageBreakInside=:auto
paint-order=:normal
paintOrder=:normal
-perspective-origin=:620px 164.25px
+perspective-origin=:620px 9px
perspective=:none
-perspectiveOrigin=:620px 164.25px
+perspectiveOrigin=:620px 9px
place-content=:normal
place-items=:normal legacy
place-self=:auto
@@ -992,11 +992,11 @@ top=:auto
touch-action=:auto
touchAction=:auto
transform-box=:view-box
-transform-origin=:620px 164.25px
+transform-origin=:620px 9px
transform-style=:flat
transform=:none
transformBox=:view-box
-transformOrigin=:620px 164.25px
+transformOrigin=:620px 9px
transformStyle=:flat
transition-behavior=:normal
transition-delay=:0s
@@ -1074,7 +1074,7 @@ webkitMaskRepeat=:repeat
webkitMaskSize=:auto
webkitOrder=:0
webkitPerspective=:none
-webkitPerspectiveOrigin=:620px 164.25px
+webkitPerspectiveOrigin=:620px 9px
webkitTextFillColor=:rgb(0, 0, 0)
webkitTextSecurity=:none
webkitTextSizeAdjust=:auto
@@ -1082,7 +1082,7 @@ webkitTextStroke=:0px rgb(0, 0, 0)
webkitTextStrokeColor=:rgb(0, 0, 0)
webkitTextStrokeWidth=:0px
webkitTransform=:none
-webkitTransformOrigin=:620px 164.25px
+webkitTransformOrigin=:620px 9px
webkitTransformStyle=:flat
webkitTransition=:all
webkitTransitionDelay=:0s
From 3b74b0886f74b32af790ef69b2f03119955c9aba Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 11 Apr 2025 19:19:53 +0200
Subject: [PATCH 072/125] CSS blockSize support improved
---
src/changes/changes.xml | 3 ++
.../css/AbstractCssStyleDeclaration.java | 8 +++++
.../css/ComputedCssStyleDeclaration.java | 32 +++++++++++++++++++
.../org/htmlunit/css/StyleAttributes.java | 30 ++++++++---------
.../host/css/CSSStyleDeclaration.java | 21 ++++++++++++
.../host/css/ComputedCSSStyleDeclaration.java | 8 +++++
.../css/ComputedCSSStyleDeclarationTest.java | 19 ++++++++---
7 files changed, 101 insertions(+), 20 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 9e976eaf26d..3652924b67d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,9 @@
+
+ CSS blockSize support improved.
+
core-js: Complete reimplementation of 'String.prototype.search', 'String.prototype.replace',
'String.prototype.replaceAll', and 'String.prototype.split'. The new impl is much closer to the spec.
diff --git a/src/main/java/org/htmlunit/css/AbstractCssStyleDeclaration.java b/src/main/java/org/htmlunit/css/AbstractCssStyleDeclaration.java
index 4e650546d79..c0baff12da7 100644
--- a/src/main/java/org/htmlunit/css/AbstractCssStyleDeclaration.java
+++ b/src/main/java/org/htmlunit/css/AbstractCssStyleDeclaration.java
@@ -437,6 +437,14 @@ public String getBackgroundRepeat() {
return value;
}
+ /**
+ * Gets the {@code blockSize} style attribute.
+ * @return the style attribute
+ */
+ public String getBlockSize() {
+ return getStyleAttribute(Definition.BLOCK_SIZE, true);
+ }
+
/**
* Gets the {@code borderBottomColor} style attribute.
* @return the style attribute
diff --git a/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java b/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java
index b88a8f7331c..8efbaa1e801 100644
--- a/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java
+++ b/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java
@@ -565,6 +565,38 @@ public String getBackgroundRepeat() {
return defaultIfEmpty(super.getBackgroundRepeat(), Definition.BACKGROUND_REPEAT);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getBlockSize() {
+ if (NONE.equals(getDisplay())) {
+ return defaultIfEmpty(super.getBlockSize(), Definition.BLOCK_SIZE);
+ }
+
+ final DomElement domElem = getDomElement();
+ if (!domElem.isAttachedToPage()) {
+ return defaultIfEmpty(super.getBlockSize(), Definition.BLOCK_SIZE);
+ }
+
+ return CssPixelValueConverter.pixelString(domElem, new CssPixelValueConverter.CssValue(0, 0) {
+ @Override
+ public String get(final ComputedCssStyleDeclaration style) {
+ final String value = style.getStyleAttribute(Definition.HEIGHT, true);
+ if (StringUtils.isEmpty(value)) {
+ final String content = domElem.getVisibleText();
+ // do this only for small content
+ // at least for empty div's this is more correct
+ if (null == content) {
+ return getDefaultValue() + "px";
+ }
+ return getEmptyHeight(domElem) + "px";
+ }
+ return value;
+ }
+ });
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/src/main/java/org/htmlunit/css/StyleAttributes.java b/src/main/java/org/htmlunit/css/StyleAttributes.java
index c713ca6b938..910d571d24d 100644
--- a/src/main/java/org/htmlunit/css/StyleAttributes.java
+++ b/src/main/java/org/htmlunit/css/StyleAttributes.java
@@ -2090,10 +2090,10 @@ public enum Definition {
MOZ_PERSPECTIVE__("-moz-perspective", "-moz-perspective", ffLatest("none")),
/** The style property {@code MozPerspectiveOrigin}. */
- MOZ_PERSPECTIVE_ORIGIN("MozPerspectiveOrigin", "-moz-perspective-origin", ffLatest("620px 164.25px")),
+ MOZ_PERSPECTIVE_ORIGIN("MozPerspectiveOrigin", "-moz-perspective-origin", ffLatest("620px 9px")),
/** The style property {@code -moz-perspective-origin}. */
- MOZ_PERSPECTIVE_ORIGIN__("-moz-perspective-origin", "-moz-perspective-origin", ffLatest("620px 164.25px")),
+ MOZ_PERSPECTIVE_ORIGIN__("-moz-perspective-origin", "-moz-perspective-origin", ffLatest("620px 9px")),
/** The style property {@code MozTabSize}. */
MOZ_TAB_SIZE("MozTabSize", "-moz-tab-size", ff("8")),
@@ -2125,11 +2125,11 @@ public enum Definition {
/** The style property {@code MozTransformOrigin}. */
MOZ_TRANSFORM_ORIGIN("MozTransformOrigin", "-moz-transform-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px")),
/** The style property {@code -moz-transform-origin}. */
MOZ_TRANSFORM_ORIGIN__("-moz-transform-origin", "-moz-transform-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px")),
/** The style property {@code MozTransformStyle}. */
MOZ_TRANSFORM_STYLE("MozTransformStyle", "-moz-transform-style", ffLatest("flat")),
@@ -2439,11 +2439,11 @@ public enum Definition {
/** The style property {@code perspectiveOrigin}. */
PERSPECTIVE_ORIGIN("perspectiveOrigin", "perspective-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px"), chrome("620px 164px"), edge("616px 162px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px"), chrome("620px 9px"), edge("616px 9px")),
/** The style property {@code perspective-origin}. */
PERSPECTIVE_ORIGIN_("perspective-origin", "perspective-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px")),
/** The style property {@code placeContent}. */
PLACE_CONTENT("placeContent", "place-content", chromeAndEdgeNormal(), ffNormal()),
@@ -3072,10 +3072,10 @@ public enum Definition {
/** The style property {@code transformOrigin}. */
TRANSFORM_ORIGIN("transformOrigin", "transform-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px"), chrome("620px 164px"), edge("616px 162px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px"), chrome("620px 9px"), edge("616px 9px")),
/** The style property {@code transform-origin}. */
- TRANSFORM_ORIGIN_("transform-origin", "transform-origin", ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
+ TRANSFORM_ORIGIN_("transform-origin", "transform-origin", ffEsr("622px 9px"), ffLatest("620px 9px")),
/** The style property {@code transformStyle}. */
TRANSFORM_STYLE("transformStyle", "transform-style", ff("flat"), chromeAndEdge("flat")),
@@ -3716,7 +3716,7 @@ public enum Definition {
WEBKIT_LOCALE("webkitLocale", "webkit-locale", chromeAndEdgeAuto()),
/** The style property {@code webkitLogicalHeight}. */
- WEBKIT_LOGICAL_HEIGHT("webkitLogicalHeight", "webkit-logical-height", chromeAndEdge("328px")),
+ WEBKIT_LOGICAL_HEIGHT("webkitLogicalHeight", "webkit-logical-height", chromeAndEdge("18px")),
/** The style property {@code webkitLogicalWidth}. */
WEBKIT_LOGICAL_WIDTH("webkitLogicalWidth", "webkit-logical-width", chrome("1240px"), edge("1232px")),
@@ -3889,15 +3889,15 @@ public enum Definition {
/** The style property {@code webkitPerspectiveOrigin}. */
WEBKIT_PERSPECTIVE_ORIGIN("webkitPerspectiveOrigin", "webkit-perspective-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px"), chrome("620px 164px"), edge("616px 162px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px"), chrome("620px 9px"), edge("616px 9px")),
/** The style property {@code WebkitPerspectiveOrigin}. */
WEBKIT_PERSPECTIVE_ORIGIN_("WebkitPerspectiveOrigin", "webkit-perspective-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px")),
/** The style property {@code -webkit-perspective-origin}. */
WEBKIT_PERSPECTIVE_ORIGIN__("-webkit-perspective-origin", "webkit-perspective-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px")),
/** The style property {@code webkitPerspectiveOriginX}. */
WEBKIT_PERSPECTIVE_ORIGIN_X("webkitPerspectiveOriginX", "webkit-perspective-origin-x", chromeAndEdgeEmpty()),
@@ -4023,15 +4023,15 @@ public enum Definition {
/** The style property {@code webkitTransformOrigin}. */
WEBKIT_TRANSFORM_ORIGIN("webkitTransformOrigin", "webkit-transform-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px"), chrome("620px 164px"), edge("616px 162px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px"), chrome("620px 9px"), edge("616px 9px")),
/** The style property {@code WebkitTransformOrigin}. */
WEBKIT_TRANSFORM_ORIGIN_("WebkitTransformOrigin", "webkit-transform-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px")),
/** The style property {@code -webkit-transform-origin}. */
WEBKIT_TRANSFORM_ORIGIN__("-webkit-transform-origin", "webkit-transform-origin",
- ffEsr("622px 164.25px"), ffLatest("620px 164.25px")),
+ ffEsr("622px 9px"), ffLatest("620px 9px")),
/** The style property {@code webkitTransformOriginX}. */
WEBKIT_TRANSFORM_ORIGIN_X("webkitTransformOriginX", "webkit-transform-origin-x", chromeAndEdgeEmpty()),
diff --git a/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java b/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
index 432575a8b5e..b3158d83844 100644
--- a/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
+++ b/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
@@ -339,6 +339,27 @@ public void setBackgroundRepeat(final String backgroundRepeat) {
setStyleAttribute(Definition.BACKGROUND_REPEAT.getAttributeName(), backgroundRepeat);
}
+ /**
+ * Gets the {@code blockSize} style attribute.
+ * @return the style attribute
+ */
+ @JsxGetter
+ public String getBlockSize() {
+ if (styleDeclaration_ == null) {
+ return null; // prototype
+ }
+ return styleDeclaration_.getBlockSize();
+ }
+
+ /**
+ * Sets the {@code blockSize} style attribute.
+ * @param blockSize the new attribute
+ */
+ @JsxSetter
+ public void setBlockSize(final String blockSize) {
+ setStyleAttribute(Definition.BLOCK_SIZE.getAttributeName(), blockSize);
+ }
+
/**
* Gets the {@code borderBottomColor} style attribute.
* @return the style attribute
diff --git a/src/main/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclaration.java b/src/main/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclaration.java
index 480b718cb60..e86e9f7f6cf 100644
--- a/src/main/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclaration.java
+++ b/src/main/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclaration.java
@@ -138,6 +138,14 @@ public String getBackgroundRepeat() {
return getCssStyleDeclaration().getBackgroundRepeat();
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getBlockSize() {
+ return getCssStyleDeclaration().getBlockSize();
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java b/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java
index 67c86b332ad..93451e664ea 100644
--- a/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java
@@ -1511,6 +1511,7 @@ public void widthAndHeightEmptySpanElement() throws Exception {
@Test
@Alerts(DEFAULT = {"0", "0", "0", "0", "0", "0"},
FF_ESR = {"0", "0", "0", "0", "0", "17"})
+ @HtmlUnitNYI(FF_ESR = {"0", "0", "0", "0", "0", "0"})
public void widthAndHeightScriptElement() throws Exception {
final String content = DOCTYPE_HTML
+ "\n"
+ "\n"
+ "\n"
- + "
\n"
- + " \n"
+ + "
\n"
+ + "
HtmlUnit
\n"
+ + "
A B
\n"
+ "";
loadPageVerifyTitle2(html);
From d1256d661e5415fc69aa507196018b0182a5be53 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 12 Apr 2025 10:24:31 +0200
Subject: [PATCH 073/125] blockSize is implemented (at least a first simplified
version)
---
.../general/ElementOwnPropertiesTest.java | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/src/test/java/org/htmlunit/general/ElementOwnPropertiesTest.java b/src/test/java/org/htmlunit/general/ElementOwnPropertiesTest.java
index 4c92c30934a..a8e9b2f18ab 100644
--- a/src/test/java/org/htmlunit/general/ElementOwnPropertiesTest.java
+++ b/src/test/java/org/htmlunit/general/ElementOwnPropertiesTest.java
@@ -16743,7 +16743,8 @@ public void nodeListButtonLabels() throws Exception {
+ "writing-mode[GSCE],writingMode[GSCE],x[GSCE],y[GSCE],z-index[GSCE],zIndex[GSCE],"
+ "zoom[GSCE]")
@HtmlUnitNYI(CHROME = "backgroundAttachment[GSCE],backgroundColor[GSCE],backgroundImage[GSCE],"
- + "backgroundPosition[GSCE],backgroundRepeat[GSCE],borderBottomColor[GSCE],borderBottomStyle[GSCE],"
+ + "backgroundPosition[GSCE],backgroundRepeat[GSCE],blockSize[GSCE],"
+ + "borderBottomColor[GSCE],borderBottomStyle[GSCE],"
+ "borderBottomWidth[GSCE],borderLeftColor[GSCE],borderLeftStyle[GSCE],borderLeftWidth[GSCE],"
+ "borderRightColor[GSCE],borderRightStyle[GSCE],borderRightWidth[GSCE],borderTop[GSCE],"
+ "borderTopColor[GSCE],borderTopStyle[GSCE],borderTopWidth[GSCE],bottom[GSCE],color[GSCE],"
@@ -16758,7 +16759,8 @@ public void nodeListButtonLabels() throws Exception {
+ "textIndent[GSCE],top[GSCE],verticalAlign[GSCE],widows[GSCE],width[GSCE],wordSpacing[GSCE],"
+ "zIndex[GSCE]",
EDGE = "backgroundAttachment[GSCE],backgroundColor[GSCE],backgroundImage[GSCE],"
- + "backgroundPosition[GSCE],backgroundRepeat[GSCE],borderBottomColor[GSCE],borderBottomStyle[GSCE],"
+ + "backgroundPosition[GSCE],backgroundRepeat[GSCE],blockSize[GSCE],"
+ + "borderBottomColor[GSCE],borderBottomStyle[GSCE],"
+ "borderBottomWidth[GSCE],borderLeftColor[GSCE],borderLeftStyle[GSCE],borderLeftWidth[GSCE],"
+ "borderRightColor[GSCE],borderRightStyle[GSCE],borderRightWidth[GSCE],borderTop[GSCE],"
+ "borderTopColor[GSCE],borderTopStyle[GSCE],borderTopWidth[GSCE],bottom[GSCE],color[GSCE],"
@@ -17376,7 +17378,8 @@ public void computedStyle() throws Exception {
+ "writing-mode[GSCE],writingMode[GSCE],x[GSCE],y[GSCE],z-index[GSCE],zIndex[GSCE],"
+ "zoom[GSCE]")
@HtmlUnitNYI(CHROME = "backgroundAttachment[GSCE],backgroundColor[GSCE],backgroundImage[GSCE],"
- + "backgroundPosition[GSCE],backgroundRepeat[GSCE],borderBottomColor[GSCE],borderBottomStyle[GSCE],"
+ + "backgroundPosition[GSCE],backgroundRepeat[GSCE],blockSize[GSCE],"
+ + "borderBottomColor[GSCE],borderBottomStyle[GSCE],"
+ "borderBottomWidth[GSCE],borderLeftColor[GSCE],borderLeftStyle[GSCE],borderLeftWidth[GSCE],"
+ "borderRightColor[GSCE],borderRightStyle[GSCE],borderRightWidth[GSCE],borderTop[GSCE],"
+ "borderTopColor[GSCE],borderTopStyle[GSCE],borderTopWidth[GSCE],bottom[GSCE],color[GSCE],"
@@ -17391,7 +17394,8 @@ public void computedStyle() throws Exception {
+ "textIndent[GSCE],top[GSCE],verticalAlign[GSCE],widows[GSCE],width[GSCE],wordSpacing[GSCE],"
+ "zIndex[GSCE]",
EDGE = "backgroundAttachment[GSCE],backgroundColor[GSCE],backgroundImage[GSCE],"
- + "backgroundPosition[GSCE],backgroundRepeat[GSCE],borderBottomColor[GSCE],borderBottomStyle[GSCE],"
+ + "backgroundPosition[GSCE],backgroundRepeat[GSCE],blockSize[GSCE],"
+ + "borderBottomColor[GSCE],borderBottomStyle[GSCE],"
+ "borderBottomWidth[GSCE],borderLeftColor[GSCE],borderLeftStyle[GSCE],borderLeftWidth[GSCE],"
+ "borderRightColor[GSCE],borderRightStyle[GSCE],borderRightWidth[GSCE],borderTop[GSCE],"
+ "borderTopColor[GSCE],borderTopStyle[GSCE],borderTopWidth[GSCE],bottom[GSCE],color[GSCE],"
@@ -17406,7 +17410,8 @@ public void computedStyle() throws Exception {
+ "textIndent[GSCE],top[GSCE],verticalAlign[GSCE],widows[GSCE],width[GSCE],wordSpacing[GSCE],"
+ "zIndex[GSCE]",
FF_ESR = "backgroundAttachment[GSCE],backgroundColor[GSCE],backgroundImage[GSCE],backgroundPosition[GSCE],"
- + "backgroundRepeat[GSCE],borderBottomColor[GSCE],borderBottomStyle[GSCE],borderBottomWidth[GSCE],"
+ + "backgroundRepeat[GSCE],blockSize[GSCE],"
+ + "borderBottomColor[GSCE],borderBottomStyle[GSCE],borderBottomWidth[GSCE],"
+ "borderLeftColor[GSCE],borderLeftStyle[GSCE],borderLeftWidth[GSCE],borderRightColor[GSCE],"
+ "borderRightStyle[GSCE],borderRightWidth[GSCE],borderTop[GSCE],borderTopColor[GSCE],"
+ "borderTopStyle[GSCE],borderTopWidth[GSCE],bottom[GSCE],color[GSCE],constructor(),cssFloat[GSCE],"
@@ -17419,7 +17424,8 @@ public void computedStyle() throws Exception {
+ "right[GSCE],rubyAlign[GSCE],setProperty(),textIndent[GSCE],top[GSCE],verticalAlign[GSCE],"
+ "width[GSCE],wordSpacing[GSCE],zIndex[GSCE]",
FF = "backgroundAttachment[GSCE],backgroundColor[GSCE],backgroundImage[GSCE],backgroundPosition[GSCE],"
- + "backgroundRepeat[GSCE],borderBottomColor[GSCE],borderBottomStyle[GSCE],borderBottomWidth[GSCE],"
+ + "backgroundRepeat[GSCE],blockSize[GSCE],"
+ + "borderBottomColor[GSCE],borderBottomStyle[GSCE],borderBottomWidth[GSCE],"
+ "borderLeftColor[GSCE],borderLeftStyle[GSCE],borderLeftWidth[GSCE],borderRightColor[GSCE],"
+ "borderRightStyle[GSCE],borderRightWidth[GSCE],borderTop[GSCE],borderTopColor[GSCE],"
+ "borderTopStyle[GSCE],borderTopWidth[GSCE],bottom[GSCE],color[GSCE],constructor(),cssFloat[GSCE],"
From 68b1f01501b705e20da217d7ee74b181d10bb111 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 12 Apr 2025 13:30:48 +0200
Subject: [PATCH 074/125] Chrome/Edge 135, FF 137
---
.../java/org/htmlunit/css/ComputedCssStyleDeclaration.java | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java b/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java
index 8efbaa1e801..702b704a269 100644
--- a/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java
+++ b/src/main/java/org/htmlunit/css/ComputedCssStyleDeclaration.java
@@ -1969,6 +1969,13 @@ else if (element instanceof HtmlHeading6) {
defaultHeight *= StringUtils.countMatches(content, '\n') + 1;
}
}
+
+ final String styleHeight = getStyleAttribute(Definition.HEIGHT, true);
+ if (styleHeight.endsWith("%")) {
+ if (page instanceof HtmlPage && !((HtmlPage) page).isQuirksMode()) {
+ return defaultHeight;
+ }
+ }
}
}
From 14c50cb230321c6e8394b686d3acf85f1e137271 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 12 Apr 2025 13:54:52 +0200
Subject: [PATCH 075/125] nyi so far
---
.../javascript/host/css/ComputedCSSStyleDeclarationTest.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java b/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java
index 93451e664ea..b04f44f89fc 100644
--- a/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java
@@ -1887,6 +1887,10 @@ public void offsetHeight_with_childHeight() throws Exception {
*/
@Test
@Alerts({"true", "true"})
+ @HtmlUnitNYI(CHROME = {"true", "false"},
+ EDGE = {"true", "false"},
+ FF = {"true", "false"},
+ FF_ESR = {"true", "false"})
public void offsetHeight_setting_height() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
From 40a8d4698e9856fb7fde66bd6583d14bb49195af Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 12 Apr 2025 14:03:47 +0200
Subject: [PATCH 076/125] nyi so far
---
...eDeclarationTest.properties.Chrome_NYI.txt | 649 ++++++++++
...yleDeclarationTest.properties.Edge_NYI.txt | 649 ++++++++++
...eDeclarationTest.properties.FF-ESR_NYI.txt | 1101 ++++++++++++++++
...StyleDeclarationTest.properties.FF_NYI.txt | 1112 +++++++++++++++++
...Test.properties.displayNone.Chrome_NYI.txt | 649 ++++++++++
...onTest.properties.displayNone.Edge_NYI.txt | 649 ++++++++++
...Test.properties.displayNone.FF-ESR_NYI.txt | 1101 ++++++++++++++++
...tionTest.properties.displayNone.FF_NYI.txt | 1112 +++++++++++++++++
8 files changed, 7022 insertions(+)
create mode 100644 src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Chrome_NYI.txt
create mode 100644 src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Edge_NYI.txt
create mode 100644 src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF-ESR_NYI.txt
create mode 100644 src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF_NYI.txt
create mode 100644 src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.Chrome_NYI.txt
create mode 100644 src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.Edge_NYI.txt
create mode 100644 src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.FF-ESR_NYI.txt
create mode 100644 src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.FF_NYI.txt
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Chrome_NYI.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Chrome_NYI.txt
new file mode 100644
index 00000000000..c00bcdb28fa
--- /dev/null
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Chrome_NYI.txt
@@ -0,0 +1,649 @@
+accentColor=:auto
+additiveSymbols=:
+alignContent=:normal
+alignItems=:normal
+alignSelf=:auto
+alignmentBaseline=:auto
+all=:
+anchorName=:none
+anchorScope=:none
+animation=:none 0s ease 0s 1 normal none running
+animationComposition=:replace
+animationDelay=:0s
+animationDirection=:normal
+animationDuration=:0s
+animationFillMode=:none
+animationIterationCount=:1
+animationName=:none
+animationPlayState=:running
+animationRange=:normal
+animationRangeEnd=:normal
+animationRangeStart=:normal
+animationTimeline=:auto
+animationTimingFunction=:ease
+appRegion=:none
+appearance=:none
+ascentOverride=:
+aspectRatio=:auto
+backdropFilter=:none
+backfaceVisibility=:visible
+background=:rgba(0, 0, 0, 0) none repeat scroll 0% 0% / auto padding-box border-box
+backgroundAttachment=:scroll
+backgroundBlendMode=:normal
+backgroundClip=:border-box
+backgroundColor=:rgba(0, 0, 0, 0)
+backgroundImage=:none
+backgroundOrigin=:padding-box
+backgroundPosition=:0% 0%
+backgroundPositionX=:0%
+backgroundPositionY=:0%
+backgroundRepeat=:repeat
+backgroundSize=:auto
+basePalette=:
+baselineShift=:0px
+baselineSource=:auto
+blockSize=:18px
+border=:0px none rgb(0, 0, 0)
+borderBlock=:0px none rgb(0, 0, 0)
+borderBlockColor=:rgb(0, 0, 0)
+borderBlockEnd=:0px none rgb(0, 0, 0)
+borderBlockEndColor=:rgb(0, 0, 0)
+borderBlockEndStyle=:none
+borderBlockEndWidth=:0px
+borderBlockStart=:0px none rgb(0, 0, 0)
+borderBlockStartColor=:rgb(0, 0, 0)
+borderBlockStartStyle=:none
+borderBlockStartWidth=:0px
+borderBlockStyle=:none
+borderBlockWidth=:0px
+borderBottom=:0px none rgb(0, 0, 0)
+borderBottomColor=:rgb(0, 0, 0)
+borderBottomLeftRadius=:0px
+borderBottomRightRadius=:0px
+borderBottomStyle=:none
+borderBottomWidth=:0px
+borderCollapse=:separate
+borderColor=:rgb(0, 0, 0)
+borderEndEndRadius=:0px
+borderEndStartRadius=:0px
+borderImage=:none
+borderImageOutset=:0
+borderImageRepeat=:stretch
+borderImageSlice=:100%
+borderImageSource=:none
+borderImageWidth=:1
+borderInline=:0px none rgb(0, 0, 0)
+borderInlineColor=:rgb(0, 0, 0)
+borderInlineEnd=:0px none rgb(0, 0, 0)
+borderInlineEndColor=:rgb(0, 0, 0)
+borderInlineEndStyle=:none
+borderInlineEndWidth=:0px
+borderInlineStart=:0px none rgb(0, 0, 0)
+borderInlineStartColor=:rgb(0, 0, 0)
+borderInlineStartStyle=:none
+borderInlineStartWidth=:0px
+borderInlineStyle=:none
+borderInlineWidth=:0px
+borderLeft=:0px none rgb(0, 0, 0)
+borderLeftColor=:rgb(0, 0, 0)
+borderLeftStyle=:none
+borderLeftWidth=:0px
+borderRadius=:0px
+borderRight=:0px none rgb(0, 0, 0)
+borderRightColor=:rgb(0, 0, 0)
+borderRightStyle=:none
+borderRightWidth=:0px
+borderSpacing=:0px 0px
+borderStartEndRadius=:0px
+borderStartStartRadius=:0px
+borderStyle=:none
+borderTop=:0px none rgb(0, 0, 0)
+borderTopColor=:rgb(0, 0, 0)
+borderTopLeftRadius=:0px
+borderTopRightRadius=:0px
+borderTopStyle=:none
+borderTopWidth=:0px
+borderWidth=:0px
+bottom=:auto
+boxDecorationBreak=:slice
+boxShadow=:none
+boxSizing=:content-box
+breakAfter=:auto
+breakBefore=:auto
+breakInside=:auto
+bufferedRendering=:auto
+captionSide=:top
+caretColor=:rgb(0, 0, 0)
+clear=:none
+clip=:auto
+clipPath=:none
+clipRule=:nonzero
+color=:rgb(0, 0, 0)
+colorInterpolation=:srgb
+colorInterpolationFilters=:linearrgb
+colorRendering=:auto
+colorScheme=:normal
+columnCount=:auto
+columnFill=:balance
+columnGap=:normal
+columnRule=:0px none rgb(0, 0, 0)
+columnRuleColor=:rgb(0, 0, 0)
+columnRuleStyle=:none
+columnRuleWidth=:0px
+columnSpan=:none
+columnWidth=:auto
+columns=:auto auto
+contain=:none
+containIntrinsicBlockSize=:none
+containIntrinsicHeight=:none
+containIntrinsicInlineSize=:none
+containIntrinsicSize=:none
+containIntrinsicWidth=:none
+container=:none
+containerName=:none
+containerType=:normal
+content=:normal
+contentVisibility=:visible
+counterIncrement=:none
+counterReset=:none
+counterSet=:none
+cssFloat=:none
+cssText=:skipped
+cursor=:auto
+cx=:0px
+cy=:0px
+d=:none
+descentOverride=:
+direction=:ltr
+display=:block
+dominantBaseline=:auto
+emptyCells=:show
+fallback=:
+fieldSizing=:fixed
+fill=:rgb(0, 0, 0)
+fillOpacity=:1
+fillRule=:nonzero
+filter=:none
+flex=:0 1 auto
+flexBasis=:auto
+flexDirection=:row
+flexFlow=:row nowrap
+flexGrow=:0
+flexShrink=:1
+flexWrap=:nowrap
+float=:none
+floodColor=:rgb(0, 0, 0)
+floodOpacity=:1
+font=:16px "Times New Roman"
+fontDisplay=:
+fontFamily=:"Times New Roman"
+fontFeatureSettings=:normal
+fontKerning=:auto
+fontOpticalSizing=:auto
+fontPalette=:normal
+fontSize=:16px
+fontSizeAdjust=:none
+fontStretch=:100%
+fontStyle=:normal
+fontSynthesis=:weight style small-caps
+fontSynthesisSmallCaps=:auto
+fontSynthesisStyle=:auto
+fontSynthesisWeight=:auto
+fontVariant=:normal
+fontVariantAlternates=:normal
+fontVariantCaps=:normal
+fontVariantEastAsian=:normal
+fontVariantEmoji=:normal
+fontVariantLigatures=:normal
+fontVariantNumeric=:normal
+fontVariantPosition=:normal
+fontVariationSettings=:normal
+fontWeight=:400
+forcedColorAdjust=:auto
+gap=:normal
+grid=:none / none / none / row / auto / auto
+gridArea=:auto
+gridAutoColumns=:auto
+gridAutoFlow=:row
+gridAutoRows=:auto
+gridColumn=:auto
+gridColumnEnd=:auto
+gridColumnGap=:normal
+gridColumnStart=:auto
+gridGap=:normal
+gridRow=:auto
+gridRowEnd=:auto
+gridRowGap=:normal
+gridRowStart=:auto
+gridTemplate=:none
+gridTemplateAreas=:none
+gridTemplateColumns=:none
+gridTemplateRows=:none
+height=:18px
+hyphenateCharacter=:auto
+hyphenateLimitChars=:auto
+hyphens=:manual
+imageOrientation=:from-image
+imageRendering=:auto
+inherits=:
+initialLetter=:normal
+initialValue=:
+inlineSize=:1240px
+inset=:auto
+insetBlock=:auto
+insetBlockEnd=:auto
+insetBlockStart=:auto
+insetInline=:auto
+insetInlineEnd=:auto
+insetInlineStart=:auto
+interactivity=:auto
+interpolateSize=:numeric-only
+isolation=:auto
+justifyContent=:normal
+justifyItems=:normal
+justifySelf=:auto
+left=:auto
+letterSpacing=:normal
+lightingColor=:rgb(255, 255, 255)
+lineBreak=:auto
+lineGapOverride=:
+lineHeight=:normal
+listStyle=:outside none disc
+listStyleImage=:none
+listStylePosition=:outside
+listStyleType=:disc
+margin=:0px
+marginBlock=:0px
+marginBlockEnd=:0px
+marginBlockStart=:0px
+marginBottom=:0px
+marginInline=:0px
+marginInlineEnd=:0px
+marginInlineStart=:0px
+marginLeft=:0px
+marginRight=:0px
+marginTop=:0px
+marker=:none
+markerEnd=:none
+markerMid=:none
+markerStart=:none
+mask=:none
+maskClip=:border-box
+maskComposite=:add
+maskImage=:none
+maskMode=:match-source
+maskOrigin=:border-box
+maskPosition=:0% 0%
+maskRepeat=:repeat
+maskSize=:auto
+maskType=:luminance
+mathDepth=:0
+mathShift=:normal
+mathStyle=:normal
+maxBlockSize=:none
+maxHeight=:none
+maxInlineSize=:none
+maxWidth=:none
+minBlockSize=:0px
+minHeight=:0px
+minInlineSize=:0px
+minWidth=:0px
+mixBlendMode=:normal
+navigation=:
+negative=:
+objectFit=:fill
+objectPosition=:50% 50%
+objectViewBox=:none
+offset=:none 0px auto 0deg
+offsetAnchor=:auto
+offsetDistance=:0px
+offsetPath=:none
+offsetPosition=:normal
+offsetRotate=:auto 0deg
+opacity=:1
+order=:0
+orphans=:2
+outline=:rgb(0, 0, 0) none 0px
+outlineColor=:rgb(0, 0, 0)
+outlineOffset=:0px
+outlineStyle=:none
+outlineWidth=:0px
+overflow=:visible
+overflowAnchor=:auto
+overflowBlock=:visible
+overflowClipMargin=:0px
+overflowInline=:visible
+overflowWrap=:normal
+overflowX=:visible
+overflowY=:visible
+overlay=:none
+overrideColors=:
+overscrollBehavior=:auto
+overscrollBehaviorBlock=:auto
+overscrollBehaviorInline=:auto
+overscrollBehaviorX=:auto
+overscrollBehaviorY=:auto
+pad=:
+padding=:0px
+paddingBlock=:0px
+paddingBlockEnd=:0px
+paddingBlockStart=:0px
+paddingBottom=:0px
+paddingInline=:0px
+paddingInlineEnd=:0px
+paddingInlineStart=:0px
+paddingLeft=:0px
+paddingRight=:0px
+paddingTop=:0px
+page=:auto
+pageBreakAfter=:auto
+pageBreakBefore=:auto
+pageBreakInside=:auto
+pageOrientation=:
+paintOrder=:normal
+perspective=:none
+perspectiveOrigin=:620px 9px
+placeContent=:normal
+placeItems=:normal
+placeSelf=:auto
+pointerEvents=:auto
+position=:static
+positionAnchor=:auto
+positionArea=:none
+positionTry=:none
+positionTryFallbacks=:none
+positionTryOrder=:normal
+positionVisibility=:always
+prefix=:
+quotes=:auto
+r=:0px
+range=:
+resize=:none
+right=:auto
+rotate=:none
+rowGap=:normal
+rubyAlign=:space-around
+rubyPosition=:over
+rx=:auto
+ry=:auto
+scale=:none
+scrollBehavior=:auto
+scrollInitialTarget=:none
+scrollMargin=:0px
+scrollMarginBlock=:0px
+scrollMarginBlockEnd=:0px
+scrollMarginBlockStart=:0px
+scrollMarginBottom=:0px
+scrollMarginInline=:0px
+scrollMarginInlineEnd=:0px
+scrollMarginInlineStart=:0px
+scrollMarginLeft=:0px
+scrollMarginRight=:0px
+scrollMarginTop=:0px
+scrollMarkerGroup=:none
+scrollPadding=:auto
+scrollPaddingBlock=:auto
+scrollPaddingBlockEnd=:auto
+scrollPaddingBlockStart=:auto
+scrollPaddingBottom=:auto
+scrollPaddingInline=:auto
+scrollPaddingInlineEnd=:auto
+scrollPaddingInlineStart=:auto
+scrollPaddingLeft=:auto
+scrollPaddingRight=:auto
+scrollPaddingTop=:auto
+scrollSnapAlign=:none
+scrollSnapStop=:normal
+scrollSnapType=:none
+scrollTimeline=:none
+scrollTimelineAxis=:block
+scrollTimelineName=:none
+scrollbarColor=:auto
+scrollbarGutter=:auto
+scrollbarWidth=:auto
+shapeImageThreshold=:0
+shapeMargin=:0px
+shapeOutside=:none
+shapeRendering=:auto
+size=:
+sizeAdjust=:
+speak=:normal
+speakAs=:
+src=:
+stopColor=:rgb(0, 0, 0)
+stopOpacity=:1
+stroke=:none
+strokeDasharray=:none
+strokeDashoffset=:0px
+strokeLinecap=:butt
+strokeLinejoin=:miter
+strokeMiterlimit=:4
+strokeOpacity=:1
+strokeWidth=:1px
+suffix=:
+symbols=:
+syntax=:
+system=:
+tabSize=:8
+tableLayout=:auto
+textAlign=:start
+textAlignLast=:auto
+textAnchor=:start
+textBox=:normal
+textBoxEdge=:auto
+textBoxTrim=:none
+textCombineUpright=:none
+textDecoration=:none solid rgb(0, 0, 0)
+textDecorationColor=:rgb(0, 0, 0)
+textDecorationLine=:none
+textDecorationSkipInk=:auto
+textDecorationStyle=:solid
+textDecorationThickness=:auto
+textEmphasis=:none rgb(0, 0, 0)
+textEmphasisColor=:rgb(0, 0, 0)
+textEmphasisPosition=:over
+textEmphasisStyle=:none
+textIndent=:0px
+textOrientation=:mixed
+textOverflow=:clip
+textRendering=:auto
+textShadow=:none
+textSizeAdjust=:auto
+textSpacingTrim=:normal
+textTransform=:none
+textUnderlineOffset=:auto
+textUnderlinePosition=:auto
+textWrap=:wrap
+textWrapMode=:wrap
+textWrapStyle=:auto
+timelineScope=:none
+top=:auto
+touchAction=:auto
+transform=:none
+transformBox=:view-box
+transformOrigin=:620px 9px
+transformStyle=:flat
+transition=:all
+transitionBehavior=:normal
+transitionDelay=:0s
+transitionDuration=:0s
+transitionProperty=:all
+transitionTimingFunction=:ease
+translate=:none
+types=:
+unicodeBidi=:isolate
+unicodeRange=:
+userSelect=:auto
+vectorEffect=:none
+verticalAlign=:baseline
+viewTimeline=:none
+viewTimelineAxis=:block
+viewTimelineInset=:auto
+viewTimelineName=:none
+viewTransitionClass=:none
+viewTransitionName=:none
+visibility=:visible
+webkitAlignContent=:normal
+webkitAlignItems=:normal
+webkitAlignSelf=:auto
+webkitAnimation=:none 0s ease 0s 1 normal none running
+webkitAnimationDelay=:0s
+webkitAnimationDirection=:normal
+webkitAnimationDuration=:0s
+webkitAnimationFillMode=:none
+webkitAnimationIterationCount=:1
+webkitAnimationName=:none
+webkitAnimationPlayState=:running
+webkitAnimationTimingFunction=:ease
+webkitAppRegion=:none
+webkitAppearance=:none
+webkitBackfaceVisibility=:visible
+webkitBackgroundClip=:border-box
+webkitBackgroundOrigin=:padding-box
+webkitBackgroundSize=:auto
+webkitBorderAfter=:0px none rgb(0, 0, 0)
+webkitBorderAfterColor=:rgb(0, 0, 0)
+webkitBorderAfterStyle=:none
+webkitBorderAfterWidth=:0px
+webkitBorderBefore=:0px none rgb(0, 0, 0)
+webkitBorderBeforeColor=:rgb(0, 0, 0)
+webkitBorderBeforeStyle=:none
+webkitBorderBeforeWidth=:0px
+webkitBorderBottomLeftRadius=:0px
+webkitBorderBottomRightRadius=:0px
+webkitBorderEnd=:0px none rgb(0, 0, 0)
+webkitBorderEndColor=:rgb(0, 0, 0)
+webkitBorderEndStyle=:none
+webkitBorderEndWidth=:0px
+webkitBorderHorizontalSpacing=:0px
+webkitBorderImage=:none
+webkitBorderRadius=:0px
+webkitBorderStart=:0px none rgb(0, 0, 0)
+webkitBorderStartColor=:rgb(0, 0, 0)
+webkitBorderStartStyle=:none
+webkitBorderStartWidth=:0px
+webkitBorderTopLeftRadius=:0px
+webkitBorderTopRightRadius=:0px
+webkitBorderVerticalSpacing=:0px
+webkitBoxAlign=:stretch
+webkitBoxDecorationBreak=:slice
+webkitBoxDirection=:normal
+webkitBoxFlex=:0
+webkitBoxOrdinalGroup=:1
+webkitBoxOrient=:horizontal
+webkitBoxPack=:start
+webkitBoxReflect=:none
+webkitBoxShadow=:none
+webkitBoxSizing=:content-box
+webkitClipPath=:none
+webkitColumnBreakAfter=:auto
+webkitColumnBreakBefore=:auto
+webkitColumnBreakInside=:auto
+webkitColumnCount=:auto
+webkitColumnGap=:normal
+webkitColumnRule=:0px none rgb(0, 0, 0)
+webkitColumnRuleColor=:rgb(0, 0, 0)
+webkitColumnRuleStyle=:none
+webkitColumnRuleWidth=:0px
+webkitColumnSpan=:none
+webkitColumnWidth=:auto
+webkitColumns=:auto auto
+webkitFilter=:none
+webkitFlex=:0 1 auto
+webkitFlexBasis=:auto
+webkitFlexDirection=:row
+webkitFlexFlow=:row nowrap
+webkitFlexGrow=:0
+webkitFlexShrink=:1
+webkitFlexWrap=:nowrap
+webkitFontFeatureSettings=:normal
+webkitFontSmoothing=:auto
+webkitHyphenateCharacter=:auto
+webkitJustifyContent=:normal
+webkitLineBreak=:auto
+webkitLineClamp=:none
+webkitLocale=:auto
+webkitLogicalHeight=:18px
+webkitLogicalWidth=:1240px
+webkitMarginAfter=:0px
+webkitMarginBefore=:0px
+webkitMarginEnd=:0px
+webkitMarginStart=:0px
+webkitMask=:none
+webkitMaskBoxImage=:none
+webkitMaskBoxImageOutset=:0
+webkitMaskBoxImageRepeat=:stretch
+webkitMaskBoxImageSlice=:0 fill
+webkitMaskBoxImageSource=:none
+webkitMaskBoxImageWidth=:auto
+webkitMaskClip=:border-box
+webkitMaskComposite=:add
+webkitMaskImage=:none
+webkitMaskOrigin=:border-box
+webkitMaskPosition=:0% 0%
+webkitMaskPositionX=:0%
+webkitMaskPositionY=:0%
+webkitMaskRepeat=:repeat
+webkitMaskSize=:auto
+webkitMaxLogicalHeight=:none
+webkitMaxLogicalWidth=:none
+webkitMinLogicalHeight=:0px
+webkitMinLogicalWidth=:0px
+webkitOpacity=:1
+webkitOrder=:0
+webkitPaddingAfter=:0px
+webkitPaddingBefore=:0px
+webkitPaddingEnd=:0px
+webkitPaddingStart=:0px
+webkitPerspective=:none
+webkitPerspectiveOrigin=:620px 9px
+webkitPerspectiveOriginX=:
+webkitPerspectiveOriginY=:
+webkitPrintColorAdjust=:economy
+webkitRtlOrdering=:logical
+webkitRubyPosition=:before
+webkitShapeImageThreshold=:0
+webkitShapeMargin=:0px
+webkitShapeOutside=:none
+webkitTapHighlightColor=:rgba(0, 0, 0, 0.18)
+webkitTextCombine=:none
+webkitTextDecorationsInEffect=:none
+webkitTextEmphasis=:none rgb(0, 0, 0)
+webkitTextEmphasisColor=:rgb(0, 0, 0)
+webkitTextEmphasisPosition=:over
+webkitTextEmphasisStyle=:none
+webkitTextFillColor=:rgb(0, 0, 0)
+webkitTextOrientation=:vertical-right
+webkitTextSecurity=:none
+webkitTextSizeAdjust=:auto
+webkitTextStroke=:0px rgb(0, 0, 0)
+webkitTextStrokeColor=:rgb(0, 0, 0)
+webkitTextStrokeWidth=:0px
+webkitTransform=:none
+webkitTransformOrigin=:620px 9px
+webkitTransformOriginX=:
+webkitTransformOriginY=:
+webkitTransformOriginZ=:
+webkitTransformStyle=:flat
+webkitTransition=:all
+webkitTransitionDelay=:0s
+webkitTransitionDuration=:0s
+webkitTransitionProperty=:all
+webkitTransitionTimingFunction=:ease
+webkitUserDrag=:auto
+webkitUserModify=:read-only
+webkitUserSelect=:auto
+webkitWritingMode=:horizontal-tb
+whiteSpace=:normal
+whiteSpaceCollapse=:collapse
+widows=:2
+width=:1256px
+willChange=:auto
+wordBreak=:normal
+wordSpacing=:0px
+wordWrap=:normal
+writingMode=:horizontal-tb
+x=:0px
+y=:0px
+zIndex=:auto
+zoom=:1
\ No newline at end of file
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Edge_NYI.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Edge_NYI.txt
new file mode 100644
index 00000000000..23798221a8c
--- /dev/null
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Edge_NYI.txt
@@ -0,0 +1,649 @@
+accentColor=:auto
+additiveSymbols=:
+alignContent=:normal
+alignItems=:normal
+alignSelf=:auto
+alignmentBaseline=:auto
+all=:
+anchorName=:none
+anchorScope=:none
+animation=:none 0s ease 0s 1 normal none running
+animationComposition=:replace
+animationDelay=:0s
+animationDirection=:normal
+animationDuration=:0s
+animationFillMode=:none
+animationIterationCount=:1
+animationName=:none
+animationPlayState=:running
+animationRange=:normal
+animationRangeEnd=:normal
+animationRangeStart=:normal
+animationTimeline=:auto
+animationTimingFunction=:ease
+appRegion=:none
+appearance=:none
+ascentOverride=:
+aspectRatio=:auto
+backdropFilter=:none
+backfaceVisibility=:visible
+background=:rgba(0, 0, 0, 0) none repeat scroll 0% 0% / auto padding-box border-box
+backgroundAttachment=:scroll
+backgroundBlendMode=:normal
+backgroundClip=:border-box
+backgroundColor=:rgba(0, 0, 0, 0)
+backgroundImage=:none
+backgroundOrigin=:padding-box
+backgroundPosition=:0% 0%
+backgroundPositionX=:0%
+backgroundPositionY=:0%
+backgroundRepeat=:repeat
+backgroundSize=:auto
+basePalette=:
+baselineShift=:0px
+baselineSource=:auto
+blockSize=:18px
+border=:0px none rgb(0, 0, 0)
+borderBlock=:0px none rgb(0, 0, 0)
+borderBlockColor=:rgb(0, 0, 0)
+borderBlockEnd=:0px none rgb(0, 0, 0)
+borderBlockEndColor=:rgb(0, 0, 0)
+borderBlockEndStyle=:none
+borderBlockEndWidth=:0px
+borderBlockStart=:0px none rgb(0, 0, 0)
+borderBlockStartColor=:rgb(0, 0, 0)
+borderBlockStartStyle=:none
+borderBlockStartWidth=:0px
+borderBlockStyle=:none
+borderBlockWidth=:0px
+borderBottom=:0px none rgb(0, 0, 0)
+borderBottomColor=:rgb(0, 0, 0)
+borderBottomLeftRadius=:0px
+borderBottomRightRadius=:0px
+borderBottomStyle=:none
+borderBottomWidth=:0px
+borderCollapse=:separate
+borderColor=:rgb(0, 0, 0)
+borderEndEndRadius=:0px
+borderEndStartRadius=:0px
+borderImage=:none
+borderImageOutset=:0
+borderImageRepeat=:stretch
+borderImageSlice=:100%
+borderImageSource=:none
+borderImageWidth=:1
+borderInline=:0px none rgb(0, 0, 0)
+borderInlineColor=:rgb(0, 0, 0)
+borderInlineEnd=:0px none rgb(0, 0, 0)
+borderInlineEndColor=:rgb(0, 0, 0)
+borderInlineEndStyle=:none
+borderInlineEndWidth=:0px
+borderInlineStart=:0px none rgb(0, 0, 0)
+borderInlineStartColor=:rgb(0, 0, 0)
+borderInlineStartStyle=:none
+borderInlineStartWidth=:0px
+borderInlineStyle=:none
+borderInlineWidth=:0px
+borderLeft=:0px none rgb(0, 0, 0)
+borderLeftColor=:rgb(0, 0, 0)
+borderLeftStyle=:none
+borderLeftWidth=:0px
+borderRadius=:0px
+borderRight=:0px none rgb(0, 0, 0)
+borderRightColor=:rgb(0, 0, 0)
+borderRightStyle=:none
+borderRightWidth=:0px
+borderSpacing=:0px 0px
+borderStartEndRadius=:0px
+borderStartStartRadius=:0px
+borderStyle=:none
+borderTop=:0px none rgb(0, 0, 0)
+borderTopColor=:rgb(0, 0, 0)
+borderTopLeftRadius=:0px
+borderTopRightRadius=:0px
+borderTopStyle=:none
+borderTopWidth=:0px
+borderWidth=:0px
+bottom=:auto
+boxDecorationBreak=:slice
+boxShadow=:none
+boxSizing=:content-box
+breakAfter=:auto
+breakBefore=:auto
+breakInside=:auto
+bufferedRendering=:auto
+captionSide=:top
+caretColor=:rgb(0, 0, 0)
+clear=:none
+clip=:auto
+clipPath=:none
+clipRule=:nonzero
+color=:rgb(0, 0, 0)
+colorInterpolation=:srgb
+colorInterpolationFilters=:linearrgb
+colorRendering=:auto
+colorScheme=:normal
+columnCount=:auto
+columnFill=:balance
+columnGap=:normal
+columnRule=:0px none rgb(0, 0, 0)
+columnRuleColor=:rgb(0, 0, 0)
+columnRuleStyle=:none
+columnRuleWidth=:0px
+columnSpan=:none
+columnWidth=:auto
+columns=:auto auto
+contain=:none
+containIntrinsicBlockSize=:none
+containIntrinsicHeight=:none
+containIntrinsicInlineSize=:none
+containIntrinsicSize=:none
+containIntrinsicWidth=:none
+container=:none
+containerName=:none
+containerType=:normal
+content=:normal
+contentVisibility=:visible
+counterIncrement=:none
+counterReset=:none
+counterSet=:none
+cssFloat=:none
+cssText=:skipped
+cursor=:auto
+cx=:0px
+cy=:0px
+d=:none
+descentOverride=:
+direction=:ltr
+display=:block
+dominantBaseline=:auto
+emptyCells=:show
+fallback=:
+fieldSizing=:fixed
+fill=:rgb(0, 0, 0)
+fillOpacity=:1
+fillRule=:nonzero
+filter=:none
+flex=:0 1 auto
+flexBasis=:auto
+flexDirection=:row
+flexFlow=:row nowrap
+flexGrow=:0
+flexShrink=:1
+flexWrap=:nowrap
+float=:none
+floodColor=:rgb(0, 0, 0)
+floodOpacity=:1
+font=:16px "Times New Roman"
+fontDisplay=:
+fontFamily=:"Times New Roman"
+fontFeatureSettings=:normal
+fontKerning=:auto
+fontOpticalSizing=:auto
+fontPalette=:normal
+fontSize=:16px
+fontSizeAdjust=:none
+fontStretch=:100%
+fontStyle=:normal
+fontSynthesis=:weight style small-caps
+fontSynthesisSmallCaps=:auto
+fontSynthesisStyle=:auto
+fontSynthesisWeight=:auto
+fontVariant=:normal
+fontVariantAlternates=:normal
+fontVariantCaps=:normal
+fontVariantEastAsian=:normal
+fontVariantEmoji=:normal
+fontVariantLigatures=:normal
+fontVariantNumeric=:normal
+fontVariantPosition=:normal
+fontVariationSettings=:normal
+fontWeight=:400
+forcedColorAdjust=:auto
+gap=:normal
+grid=:none / none / none / row / auto / auto
+gridArea=:auto
+gridAutoColumns=:auto
+gridAutoFlow=:row
+gridAutoRows=:auto
+gridColumn=:auto
+gridColumnEnd=:auto
+gridColumnGap=:normal
+gridColumnStart=:auto
+gridGap=:normal
+gridRow=:auto
+gridRowEnd=:auto
+gridRowGap=:normal
+gridRowStart=:auto
+gridTemplate=:none
+gridTemplateAreas=:none
+gridTemplateColumns=:none
+gridTemplateRows=:none
+height=:18px
+hyphenateCharacter=:auto
+hyphenateLimitChars=:auto
+hyphens=:manual
+imageOrientation=:from-image
+imageRendering=:auto
+inherits=:
+initialLetter=:normal
+initialValue=:
+inlineSize=:1232px
+inset=:auto
+insetBlock=:auto
+insetBlockEnd=:auto
+insetBlockStart=:auto
+insetInline=:auto
+insetInlineEnd=:auto
+insetInlineStart=:auto
+interactivity=:auto
+interpolateSize=:numeric-only
+isolation=:auto
+justifyContent=:normal
+justifyItems=:normal
+justifySelf=:auto
+left=:auto
+letterSpacing=:normal
+lightingColor=:rgb(255, 255, 255)
+lineBreak=:auto
+lineGapOverride=:
+lineHeight=:normal
+listStyle=:outside none disc
+listStyleImage=:none
+listStylePosition=:outside
+listStyleType=:disc
+margin=:0px
+marginBlock=:0px
+marginBlockEnd=:0px
+marginBlockStart=:0px
+marginBottom=:0px
+marginInline=:0px
+marginInlineEnd=:0px
+marginInlineStart=:0px
+marginLeft=:0px
+marginRight=:0px
+marginTop=:0px
+marker=:none
+markerEnd=:none
+markerMid=:none
+markerStart=:none
+mask=:none
+maskClip=:border-box
+maskComposite=:add
+maskImage=:none
+maskMode=:match-source
+maskOrigin=:border-box
+maskPosition=:0% 0%
+maskRepeat=:repeat
+maskSize=:auto
+maskType=:luminance
+mathDepth=:0
+mathShift=:normal
+mathStyle=:normal
+maxBlockSize=:none
+maxHeight=:none
+maxInlineSize=:none
+maxWidth=:none
+minBlockSize=:0px
+minHeight=:0px
+minInlineSize=:0px
+minWidth=:0px
+mixBlendMode=:normal
+navigation=:
+negative=:
+objectFit=:fill
+objectPosition=:50% 50%
+objectViewBox=:none
+offset=:none 0px auto 0deg
+offsetAnchor=:auto
+offsetDistance=:0px
+offsetPath=:none
+offsetPosition=:normal
+offsetRotate=:auto 0deg
+opacity=:1
+order=:0
+orphans=:2
+outline=:rgb(0, 0, 0) none 0px
+outlineColor=:rgb(0, 0, 0)
+outlineOffset=:0px
+outlineStyle=:none
+outlineWidth=:0px
+overflow=:visible
+overflowAnchor=:auto
+overflowBlock=:visible
+overflowClipMargin=:0px
+overflowInline=:visible
+overflowWrap=:normal
+overflowX=:visible
+overflowY=:visible
+overlay=:none
+overrideColors=:
+overscrollBehavior=:auto
+overscrollBehaviorBlock=:auto
+overscrollBehaviorInline=:auto
+overscrollBehaviorX=:auto
+overscrollBehaviorY=:auto
+pad=:
+padding=:0px
+paddingBlock=:0px
+paddingBlockEnd=:0px
+paddingBlockStart=:0px
+paddingBottom=:0px
+paddingInline=:0px
+paddingInlineEnd=:0px
+paddingInlineStart=:0px
+paddingLeft=:0px
+paddingRight=:0px
+paddingTop=:0px
+page=:auto
+pageBreakAfter=:auto
+pageBreakBefore=:auto
+pageBreakInside=:auto
+pageOrientation=:
+paintOrder=:normal
+perspective=:none
+perspectiveOrigin=:616px 9px
+placeContent=:normal
+placeItems=:normal
+placeSelf=:auto
+pointerEvents=:auto
+position=:static
+positionAnchor=:auto
+positionArea=:none
+positionTry=:none
+positionTryFallbacks=:none
+positionTryOrder=:normal
+positionVisibility=:always
+prefix=:
+quotes=:auto
+r=:0px
+range=:
+resize=:none
+right=:auto
+rotate=:none
+rowGap=:normal
+rubyAlign=:space-around
+rubyPosition=:over
+rx=:auto
+ry=:auto
+scale=:none
+scrollBehavior=:auto
+scrollInitialTarget=:none
+scrollMargin=:0px
+scrollMarginBlock=:0px
+scrollMarginBlockEnd=:0px
+scrollMarginBlockStart=:0px
+scrollMarginBottom=:0px
+scrollMarginInline=:0px
+scrollMarginInlineEnd=:0px
+scrollMarginInlineStart=:0px
+scrollMarginLeft=:0px
+scrollMarginRight=:0px
+scrollMarginTop=:0px
+scrollMarkerGroup=:none
+scrollPadding=:auto
+scrollPaddingBlock=:auto
+scrollPaddingBlockEnd=:auto
+scrollPaddingBlockStart=:auto
+scrollPaddingBottom=:auto
+scrollPaddingInline=:auto
+scrollPaddingInlineEnd=:auto
+scrollPaddingInlineStart=:auto
+scrollPaddingLeft=:auto
+scrollPaddingRight=:auto
+scrollPaddingTop=:auto
+scrollSnapAlign=:none
+scrollSnapStop=:normal
+scrollSnapType=:none
+scrollTimeline=:none
+scrollTimelineAxis=:block
+scrollTimelineName=:none
+scrollbarColor=:auto
+scrollbarGutter=:auto
+scrollbarWidth=:auto
+shapeImageThreshold=:0
+shapeMargin=:0px
+shapeOutside=:none
+shapeRendering=:auto
+size=:
+sizeAdjust=:
+speak=:normal
+speakAs=:
+src=:
+stopColor=:rgb(0, 0, 0)
+stopOpacity=:1
+stroke=:none
+strokeDasharray=:none
+strokeDashoffset=:0px
+strokeLinecap=:butt
+strokeLinejoin=:miter
+strokeMiterlimit=:4
+strokeOpacity=:1
+strokeWidth=:1px
+suffix=:
+symbols=:
+syntax=:
+system=:
+tabSize=:8
+tableLayout=:auto
+textAlign=:start
+textAlignLast=:auto
+textAnchor=:start
+textBox=:normal
+textBoxEdge=:auto
+textBoxTrim=:none
+textCombineUpright=:none
+textDecoration=:none solid rgb(0, 0, 0)
+textDecorationColor=:rgb(0, 0, 0)
+textDecorationLine=:none
+textDecorationSkipInk=:auto
+textDecorationStyle=:solid
+textDecorationThickness=:auto
+textEmphasis=:none rgb(0, 0, 0)
+textEmphasisColor=:rgb(0, 0, 0)
+textEmphasisPosition=:over
+textEmphasisStyle=:none
+textIndent=:0px
+textOrientation=:mixed
+textOverflow=:clip
+textRendering=:auto
+textShadow=:none
+textSizeAdjust=:auto
+textSpacingTrim=:normal
+textTransform=:none
+textUnderlineOffset=:auto
+textUnderlinePosition=:auto
+textWrap=:wrap
+textWrapMode=:wrap
+textWrapStyle=:auto
+timelineScope=:none
+top=:auto
+touchAction=:auto
+transform=:none
+transformBox=:view-box
+transformOrigin=:616px 9px
+transformStyle=:flat
+transition=:all
+transitionBehavior=:normal
+transitionDelay=:0s
+transitionDuration=:0s
+transitionProperty=:all
+transitionTimingFunction=:ease
+translate=:none
+types=:
+unicodeBidi=:isolate
+unicodeRange=:
+userSelect=:auto
+vectorEffect=:none
+verticalAlign=:baseline
+viewTimeline=:none
+viewTimelineAxis=:block
+viewTimelineInset=:auto
+viewTimelineName=:none
+viewTransitionClass=:none
+viewTransitionName=:none
+visibility=:visible
+webkitAlignContent=:normal
+webkitAlignItems=:normal
+webkitAlignSelf=:auto
+webkitAnimation=:none 0s ease 0s 1 normal none running
+webkitAnimationDelay=:0s
+webkitAnimationDirection=:normal
+webkitAnimationDuration=:0s
+webkitAnimationFillMode=:none
+webkitAnimationIterationCount=:1
+webkitAnimationName=:none
+webkitAnimationPlayState=:running
+webkitAnimationTimingFunction=:ease
+webkitAppRegion=:none
+webkitAppearance=:none
+webkitBackfaceVisibility=:visible
+webkitBackgroundClip=:border-box
+webkitBackgroundOrigin=:padding-box
+webkitBackgroundSize=:auto
+webkitBorderAfter=:0px none rgb(0, 0, 0)
+webkitBorderAfterColor=:rgb(0, 0, 0)
+webkitBorderAfterStyle=:none
+webkitBorderAfterWidth=:0px
+webkitBorderBefore=:0px none rgb(0, 0, 0)
+webkitBorderBeforeColor=:rgb(0, 0, 0)
+webkitBorderBeforeStyle=:none
+webkitBorderBeforeWidth=:0px
+webkitBorderBottomLeftRadius=:0px
+webkitBorderBottomRightRadius=:0px
+webkitBorderEnd=:0px none rgb(0, 0, 0)
+webkitBorderEndColor=:rgb(0, 0, 0)
+webkitBorderEndStyle=:none
+webkitBorderEndWidth=:0px
+webkitBorderHorizontalSpacing=:0px
+webkitBorderImage=:none
+webkitBorderRadius=:0px
+webkitBorderStart=:0px none rgb(0, 0, 0)
+webkitBorderStartColor=:rgb(0, 0, 0)
+webkitBorderStartStyle=:none
+webkitBorderStartWidth=:0px
+webkitBorderTopLeftRadius=:0px
+webkitBorderTopRightRadius=:0px
+webkitBorderVerticalSpacing=:0px
+webkitBoxAlign=:stretch
+webkitBoxDecorationBreak=:slice
+webkitBoxDirection=:normal
+webkitBoxFlex=:0
+webkitBoxOrdinalGroup=:1
+webkitBoxOrient=:horizontal
+webkitBoxPack=:start
+webkitBoxReflect=:none
+webkitBoxShadow=:none
+webkitBoxSizing=:content-box
+webkitClipPath=:none
+webkitColumnBreakAfter=:auto
+webkitColumnBreakBefore=:auto
+webkitColumnBreakInside=:auto
+webkitColumnCount=:auto
+webkitColumnGap=:normal
+webkitColumnRule=:0px none rgb(0, 0, 0)
+webkitColumnRuleColor=:rgb(0, 0, 0)
+webkitColumnRuleStyle=:none
+webkitColumnRuleWidth=:0px
+webkitColumnSpan=:none
+webkitColumnWidth=:auto
+webkitColumns=:auto auto
+webkitFilter=:none
+webkitFlex=:0 1 auto
+webkitFlexBasis=:auto
+webkitFlexDirection=:row
+webkitFlexFlow=:row nowrap
+webkitFlexGrow=:0
+webkitFlexShrink=:1
+webkitFlexWrap=:nowrap
+webkitFontFeatureSettings=:normal
+webkitFontSmoothing=:auto
+webkitHyphenateCharacter=:auto
+webkitJustifyContent=:normal
+webkitLineBreak=:auto
+webkitLineClamp=:none
+webkitLocale=:auto
+webkitLogicalHeight=:18px
+webkitLogicalWidth=:1232px
+webkitMarginAfter=:0px
+webkitMarginBefore=:0px
+webkitMarginEnd=:0px
+webkitMarginStart=:0px
+webkitMask=:none
+webkitMaskBoxImage=:none
+webkitMaskBoxImageOutset=:0
+webkitMaskBoxImageRepeat=:stretch
+webkitMaskBoxImageSlice=:0 fill
+webkitMaskBoxImageSource=:none
+webkitMaskBoxImageWidth=:auto
+webkitMaskClip=:border-box
+webkitMaskComposite=:add
+webkitMaskImage=:none
+webkitMaskOrigin=:border-box
+webkitMaskPosition=:0% 0%
+webkitMaskPositionX=:0%
+webkitMaskPositionY=:0%
+webkitMaskRepeat=:repeat
+webkitMaskSize=:auto
+webkitMaxLogicalHeight=:none
+webkitMaxLogicalWidth=:none
+webkitMinLogicalHeight=:0px
+webkitMinLogicalWidth=:0px
+webkitOpacity=:1
+webkitOrder=:0
+webkitPaddingAfter=:0px
+webkitPaddingBefore=:0px
+webkitPaddingEnd=:0px
+webkitPaddingStart=:0px
+webkitPerspective=:none
+webkitPerspectiveOrigin=:616px 9px
+webkitPerspectiveOriginX=:
+webkitPerspectiveOriginY=:
+webkitPrintColorAdjust=:economy
+webkitRtlOrdering=:logical
+webkitRubyPosition=:before
+webkitShapeImageThreshold=:0
+webkitShapeMargin=:0px
+webkitShapeOutside=:none
+webkitTapHighlightColor=:rgba(0, 0, 0, 0.18)
+webkitTextCombine=:none
+webkitTextDecorationsInEffect=:none
+webkitTextEmphasis=:none rgb(0, 0, 0)
+webkitTextEmphasisColor=:rgb(0, 0, 0)
+webkitTextEmphasisPosition=:over
+webkitTextEmphasisStyle=:none
+webkitTextFillColor=:rgb(0, 0, 0)
+webkitTextOrientation=:vertical-right
+webkitTextSecurity=:none
+webkitTextSizeAdjust=:auto
+webkitTextStroke=:0px rgb(0, 0, 0)
+webkitTextStrokeColor=:rgb(0, 0, 0)
+webkitTextStrokeWidth=:0px
+webkitTransform=:none
+webkitTransformOrigin=:616px 9px
+webkitTransformOriginX=:
+webkitTransformOriginY=:
+webkitTransformOriginZ=:
+webkitTransformStyle=:flat
+webkitTransition=:all
+webkitTransitionDelay=:0s
+webkitTransitionDuration=:0s
+webkitTransitionProperty=:all
+webkitTransitionTimingFunction=:ease
+webkitUserDrag=:auto
+webkitUserModify=:read-only
+webkitUserSelect=:auto
+webkitWritingMode=:horizontal-tb
+whiteSpace=:normal
+whiteSpaceCollapse=:collapse
+widows=:2
+width=:1256px
+willChange=:auto
+wordBreak=:normal
+wordSpacing=:0px
+wordWrap=:normal
+writingMode=:horizontal-tb
+x=:0px
+y=:0px
+zIndex=:auto
+zoom=:1
\ No newline at end of file
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF-ESR_NYI.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF-ESR_NYI.txt
new file mode 100644
index 00000000000..e676dae70c5
--- /dev/null
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF-ESR_NYI.txt
@@ -0,0 +1,1101 @@
+-moz-animation-delay=:0s
+-moz-animation-direction=:normal
+-moz-animation-duration=:0s
+-moz-animation-fill-mode=:none
+-moz-animation-iteration-count=:1
+-moz-animation-name=:none
+-moz-animation-play-state=:running
+-moz-animation-timing-function=:ease
+-moz-animation=:none
+-moz-appearance=:none
+-moz-border-end-color=:rgb(0, 0, 0)
+-moz-border-end-style=:none
+-moz-border-end-width=:0px
+-moz-border-end=:0px rgb(0, 0, 0)
+-moz-border-image=:none
+-moz-border-start-color=:rgb(0, 0, 0)
+-moz-border-start-style=:none
+-moz-border-start-width=:0px
+-moz-border-start=:0px rgb(0, 0, 0)
+-moz-box-align=:stretch
+-moz-box-direction=:normal
+-moz-box-flex=:0
+-moz-box-ordinal-group=:1
+-moz-box-orient=:horizontal
+-moz-box-pack=:start
+-moz-box-sizing=:content-box
+-moz-float-edge=:content-box
+-moz-font-feature-settings=:normal
+-moz-font-language-override=:normal
+-moz-force-broken-image-icon=:0
+-moz-hyphens=:manual
+-moz-margin-end=:0px
+-moz-margin-start=:0px
+-moz-orient=:inline
+-moz-padding-end=:0px
+-moz-padding-start=:0px
+-moz-tab-size=:8
+-moz-text-size-adjust=:auto
+-moz-transform-origin=:622px 9px
+-moz-transform=:none
+-moz-user-input=:auto
+-moz-user-modify=:read-only
+-moz-user-select=:auto
+-moz-window-dragging=:default
+-webkit-align-content=:normal
+-webkit-align-items=:normal
+-webkit-align-self=:auto
+-webkit-animation-delay=:0s
+-webkit-animation-direction=:normal
+-webkit-animation-duration=:0s
+-webkit-animation-fill-mode=:none
+-webkit-animation-iteration-count=:1
+-webkit-animation-name=:none
+-webkit-animation-play-state=:running
+-webkit-animation-timing-function=:ease
+-webkit-animation=:none
+-webkit-appearance=:none
+-webkit-backface-visibility=:visible
+-webkit-background-clip=:border-box
+-webkit-background-origin=:padding-box
+-webkit-background-size=:auto
+-webkit-border-bottom-left-radius=:0px
+-webkit-border-bottom-right-radius=:0px
+-webkit-border-image=:none
+-webkit-border-radius=:0px
+-webkit-border-top-left-radius=:0px
+-webkit-border-top-right-radius=:0px
+-webkit-box-align=:stretch
+-webkit-box-direction=:normal
+-webkit-box-flex=:0
+-webkit-box-ordinal-group=:1
+-webkit-box-orient=:horizontal
+-webkit-box-pack=:start
+-webkit-box-shadow=:none
+-webkit-box-sizing=:content-box
+-webkit-clip-path=:none
+-webkit-filter=:none
+-webkit-flex-basis=:auto
+-webkit-flex-direction=:row
+-webkit-flex-flow=:row
+-webkit-flex-grow=:0
+-webkit-flex-shrink=:1
+-webkit-flex-wrap=:nowrap
+-webkit-flex=:0 1 auto
+-webkit-justify-content=:normal
+-webkit-line-clamp=:none
+-webkit-mask-clip=:border-box
+-webkit-mask-composite=:add
+-webkit-mask-image=:none
+-webkit-mask-origin=:border-box
+-webkit-mask-position-x=:0%
+-webkit-mask-position-y=:0%
+-webkit-mask-position=:0% 0%
+-webkit-mask-repeat=:repeat
+-webkit-mask-size=:auto
+-webkit-mask=:none
+-webkit-order=:0
+-webkit-perspective-origin=:622px 9px
+-webkit-perspective=:none
+-webkit-text-fill-color=:rgb(0, 0, 0)
+-webkit-text-security=:none
+-webkit-text-size-adjust=:auto
+-webkit-text-stroke-color=:rgb(0, 0, 0)
+-webkit-text-stroke-width=:0px
+-webkit-text-stroke=:0px rgb(0, 0, 0)
+-webkit-transform-origin=:622px 9px
+-webkit-transform-style=:flat
+-webkit-transform=:none
+-webkit-transition-delay=:0s
+-webkit-transition-duration=:0s
+-webkit-transition-property=:all
+-webkit-transition-timing-function=:ease
+-webkit-transition=:all
+-webkit-user-select=:auto
+MozAnimation=:none
+MozAnimationDelay=:0s
+MozAnimationDirection=:normal
+MozAnimationDuration=:0s
+MozAnimationFillMode=:none
+MozAnimationIterationCount=:1
+MozAnimationName=:none
+MozAnimationPlayState=:running
+MozAnimationTimingFunction=:ease
+MozAppearance=:none
+MozBorderEnd=:0px rgb(0, 0, 0)
+MozBorderEndColor=:rgb(0, 0, 0)
+MozBorderEndStyle=:none
+MozBorderEndWidth=:0px
+MozBorderImage=:none
+MozBorderStart=:0px rgb(0, 0, 0)
+MozBorderStartColor=:rgb(0, 0, 0)
+MozBorderStartStyle=:none
+MozBorderStartWidth=:0px
+MozBoxAlign=:stretch
+MozBoxDirection=:normal
+MozBoxFlex=:0
+MozBoxOrdinalGroup=:1
+MozBoxOrient=:horizontal
+MozBoxPack=:start
+MozBoxSizing=:content-box
+MozFloatEdge=:content-box
+MozFontFeatureSettings=:normal
+MozFontLanguageOverride=:normal
+MozForceBrokenImageIcon=:0
+MozHyphens=:manual
+MozMarginEnd=:0px
+MozMarginStart=:0px
+MozOrient=:inline
+MozPaddingEnd=:0px
+MozPaddingStart=:0px
+MozTabSize=:8
+MozTextSizeAdjust=:auto
+MozTransform=:none
+MozTransformOrigin=:622px 9px
+MozUserInput=:auto
+MozUserModify=:read-only
+MozUserSelect=:auto
+MozWindowDragging=:default
+WebkitAlignContent=:normal
+WebkitAlignItems=:normal
+WebkitAlignSelf=:auto
+WebkitAnimation=:none
+WebkitAnimationDelay=:0s
+WebkitAnimationDirection=:normal
+WebkitAnimationDuration=:0s
+WebkitAnimationFillMode=:none
+WebkitAnimationIterationCount=:1
+WebkitAnimationName=:none
+WebkitAnimationPlayState=:running
+WebkitAnimationTimingFunction=:ease
+WebkitAppearance=:none
+WebkitBackfaceVisibility=:visible
+WebkitBackgroundClip=:border-box
+WebkitBackgroundOrigin=:padding-box
+WebkitBackgroundSize=:auto
+WebkitBorderBottomLeftRadius=:0px
+WebkitBorderBottomRightRadius=:0px
+WebkitBorderImage=:none
+WebkitBorderRadius=:0px
+WebkitBorderTopLeftRadius=:0px
+WebkitBorderTopRightRadius=:0px
+WebkitBoxAlign=:stretch
+WebkitBoxDirection=:normal
+WebkitBoxFlex=:0
+WebkitBoxOrdinalGroup=:1
+WebkitBoxOrient=:horizontal
+WebkitBoxPack=:start
+WebkitBoxShadow=:none
+WebkitBoxSizing=:content-box
+WebkitClipPath=:none
+WebkitFilter=:none
+WebkitFlex=:0 1 auto
+WebkitFlexBasis=:auto
+WebkitFlexDirection=:row
+WebkitFlexFlow=:row
+WebkitFlexGrow=:0
+WebkitFlexShrink=:1
+WebkitFlexWrap=:nowrap
+WebkitJustifyContent=:normal
+WebkitLineClamp=:none
+WebkitMask=:none
+WebkitMaskClip=:border-box
+WebkitMaskComposite=:add
+WebkitMaskImage=:none
+WebkitMaskOrigin=:border-box
+WebkitMaskPosition=:0% 0%
+WebkitMaskPositionX=:0%
+WebkitMaskPositionY=:0%
+WebkitMaskRepeat=:repeat
+WebkitMaskSize=:auto
+WebkitOrder=:0
+WebkitPerspective=:none
+WebkitPerspectiveOrigin=:622px 9px
+WebkitTextFillColor=:rgb(0, 0, 0)
+WebkitTextSecurity=:none
+WebkitTextSizeAdjust=:auto
+WebkitTextStroke=:0px rgb(0, 0, 0)
+WebkitTextStrokeColor=:rgb(0, 0, 0)
+WebkitTextStrokeWidth=:0px
+WebkitTransform=:none
+WebkitTransformOrigin=:622px 9px
+WebkitTransformStyle=:flat
+WebkitTransition=:all
+WebkitTransitionDelay=:0s
+WebkitTransitionDuration=:0s
+WebkitTransitionProperty=:all
+WebkitTransitionTimingFunction=:ease
+WebkitUserSelect=:auto
+accent-color=:auto
+accentColor=:auto
+align-content=:normal
+align-items=:normal
+align-self=:auto
+alignContent=:normal
+alignItems=:normal
+alignSelf=:auto
+all=:
+animation-composition=:replace
+animation-delay=:0s
+animation-direction=:normal
+animation-duration=:0s
+animation-fill-mode=:none
+animation-iteration-count=:1
+animation-name=:none
+animation-play-state=:running
+animation-timing-function=:ease
+animation=:none
+animationComposition=:replace
+animationDelay=:0s
+animationDirection=:normal
+animationDuration=:0s
+animationFillMode=:none
+animationIterationCount=:1
+animationName=:none
+animationPlayState=:running
+animationTimingFunction=:ease
+appearance=:none
+aspect-ratio=:auto
+aspectRatio=:auto
+backdrop-filter=:none
+backdropFilter=:none
+backface-visibility=:visible
+backfaceVisibility=:visible
+background-attachment=:scroll
+background-blend-mode=:normal
+background-clip=:border-box
+background-color=:rgba(0, 0, 0, 0)
+background-image=:none
+background-origin=:padding-box
+background-position-x=:0%
+background-position-y=:0%
+background-position=:0% 0%
+background-repeat=:repeat
+background-size=:auto
+background=:none
+backgroundAttachment=:scroll
+backgroundBlendMode=:normal
+backgroundClip=:border-box
+backgroundColor=:rgba(0, 0, 0, 0)
+backgroundImage=:none
+backgroundOrigin=:padding-box
+backgroundPosition=:0% 0%
+backgroundPositionX=:0%
+backgroundPositionY=:0%
+backgroundRepeat=:repeat
+backgroundSize=:auto
+baseline-source=:auto
+baselineSource=:auto
+block-size=:18px
+blockSize=:18px
+border-block-color=:rgb(0, 0, 0)
+border-block-end-color=:rgb(0, 0, 0)
+border-block-end-style=:none
+border-block-end-width=:0px
+border-block-end=:0px rgb(0, 0, 0)
+border-block-start-color=:rgb(0, 0, 0)
+border-block-start-style=:none
+border-block-start-width=:0px
+border-block-start=:0px rgb(0, 0, 0)
+border-block-style=:none
+border-block-width=:0px
+border-block=:0px rgb(0, 0, 0)
+border-bottom-color=:rgb(0, 0, 0)
+border-bottom-left-radius=:0px
+border-bottom-right-radius=:0px
+border-bottom-style=:none
+border-bottom-width=:0px
+border-bottom=:0px rgb(0, 0, 0)
+border-collapse=:separate
+border-color=:rgb(0, 0, 0)
+border-end-end-radius=:0px
+border-end-start-radius=:0px
+border-image-outset=:0
+border-image-repeat=:stretch
+border-image-slice=:100%
+border-image-source=:none
+border-image-width=:1
+border-image=:none
+border-inline-color=:rgb(0, 0, 0)
+border-inline-end-color=:rgb(0, 0, 0)
+border-inline-end-style=:none
+border-inline-end-width=:0px
+border-inline-end=:0px rgb(0, 0, 0)
+border-inline-start-color=:rgb(0, 0, 0)
+border-inline-start-style=:none
+border-inline-start-width=:0px
+border-inline-start=:0px rgb(0, 0, 0)
+border-inline-style=:none
+border-inline-width=:0px
+border-inline=:0px rgb(0, 0, 0)
+border-left-color=:rgb(0, 0, 0)
+border-left-style=:none
+border-left-width=:0px
+border-left=:0px rgb(0, 0, 0)
+border-radius=:0px
+border-right-color=:rgb(0, 0, 0)
+border-right-style=:none
+border-right-width=:0px
+border-right=:0px rgb(0, 0, 0)
+border-spacing=:0px 0px
+border-start-end-radius=:0px
+border-start-start-radius=:0px
+border-style=:none
+border-top-color=:rgb(0, 0, 0)
+border-top-left-radius=:0px
+border-top-right-radius=:0px
+border-top-style=:none
+border-top-width=:0px
+border-top=:0px rgb(0, 0, 0)
+border-width=:0px
+border=:0px rgb(0, 0, 0)
+borderBlock=:0px rgb(0, 0, 0)
+borderBlockColor=:rgb(0, 0, 0)
+borderBlockEnd=:0px rgb(0, 0, 0)
+borderBlockEndColor=:rgb(0, 0, 0)
+borderBlockEndStyle=:none
+borderBlockEndWidth=:0px
+borderBlockStart=:0px rgb(0, 0, 0)
+borderBlockStartColor=:rgb(0, 0, 0)
+borderBlockStartStyle=:none
+borderBlockStartWidth=:0px
+borderBlockStyle=:none
+borderBlockWidth=:0px
+borderBottom=:0px rgb(0, 0, 0)
+borderBottomColor=:rgb(0, 0, 0)
+borderBottomLeftRadius=:0px
+borderBottomRightRadius=:0px
+borderBottomStyle=:none
+borderBottomWidth=:0px
+borderCollapse=:separate
+borderColor=:rgb(0, 0, 0)
+borderEndEndRadius=:0px
+borderEndStartRadius=:0px
+borderImage=:none
+borderImageOutset=:0
+borderImageRepeat=:stretch
+borderImageSlice=:100%
+borderImageSource=:none
+borderImageWidth=:1
+borderInline=:0px rgb(0, 0, 0)
+borderInlineColor=:rgb(0, 0, 0)
+borderInlineEnd=:0px rgb(0, 0, 0)
+borderInlineEndColor=:rgb(0, 0, 0)
+borderInlineEndStyle=:none
+borderInlineEndWidth=:0px
+borderInlineStart=:0px rgb(0, 0, 0)
+borderInlineStartColor=:rgb(0, 0, 0)
+borderInlineStartStyle=:none
+borderInlineStartWidth=:0px
+borderInlineStyle=:none
+borderInlineWidth=:0px
+borderLeft=:0px rgb(0, 0, 0)
+borderLeftColor=:rgb(0, 0, 0)
+borderLeftStyle=:none
+borderLeftWidth=:0px
+borderRadius=:0px
+borderRight=:0px rgb(0, 0, 0)
+borderRightColor=:rgb(0, 0, 0)
+borderRightStyle=:none
+borderRightWidth=:0px
+borderSpacing=:0px 0px
+borderStartEndRadius=:0px
+borderStartStartRadius=:0px
+borderStyle=:none
+borderTop=:0px rgb(0, 0, 0)
+borderTopColor=:rgb(0, 0, 0)
+borderTopLeftRadius=:0px
+borderTopRightRadius=:0px
+borderTopStyle=:none
+borderTopWidth=:0px
+borderWidth=:0px
+bottom=:auto
+box-decoration-break=:slice
+box-shadow=:none
+box-sizing=:content-box
+boxDecorationBreak=:slice
+boxShadow=:none
+boxSizing=:content-box
+break-after=:auto
+break-before=:auto
+break-inside=:auto
+breakAfter=:auto
+breakBefore=:auto
+breakInside=:auto
+caption-side=:top
+captionSide=:top
+caret-color=:rgb(0, 0, 0)
+caretColor=:rgb(0, 0, 0)
+clear=:none
+clip-path=:none
+clip-rule=:nonzero
+clip=:auto
+clipPath=:none
+clipRule=:nonzero
+color-adjust=:economy
+color-interpolation-filters=:linearrgb
+color-interpolation=:srgb
+color-scheme=:normal
+color=:rgb(0, 0, 0)
+colorAdjust=:economy
+colorInterpolation=:srgb
+colorInterpolationFilters=:linearrgb
+colorScheme=:normal
+column-count=:auto
+column-fill=:balance
+column-gap=:normal
+column-rule-color=:rgb(0, 0, 0)
+column-rule-style=:none
+column-rule-width=:0px
+column-rule=:0px none rgb(0, 0, 0)
+column-span=:none
+column-width=:auto
+columnCount=:auto
+columnFill=:balance
+columnGap=:normal
+columnRule=:0px none rgb(0, 0, 0)
+columnRuleColor=:rgb(0, 0, 0)
+columnRuleStyle=:none
+columnRuleWidth=:0px
+columnSpan=:none
+columnWidth=:auto
+columns=:auto
+contain-intrinsic-block-size=:none
+contain-intrinsic-height=:none
+contain-intrinsic-inline-size=:none
+contain-intrinsic-size=:none
+contain-intrinsic-width=:none
+contain=:none
+containIntrinsicBlockSize=:none
+containIntrinsicHeight=:none
+containIntrinsicInlineSize=:none
+containIntrinsicSize=:none
+containIntrinsicWidth=:none
+container-name=:none
+container-type=:normal
+container=:none
+containerName=:none
+containerType=:normal
+content-visibility=:visible
+content=:normal
+contentVisibility=:visible
+counter-increment=:none
+counter-reset=:none
+counter-set=:none
+counterIncrement=:none
+counterReset=:none
+counterSet=:none
+cssFloat=:none
+cssText=:skipped
+cursor=:auto
+cx=:0px
+cy=:0px
+d=:none
+direction=:ltr
+display=:block
+dominant-baseline=:auto
+dominantBaseline=:auto
+empty-cells=:show
+emptyCells=:show
+fill-opacity=:1
+fill-rule=:nonzero
+fill=:rgb(0, 0, 0)
+fillOpacity=:1
+fillRule=:nonzero
+filter=:none
+flex-basis=:auto
+flex-direction=:row
+flex-flow=:row
+flex-grow=:0
+flex-shrink=:1
+flex-wrap=:nowrap
+flex=:0 1 auto
+flexBasis=:auto
+flexDirection=:row
+flexFlow=:row
+flexGrow=:0
+flexShrink=:1
+flexWrap=:nowrap
+float=:none
+flood-color=:rgb(0, 0, 0)
+flood-opacity=:1
+floodColor=:rgb(0, 0, 0)
+floodOpacity=:1
+font-family=:serif
+font-feature-settings=:normal
+font-kerning=:auto
+font-language-override=:normal
+font-optical-sizing=:auto
+font-palette=:normal
+font-size-adjust=:none
+font-size=:16px
+font-stretch=:100%
+font-style=:normal
+font-synthesis-position=:auto
+font-synthesis-small-caps=:auto
+font-synthesis-style=:auto
+font-synthesis-weight=:auto
+font-synthesis=:weight style small-caps position
+font-variant-alternates=:normal
+font-variant-caps=:normal
+font-variant-east-asian=:normal
+font-variant-ligatures=:normal
+font-variant-numeric=:normal
+font-variant-position=:normal
+font-variant=:normal
+font-variation-settings=:normal
+font-weight=:400
+font=:16px serif
+fontFamily=:serif
+fontFeatureSettings=:normal
+fontKerning=:auto
+fontLanguageOverride=:normal
+fontOpticalSizing=:auto
+fontPalette=:normal
+fontSize=:16px
+fontSizeAdjust=:none
+fontStretch=:100%
+fontStyle=:normal
+fontSynthesis=:weight style small-caps position
+fontSynthesisPosition=:auto
+fontSynthesisSmallCaps=:auto
+fontSynthesisStyle=:auto
+fontSynthesisWeight=:auto
+fontVariant=:normal
+fontVariantAlternates=:normal
+fontVariantCaps=:normal
+fontVariantEastAsian=:normal
+fontVariantLigatures=:normal
+fontVariantNumeric=:normal
+fontVariantPosition=:normal
+fontVariationSettings=:normal
+fontWeight=:400
+forced-color-adjust=:auto
+forcedColorAdjust=:auto
+gap=:normal
+grid-area=:auto
+grid-auto-columns=:auto
+grid-auto-flow=:row
+grid-auto-rows=:auto
+grid-column-end=:auto
+grid-column-gap=:normal
+grid-column-start=:auto
+grid-column=:auto
+grid-gap=:normal
+grid-row-end=:auto
+grid-row-gap=:normal
+grid-row-start=:auto
+grid-row=:auto
+grid-template-areas=:none
+grid-template-columns=:none
+grid-template-rows=:none
+grid-template=:none
+grid=:none
+gridArea=:auto
+gridAutoColumns=:auto
+gridAutoFlow=:row
+gridAutoRows=:auto
+gridColumn=:auto
+gridColumnEnd=:auto
+gridColumnGap=:normal
+gridColumnStart=:auto
+gridGap=:normal
+gridRow=:auto
+gridRowEnd=:auto
+gridRowGap=:normal
+gridRowStart=:auto
+gridTemplate=:none
+gridTemplateAreas=:none
+gridTemplateColumns=:none
+gridTemplateRows=:none
+height=:18px
+hyphenate-character=:auto
+hyphenateCharacter=:auto
+hyphens=:manual
+image-orientation=:from-image
+image-rendering=:auto
+imageOrientation=:from-image
+imageRendering=:auto
+ime-mode=:auto
+imeMode=:auto
+inline-size=:1244px
+inlineSize=:1244px
+inset-block-end=:auto
+inset-block-start=:auto
+inset-block=:auto
+inset-inline-end=:auto
+inset-inline-start=:auto
+inset-inline=:auto
+inset=:auto
+insetBlock=:auto
+insetBlockEnd=:auto
+insetBlockStart=:auto
+insetInline=:auto
+insetInlineEnd=:auto
+insetInlineStart=:auto
+isolation=:auto
+justify-content=:normal
+justify-items=:normal
+justify-self=:auto
+justifyContent=:normal
+justifyItems=:normal
+justifySelf=:auto
+left=:auto
+letter-spacing=:normal
+letterSpacing=:normal
+lighting-color=:rgb(255, 255, 255)
+lightingColor=:rgb(255, 255, 255)
+line-break=:auto
+line-height=:normal
+lineBreak=:auto
+lineHeight=:normal
+list-style-image=:none
+list-style-position=:outside
+list-style-type=:disc
+list-style=:outside
+listStyle=:outside
+listStyleImage=:none
+listStylePosition=:outside
+listStyleType=:disc
+margin-block-end=:0px
+margin-block-start=:0px
+margin-block=:0px
+margin-bottom=:0px
+margin-inline-end=:0px
+margin-inline-start=:0px
+margin-inline=:0px
+margin-left=:0px
+margin-right=:0px
+margin-top=:0px
+margin=:0px
+marginBlock=:0px
+marginBlockEnd=:0px
+marginBlockStart=:0px
+marginBottom=:0px
+marginInline=:0px
+marginInlineEnd=:0px
+marginInlineStart=:0px
+marginLeft=:0px
+marginRight=:0px
+marginTop=:0px
+marker-end=:none
+marker-mid=:none
+marker-start=:none
+marker=:none
+markerEnd=:none
+markerMid=:none
+markerStart=:none
+mask-clip=:border-box
+mask-composite=:add
+mask-image=:none
+mask-mode=:match-source
+mask-origin=:border-box
+mask-position-x=:0%
+mask-position-y=:0%
+mask-position=:0% 0%
+mask-repeat=:repeat
+mask-size=:auto
+mask-type=:luminance
+mask=:none
+maskClip=:border-box
+maskComposite=:add
+maskImage=:none
+maskMode=:match-source
+maskOrigin=:border-box
+maskPosition=:0% 0%
+maskPositionX=:0%
+maskPositionY=:0%
+maskRepeat=:repeat
+maskSize=:auto
+maskType=:luminance
+math-depth=:0
+math-style=:normal
+mathDepth=:0
+mathStyle=:normal
+max-block-size=:none
+max-height=:none
+max-inline-size=:none
+max-width=:none
+maxBlockSize=:none
+maxHeight=:none
+maxInlineSize=:none
+maxWidth=:none
+min-block-size=:0px
+min-height=:0px
+min-inline-size=:0px
+min-width=:0px
+minBlockSize=:0px
+minHeight=:0px
+minInlineSize=:0px
+minWidth=:0px
+mix-blend-mode=:normal
+mixBlendMode=:normal
+object-fit=:fill
+object-position=:50% 50%
+objectFit=:fill
+objectPosition=:50% 50%
+offset-anchor=:auto
+offset-distance=:0px
+offset-path=:none
+offset-position=:normal
+offset-rotate=:auto
+offset=:normal
+offsetAnchor=:auto
+offsetDistance=:0px
+offsetPath=:none
+offsetPosition=:normal
+offsetRotate=:auto
+opacity=:1
+order=:0
+outline-color=:rgb(0, 0, 0)
+outline-offset=:0px
+outline-style=:none
+outline-width=:0px
+outline=:rgb(0, 0, 0) 0px
+outlineColor=:rgb(0, 0, 0)
+outlineOffset=:0px
+outlineStyle=:none
+outlineWidth=:0px
+overflow-anchor=:auto
+overflow-block=:visible
+overflow-clip-margin=:0px
+overflow-inline=:visible
+overflow-wrap=:normal
+overflow-x=:visible
+overflow-y=:visible
+overflow=:visible
+overflowAnchor=:auto
+overflowBlock=:visible
+overflowClipMargin=:0px
+overflowInline=:visible
+overflowWrap=:normal
+overflowX=:visible
+overflowY=:visible
+overscroll-behavior-block=:auto
+overscroll-behavior-inline=:auto
+overscroll-behavior-x=:auto
+overscroll-behavior-y=:auto
+overscroll-behavior=:auto
+overscrollBehavior=:auto
+overscrollBehaviorBlock=:auto
+overscrollBehaviorInline=:auto
+overscrollBehaviorX=:auto
+overscrollBehaviorY=:auto
+padding-block-end=:0px
+padding-block-start=:0px
+padding-block=:0px
+padding-bottom=:0px
+padding-inline-end=:0px
+padding-inline-start=:0px
+padding-inline=:0px
+padding-left=:0px
+padding-right=:0px
+padding-top=:0px
+padding=:0px
+paddingBlock=:0px
+paddingBlockEnd=:0px
+paddingBlockStart=:0px
+paddingBottom=:0px
+paddingInline=:0px
+paddingInlineEnd=:0px
+paddingInlineStart=:0px
+paddingLeft=:0px
+paddingRight=:0px
+paddingTop=:0px
+page-break-after=:auto
+page-break-before=:auto
+page-break-inside=:auto
+page=:auto
+pageBreakAfter=:auto
+pageBreakBefore=:auto
+pageBreakInside=:auto
+paint-order=:normal
+paintOrder=:normal
+perspective-origin=:622px 9px
+perspective=:none
+perspectiveOrigin=:622px 9px
+place-content=:normal
+place-items=:normal legacy
+place-self=:auto
+placeContent=:normal
+placeItems=:normal legacy
+placeSelf=:auto
+pointer-events=:auto
+pointerEvents=:auto
+position=:static
+print-color-adjust=:economy
+printColorAdjust=:economy
+quotes=:auto
+r=:0px
+resize=:none
+right=:auto
+rotate=:none
+row-gap=:normal
+rowGap=:normal
+ruby-align=:space-around
+ruby-position=:alternate
+rubyAlign=:space-around
+rubyPosition=:alternate
+rx=:auto
+ry=:auto
+scale=:none
+scroll-behavior=:auto
+scroll-margin-block-end=:0px
+scroll-margin-block-start=:0px
+scroll-margin-block=:0px
+scroll-margin-bottom=:0px
+scroll-margin-inline-end=:0px
+scroll-margin-inline-start=:0px
+scroll-margin-inline=:0px
+scroll-margin-left=:0px
+scroll-margin-right=:0px
+scroll-margin-top=:0px
+scroll-margin=:0px
+scroll-padding-block-end=:auto
+scroll-padding-block-start=:auto
+scroll-padding-block=:auto
+scroll-padding-bottom=:auto
+scroll-padding-inline-end=:auto
+scroll-padding-inline-start=:auto
+scroll-padding-inline=:auto
+scroll-padding-left=:auto
+scroll-padding-right=:auto
+scroll-padding-top=:auto
+scroll-padding=:auto
+scroll-snap-align=:none
+scroll-snap-stop=:normal
+scroll-snap-type=:none
+scrollBehavior=:auto
+scrollMargin=:0px
+scrollMarginBlock=:0px
+scrollMarginBlockEnd=:0px
+scrollMarginBlockStart=:0px
+scrollMarginBottom=:0px
+scrollMarginInline=:0px
+scrollMarginInlineEnd=:0px
+scrollMarginInlineStart=:0px
+scrollMarginLeft=:0px
+scrollMarginRight=:0px
+scrollMarginTop=:0px
+scrollPadding=:auto
+scrollPaddingBlock=:auto
+scrollPaddingBlockEnd=:auto
+scrollPaddingBlockStart=:auto
+scrollPaddingBottom=:auto
+scrollPaddingInline=:auto
+scrollPaddingInlineEnd=:auto
+scrollPaddingInlineStart=:auto
+scrollPaddingLeft=:auto
+scrollPaddingRight=:auto
+scrollPaddingTop=:auto
+scrollSnapAlign=:none
+scrollSnapStop=:normal
+scrollSnapType=:none
+scrollbar-color=:auto
+scrollbar-gutter=:auto
+scrollbar-width=:auto
+scrollbarColor=:auto
+scrollbarGutter=:auto
+scrollbarWidth=:auto
+shape-image-threshold=:0
+shape-margin=:0px
+shape-outside=:none
+shape-rendering=:auto
+shapeImageThreshold=:0
+shapeMargin=:0px
+shapeOutside=:none
+shapeRendering=:auto
+stop-color=:rgb(0, 0, 0)
+stop-opacity=:1
+stopColor=:rgb(0, 0, 0)
+stopOpacity=:1
+stroke-dasharray=:none
+stroke-dashoffset=:0px
+stroke-linecap=:butt
+stroke-linejoin=:miter
+stroke-miterlimit=:4
+stroke-opacity=:1
+stroke-width=:1px
+stroke=:none
+strokeDasharray=:none
+strokeDashoffset=:0px
+strokeLinecap=:butt
+strokeLinejoin=:miter
+strokeMiterlimit=:4
+strokeOpacity=:1
+strokeWidth=:1px
+tab-size=:8
+tabSize=:8
+table-layout=:auto
+tableLayout=:auto
+text-align-last=:auto
+text-align=:start
+text-anchor=:start
+text-combine-upright=:none
+text-decoration-color=:rgb(0, 0, 0)
+text-decoration-line=:none
+text-decoration-skip-ink=:auto
+text-decoration-style=:solid
+text-decoration-thickness=:auto
+text-decoration=:rgb(0, 0, 0)
+text-emphasis-color=:rgb(0, 0, 0)
+text-emphasis-position=:over
+text-emphasis-style=:none
+text-emphasis=:none rgb(0, 0, 0)
+text-indent=:0px
+text-justify=:auto
+text-orientation=:mixed
+text-overflow=:clip
+text-rendering=:auto
+text-shadow=:none
+text-transform=:none
+text-underline-offset=:auto
+text-underline-position=:auto
+text-wrap-mode=:wrap
+text-wrap-style=:auto
+text-wrap=:wrap
+textAlign=:start
+textAlignLast=:auto
+textAnchor=:start
+textCombineUpright=:none
+textDecoration=:rgb(0, 0, 0)
+textDecorationColor=:rgb(0, 0, 0)
+textDecorationLine=:none
+textDecorationSkipInk=:auto
+textDecorationStyle=:solid
+textDecorationThickness=:auto
+textEmphasis=:none rgb(0, 0, 0)
+textEmphasisColor=:rgb(0, 0, 0)
+textEmphasisPosition=:over
+textEmphasisStyle=:none
+textIndent=:0px
+textJustify=:auto
+textOrientation=:mixed
+textOverflow=:clip
+textRendering=:auto
+textShadow=:none
+textTransform=:none
+textUnderlineOffset=:auto
+textUnderlinePosition=:auto
+textWrap=:wrap
+textWrapMode=:wrap
+textWrapStyle=:auto
+top=:auto
+touch-action=:auto
+touchAction=:auto
+transform-box=:view-box
+transform-origin=:622px 9px
+transform-style=:flat
+transform=:none
+transformBox=:view-box
+transformOrigin=:622px 9px
+transformStyle=:flat
+transition-delay=:0s
+transition-duration=:0s
+transition-property=:all
+transition-timing-function=:ease
+transition=:all
+transitionDelay=:0s
+transitionDuration=:0s
+transitionProperty=:all
+transitionTimingFunction=:ease
+translate=:none
+unicode-bidi=:isolate
+unicodeBidi=:isolate
+user-select=:auto
+userSelect=:auto
+vector-effect=:none
+vectorEffect=:none
+vertical-align=:baseline
+verticalAlign=:baseline
+visibility=:visible
+webkitAlignContent=:normal
+webkitAlignItems=:normal
+webkitAlignSelf=:auto
+webkitAnimation=:none
+webkitAnimationDelay=:0s
+webkitAnimationDirection=:normal
+webkitAnimationDuration=:0s
+webkitAnimationFillMode=:none
+webkitAnimationIterationCount=:1
+webkitAnimationName=:none
+webkitAnimationPlayState=:running
+webkitAnimationTimingFunction=:ease
+webkitAppearance=:none
+webkitBackfaceVisibility=:visible
+webkitBackgroundClip=:border-box
+webkitBackgroundOrigin=:padding-box
+webkitBackgroundSize=:auto
+webkitBorderBottomLeftRadius=:0px
+webkitBorderBottomRightRadius=:0px
+webkitBorderImage=:none
+webkitBorderRadius=:0px
+webkitBorderTopLeftRadius=:0px
+webkitBorderTopRightRadius=:0px
+webkitBoxAlign=:stretch
+webkitBoxDirection=:normal
+webkitBoxFlex=:0
+webkitBoxOrdinalGroup=:1
+webkitBoxOrient=:horizontal
+webkitBoxPack=:start
+webkitBoxShadow=:none
+webkitBoxSizing=:content-box
+webkitClipPath=:none
+webkitFilter=:none
+webkitFlex=:0 1 auto
+webkitFlexBasis=:auto
+webkitFlexDirection=:row
+webkitFlexFlow=:row
+webkitFlexGrow=:0
+webkitFlexShrink=:1
+webkitFlexWrap=:nowrap
+webkitJustifyContent=:normal
+webkitLineClamp=:none
+webkitMask=:none
+webkitMaskClip=:border-box
+webkitMaskComposite=:add
+webkitMaskImage=:none
+webkitMaskOrigin=:border-box
+webkitMaskPosition=:0% 0%
+webkitMaskPositionX=:0%
+webkitMaskPositionY=:0%
+webkitMaskRepeat=:repeat
+webkitMaskSize=:auto
+webkitOrder=:0
+webkitPerspective=:none
+webkitPerspectiveOrigin=:622px 9px
+webkitTextFillColor=:rgb(0, 0, 0)
+webkitTextSecurity=:none
+webkitTextSizeAdjust=:auto
+webkitTextStroke=:0px rgb(0, 0, 0)
+webkitTextStrokeColor=:rgb(0, 0, 0)
+webkitTextStrokeWidth=:0px
+webkitTransform=:none
+webkitTransformOrigin=:622px 9px
+webkitTransformStyle=:flat
+webkitTransition=:all
+webkitTransitionDelay=:0s
+webkitTransitionDuration=:0s
+webkitTransitionProperty=:all
+webkitTransitionTimingFunction=:ease
+webkitUserSelect=:auto
+white-space-collapse=:collapse
+white-space=:normal
+whiteSpace=:normal
+whiteSpaceCollapse=:collapse
+width=:1256px
+will-change=:auto
+willChange=:auto
+word-break=:normal
+word-spacing=:0px
+word-wrap=:normal
+wordBreak=:normal
+wordSpacing=:0px
+wordWrap=:normal
+writing-mode=:horizontal-tb
+writingMode=:horizontal-tb
+x=:0px
+y=:0px
+z-index=:auto
+zIndex=:auto
+zoom=:1
\ No newline at end of file
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF_NYI.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF_NYI.txt
new file mode 100644
index 00000000000..e266d967513
--- /dev/null
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF_NYI.txt
@@ -0,0 +1,1112 @@
+-moz-animation-delay=:0s
+-moz-animation-direction=:normal
+-moz-animation-duration=:0s
+-moz-animation-fill-mode=:none
+-moz-animation-iteration-count=:1
+-moz-animation-name=:none
+-moz-animation-play-state=:running
+-moz-animation-timing-function=:ease
+-moz-animation=:none
+-moz-appearance=:none
+-moz-backface-visibility=:visible
+-moz-border-end-color=:rgb(0, 0, 0)
+-moz-border-end-style=:none
+-moz-border-end-width=:0px
+-moz-border-end=:0px rgb(0, 0, 0)
+-moz-border-image=:none
+-moz-border-start-color=:rgb(0, 0, 0)
+-moz-border-start-style=:none
+-moz-border-start-width=:0px
+-moz-border-start=:0px rgb(0, 0, 0)
+-moz-box-align=:stretch
+-moz-box-direction=:normal
+-moz-box-flex=:0
+-moz-box-ordinal-group=:1
+-moz-box-orient=:horizontal
+-moz-box-pack=:start
+-moz-box-sizing=:content-box
+-moz-float-edge=:content-box
+-moz-font-feature-settings=:normal
+-moz-font-language-override=:normal
+-moz-force-broken-image-icon=:0
+-moz-hyphens=:manual
+-moz-margin-end=:0px
+-moz-margin-start=:0px
+-moz-orient=:inline
+-moz-padding-end=:0px
+-moz-padding-start=:0px
+-moz-perspective-origin=:620px 9px
+-moz-perspective=:none
+-moz-tab-size=:8
+-moz-text-size-adjust=:auto
+-moz-transform-origin=:620px 9px
+-moz-transform-style=:flat
+-moz-transform=:none
+-moz-user-select=:auto
+-moz-window-dragging=:default
+-webkit-align-content=:normal
+-webkit-align-items=:normal
+-webkit-align-self=:auto
+-webkit-animation-delay=:0s
+-webkit-animation-direction=:normal
+-webkit-animation-duration=:0s
+-webkit-animation-fill-mode=:none
+-webkit-animation-iteration-count=:1
+-webkit-animation-name=:none
+-webkit-animation-play-state=:running
+-webkit-animation-timing-function=:ease
+-webkit-animation=:none
+-webkit-appearance=:none
+-webkit-backface-visibility=:visible
+-webkit-background-clip=:border-box
+-webkit-background-origin=:padding-box
+-webkit-background-size=:auto
+-webkit-border-bottom-left-radius=:0px
+-webkit-border-bottom-right-radius=:0px
+-webkit-border-image=:none
+-webkit-border-radius=:0px
+-webkit-border-top-left-radius=:0px
+-webkit-border-top-right-radius=:0px
+-webkit-box-align=:stretch
+-webkit-box-direction=:normal
+-webkit-box-flex=:0
+-webkit-box-ordinal-group=:1
+-webkit-box-orient=:horizontal
+-webkit-box-pack=:start
+-webkit-box-shadow=:none
+-webkit-box-sizing=:content-box
+-webkit-clip-path=:none
+-webkit-filter=:none
+-webkit-flex-basis=:auto
+-webkit-flex-direction=:row
+-webkit-flex-flow=:row
+-webkit-flex-grow=:0
+-webkit-flex-shrink=:1
+-webkit-flex-wrap=:nowrap
+-webkit-flex=:0 1 auto
+-webkit-font-feature-settings=:normal
+-webkit-justify-content=:normal
+-webkit-line-clamp=:none
+-webkit-mask-clip=:border-box
+-webkit-mask-composite=:add
+-webkit-mask-image=:none
+-webkit-mask-origin=:border-box
+-webkit-mask-position-x=:0%
+-webkit-mask-position-y=:0%
+-webkit-mask-position=:0% 0%
+-webkit-mask-repeat=:repeat
+-webkit-mask-size=:auto
+-webkit-mask=:none
+-webkit-order=:0
+-webkit-perspective-origin=:620px 9px
+-webkit-perspective=:none
+-webkit-text-fill-color=:rgb(0, 0, 0)
+-webkit-text-security=:none
+-webkit-text-size-adjust=:auto
+-webkit-text-stroke-color=:rgb(0, 0, 0)
+-webkit-text-stroke-width=:0px
+-webkit-text-stroke=:0px rgb(0, 0, 0)
+-webkit-transform-origin=:620px 9px
+-webkit-transform-style=:flat
+-webkit-transform=:none
+-webkit-transition-delay=:0s
+-webkit-transition-duration=:0s
+-webkit-transition-property=:all
+-webkit-transition-timing-function=:ease
+-webkit-transition=:all
+-webkit-user-select=:auto
+MozAnimation=:none
+MozAnimationDelay=:0s
+MozAnimationDirection=:normal
+MozAnimationDuration=:0s
+MozAnimationFillMode=:none
+MozAnimationIterationCount=:1
+MozAnimationName=:none
+MozAnimationPlayState=:running
+MozAnimationTimingFunction=:ease
+MozAppearance=:none
+MozBackfaceVisibility=:visible
+MozBorderEnd=:0px rgb(0, 0, 0)
+MozBorderEndColor=:rgb(0, 0, 0)
+MozBorderEndStyle=:none
+MozBorderEndWidth=:0px
+MozBorderImage=:none
+MozBorderStart=:0px rgb(0, 0, 0)
+MozBorderStartColor=:rgb(0, 0, 0)
+MozBorderStartStyle=:none
+MozBorderStartWidth=:0px
+MozBoxAlign=:stretch
+MozBoxDirection=:normal
+MozBoxFlex=:0
+MozBoxOrdinalGroup=:1
+MozBoxOrient=:horizontal
+MozBoxPack=:start
+MozBoxSizing=:content-box
+MozFloatEdge=:content-box
+MozFontFeatureSettings=:normal
+MozFontLanguageOverride=:normal
+MozForceBrokenImageIcon=:0
+MozHyphens=:manual
+MozMarginEnd=:0px
+MozMarginStart=:0px
+MozOrient=:inline
+MozPaddingEnd=:0px
+MozPaddingStart=:0px
+MozPerspective=:none
+MozPerspectiveOrigin=:620px 9px
+MozTabSize=:8
+MozTextSizeAdjust=:auto
+MozTransform=:none
+MozTransformOrigin=:620px 9px
+MozTransformStyle=:flat
+MozUserSelect=:auto
+MozWindowDragging=:default
+WebkitAlignContent=:normal
+WebkitAlignItems=:normal
+WebkitAlignSelf=:auto
+WebkitAnimation=:none
+WebkitAnimationDelay=:0s
+WebkitAnimationDirection=:normal
+WebkitAnimationDuration=:0s
+WebkitAnimationFillMode=:none
+WebkitAnimationIterationCount=:1
+WebkitAnimationName=:none
+WebkitAnimationPlayState=:running
+WebkitAnimationTimingFunction=:ease
+WebkitAppearance=:none
+WebkitBackfaceVisibility=:visible
+WebkitBackgroundClip=:border-box
+WebkitBackgroundOrigin=:padding-box
+WebkitBackgroundSize=:auto
+WebkitBorderBottomLeftRadius=:0px
+WebkitBorderBottomRightRadius=:0px
+WebkitBorderImage=:none
+WebkitBorderRadius=:0px
+WebkitBorderTopLeftRadius=:0px
+WebkitBorderTopRightRadius=:0px
+WebkitBoxAlign=:stretch
+WebkitBoxDirection=:normal
+WebkitBoxFlex=:0
+WebkitBoxOrdinalGroup=:1
+WebkitBoxOrient=:horizontal
+WebkitBoxPack=:start
+WebkitBoxShadow=:none
+WebkitBoxSizing=:content-box
+WebkitClipPath=:none
+WebkitFilter=:none
+WebkitFlex=:0 1 auto
+WebkitFlexBasis=:auto
+WebkitFlexDirection=:row
+WebkitFlexFlow=:row
+WebkitFlexGrow=:0
+WebkitFlexShrink=:1
+WebkitFlexWrap=:nowrap
+WebkitFontFeatureSettings=:normal
+WebkitJustifyContent=:normal
+WebkitLineClamp=:none
+WebkitMask=:none
+WebkitMaskClip=:border-box
+WebkitMaskComposite=:add
+WebkitMaskImage=:none
+WebkitMaskOrigin=:border-box
+WebkitMaskPosition=:0% 0%
+WebkitMaskPositionX=:0%
+WebkitMaskPositionY=:0%
+WebkitMaskRepeat=:repeat
+WebkitMaskSize=:auto
+WebkitOrder=:0
+WebkitPerspective=:none
+WebkitPerspectiveOrigin=:620px 9px
+WebkitTextFillColor=:rgb(0, 0, 0)
+WebkitTextSecurity=:none
+WebkitTextSizeAdjust=:auto
+WebkitTextStroke=:0px rgb(0, 0, 0)
+WebkitTextStrokeColor=:rgb(0, 0, 0)
+WebkitTextStrokeWidth=:0px
+WebkitTransform=:none
+WebkitTransformOrigin=:620px 9px
+WebkitTransformStyle=:flat
+WebkitTransition=:all
+WebkitTransitionDelay=:0s
+WebkitTransitionDuration=:0s
+WebkitTransitionProperty=:all
+WebkitTransitionTimingFunction=:ease
+WebkitUserSelect=:auto
+accent-color=:auto
+accentColor=:auto
+align-content=:normal
+align-items=:normal
+align-self=:auto
+alignContent=:normal
+alignItems=:normal
+alignSelf=:auto
+all=:
+animation-composition=:replace
+animation-delay=:0s
+animation-direction=:normal
+animation-duration=:0s
+animation-fill-mode=:none
+animation-iteration-count=:1
+animation-name=:none
+animation-play-state=:running
+animation-timing-function=:ease
+animation=:none
+animationComposition=:replace
+animationDelay=:0s
+animationDirection=:normal
+animationDuration=:0s
+animationFillMode=:none
+animationIterationCount=:1
+animationName=:none
+animationPlayState=:running
+animationTimingFunction=:ease
+appearance=:none
+aspect-ratio=:auto
+aspectRatio=:auto
+backdrop-filter=:none
+backdropFilter=:none
+backface-visibility=:visible
+backfaceVisibility=:visible
+background-attachment=:scroll
+background-blend-mode=:normal
+background-clip=:border-box
+background-color=:rgba(0, 0, 0, 0)
+background-image=:none
+background-origin=:padding-box
+background-position-x=:0%
+background-position-y=:0%
+background-position=:0% 0%
+background-repeat=:repeat
+background-size=:auto
+background=:none
+backgroundAttachment=:scroll
+backgroundBlendMode=:normal
+backgroundClip=:border-box
+backgroundColor=:rgba(0, 0, 0, 0)
+backgroundImage=:none
+backgroundOrigin=:padding-box
+backgroundPosition=:0% 0%
+backgroundPositionX=:0%
+backgroundPositionY=:0%
+backgroundRepeat=:repeat
+backgroundSize=:auto
+baseline-source=:auto
+baselineSource=:auto
+block-size=:18px
+blockSize=:18px
+border-block-color=:rgb(0, 0, 0)
+border-block-end-color=:rgb(0, 0, 0)
+border-block-end-style=:none
+border-block-end-width=:0px
+border-block-end=:0px rgb(0, 0, 0)
+border-block-start-color=:rgb(0, 0, 0)
+border-block-start-style=:none
+border-block-start-width=:0px
+border-block-start=:0px rgb(0, 0, 0)
+border-block-style=:none
+border-block-width=:0px
+border-block=:0px rgb(0, 0, 0)
+border-bottom-color=:rgb(0, 0, 0)
+border-bottom-left-radius=:0px
+border-bottom-right-radius=:0px
+border-bottom-style=:none
+border-bottom-width=:0px
+border-bottom=:0px rgb(0, 0, 0)
+border-collapse=:separate
+border-color=:rgb(0, 0, 0)
+border-end-end-radius=:0px
+border-end-start-radius=:0px
+border-image-outset=:0
+border-image-repeat=:stretch
+border-image-slice=:100%
+border-image-source=:none
+border-image-width=:1
+border-image=:none
+border-inline-color=:rgb(0, 0, 0)
+border-inline-end-color=:rgb(0, 0, 0)
+border-inline-end-style=:none
+border-inline-end-width=:0px
+border-inline-end=:0px rgb(0, 0, 0)
+border-inline-start-color=:rgb(0, 0, 0)
+border-inline-start-style=:none
+border-inline-start-width=:0px
+border-inline-start=:0px rgb(0, 0, 0)
+border-inline-style=:none
+border-inline-width=:0px
+border-inline=:0px rgb(0, 0, 0)
+border-left-color=:rgb(0, 0, 0)
+border-left-style=:none
+border-left-width=:0px
+border-left=:0px rgb(0, 0, 0)
+border-radius=:0px
+border-right-color=:rgb(0, 0, 0)
+border-right-style=:none
+border-right-width=:0px
+border-right=:0px rgb(0, 0, 0)
+border-spacing=:0px
+border-start-end-radius=:0px
+border-start-start-radius=:0px
+border-style=:none
+border-top-color=:rgb(0, 0, 0)
+border-top-left-radius=:0px
+border-top-right-radius=:0px
+border-top-style=:none
+border-top-width=:0px
+border-top=:0px rgb(0, 0, 0)
+border-width=:0px
+border=:0px rgb(0, 0, 0)
+borderBlock=:0px rgb(0, 0, 0)
+borderBlockColor=:rgb(0, 0, 0)
+borderBlockEnd=:0px rgb(0, 0, 0)
+borderBlockEndColor=:rgb(0, 0, 0)
+borderBlockEndStyle=:none
+borderBlockEndWidth=:0px
+borderBlockStart=:0px rgb(0, 0, 0)
+borderBlockStartColor=:rgb(0, 0, 0)
+borderBlockStartStyle=:none
+borderBlockStartWidth=:0px
+borderBlockStyle=:none
+borderBlockWidth=:0px
+borderBottom=:0px rgb(0, 0, 0)
+borderBottomColor=:rgb(0, 0, 0)
+borderBottomLeftRadius=:0px
+borderBottomRightRadius=:0px
+borderBottomStyle=:none
+borderBottomWidth=:0px
+borderCollapse=:separate
+borderColor=:rgb(0, 0, 0)
+borderEndEndRadius=:0px
+borderEndStartRadius=:0px
+borderImage=:none
+borderImageOutset=:0
+borderImageRepeat=:stretch
+borderImageSlice=:100%
+borderImageSource=:none
+borderImageWidth=:1
+borderInline=:0px rgb(0, 0, 0)
+borderInlineColor=:rgb(0, 0, 0)
+borderInlineEnd=:0px rgb(0, 0, 0)
+borderInlineEndColor=:rgb(0, 0, 0)
+borderInlineEndStyle=:none
+borderInlineEndWidth=:0px
+borderInlineStart=:0px rgb(0, 0, 0)
+borderInlineStartColor=:rgb(0, 0, 0)
+borderInlineStartStyle=:none
+borderInlineStartWidth=:0px
+borderInlineStyle=:none
+borderInlineWidth=:0px
+borderLeft=:0px rgb(0, 0, 0)
+borderLeftColor=:rgb(0, 0, 0)
+borderLeftStyle=:none
+borderLeftWidth=:0px
+borderRadius=:0px
+borderRight=:0px rgb(0, 0, 0)
+borderRightColor=:rgb(0, 0, 0)
+borderRightStyle=:none
+borderRightWidth=:0px
+borderSpacing=:0px
+borderStartEndRadius=:0px
+borderStartStartRadius=:0px
+borderStyle=:none
+borderTop=:0px rgb(0, 0, 0)
+borderTopColor=:rgb(0, 0, 0)
+borderTopLeftRadius=:0px
+borderTopRightRadius=:0px
+borderTopStyle=:none
+borderTopWidth=:0px
+borderWidth=:0px
+bottom=:auto
+box-decoration-break=:slice
+box-shadow=:none
+box-sizing=:content-box
+boxDecorationBreak=:slice
+boxShadow=:none
+boxSizing=:content-box
+break-after=:auto
+break-before=:auto
+break-inside=:auto
+breakAfter=:auto
+breakBefore=:auto
+breakInside=:auto
+caption-side=:top
+captionSide=:top
+caret-color=:rgb(0, 0, 0)
+caretColor=:rgb(0, 0, 0)
+clear=:none
+clip-path=:none
+clip-rule=:nonzero
+clip=:auto
+clipPath=:none
+clipRule=:nonzero
+color-adjust=:economy
+color-interpolation-filters=:linearrgb
+color-interpolation=:srgb
+color-scheme=:normal
+color=:rgb(0, 0, 0)
+colorAdjust=:economy
+colorInterpolation=:srgb
+colorInterpolationFilters=:linearrgb
+colorScheme=:normal
+column-count=:auto
+column-fill=:balance
+column-gap=:normal
+column-rule-color=:rgb(0, 0, 0)
+column-rule-style=:none
+column-rule-width=:0px
+column-rule=:0px none rgb(0, 0, 0)
+column-span=:none
+column-width=:auto
+columnCount=:auto
+columnFill=:balance
+columnGap=:normal
+columnRule=:0px none rgb(0, 0, 0)
+columnRuleColor=:rgb(0, 0, 0)
+columnRuleStyle=:none
+columnRuleWidth=:0px
+columnSpan=:none
+columnWidth=:auto
+columns=:auto
+contain-intrinsic-block-size=:none
+contain-intrinsic-height=:none
+contain-intrinsic-inline-size=:none
+contain-intrinsic-size=:none
+contain-intrinsic-width=:none
+contain=:none
+containIntrinsicBlockSize=:none
+containIntrinsicHeight=:none
+containIntrinsicInlineSize=:none
+containIntrinsicSize=:none
+containIntrinsicWidth=:none
+container-name=:none
+container-type=:normal
+container=:none
+containerName=:none
+containerType=:normal
+content-visibility=:visible
+content=:normal
+contentVisibility=:visible
+counter-increment=:none
+counter-reset=:none
+counter-set=:none
+counterIncrement=:none
+counterReset=:none
+counterSet=:none
+cssFloat=:none
+cssText=:skipped
+cursor=:auto
+cx=:0px
+cy=:0px
+d=:none
+direction=:ltr
+display=:block
+dominant-baseline=:auto
+dominantBaseline=:auto
+empty-cells=:show
+emptyCells=:show
+fill-opacity=:1
+fill-rule=:nonzero
+fill=:rgb(0, 0, 0)
+fillOpacity=:1
+fillRule=:nonzero
+filter=:none
+flex-basis=:auto
+flex-direction=:row
+flex-flow=:row
+flex-grow=:0
+flex-shrink=:1
+flex-wrap=:nowrap
+flex=:0 1 auto
+flexBasis=:auto
+flexDirection=:row
+flexFlow=:row
+flexGrow=:0
+flexShrink=:1
+flexWrap=:nowrap
+float=:none
+flood-color=:rgb(0, 0, 0)
+flood-opacity=:1
+floodColor=:rgb(0, 0, 0)
+floodOpacity=:1
+font-family=:serif
+font-feature-settings=:normal
+font-kerning=:auto
+font-language-override=:normal
+font-optical-sizing=:auto
+font-palette=:normal
+font-size-adjust=:none
+font-size=:16px
+font-stretch=:100%
+font-style=:normal
+font-synthesis-position=:auto
+font-synthesis-small-caps=:auto
+font-synthesis-style=:auto
+font-synthesis-weight=:auto
+font-synthesis=:weight style small-caps position
+font-variant-alternates=:normal
+font-variant-caps=:normal
+font-variant-east-asian=:normal
+font-variant-ligatures=:normal
+font-variant-numeric=:normal
+font-variant-position=:normal
+font-variant=:normal
+font-variation-settings=:normal
+font-weight=:400
+font=:16px serif
+fontFamily=:serif
+fontFeatureSettings=:normal
+fontKerning=:auto
+fontLanguageOverride=:normal
+fontOpticalSizing=:auto
+fontPalette=:normal
+fontSize=:16px
+fontSizeAdjust=:none
+fontStretch=:100%
+fontStyle=:normal
+fontSynthesis=:weight style small-caps position
+fontSynthesisPosition=:auto
+fontSynthesisSmallCaps=:auto
+fontSynthesisStyle=:auto
+fontSynthesisWeight=:auto
+fontVariant=:normal
+fontVariantAlternates=:normal
+fontVariantCaps=:normal
+fontVariantEastAsian=:normal
+fontVariantLigatures=:normal
+fontVariantNumeric=:normal
+fontVariantPosition=:normal
+fontVariationSettings=:normal
+fontWeight=:400
+forced-color-adjust=:auto
+forcedColorAdjust=:auto
+gap=:normal
+grid-area=:auto
+grid-auto-columns=:auto
+grid-auto-flow=:row
+grid-auto-rows=:auto
+grid-column-end=:auto
+grid-column-gap=:normal
+grid-column-start=:auto
+grid-column=:auto
+grid-gap=:normal
+grid-row-end=:auto
+grid-row-gap=:normal
+grid-row-start=:auto
+grid-row=:auto
+grid-template-areas=:none
+grid-template-columns=:none
+grid-template-rows=:none
+grid-template=:none
+grid=:none
+gridArea=:auto
+gridAutoColumns=:auto
+gridAutoFlow=:row
+gridAutoRows=:auto
+gridColumn=:auto
+gridColumnEnd=:auto
+gridColumnGap=:normal
+gridColumnStart=:auto
+gridGap=:normal
+gridRow=:auto
+gridRowEnd=:auto
+gridRowGap=:normal
+gridRowStart=:auto
+gridTemplate=:none
+gridTemplateAreas=:none
+gridTemplateColumns=:none
+gridTemplateRows=:none
+height=:18px
+hyphenate-character=:auto
+hyphenate-limit-chars=:auto
+hyphenateCharacter=:auto
+hyphenateLimitChars=:auto
+hyphens=:manual
+image-orientation=:from-image
+image-rendering=:auto
+imageOrientation=:from-image
+imageRendering=:auto
+ime-mode=:auto
+imeMode=:auto
+inline-size=:1240px
+inlineSize=:1240px
+inset-block-end=:auto
+inset-block-start=:auto
+inset-block=:auto
+inset-inline-end=:auto
+inset-inline-start=:auto
+inset-inline=:auto
+inset=:auto
+insetBlock=:auto
+insetBlockEnd=:auto
+insetBlockStart=:auto
+insetInline=:auto
+insetInlineEnd=:auto
+insetInlineStart=:auto
+isolation=:auto
+justify-content=:normal
+justify-items=:normal
+justify-self=:auto
+justifyContent=:normal
+justifyItems=:normal
+justifySelf=:auto
+left=:auto
+letter-spacing=:normal
+letterSpacing=:normal
+lighting-color=:rgb(255, 255, 255)
+lightingColor=:rgb(255, 255, 255)
+line-break=:auto
+line-height=:normal
+lineBreak=:auto
+lineHeight=:normal
+list-style-image=:none
+list-style-position=:outside
+list-style-type=:disc
+list-style=:outside
+listStyle=:outside
+listStyleImage=:none
+listStylePosition=:outside
+listStyleType=:disc
+margin-block-end=:0px
+margin-block-start=:0px
+margin-block=:0px
+margin-bottom=:0px
+margin-inline-end=:0px
+margin-inline-start=:0px
+margin-inline=:0px
+margin-left=:0px
+margin-right=:0px
+margin-top=:0px
+margin=:0px
+marginBlock=:0px
+marginBlockEnd=:0px
+marginBlockStart=:0px
+marginBottom=:0px
+marginInline=:0px
+marginInlineEnd=:0px
+marginInlineStart=:0px
+marginLeft=:0px
+marginRight=:0px
+marginTop=:0px
+marker-end=:none
+marker-mid=:none
+marker-start=:none
+marker=:none
+markerEnd=:none
+markerMid=:none
+markerStart=:none
+mask-clip=:border-box
+mask-composite=:add
+mask-image=:none
+mask-mode=:match-source
+mask-origin=:border-box
+mask-position-x=:0%
+mask-position-y=:0%
+mask-position=:0% 0%
+mask-repeat=:repeat
+mask-size=:auto
+mask-type=:luminance
+mask=:none
+maskClip=:border-box
+maskComposite=:add
+maskImage=:none
+maskMode=:match-source
+maskOrigin=:border-box
+maskPosition=:0% 0%
+maskPositionX=:0%
+maskPositionY=:0%
+maskRepeat=:repeat
+maskSize=:auto
+maskType=:luminance
+math-depth=:0
+math-style=:normal
+mathDepth=:0
+mathStyle=:normal
+max-block-size=:none
+max-height=:none
+max-inline-size=:none
+max-width=:none
+maxBlockSize=:none
+maxHeight=:none
+maxInlineSize=:none
+maxWidth=:none
+min-block-size=:0px
+min-height=:0px
+min-inline-size=:0px
+min-width=:0px
+minBlockSize=:0px
+minHeight=:0px
+minInlineSize=:0px
+minWidth=:0px
+mix-blend-mode=:normal
+mixBlendMode=:normal
+object-fit=:fill
+object-position=:50% 50%
+objectFit=:fill
+objectPosition=:50% 50%
+offset-anchor=:auto
+offset-distance=:0px
+offset-path=:none
+offset-position=:normal
+offset-rotate=:auto
+offset=:normal
+offsetAnchor=:auto
+offsetDistance=:0px
+offsetPath=:none
+offsetPosition=:normal
+offsetRotate=:auto
+opacity=:1
+order=:0
+outline-color=:rgb(0, 0, 0)
+outline-offset=:0px
+outline-style=:none
+outline-width=:0px
+outline=:rgb(0, 0, 0) 0px
+outlineColor=:rgb(0, 0, 0)
+outlineOffset=:0px
+outlineStyle=:none
+outlineWidth=:0px
+overflow-anchor=:auto
+overflow-block=:visible
+overflow-clip-margin=:0px
+overflow-inline=:visible
+overflow-wrap=:normal
+overflow-x=:visible
+overflow-y=:visible
+overflow=:visible
+overflowAnchor=:auto
+overflowBlock=:visible
+overflowClipMargin=:0px
+overflowInline=:visible
+overflowWrap=:normal
+overflowX=:visible
+overflowY=:visible
+overscroll-behavior-block=:auto
+overscroll-behavior-inline=:auto
+overscroll-behavior-x=:auto
+overscroll-behavior-y=:auto
+overscroll-behavior=:auto
+overscrollBehavior=:auto
+overscrollBehaviorBlock=:auto
+overscrollBehaviorInline=:auto
+overscrollBehaviorX=:auto
+overscrollBehaviorY=:auto
+padding-block-end=:0px
+padding-block-start=:0px
+padding-block=:0px
+padding-bottom=:0px
+padding-inline-end=:0px
+padding-inline-start=:0px
+padding-inline=:0px
+padding-left=:0px
+padding-right=:0px
+padding-top=:0px
+padding=:0px
+paddingBlock=:0px
+paddingBlockEnd=:0px
+paddingBlockStart=:0px
+paddingBottom=:0px
+paddingInline=:0px
+paddingInlineEnd=:0px
+paddingInlineStart=:0px
+paddingLeft=:0px
+paddingRight=:0px
+paddingTop=:0px
+page-break-after=:auto
+page-break-before=:auto
+page-break-inside=:auto
+page=:auto
+pageBreakAfter=:auto
+pageBreakBefore=:auto
+pageBreakInside=:auto
+paint-order=:normal
+paintOrder=:normal
+perspective-origin=:620px 9px
+perspective=:none
+perspectiveOrigin=:620px 9px
+place-content=:normal
+place-items=:normal legacy
+place-self=:auto
+placeContent=:normal
+placeItems=:normal legacy
+placeSelf=:auto
+pointer-events=:auto
+pointerEvents=:auto
+position=:static
+print-color-adjust=:economy
+printColorAdjust=:economy
+quotes=:auto
+r=:0px
+resize=:none
+right=:auto
+rotate=:none
+row-gap=:normal
+rowGap=:normal
+ruby-align=:space-around
+ruby-position=:alternate
+rubyAlign=:space-around
+rubyPosition=:alternate
+rx=:auto
+ry=:auto
+scale=:none
+scroll-behavior=:auto
+scroll-margin-block-end=:0px
+scroll-margin-block-start=:0px
+scroll-margin-block=:0px
+scroll-margin-bottom=:0px
+scroll-margin-inline-end=:0px
+scroll-margin-inline-start=:0px
+scroll-margin-inline=:0px
+scroll-margin-left=:0px
+scroll-margin-right=:0px
+scroll-margin-top=:0px
+scroll-margin=:0px
+scroll-padding-block-end=:auto
+scroll-padding-block-start=:auto
+scroll-padding-block=:auto
+scroll-padding-bottom=:auto
+scroll-padding-inline-end=:auto
+scroll-padding-inline-start=:auto
+scroll-padding-inline=:auto
+scroll-padding-left=:auto
+scroll-padding-right=:auto
+scroll-padding-top=:auto
+scroll-padding=:auto
+scroll-snap-align=:none
+scroll-snap-stop=:normal
+scroll-snap-type=:none
+scrollBehavior=:auto
+scrollMargin=:0px
+scrollMarginBlock=:0px
+scrollMarginBlockEnd=:0px
+scrollMarginBlockStart=:0px
+scrollMarginBottom=:0px
+scrollMarginInline=:0px
+scrollMarginInlineEnd=:0px
+scrollMarginInlineStart=:0px
+scrollMarginLeft=:0px
+scrollMarginRight=:0px
+scrollMarginTop=:0px
+scrollPadding=:auto
+scrollPaddingBlock=:auto
+scrollPaddingBlockEnd=:auto
+scrollPaddingBlockStart=:auto
+scrollPaddingBottom=:auto
+scrollPaddingInline=:auto
+scrollPaddingInlineEnd=:auto
+scrollPaddingInlineStart=:auto
+scrollPaddingLeft=:auto
+scrollPaddingRight=:auto
+scrollPaddingTop=:auto
+scrollSnapAlign=:none
+scrollSnapStop=:normal
+scrollSnapType=:none
+scrollbar-color=:auto
+scrollbar-gutter=:auto
+scrollbar-width=:auto
+scrollbarColor=:auto
+scrollbarGutter=:auto
+scrollbarWidth=:auto
+shape-image-threshold=:0
+shape-margin=:0px
+shape-outside=:none
+shape-rendering=:auto
+shapeImageThreshold=:0
+shapeMargin=:0px
+shapeOutside=:none
+shapeRendering=:auto
+stop-color=:rgb(0, 0, 0)
+stop-opacity=:1
+stopColor=:rgb(0, 0, 0)
+stopOpacity=:1
+stroke-dasharray=:none
+stroke-dashoffset=:0px
+stroke-linecap=:butt
+stroke-linejoin=:miter
+stroke-miterlimit=:4
+stroke-opacity=:1
+stroke-width=:1px
+stroke=:none
+strokeDasharray=:none
+strokeDashoffset=:0px
+strokeLinecap=:butt
+strokeLinejoin=:miter
+strokeMiterlimit=:4
+strokeOpacity=:1
+strokeWidth=:1px
+tab-size=:8
+tabSize=:8
+table-layout=:auto
+tableLayout=:auto
+text-align-last=:auto
+text-align=:start
+text-anchor=:start
+text-combine-upright=:none
+text-decoration-color=:rgb(0, 0, 0)
+text-decoration-line=:none
+text-decoration-skip-ink=:auto
+text-decoration-style=:solid
+text-decoration-thickness=:auto
+text-decoration=:rgb(0, 0, 0)
+text-emphasis-color=:rgb(0, 0, 0)
+text-emphasis-position=:auto
+text-emphasis-style=:none
+text-emphasis=:none rgb(0, 0, 0)
+text-indent=:0px
+text-justify=:auto
+text-orientation=:mixed
+text-overflow=:clip
+text-rendering=:auto
+text-shadow=:none
+text-transform=:none
+text-underline-offset=:auto
+text-underline-position=:auto
+text-wrap-mode=:wrap
+text-wrap-style=:auto
+text-wrap=:wrap
+textAlign=:start
+textAlignLast=:auto
+textAnchor=:start
+textCombineUpright=:none
+textDecoration=:rgb(0, 0, 0)
+textDecorationColor=:rgb(0, 0, 0)
+textDecorationLine=:none
+textDecorationSkipInk=:auto
+textDecorationStyle=:solid
+textDecorationThickness=:auto
+textEmphasis=:none rgb(0, 0, 0)
+textEmphasisColor=:rgb(0, 0, 0)
+textEmphasisPosition=:auto
+textEmphasisStyle=:none
+textIndent=:0px
+textJustify=:auto
+textOrientation=:mixed
+textOverflow=:clip
+textRendering=:auto
+textShadow=:none
+textTransform=:none
+textUnderlineOffset=:auto
+textUnderlinePosition=:auto
+textWrap=:wrap
+textWrapMode=:wrap
+textWrapStyle=:auto
+top=:auto
+touch-action=:auto
+touchAction=:auto
+transform-box=:view-box
+transform-origin=:620px 9px
+transform-style=:flat
+transform=:none
+transformBox=:view-box
+transformOrigin=:620px 9px
+transformStyle=:flat
+transition-behavior=:normal
+transition-delay=:0s
+transition-duration=:0s
+transition-property=:all
+transition-timing-function=:ease
+transition=:all
+transitionBehavior=:normal
+transitionDelay=:0s
+transitionDuration=:0s
+transitionProperty=:all
+transitionTimingFunction=:ease
+translate=:none
+unicode-bidi=:isolate
+unicodeBidi=:isolate
+user-select=:auto
+userSelect=:auto
+vector-effect=:none
+vectorEffect=:none
+vertical-align=:baseline
+verticalAlign=:baseline
+visibility=:visible
+webkitAlignContent=:normal
+webkitAlignItems=:normal
+webkitAlignSelf=:auto
+webkitAnimation=:none
+webkitAnimationDelay=:0s
+webkitAnimationDirection=:normal
+webkitAnimationDuration=:0s
+webkitAnimationFillMode=:none
+webkitAnimationIterationCount=:1
+webkitAnimationName=:none
+webkitAnimationPlayState=:running
+webkitAnimationTimingFunction=:ease
+webkitAppearance=:none
+webkitBackfaceVisibility=:visible
+webkitBackgroundClip=:border-box
+webkitBackgroundOrigin=:padding-box
+webkitBackgroundSize=:auto
+webkitBorderBottomLeftRadius=:0px
+webkitBorderBottomRightRadius=:0px
+webkitBorderImage=:none
+webkitBorderRadius=:0px
+webkitBorderTopLeftRadius=:0px
+webkitBorderTopRightRadius=:0px
+webkitBoxAlign=:stretch
+webkitBoxDirection=:normal
+webkitBoxFlex=:0
+webkitBoxOrdinalGroup=:1
+webkitBoxOrient=:horizontal
+webkitBoxPack=:start
+webkitBoxShadow=:none
+webkitBoxSizing=:content-box
+webkitClipPath=:none
+webkitFilter=:none
+webkitFlex=:0 1 auto
+webkitFlexBasis=:auto
+webkitFlexDirection=:row
+webkitFlexFlow=:row
+webkitFlexGrow=:0
+webkitFlexShrink=:1
+webkitFlexWrap=:nowrap
+webkitFontFeatureSettings=:normal
+webkitJustifyContent=:normal
+webkitLineClamp=:none
+webkitMask=:none
+webkitMaskClip=:border-box
+webkitMaskComposite=:add
+webkitMaskImage=:none
+webkitMaskOrigin=:border-box
+webkitMaskPosition=:0% 0%
+webkitMaskPositionX=:0%
+webkitMaskPositionY=:0%
+webkitMaskRepeat=:repeat
+webkitMaskSize=:auto
+webkitOrder=:0
+webkitPerspective=:none
+webkitPerspectiveOrigin=:620px 9px
+webkitTextFillColor=:rgb(0, 0, 0)
+webkitTextSecurity=:none
+webkitTextSizeAdjust=:auto
+webkitTextStroke=:0px rgb(0, 0, 0)
+webkitTextStrokeColor=:rgb(0, 0, 0)
+webkitTextStrokeWidth=:0px
+webkitTransform=:none
+webkitTransformOrigin=:620px 9px
+webkitTransformStyle=:flat
+webkitTransition=:all
+webkitTransitionDelay=:0s
+webkitTransitionDuration=:0s
+webkitTransitionProperty=:all
+webkitTransitionTimingFunction=:ease
+webkitUserSelect=:auto
+white-space-collapse=:collapse
+white-space=:normal
+whiteSpace=:normal
+whiteSpaceCollapse=:collapse
+width=:1256px
+will-change=:auto
+willChange=:auto
+word-break=:normal
+word-spacing=:0px
+word-wrap=:normal
+wordBreak=:normal
+wordSpacing=:0px
+wordWrap=:normal
+writing-mode=:horizontal-tb
+writingMode=:horizontal-tb
+x=:0px
+y=:0px
+z-index=:auto
+zIndex=:auto
+zoom=:1
\ No newline at end of file
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.Chrome_NYI.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.Chrome_NYI.txt
new file mode 100644
index 00000000000..000afb330f6
--- /dev/null
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.Chrome_NYI.txt
@@ -0,0 +1,649 @@
+accentColor=:auto
+additiveSymbols=:
+alignContent=:normal
+alignItems=:normal
+alignSelf=:auto
+alignmentBaseline=:auto
+all=:
+anchorName=:none
+anchorScope=:none
+animation=:none 0s ease 0s 1 normal none running
+animationComposition=:replace
+animationDelay=:0s
+animationDirection=:normal
+animationDuration=:0s
+animationFillMode=:none
+animationIterationCount=:1
+animationName=:none
+animationPlayState=:running
+animationRange=:normal
+animationRangeEnd=:normal
+animationRangeStart=:normal
+animationTimeline=:auto
+animationTimingFunction=:ease
+appRegion=:none
+appearance=:none
+ascentOverride=:
+aspectRatio=:auto
+backdropFilter=:none
+backfaceVisibility=:visible
+background=:rgba(0, 0, 0, 0) none repeat scroll 0% 0% / auto padding-box border-box
+backgroundAttachment=:scroll
+backgroundBlendMode=:normal
+backgroundClip=:border-box
+backgroundColor=:rgba(0, 0, 0, 0)
+backgroundImage=:none
+backgroundOrigin=:padding-box
+backgroundPosition=:0% 0%
+backgroundPositionX=:0%
+backgroundPositionY=:0%
+backgroundRepeat=:repeat
+backgroundSize=:auto
+basePalette=:
+baselineShift=:0px
+baselineSource=:auto
+blockSize=:auto
+border=:0px none rgb(0, 0, 0)
+borderBlock=:0px none rgb(0, 0, 0)
+borderBlockColor=:rgb(0, 0, 0)
+borderBlockEnd=:0px none rgb(0, 0, 0)
+borderBlockEndColor=:rgb(0, 0, 0)
+borderBlockEndStyle=:none
+borderBlockEndWidth=:0px
+borderBlockStart=:0px none rgb(0, 0, 0)
+borderBlockStartColor=:rgb(0, 0, 0)
+borderBlockStartStyle=:none
+borderBlockStartWidth=:0px
+borderBlockStyle=:none
+borderBlockWidth=:0px
+borderBottom=:0px none rgb(0, 0, 0)
+borderBottomColor=:rgb(0, 0, 0)
+borderBottomLeftRadius=:0px
+borderBottomRightRadius=:0px
+borderBottomStyle=:none
+borderBottomWidth=:0px
+borderCollapse=:separate
+borderColor=:rgb(0, 0, 0)
+borderEndEndRadius=:0px
+borderEndStartRadius=:0px
+borderImage=:none
+borderImageOutset=:0
+borderImageRepeat=:stretch
+borderImageSlice=:100%
+borderImageSource=:none
+borderImageWidth=:1
+borderInline=:0px none rgb(0, 0, 0)
+borderInlineColor=:rgb(0, 0, 0)
+borderInlineEnd=:0px none rgb(0, 0, 0)
+borderInlineEndColor=:rgb(0, 0, 0)
+borderInlineEndStyle=:none
+borderInlineEndWidth=:0px
+borderInlineStart=:0px none rgb(0, 0, 0)
+borderInlineStartColor=:rgb(0, 0, 0)
+borderInlineStartStyle=:none
+borderInlineStartWidth=:0px
+borderInlineStyle=:none
+borderInlineWidth=:0px
+borderLeft=:0px none rgb(0, 0, 0)
+borderLeftColor=:rgb(0, 0, 0)
+borderLeftStyle=:none
+borderLeftWidth=:0px
+borderRadius=:0px
+borderRight=:0px none rgb(0, 0, 0)
+borderRightColor=:rgb(0, 0, 0)
+borderRightStyle=:none
+borderRightWidth=:0px
+borderSpacing=:0px 0px
+borderStartEndRadius=:0px
+borderStartStartRadius=:0px
+borderStyle=:none
+borderTop=:0px none rgb(0, 0, 0)
+borderTopColor=:rgb(0, 0, 0)
+borderTopLeftRadius=:0px
+borderTopRightRadius=:0px
+borderTopStyle=:none
+borderTopWidth=:0px
+borderWidth=:0px
+bottom=:auto
+boxDecorationBreak=:slice
+boxShadow=:none
+boxSizing=:content-box
+breakAfter=:auto
+breakBefore=:auto
+breakInside=:auto
+bufferedRendering=:auto
+captionSide=:top
+caretColor=:rgb(0, 0, 0)
+clear=:none
+clip=:auto
+clipPath=:none
+clipRule=:nonzero
+color=:rgb(0, 0, 0)
+colorInterpolation=:srgb
+colorInterpolationFilters=:linearrgb
+colorRendering=:auto
+colorScheme=:normal
+columnCount=:auto
+columnFill=:balance
+columnGap=:normal
+columnRule=:0px none rgb(0, 0, 0)
+columnRuleColor=:rgb(0, 0, 0)
+columnRuleStyle=:none
+columnRuleWidth=:0px
+columnSpan=:none
+columnWidth=:auto
+columns=:auto auto
+contain=:none
+containIntrinsicBlockSize=:none
+containIntrinsicHeight=:none
+containIntrinsicInlineSize=:none
+containIntrinsicSize=:none
+containIntrinsicWidth=:none
+container=:none
+containerName=:none
+containerType=:normal
+content=:normal
+contentVisibility=:visible
+counterIncrement=:none
+counterReset=:none
+counterSet=:none
+cssFloat=:none
+cssText=display: none:skipped
+cursor=:auto
+cx=:0px
+cy=:0px
+d=:none
+descentOverride=:
+direction=:ltr
+display=none:none
+dominantBaseline=:auto
+emptyCells=:show
+fallback=:
+fieldSizing=:fixed
+fill=:rgb(0, 0, 0)
+fillOpacity=:1
+fillRule=:nonzero
+filter=:none
+flex=:0 1 auto
+flexBasis=:auto
+flexDirection=:row
+flexFlow=:row nowrap
+flexGrow=:0
+flexShrink=:1
+flexWrap=:nowrap
+float=:none
+floodColor=:rgb(0, 0, 0)
+floodOpacity=:1
+font=:16px "Times New Roman"
+fontDisplay=:
+fontFamily=:"Times New Roman"
+fontFeatureSettings=:normal
+fontKerning=:auto
+fontOpticalSizing=:auto
+fontPalette=:normal
+fontSize=:16px
+fontSizeAdjust=:none
+fontStretch=:100%
+fontStyle=:normal
+fontSynthesis=:weight style small-caps
+fontSynthesisSmallCaps=:auto
+fontSynthesisStyle=:auto
+fontSynthesisWeight=:auto
+fontVariant=:normal
+fontVariantAlternates=:normal
+fontVariantCaps=:normal
+fontVariantEastAsian=:normal
+fontVariantEmoji=:normal
+fontVariantLigatures=:normal
+fontVariantNumeric=:normal
+fontVariantPosition=:normal
+fontVariationSettings=:normal
+fontWeight=:400
+forcedColorAdjust=:auto
+gap=:normal
+grid=:none / none / none / row / auto / auto
+gridArea=:auto
+gridAutoColumns=:auto
+gridAutoFlow=:row
+gridAutoRows=:auto
+gridColumn=:auto
+gridColumnEnd=:auto
+gridColumnGap=:normal
+gridColumnStart=:auto
+gridGap=:normal
+gridRow=:auto
+gridRowEnd=:auto
+gridRowGap=:normal
+gridRowStart=:auto
+gridTemplate=:none
+gridTemplateAreas=:none
+gridTemplateColumns=:none
+gridTemplateRows=:none
+height=:auto
+hyphenateCharacter=:auto
+hyphenateLimitChars=:auto
+hyphens=:manual
+imageOrientation=:from-image
+imageRendering=:auto
+inherits=:
+initialLetter=:normal
+initialValue=:
+inlineSize=:1240px
+inset=:auto
+insetBlock=:auto
+insetBlockEnd=:auto
+insetBlockStart=:auto
+insetInline=:auto
+insetInlineEnd=:auto
+insetInlineStart=:auto
+interactivity=:auto
+interpolateSize=:numeric-only
+isolation=:auto
+justifyContent=:normal
+justifyItems=:normal
+justifySelf=:auto
+left=:auto
+letterSpacing=:normal
+lightingColor=:rgb(255, 255, 255)
+lineBreak=:auto
+lineGapOverride=:
+lineHeight=:normal
+listStyle=:outside none disc
+listStyleImage=:none
+listStylePosition=:outside
+listStyleType=:disc
+margin=:0px
+marginBlock=:0px
+marginBlockEnd=:0px
+marginBlockStart=:0px
+marginBottom=:0px
+marginInline=:0px
+marginInlineEnd=:0px
+marginInlineStart=:0px
+marginLeft=:0px
+marginRight=:0px
+marginTop=:0px
+marker=:none
+markerEnd=:none
+markerMid=:none
+markerStart=:none
+mask=:none
+maskClip=:border-box
+maskComposite=:add
+maskImage=:none
+maskMode=:match-source
+maskOrigin=:border-box
+maskPosition=:0% 0%
+maskRepeat=:repeat
+maskSize=:auto
+maskType=:luminance
+mathDepth=:0
+mathShift=:normal
+mathStyle=:normal
+maxBlockSize=:none
+maxHeight=:none
+maxInlineSize=:none
+maxWidth=:none
+minBlockSize=:0px
+minHeight=:0px
+minInlineSize=:0px
+minWidth=:0px
+mixBlendMode=:normal
+navigation=:
+negative=:
+objectFit=:fill
+objectPosition=:50% 50%
+objectViewBox=:none
+offset=:none 0px auto 0deg
+offsetAnchor=:auto
+offsetDistance=:0px
+offsetPath=:none
+offsetPosition=:normal
+offsetRotate=:auto 0deg
+opacity=:1
+order=:0
+orphans=:2
+outline=:rgb(0, 0, 0) none 0px
+outlineColor=:rgb(0, 0, 0)
+outlineOffset=:0px
+outlineStyle=:none
+outlineWidth=:0px
+overflow=:visible
+overflowAnchor=:auto
+overflowBlock=:visible
+overflowClipMargin=:0px
+overflowInline=:visible
+overflowWrap=:normal
+overflowX=:visible
+overflowY=:visible
+overlay=:none
+overrideColors=:
+overscrollBehavior=:auto
+overscrollBehaviorBlock=:auto
+overscrollBehaviorInline=:auto
+overscrollBehaviorX=:auto
+overscrollBehaviorY=:auto
+pad=:
+padding=:0px
+paddingBlock=:0px
+paddingBlockEnd=:0px
+paddingBlockStart=:0px
+paddingBottom=:0px
+paddingInline=:0px
+paddingInlineEnd=:0px
+paddingInlineStart=:0px
+paddingLeft=:0px
+paddingRight=:0px
+paddingTop=:0px
+page=:auto
+pageBreakAfter=:auto
+pageBreakBefore=:auto
+pageBreakInside=:auto
+pageOrientation=:
+paintOrder=:normal
+perspective=:none
+perspectiveOrigin=:620px 9px
+placeContent=:normal
+placeItems=:normal
+placeSelf=:auto
+pointerEvents=:auto
+position=:static
+positionAnchor=:auto
+positionArea=:none
+positionTry=:none
+positionTryFallbacks=:none
+positionTryOrder=:normal
+positionVisibility=:always
+prefix=:
+quotes=:auto
+r=:0px
+range=:
+resize=:none
+right=:auto
+rotate=:none
+rowGap=:normal
+rubyAlign=:space-around
+rubyPosition=:over
+rx=:auto
+ry=:auto
+scale=:none
+scrollBehavior=:auto
+scrollInitialTarget=:none
+scrollMargin=:0px
+scrollMarginBlock=:0px
+scrollMarginBlockEnd=:0px
+scrollMarginBlockStart=:0px
+scrollMarginBottom=:0px
+scrollMarginInline=:0px
+scrollMarginInlineEnd=:0px
+scrollMarginInlineStart=:0px
+scrollMarginLeft=:0px
+scrollMarginRight=:0px
+scrollMarginTop=:0px
+scrollMarkerGroup=:none
+scrollPadding=:auto
+scrollPaddingBlock=:auto
+scrollPaddingBlockEnd=:auto
+scrollPaddingBlockStart=:auto
+scrollPaddingBottom=:auto
+scrollPaddingInline=:auto
+scrollPaddingInlineEnd=:auto
+scrollPaddingInlineStart=:auto
+scrollPaddingLeft=:auto
+scrollPaddingRight=:auto
+scrollPaddingTop=:auto
+scrollSnapAlign=:none
+scrollSnapStop=:normal
+scrollSnapType=:none
+scrollTimeline=:none
+scrollTimelineAxis=:block
+scrollTimelineName=:none
+scrollbarColor=:auto
+scrollbarGutter=:auto
+scrollbarWidth=:auto
+shapeImageThreshold=:0
+shapeMargin=:0px
+shapeOutside=:none
+shapeRendering=:auto
+size=:
+sizeAdjust=:
+speak=:normal
+speakAs=:
+src=:
+stopColor=:rgb(0, 0, 0)
+stopOpacity=:1
+stroke=:none
+strokeDasharray=:none
+strokeDashoffset=:0px
+strokeLinecap=:butt
+strokeLinejoin=:miter
+strokeMiterlimit=:4
+strokeOpacity=:1
+strokeWidth=:1px
+suffix=:
+symbols=:
+syntax=:
+system=:
+tabSize=:8
+tableLayout=:auto
+textAlign=:start
+textAlignLast=:auto
+textAnchor=:start
+textBox=:normal
+textBoxEdge=:auto
+textBoxTrim=:none
+textCombineUpright=:none
+textDecoration=:none solid rgb(0, 0, 0)
+textDecorationColor=:rgb(0, 0, 0)
+textDecorationLine=:none
+textDecorationSkipInk=:auto
+textDecorationStyle=:solid
+textDecorationThickness=:auto
+textEmphasis=:none rgb(0, 0, 0)
+textEmphasisColor=:rgb(0, 0, 0)
+textEmphasisPosition=:over
+textEmphasisStyle=:none
+textIndent=:0px
+textOrientation=:mixed
+textOverflow=:clip
+textRendering=:auto
+textShadow=:none
+textSizeAdjust=:auto
+textSpacingTrim=:normal
+textTransform=:none
+textUnderlineOffset=:auto
+textUnderlinePosition=:auto
+textWrap=:wrap
+textWrapMode=:wrap
+textWrapStyle=:auto
+timelineScope=:none
+top=:auto
+touchAction=:auto
+transform=:none
+transformBox=:view-box
+transformOrigin=:620px 9px
+transformStyle=:flat
+transition=:all
+transitionBehavior=:normal
+transitionDelay=:0s
+transitionDuration=:0s
+transitionProperty=:all
+transitionTimingFunction=:ease
+translate=:none
+types=:
+unicodeBidi=:isolate
+unicodeRange=:
+userSelect=:auto
+vectorEffect=:none
+verticalAlign=:baseline
+viewTimeline=:none
+viewTimelineAxis=:block
+viewTimelineInset=:auto
+viewTimelineName=:none
+viewTransitionClass=:none
+viewTransitionName=:none
+visibility=:visible
+webkitAlignContent=:normal
+webkitAlignItems=:normal
+webkitAlignSelf=:auto
+webkitAnimation=:none 0s ease 0s 1 normal none running
+webkitAnimationDelay=:0s
+webkitAnimationDirection=:normal
+webkitAnimationDuration=:0s
+webkitAnimationFillMode=:none
+webkitAnimationIterationCount=:1
+webkitAnimationName=:none
+webkitAnimationPlayState=:running
+webkitAnimationTimingFunction=:ease
+webkitAppRegion=:none
+webkitAppearance=:none
+webkitBackfaceVisibility=:visible
+webkitBackgroundClip=:border-box
+webkitBackgroundOrigin=:padding-box
+webkitBackgroundSize=:auto
+webkitBorderAfter=:0px none rgb(0, 0, 0)
+webkitBorderAfterColor=:rgb(0, 0, 0)
+webkitBorderAfterStyle=:none
+webkitBorderAfterWidth=:0px
+webkitBorderBefore=:0px none rgb(0, 0, 0)
+webkitBorderBeforeColor=:rgb(0, 0, 0)
+webkitBorderBeforeStyle=:none
+webkitBorderBeforeWidth=:0px
+webkitBorderBottomLeftRadius=:0px
+webkitBorderBottomRightRadius=:0px
+webkitBorderEnd=:0px none rgb(0, 0, 0)
+webkitBorderEndColor=:rgb(0, 0, 0)
+webkitBorderEndStyle=:none
+webkitBorderEndWidth=:0px
+webkitBorderHorizontalSpacing=:0px
+webkitBorderImage=:none
+webkitBorderRadius=:0px
+webkitBorderStart=:0px none rgb(0, 0, 0)
+webkitBorderStartColor=:rgb(0, 0, 0)
+webkitBorderStartStyle=:none
+webkitBorderStartWidth=:0px
+webkitBorderTopLeftRadius=:0px
+webkitBorderTopRightRadius=:0px
+webkitBorderVerticalSpacing=:0px
+webkitBoxAlign=:stretch
+webkitBoxDecorationBreak=:slice
+webkitBoxDirection=:normal
+webkitBoxFlex=:0
+webkitBoxOrdinalGroup=:1
+webkitBoxOrient=:horizontal
+webkitBoxPack=:start
+webkitBoxReflect=:none
+webkitBoxShadow=:none
+webkitBoxSizing=:content-box
+webkitClipPath=:none
+webkitColumnBreakAfter=:auto
+webkitColumnBreakBefore=:auto
+webkitColumnBreakInside=:auto
+webkitColumnCount=:auto
+webkitColumnGap=:normal
+webkitColumnRule=:0px none rgb(0, 0, 0)
+webkitColumnRuleColor=:rgb(0, 0, 0)
+webkitColumnRuleStyle=:none
+webkitColumnRuleWidth=:0px
+webkitColumnSpan=:none
+webkitColumnWidth=:auto
+webkitColumns=:auto auto
+webkitFilter=:none
+webkitFlex=:0 1 auto
+webkitFlexBasis=:auto
+webkitFlexDirection=:row
+webkitFlexFlow=:row nowrap
+webkitFlexGrow=:0
+webkitFlexShrink=:1
+webkitFlexWrap=:nowrap
+webkitFontFeatureSettings=:normal
+webkitFontSmoothing=:auto
+webkitHyphenateCharacter=:auto
+webkitJustifyContent=:normal
+webkitLineBreak=:auto
+webkitLineClamp=:none
+webkitLocale=:auto
+webkitLogicalHeight=:18px
+webkitLogicalWidth=:1240px
+webkitMarginAfter=:0px
+webkitMarginBefore=:0px
+webkitMarginEnd=:0px
+webkitMarginStart=:0px
+webkitMask=:none
+webkitMaskBoxImage=:none
+webkitMaskBoxImageOutset=:0
+webkitMaskBoxImageRepeat=:stretch
+webkitMaskBoxImageSlice=:0 fill
+webkitMaskBoxImageSource=:none
+webkitMaskBoxImageWidth=:auto
+webkitMaskClip=:border-box
+webkitMaskComposite=:add
+webkitMaskImage=:none
+webkitMaskOrigin=:border-box
+webkitMaskPosition=:0% 0%
+webkitMaskPositionX=:0%
+webkitMaskPositionY=:0%
+webkitMaskRepeat=:repeat
+webkitMaskSize=:auto
+webkitMaxLogicalHeight=:none
+webkitMaxLogicalWidth=:none
+webkitMinLogicalHeight=:0px
+webkitMinLogicalWidth=:0px
+webkitOpacity=:1
+webkitOrder=:0
+webkitPaddingAfter=:0px
+webkitPaddingBefore=:0px
+webkitPaddingEnd=:0px
+webkitPaddingStart=:0px
+webkitPerspective=:none
+webkitPerspectiveOrigin=:620px 9px
+webkitPerspectiveOriginX=:
+webkitPerspectiveOriginY=:
+webkitPrintColorAdjust=:economy
+webkitRtlOrdering=:logical
+webkitRubyPosition=:before
+webkitShapeImageThreshold=:0
+webkitShapeMargin=:0px
+webkitShapeOutside=:none
+webkitTapHighlightColor=:rgba(0, 0, 0, 0.18)
+webkitTextCombine=:none
+webkitTextDecorationsInEffect=:none
+webkitTextEmphasis=:none rgb(0, 0, 0)
+webkitTextEmphasisColor=:rgb(0, 0, 0)
+webkitTextEmphasisPosition=:over
+webkitTextEmphasisStyle=:none
+webkitTextFillColor=:rgb(0, 0, 0)
+webkitTextOrientation=:vertical-right
+webkitTextSecurity=:none
+webkitTextSizeAdjust=:auto
+webkitTextStroke=:0px rgb(0, 0, 0)
+webkitTextStrokeColor=:rgb(0, 0, 0)
+webkitTextStrokeWidth=:0px
+webkitTransform=:none
+webkitTransformOrigin=:620px 9px
+webkitTransformOriginX=:
+webkitTransformOriginY=:
+webkitTransformOriginZ=:
+webkitTransformStyle=:flat
+webkitTransition=:all
+webkitTransitionDelay=:0s
+webkitTransitionDuration=:0s
+webkitTransitionProperty=:all
+webkitTransitionTimingFunction=:ease
+webkitUserDrag=:auto
+webkitUserModify=:read-only
+webkitUserSelect=:auto
+webkitWritingMode=:horizontal-tb
+whiteSpace=:normal
+whiteSpaceCollapse=:collapse
+widows=:2
+width=:auto
+willChange=:auto
+wordBreak=:normal
+wordSpacing=:0px
+wordWrap=:normal
+writingMode=:horizontal-tb
+x=:0px
+y=:0px
+zIndex=:auto
+zoom=:1
\ No newline at end of file
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.Edge_NYI.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.Edge_NYI.txt
new file mode 100644
index 00000000000..8a88c5840f9
--- /dev/null
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.Edge_NYI.txt
@@ -0,0 +1,649 @@
+accentColor=:auto
+additiveSymbols=:
+alignContent=:normal
+alignItems=:normal
+alignSelf=:auto
+alignmentBaseline=:auto
+all=:
+anchorName=:none
+anchorScope=:none
+animation=:none 0s ease 0s 1 normal none running
+animationComposition=:replace
+animationDelay=:0s
+animationDirection=:normal
+animationDuration=:0s
+animationFillMode=:none
+animationIterationCount=:1
+animationName=:none
+animationPlayState=:running
+animationRange=:normal
+animationRangeEnd=:normal
+animationRangeStart=:normal
+animationTimeline=:auto
+animationTimingFunction=:ease
+appRegion=:none
+appearance=:none
+ascentOverride=:
+aspectRatio=:auto
+backdropFilter=:none
+backfaceVisibility=:visible
+background=:rgba(0, 0, 0, 0) none repeat scroll 0% 0% / auto padding-box border-box
+backgroundAttachment=:scroll
+backgroundBlendMode=:normal
+backgroundClip=:border-box
+backgroundColor=:rgba(0, 0, 0, 0)
+backgroundImage=:none
+backgroundOrigin=:padding-box
+backgroundPosition=:0% 0%
+backgroundPositionX=:0%
+backgroundPositionY=:0%
+backgroundRepeat=:repeat
+backgroundSize=:auto
+basePalette=:
+baselineShift=:0px
+baselineSource=:auto
+blockSize=:auto
+border=:0px none rgb(0, 0, 0)
+borderBlock=:0px none rgb(0, 0, 0)
+borderBlockColor=:rgb(0, 0, 0)
+borderBlockEnd=:0px none rgb(0, 0, 0)
+borderBlockEndColor=:rgb(0, 0, 0)
+borderBlockEndStyle=:none
+borderBlockEndWidth=:0px
+borderBlockStart=:0px none rgb(0, 0, 0)
+borderBlockStartColor=:rgb(0, 0, 0)
+borderBlockStartStyle=:none
+borderBlockStartWidth=:0px
+borderBlockStyle=:none
+borderBlockWidth=:0px
+borderBottom=:0px none rgb(0, 0, 0)
+borderBottomColor=:rgb(0, 0, 0)
+borderBottomLeftRadius=:0px
+borderBottomRightRadius=:0px
+borderBottomStyle=:none
+borderBottomWidth=:0px
+borderCollapse=:separate
+borderColor=:rgb(0, 0, 0)
+borderEndEndRadius=:0px
+borderEndStartRadius=:0px
+borderImage=:none
+borderImageOutset=:0
+borderImageRepeat=:stretch
+borderImageSlice=:100%
+borderImageSource=:none
+borderImageWidth=:1
+borderInline=:0px none rgb(0, 0, 0)
+borderInlineColor=:rgb(0, 0, 0)
+borderInlineEnd=:0px none rgb(0, 0, 0)
+borderInlineEndColor=:rgb(0, 0, 0)
+borderInlineEndStyle=:none
+borderInlineEndWidth=:0px
+borderInlineStart=:0px none rgb(0, 0, 0)
+borderInlineStartColor=:rgb(0, 0, 0)
+borderInlineStartStyle=:none
+borderInlineStartWidth=:0px
+borderInlineStyle=:none
+borderInlineWidth=:0px
+borderLeft=:0px none rgb(0, 0, 0)
+borderLeftColor=:rgb(0, 0, 0)
+borderLeftStyle=:none
+borderLeftWidth=:0px
+borderRadius=:0px
+borderRight=:0px none rgb(0, 0, 0)
+borderRightColor=:rgb(0, 0, 0)
+borderRightStyle=:none
+borderRightWidth=:0px
+borderSpacing=:0px 0px
+borderStartEndRadius=:0px
+borderStartStartRadius=:0px
+borderStyle=:none
+borderTop=:0px none rgb(0, 0, 0)
+borderTopColor=:rgb(0, 0, 0)
+borderTopLeftRadius=:0px
+borderTopRightRadius=:0px
+borderTopStyle=:none
+borderTopWidth=:0px
+borderWidth=:0px
+bottom=:auto
+boxDecorationBreak=:slice
+boxShadow=:none
+boxSizing=:content-box
+breakAfter=:auto
+breakBefore=:auto
+breakInside=:auto
+bufferedRendering=:auto
+captionSide=:top
+caretColor=:rgb(0, 0, 0)
+clear=:none
+clip=:auto
+clipPath=:none
+clipRule=:nonzero
+color=:rgb(0, 0, 0)
+colorInterpolation=:srgb
+colorInterpolationFilters=:linearrgb
+colorRendering=:auto
+colorScheme=:normal
+columnCount=:auto
+columnFill=:balance
+columnGap=:normal
+columnRule=:0px none rgb(0, 0, 0)
+columnRuleColor=:rgb(0, 0, 0)
+columnRuleStyle=:none
+columnRuleWidth=:0px
+columnSpan=:none
+columnWidth=:auto
+columns=:auto auto
+contain=:none
+containIntrinsicBlockSize=:none
+containIntrinsicHeight=:none
+containIntrinsicInlineSize=:none
+containIntrinsicSize=:none
+containIntrinsicWidth=:none
+container=:none
+containerName=:none
+containerType=:normal
+content=:normal
+contentVisibility=:visible
+counterIncrement=:none
+counterReset=:none
+counterSet=:none
+cssFloat=:none
+cssText=display: none:skipped
+cursor=:auto
+cx=:0px
+cy=:0px
+d=:none
+descentOverride=:
+direction=:ltr
+display=none:none
+dominantBaseline=:auto
+emptyCells=:show
+fallback=:
+fieldSizing=:fixed
+fill=:rgb(0, 0, 0)
+fillOpacity=:1
+fillRule=:nonzero
+filter=:none
+flex=:0 1 auto
+flexBasis=:auto
+flexDirection=:row
+flexFlow=:row nowrap
+flexGrow=:0
+flexShrink=:1
+flexWrap=:nowrap
+float=:none
+floodColor=:rgb(0, 0, 0)
+floodOpacity=:1
+font=:16px "Times New Roman"
+fontDisplay=:
+fontFamily=:"Times New Roman"
+fontFeatureSettings=:normal
+fontKerning=:auto
+fontOpticalSizing=:auto
+fontPalette=:normal
+fontSize=:16px
+fontSizeAdjust=:none
+fontStretch=:100%
+fontStyle=:normal
+fontSynthesis=:weight style small-caps
+fontSynthesisSmallCaps=:auto
+fontSynthesisStyle=:auto
+fontSynthesisWeight=:auto
+fontVariant=:normal
+fontVariantAlternates=:normal
+fontVariantCaps=:normal
+fontVariantEastAsian=:normal
+fontVariantEmoji=:normal
+fontVariantLigatures=:normal
+fontVariantNumeric=:normal
+fontVariantPosition=:normal
+fontVariationSettings=:normal
+fontWeight=:400
+forcedColorAdjust=:auto
+gap=:normal
+grid=:none / none / none / row / auto / auto
+gridArea=:auto
+gridAutoColumns=:auto
+gridAutoFlow=:row
+gridAutoRows=:auto
+gridColumn=:auto
+gridColumnEnd=:auto
+gridColumnGap=:normal
+gridColumnStart=:auto
+gridGap=:normal
+gridRow=:auto
+gridRowEnd=:auto
+gridRowGap=:normal
+gridRowStart=:auto
+gridTemplate=:none
+gridTemplateAreas=:none
+gridTemplateColumns=:none
+gridTemplateRows=:none
+height=:auto
+hyphenateCharacter=:auto
+hyphenateLimitChars=:auto
+hyphens=:manual
+imageOrientation=:from-image
+imageRendering=:auto
+inherits=:
+initialLetter=:normal
+initialValue=:
+inlineSize=:1232px
+inset=:auto
+insetBlock=:auto
+insetBlockEnd=:auto
+insetBlockStart=:auto
+insetInline=:auto
+insetInlineEnd=:auto
+insetInlineStart=:auto
+interactivity=:auto
+interpolateSize=:numeric-only
+isolation=:auto
+justifyContent=:normal
+justifyItems=:normal
+justifySelf=:auto
+left=:auto
+letterSpacing=:normal
+lightingColor=:rgb(255, 255, 255)
+lineBreak=:auto
+lineGapOverride=:
+lineHeight=:normal
+listStyle=:outside none disc
+listStyleImage=:none
+listStylePosition=:outside
+listStyleType=:disc
+margin=:0px
+marginBlock=:0px
+marginBlockEnd=:0px
+marginBlockStart=:0px
+marginBottom=:0px
+marginInline=:0px
+marginInlineEnd=:0px
+marginInlineStart=:0px
+marginLeft=:0px
+marginRight=:0px
+marginTop=:0px
+marker=:none
+markerEnd=:none
+markerMid=:none
+markerStart=:none
+mask=:none
+maskClip=:border-box
+maskComposite=:add
+maskImage=:none
+maskMode=:match-source
+maskOrigin=:border-box
+maskPosition=:0% 0%
+maskRepeat=:repeat
+maskSize=:auto
+maskType=:luminance
+mathDepth=:0
+mathShift=:normal
+mathStyle=:normal
+maxBlockSize=:none
+maxHeight=:none
+maxInlineSize=:none
+maxWidth=:none
+minBlockSize=:0px
+minHeight=:0px
+minInlineSize=:0px
+minWidth=:0px
+mixBlendMode=:normal
+navigation=:
+negative=:
+objectFit=:fill
+objectPosition=:50% 50%
+objectViewBox=:none
+offset=:none 0px auto 0deg
+offsetAnchor=:auto
+offsetDistance=:0px
+offsetPath=:none
+offsetPosition=:normal
+offsetRotate=:auto 0deg
+opacity=:1
+order=:0
+orphans=:2
+outline=:rgb(0, 0, 0) none 0px
+outlineColor=:rgb(0, 0, 0)
+outlineOffset=:0px
+outlineStyle=:none
+outlineWidth=:0px
+overflow=:visible
+overflowAnchor=:auto
+overflowBlock=:visible
+overflowClipMargin=:0px
+overflowInline=:visible
+overflowWrap=:normal
+overflowX=:visible
+overflowY=:visible
+overlay=:none
+overrideColors=:
+overscrollBehavior=:auto
+overscrollBehaviorBlock=:auto
+overscrollBehaviorInline=:auto
+overscrollBehaviorX=:auto
+overscrollBehaviorY=:auto
+pad=:
+padding=:0px
+paddingBlock=:0px
+paddingBlockEnd=:0px
+paddingBlockStart=:0px
+paddingBottom=:0px
+paddingInline=:0px
+paddingInlineEnd=:0px
+paddingInlineStart=:0px
+paddingLeft=:0px
+paddingRight=:0px
+paddingTop=:0px
+page=:auto
+pageBreakAfter=:auto
+pageBreakBefore=:auto
+pageBreakInside=:auto
+pageOrientation=:
+paintOrder=:normal
+perspective=:none
+perspectiveOrigin=:616px 9px
+placeContent=:normal
+placeItems=:normal
+placeSelf=:auto
+pointerEvents=:auto
+position=:static
+positionAnchor=:auto
+positionArea=:none
+positionTry=:none
+positionTryFallbacks=:none
+positionTryOrder=:normal
+positionVisibility=:always
+prefix=:
+quotes=:auto
+r=:0px
+range=:
+resize=:none
+right=:auto
+rotate=:none
+rowGap=:normal
+rubyAlign=:space-around
+rubyPosition=:over
+rx=:auto
+ry=:auto
+scale=:none
+scrollBehavior=:auto
+scrollInitialTarget=:none
+scrollMargin=:0px
+scrollMarginBlock=:0px
+scrollMarginBlockEnd=:0px
+scrollMarginBlockStart=:0px
+scrollMarginBottom=:0px
+scrollMarginInline=:0px
+scrollMarginInlineEnd=:0px
+scrollMarginInlineStart=:0px
+scrollMarginLeft=:0px
+scrollMarginRight=:0px
+scrollMarginTop=:0px
+scrollMarkerGroup=:none
+scrollPadding=:auto
+scrollPaddingBlock=:auto
+scrollPaddingBlockEnd=:auto
+scrollPaddingBlockStart=:auto
+scrollPaddingBottom=:auto
+scrollPaddingInline=:auto
+scrollPaddingInlineEnd=:auto
+scrollPaddingInlineStart=:auto
+scrollPaddingLeft=:auto
+scrollPaddingRight=:auto
+scrollPaddingTop=:auto
+scrollSnapAlign=:none
+scrollSnapStop=:normal
+scrollSnapType=:none
+scrollTimeline=:none
+scrollTimelineAxis=:block
+scrollTimelineName=:none
+scrollbarColor=:auto
+scrollbarGutter=:auto
+scrollbarWidth=:auto
+shapeImageThreshold=:0
+shapeMargin=:0px
+shapeOutside=:none
+shapeRendering=:auto
+size=:
+sizeAdjust=:
+speak=:normal
+speakAs=:
+src=:
+stopColor=:rgb(0, 0, 0)
+stopOpacity=:1
+stroke=:none
+strokeDasharray=:none
+strokeDashoffset=:0px
+strokeLinecap=:butt
+strokeLinejoin=:miter
+strokeMiterlimit=:4
+strokeOpacity=:1
+strokeWidth=:1px
+suffix=:
+symbols=:
+syntax=:
+system=:
+tabSize=:8
+tableLayout=:auto
+textAlign=:start
+textAlignLast=:auto
+textAnchor=:start
+textBox=:normal
+textBoxEdge=:auto
+textBoxTrim=:none
+textCombineUpright=:none
+textDecoration=:none solid rgb(0, 0, 0)
+textDecorationColor=:rgb(0, 0, 0)
+textDecorationLine=:none
+textDecorationSkipInk=:auto
+textDecorationStyle=:solid
+textDecorationThickness=:auto
+textEmphasis=:none rgb(0, 0, 0)
+textEmphasisColor=:rgb(0, 0, 0)
+textEmphasisPosition=:over
+textEmphasisStyle=:none
+textIndent=:0px
+textOrientation=:mixed
+textOverflow=:clip
+textRendering=:auto
+textShadow=:none
+textSizeAdjust=:auto
+textSpacingTrim=:normal
+textTransform=:none
+textUnderlineOffset=:auto
+textUnderlinePosition=:auto
+textWrap=:wrap
+textWrapMode=:wrap
+textWrapStyle=:auto
+timelineScope=:none
+top=:auto
+touchAction=:auto
+transform=:none
+transformBox=:view-box
+transformOrigin=:616px 9px
+transformStyle=:flat
+transition=:all
+transitionBehavior=:normal
+transitionDelay=:0s
+transitionDuration=:0s
+transitionProperty=:all
+transitionTimingFunction=:ease
+translate=:none
+types=:
+unicodeBidi=:isolate
+unicodeRange=:
+userSelect=:auto
+vectorEffect=:none
+verticalAlign=:baseline
+viewTimeline=:none
+viewTimelineAxis=:block
+viewTimelineInset=:auto
+viewTimelineName=:none
+viewTransitionClass=:none
+viewTransitionName=:none
+visibility=:visible
+webkitAlignContent=:normal
+webkitAlignItems=:normal
+webkitAlignSelf=:auto
+webkitAnimation=:none 0s ease 0s 1 normal none running
+webkitAnimationDelay=:0s
+webkitAnimationDirection=:normal
+webkitAnimationDuration=:0s
+webkitAnimationFillMode=:none
+webkitAnimationIterationCount=:1
+webkitAnimationName=:none
+webkitAnimationPlayState=:running
+webkitAnimationTimingFunction=:ease
+webkitAppRegion=:none
+webkitAppearance=:none
+webkitBackfaceVisibility=:visible
+webkitBackgroundClip=:border-box
+webkitBackgroundOrigin=:padding-box
+webkitBackgroundSize=:auto
+webkitBorderAfter=:0px none rgb(0, 0, 0)
+webkitBorderAfterColor=:rgb(0, 0, 0)
+webkitBorderAfterStyle=:none
+webkitBorderAfterWidth=:0px
+webkitBorderBefore=:0px none rgb(0, 0, 0)
+webkitBorderBeforeColor=:rgb(0, 0, 0)
+webkitBorderBeforeStyle=:none
+webkitBorderBeforeWidth=:0px
+webkitBorderBottomLeftRadius=:0px
+webkitBorderBottomRightRadius=:0px
+webkitBorderEnd=:0px none rgb(0, 0, 0)
+webkitBorderEndColor=:rgb(0, 0, 0)
+webkitBorderEndStyle=:none
+webkitBorderEndWidth=:0px
+webkitBorderHorizontalSpacing=:0px
+webkitBorderImage=:none
+webkitBorderRadius=:0px
+webkitBorderStart=:0px none rgb(0, 0, 0)
+webkitBorderStartColor=:rgb(0, 0, 0)
+webkitBorderStartStyle=:none
+webkitBorderStartWidth=:0px
+webkitBorderTopLeftRadius=:0px
+webkitBorderTopRightRadius=:0px
+webkitBorderVerticalSpacing=:0px
+webkitBoxAlign=:stretch
+webkitBoxDecorationBreak=:slice
+webkitBoxDirection=:normal
+webkitBoxFlex=:0
+webkitBoxOrdinalGroup=:1
+webkitBoxOrient=:horizontal
+webkitBoxPack=:start
+webkitBoxReflect=:none
+webkitBoxShadow=:none
+webkitBoxSizing=:content-box
+webkitClipPath=:none
+webkitColumnBreakAfter=:auto
+webkitColumnBreakBefore=:auto
+webkitColumnBreakInside=:auto
+webkitColumnCount=:auto
+webkitColumnGap=:normal
+webkitColumnRule=:0px none rgb(0, 0, 0)
+webkitColumnRuleColor=:rgb(0, 0, 0)
+webkitColumnRuleStyle=:none
+webkitColumnRuleWidth=:0px
+webkitColumnSpan=:none
+webkitColumnWidth=:auto
+webkitColumns=:auto auto
+webkitFilter=:none
+webkitFlex=:0 1 auto
+webkitFlexBasis=:auto
+webkitFlexDirection=:row
+webkitFlexFlow=:row nowrap
+webkitFlexGrow=:0
+webkitFlexShrink=:1
+webkitFlexWrap=:nowrap
+webkitFontFeatureSettings=:normal
+webkitFontSmoothing=:auto
+webkitHyphenateCharacter=:auto
+webkitJustifyContent=:normal
+webkitLineBreak=:auto
+webkitLineClamp=:none
+webkitLocale=:auto
+webkitLogicalHeight=:18px
+webkitLogicalWidth=:1232px
+webkitMarginAfter=:0px
+webkitMarginBefore=:0px
+webkitMarginEnd=:0px
+webkitMarginStart=:0px
+webkitMask=:none
+webkitMaskBoxImage=:none
+webkitMaskBoxImageOutset=:0
+webkitMaskBoxImageRepeat=:stretch
+webkitMaskBoxImageSlice=:0 fill
+webkitMaskBoxImageSource=:none
+webkitMaskBoxImageWidth=:auto
+webkitMaskClip=:border-box
+webkitMaskComposite=:add
+webkitMaskImage=:none
+webkitMaskOrigin=:border-box
+webkitMaskPosition=:0% 0%
+webkitMaskPositionX=:0%
+webkitMaskPositionY=:0%
+webkitMaskRepeat=:repeat
+webkitMaskSize=:auto
+webkitMaxLogicalHeight=:none
+webkitMaxLogicalWidth=:none
+webkitMinLogicalHeight=:0px
+webkitMinLogicalWidth=:0px
+webkitOpacity=:1
+webkitOrder=:0
+webkitPaddingAfter=:0px
+webkitPaddingBefore=:0px
+webkitPaddingEnd=:0px
+webkitPaddingStart=:0px
+webkitPerspective=:none
+webkitPerspectiveOrigin=:616px 9px
+webkitPerspectiveOriginX=:
+webkitPerspectiveOriginY=:
+webkitPrintColorAdjust=:economy
+webkitRtlOrdering=:logical
+webkitRubyPosition=:before
+webkitShapeImageThreshold=:0
+webkitShapeMargin=:0px
+webkitShapeOutside=:none
+webkitTapHighlightColor=:rgba(0, 0, 0, 0.18)
+webkitTextCombine=:none
+webkitTextDecorationsInEffect=:none
+webkitTextEmphasis=:none rgb(0, 0, 0)
+webkitTextEmphasisColor=:rgb(0, 0, 0)
+webkitTextEmphasisPosition=:over
+webkitTextEmphasisStyle=:none
+webkitTextFillColor=:rgb(0, 0, 0)
+webkitTextOrientation=:vertical-right
+webkitTextSecurity=:none
+webkitTextSizeAdjust=:auto
+webkitTextStroke=:0px rgb(0, 0, 0)
+webkitTextStrokeColor=:rgb(0, 0, 0)
+webkitTextStrokeWidth=:0px
+webkitTransform=:none
+webkitTransformOrigin=:616px 9px
+webkitTransformOriginX=:
+webkitTransformOriginY=:
+webkitTransformOriginZ=:
+webkitTransformStyle=:flat
+webkitTransition=:all
+webkitTransitionDelay=:0s
+webkitTransitionDuration=:0s
+webkitTransitionProperty=:all
+webkitTransitionTimingFunction=:ease
+webkitUserDrag=:auto
+webkitUserModify=:read-only
+webkitUserSelect=:auto
+webkitWritingMode=:horizontal-tb
+whiteSpace=:normal
+whiteSpaceCollapse=:collapse
+widows=:2
+width=:auto
+willChange=:auto
+wordBreak=:normal
+wordSpacing=:0px
+wordWrap=:normal
+writingMode=:horizontal-tb
+x=:0px
+y=:0px
+zIndex=:auto
+zoom=:1
\ No newline at end of file
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.FF-ESR_NYI.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.FF-ESR_NYI.txt
new file mode 100644
index 00000000000..435cce3453d
--- /dev/null
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.FF-ESR_NYI.txt
@@ -0,0 +1,1101 @@
+-moz-animation-delay=:0s
+-moz-animation-direction=:normal
+-moz-animation-duration=:0s
+-moz-animation-fill-mode=:none
+-moz-animation-iteration-count=:1
+-moz-animation-name=:none
+-moz-animation-play-state=:running
+-moz-animation-timing-function=:ease
+-moz-animation=:none
+-moz-appearance=:none
+-moz-border-end-color=:rgb(0, 0, 0)
+-moz-border-end-style=:none
+-moz-border-end-width=:0px
+-moz-border-end=:0px rgb(0, 0, 0)
+-moz-border-image=:none
+-moz-border-start-color=:rgb(0, 0, 0)
+-moz-border-start-style=:none
+-moz-border-start-width=:0px
+-moz-border-start=:0px rgb(0, 0, 0)
+-moz-box-align=:stretch
+-moz-box-direction=:normal
+-moz-box-flex=:0
+-moz-box-ordinal-group=:1
+-moz-box-orient=:horizontal
+-moz-box-pack=:start
+-moz-box-sizing=:content-box
+-moz-float-edge=:content-box
+-moz-font-feature-settings=:normal
+-moz-font-language-override=:normal
+-moz-force-broken-image-icon=:0
+-moz-hyphens=:manual
+-moz-margin-end=:0px
+-moz-margin-start=:0px
+-moz-orient=:inline
+-moz-padding-end=:0px
+-moz-padding-start=:0px
+-moz-tab-size=:8
+-moz-text-size-adjust=:auto
+-moz-transform-origin=:622px 9px
+-moz-transform=:none
+-moz-user-input=:auto
+-moz-user-modify=:read-only
+-moz-user-select=:auto
+-moz-window-dragging=:default
+-webkit-align-content=:normal
+-webkit-align-items=:normal
+-webkit-align-self=:auto
+-webkit-animation-delay=:0s
+-webkit-animation-direction=:normal
+-webkit-animation-duration=:0s
+-webkit-animation-fill-mode=:none
+-webkit-animation-iteration-count=:1
+-webkit-animation-name=:none
+-webkit-animation-play-state=:running
+-webkit-animation-timing-function=:ease
+-webkit-animation=:none
+-webkit-appearance=:none
+-webkit-backface-visibility=:visible
+-webkit-background-clip=:border-box
+-webkit-background-origin=:padding-box
+-webkit-background-size=:auto
+-webkit-border-bottom-left-radius=:0px
+-webkit-border-bottom-right-radius=:0px
+-webkit-border-image=:none
+-webkit-border-radius=:0px
+-webkit-border-top-left-radius=:0px
+-webkit-border-top-right-radius=:0px
+-webkit-box-align=:stretch
+-webkit-box-direction=:normal
+-webkit-box-flex=:0
+-webkit-box-ordinal-group=:1
+-webkit-box-orient=:horizontal
+-webkit-box-pack=:start
+-webkit-box-shadow=:none
+-webkit-box-sizing=:content-box
+-webkit-clip-path=:none
+-webkit-filter=:none
+-webkit-flex-basis=:auto
+-webkit-flex-direction=:row
+-webkit-flex-flow=:row
+-webkit-flex-grow=:0
+-webkit-flex-shrink=:1
+-webkit-flex-wrap=:nowrap
+-webkit-flex=:0 1 auto
+-webkit-justify-content=:normal
+-webkit-line-clamp=:none
+-webkit-mask-clip=:border-box
+-webkit-mask-composite=:add
+-webkit-mask-image=:none
+-webkit-mask-origin=:border-box
+-webkit-mask-position-x=:0%
+-webkit-mask-position-y=:0%
+-webkit-mask-position=:0% 0%
+-webkit-mask-repeat=:repeat
+-webkit-mask-size=:auto
+-webkit-mask=:none
+-webkit-order=:0
+-webkit-perspective-origin=:622px 9px
+-webkit-perspective=:none
+-webkit-text-fill-color=:rgb(0, 0, 0)
+-webkit-text-security=:none
+-webkit-text-size-adjust=:auto
+-webkit-text-stroke-color=:rgb(0, 0, 0)
+-webkit-text-stroke-width=:0px
+-webkit-text-stroke=:0px rgb(0, 0, 0)
+-webkit-transform-origin=:622px 9px
+-webkit-transform-style=:flat
+-webkit-transform=:none
+-webkit-transition-delay=:0s
+-webkit-transition-duration=:0s
+-webkit-transition-property=:all
+-webkit-transition-timing-function=:ease
+-webkit-transition=:all
+-webkit-user-select=:auto
+MozAnimation=:none
+MozAnimationDelay=:0s
+MozAnimationDirection=:normal
+MozAnimationDuration=:0s
+MozAnimationFillMode=:none
+MozAnimationIterationCount=:1
+MozAnimationName=:none
+MozAnimationPlayState=:running
+MozAnimationTimingFunction=:ease
+MozAppearance=:none
+MozBorderEnd=:0px rgb(0, 0, 0)
+MozBorderEndColor=:rgb(0, 0, 0)
+MozBorderEndStyle=:none
+MozBorderEndWidth=:0px
+MozBorderImage=:none
+MozBorderStart=:0px rgb(0, 0, 0)
+MozBorderStartColor=:rgb(0, 0, 0)
+MozBorderStartStyle=:none
+MozBorderStartWidth=:0px
+MozBoxAlign=:stretch
+MozBoxDirection=:normal
+MozBoxFlex=:0
+MozBoxOrdinalGroup=:1
+MozBoxOrient=:horizontal
+MozBoxPack=:start
+MozBoxSizing=:content-box
+MozFloatEdge=:content-box
+MozFontFeatureSettings=:normal
+MozFontLanguageOverride=:normal
+MozForceBrokenImageIcon=:0
+MozHyphens=:manual
+MozMarginEnd=:0px
+MozMarginStart=:0px
+MozOrient=:inline
+MozPaddingEnd=:0px
+MozPaddingStart=:0px
+MozTabSize=:8
+MozTextSizeAdjust=:auto
+MozTransform=:none
+MozTransformOrigin=:622px 9px
+MozUserInput=:auto
+MozUserModify=:read-only
+MozUserSelect=:auto
+MozWindowDragging=:default
+WebkitAlignContent=:normal
+WebkitAlignItems=:normal
+WebkitAlignSelf=:auto
+WebkitAnimation=:none
+WebkitAnimationDelay=:0s
+WebkitAnimationDirection=:normal
+WebkitAnimationDuration=:0s
+WebkitAnimationFillMode=:none
+WebkitAnimationIterationCount=:1
+WebkitAnimationName=:none
+WebkitAnimationPlayState=:running
+WebkitAnimationTimingFunction=:ease
+WebkitAppearance=:none
+WebkitBackfaceVisibility=:visible
+WebkitBackgroundClip=:border-box
+WebkitBackgroundOrigin=:padding-box
+WebkitBackgroundSize=:auto
+WebkitBorderBottomLeftRadius=:0px
+WebkitBorderBottomRightRadius=:0px
+WebkitBorderImage=:none
+WebkitBorderRadius=:0px
+WebkitBorderTopLeftRadius=:0px
+WebkitBorderTopRightRadius=:0px
+WebkitBoxAlign=:stretch
+WebkitBoxDirection=:normal
+WebkitBoxFlex=:0
+WebkitBoxOrdinalGroup=:1
+WebkitBoxOrient=:horizontal
+WebkitBoxPack=:start
+WebkitBoxShadow=:none
+WebkitBoxSizing=:content-box
+WebkitClipPath=:none
+WebkitFilter=:none
+WebkitFlex=:0 1 auto
+WebkitFlexBasis=:auto
+WebkitFlexDirection=:row
+WebkitFlexFlow=:row
+WebkitFlexGrow=:0
+WebkitFlexShrink=:1
+WebkitFlexWrap=:nowrap
+WebkitJustifyContent=:normal
+WebkitLineClamp=:none
+WebkitMask=:none
+WebkitMaskClip=:border-box
+WebkitMaskComposite=:add
+WebkitMaskImage=:none
+WebkitMaskOrigin=:border-box
+WebkitMaskPosition=:0% 0%
+WebkitMaskPositionX=:0%
+WebkitMaskPositionY=:0%
+WebkitMaskRepeat=:repeat
+WebkitMaskSize=:auto
+WebkitOrder=:0
+WebkitPerspective=:none
+WebkitPerspectiveOrigin=:622px 9px
+WebkitTextFillColor=:rgb(0, 0, 0)
+WebkitTextSecurity=:none
+WebkitTextSizeAdjust=:auto
+WebkitTextStroke=:0px rgb(0, 0, 0)
+WebkitTextStrokeColor=:rgb(0, 0, 0)
+WebkitTextStrokeWidth=:0px
+WebkitTransform=:none
+WebkitTransformOrigin=:622px 9px
+WebkitTransformStyle=:flat
+WebkitTransition=:all
+WebkitTransitionDelay=:0s
+WebkitTransitionDuration=:0s
+WebkitTransitionProperty=:all
+WebkitTransitionTimingFunction=:ease
+WebkitUserSelect=:auto
+accent-color=:auto
+accentColor=:auto
+align-content=:normal
+align-items=:normal
+align-self=:auto
+alignContent=:normal
+alignItems=:normal
+alignSelf=:auto
+all=:
+animation-composition=:replace
+animation-delay=:0s
+animation-direction=:normal
+animation-duration=:0s
+animation-fill-mode=:none
+animation-iteration-count=:1
+animation-name=:none
+animation-play-state=:running
+animation-timing-function=:ease
+animation=:none
+animationComposition=:replace
+animationDelay=:0s
+animationDirection=:normal
+animationDuration=:0s
+animationFillMode=:none
+animationIterationCount=:1
+animationName=:none
+animationPlayState=:running
+animationTimingFunction=:ease
+appearance=:none
+aspect-ratio=:auto
+aspectRatio=:auto
+backdrop-filter=:none
+backdropFilter=:none
+backface-visibility=:visible
+backfaceVisibility=:visible
+background-attachment=:scroll
+background-blend-mode=:normal
+background-clip=:border-box
+background-color=:rgba(0, 0, 0, 0)
+background-image=:none
+background-origin=:padding-box
+background-position-x=:0%
+background-position-y=:0%
+background-position=:0% 0%
+background-repeat=:repeat
+background-size=:auto
+background=:none
+backgroundAttachment=:scroll
+backgroundBlendMode=:normal
+backgroundClip=:border-box
+backgroundColor=:rgba(0, 0, 0, 0)
+backgroundImage=:none
+backgroundOrigin=:padding-box
+backgroundPosition=:0% 0%
+backgroundPositionX=:0%
+backgroundPositionY=:0%
+backgroundRepeat=:repeat
+backgroundSize=:auto
+baseline-source=:auto
+baselineSource=:auto
+block-size=:auto
+blockSize=:auto
+border-block-color=:rgb(0, 0, 0)
+border-block-end-color=:rgb(0, 0, 0)
+border-block-end-style=:none
+border-block-end-width=:0px
+border-block-end=:0px rgb(0, 0, 0)
+border-block-start-color=:rgb(0, 0, 0)
+border-block-start-style=:none
+border-block-start-width=:0px
+border-block-start=:0px rgb(0, 0, 0)
+border-block-style=:none
+border-block-width=:0px
+border-block=:0px rgb(0, 0, 0)
+border-bottom-color=:rgb(0, 0, 0)
+border-bottom-left-radius=:0px
+border-bottom-right-radius=:0px
+border-bottom-style=:none
+border-bottom-width=:0px
+border-bottom=:0px rgb(0, 0, 0)
+border-collapse=:separate
+border-color=:rgb(0, 0, 0)
+border-end-end-radius=:0px
+border-end-start-radius=:0px
+border-image-outset=:0
+border-image-repeat=:stretch
+border-image-slice=:100%
+border-image-source=:none
+border-image-width=:1
+border-image=:none
+border-inline-color=:rgb(0, 0, 0)
+border-inline-end-color=:rgb(0, 0, 0)
+border-inline-end-style=:none
+border-inline-end-width=:0px
+border-inline-end=:0px rgb(0, 0, 0)
+border-inline-start-color=:rgb(0, 0, 0)
+border-inline-start-style=:none
+border-inline-start-width=:0px
+border-inline-start=:0px rgb(0, 0, 0)
+border-inline-style=:none
+border-inline-width=:0px
+border-inline=:0px rgb(0, 0, 0)
+border-left-color=:rgb(0, 0, 0)
+border-left-style=:none
+border-left-width=:0px
+border-left=:0px rgb(0, 0, 0)
+border-radius=:0px
+border-right-color=:rgb(0, 0, 0)
+border-right-style=:none
+border-right-width=:0px
+border-right=:0px rgb(0, 0, 0)
+border-spacing=:0px 0px
+border-start-end-radius=:0px
+border-start-start-radius=:0px
+border-style=:none
+border-top-color=:rgb(0, 0, 0)
+border-top-left-radius=:0px
+border-top-right-radius=:0px
+border-top-style=:none
+border-top-width=:0px
+border-top=:0px rgb(0, 0, 0)
+border-width=:0px
+border=:0px rgb(0, 0, 0)
+borderBlock=:0px rgb(0, 0, 0)
+borderBlockColor=:rgb(0, 0, 0)
+borderBlockEnd=:0px rgb(0, 0, 0)
+borderBlockEndColor=:rgb(0, 0, 0)
+borderBlockEndStyle=:none
+borderBlockEndWidth=:0px
+borderBlockStart=:0px rgb(0, 0, 0)
+borderBlockStartColor=:rgb(0, 0, 0)
+borderBlockStartStyle=:none
+borderBlockStartWidth=:0px
+borderBlockStyle=:none
+borderBlockWidth=:0px
+borderBottom=:0px rgb(0, 0, 0)
+borderBottomColor=:rgb(0, 0, 0)
+borderBottomLeftRadius=:0px
+borderBottomRightRadius=:0px
+borderBottomStyle=:none
+borderBottomWidth=:0px
+borderCollapse=:separate
+borderColor=:rgb(0, 0, 0)
+borderEndEndRadius=:0px
+borderEndStartRadius=:0px
+borderImage=:none
+borderImageOutset=:0
+borderImageRepeat=:stretch
+borderImageSlice=:100%
+borderImageSource=:none
+borderImageWidth=:1
+borderInline=:0px rgb(0, 0, 0)
+borderInlineColor=:rgb(0, 0, 0)
+borderInlineEnd=:0px rgb(0, 0, 0)
+borderInlineEndColor=:rgb(0, 0, 0)
+borderInlineEndStyle=:none
+borderInlineEndWidth=:0px
+borderInlineStart=:0px rgb(0, 0, 0)
+borderInlineStartColor=:rgb(0, 0, 0)
+borderInlineStartStyle=:none
+borderInlineStartWidth=:0px
+borderInlineStyle=:none
+borderInlineWidth=:0px
+borderLeft=:0px rgb(0, 0, 0)
+borderLeftColor=:rgb(0, 0, 0)
+borderLeftStyle=:none
+borderLeftWidth=:0px
+borderRadius=:0px
+borderRight=:0px rgb(0, 0, 0)
+borderRightColor=:rgb(0, 0, 0)
+borderRightStyle=:none
+borderRightWidth=:0px
+borderSpacing=:0px 0px
+borderStartEndRadius=:0px
+borderStartStartRadius=:0px
+borderStyle=:none
+borderTop=:0px rgb(0, 0, 0)
+borderTopColor=:rgb(0, 0, 0)
+borderTopLeftRadius=:0px
+borderTopRightRadius=:0px
+borderTopStyle=:none
+borderTopWidth=:0px
+borderWidth=:0px
+bottom=:auto
+box-decoration-break=:slice
+box-shadow=:none
+box-sizing=:content-box
+boxDecorationBreak=:slice
+boxShadow=:none
+boxSizing=:content-box
+break-after=:auto
+break-before=:auto
+break-inside=:auto
+breakAfter=:auto
+breakBefore=:auto
+breakInside=:auto
+caption-side=:top
+captionSide=:top
+caret-color=:rgb(0, 0, 0)
+caretColor=:rgb(0, 0, 0)
+clear=:none
+clip-path=:none
+clip-rule=:nonzero
+clip=:auto
+clipPath=:none
+clipRule=:nonzero
+color-adjust=:economy
+color-interpolation-filters=:linearrgb
+color-interpolation=:srgb
+color-scheme=:normal
+color=:rgb(0, 0, 0)
+colorAdjust=:economy
+colorInterpolation=:srgb
+colorInterpolationFilters=:linearrgb
+colorScheme=:normal
+column-count=:auto
+column-fill=:balance
+column-gap=:normal
+column-rule-color=:rgb(0, 0, 0)
+column-rule-style=:none
+column-rule-width=:0px
+column-rule=:0px none rgb(0, 0, 0)
+column-span=:none
+column-width=:auto
+columnCount=:auto
+columnFill=:balance
+columnGap=:normal
+columnRule=:0px none rgb(0, 0, 0)
+columnRuleColor=:rgb(0, 0, 0)
+columnRuleStyle=:none
+columnRuleWidth=:0px
+columnSpan=:none
+columnWidth=:auto
+columns=:auto
+contain-intrinsic-block-size=:none
+contain-intrinsic-height=:none
+contain-intrinsic-inline-size=:none
+contain-intrinsic-size=:none
+contain-intrinsic-width=:none
+contain=:none
+containIntrinsicBlockSize=:none
+containIntrinsicHeight=:none
+containIntrinsicInlineSize=:none
+containIntrinsicSize=:none
+containIntrinsicWidth=:none
+container-name=:none
+container-type=:normal
+container=:none
+containerName=:none
+containerType=:normal
+content-visibility=:visible
+content=:normal
+contentVisibility=:visible
+counter-increment=:none
+counter-reset=:none
+counter-set=:none
+counterIncrement=:none
+counterReset=:none
+counterSet=:none
+cssFloat=:none
+cssText=display: none:skipped
+cursor=:auto
+cx=:0px
+cy=:0px
+d=:none
+direction=:ltr
+display=none:none
+dominant-baseline=:auto
+dominantBaseline=:auto
+empty-cells=:show
+emptyCells=:show
+fill-opacity=:1
+fill-rule=:nonzero
+fill=:rgb(0, 0, 0)
+fillOpacity=:1
+fillRule=:nonzero
+filter=:none
+flex-basis=:auto
+flex-direction=:row
+flex-flow=:row
+flex-grow=:0
+flex-shrink=:1
+flex-wrap=:nowrap
+flex=:0 1 auto
+flexBasis=:auto
+flexDirection=:row
+flexFlow=:row
+flexGrow=:0
+flexShrink=:1
+flexWrap=:nowrap
+float=:none
+flood-color=:rgb(0, 0, 0)
+flood-opacity=:1
+floodColor=:rgb(0, 0, 0)
+floodOpacity=:1
+font-family=:serif
+font-feature-settings=:normal
+font-kerning=:auto
+font-language-override=:normal
+font-optical-sizing=:auto
+font-palette=:normal
+font-size-adjust=:none
+font-size=:16px
+font-stretch=:100%
+font-style=:normal
+font-synthesis-position=:auto
+font-synthesis-small-caps=:auto
+font-synthesis-style=:auto
+font-synthesis-weight=:auto
+font-synthesis=:weight style small-caps position
+font-variant-alternates=:normal
+font-variant-caps=:normal
+font-variant-east-asian=:normal
+font-variant-ligatures=:normal
+font-variant-numeric=:normal
+font-variant-position=:normal
+font-variant=:normal
+font-variation-settings=:normal
+font-weight=:400
+font=:16px serif
+fontFamily=:serif
+fontFeatureSettings=:normal
+fontKerning=:auto
+fontLanguageOverride=:normal
+fontOpticalSizing=:auto
+fontPalette=:normal
+fontSize=:16px
+fontSizeAdjust=:none
+fontStretch=:100%
+fontStyle=:normal
+fontSynthesis=:weight style small-caps position
+fontSynthesisPosition=:auto
+fontSynthesisSmallCaps=:auto
+fontSynthesisStyle=:auto
+fontSynthesisWeight=:auto
+fontVariant=:normal
+fontVariantAlternates=:normal
+fontVariantCaps=:normal
+fontVariantEastAsian=:normal
+fontVariantLigatures=:normal
+fontVariantNumeric=:normal
+fontVariantPosition=:normal
+fontVariationSettings=:normal
+fontWeight=:400
+forced-color-adjust=:auto
+forcedColorAdjust=:auto
+gap=:normal
+grid-area=:auto
+grid-auto-columns=:auto
+grid-auto-flow=:row
+grid-auto-rows=:auto
+grid-column-end=:auto
+grid-column-gap=:normal
+grid-column-start=:auto
+grid-column=:auto
+grid-gap=:normal
+grid-row-end=:auto
+grid-row-gap=:normal
+grid-row-start=:auto
+grid-row=:auto
+grid-template-areas=:none
+grid-template-columns=:none
+grid-template-rows=:none
+grid-template=:none
+grid=:none
+gridArea=:auto
+gridAutoColumns=:auto
+gridAutoFlow=:row
+gridAutoRows=:auto
+gridColumn=:auto
+gridColumnEnd=:auto
+gridColumnGap=:normal
+gridColumnStart=:auto
+gridGap=:normal
+gridRow=:auto
+gridRowEnd=:auto
+gridRowGap=:normal
+gridRowStart=:auto
+gridTemplate=:none
+gridTemplateAreas=:none
+gridTemplateColumns=:none
+gridTemplateRows=:none
+height=:auto
+hyphenate-character=:auto
+hyphenateCharacter=:auto
+hyphens=:manual
+image-orientation=:from-image
+image-rendering=:auto
+imageOrientation=:from-image
+imageRendering=:auto
+ime-mode=:auto
+imeMode=:auto
+inline-size=:1244px
+inlineSize=:1244px
+inset-block-end=:auto
+inset-block-start=:auto
+inset-block=:auto
+inset-inline-end=:auto
+inset-inline-start=:auto
+inset-inline=:auto
+inset=:auto
+insetBlock=:auto
+insetBlockEnd=:auto
+insetBlockStart=:auto
+insetInline=:auto
+insetInlineEnd=:auto
+insetInlineStart=:auto
+isolation=:auto
+justify-content=:normal
+justify-items=:normal
+justify-self=:auto
+justifyContent=:normal
+justifyItems=:normal
+justifySelf=:auto
+left=:auto
+letter-spacing=:normal
+letterSpacing=:normal
+lighting-color=:rgb(255, 255, 255)
+lightingColor=:rgb(255, 255, 255)
+line-break=:auto
+line-height=:normal
+lineBreak=:auto
+lineHeight=:normal
+list-style-image=:none
+list-style-position=:outside
+list-style-type=:disc
+list-style=:outside
+listStyle=:outside
+listStyleImage=:none
+listStylePosition=:outside
+listStyleType=:disc
+margin-block-end=:0px
+margin-block-start=:0px
+margin-block=:0px
+margin-bottom=:0px
+margin-inline-end=:0px
+margin-inline-start=:0px
+margin-inline=:0px
+margin-left=:0px
+margin-right=:0px
+margin-top=:0px
+margin=:0px
+marginBlock=:0px
+marginBlockEnd=:0px
+marginBlockStart=:0px
+marginBottom=:0px
+marginInline=:0px
+marginInlineEnd=:0px
+marginInlineStart=:0px
+marginLeft=:0px
+marginRight=:0px
+marginTop=:0px
+marker-end=:none
+marker-mid=:none
+marker-start=:none
+marker=:none
+markerEnd=:none
+markerMid=:none
+markerStart=:none
+mask-clip=:border-box
+mask-composite=:add
+mask-image=:none
+mask-mode=:match-source
+mask-origin=:border-box
+mask-position-x=:0%
+mask-position-y=:0%
+mask-position=:0% 0%
+mask-repeat=:repeat
+mask-size=:auto
+mask-type=:luminance
+mask=:none
+maskClip=:border-box
+maskComposite=:add
+maskImage=:none
+maskMode=:match-source
+maskOrigin=:border-box
+maskPosition=:0% 0%
+maskPositionX=:0%
+maskPositionY=:0%
+maskRepeat=:repeat
+maskSize=:auto
+maskType=:luminance
+math-depth=:0
+math-style=:normal
+mathDepth=:0
+mathStyle=:normal
+max-block-size=:none
+max-height=:none
+max-inline-size=:none
+max-width=:none
+maxBlockSize=:none
+maxHeight=:none
+maxInlineSize=:none
+maxWidth=:none
+min-block-size=:0px
+min-height=:0px
+min-inline-size=:0px
+min-width=:0px
+minBlockSize=:0px
+minHeight=:0px
+minInlineSize=:0px
+minWidth=:0px
+mix-blend-mode=:normal
+mixBlendMode=:normal
+object-fit=:fill
+object-position=:50% 50%
+objectFit=:fill
+objectPosition=:50% 50%
+offset-anchor=:auto
+offset-distance=:0px
+offset-path=:none
+offset-position=:normal
+offset-rotate=:auto
+offset=:normal
+offsetAnchor=:auto
+offsetDistance=:0px
+offsetPath=:none
+offsetPosition=:normal
+offsetRotate=:auto
+opacity=:1
+order=:0
+outline-color=:rgb(0, 0, 0)
+outline-offset=:0px
+outline-style=:none
+outline-width=:0px
+outline=:rgb(0, 0, 0) 0px
+outlineColor=:rgb(0, 0, 0)
+outlineOffset=:0px
+outlineStyle=:none
+outlineWidth=:0px
+overflow-anchor=:auto
+overflow-block=:visible
+overflow-clip-margin=:0px
+overflow-inline=:visible
+overflow-wrap=:normal
+overflow-x=:visible
+overflow-y=:visible
+overflow=:visible
+overflowAnchor=:auto
+overflowBlock=:visible
+overflowClipMargin=:0px
+overflowInline=:visible
+overflowWrap=:normal
+overflowX=:visible
+overflowY=:visible
+overscroll-behavior-block=:auto
+overscroll-behavior-inline=:auto
+overscroll-behavior-x=:auto
+overscroll-behavior-y=:auto
+overscroll-behavior=:auto
+overscrollBehavior=:auto
+overscrollBehaviorBlock=:auto
+overscrollBehaviorInline=:auto
+overscrollBehaviorX=:auto
+overscrollBehaviorY=:auto
+padding-block-end=:0px
+padding-block-start=:0px
+padding-block=:0px
+padding-bottom=:0px
+padding-inline-end=:0px
+padding-inline-start=:0px
+padding-inline=:0px
+padding-left=:0px
+padding-right=:0px
+padding-top=:0px
+padding=:0px
+paddingBlock=:0px
+paddingBlockEnd=:0px
+paddingBlockStart=:0px
+paddingBottom=:0px
+paddingInline=:0px
+paddingInlineEnd=:0px
+paddingInlineStart=:0px
+paddingLeft=:0px
+paddingRight=:0px
+paddingTop=:0px
+page-break-after=:auto
+page-break-before=:auto
+page-break-inside=:auto
+page=:auto
+pageBreakAfter=:auto
+pageBreakBefore=:auto
+pageBreakInside=:auto
+paint-order=:normal
+paintOrder=:normal
+perspective-origin=:622px 9px
+perspective=:none
+perspectiveOrigin=:622px 9px
+place-content=:normal
+place-items=:normal legacy
+place-self=:auto
+placeContent=:normal
+placeItems=:normal legacy
+placeSelf=:auto
+pointer-events=:auto
+pointerEvents=:auto
+position=:static
+print-color-adjust=:economy
+printColorAdjust=:economy
+quotes=:auto
+r=:0px
+resize=:none
+right=:auto
+rotate=:none
+row-gap=:normal
+rowGap=:normal
+ruby-align=:space-around
+ruby-position=:alternate
+rubyAlign=:space-around
+rubyPosition=:alternate
+rx=:auto
+ry=:auto
+scale=:none
+scroll-behavior=:auto
+scroll-margin-block-end=:0px
+scroll-margin-block-start=:0px
+scroll-margin-block=:0px
+scroll-margin-bottom=:0px
+scroll-margin-inline-end=:0px
+scroll-margin-inline-start=:0px
+scroll-margin-inline=:0px
+scroll-margin-left=:0px
+scroll-margin-right=:0px
+scroll-margin-top=:0px
+scroll-margin=:0px
+scroll-padding-block-end=:auto
+scroll-padding-block-start=:auto
+scroll-padding-block=:auto
+scroll-padding-bottom=:auto
+scroll-padding-inline-end=:auto
+scroll-padding-inline-start=:auto
+scroll-padding-inline=:auto
+scroll-padding-left=:auto
+scroll-padding-right=:auto
+scroll-padding-top=:auto
+scroll-padding=:auto
+scroll-snap-align=:none
+scroll-snap-stop=:normal
+scroll-snap-type=:none
+scrollBehavior=:auto
+scrollMargin=:0px
+scrollMarginBlock=:0px
+scrollMarginBlockEnd=:0px
+scrollMarginBlockStart=:0px
+scrollMarginBottom=:0px
+scrollMarginInline=:0px
+scrollMarginInlineEnd=:0px
+scrollMarginInlineStart=:0px
+scrollMarginLeft=:0px
+scrollMarginRight=:0px
+scrollMarginTop=:0px
+scrollPadding=:auto
+scrollPaddingBlock=:auto
+scrollPaddingBlockEnd=:auto
+scrollPaddingBlockStart=:auto
+scrollPaddingBottom=:auto
+scrollPaddingInline=:auto
+scrollPaddingInlineEnd=:auto
+scrollPaddingInlineStart=:auto
+scrollPaddingLeft=:auto
+scrollPaddingRight=:auto
+scrollPaddingTop=:auto
+scrollSnapAlign=:none
+scrollSnapStop=:normal
+scrollSnapType=:none
+scrollbar-color=:auto
+scrollbar-gutter=:auto
+scrollbar-width=:auto
+scrollbarColor=:auto
+scrollbarGutter=:auto
+scrollbarWidth=:auto
+shape-image-threshold=:0
+shape-margin=:0px
+shape-outside=:none
+shape-rendering=:auto
+shapeImageThreshold=:0
+shapeMargin=:0px
+shapeOutside=:none
+shapeRendering=:auto
+stop-color=:rgb(0, 0, 0)
+stop-opacity=:1
+stopColor=:rgb(0, 0, 0)
+stopOpacity=:1
+stroke-dasharray=:none
+stroke-dashoffset=:0px
+stroke-linecap=:butt
+stroke-linejoin=:miter
+stroke-miterlimit=:4
+stroke-opacity=:1
+stroke-width=:1px
+stroke=:none
+strokeDasharray=:none
+strokeDashoffset=:0px
+strokeLinecap=:butt
+strokeLinejoin=:miter
+strokeMiterlimit=:4
+strokeOpacity=:1
+strokeWidth=:1px
+tab-size=:8
+tabSize=:8
+table-layout=:auto
+tableLayout=:auto
+text-align-last=:auto
+text-align=:start
+text-anchor=:start
+text-combine-upright=:none
+text-decoration-color=:rgb(0, 0, 0)
+text-decoration-line=:none
+text-decoration-skip-ink=:auto
+text-decoration-style=:solid
+text-decoration-thickness=:auto
+text-decoration=:rgb(0, 0, 0)
+text-emphasis-color=:rgb(0, 0, 0)
+text-emphasis-position=:over
+text-emphasis-style=:none
+text-emphasis=:none rgb(0, 0, 0)
+text-indent=:0px
+text-justify=:auto
+text-orientation=:mixed
+text-overflow=:clip
+text-rendering=:auto
+text-shadow=:none
+text-transform=:none
+text-underline-offset=:auto
+text-underline-position=:auto
+text-wrap-mode=:wrap
+text-wrap-style=:auto
+text-wrap=:wrap
+textAlign=:start
+textAlignLast=:auto
+textAnchor=:start
+textCombineUpright=:none
+textDecoration=:rgb(0, 0, 0)
+textDecorationColor=:rgb(0, 0, 0)
+textDecorationLine=:none
+textDecorationSkipInk=:auto
+textDecorationStyle=:solid
+textDecorationThickness=:auto
+textEmphasis=:none rgb(0, 0, 0)
+textEmphasisColor=:rgb(0, 0, 0)
+textEmphasisPosition=:over
+textEmphasisStyle=:none
+textIndent=:0px
+textJustify=:auto
+textOrientation=:mixed
+textOverflow=:clip
+textRendering=:auto
+textShadow=:none
+textTransform=:none
+textUnderlineOffset=:auto
+textUnderlinePosition=:auto
+textWrap=:wrap
+textWrapMode=:wrap
+textWrapStyle=:auto
+top=:auto
+touch-action=:auto
+touchAction=:auto
+transform-box=:view-box
+transform-origin=:622px 9px
+transform-style=:flat
+transform=:none
+transformBox=:view-box
+transformOrigin=:622px 9px
+transformStyle=:flat
+transition-delay=:0s
+transition-duration=:0s
+transition-property=:all
+transition-timing-function=:ease
+transition=:all
+transitionDelay=:0s
+transitionDuration=:0s
+transitionProperty=:all
+transitionTimingFunction=:ease
+translate=:none
+unicode-bidi=:isolate
+unicodeBidi=:isolate
+user-select=:auto
+userSelect=:auto
+vector-effect=:none
+vectorEffect=:none
+vertical-align=:baseline
+verticalAlign=:baseline
+visibility=:visible
+webkitAlignContent=:normal
+webkitAlignItems=:normal
+webkitAlignSelf=:auto
+webkitAnimation=:none
+webkitAnimationDelay=:0s
+webkitAnimationDirection=:normal
+webkitAnimationDuration=:0s
+webkitAnimationFillMode=:none
+webkitAnimationIterationCount=:1
+webkitAnimationName=:none
+webkitAnimationPlayState=:running
+webkitAnimationTimingFunction=:ease
+webkitAppearance=:none
+webkitBackfaceVisibility=:visible
+webkitBackgroundClip=:border-box
+webkitBackgroundOrigin=:padding-box
+webkitBackgroundSize=:auto
+webkitBorderBottomLeftRadius=:0px
+webkitBorderBottomRightRadius=:0px
+webkitBorderImage=:none
+webkitBorderRadius=:0px
+webkitBorderTopLeftRadius=:0px
+webkitBorderTopRightRadius=:0px
+webkitBoxAlign=:stretch
+webkitBoxDirection=:normal
+webkitBoxFlex=:0
+webkitBoxOrdinalGroup=:1
+webkitBoxOrient=:horizontal
+webkitBoxPack=:start
+webkitBoxShadow=:none
+webkitBoxSizing=:content-box
+webkitClipPath=:none
+webkitFilter=:none
+webkitFlex=:0 1 auto
+webkitFlexBasis=:auto
+webkitFlexDirection=:row
+webkitFlexFlow=:row
+webkitFlexGrow=:0
+webkitFlexShrink=:1
+webkitFlexWrap=:nowrap
+webkitJustifyContent=:normal
+webkitLineClamp=:none
+webkitMask=:none
+webkitMaskClip=:border-box
+webkitMaskComposite=:add
+webkitMaskImage=:none
+webkitMaskOrigin=:border-box
+webkitMaskPosition=:0% 0%
+webkitMaskPositionX=:0%
+webkitMaskPositionY=:0%
+webkitMaskRepeat=:repeat
+webkitMaskSize=:auto
+webkitOrder=:0
+webkitPerspective=:none
+webkitPerspectiveOrigin=:622px 9px
+webkitTextFillColor=:rgb(0, 0, 0)
+webkitTextSecurity=:none
+webkitTextSizeAdjust=:auto
+webkitTextStroke=:0px rgb(0, 0, 0)
+webkitTextStrokeColor=:rgb(0, 0, 0)
+webkitTextStrokeWidth=:0px
+webkitTransform=:none
+webkitTransformOrigin=:622px 9px
+webkitTransformStyle=:flat
+webkitTransition=:all
+webkitTransitionDelay=:0s
+webkitTransitionDuration=:0s
+webkitTransitionProperty=:all
+webkitTransitionTimingFunction=:ease
+webkitUserSelect=:auto
+white-space-collapse=:collapse
+white-space=:normal
+whiteSpace=:normal
+whiteSpaceCollapse=:collapse
+width=:auto
+will-change=:auto
+willChange=:auto
+word-break=:normal
+word-spacing=:0px
+word-wrap=:normal
+wordBreak=:normal
+wordSpacing=:0px
+wordWrap=:normal
+writing-mode=:horizontal-tb
+writingMode=:horizontal-tb
+x=:0px
+y=:0px
+z-index=:auto
+zIndex=:auto
+zoom=:1
\ No newline at end of file
diff --git a/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.FF_NYI.txt b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.FF_NYI.txt
new file mode 100644
index 00000000000..96286cf537b
--- /dev/null
+++ b/src/test/resources/org/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.displayNone.FF_NYI.txt
@@ -0,0 +1,1112 @@
+-moz-animation-delay=:0s
+-moz-animation-direction=:normal
+-moz-animation-duration=:0s
+-moz-animation-fill-mode=:none
+-moz-animation-iteration-count=:1
+-moz-animation-name=:none
+-moz-animation-play-state=:running
+-moz-animation-timing-function=:ease
+-moz-animation=:none
+-moz-appearance=:none
+-moz-backface-visibility=:visible
+-moz-border-end-color=:rgb(0, 0, 0)
+-moz-border-end-style=:none
+-moz-border-end-width=:0px
+-moz-border-end=:0px rgb(0, 0, 0)
+-moz-border-image=:none
+-moz-border-start-color=:rgb(0, 0, 0)
+-moz-border-start-style=:none
+-moz-border-start-width=:0px
+-moz-border-start=:0px rgb(0, 0, 0)
+-moz-box-align=:stretch
+-moz-box-direction=:normal
+-moz-box-flex=:0
+-moz-box-ordinal-group=:1
+-moz-box-orient=:horizontal
+-moz-box-pack=:start
+-moz-box-sizing=:content-box
+-moz-float-edge=:content-box
+-moz-font-feature-settings=:normal
+-moz-font-language-override=:normal
+-moz-force-broken-image-icon=:0
+-moz-hyphens=:manual
+-moz-margin-end=:0px
+-moz-margin-start=:0px
+-moz-orient=:inline
+-moz-padding-end=:0px
+-moz-padding-start=:0px
+-moz-perspective-origin=:620px 9px
+-moz-perspective=:none
+-moz-tab-size=:8
+-moz-text-size-adjust=:auto
+-moz-transform-origin=:620px 9px
+-moz-transform-style=:flat
+-moz-transform=:none
+-moz-user-select=:auto
+-moz-window-dragging=:default
+-webkit-align-content=:normal
+-webkit-align-items=:normal
+-webkit-align-self=:auto
+-webkit-animation-delay=:0s
+-webkit-animation-direction=:normal
+-webkit-animation-duration=:0s
+-webkit-animation-fill-mode=:none
+-webkit-animation-iteration-count=:1
+-webkit-animation-name=:none
+-webkit-animation-play-state=:running
+-webkit-animation-timing-function=:ease
+-webkit-animation=:none
+-webkit-appearance=:none
+-webkit-backface-visibility=:visible
+-webkit-background-clip=:border-box
+-webkit-background-origin=:padding-box
+-webkit-background-size=:auto
+-webkit-border-bottom-left-radius=:0px
+-webkit-border-bottom-right-radius=:0px
+-webkit-border-image=:none
+-webkit-border-radius=:0px
+-webkit-border-top-left-radius=:0px
+-webkit-border-top-right-radius=:0px
+-webkit-box-align=:stretch
+-webkit-box-direction=:normal
+-webkit-box-flex=:0
+-webkit-box-ordinal-group=:1
+-webkit-box-orient=:horizontal
+-webkit-box-pack=:start
+-webkit-box-shadow=:none
+-webkit-box-sizing=:content-box
+-webkit-clip-path=:none
+-webkit-filter=:none
+-webkit-flex-basis=:auto
+-webkit-flex-direction=:row
+-webkit-flex-flow=:row
+-webkit-flex-grow=:0
+-webkit-flex-shrink=:1
+-webkit-flex-wrap=:nowrap
+-webkit-flex=:0 1 auto
+-webkit-font-feature-settings=:normal
+-webkit-justify-content=:normal
+-webkit-line-clamp=:none
+-webkit-mask-clip=:border-box
+-webkit-mask-composite=:add
+-webkit-mask-image=:none
+-webkit-mask-origin=:border-box
+-webkit-mask-position-x=:0%
+-webkit-mask-position-y=:0%
+-webkit-mask-position=:0% 0%
+-webkit-mask-repeat=:repeat
+-webkit-mask-size=:auto
+-webkit-mask=:none
+-webkit-order=:0
+-webkit-perspective-origin=:620px 9px
+-webkit-perspective=:none
+-webkit-text-fill-color=:rgb(0, 0, 0)
+-webkit-text-security=:none
+-webkit-text-size-adjust=:auto
+-webkit-text-stroke-color=:rgb(0, 0, 0)
+-webkit-text-stroke-width=:0px
+-webkit-text-stroke=:0px rgb(0, 0, 0)
+-webkit-transform-origin=:620px 9px
+-webkit-transform-style=:flat
+-webkit-transform=:none
+-webkit-transition-delay=:0s
+-webkit-transition-duration=:0s
+-webkit-transition-property=:all
+-webkit-transition-timing-function=:ease
+-webkit-transition=:all
+-webkit-user-select=:auto
+MozAnimation=:none
+MozAnimationDelay=:0s
+MozAnimationDirection=:normal
+MozAnimationDuration=:0s
+MozAnimationFillMode=:none
+MozAnimationIterationCount=:1
+MozAnimationName=:none
+MozAnimationPlayState=:running
+MozAnimationTimingFunction=:ease
+MozAppearance=:none
+MozBackfaceVisibility=:visible
+MozBorderEnd=:0px rgb(0, 0, 0)
+MozBorderEndColor=:rgb(0, 0, 0)
+MozBorderEndStyle=:none
+MozBorderEndWidth=:0px
+MozBorderImage=:none
+MozBorderStart=:0px rgb(0, 0, 0)
+MozBorderStartColor=:rgb(0, 0, 0)
+MozBorderStartStyle=:none
+MozBorderStartWidth=:0px
+MozBoxAlign=:stretch
+MozBoxDirection=:normal
+MozBoxFlex=:0
+MozBoxOrdinalGroup=:1
+MozBoxOrient=:horizontal
+MozBoxPack=:start
+MozBoxSizing=:content-box
+MozFloatEdge=:content-box
+MozFontFeatureSettings=:normal
+MozFontLanguageOverride=:normal
+MozForceBrokenImageIcon=:0
+MozHyphens=:manual
+MozMarginEnd=:0px
+MozMarginStart=:0px
+MozOrient=:inline
+MozPaddingEnd=:0px
+MozPaddingStart=:0px
+MozPerspective=:none
+MozPerspectiveOrigin=:620px 9px
+MozTabSize=:8
+MozTextSizeAdjust=:auto
+MozTransform=:none
+MozTransformOrigin=:620px 9px
+MozTransformStyle=:flat
+MozUserSelect=:auto
+MozWindowDragging=:default
+WebkitAlignContent=:normal
+WebkitAlignItems=:normal
+WebkitAlignSelf=:auto
+WebkitAnimation=:none
+WebkitAnimationDelay=:0s
+WebkitAnimationDirection=:normal
+WebkitAnimationDuration=:0s
+WebkitAnimationFillMode=:none
+WebkitAnimationIterationCount=:1
+WebkitAnimationName=:none
+WebkitAnimationPlayState=:running
+WebkitAnimationTimingFunction=:ease
+WebkitAppearance=:none
+WebkitBackfaceVisibility=:visible
+WebkitBackgroundClip=:border-box
+WebkitBackgroundOrigin=:padding-box
+WebkitBackgroundSize=:auto
+WebkitBorderBottomLeftRadius=:0px
+WebkitBorderBottomRightRadius=:0px
+WebkitBorderImage=:none
+WebkitBorderRadius=:0px
+WebkitBorderTopLeftRadius=:0px
+WebkitBorderTopRightRadius=:0px
+WebkitBoxAlign=:stretch
+WebkitBoxDirection=:normal
+WebkitBoxFlex=:0
+WebkitBoxOrdinalGroup=:1
+WebkitBoxOrient=:horizontal
+WebkitBoxPack=:start
+WebkitBoxShadow=:none
+WebkitBoxSizing=:content-box
+WebkitClipPath=:none
+WebkitFilter=:none
+WebkitFlex=:0 1 auto
+WebkitFlexBasis=:auto
+WebkitFlexDirection=:row
+WebkitFlexFlow=:row
+WebkitFlexGrow=:0
+WebkitFlexShrink=:1
+WebkitFlexWrap=:nowrap
+WebkitFontFeatureSettings=:normal
+WebkitJustifyContent=:normal
+WebkitLineClamp=:none
+WebkitMask=:none
+WebkitMaskClip=:border-box
+WebkitMaskComposite=:add
+WebkitMaskImage=:none
+WebkitMaskOrigin=:border-box
+WebkitMaskPosition=:0% 0%
+WebkitMaskPositionX=:0%
+WebkitMaskPositionY=:0%
+WebkitMaskRepeat=:repeat
+WebkitMaskSize=:auto
+WebkitOrder=:0
+WebkitPerspective=:none
+WebkitPerspectiveOrigin=:620px 9px
+WebkitTextFillColor=:rgb(0, 0, 0)
+WebkitTextSecurity=:none
+WebkitTextSizeAdjust=:auto
+WebkitTextStroke=:0px rgb(0, 0, 0)
+WebkitTextStrokeColor=:rgb(0, 0, 0)
+WebkitTextStrokeWidth=:0px
+WebkitTransform=:none
+WebkitTransformOrigin=:620px 9px
+WebkitTransformStyle=:flat
+WebkitTransition=:all
+WebkitTransitionDelay=:0s
+WebkitTransitionDuration=:0s
+WebkitTransitionProperty=:all
+WebkitTransitionTimingFunction=:ease
+WebkitUserSelect=:auto
+accent-color=:auto
+accentColor=:auto
+align-content=:normal
+align-items=:normal
+align-self=:auto
+alignContent=:normal
+alignItems=:normal
+alignSelf=:auto
+all=:
+animation-composition=:replace
+animation-delay=:0s
+animation-direction=:normal
+animation-duration=:0s
+animation-fill-mode=:none
+animation-iteration-count=:1
+animation-name=:none
+animation-play-state=:running
+animation-timing-function=:ease
+animation=:none
+animationComposition=:replace
+animationDelay=:0s
+animationDirection=:normal
+animationDuration=:0s
+animationFillMode=:none
+animationIterationCount=:1
+animationName=:none
+animationPlayState=:running
+animationTimingFunction=:ease
+appearance=:none
+aspect-ratio=:auto
+aspectRatio=:auto
+backdrop-filter=:none
+backdropFilter=:none
+backface-visibility=:visible
+backfaceVisibility=:visible
+background-attachment=:scroll
+background-blend-mode=:normal
+background-clip=:border-box
+background-color=:rgba(0, 0, 0, 0)
+background-image=:none
+background-origin=:padding-box
+background-position-x=:0%
+background-position-y=:0%
+background-position=:0% 0%
+background-repeat=:repeat
+background-size=:auto
+background=:none
+backgroundAttachment=:scroll
+backgroundBlendMode=:normal
+backgroundClip=:border-box
+backgroundColor=:rgba(0, 0, 0, 0)
+backgroundImage=:none
+backgroundOrigin=:padding-box
+backgroundPosition=:0% 0%
+backgroundPositionX=:0%
+backgroundPositionY=:0%
+backgroundRepeat=:repeat
+backgroundSize=:auto
+baseline-source=:auto
+baselineSource=:auto
+block-size=:auto
+blockSize=:auto
+border-block-color=:rgb(0, 0, 0)
+border-block-end-color=:rgb(0, 0, 0)
+border-block-end-style=:none
+border-block-end-width=:0px
+border-block-end=:0px rgb(0, 0, 0)
+border-block-start-color=:rgb(0, 0, 0)
+border-block-start-style=:none
+border-block-start-width=:0px
+border-block-start=:0px rgb(0, 0, 0)
+border-block-style=:none
+border-block-width=:0px
+border-block=:0px rgb(0, 0, 0)
+border-bottom-color=:rgb(0, 0, 0)
+border-bottom-left-radius=:0px
+border-bottom-right-radius=:0px
+border-bottom-style=:none
+border-bottom-width=:0px
+border-bottom=:0px rgb(0, 0, 0)
+border-collapse=:separate
+border-color=:rgb(0, 0, 0)
+border-end-end-radius=:0px
+border-end-start-radius=:0px
+border-image-outset=:0
+border-image-repeat=:stretch
+border-image-slice=:100%
+border-image-source=:none
+border-image-width=:1
+border-image=:none
+border-inline-color=:rgb(0, 0, 0)
+border-inline-end-color=:rgb(0, 0, 0)
+border-inline-end-style=:none
+border-inline-end-width=:0px
+border-inline-end=:0px rgb(0, 0, 0)
+border-inline-start-color=:rgb(0, 0, 0)
+border-inline-start-style=:none
+border-inline-start-width=:0px
+border-inline-start=:0px rgb(0, 0, 0)
+border-inline-style=:none
+border-inline-width=:0px
+border-inline=:0px rgb(0, 0, 0)
+border-left-color=:rgb(0, 0, 0)
+border-left-style=:none
+border-left-width=:0px
+border-left=:0px rgb(0, 0, 0)
+border-radius=:0px
+border-right-color=:rgb(0, 0, 0)
+border-right-style=:none
+border-right-width=:0px
+border-right=:0px rgb(0, 0, 0)
+border-spacing=:0px
+border-start-end-radius=:0px
+border-start-start-radius=:0px
+border-style=:none
+border-top-color=:rgb(0, 0, 0)
+border-top-left-radius=:0px
+border-top-right-radius=:0px
+border-top-style=:none
+border-top-width=:0px
+border-top=:0px rgb(0, 0, 0)
+border-width=:0px
+border=:0px rgb(0, 0, 0)
+borderBlock=:0px rgb(0, 0, 0)
+borderBlockColor=:rgb(0, 0, 0)
+borderBlockEnd=:0px rgb(0, 0, 0)
+borderBlockEndColor=:rgb(0, 0, 0)
+borderBlockEndStyle=:none
+borderBlockEndWidth=:0px
+borderBlockStart=:0px rgb(0, 0, 0)
+borderBlockStartColor=:rgb(0, 0, 0)
+borderBlockStartStyle=:none
+borderBlockStartWidth=:0px
+borderBlockStyle=:none
+borderBlockWidth=:0px
+borderBottom=:0px rgb(0, 0, 0)
+borderBottomColor=:rgb(0, 0, 0)
+borderBottomLeftRadius=:0px
+borderBottomRightRadius=:0px
+borderBottomStyle=:none
+borderBottomWidth=:0px
+borderCollapse=:separate
+borderColor=:rgb(0, 0, 0)
+borderEndEndRadius=:0px
+borderEndStartRadius=:0px
+borderImage=:none
+borderImageOutset=:0
+borderImageRepeat=:stretch
+borderImageSlice=:100%
+borderImageSource=:none
+borderImageWidth=:1
+borderInline=:0px rgb(0, 0, 0)
+borderInlineColor=:rgb(0, 0, 0)
+borderInlineEnd=:0px rgb(0, 0, 0)
+borderInlineEndColor=:rgb(0, 0, 0)
+borderInlineEndStyle=:none
+borderInlineEndWidth=:0px
+borderInlineStart=:0px rgb(0, 0, 0)
+borderInlineStartColor=:rgb(0, 0, 0)
+borderInlineStartStyle=:none
+borderInlineStartWidth=:0px
+borderInlineStyle=:none
+borderInlineWidth=:0px
+borderLeft=:0px rgb(0, 0, 0)
+borderLeftColor=:rgb(0, 0, 0)
+borderLeftStyle=:none
+borderLeftWidth=:0px
+borderRadius=:0px
+borderRight=:0px rgb(0, 0, 0)
+borderRightColor=:rgb(0, 0, 0)
+borderRightStyle=:none
+borderRightWidth=:0px
+borderSpacing=:0px
+borderStartEndRadius=:0px
+borderStartStartRadius=:0px
+borderStyle=:none
+borderTop=:0px rgb(0, 0, 0)
+borderTopColor=:rgb(0, 0, 0)
+borderTopLeftRadius=:0px
+borderTopRightRadius=:0px
+borderTopStyle=:none
+borderTopWidth=:0px
+borderWidth=:0px
+bottom=:auto
+box-decoration-break=:slice
+box-shadow=:none
+box-sizing=:content-box
+boxDecorationBreak=:slice
+boxShadow=:none
+boxSizing=:content-box
+break-after=:auto
+break-before=:auto
+break-inside=:auto
+breakAfter=:auto
+breakBefore=:auto
+breakInside=:auto
+caption-side=:top
+captionSide=:top
+caret-color=:rgb(0, 0, 0)
+caretColor=:rgb(0, 0, 0)
+clear=:none
+clip-path=:none
+clip-rule=:nonzero
+clip=:auto
+clipPath=:none
+clipRule=:nonzero
+color-adjust=:economy
+color-interpolation-filters=:linearrgb
+color-interpolation=:srgb
+color-scheme=:normal
+color=:rgb(0, 0, 0)
+colorAdjust=:economy
+colorInterpolation=:srgb
+colorInterpolationFilters=:linearrgb
+colorScheme=:normal
+column-count=:auto
+column-fill=:balance
+column-gap=:normal
+column-rule-color=:rgb(0, 0, 0)
+column-rule-style=:none
+column-rule-width=:0px
+column-rule=:0px none rgb(0, 0, 0)
+column-span=:none
+column-width=:auto
+columnCount=:auto
+columnFill=:balance
+columnGap=:normal
+columnRule=:0px none rgb(0, 0, 0)
+columnRuleColor=:rgb(0, 0, 0)
+columnRuleStyle=:none
+columnRuleWidth=:0px
+columnSpan=:none
+columnWidth=:auto
+columns=:auto
+contain-intrinsic-block-size=:none
+contain-intrinsic-height=:none
+contain-intrinsic-inline-size=:none
+contain-intrinsic-size=:none
+contain-intrinsic-width=:none
+contain=:none
+containIntrinsicBlockSize=:none
+containIntrinsicHeight=:none
+containIntrinsicInlineSize=:none
+containIntrinsicSize=:none
+containIntrinsicWidth=:none
+container-name=:none
+container-type=:normal
+container=:none
+containerName=:none
+containerType=:normal
+content-visibility=:visible
+content=:normal
+contentVisibility=:visible
+counter-increment=:none
+counter-reset=:none
+counter-set=:none
+counterIncrement=:none
+counterReset=:none
+counterSet=:none
+cssFloat=:none
+cssText=display: none:skipped
+cursor=:auto
+cx=:0px
+cy=:0px
+d=:none
+direction=:ltr
+display=none:none
+dominant-baseline=:auto
+dominantBaseline=:auto
+empty-cells=:show
+emptyCells=:show
+fill-opacity=:1
+fill-rule=:nonzero
+fill=:rgb(0, 0, 0)
+fillOpacity=:1
+fillRule=:nonzero
+filter=:none
+flex-basis=:auto
+flex-direction=:row
+flex-flow=:row
+flex-grow=:0
+flex-shrink=:1
+flex-wrap=:nowrap
+flex=:0 1 auto
+flexBasis=:auto
+flexDirection=:row
+flexFlow=:row
+flexGrow=:0
+flexShrink=:1
+flexWrap=:nowrap
+float=:none
+flood-color=:rgb(0, 0, 0)
+flood-opacity=:1
+floodColor=:rgb(0, 0, 0)
+floodOpacity=:1
+font-family=:serif
+font-feature-settings=:normal
+font-kerning=:auto
+font-language-override=:normal
+font-optical-sizing=:auto
+font-palette=:normal
+font-size-adjust=:none
+font-size=:16px
+font-stretch=:100%
+font-style=:normal
+font-synthesis-position=:auto
+font-synthesis-small-caps=:auto
+font-synthesis-style=:auto
+font-synthesis-weight=:auto
+font-synthesis=:weight style small-caps position
+font-variant-alternates=:normal
+font-variant-caps=:normal
+font-variant-east-asian=:normal
+font-variant-ligatures=:normal
+font-variant-numeric=:normal
+font-variant-position=:normal
+font-variant=:normal
+font-variation-settings=:normal
+font-weight=:400
+font=:16px serif
+fontFamily=:serif
+fontFeatureSettings=:normal
+fontKerning=:auto
+fontLanguageOverride=:normal
+fontOpticalSizing=:auto
+fontPalette=:normal
+fontSize=:16px
+fontSizeAdjust=:none
+fontStretch=:100%
+fontStyle=:normal
+fontSynthesis=:weight style small-caps position
+fontSynthesisPosition=:auto
+fontSynthesisSmallCaps=:auto
+fontSynthesisStyle=:auto
+fontSynthesisWeight=:auto
+fontVariant=:normal
+fontVariantAlternates=:normal
+fontVariantCaps=:normal
+fontVariantEastAsian=:normal
+fontVariantLigatures=:normal
+fontVariantNumeric=:normal
+fontVariantPosition=:normal
+fontVariationSettings=:normal
+fontWeight=:400
+forced-color-adjust=:auto
+forcedColorAdjust=:auto
+gap=:normal
+grid-area=:auto
+grid-auto-columns=:auto
+grid-auto-flow=:row
+grid-auto-rows=:auto
+grid-column-end=:auto
+grid-column-gap=:normal
+grid-column-start=:auto
+grid-column=:auto
+grid-gap=:normal
+grid-row-end=:auto
+grid-row-gap=:normal
+grid-row-start=:auto
+grid-row=:auto
+grid-template-areas=:none
+grid-template-columns=:none
+grid-template-rows=:none
+grid-template=:none
+grid=:none
+gridArea=:auto
+gridAutoColumns=:auto
+gridAutoFlow=:row
+gridAutoRows=:auto
+gridColumn=:auto
+gridColumnEnd=:auto
+gridColumnGap=:normal
+gridColumnStart=:auto
+gridGap=:normal
+gridRow=:auto
+gridRowEnd=:auto
+gridRowGap=:normal
+gridRowStart=:auto
+gridTemplate=:none
+gridTemplateAreas=:none
+gridTemplateColumns=:none
+gridTemplateRows=:none
+height=:auto
+hyphenate-character=:auto
+hyphenate-limit-chars=:auto
+hyphenateCharacter=:auto
+hyphenateLimitChars=:auto
+hyphens=:manual
+image-orientation=:from-image
+image-rendering=:auto
+imageOrientation=:from-image
+imageRendering=:auto
+ime-mode=:auto
+imeMode=:auto
+inline-size=:1240px
+inlineSize=:1240px
+inset-block-end=:auto
+inset-block-start=:auto
+inset-block=:auto
+inset-inline-end=:auto
+inset-inline-start=:auto
+inset-inline=:auto
+inset=:auto
+insetBlock=:auto
+insetBlockEnd=:auto
+insetBlockStart=:auto
+insetInline=:auto
+insetInlineEnd=:auto
+insetInlineStart=:auto
+isolation=:auto
+justify-content=:normal
+justify-items=:normal
+justify-self=:auto
+justifyContent=:normal
+justifyItems=:normal
+justifySelf=:auto
+left=:auto
+letter-spacing=:normal
+letterSpacing=:normal
+lighting-color=:rgb(255, 255, 255)
+lightingColor=:rgb(255, 255, 255)
+line-break=:auto
+line-height=:normal
+lineBreak=:auto
+lineHeight=:normal
+list-style-image=:none
+list-style-position=:outside
+list-style-type=:disc
+list-style=:outside
+listStyle=:outside
+listStyleImage=:none
+listStylePosition=:outside
+listStyleType=:disc
+margin-block-end=:0px
+margin-block-start=:0px
+margin-block=:0px
+margin-bottom=:0px
+margin-inline-end=:0px
+margin-inline-start=:0px
+margin-inline=:0px
+margin-left=:0px
+margin-right=:0px
+margin-top=:0px
+margin=:0px
+marginBlock=:0px
+marginBlockEnd=:0px
+marginBlockStart=:0px
+marginBottom=:0px
+marginInline=:0px
+marginInlineEnd=:0px
+marginInlineStart=:0px
+marginLeft=:0px
+marginRight=:0px
+marginTop=:0px
+marker-end=:none
+marker-mid=:none
+marker-start=:none
+marker=:none
+markerEnd=:none
+markerMid=:none
+markerStart=:none
+mask-clip=:border-box
+mask-composite=:add
+mask-image=:none
+mask-mode=:match-source
+mask-origin=:border-box
+mask-position-x=:0%
+mask-position-y=:0%
+mask-position=:0% 0%
+mask-repeat=:repeat
+mask-size=:auto
+mask-type=:luminance
+mask=:none
+maskClip=:border-box
+maskComposite=:add
+maskImage=:none
+maskMode=:match-source
+maskOrigin=:border-box
+maskPosition=:0% 0%
+maskPositionX=:0%
+maskPositionY=:0%
+maskRepeat=:repeat
+maskSize=:auto
+maskType=:luminance
+math-depth=:0
+math-style=:normal
+mathDepth=:0
+mathStyle=:normal
+max-block-size=:none
+max-height=:none
+max-inline-size=:none
+max-width=:none
+maxBlockSize=:none
+maxHeight=:none
+maxInlineSize=:none
+maxWidth=:none
+min-block-size=:0px
+min-height=:0px
+min-inline-size=:0px
+min-width=:0px
+minBlockSize=:0px
+minHeight=:0px
+minInlineSize=:0px
+minWidth=:0px
+mix-blend-mode=:normal
+mixBlendMode=:normal
+object-fit=:fill
+object-position=:50% 50%
+objectFit=:fill
+objectPosition=:50% 50%
+offset-anchor=:auto
+offset-distance=:0px
+offset-path=:none
+offset-position=:normal
+offset-rotate=:auto
+offset=:normal
+offsetAnchor=:auto
+offsetDistance=:0px
+offsetPath=:none
+offsetPosition=:normal
+offsetRotate=:auto
+opacity=:1
+order=:0
+outline-color=:rgb(0, 0, 0)
+outline-offset=:0px
+outline-style=:none
+outline-width=:0px
+outline=:rgb(0, 0, 0) 0px
+outlineColor=:rgb(0, 0, 0)
+outlineOffset=:0px
+outlineStyle=:none
+outlineWidth=:0px
+overflow-anchor=:auto
+overflow-block=:visible
+overflow-clip-margin=:0px
+overflow-inline=:visible
+overflow-wrap=:normal
+overflow-x=:visible
+overflow-y=:visible
+overflow=:visible
+overflowAnchor=:auto
+overflowBlock=:visible
+overflowClipMargin=:0px
+overflowInline=:visible
+overflowWrap=:normal
+overflowX=:visible
+overflowY=:visible
+overscroll-behavior-block=:auto
+overscroll-behavior-inline=:auto
+overscroll-behavior-x=:auto
+overscroll-behavior-y=:auto
+overscroll-behavior=:auto
+overscrollBehavior=:auto
+overscrollBehaviorBlock=:auto
+overscrollBehaviorInline=:auto
+overscrollBehaviorX=:auto
+overscrollBehaviorY=:auto
+padding-block-end=:0px
+padding-block-start=:0px
+padding-block=:0px
+padding-bottom=:0px
+padding-inline-end=:0px
+padding-inline-start=:0px
+padding-inline=:0px
+padding-left=:0px
+padding-right=:0px
+padding-top=:0px
+padding=:0px
+paddingBlock=:0px
+paddingBlockEnd=:0px
+paddingBlockStart=:0px
+paddingBottom=:0px
+paddingInline=:0px
+paddingInlineEnd=:0px
+paddingInlineStart=:0px
+paddingLeft=:0px
+paddingRight=:0px
+paddingTop=:0px
+page-break-after=:auto
+page-break-before=:auto
+page-break-inside=:auto
+page=:auto
+pageBreakAfter=:auto
+pageBreakBefore=:auto
+pageBreakInside=:auto
+paint-order=:normal
+paintOrder=:normal
+perspective-origin=:620px 9px
+perspective=:none
+perspectiveOrigin=:620px 9px
+place-content=:normal
+place-items=:normal legacy
+place-self=:auto
+placeContent=:normal
+placeItems=:normal legacy
+placeSelf=:auto
+pointer-events=:auto
+pointerEvents=:auto
+position=:static
+print-color-adjust=:economy
+printColorAdjust=:economy
+quotes=:auto
+r=:0px
+resize=:none
+right=:auto
+rotate=:none
+row-gap=:normal
+rowGap=:normal
+ruby-align=:space-around
+ruby-position=:alternate
+rubyAlign=:space-around
+rubyPosition=:alternate
+rx=:auto
+ry=:auto
+scale=:none
+scroll-behavior=:auto
+scroll-margin-block-end=:0px
+scroll-margin-block-start=:0px
+scroll-margin-block=:0px
+scroll-margin-bottom=:0px
+scroll-margin-inline-end=:0px
+scroll-margin-inline-start=:0px
+scroll-margin-inline=:0px
+scroll-margin-left=:0px
+scroll-margin-right=:0px
+scroll-margin-top=:0px
+scroll-margin=:0px
+scroll-padding-block-end=:auto
+scroll-padding-block-start=:auto
+scroll-padding-block=:auto
+scroll-padding-bottom=:auto
+scroll-padding-inline-end=:auto
+scroll-padding-inline-start=:auto
+scroll-padding-inline=:auto
+scroll-padding-left=:auto
+scroll-padding-right=:auto
+scroll-padding-top=:auto
+scroll-padding=:auto
+scroll-snap-align=:none
+scroll-snap-stop=:normal
+scroll-snap-type=:none
+scrollBehavior=:auto
+scrollMargin=:0px
+scrollMarginBlock=:0px
+scrollMarginBlockEnd=:0px
+scrollMarginBlockStart=:0px
+scrollMarginBottom=:0px
+scrollMarginInline=:0px
+scrollMarginInlineEnd=:0px
+scrollMarginInlineStart=:0px
+scrollMarginLeft=:0px
+scrollMarginRight=:0px
+scrollMarginTop=:0px
+scrollPadding=:auto
+scrollPaddingBlock=:auto
+scrollPaddingBlockEnd=:auto
+scrollPaddingBlockStart=:auto
+scrollPaddingBottom=:auto
+scrollPaddingInline=:auto
+scrollPaddingInlineEnd=:auto
+scrollPaddingInlineStart=:auto
+scrollPaddingLeft=:auto
+scrollPaddingRight=:auto
+scrollPaddingTop=:auto
+scrollSnapAlign=:none
+scrollSnapStop=:normal
+scrollSnapType=:none
+scrollbar-color=:auto
+scrollbar-gutter=:auto
+scrollbar-width=:auto
+scrollbarColor=:auto
+scrollbarGutter=:auto
+scrollbarWidth=:auto
+shape-image-threshold=:0
+shape-margin=:0px
+shape-outside=:none
+shape-rendering=:auto
+shapeImageThreshold=:0
+shapeMargin=:0px
+shapeOutside=:none
+shapeRendering=:auto
+stop-color=:rgb(0, 0, 0)
+stop-opacity=:1
+stopColor=:rgb(0, 0, 0)
+stopOpacity=:1
+stroke-dasharray=:none
+stroke-dashoffset=:0px
+stroke-linecap=:butt
+stroke-linejoin=:miter
+stroke-miterlimit=:4
+stroke-opacity=:1
+stroke-width=:1px
+stroke=:none
+strokeDasharray=:none
+strokeDashoffset=:0px
+strokeLinecap=:butt
+strokeLinejoin=:miter
+strokeMiterlimit=:4
+strokeOpacity=:1
+strokeWidth=:1px
+tab-size=:8
+tabSize=:8
+table-layout=:auto
+tableLayout=:auto
+text-align-last=:auto
+text-align=:start
+text-anchor=:start
+text-combine-upright=:none
+text-decoration-color=:rgb(0, 0, 0)
+text-decoration-line=:none
+text-decoration-skip-ink=:auto
+text-decoration-style=:solid
+text-decoration-thickness=:auto
+text-decoration=:rgb(0, 0, 0)
+text-emphasis-color=:rgb(0, 0, 0)
+text-emphasis-position=:auto
+text-emphasis-style=:none
+text-emphasis=:none rgb(0, 0, 0)
+text-indent=:0px
+text-justify=:auto
+text-orientation=:mixed
+text-overflow=:clip
+text-rendering=:auto
+text-shadow=:none
+text-transform=:none
+text-underline-offset=:auto
+text-underline-position=:auto
+text-wrap-mode=:wrap
+text-wrap-style=:auto
+text-wrap=:wrap
+textAlign=:start
+textAlignLast=:auto
+textAnchor=:start
+textCombineUpright=:none
+textDecoration=:rgb(0, 0, 0)
+textDecorationColor=:rgb(0, 0, 0)
+textDecorationLine=:none
+textDecorationSkipInk=:auto
+textDecorationStyle=:solid
+textDecorationThickness=:auto
+textEmphasis=:none rgb(0, 0, 0)
+textEmphasisColor=:rgb(0, 0, 0)
+textEmphasisPosition=:auto
+textEmphasisStyle=:none
+textIndent=:0px
+textJustify=:auto
+textOrientation=:mixed
+textOverflow=:clip
+textRendering=:auto
+textShadow=:none
+textTransform=:none
+textUnderlineOffset=:auto
+textUnderlinePosition=:auto
+textWrap=:wrap
+textWrapMode=:wrap
+textWrapStyle=:auto
+top=:auto
+touch-action=:auto
+touchAction=:auto
+transform-box=:view-box
+transform-origin=:620px 9px
+transform-style=:flat
+transform=:none
+transformBox=:view-box
+transformOrigin=:620px 9px
+transformStyle=:flat
+transition-behavior=:normal
+transition-delay=:0s
+transition-duration=:0s
+transition-property=:all
+transition-timing-function=:ease
+transition=:all
+transitionBehavior=:normal
+transitionDelay=:0s
+transitionDuration=:0s
+transitionProperty=:all
+transitionTimingFunction=:ease
+translate=:none
+unicode-bidi=:isolate
+unicodeBidi=:isolate
+user-select=:auto
+userSelect=:auto
+vector-effect=:none
+vectorEffect=:none
+vertical-align=:baseline
+verticalAlign=:baseline
+visibility=:visible
+webkitAlignContent=:normal
+webkitAlignItems=:normal
+webkitAlignSelf=:auto
+webkitAnimation=:none
+webkitAnimationDelay=:0s
+webkitAnimationDirection=:normal
+webkitAnimationDuration=:0s
+webkitAnimationFillMode=:none
+webkitAnimationIterationCount=:1
+webkitAnimationName=:none
+webkitAnimationPlayState=:running
+webkitAnimationTimingFunction=:ease
+webkitAppearance=:none
+webkitBackfaceVisibility=:visible
+webkitBackgroundClip=:border-box
+webkitBackgroundOrigin=:padding-box
+webkitBackgroundSize=:auto
+webkitBorderBottomLeftRadius=:0px
+webkitBorderBottomRightRadius=:0px
+webkitBorderImage=:none
+webkitBorderRadius=:0px
+webkitBorderTopLeftRadius=:0px
+webkitBorderTopRightRadius=:0px
+webkitBoxAlign=:stretch
+webkitBoxDirection=:normal
+webkitBoxFlex=:0
+webkitBoxOrdinalGroup=:1
+webkitBoxOrient=:horizontal
+webkitBoxPack=:start
+webkitBoxShadow=:none
+webkitBoxSizing=:content-box
+webkitClipPath=:none
+webkitFilter=:none
+webkitFlex=:0 1 auto
+webkitFlexBasis=:auto
+webkitFlexDirection=:row
+webkitFlexFlow=:row
+webkitFlexGrow=:0
+webkitFlexShrink=:1
+webkitFlexWrap=:nowrap
+webkitFontFeatureSettings=:normal
+webkitJustifyContent=:normal
+webkitLineClamp=:none
+webkitMask=:none
+webkitMaskClip=:border-box
+webkitMaskComposite=:add
+webkitMaskImage=:none
+webkitMaskOrigin=:border-box
+webkitMaskPosition=:0% 0%
+webkitMaskPositionX=:0%
+webkitMaskPositionY=:0%
+webkitMaskRepeat=:repeat
+webkitMaskSize=:auto
+webkitOrder=:0
+webkitPerspective=:none
+webkitPerspectiveOrigin=:620px 9px
+webkitTextFillColor=:rgb(0, 0, 0)
+webkitTextSecurity=:none
+webkitTextSizeAdjust=:auto
+webkitTextStroke=:0px rgb(0, 0, 0)
+webkitTextStrokeColor=:rgb(0, 0, 0)
+webkitTextStrokeWidth=:0px
+webkitTransform=:none
+webkitTransformOrigin=:620px 9px
+webkitTransformStyle=:flat
+webkitTransition=:all
+webkitTransitionDelay=:0s
+webkitTransitionDuration=:0s
+webkitTransitionProperty=:all
+webkitTransitionTimingFunction=:ease
+webkitUserSelect=:auto
+white-space-collapse=:collapse
+white-space=:normal
+whiteSpace=:normal
+whiteSpaceCollapse=:collapse
+width=:auto
+will-change=:auto
+willChange=:auto
+word-break=:normal
+word-spacing=:0px
+word-wrap=:normal
+wordBreak=:normal
+wordSpacing=:0px
+wordWrap=:normal
+writing-mode=:horizontal-tb
+writingMode=:horizontal-tb
+x=:0px
+y=:0px
+z-index=:auto
+zIndex=:auto
+zoom=:1
\ No newline at end of file
From 69f172ea0f298b30487c7529f43d6b9f0683e175 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 14 Apr 2025 19:35:17 +0200
Subject: [PATCH 077/125] more tests (see #960)
---
.../org/htmlunit/WebWindowListenerTest.java | 120 +++++++++++++++++-
1 file changed, 113 insertions(+), 7 deletions(-)
diff --git a/src/test/java/org/htmlunit/WebWindowListenerTest.java b/src/test/java/org/htmlunit/WebWindowListenerTest.java
index a1ea4228046..ca46007d2f2 100644
--- a/src/test/java/org/htmlunit/WebWindowListenerTest.java
+++ b/src/test/java/org/htmlunit/WebWindowListenerTest.java
@@ -14,9 +14,11 @@
*/
package org.htmlunit;
+import org.apache.commons.lang3.StringUtils;
import org.htmlunit.html.HtmlPage;
import org.htmlunit.junit.BrowserRunner;
-import org.htmlunit.junit.annotation.NotYetImplemented;
+import org.htmlunit.junit.annotation.Alerts;
+import org.htmlunit.junit.annotation.HtmlUnitNYI;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -34,7 +36,16 @@ public class WebWindowListenerTest extends SimpleWebTestCase {
* @throws Exception if the test fails
*/
@Test
- @NotYetImplemented
+ @Alerts("changed '(null)' - 'Test 1 [org.htmlunit.TopLevelWindow]'; "
+ + "changed 'Test 1 [org.htmlunit.TopLevelWindow]' - 'Test 2 [org.htmlunit.TopLevelWindow]'; ")
+ @HtmlUnitNYI(CHROME = "changed 'Test 1 [org.htmlunit.TopLevelWindow]' - 'Test 2 [org.htmlunit.TopLevelWindow]'; "
+ + "changed '(null)' - 'Test 1 [org.htmlunit.TopLevelWindow]'; ",
+ EDGE = "changed 'Test 1 [org.htmlunit.TopLevelWindow]' - 'Test 2 [org.htmlunit.TopLevelWindow]'; "
+ + "changed '(null)' - 'Test 1 [org.htmlunit.TopLevelWindow]'; ",
+ FF = "changed 'Test 1 [org.htmlunit.TopLevelWindow]' - 'Test 2 [org.htmlunit.TopLevelWindow]'; "
+ + "changed '(null)' - 'Test 1 [org.htmlunit.TopLevelWindow]'; ",
+ FF_ESR = "changed 'Test 1 [org.htmlunit.TopLevelWindow]' - 'Test 2 [org.htmlunit.TopLevelWindow]'; "
+ + "changed '(null)' - 'Test 1 [org.htmlunit.TopLevelWindow]'; ")
public void eventOrder() throws Exception {
final String firstHtml = DOCTYPE_HTML
+ "\n"
@@ -58,13 +69,16 @@ public void eventOrder() throws Exception {
getWebClient().addWebWindowListener(logger);
loadPage(firstHtml);
- assertEquals("changed '' - 'Test 1'; changed 'Test 1' - 'Test 2'; ", logger.getMsg());
+ assertEquals(getExpectedAlerts()[0], logger.getMsg());
}
/**
* @throws Exception if the test fails
*/
@Test
+ @Alerts("changed '(null)' - 'Test 1 [org.htmlunit.TopLevelWindow]'; "
+ + "closed 'Test 1 [org.htmlunit.TopLevelWindow]' - '(null)'; "
+ + "opened '(null)' - '(null)'; ")
public void eventOrderCloseLast() throws Exception {
final String firstHtml = DOCTYPE_HTML
+ "\n"
@@ -78,13 +92,16 @@ public void eventOrderCloseLast() throws Exception {
loadPage(firstHtml);
((TopLevelWindow) getWebClient().getCurrentWindow()).close();
- assertEquals("changed '' - 'Test 1'; closed 'Test 1' - ''; opened '' - ''; ", logger.getMsg());
+ assertEquals(getExpectedAlerts()[0], logger.getMsg());
}
/**
* @throws Exception if the test fails
*/
@Test
+ @Alerts("changed '(null)' - 'Test 1 [org.htmlunit.TopLevelWindow]'; "
+ + "closed 'Test 1 [org.htmlunit.TopLevelWindow]' - '(null)'; "
+ + "opened '(null)' - '(null)'; ")
public void eventOrderReset() throws Exception {
final String firstHtml = DOCTYPE_HTML
+ "\n"
@@ -98,7 +115,64 @@ public void eventOrderReset() throws Exception {
loadPage(firstHtml);
getWebClient().reset();
- assertEquals("changed '' - 'Test 1'; closed 'Test 1' - ''; opened '' - ''; ", logger.getMsg());
+ assertEquals(getExpectedAlerts()[0], logger.getMsg());
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("changed '(null)' - 'Test 1 [org.htmlunit.TopLevelWindow]'; "
+ + "closed 'Test 1 [org.htmlunit.TopLevelWindow]' - '(null)'; ")
+ public void eventOrderCloseWebClient() throws Exception {
+ final String firstHtml = DOCTYPE_HTML
+ + "\n"
+ + "Test 1 \n"
+ + "\n"
+ + "";
+
+ final LoggingWebWindowListener logger = new LoggingWebWindowListener();
+ getWebClient().addWebWindowListener(logger);
+
+ loadPage(firstHtml);
+ getWebClient().close();
+
+ assertEquals(getExpectedAlerts()[0], logger.getMsg());
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("opened '(null)' - '(null)'; "
+ + "changed '(null)' - 'about:blank [org.htmlunit.html.FrameWindow]'; "
+ + "changed '(null)' - 'Test 1 [org.htmlunit.TopLevelWindow]'; "
+ + "changed 'about:blank [org.htmlunit.html.FrameWindow]' - 'iFrame [org.htmlunit.html.FrameWindow]'; "
+ + "closed 'iFrame [org.htmlunit.html.FrameWindow]' - '(null)'; "
+ + "closed 'Test 1 [org.htmlunit.TopLevelWindow]' - '(null)'; ")
+ public void eventOrderIFrameCloseWebClient() throws Exception {
+ final String firstHtml = DOCTYPE_HTML
+ + "\n"
+ + "Test 1 \n"
+ + "\n"
+ + "\n"
+ + "";
+
+ final String iframeContent = DOCTYPE_HTML
+ + "\n"
+ + "iFrame \n"
+ + "iframe\n"
+ + "";
+
+ getMockWebConnection().setResponse(URL_SECOND, iframeContent);
+
+ final LoggingWebWindowListener logger = new LoggingWebWindowListener();
+ getWebClient().addWebWindowListener(logger);
+
+ loadPage(firstHtml);
+ getWebClient().close();
+
+ assertEquals(getExpectedAlerts()[0], logger.getMsg());
}
private final class LoggingWebWindowListener implements WebWindowListener {
@@ -122,13 +196,45 @@ private void log(final String prefix, final WebWindowEvent event) {
msg_.append(prefix).append(" '");
Page page = event.getOldPage();
if (page instanceof HtmlPage) {
- msg_.append(((HtmlPage) page).getTitleText());
+ final HtmlPage htmlPage = (HtmlPage) page;
+ if (StringUtils.isNotBlank(htmlPage.getTitleText())) {
+ msg_.append(htmlPage.getTitleText());
+ }
+ else {
+ msg_.append(htmlPage.getUrl());
+ }
+ msg_.append(" ");
+ }
+ if (page != null) {
+ msg_.append("[")
+ .append(page.getEnclosingWindow().getClass().getName())
+ .append("]");
+ }
+ else {
+ msg_.append("(null)");
}
+
msg_.append("' - '");
page = event.getNewPage();
if (page instanceof HtmlPage) {
- msg_.append(((HtmlPage) page).getTitleText());
+ final HtmlPage htmlPage = (HtmlPage) page;
+ if (StringUtils.isNotBlank(htmlPage.getTitleText())) {
+ msg_.append(htmlPage.getTitleText());
+ }
+ else {
+ msg_.append(htmlPage.getUrl());
+ }
+ msg_.append(" ");
+ }
+ if (page != null) {
+ msg_.append("[")
+ .append(page.getEnclosingWindow().getClass().getName())
+ .append("]");
}
+ else {
+ msg_.append("(null)");
+ }
+
msg_.append("'; ");
}
From f7fad8e15862125195a5c640666ddf61732ef9b7 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Tue, 15 Apr 2025 17:33:23 +0200
Subject: [PATCH 078/125] a bit more docu (see #960)
---
src/main/java/org/htmlunit/WebWindowListener.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/main/java/org/htmlunit/WebWindowListener.java b/src/main/java/org/htmlunit/WebWindowListener.java
index 0cb8868d4f1..e111fc50c70 100644
--- a/src/main/java/org/htmlunit/WebWindowListener.java
+++ b/src/main/java/org/htmlunit/WebWindowListener.java
@@ -25,6 +25,10 @@
* process. This implies, the initial window is already open at the time you attach this listener.
* Therefore you will receive no open event for this.
*
+ *
+ * Caution: Frames and also iFrames are handled as separate windows. Therefore the listener is also
+ * called for each and every containing (i)Frame when e.g. closing a {@link TopLevelWindow}.
+ *
*
* @author Mike Bowler
* @author Ronald Brill
From 5561b4880b9472f7c32384c193e5eb1528fffc91 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 16 Apr 2025 07:08:57 +0200
Subject: [PATCH 079/125] document last rhino changes
---
src/changes/changes.xml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3652924b67d..a101cc28852 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,12 @@
+
+ core-js: Function.prototype[Symbol.hasInstance] fixed.
+
+
+ core-js: regression in hex and unicode hex parsing or regexp fixed
+
CSS blockSize support improved.
From 656c627b0314afb2fed0fec6f1401785f940e4ec Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 16 Apr 2025 08:02:50 +0200
Subject: [PATCH 080/125] scrollIntoView() now triggers a scroll event on the
parent. For FF scroll events are of type UIEvent. Scroll events are not
bubbling and not cancelable.
see #942
---
src/changes/changes.xml | 9 +++++
.../org/htmlunit/BrowserVersionFeatures.java | 4 ++
.../org/htmlunit/javascript/host/Element.java | 31 ++++++++++++---
.../htmlunit/javascript/host/event/Event.java | 1 +
.../javascript/host/event/EventTest.java | 39 +++++++++++++++++++
.../javascript/host/html/HTMLElementTest.java | 39 +++++++++++++++++++
6 files changed, 118 insertions(+), 5 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index a101cc28852..bd5b0f78b8e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,15 @@
+
+ scrollIntoView() now triggers a scroll event on the parent.
+
+
+ For FF scroll events are of type UIEvent.
+
+
+ Scroll events are not bubbling and not cancelable.
+
core-js: Function.prototype[Symbol.hasInstance] fixed.
diff --git a/src/main/java/org/htmlunit/BrowserVersionFeatures.java b/src/main/java/org/htmlunit/BrowserVersionFeatures.java
index 1186874c0e0..3a68914a218 100644
--- a/src/main/java/org/htmlunit/BrowserVersionFeatures.java
+++ b/src/main/java/org/htmlunit/BrowserVersionFeatures.java
@@ -90,6 +90,10 @@ public enum BrowserVersionFeatures {
@BrowserFeature({FF, FF_ESR})
EVENT_ONPOPSTATE_DOCUMENT_CREATE_NOT_SUPPORTED,
+ /** Scroll events are of type 'UIEvent'. */
+ @BrowserFeature({FF, FF_ESR})
+ EVENT_SCROLL_UIEVENT,
+
/** Supports event type 'TextEvent'. */
@BrowserFeature({FF, FF_ESR})
EVENT_TYPE_MUTATIONEVENT,
diff --git a/src/main/java/org/htmlunit/javascript/host/Element.java b/src/main/java/org/htmlunit/javascript/host/Element.java
index 9eaff5df7dc..2b80f7e8ed5 100644
--- a/src/main/java/org/htmlunit/javascript/host/Element.java
+++ b/src/main/java/org/htmlunit/javascript/host/Element.java
@@ -14,6 +14,7 @@
*/
package org.htmlunit.javascript.host;
+import static org.htmlunit.BrowserVersionFeatures.EVENT_SCROLL_UIEVENT;
import static org.htmlunit.BrowserVersionFeatures.JS_OUTER_HTML_THROWS_FOR_DETACHED;
import static org.htmlunit.html.DomElement.ATTRIBUTE_NOT_DEFINED;
import static org.htmlunit.javascript.configuration.SupportedBrowser.CHROME;
@@ -64,6 +65,7 @@
import org.htmlunit.javascript.host.dom.NodeList;
import org.htmlunit.javascript.host.event.Event;
import org.htmlunit.javascript.host.event.EventHandler;
+import org.htmlunit.javascript.host.event.UIEvent;
import org.htmlunit.javascript.host.html.HTMLCollection;
import org.htmlunit.javascript.host.html.HTMLElement;
import org.htmlunit.javascript.host.html.HTMLElement.ProxyDomNode;
@@ -1234,8 +1236,18 @@ public void scrollBy(final Scriptable x, final Scriptable y) {
setScrollLeft(getScrollLeft() + xOff);
setScrollTop(getScrollTop() + yOff);
- final Event event = new Event(this, Event.TYPE_SCROLL);
- fireEvent(event);
+ fireScrollEvent(this);
+ }
+
+ private void fireScrollEvent(final Node node) {
+ final Event event;
+ if (getBrowserVersion().hasFeature(EVENT_SCROLL_UIEVENT)) {
+ event = new UIEvent(node, Event.TYPE_SCROLL);
+ }
+ else {
+ event = new Event(node, Event.TYPE_SCROLL);
+ }
+ node.fireEvent(event);
}
/**
@@ -1269,8 +1281,7 @@ public void scrollTo(final Scriptable x, final Scriptable y) {
setScrollLeft(xOff);
setScrollTop(yOff);
- final Event event = new Event(this, Event.TYPE_SCROLL);
- fireEvent(event);
+ fireScrollEvent(this);
}
/**
@@ -1280,7 +1291,17 @@ public void scrollTo(final Scriptable x, final Scriptable y) {
*/
@JsxFunction
public void scrollIntoView() {
- /* do nothing at the moment */
+ /* do nothing at the moment, only trigger the scroll event */
+
+ Node parent = getParent();
+ while (parent != null) {
+ if (parent instanceof HTMLElement) {
+ fireScrollEvent(parent);
+ return;
+ }
+
+ parent = parent.getParent();
+ }
}
/**
diff --git a/src/main/java/org/htmlunit/javascript/host/event/Event.java b/src/main/java/org/htmlunit/javascript/host/event/Event.java
index e343cf9236f..d8d3d2eac47 100644
--- a/src/main/java/org/htmlunit/javascript/host/event/Event.java
+++ b/src/main/java/org/htmlunit/javascript/host/event/Event.java
@@ -562,6 +562,7 @@ else if (TYPE_ERROR.equals(type)) {
else if (
TYPE_FOCUS.equals(type)
|| TYPE_BLUR.equals(type)
+ || TYPE_SCROLL.equals(type)
|| TYPE_BEFOREPRINT.equals(type)
|| TYPE_AFTERPRINT.equals(type)) {
bubbles_ = false;
diff --git a/src/test/java/org/htmlunit/javascript/host/event/EventTest.java b/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
index b5b32d73d99..1dfe68f3046 100644
--- a/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
@@ -1518,4 +1518,43 @@ public void domEventNameUsedAsFunctionName() throws Exception {
loadPageVerifyTitle2(html);
}
+
+ /**
+ * Tests that JavaScript scrollIntoView() scrollEvent.
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = {"[object Event]", "scroll", "false", "false", "false"},
+ FF = {"[object UIEvent]", "scroll", "false", "true", "false"},
+ FF_ESR = {"[object UIEvent]", "scroll", "false", "true", "false"})
+ @HtmlUnitNYI(FF = {"[object UIEvent]", "scroll", "false", "false", "false"},
+ FF_ESR = {"[object UIEvent]", "scroll", "false", "false", "false"})
+ public void scrollEvent() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+
+ + "\n"
+ + " \n"
+ + "
spacer
\n"
+ + "
Target
"
+ + "
\n"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
}
diff --git a/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java b/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java
index b1b0e905d40..49d18f75987 100644
--- a/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java
@@ -2156,6 +2156,45 @@ public void scrollIntoView() throws Exception {
loadPageVerifyTitle2(html);
}
+ /**
+ * Tests that JavaScript scrollIntoView() scrollEvent.
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("container [object HTMLDivElement]")
+ public void scrollIntoViewTriggersOnScroll() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+
+ + "\n"
+ + " \n"
+ + "
spacer
\n"
+ + "
Target
"
+ + "
\n"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
/**
* Tests the offsetParent property.
* @throws Exception if the test fails
From a0ae6c01803cc29a43df1af6b5ca3e29fd7f667d Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 16 Apr 2025 08:38:42 +0200
Subject: [PATCH 081/125] cleanup
---
.../javascript/host/event/Event3Test.java | 36 -------------------
1 file changed, 36 deletions(-)
diff --git a/src/test/java/org/htmlunit/javascript/host/event/Event3Test.java b/src/test/java/org/htmlunit/javascript/host/event/Event3Test.java
index 0cb6343ba59..486be1969ed 100644
--- a/src/test/java/org/htmlunit/javascript/host/event/Event3Test.java
+++ b/src/test/java/org/htmlunit/javascript/host/event/Event3Test.java
@@ -27,7 +27,6 @@
import org.htmlunit.html.Keyboard;
import org.htmlunit.junit.BrowserRunner;
import org.htmlunit.junit.annotation.Alerts;
-import org.htmlunit.junit.annotation.NotYetImplemented;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -159,41 +158,6 @@ public void eventOnBlur() throws Exception {
assertEquals(expectedAlerts, collectedAlerts);
}
- /**
- * Test for event bubbling in IE.
- * @throws Exception if the test fails
- */
- @Test
- @NotYetImplemented // TODO: in IE no click event can be registered for the window
- @Alerts({"span bubbling", "div", "div bubbling"})
- public void ie_EventBubbling() throws Exception {
- final String content = DOCTYPE_HTML
- + "foo \n"
- + "\n"
- + "\n"
- + "\n"
- + "blabla \n"
- + "
\n"
- + "";
-
- final List collectedAlerts = new ArrayList<>();
- final HtmlPage page = loadPage(content, collectedAlerts);
- page.getHtmlElementById("theSpan").click();
-
- assertEquals(getExpectedAlerts(), collectedAlerts);
- }
-
/**
* Test for bug 1976960: what happens with different return values at different levels?
* @throws Exception if an error occurs
From 3bb66d719be37bcf6d6c4fb2f042e1edf77ec414 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 16 Apr 2025 12:58:27 +0200
Subject: [PATCH 082/125] more scroll event fixes
---
.../org/htmlunit/javascript/host/Element.java | 2 +
.../org/htmlunit/javascript/host/Window.java | 27 +++++---
.../htmlunit/javascript/host/event/Event.java | 5 +-
.../javascript/host/event/EventTest.java | 64 ++++++++++++++++++-
4 files changed, 84 insertions(+), 14 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/Element.java b/src/main/java/org/htmlunit/javascript/host/Element.java
index 2b80f7e8ed5..8d570ba6f00 100644
--- a/src/main/java/org/htmlunit/javascript/host/Element.java
+++ b/src/main/java/org/htmlunit/javascript/host/Element.java
@@ -1246,7 +1246,9 @@ private void fireScrollEvent(final Node node) {
}
else {
event = new Event(node, Event.TYPE_SCROLL);
+ event.setCancelable(false);
}
+ event.setBubbles(false);
node.fireEvent(event);
}
diff --git a/src/main/java/org/htmlunit/javascript/host/Window.java b/src/main/java/org/htmlunit/javascript/host/Window.java
index 6d1470b012b..95154c7d9b7 100644
--- a/src/main/java/org/htmlunit/javascript/host/Window.java
+++ b/src/main/java/org/htmlunit/javascript/host/Window.java
@@ -14,6 +14,7 @@
*/
package org.htmlunit.javascript.host;
+import static org.htmlunit.BrowserVersionFeatures.EVENT_SCROLL_UIEVENT;
import static org.htmlunit.BrowserVersionFeatures.JS_WINDOW_SELECTION_NULL_IF_INVISIBLE;
import static org.htmlunit.javascript.configuration.SupportedBrowser.CHROME;
import static org.htmlunit.javascript.configuration.SupportedBrowser.EDGE;
@@ -101,11 +102,13 @@
import org.htmlunit.javascript.host.dom.AbstractList.EffectOnCache;
import org.htmlunit.javascript.host.dom.DOMException;
import org.htmlunit.javascript.host.dom.Document;
+import org.htmlunit.javascript.host.dom.Node;
import org.htmlunit.javascript.host.dom.Selection;
import org.htmlunit.javascript.host.event.Event;
import org.htmlunit.javascript.host.event.EventTarget;
import org.htmlunit.javascript.host.event.MessageEvent;
import org.htmlunit.javascript.host.event.MouseEvent;
+import org.htmlunit.javascript.host.event.UIEvent;
import org.htmlunit.javascript.host.html.DocumentProxy;
import org.htmlunit.javascript.host.html.HTMLCollection;
import org.htmlunit.javascript.host.html.HTMLDocument;
@@ -1156,11 +1159,22 @@ public void scrollBy(final Scriptable x, final Scriptable y) {
body.setScrollLeft(body.getScrollLeft() + xOff);
body.setScrollTop(body.getScrollTop() + yOff);
- final Event event = new Event(body, Event.TYPE_SCROLL);
- body.fireEvent(event);
+ fireScrollEvent(body);
}
}
+ private void fireScrollEvent(final Node node) {
+ final Event event;
+ if (getBrowserVersion().hasFeature(EVENT_SCROLL_UIEVENT)) {
+ event = new UIEvent(node, Event.TYPE_SCROLL);
+ }
+ else {
+ event = new Event(node, Event.TYPE_SCROLL);
+ event.setCancelable(false);
+ }
+ node.fireEvent(event);
+ }
+
/**
* Scrolls the window content down by the specified number of lines.
* @param lines the number of lines to scroll down
@@ -1171,8 +1185,7 @@ public void scrollByLines(final int lines) {
if (body != null) {
body.setScrollTop(body.getScrollTop() + (19 * lines));
- final Event event = new Event(body, Event.TYPE_SCROLL);
- body.fireEvent(event);
+ fireScrollEvent(body);
}
}
@@ -1186,8 +1199,7 @@ public void scrollByPages(final int pages) {
if (body != null) {
body.setScrollTop(body.getScrollTop() + (getInnerHeight() * pages));
- final Event event = new Event(body, Event.TYPE_SCROLL);
- body.fireEvent(event);
+ fireScrollEvent(body);
}
}
@@ -1224,8 +1236,7 @@ public void scrollTo(final Scriptable x, final Scriptable y) {
body.setScrollLeft(xOff);
body.setScrollTop(yOff);
- final Event event = new Event(body, Event.TYPE_SCROLL);
- body.fireEvent(event);
+ fireScrollEvent(body);
}
}
diff --git a/src/main/java/org/htmlunit/javascript/host/event/Event.java b/src/main/java/org/htmlunit/javascript/host/event/Event.java
index d8d3d2eac47..86968e4397c 100644
--- a/src/main/java/org/htmlunit/javascript/host/event/Event.java
+++ b/src/main/java/org/htmlunit/javascript/host/event/Event.java
@@ -562,7 +562,6 @@ else if (TYPE_ERROR.equals(type)) {
else if (
TYPE_FOCUS.equals(type)
|| TYPE_BLUR.equals(type)
- || TYPE_SCROLL.equals(type)
|| TYPE_BEFOREPRINT.equals(type)
|| TYPE_AFTERPRINT.equals(type)) {
bubbles_ = false;
@@ -834,7 +833,7 @@ public boolean isBubbles() {
/**
* @param bubbles the bubbles to set
*/
- protected void setBubbles(final boolean bubbles) {
+ public void setBubbles(final boolean bubbles) {
bubbles_ = bubbles;
}
@@ -849,7 +848,7 @@ public boolean isCancelable() {
/**
* @param cancelable the cancelable to set
*/
- protected void setCancelable(final boolean cancelable) {
+ public void setCancelable(final boolean cancelable) {
cancelable_ = cancelable;
}
diff --git a/src/test/java/org/htmlunit/javascript/host/event/EventTest.java b/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
index 1dfe68f3046..1e78febe28f 100644
--- a/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
@@ -1527,9 +1527,7 @@ public void domEventNameUsedAsFunctionName() throws Exception {
@Alerts(DEFAULT = {"[object Event]", "scroll", "false", "false", "false"},
FF = {"[object UIEvent]", "scroll", "false", "true", "false"},
FF_ESR = {"[object UIEvent]", "scroll", "false", "true", "false"})
- @HtmlUnitNYI(FF = {"[object UIEvent]", "scroll", "false", "false", "false"},
- FF_ESR = {"[object UIEvent]", "scroll", "false", "false", "false"})
- public void scrollEvent() throws Exception {
+ public void scrollEventFromScrollIntoView() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
+ "\n"
@@ -1557,4 +1555,64 @@ public void scrollEvent() throws Exception {
loadPageVerifyTitle2(html);
}
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = {"[object Event]", "scroll", "true", "false", "false"},
+ FF = {"[object UIEvent]", "scroll", "true", "true", "false"},
+ FF_ESR = {"[object UIEvent]", "scroll", "true", "true", "false"})
+ public void scrollEventFromScrollBy() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+
+ + "\n"
+ + "
\n"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = {"[object Event]", "scroll", "true", "false", "false"},
+ FF = {"[object UIEvent]", "scroll", "true", "true", "false"},
+ FF_ESR = {"[object UIEvent]", "scroll", "true", "true", "false"})
+ public void scrollEventFromScrollTo() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+
+ + "\n"
+ + "
\n"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
}
From 48e0884637c00a2bac546ee8fa513c3a2060e0dd Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 16 Apr 2025 18:55:25 +0200
Subject: [PATCH 083/125] upgrade Apache commons-io to 2.19.0
---
pom.xml | 15 +++++++++------
src/changes/changes.xml | 3 +++
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/pom.xml b/pom.xml
index 26c4ef99538..a6afab2d225 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,27 +34,30 @@
4.5.14
3.17.0
- 2.18.0
+ 2.19.0
1.3.5
0.1.2
-
+
4.31.0-SNAPSHOT
4.31.0
- selenium-devtools-v134
+ selenium-devtools-v135
+
+ 4.13.2
9.4.57.v20241219
4.0.66
2.24.3
2.0.17
+ 1.13.1
1.5
4.4.0
1.5.5
- 10.22.0
+
+ 10.23.0
4.9.3
7.12.0
- 4.13.2
1.4.0
10.0.4
@@ -1368,7 +1371,7 @@
org.apache.commons
commons-text
- 1.13.0
+ ${commons-text.version}
test
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index bd5b0f78b8e..c9164fe0cc5 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,9 @@
+
+ Upgrade Apache commons-io to 2.19.0.
+
scrollIntoView() now triggers a scroll event on the parent.
From b291cbc7190a2ac2058cc7250c942ad2bd5469be Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 16 Apr 2025 19:07:17 +0200
Subject: [PATCH 084/125] fix build
---
src/test/java/org/htmlunit/WebDriverTestCase.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/test/java/org/htmlunit/WebDriverTestCase.java b/src/test/java/org/htmlunit/WebDriverTestCase.java
index e52a0616f62..c22fb1e0d98 100644
--- a/src/test/java/org/htmlunit/WebDriverTestCase.java
+++ b/src/test/java/org/htmlunit/WebDriverTestCase.java
@@ -89,7 +89,7 @@
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.devtools.DevTools;
-import org.openqa.selenium.devtools.v134.emulation.Emulation;
+import org.openqa.selenium.devtools.v135.emulation.Emulation;
import org.openqa.selenium.edge.EdgeDriver;
import org.openqa.selenium.edge.EdgeDriverService;
import org.openqa.selenium.edge.EdgeOptions;
From f888a193909c517d444b3669aad6919a4d90ce8c Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Thu, 17 Apr 2025 13:55:57 +0200
Subject: [PATCH 085/125] Element.scrollIntoView() now triggers scroll events
on all parents (see issue #942)
---
src/changes/changes.xml | 2 +-
.../org/htmlunit/javascript/host/Element.java | 5 +-
.../javascript/host/html/HTMLElementTest.java | 126 ++++++++++++++++++
3 files changed, 130 insertions(+), 3 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index c9164fe0cc5..fde202e65ca 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -12,7 +12,7 @@
Upgrade Apache commons-io to 2.19.0.
- scrollIntoView() now triggers a scroll event on the parent.
+ Element.scrollIntoView() now triggers scroll events on all parents.
For FF scroll events are of type UIEvent.
diff --git a/src/main/java/org/htmlunit/javascript/host/Element.java b/src/main/java/org/htmlunit/javascript/host/Element.java
index 8d570ba6f00..5db990effb0 100644
--- a/src/main/java/org/htmlunit/javascript/host/Element.java
+++ b/src/main/java/org/htmlunit/javascript/host/Element.java
@@ -1293,13 +1293,14 @@ public void scrollTo(final Scriptable x, final Scriptable y) {
*/
@JsxFunction
public void scrollIntoView() {
- /* do nothing at the moment, only trigger the scroll event */
+ // do nothing at the moment, only trigger the scroll event
+ // we do not really handle scrollable elements (we are headless)
+ // we trigger the event for the whole parent tree (to inform all)
Node parent = getParent();
while (parent != null) {
if (parent instanceof HTMLElement) {
fireScrollEvent(parent);
- return;
}
parent = parent.getParent();
diff --git a/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java b/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java
index 49d18f75987..b9a917a4c3a 100644
--- a/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java
@@ -2162,6 +2162,10 @@ public void scrollIntoView() throws Exception {
*/
@Test
@Alerts("container [object HTMLDivElement]")
+ @HtmlUnitNYI(CHROME = {"container [object HTMLDivElement]", "body [object HTMLBodyElement]"},
+ EDGE = {"container [object HTMLDivElement]", "body [object HTMLBodyElement]"},
+ FF = {"container [object HTMLDivElement]", "body [object HTMLBodyElement]"},
+ FF_ESR = {"container [object HTMLDivElement]", "body [object HTMLBodyElement]"})
public void scrollIntoViewTriggersOnScroll() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
@@ -2195,6 +2199,128 @@ public void scrollIntoViewTriggersOnScroll() throws Exception {
loadPageVerifyTitle2(html);
}
+ /**
+ * Tests that JavaScript scrollIntoView() scrollEvent.
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts({"target-1 [object HTMLDivElement]", "container [object HTMLDivElement]"})
+ @HtmlUnitNYI(CHROME = {"target-1 [object HTMLDivElement]",
+ "container [object HTMLDivElement]", "body [object HTMLBodyElement]"},
+ EDGE = {"target-1 [object HTMLDivElement]",
+ "container [object HTMLDivElement]", "body [object HTMLBodyElement]"},
+ FF = {"target-1 [object HTMLDivElement]",
+ "container [object HTMLDivElement]", "body [object HTMLBodyElement]"},
+ FF_ESR = {"target-1 [object HTMLDivElement]",
+ "container [object HTMLDivElement]", "body [object HTMLBodyElement]"})
+ public void scrollIntoViewTriggersOnScrollBubbling() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+
+ + "\n"
+ + " \n"
+ + "
spacer
\n"
+ + "
\n"
+ + "
spacer
\n"
+ + "
Target
"
+ + "
\n"
+ + "
\n"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
+ /**
+ * Tests for issue #942.
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts({"50", "100"})
+ public void scrollIntoViewIssue() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+
+ + "\n"
+ + " Press \n"
+ + " \n"
+ + "
\n"
+ + " ID Name \n"
+ + " \n"
+ + "
\n"
+ + "
\n"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ final WebDriver driver = loadPage2(html);
+
+ final By tableRows = By.xpath("//tbody[@id='table-body']//tr");
+ int rowCount = driver.findElements(tableRows).size();
+ assertEquals(Integer.parseInt(getExpectedAlerts()[0]), rowCount);
+
+ driver.findElement(By.id("myButton")).click();
+
+ rowCount = driver.findElements(tableRows).size();
+ assertEquals(Integer.parseInt(getExpectedAlerts()[1]), rowCount);
+ }
+
/**
* Tests the offsetParent property.
* @throws Exception if the test fails
From fc0c4134efbc02e6a0f5df5ac2c1bdaa8c324763 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 18 Apr 2025 11:27:21 +0200
Subject: [PATCH 086/125] scroll events do not bubble into the document/window
fix target for scroll events on document/window
---
.../org/htmlunit/javascript/host/Element.java | 13 +++
.../org/htmlunit/javascript/host/Window.java | 8 ++
.../javascript/host/event/EventTarget.java | 6 ++
.../htmlunit/javascript/host/Window3Test.java | 14 ++-
.../javascript/host/event/EventTest.java | 96 ++++++++++++++++++-
.../javascript/host/html/HTMLElementTest.java | 34 ++++++-
6 files changed, 161 insertions(+), 10 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/Element.java b/src/main/java/org/htmlunit/javascript/host/Element.java
index 5db990effb0..f4ec96e548b 100644
--- a/src/main/java/org/htmlunit/javascript/host/Element.java
+++ b/src/main/java/org/htmlunit/javascript/host/Element.java
@@ -1252,6 +1252,18 @@ private void fireScrollEvent(final Node node) {
node.fireEvent(event);
}
+ private void fireScrollEvent(final Window window) {
+ final Event event;
+ if (getBrowserVersion().hasFeature(EVENT_SCROLL_UIEVENT)) {
+ event = new UIEvent(window.getDocument(), Event.TYPE_SCROLL);
+ }
+ else {
+ event = new Event(window.getDocument(), Event.TYPE_SCROLL);
+ event.setCancelable(false);
+ }
+ window.fireEvent(event);
+ }
+
/**
* Scrolls to a particular set of coordinates inside a given element.
* @param x the horizontal pixel value that you want to scroll to
@@ -1305,6 +1317,7 @@ public void scrollIntoView() {
parent = parent.getParent();
}
+ fireScrollEvent(getWindow());
}
/**
diff --git a/src/main/java/org/htmlunit/javascript/host/Window.java b/src/main/java/org/htmlunit/javascript/host/Window.java
index 95154c7d9b7..a932baa8a36 100644
--- a/src/main/java/org/htmlunit/javascript/host/Window.java
+++ b/src/main/java/org/htmlunit/javascript/host/Window.java
@@ -1161,6 +1161,8 @@ public void scrollBy(final Scriptable x, final Scriptable y) {
fireScrollEvent(body);
}
+
+ fireScrollEvent(document_);
}
private void fireScrollEvent(final Node node) {
@@ -1187,6 +1189,8 @@ public void scrollByLines(final int lines) {
fireScrollEvent(body);
}
+
+ fireScrollEvent(document_);
}
/**
@@ -1201,6 +1205,8 @@ public void scrollByPages(final int pages) {
fireScrollEvent(body);
}
+
+ fireScrollEvent(document_);
}
/**
@@ -1238,6 +1244,8 @@ public void scrollTo(final Scriptable x, final Scriptable y) {
fireScrollEvent(body);
}
+
+ fireScrollEvent(document_);
}
/**
diff --git a/src/main/java/org/htmlunit/javascript/host/event/EventTarget.java b/src/main/java/org/htmlunit/javascript/host/event/EventTarget.java
index c76d39192c9..855eaebb26c 100644
--- a/src/main/java/org/htmlunit/javascript/host/event/EventTarget.java
+++ b/src/main/java/org/htmlunit/javascript/host/event/EventTarget.java
@@ -19,6 +19,7 @@
import java.util.List;
import org.apache.commons.lang3.StringUtils;
+import org.htmlunit.Page;
import org.htmlunit.ScriptResult;
import org.htmlunit.corejs.javascript.Function;
import org.htmlunit.corejs.javascript.Scriptable;
@@ -125,6 +126,11 @@ public ScriptResult fireEvent(final Event event) {
// Then add all our parents if we have any (pure JS object such as XMLHttpRequest
// and MessagePort, etc. will not have any parents)
for (DomNode parent = ourParentNode; parent != null; parent = parent.getParentNode()) {
+ // scroll does not bubble into the document/window
+ if (Event.TYPE_SCROLL.equals(event.getType()) && parent instanceof Page) {
+ break;
+ }
+
propagationPath.add(parent.getScriptableObject());
}
diff --git a/src/test/java/org/htmlunit/javascript/host/Window3Test.java b/src/test/java/org/htmlunit/javascript/host/Window3Test.java
index 0254021fd8d..f51952b5776 100644
--- a/src/test/java/org/htmlunit/javascript/host/Window3Test.java
+++ b/src/test/java/org/htmlunit/javascript/host/Window3Test.java
@@ -482,7 +482,8 @@ public void scrollBy() throws Exception {
+ "\n"
+ + "\n"
+ + "\n"
+ "";
loadPageVerifyTitle2(html);
}
@@ -491,7 +492,7 @@ public void scrollBy() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts({"document", "body"})
+ @Alerts({"document [object HTMLDocument]", "body", "window [object HTMLDocument]"})
public void scrollByEvents() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
@@ -499,7 +500,9 @@ public void scrollByEvents() throws Exception {
+ "\n"
@@ -575,7 +578,7 @@ public void scrollTo() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts({"document", "body"})
+ @Alerts({"document[object HTMLDocument]", "body", "document[object HTMLDocument]"})
public void scrollToEvents() throws Exception {
final String html = DOCTYPE_HTML
+ "\n"
@@ -583,7 +586,8 @@ public void scrollToEvents() throws Exception {
+ "\n"
diff --git a/src/test/java/org/htmlunit/javascript/host/event/EventTest.java b/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
index 1e78febe28f..4408edd78c9 100644
--- a/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
@@ -1520,7 +1520,6 @@ public void domEventNameUsedAsFunctionName() throws Exception {
}
/**
- * Tests that JavaScript scrollIntoView() scrollEvent.
* @throws Exception if the test fails
*/
@Test
@@ -1540,7 +1539,7 @@ public void scrollEventFromScrollIntoView() throws Exception {
+ "\n"
+ " \n"
+ "
spacer
\n"
- + "
Target
"
+ + "
Target
\n"
+ "
\n"
+ " \n"
+ + "\n"
+
+ + "\n"
+ + " \n"
+ + "
\n"
+ + " Target
\n"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
/**
* @throws Exception if the test fails
@@ -1586,6 +1618,36 @@ public void scrollEventFromScrollBy() throws Exception {
loadPageVerifyTitle2(html);
}
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = {"[object Event]", "scroll", "true", "false", "false"},
+ FF = {"[object UIEvent]", "scroll", "true", "true", "false"},
+ FF_ESR = {"[object UIEvent]", "scroll", "true", "true", "false"})
+ public void scrollEventWindowFromScrollBy() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+
+ + "\n"
+ + "
\n"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
/**
* @throws Exception if the test fails
*/
@@ -1615,4 +1677,34 @@ public void scrollEventFromScrollTo() throws Exception {
loadPageVerifyTitle2(html);
}
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = {"[object Event]", "scroll", "true", "false", "false"},
+ FF = {"[object UIEvent]", "scroll", "true", "true", "false"},
+ FF_ESR = {"[object UIEvent]", "scroll", "true", "true", "false"})
+ public void scrollEventWindowFromScrollTo() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+
+ + "\n"
+ + "
\n"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
}
diff --git a/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java b/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java
index b9a917a4c3a..3ac17423bc0 100644
--- a/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/html/HTMLElementTest.java
@@ -2157,7 +2157,6 @@ public void scrollIntoView() throws Exception {
}
/**
- * Tests that JavaScript scrollIntoView() scrollEvent.
* @throws Exception if the test fails
*/
@Test
@@ -2200,7 +2199,6 @@ public void scrollIntoViewTriggersOnScroll() throws Exception {
}
/**
- * Tests that JavaScript scrollIntoView() scrollEvent.
* @throws Exception if the test fails
*/
@Test
@@ -2253,7 +2251,37 @@ public void scrollIntoViewTriggersOnScrollBubbling() throws Exception {
}
/**
- * Tests for issue #942.
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("window [object HTMLDocument]")
+ public void scrollIntoViewTriggersWindowOnScroll() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+
+ + "\n"
+ + " spacer
\n"
+ + " Target
"
+
+ + " \n"
+ + "\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
+ /**
+ * Test for issue #942.
* @throws Exception if the test fails
*/
@Test
From fcdd47311a5681dc8aaf9eab3d8eb1af65319d30 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 18 Apr 2025 11:56:59 +0200
Subject: [PATCH 087/125] code style
---
src/test/java/org/htmlunit/javascript/host/event/EventTest.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/test/java/org/htmlunit/javascript/host/event/EventTest.java b/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
index 4408edd78c9..4734ae878ca 100644
--- a/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/event/EventTest.java
@@ -1554,6 +1554,7 @@ public void scrollEventFromScrollIntoView() throws Exception {
loadPageVerifyTitle2(html);
}
+
/**
* @throws Exception if the test fails
*/
From 19433a8b03cd866a939a72c5446ad6396cb07918 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 28 Apr 2025 18:12:13 +0200
Subject: [PATCH 088/125] code cleanup
---
src/main/java/org/htmlunit/html/DomNode.java | 2 +-
.../java/org/htmlunit/html/xpath/XPathAdapter.java | 12 +-----------
.../htmlunit/javascript/host/dom/DOMException.java | 4 ++--
.../org/htmlunit/javascript/host/file/FileList.java | 4 ++--
src/main/java/org/htmlunit/util/ArrayUtils.java | 11 +++++------
src/main/java/org/htmlunit/util/EncodingSniffer.java | 2 +-
src/main/java/org/htmlunit/xml/XmlPage.java | 3 ++-
7 files changed, 14 insertions(+), 24 deletions(-)
diff --git a/src/main/java/org/htmlunit/html/DomNode.java b/src/main/java/org/htmlunit/html/DomNode.java
index 019fee9bbbb..d667dc0cf04 100644
--- a/src/main/java/org/htmlunit/html/DomNode.java
+++ b/src/main/java/org/htmlunit/html/DomNode.java
@@ -1173,7 +1173,7 @@ else if (previousSibling_ != null && previousSibling_.nextSibling_ == this) {
private void fireRemoval(final DomNode exParent) {
final SgmlPage page = getPage();
- if (page != null && page instanceof HtmlPage) {
+ if (page instanceof HtmlPage) {
// some actions executed on removal need an intact parent relationship (e.g. for the
// DocumentPositionComparator) so we have to restore it temporarily
parent_ = exParent;
diff --git a/src/main/java/org/htmlunit/html/xpath/XPathAdapter.java b/src/main/java/org/htmlunit/html/xpath/XPathAdapter.java
index ade9c47c8b8..203c0cc72da 100644
--- a/src/main/java/org/htmlunit/html/xpath/XPathAdapter.java
+++ b/src/main/java/org/htmlunit/html/xpath/XPathAdapter.java
@@ -45,14 +45,6 @@ private enum STATE {
}
private final Expression mainExp_;
- private FunctionTable funcTable_;
-
- /**
- * Initiates the function table.
- */
- private void initFunctionTable() {
- funcTable_ = new FunctionTable();
- }
/**
* Constructor.
@@ -64,11 +56,9 @@ private void initFunctionTable() {
public XPathAdapter(final String exprString, final PrefixResolver prefixResolver, final boolean caseSensitive)
throws TransformerException {
- initFunctionTable();
-
final ErrorListener errorHandler = new DefaultErrorHandler();
final XPathParser parser = new XPathParser(errorHandler);
- final Compiler compiler = new Compiler(errorHandler, funcTable_);
+ final Compiler compiler = new Compiler(errorHandler, new FunctionTable());
final String expression = preProcessXPath(exprString, caseSensitive);
parser.initXPath(compiler, expression, prefixResolver);
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/DOMException.java b/src/main/java/org/htmlunit/javascript/host/dom/DOMException.java
index 0ac07a95ee7..88fa36f93f1 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/DOMException.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/DOMException.java
@@ -140,7 +140,7 @@ public class DOMException extends HtmlUnitScriptable {
@JsxConstant
public static final int DATA_CLONE_ERR = 25;
- private static final List COMMON_ERROR_NAMES = Arrays.asList(new String[] {
+ private static final List COMMON_ERROR_NAMES = Arrays.asList(
"IndexSizeError",
null,
"HierarchyRequestError",
@@ -165,7 +165,7 @@ public class DOMException extends HtmlUnitScriptable {
"QuotaExceededError",
"TimeoutError",
"InvalidNodeTypeError",
- "DataCloneError"});
+ "DataCloneError");
private int code_;
private String name_;
diff --git a/src/main/java/org/htmlunit/javascript/host/file/FileList.java b/src/main/java/org/htmlunit/javascript/host/file/FileList.java
index dcac5fbc819..6c8d7c64802 100644
--- a/src/main/java/org/htmlunit/javascript/host/file/FileList.java
+++ b/src/main/java/org/htmlunit/javascript/host/file/FileList.java
@@ -59,8 +59,8 @@ public FileList(final java.io.File[] array) {
super();
files_ = new ArrayList<>();
- for (int i = 0; i < array.length; i++) {
- files_.add(new File(array[i].getAbsolutePath()));
+ for (final java.io.File f : array) {
+ files_.add(new File(f.getAbsolutePath()));
}
}
diff --git a/src/main/java/org/htmlunit/util/ArrayUtils.java b/src/main/java/org/htmlunit/util/ArrayUtils.java
index 9fc63befe51..d5817af2276 100644
--- a/src/main/java/org/htmlunit/util/ArrayUtils.java
+++ b/src/main/java/org/htmlunit/util/ArrayUtils.java
@@ -29,22 +29,21 @@ private ArrayUtils() {
}
/**
- * @param s the string[] to check
+ * @param strings the string[] to check
* @param expected the string that we expect
* @return true if at least one element of the array equalsIgnoreCase to the expected string
*/
- public static boolean containsIgnoreCase(final String[] s, final String expected) {
+ public static boolean containsIgnoreCase(final String[] strings, final String expected) {
if (expected == null) {
throw new IllegalArgumentException("Expected string can't be null");
}
- if (s == null) {
+ if (strings == null) {
return false;
}
- for (int i = 0; i < s.length; i++) {
- final String string = s[i];
- if (expected.equalsIgnoreCase(string)) {
+ for (final String s : strings) {
+ if (expected.equalsIgnoreCase(s)) {
return true;
}
}
diff --git a/src/main/java/org/htmlunit/util/EncodingSniffer.java b/src/main/java/org/htmlunit/util/EncodingSniffer.java
index 2b8bb9e5293..1e4047d34e7 100644
--- a/src/main/java/org/htmlunit/util/EncodingSniffer.java
+++ b/src/main/java/org/htmlunit/util/EncodingSniffer.java
@@ -475,7 +475,7 @@ public static Charset sniffEncodingFromXmlDeclaration(final InputStream is) thro
int start = declaration.indexOf("encoding");
if (start != -1) {
start += 8;
- char delimiter;
+ final char delimiter;
outer:
while (true) {
switch (declaration.charAt(start)) {
diff --git a/src/main/java/org/htmlunit/xml/XmlPage.java b/src/main/java/org/htmlunit/xml/XmlPage.java
index f2bca56956b..bc26e9f34ad 100644
--- a/src/main/java/org/htmlunit/xml/XmlPage.java
+++ b/src/main/java/org/htmlunit/xml/XmlPage.java
@@ -127,7 +127,8 @@ public XmlPage(final WebResponse webResponse, final WebWindow enclosingWindow, f
LOG.warn("Failed parsing XML document '" + webResponse.getWebRequest().getUrl() + "'", e);
}
if (!ignoreSAXException) {
- throw new IOException(e.getMessage());
+ throw new IOException(
+ "Failed parsing XML document '" + webResponse.getWebRequest().getUrl() + "'", e);
}
}
}
From 49f0706ddd6d147a201e64f5c231b1084809333d Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 28 Apr 2025 19:31:25 +0200
Subject: [PATCH 089/125] checkstyle/pmd update
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index a6afab2d225..a4903a2fa53 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,9 +55,9 @@
1.5.5
- 10.23.0
+ 10.23.1
4.9.3
- 7.12.0
+ 7.13.0
1.4.0
10.0.4
From af325b33e8ae631fdfe60eb1f0a7be8996f07295 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 28 Apr 2025 19:45:19 +0200
Subject: [PATCH 090/125] checkstyle fixes
---
checkstyle.xml | 2 +-
src/main/java/org/htmlunit/WebResponse.java | 2 +-
src/main/java/org/htmlunit/html/HtmlDomTreeWalker.java | 2 +-
src/main/java/org/htmlunit/html/HtmlOption.java | 2 +-
.../java/org/htmlunit/javascript/JavaScriptEngine.java | 2 +-
.../java/org/htmlunit/javascript/host/Notification.java | 2 +-
src/main/java/org/htmlunit/javascript/host/Screen.java | 2 +-
src/main/java/org/htmlunit/javascript/host/Window.java | 6 +++---
.../javascript/host/WindowOrWorkerGlobalScopeMixin.java | 4 ++--
.../org/htmlunit/javascript/host/dom/DOMException.java | 2 +-
.../htmlunit/javascript/host/dom/DOMImplementation.java | 4 ++--
.../java/org/htmlunit/javascript/host/dom/Document.java | 8 ++++----
.../htmlunit/javascript/host/dom/DocumentFragment.java | 2 +-
.../java/org/htmlunit/javascript/host/dom/NodeFilter.java | 2 +-
src/main/java/org/htmlunit/javascript/host/dom/Range.java | 2 +-
.../java/org/htmlunit/javascript/host/dom/TreeWalker.java | 2 +-
.../org/htmlunit/javascript/host/event/EventTarget.java | 2 +-
.../org/htmlunit/javascript/host/html/HTMLDocument.java | 2 +-
.../javascript/host/html/HTMLTableRowElement.java | 2 +-
.../org/htmlunit/javascript/host/media/MediaSource.java | 2 +-
.../javascript/host/media/OfflineAudioContext.java | 2 +-
.../host/worker/DedicatedWorkerGlobalScope.java | 4 ++--
.../javascript/proxyautoconfig/ProxyAutoConfig.java | 4 ++--
.../htmlunit/platform/dom/traversal/DomTreeWalker.java | 2 +-
.../htmlunit/javascript/host/WindowConcurrencyTest.java | 6 ++----
25 files changed, 35 insertions(+), 37 deletions(-)
diff --git a/checkstyle.xml b/checkstyle.xml
index 4440727915b..7fdabc19033 100644
--- a/checkstyle.xml
+++ b/checkstyle.xml
@@ -134,7 +134,7 @@
-
+
diff --git a/src/main/java/org/htmlunit/WebResponse.java b/src/main/java/org/htmlunit/WebResponse.java
index 80ce54b66d5..4661bde6bb1 100644
--- a/src/main/java/org/htmlunit/WebResponse.java
+++ b/src/main/java/org/htmlunit/WebResponse.java
@@ -240,7 +240,7 @@ public Charset getContentCharset() {
* @return {@code true} if the charset of the previous call to {@link #getContentCharset()} was
* "tentative".
* @see
- * https://html.spec.whatwg.org/multipage/parsing.html#concept-encoding-confidence
+ * https://html.spec.whatwg.org/multipage/parsing.html#concept-encoding-confidence
*/
public boolean wasContentCharsetTentative() {
return wasContentCharsetTentative_;
diff --git a/src/main/java/org/htmlunit/html/HtmlDomTreeWalker.java b/src/main/java/org/htmlunit/html/HtmlDomTreeWalker.java
index e2db02a4411..0f6a9a7625e 100644
--- a/src/main/java/org/htmlunit/html/HtmlDomTreeWalker.java
+++ b/src/main/java/org/htmlunit/html/HtmlDomTreeWalker.java
@@ -26,7 +26,7 @@
* therefore we have this impl as backend.
*
* @see
- * DOM-Level-2-Traversal-Range
+ * DOM-Level-2-Traversal-Range
* @author Mike Dirolf
* @author Frank Danek
* @author Ahmed Ashour
diff --git a/src/main/java/org/htmlunit/html/HtmlOption.java b/src/main/java/org/htmlunit/html/HtmlOption.java
index 12438877c9e..c0dda178ab6 100644
--- a/src/main/java/org/htmlunit/html/HtmlOption.java
+++ b/src/main/java/org/htmlunit/html/HtmlOption.java
@@ -224,7 +224,7 @@ public final void setLabelAttribute(final String newLabel) {
* HTML 4.01
* documentation for details on the use of this attribute.
* @see
- * initial value if value attribute is not set
+ * initial value if value attribute is not set
* @return the value of the attribute {@code value}
*/
public final String getValueAttribute() {
diff --git a/src/main/java/org/htmlunit/javascript/JavaScriptEngine.java b/src/main/java/org/htmlunit/javascript/JavaScriptEngine.java
index 9b93756300f..7d299d2301c 100644
--- a/src/main/java/org/htmlunit/javascript/JavaScriptEngine.java
+++ b/src/main/java/org/htmlunit/javascript/JavaScriptEngine.java
@@ -103,7 +103,7 @@
* @author Sven Strickroth
*
* @see
- * Rhino and Java Browser
+ * Rhino and Java Browser
*/
public class JavaScriptEngine implements AbstractJavaScriptEngine\n"
+ + "";
+ loadPageVerifyTitle2(html);
+ }
+
/**
* @throws Exception if the test fails
*/
From 49b5ed542660174b97eaf5f1a42b2846e97e260b Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 30 Apr 2025 09:51:08 +0200
Subject: [PATCH 094/125] cleanup
---
src/main/java/org/htmlunit/html/DomNode.java | 3 ---
1 file changed, 3 deletions(-)
diff --git a/src/main/java/org/htmlunit/html/DomNode.java b/src/main/java/org/htmlunit/html/DomNode.java
index d667dc0cf04..755c7c2ee21 100644
--- a/src/main/java/org/htmlunit/html/DomNode.java
+++ b/src/main/java/org/htmlunit/html/DomNode.java
@@ -2296,9 +2296,6 @@ public DomElement closest(final String selectorString) {
* An unmodifiable empty {@link NamedNodeMap} implementation.
*/
private static final class ReadOnlyEmptyNamedNodeMapImpl implements NamedNodeMap, Serializable {
- private ReadOnlyEmptyNamedNodeMapImpl() {
- super();
- }
/**
* {@inheritDoc}
From bd1af9758dbb81765a56e20f6677ec88c9d0e118 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 30 Apr 2025 09:51:34 +0200
Subject: [PATCH 095/125] marked as @FunctionalInterface
---
src/changes/changes.xml | 4 ++++
src/main/java/org/htmlunit/AlertHandler.java | 1 +
src/main/java/org/htmlunit/ConfirmHandler.java | 2 ++
src/main/java/org/htmlunit/FrameContentHandler.java | 1 +
src/main/java/org/htmlunit/IncorrectnessListener.java | 2 ++
.../java/org/htmlunit/html/CharacterDataChangeListener.java | 2 ++
6 files changed, 12 insertions(+)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index fde202e65ca..e77668763f6 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,10 @@
+
+ AlertHandler, ConfirmHandler, FrameContentHandler, CharacterDataChangeListener, and IncorrectnessListener
+ marked as @FunctionalInterface.
+
Upgrade Apache commons-io to 2.19.0.
diff --git a/src/main/java/org/htmlunit/AlertHandler.java b/src/main/java/org/htmlunit/AlertHandler.java
index 227f2f186a1..d8b768a0f6c 100644
--- a/src/main/java/org/htmlunit/AlertHandler.java
+++ b/src/main/java/org/htmlunit/AlertHandler.java
@@ -23,6 +23,7 @@
* @author Mike Bowler
* @author Ronald Brill
*/
+@FunctionalInterface
public interface AlertHandler extends Serializable {
/**
diff --git a/src/main/java/org/htmlunit/ConfirmHandler.java b/src/main/java/org/htmlunit/ConfirmHandler.java
index ea1b12a47eb..1502869f3e2 100644
--- a/src/main/java/org/htmlunit/ConfirmHandler.java
+++ b/src/main/java/org/htmlunit/ConfirmHandler.java
@@ -21,7 +21,9 @@
* are triggered when the JavaScript function window.confirm()
is invoked.
*
* @author Mike Bowler
+ * @author Ronald Brill
*/
+@FunctionalInterface
public interface ConfirmHandler extends Serializable {
/**
diff --git a/src/main/java/org/htmlunit/FrameContentHandler.java b/src/main/java/org/htmlunit/FrameContentHandler.java
index 83ddad1c8d7..90917500cba 100644
--- a/src/main/java/org/htmlunit/FrameContentHandler.java
+++ b/src/main/java/org/htmlunit/FrameContentHandler.java
@@ -23,6 +23,7 @@
*
* @author Ronald Brill
*/
+@FunctionalInterface
public interface FrameContentHandler {
/**
diff --git a/src/main/java/org/htmlunit/IncorrectnessListener.java b/src/main/java/org/htmlunit/IncorrectnessListener.java
index 0a1f5dbc1d4..be471515020 100644
--- a/src/main/java/org/htmlunit/IncorrectnessListener.java
+++ b/src/main/java/org/htmlunit/IncorrectnessListener.java
@@ -20,7 +20,9 @@
* that HtmlUnit can handle but that denote a badly written application.
*
* @author Marc Guillemot
+ * @author Ronald Brill
*/
+@FunctionalInterface
public interface IncorrectnessListener {
/**
diff --git a/src/main/java/org/htmlunit/html/CharacterDataChangeListener.java b/src/main/java/org/htmlunit/html/CharacterDataChangeListener.java
index fab5572b72b..d37c4ce833f 100644
--- a/src/main/java/org/htmlunit/html/CharacterDataChangeListener.java
+++ b/src/main/java/org/htmlunit/html/CharacterDataChangeListener.java
@@ -20,8 +20,10 @@
* Implementations of this interface receive notifications of changes to the Character Data.
*
* @author Ahmed Ashour
+ * @author Ronald Brill
* @see CharacterDataChangeEvent
*/
+@FunctionalInterface
public interface CharacterDataChangeListener extends Serializable {
/**
From f4697a84768939ebb289c16b2afc1c5b7805fdea Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 30 Apr 2025 11:51:38 +0200
Subject: [PATCH 096/125] improved null handling
---
.../java/org/htmlunit/html/HtmlElement.java | 43 ++++++++++++-------
1 file changed, 27 insertions(+), 16 deletions(-)
diff --git a/src/main/java/org/htmlunit/html/HtmlElement.java b/src/main/java/org/htmlunit/html/HtmlElement.java
index 3e9b9544b10..385399cef54 100644
--- a/src/main/java/org/htmlunit/html/HtmlElement.java
+++ b/src/main/java/org/htmlunit/html/HtmlElement.java
@@ -196,17 +196,17 @@ protected void setAttributeNS(final String namespaceURI, final String qualifiedN
final String attributeValue, final boolean notifyAttributeChangeListeners,
final boolean notifyMutationObservers) {
+ final HtmlPage htmlPage = getHtmlPageOrNull();
+
// TODO: Clean up; this is a hack for HtmlElement living within an XmlPage.
- if (null == getHtmlPageOrNull()) {
+ if (null == htmlPage) {
super.setAttributeNS(namespaceURI, qualifiedName, attributeValue, notifyAttributeChangeListeners,
notifyMutationObservers);
return;
}
final String oldAttributeValue = getAttribute(qualifiedName);
- final HtmlPage htmlPage = (HtmlPage) getPage();
final boolean mappedElement = isAttachedToPage()
- && htmlPage != null
&& (DomElement.NAME_ATTRIBUTE.equals(qualifiedName) || DomElement.ID_ATTRIBUTE.equals(qualifiedName));
if (mappedElement) {
// cast is save here because isMappedElement checks for HtmlPage
@@ -292,12 +292,19 @@ private void fireAttributeChangeImpl(final HtmlAttributeChangeEvent event,
*/
@Override
public Attr setAttributeNode(final Attr attribute) {
+ final HtmlPage htmlPage = getHtmlPageOrNull();
+
+ // TODO: Clean up; this is a hack for HtmlElement living within an XmlPage.
+ if (null == htmlPage) {
+ return super.setAttributeNode(attribute);
+ }
+
final String qualifiedName = attribute.getName();
final String oldAttributeValue = getAttribute(qualifiedName);
- final HtmlPage htmlPage = (HtmlPage) getPage();
+
final boolean mappedElement = isAttachedToPage()
- && htmlPage != null
- && (DomElement.NAME_ATTRIBUTE.equals(qualifiedName) || DomElement.ID_ATTRIBUTE.equals(qualifiedName));
+ && (DomElement.NAME_ATTRIBUTE.equals(qualifiedName)
+ || DomElement.ID_ATTRIBUTE.equals(qualifiedName));
if (mappedElement) {
htmlPage.removeMappedElement(this, false, false);
}
@@ -330,23 +337,27 @@ public void removeAttribute(final String attributeName) {
}
final HtmlPage htmlPage = getHtmlPageOrNull();
- final boolean mapped = htmlPage != null
- && (DomElement.NAME_ATTRIBUTE.equals(attributeName) || DomElement.ID_ATTRIBUTE.equals(attributeName));
+
+ // TODO: Clean up; this is a hack for HtmlElement living within an XmlPage.
+ if (null == htmlPage) {
+ super.removeAttribute(attributeName);
+ return;
+ }
+
+ final boolean mapped = DomElement.NAME_ATTRIBUTE.equals(attributeName) || DomElement.ID_ATTRIBUTE.equals(attributeName);
if (mapped) {
htmlPage.removeMappedElement(this, false, false);
}
super.removeAttribute(attributeName);
- if (htmlPage != null) {
- if (mapped) {
- htmlPage.addMappedElement(this, false);
- }
-
- final HtmlAttributeChangeEvent event = new HtmlAttributeChangeEvent(this, attributeName, value);
- fireHtmlAttributeRemoved(event);
- htmlPage.fireHtmlAttributeRemoved(event);
+ if (mapped) {
+ htmlPage.addMappedElement(this, false);
}
+
+ final HtmlAttributeChangeEvent event = new HtmlAttributeChangeEvent(this, attributeName, value);
+ fireHtmlAttributeRemoved(event);
+ htmlPage.fireHtmlAttributeRemoved(event);
}
/**
From 5a26ef0911e896537fc057c4347c9e16eee346d4 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 30 Apr 2025 12:02:27 +0200
Subject: [PATCH 097/125] disable some pmd checks for specific classes
---
src/main/java/org/htmlunit/WebClient.java | 1 +
src/main/java/org/htmlunit/WebClientOptions.java | 1 +
src/main/java/org/htmlunit/WebRequest.java | 1 +
src/main/java/org/htmlunit/html/HtmlPage.java | 1 +
src/main/java/org/htmlunit/javascript/host/Window.java | 1 +
5 files changed, 5 insertions(+)
diff --git a/src/main/java/org/htmlunit/WebClient.java b/src/main/java/org/htmlunit/WebClient.java
index c2f04ea3920..6e4b30367f3 100644
--- a/src/main/java/org/htmlunit/WebClient.java
+++ b/src/main/java/org/htmlunit/WebClient.java
@@ -151,6 +151,7 @@
* @author René Schwietzke
* @author Sven Strickroth
*/
+@SuppressWarnings("PMD.TooManyFields")
public class WebClient implements Serializable, AutoCloseable {
/** Logging support. */
diff --git a/src/main/java/org/htmlunit/WebClientOptions.java b/src/main/java/org/htmlunit/WebClientOptions.java
index a1a1237243d..c772b5e6dd7 100644
--- a/src/main/java/org/htmlunit/WebClientOptions.java
+++ b/src/main/java/org/htmlunit/WebClientOptions.java
@@ -37,6 +37,7 @@
* @author Madis Pärn
* @author Ronald Brill
*/
+@SuppressWarnings("PMD.TooManyFields")
public class WebClientOptions implements Serializable {
/** 1920. */
diff --git a/src/main/java/org/htmlunit/WebRequest.java b/src/main/java/org/htmlunit/WebRequest.java
index 556752ef295..137225f8c17 100644
--- a/src/main/java/org/htmlunit/WebRequest.java
+++ b/src/main/java/org/htmlunit/WebRequest.java
@@ -54,6 +54,7 @@
* @author Lai Quang Duong
* @author Kristof Neirynck
*/
+@SuppressWarnings("PMD.TooManyFields")
public class WebRequest implements Serializable {
/**
diff --git a/src/main/java/org/htmlunit/html/HtmlPage.java b/src/main/java/org/htmlunit/html/HtmlPage.java
index 837d6a39ad3..a3a8547a386 100644
--- a/src/main/java/org/htmlunit/html/HtmlPage.java
+++ b/src/main/java/org/htmlunit/html/HtmlPage.java
@@ -139,6 +139,7 @@
* @author Lai Quang Duong
* @author Sven Strickroth
*/
+@SuppressWarnings("PMD.TooManyFields")
public class HtmlPage extends SgmlPage {
private static final Log LOG = LogFactory.getLog(HtmlPage.class);
diff --git a/src/main/java/org/htmlunit/javascript/host/Window.java b/src/main/java/org/htmlunit/javascript/host/Window.java
index 851083be0dd..371000da5f5 100644
--- a/src/main/java/org/htmlunit/javascript/host/Window.java
+++ b/src/main/java/org/htmlunit/javascript/host/Window.java
@@ -143,6 +143,7 @@
* @see MSDN documentation
*/
@JsxClass
+@SuppressWarnings("PMD.TooManyFields")
public class Window extends EventTarget implements WindowOrWorkerGlobalScope, AutoCloseable {
private static final Log LOG = LogFactory.getLog(Window.class);
From 3b40dcc8a2b83df7c6916571ddd73e8d34fec685 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 30 Apr 2025 12:03:35 +0200
Subject: [PATCH 098/125] disable some pmd checks for specific classes
---
src/main/java/org/htmlunit/BrowserVersion.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/htmlunit/BrowserVersion.java b/src/main/java/org/htmlunit/BrowserVersion.java
index 122b808b70c..68afc603429 100644
--- a/src/main/java/org/htmlunit/BrowserVersion.java
+++ b/src/main/java/org/htmlunit/BrowserVersion.java
@@ -61,7 +61,7 @@
* @author Frank Danek
* @author Ronald Brill
*/
-@SuppressWarnings("PMD.AvoidDuplicateLiterals")
+@SuppressWarnings({"PMD.AvoidDuplicateLiterals", "PMD.TooManyFields"})
public final class BrowserVersion implements Serializable {
/** Latest Firefox. */
From da9c39e82087c5dd07e706407710f538d6bbfc96 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 30 Apr 2025 13:34:17 +0200
Subject: [PATCH 099/125] cleanup
---
src/test/java/org/htmlunit/WebClientTest.java | 2 +-
.../htmlunit/javascript/host/html/HTMLIFrameElementTest.java | 3 +--
.../org/htmlunit/javascript/host/xml/XMLHttpRequest3Test.java | 3 +--
3 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/src/test/java/org/htmlunit/WebClientTest.java b/src/test/java/org/htmlunit/WebClientTest.java
index ffbbf22b524..2aa04f408dd 100644
--- a/src/test/java/org/htmlunit/WebClientTest.java
+++ b/src/test/java/org/htmlunit/WebClientTest.java
@@ -1227,7 +1227,7 @@ public void openerInFrameset() throws Exception {
webClient.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
final HtmlPage page = webClient.getPage(URL_FIRST);
- final HtmlPage pageInFrame = (HtmlPage) ((WebWindow) page.getFrames().get(0)).getEnclosedPage();
+ final HtmlPage pageInFrame = (HtmlPage) page.getFrames().get(0).getEnclosedPage();
pageInFrame.getAnchors().get(0).click();
final String[] expectedAlerts = {"null", "null"};
diff --git a/src/test/java/org/htmlunit/javascript/host/html/HTMLIFrameElementTest.java b/src/test/java/org/htmlunit/javascript/host/html/HTMLIFrameElementTest.java
index 17eade250c0..0efcfec4455 100644
--- a/src/test/java/org/htmlunit/javascript/host/html/HTMLIFrameElementTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/html/HTMLIFrameElementTest.java
@@ -20,7 +20,6 @@
import org.htmlunit.SimpleWebTestCase;
import org.htmlunit.WebClient;
import org.htmlunit.html.FrameWindow;
-import org.htmlunit.html.HtmlElement;
import org.htmlunit.html.HtmlInlineFrame;
import org.htmlunit.html.HtmlPage;
import org.htmlunit.junit.BrowserRunner;
@@ -130,7 +129,7 @@ public void removeFrameWindow() throws Exception {
assertEquals("frame content", ((HtmlPage) page.getFrameByName("content").getEnclosedPage()).asNormalizedText());
// replace frame tag with javascript
- ((HtmlElement) page.getElementById("clickId")).click();
+ page.getElementById("clickId").click();
assertEquals("new content", page.getElementById("content").asNormalizedText());
diff --git a/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest3Test.java b/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest3Test.java
index ef3c2a93f0c..e4e3c1699a3 100644
--- a/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest3Test.java
+++ b/src/test/java/org/htmlunit/javascript/host/xml/XMLHttpRequest3Test.java
@@ -42,7 +42,6 @@
import org.htmlunit.html.DomElement;
import org.htmlunit.html.HtmlElement;
import org.htmlunit.html.HtmlPage;
-import org.htmlunit.html.HtmlSubmitInput;
import org.htmlunit.javascript.host.xml.XMLHttpRequestTest.StreamingServlet;
import org.htmlunit.junit.BrowserRunner;
import org.htmlunit.junit.annotation.Alerts;
@@ -405,7 +404,7 @@ public void ajaxInfluencesSubmitHeaders() throws Exception {
while (STATE_ < 1) {
Thread.sleep(42);
}
- ((HtmlSubmitInput) elem).click();
+ elem.click();
client.waitForBackgroundJavaScript(DEFAULT_WAIT_TIME.toMillis());
assertEquals(COLLECTED_HEADERS.toString(), 2, COLLECTED_HEADERS.size());
From 982a6c695478dd1e8052da8535c1ac497f1ef919 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Wed, 30 Apr 2025 13:48:21 +0200
Subject: [PATCH 100/125] another test
---
.../org/htmlunit/html/HtmlNoScriptTest.java | 37 +++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/src/test/java/org/htmlunit/html/HtmlNoScriptTest.java b/src/test/java/org/htmlunit/html/HtmlNoScriptTest.java
index 9c635a18a15..19a2fa1e770 100644
--- a/src/test/java/org/htmlunit/html/HtmlNoScriptTest.java
+++ b/src/test/java/org/htmlunit/html/HtmlNoScriptTest.java
@@ -29,6 +29,7 @@
* @author Ahmed Ashour
* @author Marc Guillemot
* @author Frank Danek
+ * @author Ronald Brill
*/
@RunWith(BrowserRunner.class)
public class HtmlNoScriptTest extends WebDriverTestCase {
@@ -150,4 +151,40 @@ public void formValues() throws Exception {
assertFalse(webDriver.getCurrentUrl().contains("__webpage_no_js__"));
}
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("Has Script")
+ public void jsDetection() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + " \n"
+ + " \n"
+ + "start \n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "\n"
+ + "";
+
+ final String htmlNoScript = DOCTYPE_HTML
+ + "\n"
+ + "No Script\u00A7 \n"
+ + "\n"
+ + "";
+ getMockWebConnection().setResponse(URL_SECOND, htmlNoScript);
+
+ final String htmlHasScript = DOCTYPE_HTML
+ + "\n"
+ + "Has Script\u00A7 \n"
+ + "\n"
+ + "";
+ getMockWebConnection().setResponse(URL_THIRD, htmlHasScript);
+
+ loadPage2(html);
+ verifyTitle2(DEFAULT_WAIT_TIME, getWebDriver(), getExpectedAlerts());
+ }
}
From 2df464d62b466552828fccbe68f15114c3085ccb Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Thu, 1 May 2025 09:17:31 +0200
Subject: [PATCH 101/125] checkstyle
---
src/main/java/org/htmlunit/html/HtmlElement.java | 3 ++-
.../org/htmlunit/javascript/host/css/CSSStyleDeclaration.java | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/htmlunit/html/HtmlElement.java b/src/main/java/org/htmlunit/html/HtmlElement.java
index 385399cef54..4769f7db56e 100644
--- a/src/main/java/org/htmlunit/html/HtmlElement.java
+++ b/src/main/java/org/htmlunit/html/HtmlElement.java
@@ -344,7 +344,8 @@ public void removeAttribute(final String attributeName) {
return;
}
- final boolean mapped = DomElement.NAME_ATTRIBUTE.equals(attributeName) || DomElement.ID_ATTRIBUTE.equals(attributeName);
+ final boolean mapped = DomElement.NAME_ATTRIBUTE.equals(attributeName)
+ || DomElement.ID_ATTRIBUTE.equals(attributeName);
if (mapped) {
htmlPage.removeMappedElement(this, false, false);
}
diff --git a/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java b/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
index ab87f4dd511..d9541d257de 100644
--- a/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
+++ b/src/main/java/org/htmlunit/javascript/host/css/CSSStyleDeclaration.java
@@ -1984,7 +1984,7 @@ private void setStyleLengthAttribute(final String name, final Object value, fina
}
String unit = "px";
- if (percent && valueString.endsWith("%")) {
+ if (percent && valueString.endsWith("%")) {
unit = valueString.substring(valueString.length() - 1);
valueString = valueString.substring(0, valueString.length() - 1);
}
From 97675f6e8872722f639439eff28718e0ad75edd5 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Thu, 1 May 2025 14:10:21 +0200
Subject: [PATCH 102/125] checkstyle
---
src/main/java/org/htmlunit/html/HtmlElement.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/htmlunit/html/HtmlElement.java b/src/main/java/org/htmlunit/html/HtmlElement.java
index 4769f7db56e..7a2c2a87947 100644
--- a/src/main/java/org/htmlunit/html/HtmlElement.java
+++ b/src/main/java/org/htmlunit/html/HtmlElement.java
@@ -344,7 +344,7 @@ public void removeAttribute(final String attributeName) {
return;
}
- final boolean mapped = DomElement.NAME_ATTRIBUTE.equals(attributeName)
+ final boolean mapped = DomElement.NAME_ATTRIBUTE.equals(attributeName)
|| DomElement.ID_ATTRIBUTE.equals(attributeName);
if (mapped) {
htmlPage.removeMappedElement(this, false, false);
From 2f81fd7437b0473f2faba7fbd6eadc1abd3fb247 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 9 May 2025 12:33:10 +0200
Subject: [PATCH 103/125] micro optimization
---
src/main/java/org/htmlunit/HttpWebConnection.java | 3 ++-
src/main/java/org/htmlunit/css/CssStyleSheet.java | 3 ++-
src/main/java/org/htmlunit/html/HtmlElement.java | 3 ++-
src/main/java/org/htmlunit/html/HtmlTable.java | 8 +++++---
src/main/java/org/htmlunit/html/impl/SimpleRange.java | 6 ++++--
src/main/java/org/htmlunit/html/xpath/XPathHelper.java | 3 ++-
.../httpclient/HtmlUnitBrowserCompatCookieSpec.java | 3 ++-
.../java/org/htmlunit/javascript/host/crypto/Crypto.java | 3 ++-
.../org/htmlunit/javascript/host/dom/DOMTokenList.java | 6 ++++--
.../java/org/htmlunit/javascript/host/dom/Document.java | 3 ++-
.../java/org/htmlunit/javascript/host/dom/NodeList.java | 3 ++-
src/main/java/org/htmlunit/javascript/host/file/Blob.java | 3 ++-
.../org/htmlunit/javascript/host/xml/XMLSerializer.java | 3 ++-
.../org/htmlunit/javascript/host/xml/XSLTProcessor.java | 3 ++-
14 files changed, 35 insertions(+), 18 deletions(-)
diff --git a/src/main/java/org/htmlunit/HttpWebConnection.java b/src/main/java/org/htmlunit/HttpWebConnection.java
index 68ac8252b6e..7a15b14943e 100644
--- a/src/main/java/org/htmlunit/HttpWebConnection.java
+++ b/src/main/java/org/htmlunit/HttpWebConnection.java
@@ -426,7 +426,8 @@ private static Charset getCharset(final Charset charset, final List 127) {
return charset;
}
diff --git a/src/main/java/org/htmlunit/css/CssStyleSheet.java b/src/main/java/org/htmlunit/css/CssStyleSheet.java
index 8cce649b54a..9afb0bc3feb 100644
--- a/src/main/java/org/htmlunit/css/CssStyleSheet.java
+++ b/src/main/java/org/htmlunit/css/CssStyleSheet.java
@@ -1205,7 +1205,8 @@ public static boolean isActive(final MediaListImpl mediaList, final WebWindow we
return true;
}
- for (int i = 0; i < mediaList.getLength(); i++) {
+ final int length = mediaList.getLength();
+ for (int i = 0; i < length; i++) {
final MediaQuery mediaQuery = mediaList.mediaQuery(i);
boolean isActive = isActive(mediaQuery, webWindow);
if (mediaQuery.isNot()) {
diff --git a/src/main/java/org/htmlunit/html/HtmlElement.java b/src/main/java/org/htmlunit/html/HtmlElement.java
index 7a2c2a87947..68034b78210 100644
--- a/src/main/java/org/htmlunit/html/HtmlElement.java
+++ b/src/main/java/org/htmlunit/html/HtmlElement.java
@@ -679,7 +679,8 @@ public Page type(final Keyboard keyboard) throws IOException {
}
}
- for (int i = 0; i < keys.size(); i++) {
+ final int size = keys.size();
+ for (int i = 0; i < size; i++) {
final Object[] entry = keys.get(i);
if (entry.length == 1) {
type((char) entry[0], i == keys.size() - 1);
diff --git a/src/main/java/org/htmlunit/html/HtmlTable.java b/src/main/java/org/htmlunit/html/HtmlTable.java
index a656ed38ebb..9d62e33c804 100644
--- a/src/main/java/org/htmlunit/html/HtmlTable.java
+++ b/src/main/java/org/htmlunit/html/HtmlTable.java
@@ -91,9 +91,11 @@ public final HtmlTableCell getCellAt(final int rowIndex, final int columnIndex)
return cell;
}
}
- if (cell.getRowSpan() > 1 || cell.getColumnSpan() > 1) {
- for (int i = 0; i < cell.getRowSpan(); i++) {
- for (int j = 0; j < cell.getColumnSpan(); j++) {
+ final int rowSpan = cell.getRowSpan();
+ final int columnSpan = cell.getColumnSpan();
+ if (rowSpan > 1 || columnSpan > 1) {
+ for (int i = 0; i < rowSpan; i++) {
+ for (int j = 0; j < columnSpan; j++) {
occupied.add(new Position(row + i, col + j));
}
}
diff --git a/src/main/java/org/htmlunit/html/impl/SimpleRange.java b/src/main/java/org/htmlunit/html/impl/SimpleRange.java
index a9fa08f70a3..e9ef3978922 100644
--- a/src/main/java/org/htmlunit/html/impl/SimpleRange.java
+++ b/src/main/java/org/htmlunit/html/impl/SimpleRange.java
@@ -521,7 +521,8 @@ private static void deleteBefore(final DomNode node, int offset) {
}
else {
final DomNodeList children = node.getChildNodes();
- for (int i = 0; i < offset && i < children.getLength(); i++) {
+ final int length = children.getLength();
+ for (int i = 0; i < offset && i < length; i++) {
final DomNode child = children.get(i);
child.remove();
i--;
@@ -540,7 +541,8 @@ private static void deleteAfter(final DomNode node, final int offset) {
}
else {
final DomNodeList children = node.getChildNodes();
- for (int i = offset; i < children.getLength(); i++) {
+ final int length = children.getLength();
+ for (int i = offset; i < length; i++) {
final DomNode child = children.get(i);
child.remove();
i--;
diff --git a/src/main/java/org/htmlunit/html/xpath/XPathHelper.java b/src/main/java/org/htmlunit/html/xpath/XPathHelper.java
index e7e675ff736..881058edc74 100644
--- a/src/main/java/org/htmlunit/html/xpath/XPathHelper.java
+++ b/src/main/java/org/htmlunit/html/xpath/XPathHelper.java
@@ -112,7 +112,8 @@ public static List getByXPath(final Node node, final XPathAdapter xpath,
if (result instanceof XNodeSet) {
final NodeList nodelist = result.nodelist();
- for (int i = 0; i < nodelist.getLength(); i++) {
+ final int length = nodelist.getLength();
+ for (int i = 0; i < length; i++) {
list.add((T) nodelist.item(i));
}
}
diff --git a/src/main/java/org/htmlunit/httpclient/HtmlUnitBrowserCompatCookieSpec.java b/src/main/java/org/htmlunit/httpclient/HtmlUnitBrowserCompatCookieSpec.java
index 893ec8bf758..fce1220057f 100644
--- a/src/main/java/org/htmlunit/httpclient/HtmlUnitBrowserCompatCookieSpec.java
+++ b/src/main/java/org/htmlunit/httpclient/HtmlUnitBrowserCompatCookieSpec.java
@@ -223,7 +223,8 @@ public List formatCookies(final List cookies) {
final CharArrayBuffer buffer = new CharArrayBuffer(20 * cookies.size());
buffer.append(SM.COOKIE);
buffer.append(": ");
- for (int i = 0; i < cookies.size(); i++) {
+ final int size = cookies.size();
+ for (int i = 0; i < size; i++) {
final Cookie cookie = cookies.get(i);
if (i > 0) {
buffer.append("; ");
diff --git a/src/main/java/org/htmlunit/javascript/host/crypto/Crypto.java b/src/main/java/org/htmlunit/javascript/host/crypto/Crypto.java
index 9db8732c22c..45cd4589e3b 100644
--- a/src/main/java/org/htmlunit/javascript/host/crypto/Crypto.java
+++ b/src/main/java/org/htmlunit/javascript/host/crypto/Crypto.java
@@ -85,7 +85,8 @@ public NativeTypedArrayView> getRandomValues(final NativeTypedArrayView> arr
DOMException.QUOTA_EXCEEDED_ERR);
}
- for (int i = 0; i < array.getByteLength() / array.getBytesPerElement(); i++) {
+ final int lenght = array.getByteLength() / array.getBytesPerElement();
+ for (int i = 0; i < lenght; i++) {
array.put(i, array, RANDOM.nextInt());
}
return array;
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java b/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java
index 8f5b926b5b5..d8df6d1c0b4 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java
@@ -371,7 +371,8 @@ public Object[] getIds() {
final List parts = split(getValue());
final Object[] ids = new Object[parts.size() + normalIds.length];
- for (int i = 0; i < parts.size(); i++) {
+ final int size = parts.size();
+ for (int i = 0; i < size; i++) {
ids[i] = i;
}
System.arraycopy(normalIds, 0, ids, parts.size(), normalIds.length);
@@ -421,7 +422,8 @@ public void forEach(final Object callback) {
final Function function = (Function) callback;
final Scriptable scope = getParentScope();
final List parts = split(value);
- for (int i = 0; i < parts.size(); i++) {
+ final int size = parts.size();
+ for (int i = 0; i < size; i++) {
function.call(cx, scope, this, new Object[] {parts.get(i), i, this});
}
return null;
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/Document.java b/src/main/java/org/htmlunit/javascript/host/dom/Document.java
index fa7aa5c2804..edb5b32234a 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/Document.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/Document.java
@@ -624,7 +624,8 @@ public HtmlUnitScriptable createElement(final Object tagName) {
"createElement: Provided string '" + tagNameString + "' contains an invalid character",
org.htmlunit.javascript.host.dom.DOMException.INVALID_CHARACTER_ERR);
}
- for (int i = 1; i < tagNameString.length(); i++) {
+ final int length = tagNameString.length();
+ for (int i = 1; i < length; i++) {
final int c = tagNameString.charAt(i);
if (!(Character.isLetterOrDigit(c)
|| ':' == c
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java b/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
index ec43c0586f6..012a88316af 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
@@ -160,7 +160,8 @@ public void forEach(final Object callback) {
final ContextAction contextAction = cx -> {
final Function function = (Function) callback;
final Scriptable scope = getParentScope();
- for (int i = 0; i < nodes.size(); i++) {
+ final int size = nodes.size();
+ for (int i = 0; i < size; i++) {
function.call(cx, scope, this, new Object[] {nodes.get(i).getScriptableObject(), i, this});
}
return null;
diff --git a/src/main/java/org/htmlunit/javascript/host/file/Blob.java b/src/main/java/org/htmlunit/javascript/host/file/Blob.java
index 96a45e24d2e..7d3fce2fba9 100644
--- a/src/main/java/org/htmlunit/javascript/host/file/Blob.java
+++ b/src/main/java/org/htmlunit/javascript/host/file/Blob.java
@@ -157,7 +157,8 @@ protected static InMemoryBackend create(final NativeArray fileBits, final String
}
final ByteArrayOutputStream out = new ByteArrayOutputStream();
- for (long i = 0; i < fileBits.getLength(); i++) {
+ final long length = fileBits.getLength();
+ for (long i = 0; i < length; i++) {
final Object fileBit = fileBits.get(i);
if (fileBit instanceof NativeArrayBuffer) {
final byte[] bytes = ((NativeArrayBuffer) fileBit).getBuffer();
diff --git a/src/main/java/org/htmlunit/javascript/host/xml/XMLSerializer.java b/src/main/java/org/htmlunit/javascript/host/xml/XMLSerializer.java
index 0f8d106aec0..a24de4063fc 100644
--- a/src/main/java/org/htmlunit/javascript/host/xml/XMLSerializer.java
+++ b/src/main/java/org/htmlunit/javascript/host/xml/XMLSerializer.java
@@ -169,7 +169,8 @@ else if (foredNamespace != null) {
}
final NamedNodeMap attributesMap = node.getAttributes();
- for (int i = 0; i < attributesMap.getLength(); i++) {
+ final int lenght = attributesMap.getLength();
+ for (int i = 0; i < lenght; i++) {
final DomAttr attrib = (DomAttr) attributesMap.item(i);
builder.append(' ').append(attrib.getQualifiedName())
.append("=\"").append(attrib.getValue()).append('"');
diff --git a/src/main/java/org/htmlunit/javascript/host/xml/XSLTProcessor.java b/src/main/java/org/htmlunit/javascript/host/xml/XSLTProcessor.java
index 454c496236f..d0fc8566fd6 100644
--- a/src/main/java/org/htmlunit/javascript/host/xml/XSLTProcessor.java
+++ b/src/main/java/org/htmlunit/javascript/host/xml/XSLTProcessor.java
@@ -246,7 +246,8 @@ public DocumentFragment transformToFragment(final Node source, final Object outp
if (result instanceof org.w3c.dom.Node) {
final SgmlPage parentPage = fragment.getPage();
final NodeList children = ((org.w3c.dom.Node) result).getChildNodes();
- for (int i = 0; i < children.getLength(); i++) {
+ final int length = children.getLength();
+ for (int i = 0; i < length; i++) {
XmlUtils.appendChild(parentPage, fragment, children.item(i), true);
}
}
From 712d3898cfed47aed9d1a0aebce4151f2634b044 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 9 May 2025 12:33:56 +0200
Subject: [PATCH 104/125] remove duplicate rule
---
checkstyle.xml | 1 -
1 file changed, 1 deletion(-)
diff --git a/checkstyle.xml b/checkstyle.xml
index 7fdabc19033..b6e52d0a9b1 100644
--- a/checkstyle.xml
+++ b/checkstyle.xml
@@ -264,7 +264,6 @@
-
\ No newline at end of file
From 06082915f85c7b43c3d4d75875aa5527ccee658a Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 9 May 2025 14:00:03 +0200
Subject: [PATCH 105/125] fix, last optimization was a bit too much
---
src/main/java/org/htmlunit/html/impl/SimpleRange.java | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/main/java/org/htmlunit/html/impl/SimpleRange.java b/src/main/java/org/htmlunit/html/impl/SimpleRange.java
index e9ef3978922..a9fa08f70a3 100644
--- a/src/main/java/org/htmlunit/html/impl/SimpleRange.java
+++ b/src/main/java/org/htmlunit/html/impl/SimpleRange.java
@@ -521,8 +521,7 @@ private static void deleteBefore(final DomNode node, int offset) {
}
else {
final DomNodeList children = node.getChildNodes();
- final int length = children.getLength();
- for (int i = 0; i < offset && i < length; i++) {
+ for (int i = 0; i < offset && i < children.getLength(); i++) {
final DomNode child = children.get(i);
child.remove();
i--;
@@ -541,8 +540,7 @@ private static void deleteAfter(final DomNode node, final int offset) {
}
else {
final DomNodeList children = node.getChildNodes();
- final int length = children.getLength();
- for (int i = offset; i < length; i++) {
+ for (int i = offset; i < children.getLength(); i++) {
final DomNode child = children.get(i);
child.remove();
i--;
From 9bec44832e5bd61f8473317479411990f7cf8527 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 9 May 2025 15:15:30 +0200
Subject: [PATCH 106/125] NodeList.forEach() now takes care of the current
state of the list
---
src/changes/changes.xml | 4 +
.../javascript/host/dom/NodeList.java | 12 +-
.../javascript/host/dom/NodeListTest.java | 134 ++++++++++++++++++
3 files changed, 145 insertions(+), 5 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index e77668763f6..f47aeee7b60 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,10 @@
+
+ NodeList.forEach() now takes care of the current state of the list
+ (e.g. the forEach function might add/remove elements to the list itself).
+
AlertHandler, ConfirmHandler, FrameContentHandler, CharacterDataChangeListener, and IncorrectnessListener
marked as @FunctionalInterface.
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java b/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
index 012a88316af..0725b64de54 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
@@ -152,18 +152,20 @@ public void forEach(final Object callback) {
"Foreach callback '" + JavaScriptEngine.toString(callback) + "' is not a function");
}
- final List nodes = getElements();
-
final WebClient client = getWindow().getWebWindow().getWebClient();
final HtmlUnitContextFactory cf = client.getJavaScriptEngine().getContextFactory();
final ContextAction contextAction = cx -> {
final Function function = (Function) callback;
final Scriptable scope = getParentScope();
- final int size = nodes.size();
- for (int i = 0; i < size; i++) {
- function.call(cx, scope, this, new Object[] {nodes.get(i).getScriptableObject(), i, this});
+
+ final int size = getElements().size();
+ int i = 0;
+ while (i < size) {
+ function.call(cx, scope, this, new Object[] {getElements().get(i).getScriptableObject(), i, this});
+ i++;
}
+
return null;
};
cf.call(contextAction);
diff --git a/src/test/java/org/htmlunit/javascript/host/dom/NodeListTest.java b/src/test/java/org/htmlunit/javascript/host/dom/NodeListTest.java
index f25ec6d092b..12774025e51 100644
--- a/src/test/java/org/htmlunit/javascript/host/dom/NodeListTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/dom/NodeListTest.java
@@ -282,6 +282,140 @@ public void forEach() throws Exception {
loadPageVerifyTitle2(html);
}
+ /**
+ * @throws Exception if an error occurs
+ */
+ @Test
+ @Alerts({"4", "4",
+ "[object HTMLElement]/0", "3", "3",
+ "[object HTMLElement]/1", "2", "2",
+ "2", "2"})
+ public void forEachRemove() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + " a bd e
\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
+ /**
+ * @throws Exception if an error occurs
+ */
+ @Test
+ @Alerts({"4", "4",
+ "[object HTMLElement]/0", "5", "5",
+ "[object Text]/1", "6", "6",
+ "[object HTMLElement]/2", "7", "7",
+ "[object Text]/3", "8", "8",
+ "8", "8"})
+ public void forEachAppend() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + " a bd e
\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
+ /**
+ * @throws Exception if an error occurs
+ */
+ @Test
+ @Alerts({"4", "4",
+ "[object HTMLElement]/0", "5", "5",
+ "[object HTMLElement]/1", "6", "6",
+ "[object HTMLElement]/2", "7", "7",
+ "[object HTMLElement]/3", "8", "8",
+ "8", "8"})
+ public void forEachInsert() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + "\n"
+ + " a bd e
\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
/**
* @throws Exception if the test fails
*/
From 8ae8bc331f645767c9b115bb437a56907fe23673 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 9 May 2025 17:04:48 +0200
Subject: [PATCH 107/125] NodeList.forEach() now takes care of the current
state of the list
---
.../org/htmlunit/javascript/host/dom/NodeList.java | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java b/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
index 0725b64de54..e173a1fa900 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
@@ -159,10 +159,14 @@ public void forEach(final Object callback) {
final Function function = (Function) callback;
final Scriptable scope = getParentScope();
- final int size = getElements().size();
+ List nodes = getElements();
+ final int size = nodes.size();
int i = 0;
- while (i < size) {
- function.call(cx, scope, this, new Object[] {getElements().get(i).getScriptableObject(), i, this});
+ while (i < size && i < nodes.size()) {
+ function.call(cx, scope, this, new Object[] {nodes.get(i).getScriptableObject(), i, this});
+
+ // refresh
+ nodes = getElements();
i++;
}
From 1898697556f7b80ba6b874026beb9cd02156eba4 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 9 May 2025 18:59:29 +0200
Subject: [PATCH 108/125] empty check
---
src/main/java/org/htmlunit/javascript/host/dom/NodeList.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java b/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
index e173a1fa900..f8e78d6fa42 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/NodeList.java
@@ -152,6 +152,10 @@ public void forEach(final Object callback) {
"Foreach callback '" + JavaScriptEngine.toString(callback) + "' is not a function");
}
+ if (getElements().size() == 0) {
+ return;
+ }
+
final WebClient client = getWindow().getWebWindow().getWebClient();
final HtmlUnitContextFactory cf = client.getJavaScriptEngine().getContextFactory();
From ab67050ecaf6dcd2f9cbe12ba6457d3a2fe35bd2 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 9 May 2025 18:59:45 +0200
Subject: [PATCH 109/125] DomTokenList.forEach() now takes care of the current
state of the list
---
src/changes/changes.xml | 4 +
.../javascript/host/dom/DOMTokenList.java | 10 ++-
.../javascript/host/dom/DOMTokenListTest.java | 84 +++++++++++++++++++
3 files changed, 96 insertions(+), 2 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index f47aeee7b60..3f699f0ef6d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,10 @@
+
+ DomTokenList.forEach() now takes care of the current state of the list
+ (e.g. the forEach function might add/remove elements to the list itself).
+
NodeList.forEach() now takes care of the current state of the list
(e.g. the forEach function might add/remove elements to the list itself).
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java b/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java
index d8df6d1c0b4..9377c745c4b 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/DOMTokenList.java
@@ -421,10 +421,16 @@ public void forEach(final Object callback) {
final ContextAction contextAction = cx -> {
final Function function = (Function) callback;
final Scriptable scope = getParentScope();
- final List parts = split(value);
+
+ List parts = split(value);
final int size = parts.size();
- for (int i = 0; i < size; i++) {
+ int i = 0;
+ while (i < size && i < parts.size()) {
function.call(cx, scope, this, new Object[] {parts.get(i), i, this});
+
+ // refresh
+ parts = split(getValue());
+ i++;
}
return null;
};
diff --git a/src/test/java/org/htmlunit/javascript/host/dom/DOMTokenListTest.java b/src/test/java/org/htmlunit/javascript/host/dom/DOMTokenListTest.java
index 5c99862050a..226175503a9 100644
--- a/src/test/java/org/htmlunit/javascript/host/dom/DOMTokenListTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/dom/DOMTokenListTest.java
@@ -210,6 +210,90 @@ public void forEach() throws Exception {
loadPageVerifyTitle2(html);
}
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts({"4", "a", "b", "c", "d", "4"})
+ public void forEachAdd() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "
\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts({"4", "a", "c", "d", "3"})
+ public void forEachRemove() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "
\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts({"4", "a", "1"})
+ public void forEachRemove2() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "
\n"
+ + "";
+
+ loadPageVerifyTitle2(html);
+ }
+
/**
* @throws Exception if the test fails
*/
From 839ff4b6208a554389aea3bc2a42e4cfb03b8155 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 9 May 2025 19:09:59 +0200
Subject: [PATCH 110/125] test lib updates
---
pom.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/pom.xml b/pom.xml
index a4903a2fa53..280f9c1e792 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,7 +58,7 @@
10.23.1
4.9.3
7.13.0
- 1.4.0
+ 1.4.1
10.0.4
@@ -1354,7 +1354,7 @@
org.apache.xmlgraphics
batik-transcoder
- 1.18
+ 1.19
test
From fd0a504a8ac1a432e3300e7cf2eb1e9d801b8967 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 10 May 2025 17:58:53 +0200
Subject: [PATCH 111/125] document last changes
---
src/changes/changes.xml | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3f699f0ef6d..43f9793ac72 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,32 @@
+
+ neko: HTMLScanner always requires a document handler; the null check is moved to the setter
+ and all the others are removed.
+
+
+ neko: avoid HTML1011 error for self closing tags.
+
+
+ neko: ignore whitespace before the closing > when parsing special tags.
+
+
+ neko: remove two superfluous conversions from the code.
+
+
+ core-js: NativeArray impl is now lambda based.
+
+
+ core-js: improved date string parser; support optional ms digits,
+ skip ms digits, extended year support is not available in es6
+
+
+ core-js: detailed message added to IndexOutOfBoundsExceptions
+
+
+ core-js: add double null check pattern when initializing cache values.
+
DomTokenList.forEach() now takes care of the current state of the list
(e.g. the forEach function might add/remove elements to the list itself).
From c54fa8377ecd17d2737ad5284379e22cf329f57a Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 11 May 2025 09:04:14 +0200
Subject: [PATCH 112/125] try to make more stable
---
src/test/java/org/htmlunit/libraries/DojoTestBase.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/test/java/org/htmlunit/libraries/DojoTestBase.java b/src/test/java/org/htmlunit/libraries/DojoTestBase.java
index c990540d9ff..b39da629688 100644
--- a/src/test/java/org/htmlunit/libraries/DojoTestBase.java
+++ b/src/test/java/org/htmlunit/libraries/DojoTestBase.java
@@ -16,6 +16,7 @@
import static org.junit.Assert.fail;
+import java.time.Duration;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
@@ -66,7 +67,7 @@ void test(final String module, final long waitTime) throws Exception {
final WebDriver webdriver = getWebDriver();
webdriver.get(getUrl(module));
- final long runTime = waitTime * DEFAULT_WAIT_TIME.toMillis();
+ final long runTime = waitTime * Duration.ofSeconds(1).toMillis();
final long endTime = System.currentTimeMillis() + runTime;
// wait a bit to let the tests start
@@ -90,7 +91,7 @@ void test(final String module, final long waitTime) throws Exception {
status = getResultElementText(webdriver);
}
- Thread.sleep(100); // to make tests a bit more stable
+ Thread.sleep(Duration.ofSeconds(1).toMillis()); // to make tests a bit more stable
final WebElement output = webdriver.findElement(By.id("logBody"));
final List lines = output.findElements(By.xpath(".//div"));
From 554788710ef522202107984714406fd5a0f27124 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 11 May 2025 10:01:16 +0200
Subject: [PATCH 113/125] adjust tests for SVGDiscardElement
---
.../general/huge/HostParentOfSTest.java | 27 +++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/src/test/java/org/htmlunit/general/huge/HostParentOfSTest.java b/src/test/java/org/htmlunit/general/huge/HostParentOfSTest.java
index e073009708a..4288fb24149 100644
--- a/src/test/java/org/htmlunit/general/huge/HostParentOfSTest.java
+++ b/src/test/java/org/htmlunit/general/huge/HostParentOfSTest.java
@@ -506,6 +506,15 @@ public void _SVGAnimationElement_SVGAnimationElement() throws Exception {
test("SVGAnimationElement", "SVGAnimationElement");
}
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "false", FF = "true")
+ public void _SVGAnimationElement_SVGDiscardElement() throws Exception {
+ test("SVGAnimationElement", "SVGDiscardElement");
+ }
+
/**
* @throws Exception if the test fails
*/
@@ -596,6 +605,15 @@ public void _SVGDescElement_SVGDescElement() throws Exception {
test("SVGDescElement", "SVGDescElement");
}
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "false", FF = "true")
+ public void _SVGDiscardElement_SVGDiscardElement() throws Exception {
+ test("SVGDiscardElement", "SVGDiscardElement");
+ }
+
/**
* @throws Exception if the test fails
*/
@@ -686,6 +704,15 @@ public void _SVGElement_SVGDescElement() throws Exception {
test("SVGElement", "SVGDescElement");
}
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(DEFAULT = "false", FF = "true")
+ public void _SVGElement_SVGDiscardElement() throws Exception {
+ test("SVGElement", "SVGDiscardElement");
+ }
+
/**
* @throws Exception if the test fails
*/
From 4dd38cf57b5c663ea2b18d24ae422574c5c21bc5 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 11 May 2025 10:33:09 +0200
Subject: [PATCH 114/125] simple retry added
---
.../org/htmlunit/libraries/DojoTestBase.java | 49 ++++++++++++-------
1 file changed, 30 insertions(+), 19 deletions(-)
diff --git a/src/test/java/org/htmlunit/libraries/DojoTestBase.java b/src/test/java/org/htmlunit/libraries/DojoTestBase.java
index b39da629688..2437d19729f 100644
--- a/src/test/java/org/htmlunit/libraries/DojoTestBase.java
+++ b/src/test/java/org/htmlunit/libraries/DojoTestBase.java
@@ -91,27 +91,38 @@ void test(final String module, final long waitTime) throws Exception {
status = getResultElementText(webdriver);
}
- Thread.sleep(Duration.ofSeconds(1).toMillis()); // to make tests a bit more stable
- final WebElement output = webdriver.findElement(By.id("logBody"));
- final List lines = output.findElements(By.xpath(".//div"));
-
- final StringBuilder result = new StringBuilder();
- for (final WebElement webElement : lines) {
- final String text = webElement.getText();
- if (StringUtils.isNotBlank(text)) {
- result.append(text);
- result.append("\n");
- }
- }
+ for (int i = 0; i < 10; i++) {
+ try {
+ Thread.sleep(100);
+
+ final WebElement output = webdriver.findElement(By.id("logBody"));
+ final List lines = output.findElements(By.xpath(".//div"));
+
+ final StringBuilder result = new StringBuilder();
+ for (final WebElement webElement : lines) {
+ final String text = webElement.getText();
+ if (StringUtils.isNotBlank(text)) {
+ result.append(text);
+ result.append("\n");
+ }
+ }
+
+ String expFileName = StringUtils.replace(module, ".", "");
+ expFileName = StringUtils.replace(expFileName, "_", "");
+ expFileName = StringUtils.replace(expFileName, "/", "_");
+ String expected = loadExpectation(expFileName);
+ expected = StringUtils.replace(expected, "\r\n", "\n");
- String expFileName = StringUtils.replace(module, ".", "");
- expFileName = StringUtils.replace(expFileName, "_", "");
- expFileName = StringUtils.replace(expFileName, "/", "_");
- String expected = loadExpectation(expFileName);
- expected = StringUtils.replace(expected, "\r\n", "\n");
+ assertEquals(normalize(expected), normalize(result.toString()));
+ // assertEquals(expected, result.toString());
- assertEquals(normalize(expected), normalize(result.toString()));
- // assertEquals(expected, result.toString());
+ // success
+ break;
+ }
+ catch (AssertionError ignored) {
+ // fails, give it another try
+ }
+ }
}
catch (final Exception e) {
e.printStackTrace();
From da99f0e4598540d190a272a5d8d01c38440fd5c5 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 11 May 2025 10:33:28 +0200
Subject: [PATCH 115/125] use xpath snapshot
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 280f9c1e792..5a0869f8e55 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,7 +30,7 @@
4.12.0-SNAPSHOT
4.12.0-SNAPSHOT
4.11.0
- 4.11.0
+ 4.12.0-SNAPSHOT
4.5.14
3.17.0
From 2df4954901ca8916512917d93468f2db56917a11 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 11 May 2025 18:10:03 +0200
Subject: [PATCH 116/125] introduce option NekoReaderBufferSize
---
src/changes/changes.xml | 8 +++
.../java/org/htmlunit/DefaultPageCreator.java | 4 +-
src/main/java/org/htmlunit/WebClient.java | 4 +-
.../java/org/htmlunit/WebClientOptions.java | 19 +++++++
src/main/java/org/htmlunit/html/DomNode.java | 3 +-
.../org/htmlunit/html/parser/HTMLParser.java | 52 +++++++++++++++++--
.../parser/neko/HtmlUnitNekoHtmlParser.java | 42 +++++----------
.../host/dom/DOMImplementation.java | 6 ++-
.../javascript/host/dom/DOMParser.java | 2 +-
.../htmlunit/javascript/host/dom/Range.java | 6 ++-
.../java/org/htmlunit/WebClient8Test.java | 3 +-
.../org/htmlunit/WebClientOptionsTest.java | 30 +++++++++++
12 files changed, 135 insertions(+), 44 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 43f9793ac72..5d7be8a2f25 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -8,6 +8,14 @@
+
+ WebClient option NekoReaderBufferSize added. You can use this to increase the buffer size used by
+ the Neko Html parser to optimize parsing performance.
+
+
+ HTMLParser parseFragment(DomNode, String), parse(WebResponse, HtmlPage, boolean, boolean), and
+ parseFragment(DomNode, DomNode, String, boolean) are deprecated.
+
neko: HTMLScanner always requires a document handler; the null check is moved to the setter
and all the others are removed.
diff --git a/src/main/java/org/htmlunit/DefaultPageCreator.java b/src/main/java/org/htmlunit/DefaultPageCreator.java
index 14936310edd..85aff6db4ca 100644
--- a/src/main/java/org/htmlunit/DefaultPageCreator.java
+++ b/src/main/java/org/htmlunit/DefaultPageCreator.java
@@ -297,7 +297,7 @@ protected HtmlPage createHtmlPage(final WebResponse webResponse, final WebWindow
final HtmlPage page = new HtmlPage(webResponse, webWindow);
webWindow.setEnclosedPage(page);
- HTML_PARSER.parse(webResponse, page, false, false);
+ HTML_PARSER.parse(webWindow.getWebClient(), webResponse, page, false, false);
return page;
}
@@ -313,7 +313,7 @@ protected XHtmlPage createXHtmlPage(final WebResponse webResponse, final WebWind
final XHtmlPage page = new XHtmlPage(webResponse, webWindow);
webWindow.setEnclosedPage(page);
- HTML_PARSER.parse(webResponse, page, true, false);
+ HTML_PARSER.parse(webWindow.getWebClient(), webResponse, page, true, false);
return page;
}
diff --git a/src/main/java/org/htmlunit/WebClient.java b/src/main/java/org/htmlunit/WebClient.java
index 6e4b30367f3..c17eedc9094 100644
--- a/src/main/java/org/htmlunit/WebClient.java
+++ b/src/main/java/org/htmlunit/WebClient.java
@@ -2875,7 +2875,7 @@ public HtmlPage loadHtmlCodeIntoCurrentWindow(final String htmlCode) throws IOEx
final HtmlPage page = new HtmlPage(webResponse, webWindow);
webWindow.setEnclosedPage(page);
- htmlParser.parse(webResponse, page, false, false);
+ htmlParser.parse(this, webResponse, page, false, false);
return page;
}
@@ -2896,7 +2896,7 @@ public XHtmlPage loadXHtmlCodeIntoCurrentWindow(final String xhtmlCode) throws I
final XHtmlPage page = new XHtmlPage(webResponse, webWindow);
webWindow.setEnclosedPage(page);
- htmlParser.parse(webResponse, page, true, false);
+ htmlParser.parse(this, webResponse, page, true, false);
return page;
}
diff --git a/src/main/java/org/htmlunit/WebClientOptions.java b/src/main/java/org/htmlunit/WebClientOptions.java
index c772b5e6dd7..b3f81d29efa 100644
--- a/src/main/java/org/htmlunit/WebClientOptions.java
+++ b/src/main/java/org/htmlunit/WebClientOptions.java
@@ -83,6 +83,8 @@ public class WebClientOptions implements Serializable {
private boolean geolocationEnabled_;
private Geolocation geolocation_;
+ private int nekoReaderBufferSize_ = -1;
+
private boolean webSocketEnabled_ = true;
private int webSocketMaxTextMessageSize_ = -1;
private int webSocketMaxTextMessageBufferSize_ = -1;
@@ -726,6 +728,23 @@ public int getScreenHeight() {
return screenHeight_;
}
+ /**
+ * @return the Neko Html parser reader buffer size
+ */
+ public int getNekoReaderBufferSize() {
+ return nekoReaderBufferSize_;
+ }
+
+ /**
+ * Sets the Neko Html parser reader buffer size.
+ *
+ * @param webSocketMaxTextMessageSize the new value
+ */
+ public void setNekoReaderBufferSize(final int nekoReaderBufferSize) {
+ nekoReaderBufferSize_ = nekoReaderBufferSize;
+ }
+
+
/**
* Enables/disables WebSocket support. By default, this property is enabled.
*
diff --git a/src/main/java/org/htmlunit/html/DomNode.java b/src/main/java/org/htmlunit/html/DomNode.java
index 755c7c2ee21..bf6b80f8724 100644
--- a/src/main/java/org/htmlunit/html/DomNode.java
+++ b/src/main/java/org/htmlunit/html/DomNode.java
@@ -1120,7 +1120,8 @@ public void removeAllChildren() {
* @throws SAXException in case of error
*/
public void parseHtmlSnippet(final String source) throws SAXException, IOException {
- getPage().getWebClient().getPageCreator().getHtmlParser().parseFragment(this, source);
+ final WebClient webClient = getPage().getWebClient();
+ webClient.getPageCreator().getHtmlParser().parseFragment(webClient, this, this, source, false);
}
/**
diff --git a/src/main/java/org/htmlunit/html/parser/HTMLParser.java b/src/main/java/org/htmlunit/html/parser/HTMLParser.java
index adeafefec45..4c56579a337 100644
--- a/src/main/java/org/htmlunit/html/parser/HTMLParser.java
+++ b/src/main/java/org/htmlunit/html/parser/HTMLParser.java
@@ -17,6 +17,7 @@
import java.io.IOException;
import org.htmlunit.SgmlPage;
+import org.htmlunit.WebClient;
import org.htmlunit.WebResponse;
import org.htmlunit.html.DomNode;
import org.htmlunit.html.ElementFactory;
@@ -75,12 +76,19 @@ ElementFactory getElementFactory(SgmlPage page, String namespaceURI,
* @param source the (X)HTML to be parsed
* @throws SAXException if a SAX error occurs
* @throws IOException if an IO error occurs
+ *
+ * @deprecated as of version 4.12.0; use
+ * {@link #parseFragment(WebClient, DomNode, DomNode, String, boolean)} instead.
*/
- void parseFragment(DomNode parent, String source) throws SAXException, IOException;
+ @Deprecated
+ default void parseFragment(DomNode parent, String source) throws SAXException, IOException {
+ parseFragment(null, parent, parent, source, false);
+ }
/**
* Parses the HTML content from the given string into an object tree representation.
*
+ * @param webClient the {@link WebClient}
* @param parent where the new parsed nodes will be added to
* @param context the context to build the fragment context stack
* @param source the (X)HTML to be parsed
@@ -88,9 +96,41 @@ ElementFactory getElementFactory(SgmlPage page, String namespaceURI,
* @throws SAXException if a SAX error occurs
* @throws IOException if an IO error occurs
*/
- void parseFragment(DomNode parent, DomNode context, String source,
+ void parseFragment(WebClient webClient, DomNode parent, DomNode context, String source,
boolean createdByJavascript) throws SAXException, IOException;
+ /**
+ * Parses the HTML content from the given string into an object tree representation.
+ *
+ * @param parent where the new parsed nodes will be added to
+ * @param context the context to build the fragment context stack
+ * @param source the (X)HTML to be parsed
+ * @param createdByJavascript if true the (script) tag was created by javascript
+ * @throws SAXException if a SAX error occurs
+ * @throws IOException if an IO error occurs
+ *
+ * @deprecated as of version 4.12.0; use
+ * {@link #parseFragment(WebClient, DomNode, DomNode, String, boolean)} instead.
+ */
+ @Deprecated
+ default void parseFragment(DomNode parent, DomNode context, String source,
+ boolean createdByJavascript) throws SAXException, IOException {
+ parseFragment(null, parent, context, source, createdByJavascript);
+ }
+
+ /**
+ * Parses the WebResponse into an object tree representation.
+ *
+ * @param webClient the {@link WebClient}
+ * @param webResponse the response data
+ * @param page the HtmlPage to add the nodes
+ * @param xhtml if true use the XHtml parser
+ * @param createdByJavascript if true the (script) tag was created by javascript
+ * @throws IOException if there is an IO error
+ */
+ void parse(WebClient webClient, WebResponse webResponse, HtmlPage page,
+ boolean xhtml, boolean createdByJavascript) throws IOException;
+
/**
* Parses the WebResponse into an object tree representation.
*
@@ -99,6 +139,12 @@ void parseFragment(DomNode parent, DomNode context, String source,
* @param xhtml if true use the XHtml parser
* @param createdByJavascript if true the (script) tag was created by javascript
* @throws IOException if there is an IO error
+ *
+ * @deprecated as of version 4.12.0; use
+ * {@link #parse(WebClient, WebResponse, HtmlPage, boolean, boolean)} instead.
*/
- void parse(WebResponse webResponse, HtmlPage page, boolean xhtml, boolean createdByJavascript) throws IOException;
+ @Deprecated
+ default void parse(WebResponse webResponse, HtmlPage page, boolean xhtml, boolean createdByJavascript) throws IOException {
+ parse(null, webResponse, page, xhtml, createdByJavascript);
+ }
}
diff --git a/src/main/java/org/htmlunit/html/parser/neko/HtmlUnitNekoHtmlParser.java b/src/main/java/org/htmlunit/html/parser/neko/HtmlUnitNekoHtmlParser.java
index adf3348945b..7a601eff1f2 100644
--- a/src/main/java/org/htmlunit/html/parser/neko/HtmlUnitNekoHtmlParser.java
+++ b/src/main/java/org/htmlunit/html/parser/neko/HtmlUnitNekoHtmlParser.java
@@ -29,6 +29,7 @@
import org.htmlunit.Page;
import org.htmlunit.SgmlPage;
import org.htmlunit.WebAssert;
+import org.htmlunit.WebClient;
import org.htmlunit.WebResponse;
import org.htmlunit.cyberneko.HTMLScanner;
import org.htmlunit.cyberneko.HTMLTagBalancer;
@@ -83,30 +84,10 @@ public final class HtmlUnitNekoHtmlParser implements HTMLParser {
}
/**
- * Parses the HTML content from the given string into an object tree representation.
- *
- * @param parent the parent for the new nodes
- * @param source the (X)HTML to be parsed
- * @throws SAXException if a SAX error occurs
- * @throws IOException if an IO error occurs
+ *{@inheritDoc}
*/
@Override
- public void parseFragment(final DomNode parent, final String source) throws SAXException, IOException {
- parseFragment(parent, parent, source, false);
- }
-
- /**
- * Parses the HTML content from the given string into an object tree representation.
- *
- * @param parent where the new parsed nodes will be added to
- * @param context the context to build the fragment context stack
- * @param source the (X)HTML to be parsed
- * @param createdByJavascript if true the (script) tag was created by javascript
- * @throws SAXException if a SAX error occurs
- * @throws IOException if an IO error occurs
- */
- @Override
- public void parseFragment(final DomNode parent, final DomNode context, final String source,
+ public void parseFragment(final WebClient webClient, final DomNode parent, final DomNode context, final String source,
final boolean createdByJavascript)
throws SAXException, IOException {
final Page page = parent.getPage();
@@ -153,16 +134,10 @@ else if (ancestors.size() == 1
}
/**
- * Parses the WebResponse into an object tree representation.
- *
- * @param webResponse the response data
- * @param page the HtmlPage to add the nodes
- * @param xhtml if true use the XHtml parser
- * @param createdByJavascript if true the (script) tag was created by javascript
- * @throws IOException if there is an IO error
+ * {@inheritDoc}
*/
@Override
- public void parse(final WebResponse webResponse, final HtmlPage page,
+ public void parse(final WebClient webClient, final WebResponse webResponse, final HtmlPage page,
final boolean xhtml, final boolean createdByJavascript) throws IOException {
final URL url = webResponse.getWebRequest().getUrl();
final HtmlUnitNekoDOMBuilder domBuilder =
@@ -182,6 +157,13 @@ public void parse(final WebResponse webResponse, final HtmlPage page,
domBuilder.setFeature(HTMLScanner.STYLE_STRIP_CDATA_DELIMS, true);
domBuilder.setFeature(HTMLScanner.CDATA_EARLY_CLOSING, false);
}
+
+ if (webClient != null) {
+ final int bufferSize = webClient.getOptions().getNekoReaderBufferSize();
+ if (bufferSize > 0) {
+ domBuilder.setProperty(HTMLScanner.READER_BUFFER_SIZE, bufferSize);
+ }
+ }
}
catch (final Exception e) {
throw new ObjectInstantiationException("Error setting HTML parser feature", e);
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/DOMImplementation.java b/src/main/java/org/htmlunit/javascript/host/dom/DOMImplementation.java
index 023af836b9d..a1e2410e0b5 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/DOMImplementation.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/DOMImplementation.java
@@ -17,6 +17,7 @@
import java.io.IOException;
import org.htmlunit.StringWebResponse;
+import org.htmlunit.WebClient;
import org.htmlunit.WebResponse;
import org.htmlunit.WebWindow;
import org.htmlunit.html.Html;
@@ -263,8 +264,9 @@ public HTMLDocument createHTMLDocument(final Object titleObj) {
// document.setWindow(getWindow());
document.setDomNode(page);
- final HTMLParser htmlParser = webWindow.getWebClient().getPageCreator().getHtmlParser();
- htmlParser.parse(webResponse, page, false, false);
+ final WebClient webClient = webWindow.getWebClient();
+ final HTMLParser htmlParser = webClient.getPageCreator().getHtmlParser();
+ htmlParser.parse(webClient, webResponse, page, false, false);
return page.getScriptableObject();
}
catch (final IOException e) {
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/DOMParser.java b/src/main/java/org/htmlunit/javascript/host/dom/DOMParser.java
index 495aade45f5..89d596fccbd 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/DOMParser.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/DOMParser.java
@@ -145,7 +145,7 @@ public static Document parseHtmlDocument(final HtmlUnitScriptable scriptable, fi
final WebClient webClient = webWindow.getWebClient();
final HTMLParser htmlParser = webClient.getPageCreator().getHtmlParser();
- htmlParser.parse(webResponse, page, false, true);
+ htmlParser.parse(webClient, webResponse, page, false, true);
return page.getScriptableObject();
}
}
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/Range.java b/src/main/java/org/htmlunit/javascript/host/dom/Range.java
index bb12798bc96..d628ecd0247 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/Range.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/Range.java
@@ -18,6 +18,7 @@
import org.apache.commons.logging.LogFactory;
import org.htmlunit.SgmlPage;
+import org.htmlunit.WebClient;
import org.htmlunit.html.DomDocumentFragment;
import org.htmlunit.html.DomNode;
import org.htmlunit.html.impl.SimpleRange;
@@ -258,8 +259,9 @@ public HtmlUnitScriptable createContextualFragment(final String valueAsString) {
final SgmlPage page = internGetStartContainer().getDomNodeOrDie().getPage();
final DomDocumentFragment fragment = new DomDocumentFragment(page);
try {
- page.getWebClient().getPageCreator().getHtmlParser()
- .parseFragment(fragment, internGetStartContainer().getDomNodeOrDie(), valueAsString, false);
+ final WebClient webClient = page.getWebClient();
+ webClient.getPageCreator().getHtmlParser()
+ .parseFragment(webClient, fragment, internGetStartContainer().getDomNodeOrDie(), valueAsString, false);
}
catch (final Exception e) {
LogFactory.getLog(Range.class).error("Unexpected exception occurred in createContextualFragment", e);
diff --git a/src/test/java/org/htmlunit/WebClient8Test.java b/src/test/java/org/htmlunit/WebClient8Test.java
index ea2d8e1b5ca..fc6cedc0557 100644
--- a/src/test/java/org/htmlunit/WebClient8Test.java
+++ b/src/test/java/org/htmlunit/WebClient8Test.java
@@ -217,7 +217,8 @@ public void iFrameInFragment() throws Exception {
final HtmlPage page = webClient.getPage(URL_FIRST);
final DomElement para = page.getElementById("para");
- page.getWebClient().getPageCreator().getHtmlParser().parseFragment(para, fragment);
+ page.getWebClient().getPageCreator().getHtmlParser()
+ .parseFragment(para, para, fragment, false);
final HtmlInlineFrame iFrame = (HtmlInlineFrame) page.getElementById("tester");
assertEquals("frame", ((HtmlPage) iFrame.getEnclosedWindow().getEnclosedPage()).getTitleText());
diff --git a/src/test/java/org/htmlunit/WebClientOptionsTest.java b/src/test/java/org/htmlunit/WebClientOptionsTest.java
index ce5c18718cc..c64b1311012 100644
--- a/src/test/java/org/htmlunit/WebClientOptionsTest.java
+++ b/src/test/java/org/htmlunit/WebClientOptionsTest.java
@@ -54,6 +54,16 @@ public void serialization() throws Exception {
assertEquals(original.isGeolocationEnabled(), deserialized.isGeolocationEnabled());
assertEquals(original.getGeolocation(), deserialized.getGeolocation());
+
+ assertEquals(original.getNekoReaderBufferSize(), deserialized.getNekoReaderBufferSize());
+
+ assertEquals(original.isWebSocketEnabled(), deserialized.isWebSocketEnabled());
+ assertEquals(original.getWebSocketMaxTextMessageSize(), deserialized.getWebSocketMaxTextMessageSize());
+ assertEquals(original.getWebSocketMaxTextMessageBufferSize(), deserialized.getWebSocketMaxTextMessageBufferSize());
+ assertEquals(original.getWebSocketMaxBinaryMessageSize(), deserialized.getWebSocketMaxBinaryMessageSize());
+ assertEquals(original.getWebSocketMaxBinaryMessageBufferSize(), deserialized.getWebSocketMaxBinaryMessageBufferSize());
+
+ assertEquals(original.isFetchPolyfillEnabled(), deserialized.isFetchPolyfillEnabled());
}
/**
@@ -74,6 +84,16 @@ public void serializationChanged() throws Exception {
original.setGeolocationEnabled(true);
original.setGeolocation(new WebClientOptions.Geolocation(1d, 2d, 3d, 4d, 5d, 6d, 7d));
+ original.setNekoReaderBufferSize(1234567);
+
+ original.setWebSocketEnabled(false);
+ original.setWebSocketMaxTextMessageSize(77);
+ original.setWebSocketMaxTextMessageBufferSize(771);
+ original.setWebSocketMaxBinaryMessageSize(44);
+ original.setWebSocketMaxBinaryMessageBufferSize(441);
+
+ original.setFetchPolyfillEnabled(true);
+
final byte[] bytes = SerializationUtils.serialize(original);
final WebClientOptions deserialized = (WebClientOptions) SerializationUtils.deserialize(bytes);
@@ -96,6 +116,16 @@ public void serializationChanged() throws Exception {
deserialized.getGeolocation().getAltitudeAccuracy());
assertEquals(original.getGeolocation().getHeading(), deserialized.getGeolocation().getHeading());
assertEquals(original.getGeolocation().getSpeed(), deserialized.getGeolocation().getSpeed());
+
+ assertEquals(original.getNekoReaderBufferSize(), deserialized.getNekoReaderBufferSize());
+
+ assertEquals(original.isWebSocketEnabled(), deserialized.isWebSocketEnabled());
+ assertEquals(original.getWebSocketMaxTextMessageSize(), deserialized.getWebSocketMaxTextMessageSize());
+ assertEquals(original.getWebSocketMaxTextMessageBufferSize(), deserialized.getWebSocketMaxTextMessageBufferSize());
+ assertEquals(original.getWebSocketMaxBinaryMessageSize(), deserialized.getWebSocketMaxBinaryMessageSize());
+ assertEquals(original.getWebSocketMaxBinaryMessageBufferSize(), deserialized.getWebSocketMaxBinaryMessageBufferSize());
+
+ assertEquals(original.isFetchPolyfillEnabled(), deserialized.isFetchPolyfillEnabled());
}
/**
From eb2181d4e531a3cb4d27d346be8df5800e463ed5 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 11 May 2025 18:11:24 +0200
Subject: [PATCH 117/125] code style
---
.../org/htmlunit/general/huge/HostParentOfSTest.java | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/test/java/org/htmlunit/general/huge/HostParentOfSTest.java b/src/test/java/org/htmlunit/general/huge/HostParentOfSTest.java
index 4288fb24149..43fc189fa81 100644
--- a/src/test/java/org/htmlunit/general/huge/HostParentOfSTest.java
+++ b/src/test/java/org/htmlunit/general/huge/HostParentOfSTest.java
@@ -510,7 +510,8 @@ public void _SVGAnimationElement_SVGAnimationElement() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = "false", FF = "true")
+ @Alerts(DEFAULT = "false",
+ FF = "true")
public void _SVGAnimationElement_SVGDiscardElement() throws Exception {
test("SVGAnimationElement", "SVGDiscardElement");
}
@@ -609,7 +610,8 @@ public void _SVGDescElement_SVGDescElement() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = "false", FF = "true")
+ @Alerts(DEFAULT = "false",
+ FF = "true")
public void _SVGDiscardElement_SVGDiscardElement() throws Exception {
test("SVGDiscardElement", "SVGDiscardElement");
}
@@ -708,7 +710,8 @@ public void _SVGElement_SVGDescElement() throws Exception {
* @throws Exception if the test fails
*/
@Test
- @Alerts(DEFAULT = "false", FF = "true")
+ @Alerts(DEFAULT = "false",
+ FF = "true")
public void _SVGElement_SVGDiscardElement() throws Exception {
test("SVGElement", "SVGDiscardElement");
}
From d86b583872a7ba58bdca91bf1ee5e66064d5ed1d Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sun, 11 May 2025 18:16:31 +0200
Subject: [PATCH 118/125] jdoc fix
---
src/main/java/org/htmlunit/WebClientOptions.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/htmlunit/WebClientOptions.java b/src/main/java/org/htmlunit/WebClientOptions.java
index b3f81d29efa..2e672d3ff81 100644
--- a/src/main/java/org/htmlunit/WebClientOptions.java
+++ b/src/main/java/org/htmlunit/WebClientOptions.java
@@ -738,7 +738,7 @@ public int getNekoReaderBufferSize() {
/**
* Sets the Neko Html parser reader buffer size.
*
- * @param webSocketMaxTextMessageSize the new value
+ * @param nekoReaderBufferSize the new value
*/
public void setNekoReaderBufferSize(final int nekoReaderBufferSize) {
nekoReaderBufferSize_ = nekoReaderBufferSize;
From 640856eba945a2764b34005b8a93b91f3fbd6689 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 12 May 2025 18:56:24 +0200
Subject: [PATCH 119/125] cleanup
---
.../java/org/htmlunit/javascript/host/dom/AbstractList.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/org/htmlunit/javascript/host/dom/AbstractList.java b/src/main/java/org/htmlunit/javascript/host/dom/AbstractList.java
index b365b9d412b..a94b60f03e9 100644
--- a/src/main/java/org/htmlunit/javascript/host/dom/AbstractList.java
+++ b/src/main/java/org/htmlunit/javascript/host/dom/AbstractList.java
@@ -270,7 +270,7 @@ else if (domNode instanceof HtmlPage) {
protected Object getWithPreemption(final String name) {
// Test to see if we are trying to get the length of this collection?
// If so return NOT_FOUND here to let the property be retrieved using the prototype
- if (/*xpath_ == null || */"length".equals(name)) {
+ if ("length".equals(name)) {
return NOT_FOUND;
}
From 92f693c4490a70e784b8dfa926a078612d2d127f Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Mon, 12 May 2025 21:53:09 +0200
Subject: [PATCH 120/125] unify and simplify code
---
.../javascript/HtmlUnitScriptable.java | 15 ++----
.../org/htmlunit/javascript/host/Window.java | 50 +++++++++----------
2 files changed, 29 insertions(+), 36 deletions(-)
diff --git a/src/main/java/org/htmlunit/javascript/HtmlUnitScriptable.java b/src/main/java/org/htmlunit/javascript/HtmlUnitScriptable.java
index 1ac52788f88..608f982b3e0 100644
--- a/src/main/java/org/htmlunit/javascript/HtmlUnitScriptable.java
+++ b/src/main/java/org/htmlunit/javascript/HtmlUnitScriptable.java
@@ -117,22 +117,17 @@ public void put(final String name, final Scriptable start, final Object value) {
/**
* Gets a named property from the object.
* Normally HtmlUnit objects don't need to overwrite this method as properties are defined
- * on the prototypes from the XML configuration. In some cases where "content" of object
+ * on the prototypes. In some cases where "content" of object
* has priority compared to the properties consider using utility {@link #getWithPreemption(String)}.
+ *
* {@inheritDoc}
*/
@Override
public Object get(final String name, final Scriptable start) {
// Try to get property configured on object itself.
- Object response = super.get(name, start);
- if (response != NOT_FOUND) {
- return response;
- }
- if (this == start) {
- response = getWithPreemption(name);
- }
- if (response == NOT_FOUND && start instanceof Window) {
- response = ((Window) start).getWithFallback(name);
+ final Object response = super.get(name, start);
+ if (response == NOT_FOUND && this == start) {
+ return getWithPreemption(name);
}
return response;
}
diff --git a/src/main/java/org/htmlunit/javascript/host/Window.java b/src/main/java/org/htmlunit/javascript/host/Window.java
index 371000da5f5..3203bd1ce81 100644
--- a/src/main/java/org/htmlunit/javascript/host/Window.java
+++ b/src/main/java/org/htmlunit/javascript/host/Window.java
@@ -1450,40 +1450,38 @@ private void setHandlerForJavaScript(final String eventName, final Object handle
}
/**
- * To be called when the property detection fails in normal scenarios.
- *
- * @param name the name
- * @return the found object, or {@link Scriptable#NOT_FOUND}
+ * {@inheritDoc}
*/
- public Object getWithFallback(final String name) {
- Object result = NOT_FOUND;
-
+ @Override
+ protected Object getWithPreemption(final String name) {
final DomNode domNode = getDomNodeOrNull();
- if (domNode != null) {
+ if (domNode == null) {
+ return NOT_FOUND;
+ }
- // May be attempting to retrieve a frame by name.
- final HtmlPage page = (HtmlPage) domNode.getPage();
- result = getFrameWindowByName(page, name);
- if (result == NOT_FOUND) {
- result = getElementsByName(page, name);
+ // May be attempting to retrieve a frame by name.
+ final HtmlPage page = (HtmlPage) domNode.getPage();
+ Object result = getFrameWindowByName(page, name);
- if (result == NOT_FOUND) {
- // May be attempting to retrieve element by ID (try map-backed operation again instead of XPath).
- try {
- final HtmlElement htmlElement = page.getHtmlElementById(name);
- result = getScriptableFor(htmlElement);
- }
- catch (final ElementNotFoundException e) {
- result = NOT_FOUND;
- }
+ if (result == NOT_FOUND) {
+ result = getElementsByName(page, name);
+
+ if (result == NOT_FOUND) {
+ // May be attempting to retrieve element by ID (try map-backed operation again instead of XPath).
+ try {
+ final HtmlElement htmlElement = page.getHtmlElementById(name);
+ result = getScriptableFor(htmlElement);
+ }
+ catch (final ElementNotFoundException e) {
+ result = NOT_FOUND;
}
}
+ }
- if (result instanceof Window) {
- final WebWindow webWindow = ((Window) result).getWebWindow();
- result = getProxy(webWindow);
- }
+ if (result instanceof Window) {
+ final WebWindow webWindow = ((Window) result).getWebWindow();
+ result = getProxy(webWindow);
}
return result;
From 4333df2f07aa93f25aba07d9bb77499c3878032d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 29 Mar 2025 12:25:17 +0000
Subject: [PATCH 121/125] Bump actions/upload-artifact from 4.6.1 to 4.6.2
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1...ea165f8d65b6e75b540449e92b4886f43607fa02)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
.github/workflows/scorecard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
index 71154a0b1f3..3536fd3b400 100644
--- a/.github/workflows/scorecard.yml
+++ b/.github/workflows/scorecard.yml
@@ -59,7 +59,7 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
- uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
+ uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: SARIF file
path: results.sarif
From a379e5b138824f75ca5b9c88aa31114a63568023 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 16 May 2025 19:14:30 +0200
Subject: [PATCH 122/125] fix typo
---
src/test/java/org/htmlunit/doc/FaqTest.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/test/java/org/htmlunit/doc/FaqTest.java b/src/test/java/org/htmlunit/doc/FaqTest.java
index b0889d1dbea..a3ae598a6c4 100644
--- a/src/test/java/org/htmlunit/doc/FaqTest.java
+++ b/src/test/java/org/htmlunit/doc/FaqTest.java
@@ -82,7 +82,7 @@ public void htmlPageFromString() throws Exception {
+ " "
+ " ";
try (WebClient webClient = new WebClient(browserVersion)) {
- final HtmlPage page = webClient.loadXHtmlCodeIntoCurrentWindow(htmlCode);
+ final HtmlPage page = webClient.loadHtmlCodeIntoCurrentWindow(htmlCode);
// work with the html page
From 0edd5bffcabb716e97a7c659caf20a7acba926de Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 16 May 2025 19:15:02 +0200
Subject: [PATCH 123/125] start working towards 4.12.0
---
pom.xml | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/pom.xml b/pom.xml
index 5a0869f8e55..3ef92204907 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,18 +3,20 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
+
org.htmlunit
htmlunit
4.12.0-SNAPSHOT
+ jar
+
HtmlUnit
+
+ A headless browser intended for use in testing web-based applications.
+
Gargoyle Software Inc.
http://www.GargoyleSoftware.com/
- jar
-
- A headless browser intended for use in testing web-based applications.
-
https://www.htmlunit.org
@@ -25,12 +27,12 @@
8
8
- 4.11.0
- 4.11.0
+ 4.12.0
+ 4.12.0
4.12.0-SNAPSHOT
4.12.0-SNAPSHOT
- 4.11.0
- 4.12.0-SNAPSHOT
+ 4.12.0
+ 4.12.0
4.5.14
3.17.0
From fa52e09046a6a8387541056d171ce7aaf9baf9a9 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Fri, 16 May 2025 19:44:18 +0200
Subject: [PATCH 124/125] add test case for issue #966
---
.../host/html/HTMLIFrameElementTest.java | 32 +++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/src/test/java/org/htmlunit/javascript/host/html/HTMLIFrameElementTest.java b/src/test/java/org/htmlunit/javascript/host/html/HTMLIFrameElementTest.java
index 0efcfec4455..e56a41fcf9b 100644
--- a/src/test/java/org/htmlunit/javascript/host/html/HTMLIFrameElementTest.java
+++ b/src/test/java/org/htmlunit/javascript/host/html/HTMLIFrameElementTest.java
@@ -16,6 +16,8 @@
import java.util.List;
+import javax.net.ssl.SSLHandshakeException;
+
import org.htmlunit.MockWebConnection;
import org.htmlunit.SimpleWebTestCase;
import org.htmlunit.WebClient;
@@ -23,6 +25,7 @@
import org.htmlunit.html.HtmlInlineFrame;
import org.htmlunit.html.HtmlPage;
import org.htmlunit.junit.BrowserRunner;
+import org.htmlunit.junit.annotation.Alerts;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -137,4 +140,33 @@ public void removeFrameWindow() throws Exception {
frames = page.getFrames();
assertTrue(frames.isEmpty());
}
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts({"", "2"})
+ public void iframeUrlInvalid() throws Exception {
+ final String html = DOCTYPE_HTML
+ + "\n"
+ + "\n"
+ + " \n"
+ + "\n"
+ + "\n"
+ + " \n"
+ + "\n"
+ + "";
+
+ getMockWebConnection().setDefaultResponse(html);
+ getMockWebConnection().setThrowable(URL_SECOND, new SSLHandshakeException("Test"));
+
+ final String[] expectedAlerts = getExpectedAlerts();
+ final HtmlPage page = loadPage(html);
+ assertEquals(expectedAlerts[0], page.getTitleText());
+
+ assertEquals(Integer.parseInt(expectedAlerts[1]), getMockWebConnection().getRequestCount());
+ }
}
From 0ca4b095071edde1b1c7d124d5f93916b8d34bf8 Mon Sep 17 00:00:00 2001
From: Ronald Brill
Date: Sat, 17 May 2025 13:48:20 +0200
Subject: [PATCH 125/125] 4.12.0
---
README.md | 8 ++++----
pom.xml | 12 ++++++------
src/changes/changes.xml | 2 +-
src/site/xdoc/index.xml | 8 ++++----
4 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/README.md b/README.md
index c79b5c98e78..b61ad1fcc8b 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# 
-Version 4.11.1 / March 26, 2025
+Version 4.12.0 / May 17, 2025
:heart: [Sponsor](https://github.com/sponsors/rbri)
@@ -51,7 +51,7 @@ Add to your `pom.xml`:
org.htmlunit
htmlunit
- 4.11.1
+ 4.12.0
```
@@ -60,7 +60,7 @@ Add to your `pom.xml`:
Add to your `build.gradle`:
```groovy
-implementation group: 'org.htmlunit', name: 'htmlunit', version: '4.11.1'
+implementation group: 'org.htmlunit', name: 'htmlunit', version: '4.12.0'
```
## Vulnerabilities
@@ -172,7 +172,7 @@ Add the snapshot repository and dependency to your `pom.xml`:
org.htmlunit
htmlunit
- 4.12.0-SNAPSHOT
+ 4.13.0-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index 3ef92204907..7f6ef3e52bc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.htmlunit
htmlunit
- 4.12.0-SNAPSHOT
+ 4.12.0
jar
HtmlUnit
@@ -29,8 +29,8 @@
4.12.0
4.12.0
- 4.12.0-SNAPSHOT
- 4.12.0-SNAPSHOT
+ 4.12.0
+ 4.12.0
4.12.0
4.12.0
@@ -41,9 +41,9 @@
0.1.2
- 4.31.0-SNAPSHOT
- 4.31.0
- selenium-devtools-v135
+ 4.32.0
+ 4.32.0
+ selenium-devtools-v136
4.13.2
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5d7be8a2f25..713c4750ceb 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -7,7 +7,7 @@
-
+
WebClient option NekoReaderBufferSize added. You can use this to increase the buffer size used by
the Neko Html parser to optimize parsing performance.
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index 0f663ffaf6f..73e08db5d51 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -92,9 +92,9 @@
- Latest release March 26, 2025
+ Latest release May 17, 2025
- version 4.11.1
+ version 4.12.0
Source code
@@ -220,14 +220,14 @@
org.htmlunit
htmlunit
- 4.11.1
+ 4.12.0
]]>
For gradle, you would add:
+implementation group: 'org.htmlunit', name: 'htmlunit', version: '4.12.0']]>