Skip to content

Commit 5eb94bf

Browse files
committed
prototype for DOMRect is now DOMRectReadOnly
Internal javascript class ClientRect renamed to DOMRect (the old name was a leftover from IE) Internal javascript class ClientRectList renamed to DOMRectList (the old name was a leftover from IE)
1 parent b323aeb commit 5eb94bf

17 files changed

+116
-213
lines changed

src/changes/changes.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88

99
<body>
1010
<release version="4.13.0" date="June xx, 2025" description="Chrome/Edge 136, Firefox 138, Bugfixes">
11+
<action type="fix" dev="rbri">
12+
The prototype for DOMRect is now DOMRectReadOnly.
13+
</action>
14+
<action type="update" dev="rbri">
15+
Internal javascript class ClientRect renamed to DOMRect (the old name was a leftover from IE).
16+
</action>
17+
<action type="update" dev="rbri">
18+
Internal javascript class ClientRectList renamed to DOMRectList (the old name was a leftover from IE).
19+
</action>
1120
<action type="update" dev="RhinoTeam">
1221
core-js: Adjust order of evaluation of function arguments to match the spec.
1322
</action>

src/main/java/org/htmlunit/javascript/configuration/JavaScriptConfiguration.java

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
import org.htmlunit.javascript.host.BroadcastChannel;
2626
import org.htmlunit.javascript.host.Cache;
2727
import org.htmlunit.javascript.host.CacheStorage;
28-
import org.htmlunit.javascript.host.ClientRect;
29-
import org.htmlunit.javascript.host.ClientRectList;
28+
import org.htmlunit.javascript.host.DOMRect;
29+
import org.htmlunit.javascript.host.DOMRectList;
3030
import org.htmlunit.javascript.host.Element;
3131
import org.htmlunit.javascript.host.External;
3232
import org.htmlunit.javascript.host.FontFace;
@@ -547,50 +547,50 @@ public final class JavaScriptConfiguration extends AbstractJavaScriptConfigurati
547547
AbortController.class, AbstractRange.class, Atomics.class, AudioBuffer.class, AudioListener.class,
548548
AudioParam.class, BarProp.class, Blob.class, CSS.class, CSSRule.class, CSSRuleList.class,
549549
CSSStyleDeclaration.class, Cache.class, CacheStorage.class, CanvasGradient.class, CanvasPattern.class,
550-
CanvasRenderingContext2D.class, CaretPosition.class, ClientRect.class, ClientRectList.class, Credential.class,
551-
CredentialsContainer.class, Crypto.class, CryptoKey.class, CustomElementRegistry.class, DOMError.class,
552-
DOMException.class, DOMImplementation.class, DOMMatrixReadOnly.class, DOMParser.class, DOMPointReadOnly.class,
553-
DOMRectReadOnly.class, DOMStringList.class, DOMStringMap.class, DOMTokenList.class, DataTransfer.class,
554-
DataTransferItem.class, DataTransferItemList.class, Event.class, EventTarget.class, External.class,
555-
FileList.class, FileSystem.class, FileSystemDirectoryReader.class, FileSystemEntry.class, FontFace.class,
556-
FormData.class, Gamepad.class, GamepadButton.class, Geolocation.class, GeolocationCoordinates.class,
557-
GeolocationPosition.class, GeolocationPositionError.class, HTMLOptionsCollection.class, Headers.class,
558-
History.class, IDBCursor.class, IDBFactory.class, IDBIndex.class, IDBKeyRange.class, IDBObjectStore.class,
559-
IdleDeadline.class, ImageBitmap.class, ImageBitmapRenderingContext.class, ImageData.class,
560-
InputDeviceCapabilities.class, IntersectionObserver.class, IntersectionObserverEntry.class,
561-
KeyframeEffect.class, Location.class, MIDIInputMap.class, MIDIOutputMap.class, MediaDeviceInfo.class,
562-
MediaError.class, MediaKeyStatusMap.class, MediaKeySystemAccess.class, MediaKeys.class, MediaList.class,
563-
MessageChannel.class, MimeType.class, MimeTypeArray.class, MutationObserver.class, MutationRecord.class,
564-
NamedNodeMap.class, Navigator.class, NodeFilter.class, NodeIterator.class, Path2D.class, PaymentAddress.class,
565-
PerformanceEntry.class, PerformanceNavigation.class, PerformanceObserver.class,
566-
PerformanceObserverEntryList.class, PerformanceTiming.class, PeriodicSyncManager.class, PeriodicWave.class,
567-
Permissions.class, Plugin.class, PluginArray.class, Presentation.class, PushManager.class,
568-
PushSubscription.class, PushSubscriptionOptions.class, RTCCertificate.class, RTCIceCandidate.class,
569-
RTCSessionDescription.class, RTCStatsReport.class, ReadableStream.class, Request.class, Response.class,
570-
SVGAngle.class, SVGAnimatedAngle.class, SVGAnimatedBoolean.class, SVGAnimatedEnumeration.class,
571-
SVGAnimatedInteger.class, SVGAnimatedLength.class, SVGAnimatedLengthList.class, SVGAnimatedNumber.class,
572-
SVGAnimatedNumberList.class, SVGAnimatedPreserveAspectRatio.class, SVGAnimatedRect.class,
573-
SVGAnimatedString.class, SVGAnimatedTransformList.class, SVGLength.class, SVGLengthList.class, SVGMatrix.class,
574-
SVGNumber.class, SVGNumberList.class, SVGPoint.class, SVGPointList.class, SVGPreserveAspectRatio.class,
575-
SVGRect.class, SVGStringList.class, SVGTransform.class, SVGTransformList.class, SVGUnitTypes.class,
576-
Selection.class, SpeechSynthesisVoice.class, Storage.class, StorageManager.class, StyleMedia.class,
577-
StyleSheet.class, StyleSheetList.class, SubtleCrypto.class, SyncManager.class, TextDecoder.class,
578-
TextEncoder.class, TextMetrics.class, TextTrackCueList.class, TimeRanges.class, Touch.class, TouchList.class,
579-
TreeWalker.class, URL.class, URLSearchParams.class, ValidityState.class, VideoPlaybackQuality.class,
580-
WebGL2RenderingContext.class, WebGLActiveInfo.class, WebGLBuffer.class, WebGLFramebuffer.class,
581-
WebGLProgram.class, WebGLQuery.class, WebGLRenderbuffer.class, WebGLRenderingContext.class, WebGLSampler.class,
582-
WebGLShader.class, WebGLShaderPrecisionFormat.class, WebGLSync.class, WebGLTexture.class,
583-
WebGLTransformFeedback.class, WebGLUniformLocation.class, WebGLVertexArrayObject.class,
584-
WebkitSpeechGrammar.class, WebkitSpeechGrammarList.class, XMLSerializer.class, XPathEvaluator.class,
585-
XPathEvaluator.class, XPathExpression.class, XPathNSResolver.class, XPathResult.class, XSLTProcessor.class,
550+
CanvasRenderingContext2D.class, CaretPosition.class, Credential.class, CredentialsContainer.class, Crypto.class,
551+
CryptoKey.class, CustomElementRegistry.class, DOMError.class, DOMException.class, DOMImplementation.class,
552+
DOMMatrixReadOnly.class, DOMParser.class, DOMPointReadOnly.class, DOMRectList.class, DOMRectReadOnly.class,
553+
DOMStringList.class, DOMStringMap.class, DOMTokenList.class, DataTransfer.class, DataTransferItem.class,
554+
DataTransferItemList.class, Event.class, EventTarget.class, External.class, FileList.class, FileSystem.class,
555+
FileSystemDirectoryReader.class, FileSystemEntry.class, FontFace.class, FormData.class, Gamepad.class,
556+
GamepadButton.class, Geolocation.class, GeolocationCoordinates.class, GeolocationPosition.class,
557+
GeolocationPositionError.class, HTMLOptionsCollection.class, Headers.class, History.class, IDBCursor.class,
558+
IDBFactory.class, IDBIndex.class, IDBKeyRange.class, IDBObjectStore.class, IdleDeadline.class,
559+
ImageBitmap.class, ImageBitmapRenderingContext.class, ImageData.class, InputDeviceCapabilities.class,
560+
IntersectionObserver.class, IntersectionObserverEntry.class, KeyframeEffect.class, Location.class,
561+
MIDIInputMap.class, MIDIOutputMap.class, MediaDeviceInfo.class, MediaError.class, MediaKeyStatusMap.class,
562+
MediaKeySystemAccess.class, MediaKeys.class, MediaList.class, MessageChannel.class, MimeType.class,
563+
MimeTypeArray.class, MutationObserver.class, MutationRecord.class, NamedNodeMap.class, Navigator.class,
564+
NodeFilter.class, NodeIterator.class, Path2D.class, PaymentAddress.class, PerformanceEntry.class,
565+
PerformanceNavigation.class, PerformanceObserver.class, PerformanceObserverEntryList.class,
566+
PerformanceTiming.class, PeriodicSyncManager.class, PeriodicWave.class, Permissions.class, Plugin.class,
567+
PluginArray.class, Presentation.class, PushManager.class, PushSubscription.class, PushSubscriptionOptions.class,
568+
RTCCertificate.class, RTCIceCandidate.class, RTCSessionDescription.class, RTCStatsReport.class,
569+
ReadableStream.class, Request.class, Response.class, SVGAngle.class, SVGAnimatedAngle.class,
570+
SVGAnimatedBoolean.class, SVGAnimatedEnumeration.class, SVGAnimatedInteger.class, SVGAnimatedLength.class,
571+
SVGAnimatedLengthList.class, SVGAnimatedNumber.class, SVGAnimatedNumberList.class,
572+
SVGAnimatedPreserveAspectRatio.class, SVGAnimatedRect.class, SVGAnimatedString.class,
573+
SVGAnimatedTransformList.class, SVGLength.class, SVGLengthList.class, SVGMatrix.class, SVGNumber.class,
574+
SVGNumberList.class, SVGPoint.class, SVGPointList.class, SVGPreserveAspectRatio.class, SVGRect.class,
575+
SVGStringList.class, SVGTransform.class, SVGTransformList.class, SVGUnitTypes.class, Selection.class,
576+
SpeechSynthesisVoice.class, Storage.class, StorageManager.class, StyleMedia.class, StyleSheet.class,
577+
StyleSheetList.class, SubtleCrypto.class, SyncManager.class, TextDecoder.class, TextEncoder.class,
578+
TextMetrics.class, TextTrackCueList.class, TimeRanges.class, Touch.class, TouchList.class, TreeWalker.class,
579+
URL.class, URLSearchParams.class, ValidityState.class, VideoPlaybackQuality.class, WebGL2RenderingContext.class,
580+
WebGLActiveInfo.class, WebGLBuffer.class, WebGLFramebuffer.class, WebGLProgram.class, WebGLQuery.class,
581+
WebGLRenderbuffer.class, WebGLRenderingContext.class, WebGLSampler.class, WebGLShader.class,
582+
WebGLShaderPrecisionFormat.class, WebGLSync.class, WebGLTexture.class, WebGLTransformFeedback.class,
583+
WebGLUniformLocation.class, WebGLVertexArrayObject.class, WebkitSpeechGrammar.class,
584+
WebkitSpeechGrammarList.class, XMLSerializer.class, XPathEvaluator.class, XPathEvaluator.class,
585+
XPathExpression.class, XPathNSResolver.class, XPathResult.class, XSLTProcessor.class,
586586
// level 2
587587
AbortSignal.class, Animation.class, AnimationEvent.class, AudioNode.class, AudioProcessingEvent.class,
588588
BaseAudioContext.class, BatteryManager.class, BeforeInstallPromptEvent.class, BeforeUnloadEvent.class,
589589
BlobEvent.class, BroadcastChannel.class, CSSCounterStyleRule.class, CSSFontFaceRule.class,
590590
CSSGroupingRule.class, CSSImportRule.class, CSSKeyframeRule.class, CSSKeyframesRule.class,
591591
CSSNamespaceRule.class, CSSPageRule.class, CSSStyleRule.class, CSSStyleSheet.class, ClipboardEvent.class,
592592
CloseEvent.class, ComputedCSSStyleDeclaration.class, CustomEvent.class, DOMMatrix.class, DOMPoint.class,
593-
DeviceMotionEvent.class, DeviceOrientationEvent.class, ErrorEvent.class, EventSource.class,
593+
DOMRect.class, DeviceMotionEvent.class, DeviceOrientationEvent.class, ErrorEvent.class, EventSource.class,
594594
FederatedCredential.class, File.class, FileReader.class, FileSystemDirectoryEntry.class,
595595
FileSystemFileEntry.class, FontFaceSet.class, GamepadEvent.class, HTMLAllCollection.class, HTMLCollection.class,
596596
HashChangeEvent.class, IDBCursorWithValue.class, IDBDatabase.class, IDBRequest.class, IDBTransaction.class,

src/main/java/org/htmlunit/javascript/configuration/WorkerJavaScriptConfiguration.java

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import org.htmlunit.javascript.host.BroadcastChannel;
2323
import org.htmlunit.javascript.host.Cache;
2424
import org.htmlunit.javascript.host.CacheStorage;
25-
import org.htmlunit.javascript.host.ClientRect;
25+
import org.htmlunit.javascript.host.DOMRect;
2626
import org.htmlunit.javascript.host.FontFace;
2727
import org.htmlunit.javascript.host.FontFaceSet;
2828
import org.htmlunit.javascript.host.ImageBitmap;
@@ -140,28 +140,29 @@ public final class WorkerJavaScriptConfiguration extends AbstractJavaScriptConfi
140140
static final Class<? extends HtmlUnitScriptable>[] CLASSES_ = new Class[] {
141141
// level 1
142142
AbortController.class, Atomics.class, Blob.class, Cache.class, CacheStorage.class, CanvasGradient.class,
143-
CanvasPattern.class, ClientRect.class, Crypto.class, CryptoKey.class, DOMException.class,
144-
DOMMatrixReadOnly.class, DOMPointReadOnly.class, DOMRectReadOnly.class, DOMStringList.class, Event.class,
145-
EventTarget.class, FileList.class, FontFace.class, FormData.class, Headers.class, IDBCursor.class,
146-
IDBFactory.class, IDBIndex.class, IDBKeyRange.class, IDBObjectStore.class, ImageBitmap.class,
147-
ImageBitmapRenderingContext.class, ImageData.class, MessageChannel.class, Path2D.class, PerformanceEntry.class,
148-
PerformanceObserver.class, PerformanceObserverEntryList.class, PeriodicSyncManager.class, Permissions.class,
149-
PushManager.class, PushSubscription.class, PushSubscriptionOptions.class, ReadableStream.class, Request.class,
150-
Response.class, StorageManager.class, SubtleCrypto.class, SyncManager.class, TextDecoder.class,
151-
TextEncoder.class, TextMetrics.class, URL.class, URLSearchParams.class, WebGL2RenderingContext.class,
152-
WebGLActiveInfo.class, WebGLBuffer.class, WebGLFramebuffer.class, WebGLProgram.class, WebGLQuery.class,
153-
WebGLRenderbuffer.class, WebGLRenderingContext.class, WebGLSampler.class, WebGLShader.class,
154-
WebGLShaderPrecisionFormat.class, WebGLSync.class, WebGLTexture.class, WebGLTransformFeedback.class,
155-
WebGLUniformLocation.class, WebGLVertexArrayObject.class, WorkerLocation.class, WorkerNavigator.class,
143+
CanvasPattern.class, Crypto.class, CryptoKey.class, DOMException.class, DOMMatrixReadOnly.class,
144+
DOMPointReadOnly.class, DOMRectReadOnly.class, DOMStringList.class, Event.class, EventTarget.class,
145+
FileList.class, FontFace.class, FormData.class, Headers.class, IDBCursor.class, IDBFactory.class,
146+
IDBIndex.class, IDBKeyRange.class, IDBObjectStore.class, ImageBitmap.class, ImageBitmapRenderingContext.class,
147+
ImageData.class, MessageChannel.class, Path2D.class, PerformanceEntry.class, PerformanceObserver.class,
148+
PerformanceObserverEntryList.class, PeriodicSyncManager.class, Permissions.class, PushManager.class,
149+
PushSubscription.class, PushSubscriptionOptions.class, ReadableStream.class, Request.class, Response.class,
150+
StorageManager.class, SubtleCrypto.class, SyncManager.class, TextDecoder.class, TextEncoder.class,
151+
TextMetrics.class, URL.class, URLSearchParams.class, WebGL2RenderingContext.class, WebGLActiveInfo.class,
152+
WebGLBuffer.class, WebGLFramebuffer.class, WebGLProgram.class, WebGLQuery.class, WebGLRenderbuffer.class,
153+
WebGLRenderingContext.class, WebGLSampler.class, WebGLShader.class, WebGLShaderPrecisionFormat.class,
154+
WebGLSync.class, WebGLTexture.class, WebGLTransformFeedback.class, WebGLUniformLocation.class,
155+
WebGLVertexArrayObject.class, WorkerLocation.class, WorkerNavigator.class,
156156
// level 2
157157
AbortSignal.class, BroadcastChannel.class, CloseEvent.class, CustomEvent.class, DOMMatrix.class, DOMPoint.class,
158-
ErrorEvent.class, EventSource.class, File.class, FileReader.class, FontFaceSet.class, IDBCursorWithValue.class,
159-
IDBDatabase.class, IDBRequest.class, IDBTransaction.class, IDBVersionChangeEvent.class, MediaSource.class,
160-
MessageEvent.class, MessagePort.class, NetworkInformation.class, Notification.class, Performance.class,
161-
PerformanceMark.class, PerformanceMeasure.class, PerformanceResourceTiming.class, PermissionStatus.class,
162-
ProgressEvent.class, PromiseRejectionEvent.class, SecurityPolicyViolationEvent.class,
163-
ServiceWorkerRegistration.class, SourceBuffer.class, SourceBufferList.class, WebGLContextEvent.class,
164-
WebSocket.class, Worker.class, WorkerGlobalScope.class, XMLHttpRequestEventTarget.class,
158+
DOMRect.class, ErrorEvent.class, EventSource.class, File.class, FileReader.class, FontFaceSet.class,
159+
IDBCursorWithValue.class, IDBDatabase.class, IDBRequest.class, IDBTransaction.class,
160+
IDBVersionChangeEvent.class, MediaSource.class, MessageEvent.class, MessagePort.class, NetworkInformation.class,
161+
Notification.class, Performance.class, PerformanceMark.class, PerformanceMeasure.class,
162+
PerformanceResourceTiming.class, PermissionStatus.class, ProgressEvent.class, PromiseRejectionEvent.class,
163+
SecurityPolicyViolationEvent.class, ServiceWorkerRegistration.class, SourceBuffer.class, SourceBufferList.class,
164+
WebGLContextEvent.class, WebSocket.class, Worker.class, WorkerGlobalScope.class,
165+
XMLHttpRequestEventTarget.class,
165166
// level 3
166167
DedicatedWorkerGlobalScope.class, IDBOpenDBRequest.class, XMLHttpRequest.class, XMLHttpRequestUpload.class,
167168
};

src/main/java/org/htmlunit/javascript/host/ClientRect.java renamed to src/main/java/org/htmlunit/javascript/host/DOMRect.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@
1414
*/
1515
package org.htmlunit.javascript.host;
1616

17-
import org.htmlunit.javascript.HtmlUnitScriptable;
1817
import org.htmlunit.javascript.configuration.JsxClass;
1918
import org.htmlunit.javascript.configuration.JsxConstructor;
2019
import org.htmlunit.javascript.configuration.JsxGetter;
2120
import org.htmlunit.javascript.configuration.JsxSetter;
21+
import org.htmlunit.javascript.host.dom.DOMRectReadOnly;
2222

2323
/**
2424
* Specifies a rectangle that contains a line of text in either an element or a TextRange object.
2525
*
2626
* @author Ahmed Ashour
2727
* @author Ronald Brill
28-
* @see <a href="http://msdn2.microsoft.com/en-us/library/ms535906.aspx">MSDN Documentation</a>
28+
* @see <a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMRect">DOMRect</a>
2929
*/
30-
@JsxClass(className = "DOMRect")
31-
public class ClientRect extends HtmlUnitScriptable {
30+
@JsxClass
31+
public class DOMRect extends DOMRectReadOnly {
3232

3333
private int bottom_;
3434
private int left_;
@@ -38,16 +38,17 @@ public class ClientRect extends HtmlUnitScriptable {
3838
/**
3939
* Creates an instance.
4040
*/
41-
public ClientRect() {
41+
public DOMRect() {
4242
super();
4343
}
4444

4545
/**
4646
* JavaScript constructor.
4747
*/
4848
@JsxConstructor
49+
@Override
4950
public void jsConstructor() {
50-
// nothing to do
51+
super.jsConstructor();
5152
}
5253

5354
/**
@@ -58,7 +59,7 @@ public void jsConstructor() {
5859
* @param right the right coordinate of the rectangle surrounding the object content
5960
* @param top the top coordinate of the rectangle surrounding the object content
6061
*/
61-
public ClientRect(final int bottom, final int left, final int right, final int top) {
62+
public DOMRect(final int bottom, final int left, final int right, final int top) {
6263
this();
6364
bottom_ = bottom;
6465
left_ = left;

src/main/java/org/htmlunit/javascript/host/ClientRectList.java renamed to src/main/java/org/htmlunit/javascript/host/DOMRectList.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,22 @@
2525
import org.htmlunit.javascript.configuration.JsxGetter;
2626

2727
/**
28-
* A JavaScript object for {@code ClientRectList}.
28+
* A JavaScript object for {@code DOMRectList}.
2929
*
3030
* @author Ahmed Ashour
3131
* @author Ronald Brill
3232
*/
33-
@JsxClass(className = "DOMRectList")
34-
public class ClientRectList extends HtmlUnitScriptable {
33+
@JsxClass
34+
public class DOMRectList extends HtmlUnitScriptable {
3535

36-
private final List<ClientRect> clientRects_;
36+
private final List<DOMRect> domRects_;
3737

3838
/**
3939
* Creates an instance.
4040
*/
41-
public ClientRectList() {
41+
public DOMRectList() {
4242
super();
43-
clientRects_ = new ArrayList<>();
43+
domRects_ = new ArrayList<>();
4444
}
4545

4646
/**
@@ -57,7 +57,7 @@ public void jsConstructor() {
5757
*/
5858
@JsxGetter
5959
public int getLength() {
60-
return clientRects_.size();
60+
return domRects_.size();
6161
}
6262

6363
/**
@@ -66,8 +66,8 @@ public int getLength() {
6666
*/
6767
@Override
6868
public final Object get(final int index, final Scriptable start) {
69-
if (index >= 0 && index < clientRects_.size()) {
70-
return clientRects_.get(index);
69+
if (index >= 0 && index < domRects_.size()) {
70+
return domRects_.get(index);
7171
}
7272
return NOT_FOUND;
7373
}
@@ -78,9 +78,9 @@ public final Object get(final int index, final Scriptable start) {
7878
* @return the found item
7979
*/
8080
@JsxFunction
81-
public ClientRect item(final int index) {
82-
if (index >= 0 && index < clientRects_.size()) {
83-
return clientRects_.get(index);
81+
public DOMRect item(final int index) {
82+
if (index >= 0 && index < domRects_.size()) {
83+
return domRects_.get(index);
8484
}
8585
return null;
8686
}
@@ -89,7 +89,7 @@ public ClientRect item(final int index) {
8989
* Add a rect.
9090
* @param clientRect the rect to add
9191
*/
92-
public void add(final ClientRect clientRect) {
93-
clientRects_.add(clientRect);
92+
public void add(final DOMRect clientRect) {
93+
domRects_.add(clientRect);
9494
}
9595
}

0 commit comments

Comments
 (0)