Changes

Release History

Version Date Description 5.5.0 August 30, 2026 Firefox 154, Chrome/Edge 151, Bugfixes 5.4.0 August 07, 2026 Firefox 153, neko, input validation, Bugfixes 5.3.0 July 15, 2026 Chrome/Edge 150, Bugfixes 5.2.0 June 20, 2026 Chrome/Edge 149, Firefox 152, Bugfixes 5.1.0 May 31, 2026 Firefox 151, Bugfixes 5.0.0 May 24, 2026 jdk17, Firefox 150, Chrome/Edge 148, Bugfixes 4.21.0 December 28, 2025 Firefox 146, core-js, Bugfixes 4.20.0 December 07, 2025 Chrome/Edge 143, core-js, Bugfixes 4.19.0 November 23, 2025 Chrome/Edge 142, Firefox 145, support spread in arrays, neko improvements, Bugfixes 4.18.0 October 30, 2025 Chrome/Edge 141, Firefox 144, FirefoxESR 140, javascript, Bugfixes 4.17.0 October 05, 2025 Chrome/Edge 140, Firefox 142, css :has(), :is(), :where(), BroadcastChannel, Bugfixes 4.16.0 August 29, 2025 StringUtils, Brotli, spread for object literals, Bugfixes 4.15.0 August 17, 2025 Chrome/Edge 139, Firefox 141, core-js, Bugfixes 4.14.0 July 30, 2025 Chrome/Edge 138, Firefox 140, core-js, junit 5, jsoup-bridge, Bugfixes 4.13.0 June 03, 2025 Chrome/Edge 136, Firefox 138, js prototypes, Bugfixes 4.12.0 May 17, 2025 Chrome/Edge 135, Firefox 137, Rhino RegExp, Bugfixes 4.11.1 March 26, 2025 Bugfixes 4.11.0 March 25, 2025 Chrome/Edge 134, Firefox 136, Rhino RegExp, less dependencies, Bugfixes 4.10.0 February 22, 2025 Chrome/Edge 133, Firefox 135, Javascript Errors, Bugfixes 4.9.0 January 22, 2025 Chrome/Edge 132, Firefox 134, BigInt, Bugfixes 4.8.0 January 12, 2025 Bugfixes, css colors, less dependencies, improved javascript support 4.7.0 November 29, 2024 Chrome/Edge 131, Firefox 133, String.matchAll, Bugfixes 4.6.0 November 06, 2024 Chrome/Edge 130, Firefox 132, Bugfixes 4.5.0 October 20, 2024 Chrome/Edge 129, Firefox 131, FirefoxESR 128, WebWorker, Javascript, Bugfixes 4.4.0 July 28, 2024 Chrome/Edge 127, Firefox 128, core-js, XMLHttprequest, Bugfixes 4.3.0 June 27, 2024 Chrome/Edge 126, Firefox 127, Bugfixes 4.2.0 June 05, 2024 Chrome/Edge 125, Firefox 126, neko fragment parsing, Bugfixes 4.1.0 April 28, 2024 Chrome/Edge 124, Firefox 125, Encodings, Bugfixes 4.0.0 April 01, 2024 IE support removed, htmlunit-websocket-client, Chrome/Edge 123, Firefox 124, Bugfixes 3.11.0 February 10, 2024 Chrome/Edge 121, Firefox 122, many Neko improvements, Bugfixes 3.10.0 January 14, 2024 Chrome/Edge 120, Firefox 120, neko script parsing, Bugfixes 3.9.0 December 03, 2023 Bugfixes, htmlunit-csp, CVE-2023-49093, improved neko 3.8.0 November 18, 2023 Chrome/Edge 119, Bugfixes 3.7.0 October 30, 2023 Firefox 119, Firefox ESR 115, Chrome/Edge 118, Bugfixes, Documentation updates 3.6.0 October 03, 2023 Firefox 116, Chrome/Edge 116, htmx 1.9.5, htmx 1.9.6, Bugfixes 3.5.0 August 20, 2023 Proxy support, Android compatibility, Chrome/Edge 115, Firefox 115, htmx 1.9.4, Bugfixes 3.4.0 July 27, 2023 Chrome/Edge 114, Firefox 114, htmx 1.9.3, Bugfixes 3.3.0 June 04, 2023 Reflect, Dialog, Bugfixes 3.2.0 May 15, 2023 Chrome/Edge 113, Firefox 113, SubmitEvent, Bugfixes 3.1.0 April 16, 2023 Chrome/Edge 111, Firefox 111, Html parser improved, for..of loops for HTMLCollections, Bugfixes 3.0.0 March 19, 2023 htmlunit.org, Chrome/Edge 110, Firefox 110, HTML parser improved, Bugfixes 2.70.0 January 22, 2023 Chrome/Edge 109, Firefox 109, improved CSS :not() handling, Bugfixes 2.69.0 January 05, 2023 Bugfixes 2.68.0 Dezember 28, 2022 Chrome/Edge 108, Firefox 108, Bugfixes, neko-html without xerces 2.67.0 November 20, 2022 Chrome/Edge 107, Firefox 107, Bugfixes 2.66.0 October 22, 2022 Chrome/Edge 106, Firefox 106, Bugfixes, NumberFormat, HTMLMediaElement 2.65.1 October 03, 2022 Bugfixes 2.65.0 October 03, 2022 Chrome/Edge 105, Firefox 105 2.64.0 August 18, 2022 Chrome/Edge 104, Firefox 103, client side validation 2.63.0 July 10, 2022 Chrome/Edge 103, Firefox 102 2.62.0 June 02, 2022 Chrome/Edge 102, Firefox 101, Bugfixes 2.61.0 April 25, 2022 Chrome/Edge 100, Firefox 99, Bugfixes 2.60.0 March 20, 2022 Chrome/Edge 99, Bugfixes 2.59.0 March 5, 2022 Chrome/Edge 98, Firefox 97, Polyfills, Bugfixes 2.58.0 February 4, 2022 Bugfixes 2.57.0 January 23, 2022 Bugfixes, Chrome/Edge 97, Firefox 96, ValidityState, htmx support 2.56.0 December 12, 2021 Bugfixes, Chrome/Edge 96, Firefox 95, FF78 deprecated 2.55.0 November 14, 2021 Bugfixes, Chrome/Edge 95, Firefox 94 2.54.0 October 17, 2021 Bugfixes, Chrome/Edge 94, Firefox 93 2.53.0 September 18, 2021 Bugfixes, Chrome/Edge 93, Firefox 92 2.52.0 July 25, 2021 Bugfixes, Firefox 90 2.51.0 July 04, 2021 Bugfixes, Firefox 89, Chrome/Edge 91, JS Template support 2.50.0 May 16, 2021 Bugfixes, Firefox 88, Chrome/Edge 90 2.49.1 April 11, 2021 Hotfix 2.49.0 April 11, 2021 Bugfixes, Firefox 87 2.48.0 March 20, 2021 Bugfixes, Chrome/Edge 89, Firefox 86 2.47.1 February 7, 2021 Hotfix 2.47.0 February 7, 2021 Bugfixes, Chrome/Edge 88, Firefox 85 2.46.0 January 2, 2021 Bugfixes, Chrome/Edge 87, Firefox 84 2.45.0 November 12, 2020 Bugfixes, switch from FF68 to FF78 ESR; Chrome/Edge 86, FF82 2.44.0 October 3, 2020 Bugfixes, Chrome/Edge 85, FF80, XMLHttpRequest event handling 2.43.0 August 8, 2020 Bugfixes, Rhino fixes, Chrome 84, FF79, Edge added, FF60 removed 2.42.0 July 11, 2020 Bugfixes, many Rhino fixes 2.41.0 June 6, 2020 Bugfixes, Chrome 83, Firefox 77 2.40.0 May 2, 2020 Bugfixes, Chrome 81, Firefox 75 2.39.0 April 5, 2020 Bugfixes, Firefox 74 2.38.0 March 8, 2020 Bugfixes, CHROME 80 2.37.0 January 28, 2020 Bugfixes, CHROME 79, FF52 removed, FF68 added 2.36.0 August 24, 2019 Bugfixes, CHROME 76, Brotli, FF52 deprecated 2.35.0 April 15, 2019 Bugfixes, CHROME 73, reworked javascript logging 2.34.1 March 4, 2019 Bugfixes 2.34.0 Feb 28, 2019 Bugfixes, CHROME 72, CSSParser cleanup 2.33 Sep 12, 2018 Source moved to GitHub, Reworked JS event listeners, Bugfixes 2.32 July 29, 2018 Bugfixes, FIREFOX_45 removed, FIREFOX_60 added, CHROME 68 2.31 May 22, 2018 Bugfixes, sync with Rhino, FIREFOX_45 is deprecated, special GAE handlings removed 2.30 March 25, 2018 Bugfixes, using or own CSSParser for improved performance, URLSearchParams implemented, start adding support of user defined iterators, CHROME 66 2.29 December 28, 2017 Bugfixes, Chrome 63, WebStart support 2.28 November 12, 2017 Bugfixes, Chrome 62, improved Promise 2.27 June 4, 2017 FF52, Bugfixes 2.26 April 4, 2017 Bugfixes 2.25 February 23, 2017 Java 8, InteractivePage and SvgPage removed, PromptHandler, WebRequest.getCharset, ScriptPreProcessor, Bugfixes 2.24 January 9, 2017 Bugfixes 2.23 July 27, 2016 Bugfixes, hover styles are supported, various layout calculation improvements, DefaultJavaScriptErrorListener added 2.22 May 27, 2016 Bugfixes, Chrome is best supported 2.21 Apr 6, 2016 FF45, Bugfixes 2.20 Feb 28, 2016 IE8 is no longer supported, Bugfixes 2.19 Nov 12, 2015 Bugfixes, Media query support 2.18 Jul 26, 2015 Bugfixes, SvgPage, .type(Keyboard), PATCH method for HTTP 2.17 Jun 3, 2015 FF38, Bugfixes 2.16 Apr 20, 2015 Java 7, WebClient.close(), FF31, IE11 progress, Chrome progress, Bugfixes 2.15 Jun 2, 2014 Bugfixes, IE11 progress 2.14 Feb 17, 2014 FF24, Bugfixes, initial work on IE11 2.13 Oct 11, 2013 Bugfixes 2.12 Mar 6, 2013 Bugfixes, CSS3 Selectors 2.11 Nov 6, 2012 Bugfixes, Java 6, HtmlPage.getElementById(), .type() special keys, initial WebSocket support, initial SVG support, primitive Geolocation support, SOCKS proxy for https, CORS 2.10 Jul 21, 2012 Bugfixes, SSL client certificate 2.9 Aug 9, 2011 Bugfixes, performance improvements 2.8 Aug 5, 2010 Bugfixes, (large) binary download, single thread for JavaScript background tasks, HttpClient 4, SOCKS proxy, initial support for FF 3.6, support for GoogleAppEngine 2.7 Feb 9, 2010 Bugfixes, initial IE8 support, HttpClient 4 migration preparation 2.6 Sep 2, 2009 Bugfixes, add HtmlPage.save(), better XHTML support, Proxy Auto-Config, improved cache 2.5 Apr 21, 2009 Bugfixes, MooTools support, support all HTML elements and various JavaScript properties 2.4 Dec 30, 2008 Bugfixes, ActiveX support, JQuery & MochiKit support, minimal applet support, IE conditional comments 2.3 Sept 16, 2008 Bugfixes, better generics, add Firefox 3 emulation, GWT 1.5 support 2.2 Jul 24, 2008 Numerous bugfixes (handling of ill formed HTML code, document.write, ...), speed improvements, and move to HtmlUnit-core-js (Rhino fork) 2.1 Apr 15, 2008 Performance improvements in CSS processing and a few bug fixes 2.0 Apr 7, 2008 Migration to Java 5, implementation of org.w3c.dom.*, better support for incorrect html code, large improvements in JavaScript support (GWT 1.4 tests now pass, ...) 1.14 Jan 9, 2008 Enormous improvements particularly in JavaScript support and execution speed 1.13 Aug 17, 2007 Fixes bad maven packaging of version 1.12 + different improvements 1.12 Aug 10, 2007 Enormous improvements particularly in JavaScript support and execution speed 1.11 Mar 15, 2007   1.10 Nov 03, 2006   1.9 Jun 27, 2006   1.8 Feb 17, 2006   1.7 Aug 23, 2005   1.6 May 10, 2005   1.5 March 13, 2005   1.4 January 9, 2005   1.3 November 12, 2004   1.3-pre2 September 26, 2004   1.3-pre1 November 7, 2003   1.2.3 July 31, 2003   1.2.2 March 29, 2003   1.2.1 March 20, 2003   1.2 March 10, 2003   1.1 November 25, 2002   1.1-rc2 November 16, 2002   1.1-rc1 October 29, 2002   1.1-pre5 September 24, 2002   1.1-pre4 August 23, 2002   1.1-pre3 July 23, 2002   1.1-pre2 July 10, 2002   1.1-pre1 July 2, 2002   1.0 May 22, 2002  

Release 5.5.0 – August 30, 2026

Type Changes By Update MockWebConnection: requestCount_ changed from a plain int to AtomicInteger and lastRequest_ declared volatile to correct non-atomic increment and unsynchronised write under concurrent access. rbri Update MockWebConnection: getLastWebRequest, getLastAdditionalHeaders, getLastMethod, and getLastParameters now throw a clear IllegalStateException instead of a NullPointerException when called before any request has been made. rbri Update MockWebConnection: the stored IOException in getRawResponse is now wrapped at throw time so the stack trace points to the actual call site rather than where the exception was constructed. rbri Update MockWebConnection: Improved Javadoc. rbri Update WebAssert: assertTextNotPresentInElement now chains the ElementNotFoundException cause instead of dropping it. rbri Update WebAssert: assertAllTabIndexAttributesSet now produces distinct error messages for a missing tabindex attribute versus an out-of-bounds value. Error message itself is also fixed to point to the exact element. rbri Update WebAssert: Improved Javadoc. rbri Update DefaultCredentialsProvider: removeCredentials now tries an exact AuthScope match before falling back to best-match scoring. rbri Update DefaultCredentialsProvider: setCredentials now throws a clear IllegalArgumentException for null credentials. rbri Update DefaultCredentialsProvider: SocksAuthenticator_ declared volatile to guard against unsynchronized reads. rbri Update DefaultCredentialsProvider: Improved Javadoc. rbri Fix BlobUrlStore: remove() no longer strips the fragment from the url. rbri Update BlobUrlStore: Improved Javadoc. rbri Update CookieManager: Simplify clearExpired using Collection.removeIf(). rbri Update CookieManager: Replace method-level synchronization with ReentrantReadWriteLock. rbri Fix WebResponseData: Ensure BOM processing is applied consistently across Brotli and deflate decompressed streams. rbri Fix WebResponseData: Support all standard zlib headers during deflate stream decompression. rbri Update Improved case-insensitive HTTP header handling in WebRequest. rbri Update Cleaned up Javadoc in WebRequest. rbri Fix Moved dot-segment normalization to StringUtils.removeDots(). The new implementation is compliant with RFC 3986 section 5.2.4 and fixes two edge cases missed by the previous regex approach rbri Fix SubtleCrypto now strictly validates keyUsages against the specified algorithm and rejects with a SyntaxError when unsupported usages are provided. rbri Fix SubtleCrypto promise rejections now returns a properly initialized DOMException instance with valid properties (e.g., name). rbri Add core-js: 'new.target' support implemented. rhino Fix core-js: parameter forwarding when the Proxy 'construct' trap forwards its argument list to Reflect.construct fixed. rbri Update core-js: Small optimization for context handling. rbri Fix CSS: Replace unbounded unsynchronized HashMap static cache for media queries with a thread-safe. rbri Fix CSS: Fix selector validation for nth-last-child, nth-of-type, and nth-last-of-type pseudo-classes. rbri Update CSS: Optimize nth-child calculations by replacing floating-point division with exact integer modulo arithmetic. rbri Fix CSS: Fix whitespace handling in one-of attribute selector (~=) to support tabs, newlines, and other whitespace characters. rbri Fix CSS: Fix centimeter unit conversion in media queries and CSS values. rbri Fix CSS: Fix height-based media queries (min-height, max-height, min-device-height, max-device-height) to evaluate against height instead of width. rbri Fix CSS: Fix NullPointerException when evaluating relative selector with next sibling combinator (+) on an element without a next sibling element. rbri Fix SimpleRange: surroundContents() now correctly throws an InvalidStateError DOMException when any non-Text node is only partially contained by the range. rbri Fix SimpleRange: insertNode() now uses DomText.splitText() when inserting within text nodes for proper DOM specification compliance. rbri Fix SimpleRange: fix deleteContents() and containedNodes() boundary node resolution to prevent illegal deletion of end container elements when offset equals child count. rbri Fix SimpleRange: fix deleteContents() text truncation off-by-one bug when endOffset equals the end container text length. rbri Fix SimpleRange: fix cloneContents() to return an empty fragment when the range is collapsed inside an element container. rbri Fix SimpleRange: fix cloneContents() node matching logic to prevent IllegalStateException when start and end containers are the same node. rbri Fix SimpleRange: cloneContents() now appends selected child nodes to the DocumentFragment instead of appending the container element itself when startContainer equals endContainer. rbri Fix SimpleRange: selectNode() selects the node itself (so the container is the parent of the node and the offsets are the node's position among siblings). This makes this spec conformant. rbri Fix SimpleRange: fix deleteContents() if start and and are the same. rbri Update cssparser: 'not' and 'and' are valid identifiers and valid media (featrue) names. rbri Fix cssparser: locator for the selector list now points to the first selector in that list instead of the last one. rbri Fix cssparser: type QUATER renamed to QUARTER (including enum and method names). rbri Fix cssparser: @charset does not require whitespace before the charset name. rbri Update cssparser: improved parser robustness. rbri Fix cssparser: error skipping code now handles all units. rbri Fix cssparser: beginColumn/endLine values are wrong in some cases. rbri Update cssparser: simplified/improved color parsing. rbri Update DomNodeIterator traverse() simplified and optimized. rbri Update Replace a recursive impl in DomNodeIterator with a loop. rbri Update DomDocumentType.getInternalSubset() now returns null instead of an empty string. rbri Update DomDocumentFragment and DomDocumentType now providing a default impl of getCanonicalXPath() returning an empty string. rbri Update Docu: Added comprehensive Content Extraction guide covering asNormalizedText(), CSS visibility handling, click-based link navigation over manual href extraction, form controls (inputs, textareas, buttons, toggles, select lists), tables, lists, and advanced serializer formatting rules. rbri Fix HtmlTextArea.getNormalizedText() no longer right trims the content. rbri Update core-js: Improved slot implementation to reduce memory used by function objects. rhino Fix Small optimizations for ComputedCssStyleDeclaration. rbri Fix Fixed getBoundingClientRect()/height calculation: the height property from style is now used if available. rbri Update AttachmentHandler, PrintHandler, PromptHandler, RefreshHandler, ScriptPreProcessor, StatusHandler, and WebStartHandler marked as @FunctionalInterface. rbri Update Simplified EncodingSniffer.translateEncodingLabel(): now always returns the translator's normalized encoding name instead of sometimes returning the original (possibly mixed-case) input. rbri Fix Fixed EncodingSniffer.sniffEncodingFromCssDeclaration(): a missing closing quote after the @charset declaration's opening quote is now explicitly detected and handled. rbri Fix Fixed EncodingSniffer.sniffEncodingFromXmlDeclaration(): a malformed XML declaration containing the word "encoding" not followed by a quoted value no longer throws a StringIndexOutOfBoundsException; the encoding is now correctly reported as undetermined instead. rbri Fix Fixed UrlUtils.resolveUrl(): an absolute-path relative reference (e.g. resolving "/a/./b" against a base URL) now has its dot-segments ("." and "..") normalized the same way a merged relative path already was. rbri Fix Fixed getBoundingClientRect()/width calculation: a block-level element sized via a shrink-to-fit CSS width keyword (max-content, min-content) or containing only text (no child element boxes) no longer incorrectly resolves to a width of 0. rbri Fix Fixed getBoundingClientRect()/width calculation: an inline-block element with an explicit width: auto now correctly shrink-wraps to its content, instead of incorrectly filling the full window width the same way an ordinary block element does. rbri Fix Fixed getBoundingClientRect()/width calculation: an ordinary block-level element with no explicit width no longer incorrectly resolves to a content-based (shrink-wrapped) width; it now correctly fills the full width of its containing block, as normal CSS block flow requires. (regression from 5.2.0) rbri Update Default display of 'track' elements is the empty string. rbri Update Default display of 'source' elements is the empty string. rbri Fix NSResolver.lookupNamespaceURI() now returns null for unkown namespaces. rbri Fix TrackBlankContentAndSkipLeadingWhitespaceReader.read() wrong array indices in the whitespace-skip arraycopy codebranch fixed. rbri Update Chrome/Edge: FontFaceSet is now supported. rbri

Release 5.4.0 – August 07, 2026

Type Changes By Add docu: Detailed description about input html elements usage. rhino Add core-js: ES2021 WeakRef and FinalizationRegistry with full standard compliance added. rhino Update websocket-client: jetty updated to 12.1.12. rbri Fix HtmlSelect methods removeOption() and replaceOption() support for optgroups fixed. rbri Fix HTMLNumberInput the different validation methods using a relaxed version of the number parser. rbri Fix HTMLNumberInput value property getter still does some cleanup on the raw value (e.g. removes a trailing dot). rbri Fix HTMLNumberInput value property getter no longer uses a format that matches the browser locale. rbri Fix HTMLNumberInput now sanitizes the value in the setter, not in the getter as before. rbri Add Add a new Html spec conform number parser - HtmlNumberParser and use it from HtmlNumberInput. rbri Add Implemented the validationMessage property for HtmlButton, HtmlTextArea, HtmlInput, HtmlObject, HtmlOutput, and HtmlSelect. rbri Fix Fixed HTMLFormElement.checkValidity()/reportValidity(): the aggregate check over a form's controls now correctly fires on every failing control. rbri Add Fixed checkValidity()/reportValidity(): a failing control now correctly fires a cancelable 'invalid' event (and reportValidity() additionally focuses the first invalid control). rbri Update INCOMPATIBLE CHANGE: org.htmlunit.html.ValidatableElement renamed to ValidatableHtmlElement. rbri Fix neko: section no longer closes select. rbri Add Added HTMLFieldSetElement.type property. rbri Add Property HTMLFieldSetElement.elements added. rbri Fix Fixed DisabledElement.isDisabled(): a disabled fieldset no longer disables descendants of its first legend element, matching the spec's exemption for controls placed inside a fieldset's legend. rbri Fix Fixed checkValidity()/reportValidity() and the CSS :valid/:invalid pseudo-classes for HtmlButton, HtmlTextarea, HtmlInput, HtmlObject, HtmlOutput, and HtmlSelect. rbri Fix HtmlFileInput.reset(): a form reset no longer tries to reconstruct a fake File from the 'value' attribute; it now simply clears the selected files, without firing a change event. rbri Fix HtmlFileInput.isValid(): a disabled file input is no longer incorrectly reported as invalid by checkValidity() when 'required' is set and no file is selected. rbri Add Method reportValidity() support to various form controls added. rbri Fix Various fixes to HtmlButton validation processing. rbri Remove Document HtmlButton's no-op implementations for reset and default value handling, and remove extraneous debug logging. rbri Remove Method isReadonly() removed from HtmlButton because there is no readonly support for this control. rbri Update DisabledElement now implements Element and provides a default implementation of isDisabled(). rbri Fix Fixed HtmlTextArea.reset(): the text entry cursor/selection is now only moved to the end of the restored value when that value actually differs from the current one, instead of always being forced to the end. rbri Fix Fixed HtmlInput/HtmlSelectableTextInput: setting the value to the value it already holds no longer moves the text entry cursor/selection to the end, mirroring the same fix applied to HtmlTextArea. rbri Fix Fixed HtmlSelectableTextInput.reset(): removed a leftover selection reset that left selectionStart and selectionEnd in an inconsistent state after a form reset. rbri Update Major refactoring of the value handling for textarea; setting the value no longer manipulates the DOM, instead a separate value and dirty flag are maintained (this is now in sync with the spec and the input element). rbri Remove Method isReadonly() removed from HtmlSelect; because there is no readonly support for this control. rbri Fix HtmlSelect should not drop invalid size attributes on page attachment. rbri Fix Fixed reset of the isValueDirty flag for HtmlInput. rbri Update Corrected and improved value caching in ComputedCssStyleDeclaration. rbri Fix Fixed line count determination. rbri Update neko: HTMLElement hashCode and equals fixed. rbri Update neko: Remove the <SOUND>, <ILAYER>, <LAYER>, <NOLAYER>, <NEXTID>, <MULTICOL>, <BLINK>, <SPACER>, and <XML> tag suport. rbri Fix neko: HTMLWriterFilter now serializes <textarea> and <title> element content with entity encoding (https://github.com/HtmlUnit/htmlunit-neko/issues/173). rbri Update neko: Remove the <comment> tag suport (https://github.com/HtmlUnit/htmlunit-neko/issues/173). rbri Update neko: A new <nobr> start tag closes an <nobr> that is still open, even across intervening block elements. rbri Update neko: A new <a> start tag closes an <a> that is still open, even across intervening block elements. rbri Add csp: Multi-policy AND query APIs added. Rick Mitchell Update neko: Some performance optimizations and code cleanup. rbri Fix Fix a possible resource leak by making sure ImageIOImageData closes the base stream. rbri Update DownloadedContent.OnFile and ImageIOImageData now use Cleaner instead of finalize(). rbri Update Improved headers for XHR preflight requests. Fixes #1152. rbri Update The innerText() method for select elements now generates the same output as real browsers. rbri Update The java.net.http module is now required. rbri Update neko: Major update - the select element now allows arbitrary tags. https://github.com/whatwg/html/pull/10557 (https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/select) rbri Update neko: The input element closes select elements. rbri Add Navigator.sendBeacon() method added. rbri Update The area element supports the 'type' property in Firefox 153. rbri Update Error.stackTraceLimit is available in Firefox 153. rbri Update (I)frame requests now also send the Accept header. Fixes #1152. rbri Update Area link handling is now in sync with anchor handling (implementation shared via the new HyperlinkElementSupport class and the new HyperlinkElement interface). This adds support for the 'ping' and 'download' attributes, among others. Fixes #1152. rbri Update Script web requests now respect the 'crossorigin' attribute. Fixes #1152. rbri Update Anchor ping requests now also send the Accept-Encoding and Cache-Control headers. Fixes #1152. rbri Update Anchor web requests now respect the 'crossorigin' attribute. Fixes #1152. rbri Update Major update to WebRequest to improve support for the Sec-Fetch-* HTTP headers. Fixes #1152. rbri Update The URL/anchor hostname setter received several fixes. rhino Update core-js: Added support for a common workaround for subclassing built-in objects (such as Set) without using ES6 class/extends syntax, by using Reflect.construct() with a newTarget argument. Thanks to Lai Quang Duong. rbri Update core-js: Improved strict mode handling for direct eval() calls. rhino Update Range.getClientRects() and Range.getBoundingClientRect() now ignore whitespace-only text nodes and block-level siblings when calculating the horizontal offset of a text node. rbri Update Range.getClientRects() and Range.getBoundingClientRect() now handle DomText nodes correctly. rbri Update Range.getBoundingClientRect() now uses shrink-wrap width calculation for block elements, returning a tight bounding box around the actual content rather than the full containing block width. rbri Update Range.getTextNodeRect() now correctly determines character offsets when the range boundaries are set on a parent element rather than directly on the text node, returning the full text width instead of a single-character width. rbri

Release 5.3.0 – July 15, 2026

Type Changes By Update Make XMLHttpRequest check blob url's origin properly instead of throwing No permitted "Access-Control-Allow-Origin" header everytime Lai Quang Duong Update Reworked URL.createObjectURL() / URL.revokeObjectURL() to back blob URLs with a user-agent-wide blob URL store on WebClient, replacing the previous per-Document store. This matches W3C specification where a blob: URL minted in one document is resolvable from any same-client browsing context. Lai Quang Duong Fix asXml(): emit formatting line breaks only where the document contains whitespace; adjacent elements no longer gain a fabricated line break that renders as a space. Ronny Shapiro Update Many, many javadoc improvements. rbri Update MDN links added to all js classes. rbri Add CanvasRenderingContext2D lineCap property support added. rbri Add CanvasRenderingContext2D lineJoin property support added. rbri Add Checkstyle rule set updated: JavadocStyle -> SummaryJavadoc. Fixes #1149. rbri Update Missing getter/setter for src and type property of HTMLEmbedElement added. Lai Quang Duong Add Various additions to the web site content. rbri Add The document 'Details about HtmlUnit Security' added to the documentation pages. rbri Update Update TransformerFactory and DocumentBuilderFactory configuration with FEATURE_SECURE_PROCESSING and restrict external DTD and stylesheet references to mitigate remote resource loading during XSLT transformation. Thanks to MatrixNeoKozak. rbri Update websocket-client: jetty updated to 12.1.11. rbri Update PointerEvent simulation of altitudeAngle/azimuthAngle improved. rbri Fix XMLHttpRequest responseXML() has to check the responseType as first step. rbri Fix XMLHttpRequest responseXML shold thow if the response type is not document or blank. rbri Update BrowserVersion getPixesPerChar() is deprecated, use getPixelsPerChar() instead (typo in method name fix). rbri Add Initial support for the 'plaintext-only' value of the contentEditable attribute. rbri Update Chrome/Edge: Screen colorDepth/pixelDepth are 24 now. rbri Fix XMLHttpRequest error handling when accessing to a local resource is forbidden for security reason fixed including the correct values for allResponseHeaders and statusText. rbri Fix XMLHttpRequest upload property must return the same object for repeated calls. rbri Fix Option index property fixed for selects using optgroups. rbri Fix Making a textarea element readonly sets the readonly attribute to '' instead of 'readOnly'. rbri Fix Making an input element readonly sets the readonly attribute to '' instead of 'readOnly'. rbri Fix Minor fixes for the replacement of select options. rbri Fix MouseEvent clientY calculation in HtmlImage fireEvent() fixed. rbri Add Apache ECharts test case added. rbri Fix window.crypto.subtle always returns the same object. rbri Fix Crypto randomUUID() fixed. rbri Update Improved index checking for the SiblingListIterator ctor. rbri Fix DomElement.setAttributeNode(Attr) returns the previously set Attr with the same name if one existed; instead of always returning null. rbri Fix DomElement.ChildElementsIterator#remove() now works also for the last element of the iterator. rbri Fix Make DomNode.normalize() recurse into the full subtree, not just direct children. rbri Update xpath: code cleanup. rbri Update xpath: use getDeclaredConstructor().newInstance() as we on JDK 17 now. rbri Add core-js: WeakRef support added. RhinoTeam Update core-js: work on a new faster interpreter was started. RhinoTeam Fix Range getBoundingClientRect() x and y calculation fixed. rbri Update Improved Range getClientRects() implementation. rbri Fix Range setEndBefore() now really updates the end. rbri Update SimpleRange containedNodes() now works also if startNode and endNode are the same. rbri Fix SimpleRange containedNodes() no longer changes the node's text (stupid c&p from delete). rbri Update Range getBoundingClientRect() and getClientRects() supporting DomText node's also. rbri Fix Range getBoundingClientRect() now sets the X and Y value of the rect instead of setting the Y value twice. rbri Fix DomNode cloneNode() fixed to ensure isBodyParsed() returns true for the clone. Fixes #1141. rbri Fix Document adoptNode() should not clone the node. Fixes #1141. rbri Update JS functions clearTimeout() and clearInterval() checking for positive jobId's before trying to find the job (job id's are always positive). rbri Fix Remove the 'cancelledJobs_' list from JavaScriptJobManagerImpl; this is not needed at all and the root of a memory leak for some web pages. Fixes #1141. rbri Update All colors form the recet css specs added to CssColors. rbri Fix CanvasRenderingContext2D clip() does no longer close the current subpath. rbri Update AwtRenderingBackend consecutive moveTo() calls no longer accumulating orphan subpaths. rbri Update CanvasRenderingContext2D fillRect() now uses double coordinates. rbri Update Improved AwtRenderingBackend arc() now forwards to ellipse() as suggested by the spec. rbri Update Improved AwtRenderingBackend ellipse() angle conversation from canvas to AWT. rbri Add CanvasRenderingContext2D fill() supports the winding rule parameter. rbri Update AwtRenderingBackend more robust clip handling in the SaveState. rbri Update AwtRenderingBackend font is now part of the SaveState. rbri Fix CanvasRenderingContext2D close() creates a new subpath according to the spec. rbri Fix AwtRenderingBackend stroke() only drwas if th path is not empty. rbri Update Improved AwtRenderingBackend stroke handling by setting the lineCap, lineJoin, and miterLimit properties of BasicStroke. rbri Fix CanvasRenderingContext2D rect() creates a separate subpath. rbri Fix CanvasRenderingContext2D rect()/strokeRect()/fillRect()/clearRect() supporting negative width/hight. rbri Fix CanvasRenderingContext2D lineTo() is a moveTo() if currentPath is empty. rbri Fix CanvasRenderingContext2D arc() and ellipse() start point handling fixed. rbri Update Improved image comparison for our test cases; this shows a bunch of problems that are hard to identify. rbri Fix CanvasRenderingContext2D strokeRect() has to respect the lineWidth. rbri Update CanvasRenderingContext2D strokeRect() now uses double coordinates. rbri Fix AwtRenderingBackend has to set the RenderingHints.VALUE_STROKE_PURE to correct draw at the right/bottom. rbri Fix CanvasRenderingContext2D implicitly created subpath's do a moveTo to their start point. rbri Update AwtRenderingBackend putImageData() now uses a BufferedImage for performance. rbri Update CanvasRenderingContext2D translate() now uses float coordinates. rbri Fix CanvasRenderingContext2D putImageData() parameter handling fixed. rbri Fix CanvasRenderingContext2D createLinearGradient() parameters fixed. rbri Fix CanvasRenderingContext2D lineWidth is now a float. rbri

Release 5.2.0 – June 20, 2026

Type Changes By Update Upgrade commons-logging to 1.4.0. rbri Update HTMLMediaElement canPlayType() is much closer to real browsers now. rbri Fix HtmlMeter's parent class is HtmlElement not HtmlMedia. rbri Add FF: Notification constants maxActions added. rbri Add FF: StyleAttribute fieldSizing/field-sizing available. rbri Add FF: SVGTextPathElement constants TEXTPATH_SIDETYPE_UNKNOWN, TEXTPATH_SIDETYPE_LEFT, and TEXTPATH_SIDETYPE_RIGHT added. rbri Update core-js: introduce and use AbstractEcmaObjectOperations ordinarySet() and ordinarySetWithOwnDescriptor() for Reflect. rbri Update core-js: improvements for Reflect set() when applying to TypedArrays. rbri Fix core-js: defineOwnProperty() should not throw when called vial Reflect. rbri Update core-js: support 'with (proxy) {...}' statements. rbri Update core-js: Proxy support the receiver when calling the set() trap. Thanks to Lai Quang Duong. rbri Update core-js: Reflect set() uses the correct target when forwarding the call. Thanks to Lai Quang Duong. rbri Update core-js: small code optimizations and improved tests. RhinoTeam Fix core-js: fix enter and exit frame bug when using generators. RhinoTeam Fix Fixed offsetWitdth, offsetHeight, clientWitdth, and clienttHeight values for iframes and frames. rbri Fix The offsetWidth of an absolutely positioned element reflects the width of the child elements. Fixes #382. rbri Fix A statically (or relatively) positioned block element placed inside an absolutely positioned element, gets itssize from its parent's size. Fixes #382. rbri Update Chrome/Edge 149: setting outerHTML no longer throws when called on a detached element. rbri Update websocket-client: jetty updated to 12.1.10. rbri Fix CanvasRenderingContext2D#arc() appends to the current path. rbri Fix CanvasRenderingContext2D#rect() now respects the current transformation for the whole rect. rbri Fix core-js: Reflect get if receiver is not present, then use the target instead rbri Fix core-js: Reflect get use the receiver when searching for the property rbri Fix core-js: Reflect get mast walk the prototype chain when searching for the property rbri Fix core-js: Proxy has to use the correct receiver when calling the get trap rbri Fix CanvasRenderingContext2D#clip() clip the entire current path, not just last subpath. rbri Fix CanvasRenderingContext2D#restore() fix alpha handling. rbri Fix CanvasRenderingContext2D#putImageData() maps source pixels row-major into destination. rbri Fix CanvasRenderingContext2D#getImageData() now return the pixels in correct order. rbri

Release 5.1.0 – May 31, 2026

Type Changes By Fix core-js: fix for calling Reflect.set() without a value argument. rbri Add core-js: add ECMA-426 source map support. RhinoTeam Fix Fix Document.getCookie() to serialize cookies in the order required by RFC 6265 section 2; cookies with longer paths first, then by creation time. Lai Quang Duong Update core-js: reworked constructor/prototypes setup to use descriptors. RhinoTeam Fix Dependencies maven-model and maven-artifact were declared without test scope. Fixes #1124. Sebastian Peters Fix Fix Location.setHash() to update the page's WebRequest URL when the hash changes, ensuring page.getUrl() reflects the current hash. Lai Quang Duong Fix Fix WebClient.makeWebResponseForAboutUrl() to properly handle about:blank with hash fragments (e.g., about:blank#foo) instead of throwing MalformedURLException. Lai Quang Duong Fix core-js: Array spread throws TypeError on non-iterable, null, or undefined targets. RhinoTeam Fix core-js: TokenStream sets back the cursor (to a value+1) when it shouldn't do that (only when EOF). rbri Add core-js: source map support implemented. RhinoTeam

Release 5.0.0 – May 24, 2026

Type Changes By Add Tests for htmx 2.0.10 added. rbri Add InnerOuterTextSerializer handles dt tags like li. rbri Add Support start attribute when creating the text representation of an UnorderedList. rbri Add HtmlHeadingGroup introduced. rbri Update HtmxTwoZeroSevenScriptPreProcessor updated to support htmx 2.0.10 also. rbri Add Simple first impl of Document parseHTMLUnsafe() added. rbri Fix moveBefore() fixed to not create double id/name index entries. rbri Fix Make sure elements not added twice to the id/name index. rbri Update core-js: 'BaseFunction' and 'NativeString' converted to descriptor. RhinoTeam Update core-js: typed array constructor improved to be closer to spec. RhinoTeam Remove INCOMPATIBLE CHANGE: WebClientOptions.getWebSocketMaxTextMessageBufferSize() / setWebSocketMaxTextMessageBufferSize() removed. rbri Remove INCOMPATIBLE CHANGE: WebClientOptions.getWebSocketMaxBinaryMessageBufferSize() / setWebSocketMaxBinaryMessageBufferSize() removed. rbri Fix WebSocket close() check for null web socket impl. rbri Fix WebSocket close event - set the was clean flag only if statusCode is 1000. rbri Fix WebSocket constructor improved, better checking/handling of the url and throw the correct error types. rbri Fix WebSocket should handle the socket connect error by setting the status and triggering the listeners. rbri Update INCOMPATIBLE CHANGE: WebSocketListener.onWebSocketBinary(byte[] data, int offset, int length) changed to onWebSocketBinary(ByteBuffer payload). rbri Update INCOMPATIBLE CHANGE: WebSocketListener.onWebSocketBinary(byte[] data, int offset, int length) changed to onWebSocketBinary(ByteBuffer payload). rbri Update INCOMPATIBLE CHANGE: WebSocketAdapter.closeIncommingSession() renamed to closeIncomingSession(). rbri Update websocket-client: jetty updated to 12.1.8. rbri Fix core-js: Fix Object.assign with array target losing length update. RhinoTeam Update core-js: Introduce ClassSizeException (extends ClassFileFormatException) and tighten up exceptions related to class compilation. RhinoTeam Fix core-js: Fix for ignored spreads in array construction. rbri Fix core-js: Fix uint8 overflow in array literal skipIndexesId and sourcePositions. rbri Update core-js: Tidy up serial version ids; applied openrewrite to add `@Serial` annotations. RhinoTeam Add Introduce SpeechRecognitionEvent and SpeechRecognitionErrorEvent and make them also available as webkitSpeechRecognitionEvent and webkitSpeechRecognitionError. rbri Add Introduce SpeechGrammar, SpeechGrammarList, and SpeechRecognition and make them also available as webkitSpeechGrammar, webkitSpeechGrammarList, and webkitSpeechRecognition. rbri Update SVGSymbolElement is a child of SVGGraphicsElement. rbri Update Bunch of event constructor fixes. rbri Update Unified and enhanced test for all the js event objects, many missing test classes added. rbri Update ChromeEdge: The <command> html tag is no longer supported. rbri Update ChromeEdge: document.createEvent('WheelEvent') throws. rbri Update ChromeEdge: document.createEvent('CloseEvent') throws. rbri Update ChromeEdge: document.createEvent('AnimationEvent') throws. rbri Update ChromeEdge: document.createEvent('PopStateEvent') throws. rbri Update ChromeEdge: NumberFormat for de-CH and it-CH updated. rbri Fix neko: invalid numeric entity handling improved rbri Add neko: hgroup support added rbri Fix neko: null character handling in script content fixed rbri Fix neko: update translation of 0x98 to \u02DC rbri Fix neko: fix surrogate-character-reference parse error handling rbri Fix neko: fix consecutive ampersands before named entity parsing rbri Add neko: include tests from https://github.com/html5lib/html5lib-tests.git rbri Fix neko: more fuzzer tests and fixes rbri Update neko: HTMLScanner.scanName: ASCII fast-path for the per-char inner loop rbri Fix neko: javadoc fixes rbri Update neko: handle empty attributes always the same way rbri Update neko: more robust collection handling, missing forcedEndElement_ reset fixed rbri Add neko: add missing methods to EmptyXMLAttributesImpl to make it more robust rbri Add neko: introduce and use immutable EmptyXMLAttributesImpl rbri Update neko: reuse the plaintext scanner (like the other scanners) and avoid toLowerCase if not needed rbri Fix neko: use the correct property (http://cyberneko.org/html/properties/names/attrs) in case of the error handling for strange attributes rbri Fix neko: adjust column now also when skipping rbri Update neko: modernize by using Arrays.mismatch() rbri Update neko: reuse the HTMLUnicodeEntitiesParser (like we do for many other things) and simplify the code a bit rbri Update Defer building the HtmlPage id/name lookup index until first read. Ronny Shapiro Fix Input type image returns false for willValidate. rbri Fix XMLHttpRequest adds the origin header to patch requests. rbri Update ChromeEdgeFF: document.createElement tagName character validation adjusted. rbri Update ChromeEdge: willValidate returns true for readonly buttons. rbri Fix Fix toString result for Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, and Intl.v8BreakIterator. rbri Fix Fix v8BreakIterator ctor to accept language-region. rbri Fix Fix DomNode.insertBefore(DomNode) to dissolve DocumentFragment into its children before insertion. Lai Quang Duong Update cssparser: support for unicode characters in keywords removed, this is not used in real world and the parser is much simpler without rbri Update core-js: Make NativeDate.toLocaleString() behave more like real browsers. Lai Quang Duong Update core-js: Major refactoring to separate top level scope and 'globalThis'. RhinoTeam Update core-js: Improve 'caller' handling depending on strict mode. rbri Update core-js: Clean up tracking of strict mode in general. RhinoTeam Add core-js: Support for resizable ArrayBuffers as specified in ES2024 added. RhinoTeam Fix core-js: Fixed automatic semicolon insertion for 'let' RhinoTeam Update core-js: Ensure that construction is wrapped in a top-level call when none is present, preventing assertion failures in interpreted mode RhinoTeam Fix FunctionWrapper implements SymbolScriptable - solves e.g. Function.prototype.toString instanceof Function of Object.prototype.toString.call(Function.prototype.toString). Lai Quang Duong Fix xpath: Add missing entry for ER_XPATH_ERROR in XPATHErrorResources. Ryuhei Ishizuka Fix Force content sniffing for '*/*' content type to be in sync with the browsers. Lai Quang Duong Add SubtleCrypto: digest() - SHA-1, SHA-256, SHA-384, SHA-512. Lai Quang Duong Add SubtleCrypto: generateKey() - RSASSA-PKCS1-v1_5, RSA-PSS, RSA-OAEP, ECDSA, ECDH, AES-CBC, AES-CTR, AES-GCM, AES-KW, HMAC Lai Quang Duong Add SubtleCrypto: importKey("raw") - HMAC, AES-CBC, AES-CTR, AES-GCM, AES-KW Lai Quang Duong Add SubtleCrypto: exportKey("raw") - HMAC, AES-CBC, AES-CTR, AES-GCM, AES-KW Lai Quang Duong Add SubtleCrypto: sign() - HMAC, RSASSA-PKCS1-v1_5, RSA-PSS, ECDSA Lai Quang Duong Add SubtleCrypto: verify() - HMAC, RSASSA-PKCS1-v1_5, RSA-PSS, ECDSA Lai Quang Duong Add SubtleCrypto: encrypt() - AES-CBC, AES-GCM, AES-CTR, RSA-OAEP Lai Quang Duong Add SubtleCrypto: decrypt() - AES-CBC, AES-GCM, AES-CTR, RSA-OAEP Lai Quang Duong Add Area: properties hash,host,hostname,href,origin,password,pathname,port,protocol,search, and username added. Lai Quang Duong Update Extract shared HTMLHyperlinkElementUtils for URL decomposition and use it from HTMLAnchorElement and HTMLAreaElement. Lai Quang Duong Fix HTMLAnchorElement: strip default port from host/port/origin. Lai Quang Duong Fix HtmlPage: fix a bug where async script may not be executed. Lai Quang Duong Update ProgressEvent: properties loaded and total are numeric. rbri Fix Intl: getCanonicalLocales() processes arguments as array-likes in sync with the spec. rbri Add FileReader: fire ProgressEvent and add missing event handlers Lai Quang Duong Fix HtmlInputElement's of type email/url/date/time have to fire the input event. Lai Quang Duong Fix Align cookie max-age handling for huge values with the spec. Lai Quang Duong Fix Intl: fix toStringSymbol for Intl, Collator, DateTimeFormat, Locale, and NumberFormat. rbri Add Intl: supportedLocalesOf() implementation added to DateTimeFormat and NumberFormat. Lai Quang Duong Fix window.queueMicrotask() added. Lai Quang Duong Add Intl: supportedLocalesOf() implementation added to DateTimeFormat and NumberFormat. Lai Quang Duong Add Intl: getCanonicalLocales() implementation added Lai Quang Duong Add Intl.Locale implementation added. Lai Quang Duong Fix Storage: fix storeSize calculation when overwriting existing key Kanoko Yamamoto Update In sync with the spec, a form now maintains a past names map at the form level, not on individual elements. The map is populated only when form.xyz resolves to a single element, and entries are invalidated when the element's form owner changes. Lai Quang Duong Update Upgrade commons-logging to 1.3.6. rbri Update core-js: Syntax error when multiple comments in braceless IF. RhinoTeam Update core-js: iCode debug printing refactored. RhinoTeam Update core-js: Convert XML objects from 'IdScriptableObject's to descriptors. RhinoTeam Fix select.remove() with no arguments now removes itself from the DOM. Fixes #1092. rbri Update core-js: Enforce 'WrapFactory' users to override new `wrap(...)` and `wrapAsJavaObject(...)` methods. RhinoTeam Update core-js: use 'ClassValue' for caching class-based TypeInfo. RhinoTeam Update core-js: a problem in dumpICode fixed and test coverage increased. RhinoTeam Update core-js: fix generator .return() to include value when in completed state. RhinoTeam Update core-js: Avoid compiling `a.eval()` as a direct eval call so all the prototypes are set up correctly. RhinoTeam Update Better separation of the scope and the global this object. rbri Update core-js: Support for rest parameters in destructuring. RhinoTeam Update core-js: Respect custom [Symbol.hasInstance] implementations; look up of hasInstance walks prototype chain. RhinoTeam Update core-js: NativeError and RegExp setup modernized. RhinoTeam Fix core-js: Fix for setting of prototype and parent scopes on some new objects. RhinoTeam Fix core-js: Fix scope used in iterator creation. RhinoTeam Update core-js: IdFunctionObject.isConstructor() to return useCallAsConstructor; now methods like Date.prototype.getDate, RegExp.prototype.exec, etc. no longer incorrectly reported as constructors. RhinoTeam Update Test suite updated to junit 6 and cleaned up. rbri Update Simplify logging configuration for our test by switching from log4j to logback-classic. rbri Add core-js: Add delete support to DOMStringMap. RhinoTeam Update core-js: Remove direct dependency to ScriptableObject from DOMStringMap and improve get/set impl. RhinoTeam Add core-js: migrate NativeDate away from IdScriptable. RhinoTeam Add core-js: internal code cleanup - drop support for version 1.0 - 1.4 RhinoTeam Add core-js: add a method to temporarily suspend microtask processing RhinoTeam Update core-js: Optimize regex backtracking for quantifiers before end-of-line anchor RhinoTeam Fix core-js: JSON.parse fixed to preserve negative zero RhinoTeam Fix core-js: use ThrowTypeError at all relevant places. rbri Fix core-js: debugger eval for scripts and eval scope for top-level scripts fixed. RhinoTeam Add core-js: DataView Float16 support added. RhinoTeam Update Improved HttpMethod validation in XMLHttpRequest open('trace', ...). rbri Fix XMLHttpRequest open('trace', ...) throws a security error. rbri Update The test suite now uses Jetty 12.1. RhinoTeam Update INCOMPATIBLE CHANGE: Cookie moved from package 'org.htmlunit.util' to 'org.htmlunit.http' rbri Add core-js: DataView BigInt64 and BigUInt64 support added RhinoTeam Update core-js: isConstructor check fixed and improved RhinoTeam Update core-js: major performance improvement for RegExp.prototype[Symbol.split] and RegExp.prototype[Symbol.replace] RhinoTeam Update core-js: improve the Number.toLocaleString() implementation; drop our own version rbri Update Use java.util.Objects.hash() instead org.apache.commons.lang3.builder.HashCodeBuilder. rbri Update Use java.util.Objects.hash() instead org.apache.commons.lang3.builder.HashCodeBuilder. rbri Update module-info.java added to all projects. rbri Update INCOMPATIBLE CHANGE: XmlUtilsXercesHelper and XmlUtilsSunXercesHelper removed (and the class XmlUtilsHelperAPI). rbri Update INCOMPATIBLE CHANGE: dependency to xercesImpl removed. rbri Update INCOMPATIBLE CHANGE: htmlunit-csp updated to Java 17. rbri Update INCOMPATIBLE CHANGE: htmlunit-cssparser updated to Java 17. rbri Update INCOMPATIBLE CHANGE: htmlunit-corejs updated to Java 17. rbri Update INCOMPATIBLE CHANGE: htmlunit-neko updated to Java 17. rbri Update INCOMPATIBLE CHANGE: htmlunit-xpath updated to Java 17. rbri

Release 4.21.0 – December 28, 2025

Type Changes By Update DOMPointReadOnly, DOMRectReadOnly, DOMMatrixReadOnly, and PerformanceNavigation toJSON() implementation improved. rbri Update DOMPointReadOnly and DOMPoint implementation improved. rbri Add DOMRectReadOnly and DOMRect implementation improved, now we implement the whole interface. rbri Add cssparser: support for dvw, dvh, dvmin, dvmax, lvw, lvh, lvmin, lvmax, svw, svh, svmin, svmax unit added rbri Update cssparser: simplified error processing rbri Fix cssparser: wrong escape sequence definition for letter 'o' fixed. rbri Update neko: minor improvements by replacing some equalsIgnoreCase() calls by simple equals(). rbri Update core-js: improved handling of unimplemented rest parameters in destructuring RhinoTeam Fix core-js: fix checking of proxy functions being constructors. RhinoTeam Update core-js: proxies refactored to be callable objects only if their initial target is callable RhinoTeam Update core-js: modernize and improve the approach used for 'caller' support rbri Update core-js: make 'caller' a function prototype property. Fixes #1064. rbri Update core-js: make 'arguments' a function prototype property rbri Update core-js: make NativeCall attributes final rbri Update core-js: adjust our rhino fork to use the improved 'arguments' handling rbri Update core-js: improved interpreter performance by avoiding the need for activation frames RhinoTeam Update core-js: an off-by-one error in the lexer when encountering EOF fixed RhinoTeam Update core-js: initialise 'CallSite' against top level scope RhinoTeam Update core-js: implement support for destructuring in 'catch' to support things like 'catch ({message})' or 'catch ([a, b])' RhinoTeam Update core-js: incorrect destructuring in for loops handled at parse time RhinoTeam Update neko: inserted tags are in lowercase (at least if the option for uppercase tag names is not set) rbri

Release 4.20.0 – December 07, 2025

Type Changes By Update core-js: Disambiguate local variable names to fix debugger issues. RhinoTeam Fix core-js: Fix variable resolution in switch statements with let declarations (regression from 4.18.0) RhinoTeam Update core-js: default parameter evaluation ordering for generators fixed. RhinoTeam Add core-js: Symbol.toStringTag implemented for generators. RhinoTeam Update core-js: Destructuring support improved. RhinoTeam Update core-js: 'ES6Iterator' migrated to lambda based ScriptableObject. RhinoTeam Update core-js: 'DestructuringIterator' migrated to lambda based ScriptableObject. RhinoTeam Update core-js: 'NativeConsole' migrated to lambda based ScriptableObject. RhinoTeam Update core-js: 'ES6Generator' migrated to lambda based ScriptableObject. RhinoTeam Update core-js: 'NativeIterator' migrated to lambda based ScriptableObject. RhinoTeam Add HTMLElement#getAttributeNames() implemented. rbri Add HTMLElement#moveBefore() implemented (also for Document and DocumentFragment). Fixes #1053. rbri Update neko: code cleanup and warning fixes. rbri

Release 4.19.0 – November 23, 2025

Type Changes By Update neko: code quality and minor performance improvements. rbri Update neko: refactor eof handling from exceptions to return codes. rbri Fix core-js: fix wrapper symbol handling in setPrototypeOf. rbri Update core-js: Rewrite Symbol.prototype.keyFor to avoid ConcurrentModificationException. RhinoTeam Update Use our own ArrayUtils at more places. rbri Update Upgrade Apache commons-lang3 to 3.20.0. rbri Add core-js: support for spread in arrays added RhinoTeam Update Upgrade Apache commons-io to 2.21.0. rbri Update HTMLFormControlsCollection getOwnPropertyDescriptor() has to support fields by name and id. rbri Update core-js: Refactor internal property descriptors to not be 'ScriptableObjects' RhinoTeam Fix core-js: some fixes for arguments support in strict mode rbri Update core-js: Replace number formatting operations on Number (toExponential, toFixed, and toPrecision) RhinoTeam Update core-js: fix/improve our enhanced arguments support rbri Update JavaScript timeout messages slightly improved. rbri Fix WebClient.setJavaScriptTimeout(timeout) stops most JavaScript immediately. This is a regression compared to version 4.18.0. Fixes #1057. rbri Update neko: improve spec conformance of comment end detection rbri Update neko: use a separate flag to mark formatting elements (in sync with the spec) rbri Update neko: reopening of dangling formatting elements refactored, make it lazy to be able to suppress the repopen in case of empty elements rbri Update No longer use org.apache.commons.lang3.math.NumberUtils. rbri

Release 4.18.0 – October 30, 2025

Type Changes By Update core-js: replace the NumberToString implementation with the Schubfach algorithm RhinoTeam Add Add basic support for parsing multipart/form-data fetch responses das7pad Fix XMLHttpRequest.getAllResponseHeaders() uses '\r\n' as delimiter in FF/FF_ESR also rbri Fix evaluation of the proxy autoconf javascript code fixed (regression) rbri Remove MutationEvent support removed for Firefox 144 rbri Update CSS2Properties now named CSSStyleProperties in Firefox 144 rbri Fix JavaScript configuration was broken if more than one JsxClass annotation defined for a single class rbri Update resync with the latest brotli code rbri Update core-js: improve/fix support for let statements inside switch statements. Fixes #1040. RhinoTeam Fix core-js: fix a bunch of issues with ThrowTypeError rbri Fix core-js: fix interpreter bytecode printing RhinoTeam Fix core-js: fixed exception in the interpreter when using many literal bigint RhinoTeam Fix core-js: fix function.length with default arguments and length calculation with rest params RhinoTeam Fix core-js: make 'Symbol()' comply with the spec. Specifically, it's handling of the second argument to the constructor. RhinoTeam Update core-js: support for yield* improved RhinoTeam Fix core-js: builtin methods should have no 'prototype' property RhinoTeam Update core-js: many, many internal refactorings to open the door for further improvements RhinoTeam Add DOMMatrixReadOnly toString() and toJSON() implemented. rbri Fix core-js: regular expressions with property escapes throwing a NPE (regression from 4.14.0). Fixes #1046. rbri Add DOMMatrixReadOnly isIdentity property implemented. rbri Fix core-js: improve global symbol registry handling. RhinoTeam

Release 4.17.0 – October 05, 2025

Type Changes By Fix core-js: duplicate function keys in object literal now allowed. RhinoTeam Add Empty implementation of MessagePort.start() and MessagePort.close() added. rbri Fix Detection of the window.postMessage() transfer parameter improved. rbri Remove Deprecated methods HTMLParser.parse(WebResponse, HtmlPage, boolean, boolean), HTMLParser.parseFragment(DomNode, DomNode, String, boolean), and HTMLParser.parseFragment(DomNode, String) removed. rbri Remove Deprecated method UrlUtils.decodeDataUrl(byte[]) removed. rbri Remove Deprecated method AbstractJavaScriptConfiguration.isCompatible(SupportedBrowser, SupportedBrowser) removed. rbri Remove Deprecated class org.htmlunit.html.DomNode.DescendantElementsIterator removed. rbri Update Use a new HTMLElementsWithCache object for each neko parser run to avoid race conditions under load. Rene Schwietzke Update neko: some optimizations for HTMLElementsProvider/HTMLElements/HTMLElementsWithCache. Rene Schwietzke Add neko: introduce HTMLElementsProvider and HTMLElementsWithCache. rbri Fix core-js: 'eval'of a function is now undefined. RhinoTeam Fix core-js: duplicate properties in object literal now allowed. RhinoTeam Fix Window.top has no setter. rbri Update Upgrade Apache commons-lang3 to 3.19.0. rbri Add Initial support for the :has() pseudo selector added. rbri Add Initial support for the :where() pseudo selector added. rbri Add Initial support for the :is() pseudo selector added. rbri Add XMLHttpRequest now supports data url's. rbri Fix Head request for a data url now returning an empty response. rbri Add HtmxTwoZeroSevenScriptPreProcessor added; this is required for htmx 2.0.3-2.0.7. rbri Add Tests for htmx 2.0.4-2.0.7 added. rbri Fix core-js: fix template literal string conversion for ECMAScript compliance RhinoTeam Fix core-js: fix Array.from to prioritize iterable over array-like objects RhinoTeam Add CSS.escape() javascript method added. rbri Fix Fix URL constructor to support also the data scheme. rbri Add DOMMatrix and DOMMatrixReadOnly stubs replaced by a real implementation (incomplete). Fixes #371. rbri Fix Properly synchronize access to httpClientBuilder_ in class HttpWebConnection. Fixes #1014. René Schwietzke Fix core-js: fix error stack generation in interpreted mode and report the correct line number RhinoTeam Fix core-js: don't propagate strict flag when compiling scripts and we already have an active context in strict mode RhinoTeam Fix core-js: a problem with toString() on arrow functions fixed RhinoTeam Add core-js: ES2025 Error.isError static method implemented RhinoTeam Add core-js: ES2025 Math.f16round method implemented RhinoTeam Fix HtmlLink.getWebResponse(...) now also works when the JavaScript engine is disabled. rbri Add BroadcastChannel stub replaced by a real implementation. Fixes #978. rbri Add UrlUtils.isSameOrigin(URL, URL) added and used by XMLHttpRequest rbri Fix SameOrigin check has to check the protocol also. rbri

Release 4.16.0 – August 29, 2025

Type Changes By Update core-js: infer function names at runtime for computed properties RhinoTeam Add core-js: Several fixes for calling bind() in the interpreter (regression from 4.14.0) rbri Add core-js: ES2025 ArrayBuffer transfer(), and transferToFixedLength() implemented RhinoTeam Update core-js: internal optimizations to make 'undefined' lookup faster RhinoTeam Add core-js: ES2025 Set methods intersection(), union(), difference(), symmetricDifference(), isSubsetOf(), isSupersetOf(), and isDisjointFrom() implemented RhinoTeam Fix core-js: make Object.assign copy over Symbol properties RhinoTeam Fix core-js: some methods should not have a prototype property RhinoTeam Add core-js: ES2025 Promise.try implemented RhinoTeam Add core-js: spread for object literals implemented RhinoTeam Update neko: do not check for bom headers on compressed streams rbri Update WebClient waitForBackgroundJavaScript(long), waitForBackgroundJavaScriptStartingBefore(long), and waitForBackgroundJavaScriptStartingBefore(long, long) no longer marked as experimental. rbri Update Use our own 'fork' of the current brotli source code. This makes some fixes available that are done in the code base but not release so far. Fixes #1009. rbri Update Use our own StringUtils at more places to be compatible with older commons lang versions. rbri Update Handling of CData sections in XHTML documents improved/fixed. rbri

Release 4.15.0 – August 17, 2025

Type Changes By Update WebAssert messages reviewed and improved. rbri Update WebAssert got various improvements and more complete unit tests. rbri Update Improve WebAssert javadoc. rbri Update Improve WebClientOptions javadoc. rbri Update neko: improved features/properties documentation rbri Fix neko: fix missing property/feature handling for HTMLScanner.setFeature() and HTMLScanner.setProperty(). rbri Fix core-js: Fix two more regressions from the Interpreter refactoring. Various combinations of apply/bind/call now working again. Fixes #1001. RhinoTeam Update websocket-client: jetty updated to 9.4.58.v20250814. rbri Fix core-js: Fix a regression regarding optional chaining operators. RhinoTeam Fix neko: Always call detectEncoding() to skip bom in case we got an input stream with bom and an encoding. rbri Update neko: increase PlaybackInputStream buffer size rbri Add neko: NekoSAXParser Factory added rbri Add WebClient option pageRefreshLimit added. Refresh handling changed to support a clear limit. The initial value is 72 to be backward compatible. rbri Add Dummy implementation of PointerEvent#getPersistentDeviceId() returning always 0. rbri Update The parser for the refresh header has been rewritten. Thanks to a series of additional tests, we are now much closer to real browsers. Fixes #1002. rbri Add core-js: TypedArray.from and TypedArray.of implemented. RhinoTeam

Release 4.14.0 – July 30, 2025

Type Changes By Add New sister project 'jsoup-bridge' (https://github.com/HtmlUnit/htmlunit?tab=readme-ov-file#jsoup-bridge). rbri Update Switched to sonatype central-publishing for snapshots and release builds. rbri Add New method WebClinet.waitForBackgroundJavaScriptStartingBefore(final long delayMillis, final long timeoutMillis) that combines a overall timeout with waiting for js tasks starting before. rbri Fix Avoid ConcurrentModificationException in HtmlPage.deregisterFramesIfNeeded() rbri Add Separate developer documentation to help people start working on this project rbri Fix MutationEvent is still available in FF but not as global rbri Fix Some fixes for the ctor prototype setup rbri Update code cleanup based on PMD - use isEmpty() in more places rbri Add core-js: Infer function name when declared in a var/let statement implemented RhinoTeam Add core-js: Promise.withResolvers() added RhinoTeam Update core-js: assigning values to super got some improvements rbri Fix core-js: BigInt.asUintN and BigInt.asIntN implementation fixed RhinoTeam Update core-js: code simplification for support of different JDKs RhinoTeam Update core-js: huge refactoring of the interpreter for more speed and easier maintenance RhinoTeam Remove core-js: '__parent__' property is no longer available rbri Update core-js: refactored exception and stack handling RhinoTeam Update core-js: The Builtins and the Regexp initializer migrated from reflection to lambda RhinoTeam Update core-js: major '__proto__' support update bringing the '__proto__' support in line with the spec and with real browsers. This also includes support for the strange function 'shorthand' case for __proto_. rbri Update core-js: refactored CallFrame to keep stack as immutable linked list. RhinoTeam Fix core-js: fix how 'this' is handled when calling `Array.from` in some edge cases, when `null` or 'undefined' were passed as the `this` argument RhinoTeam Add SBOM (CycloneDX format) added. rbri Update core-js: minor code optimization. rbri Update core-js: typo in prototype detection fixed. rbri Update core-js: Code cleanup. RhinoTeam Fix neko: fix ParentNode#getTextContent() rbri Add neko: introduce Element.SCRIPT_SUPPORTING flag for HTMLElements rbri Update Upgrade Apache commons-io to 2.20.0. rbri Update Upgrade Apache commons-lang3 to 3.18.0. rbri Add core-js: UnicodeMode support for regexp added. RhinoTeam Add core-js: ArrayBuffer detach() support added. RhinoTeam Update Major improvements for the asXML() function. Fixes #982. rbri Update Test suite updated to junit 5 and cleaned up. rbri Add The hidden attribute now supports the 'until-found' value. rbri Update INCOMPATIBLE CHANGE: To add support for the 'until-found' hidden attribute value, the parameter handling of method HtmlElement.setHidden(String) was changed. Please have a look at the javadoc for details about the current implementation. rbri Add jQuery 1.12.4 test suite added. rbri Update jQuery 1.8.2, 1.11.3, and 3.3.1 test suite refreshed. rbri Remove FF139: SVGDiscardElement is gone (again). rbri Fix getClientRects() returns an empty list for hidden inputs. This fixes also a problem with the :hidden jQuery selector. rbri

Release 4.13.0 – June 03, 2025

Type Changes By Fix The prototype for DOMRect is now DOMRectReadOnly. rbri Update Internal javascript class ClientRect renamed to DOMRect (the old name was a leftover from IE). rbri Update Internal javascript class ClientRectList renamed to DOMRectList (the old name was a leftover from IE). rbri Update core-js: Adjust order of evaluation of function arguments to match the spec. RhinoTeam Update core-js: Major tidy up of 'NativeTypedArrayView' to better match spec. RhinoTeam Update core-js: Refactor functions to be lambdas rather than IdScriptableObject's. RhinoTeam Fix The prototype for HTMLAllCollectionis no longer the HTMLCollection, it is now object. rbri Update HTMLTableCellElement now supports the 'align', 'ch', 'chOff', 'headers', 'height', 'noWrap', 'rowSpan', 'scope', 'vAlign', 'width' properties. rbri Update HTMLTableColElement now supports the 'align', 'ch', 'chOff', and 'vAlign' properties. rbri Fix Internal javascript class HTMLTableComponent removed. The prototype for HTMLTableCellElement, HTMLTableColElement, and HTMLTableRowElement is now the correct HTMLElement. rbri Update HTMLTableSectionElement now supports the deleteRow() and insertRow() functions. rbri Update HTMLTableSectionElement now supports the 'align' and 'rows' properties. rbri Update HTMLTableElement now supports the deleteRow() and insertRow() functions. rbri Update HTMLTableElement now supports the 'align' and 'rows' properties. rbri Fix Internal javascript class RowContainer removed. The prototype for HTMLTableElement, and HTMLTableSectionElement is now the correct HTMLElement. rbri Update HTMLUListElement now supports the 'compact' property. rbri Update HTMLOListElement now supports the 'compact' property. rbri Update HTMLMenuElement now supports the 'compact' property. rbri Update HTMLLIElement now supports the 'type' property. rbri Update HTMLDListElement now supports the 'compact' property. rbri Update HTMLDListElement now supports the 'compact' property. rbri Fix Internal javascript class HTMLListElement removed. The prototype for HTMLDListElement, HTMLDirectoryElement, HTMLLIElement, HTMLMenuElement, HTMLOListElement, and HTMLUListElement is now the correct HTMLElement. rbri Fix Internal javascript class HTMLListElement removed. The prototype for HTMLDListElement, HTMLDirectoryElement, HTMLLIElement, HTMLMenuElement, HTMLOListElement, andHTMLUListElement is now the correct HTMLElement. rbri Update Javascript class configuration reworked, this allows some optimizations in the furture. rbri Fix Constructor prototype fixes, now we have the correct prototypes for most classes. The RecursiveFunctionObject workaround is no longer required. rbri Fix DomNodeIterator is now serializable. rbri Update FF138: adjust datetimeformat for several locales. rbri Update Chrome/Edge 136: Clicking an image input no longer submits the value as param. rbri Add FF138: Frame elements are accessible by name. rbri Add FF138: Error.captureStackTrace() is supported. rbri Add FF138: js constant maxActions added to Notification. rbri Update FF138: stylesheet links checking the content type for 'text/css'. rbri

Release 4.12.0 – May 17, 2025

Type Changes By Add WebClient option NekoReaderBufferSize added. You can use this to increase the buffer size used by the Neko Html parser to optimize parsing performance. rbri Update HTMLParser parseFragment(DomNode, String), parse(WebResponse, HtmlPage, boolean, boolean), and parseFragment(DomNode, DomNode, String, boolean) are deprecated. rbri Update neko: HTMLScanner always requires a document handler; the null check is moved to the setter and all the others are removed. rbri Fix neko: avoid HTML1011 error for self closing tags. rbri Fix neko: ignore whitespace before the closing > when parsing special tags. rbri Update neko: remove two superfluous conversions from the code. rbri Update core-js: NativeArray impl is now lambda based. RhinoTeam Update core-js: improved date string parser; support optional ms digits, skip ms digits, extended year support is not available in es6 rbri Update core-js: detailed message added to IndexOutOfBoundsExceptions RhinoTeam Update core-js: add double null check pattern when initializing cache values. RhinoTeam Fix 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). rbri Fix 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). rbri Update AlertHandler, ConfirmHandler, FrameContentHandler, CharacterDataChangeListener, and IncorrectnessListener marked as @FunctionalInterface. rbri Update Upgrade Apache commons-io to 2.19.0. rbri Update Element.scrollIntoView() now triggers scroll events on all parents. rbri Update For FF scroll events are of type UIEvent. rbri Fix Scroll events are not bubbling and not cancelable. rbri Fix core-js: Function.prototype[Symbol.hasInstance] fixed. RhinoTeam Fix core-js: regression in hex and unicode hex parsing or regexp fixed RhinoTeam Update CSS blockSize support improved. rbri Fix 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. RhinoTeam Fix core-js: Fix a character class parsing regression for regexp. RhinoTeam Fix core-js: Fix handling of \x and \u in regexp. RhinoTeam Add FF137: SVGDiscardElement added. rbri Update Chrome/Edge 135, FF137: Setter validation for length style properties adjusted. rbri Add Chrome/Edge 135: Style properties 'interactivity', 'overflowBlock', 'overflowInline', and 'scrollMarkerGroup' added. rbri Update FF137: Adjust clientHeight for some ruby related tags. rbri Update Chrome/Edge 135, FF137: Improved namespace handling when sending an html document via XMLHttpRequest. rbri Update Chrome/Edge 135: Improved <br> handling in options tags. rbri Update Chrome/Edge 135, FF137: Fixed font sizes for smaller/larger CSS property value. rbri Update FF137: Set span for table cells to zero if provided value is invalid. rbri Fix core-js: Some fixes for strict handling. RhinoTeam Update core-js: Several code improvements for the RegExp implementation. RhinoTeam Add WebClient.setWebSocketAdapter(WebSocketAdapterFactory) added. This should help to use a different WebSocket implementation. Fixes #946. rbri Add WebSocketAdapter splitted into WebSocketAdapter and WebSocketListener. New interface WebSocketAdapterFactory introduced. This should help to make it simpler to use a different WebSocket implementation. Fixes #946. rbri Add core-js: Named capture groups in RegularExpressions now supported. RhinoTeam Remove Deprecated method CssStyleSheet.validateSelectors(SelectorList, int, DomNode) removed. rbri Remove Deprecated method HtmlForm.getElements() removed. rbri Remove Deprecated method WebRequest.setRefererlHeader(URL) removed. rbri

Release 4.11.1 – March 26, 2025

Type Changes By Fix NumberFormatException when calculating the clientHeight/offsetHeight. rbri

Release 4.11.0 – March 25, 2025

Type Changes By Fix Event 'onload' is triggered by FF ESR also if the frame content was not shown because of csp. rbri Add Initial support for font sizes 'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large', 'xxx-large', 'smaller', and 'larger'. rbri Fix core-js: Refactor NativeString based on lambdas and stop using IdScriptableObject. rbri Fix The style cache has to handle all parents of added or deleted nodes. Fixes #942. rbri Remove Class HiddenFunctionObject removed, this was a leftover from the IE age. rbri Fix core-js: Arguments.callee is always the same function in strict mode. rbri Fix core-js: Arguments.caller is not available in real browsers. rbri Fix core-js: An issue where capture groups in quantified expressions (min = 2) were not cleared between iterations fixed. For example, in /(?:(\2)(\d)){2}/, during the second iteration, \2 incorrectly retained the first iteration's value instead of being reset. RhinoTeam Remove Switched back from our RegExp translation into Java regular expressions to use the core Rhino stuff. Rhino made significant progress in this area. This simplifies our implementation and supports more features in the future. rbri Add core-js: RegExp lookbehind implemented. RhinoTeam Update core-js: NativeObject converted from IdScriptableObject to lambda constructor RhinoTeam Fix core-js: problem with 'super' and nested lambdas RhinoTeam Fix core-js: RegExp.prototype[Symbol.match] and String.prototype.match. RhinoTeam Add core-js: Implement Symbol.match. RhinoTeam Fix core-js: String.prototype.match. As per the spec, it is simply supposed to invoke the Symbol.match of the regexp. RhinoTeam Fix core-js: Fix the behavior of Regexp sticky flag. RhinoTeam Remove Deprecated methods removed from EncodingSniffer, HttpClientConverter, WebResponse, and WebResponseWrapper. rbri Add cssparser: improved support for var initial values. rbri Update Apache commons-codec is no longer a runtime dependency. rbri Fix atob() has to remove all whitespace from the provided string. rbri Fix atob() must always fail on invalid input. Fixes #940. Thanks to Christoph Burgmer. rbri Fix The script async attribute is ignored if the src attribute is absent. rbri Update Many more checkstyle jdoc rules enabled and all violations fixed. rbri Fix HtmlImage onerror event is triggered for 204 responses. rbri Update Some minor code improvements found by spotbugs. rbri Fix Some more event initialization fixes. rbri Fix Fix various event initialization when working with WebSocket's. rbri

Release 4.10.0 – February 22, 2025

Type Changes By Update core-js: NativeGlobal now based on lambda functions. RhinoTeam Update Avoid using XPath for implementing form submit on enter key pressed. rbri Update Implement Document.getElementById() without using XPath. rbri Fix NPE in org.htmlunit.javascript.JavaScriptEngine.asJavaScriptException(). rbri Update Upgrade commons-logging to 1.3.5. rbri Update StyleElement implements no longer the Comparable interface. For our special needs we now using the static method compareToByImportanceAndSpecificity(StyleElement, StyleElement). RhinoTeam Update core-js: load more classes lazily. RhinoTeam Update HtmlUrlInput value trimming fixed. rbri Update Replace the deprecated WebElement.getAttribute(String) with getDomAttribute(String) and getDomProperty(String) at many places in the test suite. rbri Update Use StandardCharsets.UTF_8 instead of Charsets.UTF_8 for the sample code. rbri Fix HtmlTextArea - several fixes to throw the correct error. rbri Fix AudioContext/OfflineAudioContext - several fixes to throw the correct error. rbri Fix 'Illegal constructor' is a type error. rbri Update Firefox ESR accept header no longer contains 'image/avif,image/webp,image/png,image/svg+xml'. rbri Update core-js: BigInt, Boolean and Number converted to use lambdas. RhinoTeam Update core-js: Function hoisting inside blocks is now a core Rhino feature, our own hack is gone. RhinoTeam Update core-js: Map and Set converted to use lambdas. RhinoTeam Fix core-js: lambda-based classes serializable are serializable. RhinoTeam Update core-js: bunch of changes to make the SlotMap handling faster. RhinoTeam Fix CSSStyleSheet - several fixes to throw the correct error. rbri Fix XPath.evaluate() throws a TypeError. rbri Fix Document - several fixes to throw the correct error. rbri Fix XMLHttpRequest - several fixes to throw the correct error. rbri Fix Geolocation.ctor() throws a TypeError. rbri Fix TreeWalker.ctor() throws a TypeError. rbri Fix MutationObserver.observe() throws a TypeError. rbri Fix DOMParser.parseFromString() throws a TypeError. rbri Fix Window.postMessage() throws a SyntaxError. rbri Fix Window.atob()/btoa() throws an InvalidCharacterError. rbri Fix DomNode.appendChild() throws a HierarchyRequestError. rbri Fix AbstractRange.ctor() throws a TypeError. rbri Fix DOMTokenList - several fixes to throw the correct error. rbri Fix CSSGroupingRule - several fixes to throw the correct error. rbri Fix HTMLInputElement value/selectionStart/selectionEnd properties throws the correct error (InvalidStateError). rbri Fix SVGMatrix.rotateFromVector()/inverse() throws the correct error (InvalidAccessError/InvalidStateError). rbri Fix Crypto.getRandomValues() throws a QuotaExceededError. rbri Fix CanvasRenderingContext2D.measureText() throws a TypeError. rbri Fix HTMLTableElement/HTMLTableRowElement - several fixes to throw the correct error. rbri Fix Element.querySelectorAll()/querySelector() throws a SyntaxError. rbri Fix HTMLOptionsCollection.add() throws a NotFoundError. rbri Fix Accessing a HTMLDocument without a js peer throws a TypeError. rbri Fix Document.createElementNS() throws a TypeError. rbri Fix Document.createElementNS() throws a TypeError. rbri Fix Selection.getRangeAt() throws an IndexSizeError. rbri Fix Node.replaceChild()/removeChild()/insertBefore() several fixes to throw the correct error. rbri Fix HTMLDocument.appendChild() throws HierarchyRequestError. rbri Fix Document.createElement() throws InvalidCharacterError. rbri Fix ImageData.ctor() various fixes to throw the correct error in different situations. rbri Fix CharacterData.deleteData() throws an IndexSizeError. rbri Fix Document.querySelectorAll() throws a SyntaxError if the selector is invalid. rbri Fix Document.createEvent() creates the correct exception when the event type is not supported. rbri Fix DOMException name property was missing. rbri Fix Handling of the error code when construction DOMException is fixed. rbri Fix Document.evaluate() now throws a SyntaxError instead of an InternalError. rbri Update Upgrade commons-codec to 1.18.0. rbri Fix WebClientOptions sslClientCertificateStore is transient. rbri

Release 4.9.0 – January 22, 2025

Type Changes By Fix WebClientOptions SSLTrustStore is transient. rbri Fix WebClientOptions.Geolocation is serializable now rbri Fix HtmlDomTreeWalker is serializable now rbri Fix core-js: junit-vintage-engine was NOT marked as 'test' dependency, therefore we had junit as part of our dependencies/lib/distribution (regression from 4.8.0) rbri Add BigInt support added. rbri Fix core-js: Symbol.hasInstance for Function.prototype implemented. RhinoTeam Add core-js: Context#emptyArgs is deprecated. rbri

Release 4.8.0 – January 12, 2025

Type Changes By Add cssparser: support plain color definitions with var/calc. rbri Fix cssparser: 'and' is a valid class name. rbri Add cssparser: support relative color definitions. rbri Update websocket-client: jetty updated to 9.4.57.v20241219. rbri Fix core-js: add an empty slot map (singleton) for cases where no slots exist; this should reduce the memory needed a bit RhinoTeam Fix core-js: methods cannot be used as constructor fixed RhinoTeam Update Upgrade commons-codec to 1.17.2. rbri Update Apache commons-net is no longer a runtime dependency. rbri Update Apache commons-text is no longer a runtime dependency. rbri Update core-js: Extract function calling out of the interpreter loop for performance. RhinoTeam Fix Avoid ConcurrentModificationExceptions in frame processing. rbri Fix core-js: handle stack frames in the correct order. RhinoTeam Add cssparser: support hwb(), lab(), lch(), oklab(), and oklch() color definitions. rbri Add cssparser: add support for 'none' in modern color definitions. rbri Fix core-js: fix border checks for typedarray set-method (see https://github.com/HtmlUnit/htmlunit-core-js/issues/27) rbri Add core-js: Allow symbol keys in getter/setter in object literal syntax like 'var o = { get [aSymbol]: value }'. RhinoTeam Add core-js: Support for generator methods in object literals like 'o = {*g() {...}}' added. RhinoTeam Add core-js: Implement the super operator - which can actually be used outside of classes and will do something that intuitively is "refer to the prototype". RhinoTeam Fix core-js: Fix tokenEnd and cursor for string, template, xml literals and multiline comments when using multibyte characters. RhinoTeam Update FAQ updated with some info about page history. rbri Fix DomElement#getStaticElementsByTagName() has to check for prefix. Fixes #905. rbri Update Upgrade Apache commons-text to 1.13.0. rbri Add core-js: Some improvements for the interpreter by generating smaller interpreter bytecode. RhinoTeam

Release 4.7.0 – November 29, 2024

Type Changes By Add core-js: String.prototype.matchAll, Symbol.matchAll, and RegExp.prototype[Symbol.matchAll] added. RhinoTeam Fix neko: BOM header detection fixed rbri Update neko: bunch of micro optimizations rbri Add Property navigator pdfViewerEnabled added. rbri Update Implementation of Plugin/PluginArray/MimeType/MimeTypeArray rewritten. The navigator properties plugins and mimeTypes returning static results in all browsers. rbri Remove Class PluginConfiguration removed, the config is static for all browsers. rbri Update A bit more code cleanup - flash is finally gone. rbri Update Upgrade Apache commons-io to 2.18.0. rbri Add DOMTokenList add()/remove() are able to handle an arbitrary amount of tokens. rbri Remove Element.getInnerHTML() is gone in Chrome/Edge. rbri Add WebRequest custom serialization misses the handling of defaultResponseContentCharset. Fixes #898. rbri Add Class SilentIncorrectnessListener added. Marek Andreansky Fix Javadoc fixed for Document.elementFromPoint(). rbri Fix Bunch of fixes for Document.createElement() when calling with invalid tag names. rbri Fix StyleSheetList.item() should return null if the provided index is not available. rbri Fix HTMLOptionsCollection.item() should return null if the provided index is not available. rbri Fix CssRuleList.item() should return null if the provided index is not available. rbri Add FrameContentHandler sample added. Fixes #665. rbri Fix document.all == undefined and document.all == null now returns true. Fixes #896. rbri Fix core-js: make sure, equivalentValues() is used if available. rbri

Release 4.6.0 – November 06, 2024

Type Changes By Update INCOMPATIBLE CHANGE: HtmlPage.getBody() no longer returns an HtmlFrameSet. rbri Fix disable early cdata closing for xhtml pages rbri Add neko: feature 'http://cyberneko.org/html/features/scanner/cdata-early-closing' to disable early closing of cdata sections added rbri Update neko: interface HTMLEventInfo merged into Augmentations rbri Add neko: feature 'http://cyberneko.org/html/features/scanner/allow-selfclosing-script' to allow parsing of self closing script tags added rbri Fix neko: wrong default for NamespaceBinder 'http://cyberneko.org/html/properties/names/elems' property rbri Update neko: code improvements for string handling rbri Update Bunch of minor changes to reduce object creation and improve performance during DOM creation. rbri Fix The DOMTree might include cycles in some border cases; fixed. rbri Fix No longer use getElementsByTagName() in cases we do not need the live update capabilities of the result. This reduces the internal workload and should make some cases faster. rbri Fix DomElement.click() now returns the correct page if the page contains a JS-based form auto submit. This was a regression from version 4.4.0. Fixes #837. rbri Add Nullish assignment operator '??=' implemented. RhinoTeam Add Like real browsers work a bit more optimized as long as no CharacterDataChangeListener/DomChangeListener is registered. In this case we can avoid some dom tree traversal. rbri Add core-js: Support optional chaining for function calls, as well as the "eval" case like 'f?.()'. RhinoTeam Add Simple implementation of Node.lookupPrefix(String) added. rbri Fix core-js: many fixes for default values in destructuring assignments RhinoTeam Fix core-js: many fixes for optional chain and nullish coalesce RhinoTeam Fix NPE in AttachmentHandler.isAttachment(WebResponse) fixed. rbri

Release 4.5.0 – October 20, 2024

Type Changes By Update INCOMPATIBLE CHANGE: Return type of AbstractCssStyleDeclaration.item(int) has changed from Object to String. rbri Update INCOMPATIBLE CHANGE: Classes HtmlBlink, HtmlCommand, HtmlIsIndex, HtmlMenuItem, HtmlMultiColumn, and HtmlNextId removed. rbri Fix Next round to remove the 'keygen' tag support. rbri Fix Bunch of fixes for the various ruby supprt tags. rbri Update Cleanup of the ElementFactory/DefaultElementFactory to simplify the code and improve the performance. rbri Update Small performance and memory optimization for the creation of our DOM tree. rbri Fix AbstractDomNodeList access might throw a NPE due to a race condition in the DomHtmlAttributeChangeListenerImpl clearing of cachedElements processing. Fixes #882. rbri Update Special handling of the bgsound tag in FF removed. BGSound is now handled as unknown tag in all browsers. Looks like this was a leftover from the IE days. rbri Fix Function initHashChangeEvent() is no longer available in FF_ESR. rbri Update Location.query property always returns an empty string if the location has the about protocol and the browser is FF/FF_ESR. rbri Update Property window.clientInformation is settable in FF too. rbri Update The WebSocket ctor in FF_ESR now accepts also undefined/null. rbri Update FF_ESR right clicking for the context menu triggers a mouse event with a detail of 1 instead of 2. rbri Add HtmlDetailElement 'name' property added for FF. rbri Update JS class DomRequest removed (was only used by FF_ESR). rbri Add PointerEvent properties altitudeAngle and azimuthAngle supported in FF. rbri Fix Javascript return type of some methods changed from Object to String. rbri Fix Javascript Cssstyledeclaration#item() now returns a String. rbri Update core-js: code cleanup; remove the unused javascript/optimizer package. RhinoTeam Update core-js: bunch of code optimizations. RhinoTeam Fix core-js: remove '__exception__' property from global context. RhinoTeam Update core-js: improve ScriptRuntime.toPrimitive() and use it at many places. RhinoTeam Update core-js: optimize initializion of error objects. RhinoTeam Add core-js: Support the standard "toStringTag" symbol when converting objects to strings. RhinoTeam Add core-js: optional chaining operator '?.' support added. RhinoTeam Add core-js: Some byte code generation fixes for Android. RhinoTeam Add core-js: Symbol.prototype.description support added. RhinoTeam Fix core-js: some minor fixes for the Reflect/Proxy support. rbri Add New (transient) configuration option SSLContext added. rbri Remove Class org.htmlunit.javascript.preprocessor.HtmxOneNineTenScriptPreProcessor removed. This class is no longer required because default parameter support was added to core-js. rbri Add core-js: Support for default parameters added. RhinoTeam Add core-js: String.isWellFormed() and String.toWellFormed() added. RhinoTeam Add core-js: Support surrogate chars in JSON.stringify(). RhinoTeam Update Upgrade Apache commons-io to 2.17.0. rbri Add core-js: Support for Promise.any added. RhinoTeam Add core-js: Support for nullish coalescing operator '??' added. RhinoTeam Add core-js: Support for logical assigment operators '||=' and '&&=' added. RhinoTeam Fix core-js: Stacktrace line number fixed. RhinoTeam Update websocket-client: jetty updated to 9.4.56.v20240826. rbri Update Upgrade Apache commons-lang3 to 3.17.0. rbri Add core-js: Map groupBy added. RhinoTeam Add TextDecoder.decode() decodes now only the TypedArray view's range. Lai Quang Duong Add CaretPosition is now available in all supported browsers. rbri Add core-js: 'cause' property added to NativeError and some toString() improvements. RhinoTeam Add core-js: New methods toReversed, toSorted, toSpliced, and with added to Array and TypedArray. RhinoTeam Fix core-js: Make sure to use only the RegExpProxy interface instead of some hardcoded instanceof call. This opens the door to integrate a much more standard complient regexp suppor. rbri Update core-js: When doing math, try to do integer arithmetic when the arguments passed are Integer objects, rather than always falling back to floating-point math. This speeds up some benchmarks that rely heavily on integer arithmetic. RhinoTeam Update Upgrade commons-logging to 1.3.4 rbri Update Click action now uses the PointerEvent instead of the MouseEvent in Firefox. rbri Update TextEvent is available Firefox also. rbri Fix core-js: Ensure that generator functions always pass parameters properly. RhinoTeam Fix Some missing index verification added in FileList. rbri Add Initial incomplete implementation of file handling for DataTransfer. rbri Add Complete implementation of DataTransferItem, and DataTransferItemList. rbri Add Package org.htmlunit.javascript.host.draganddrop added. DataTransfer, DataTransferItem, and DataTransferItemList moved into this package. rbri Add FileList is now iterable. rbri Update core-js: Obsolete classes ObjToIntMap and UintMap removed; depending on context, classes replaced with either HashMap or sometimes HashSet. RhinoTeam Add core-js: Support for Array/TypedArray findLast() and findLastIndex() added. RhinoTeam Fix Fix FileReader handling of in memory File's. rbri Fix Fix FormData.append()/set() handling of in memory File's. rbri Fix Fix FormData.append()/set() handling of Blob's. rbri Fix MutationObserver now fires also when attributes added/removed. rbri Update core-js: Obsolete class ObjArray removed; depending on context, class replaced with either ArrayList or ArrayDeque. RhinoTeam Add core-js: Symbol.unscopables for arrays implemented. RhinoTeam Fix DOMTokenList toggle() method got some fixes. rbri Add DOMTokenList value property added. rbri Update DOMTokenList simplify impl and fix removal of duplicate entries. rbri Add DOMTokenList is now iterable, keys(), entries(), and replace() method implemented. rbri Add Implementation of DOMTokenList.forEach() added. Fixes #848. Markus Winter Remove Deprecated method CssStyleSheet.parseMedia(CSSErrorHandler, String) removed. Deprecated method CSSStyleSheet.validateSelectors(SelectorList, int, DomNode) removed. Deprecated method HtmlFileInput.setValueAttribute(String) removed. Deprecated ctor HtmlUnitUsernamePasswordCredentials.HtmlUnitUsernamePasswordCredentials(String, String) removed. rbri Remove Deprecated methods compile(HtmlPage, String, String, int), execute(HtmlPage, SCRIPT), and execute(HtmlPage, String, String, int) removed from AbstractJavaScriptEngine. rbri Remove Deprecated methods setSSLClientCertificate(URL, String, String), and setSSLClientCertificate(InputStream, String, String) removed from WebClientOptions. rbri Remove Deprecated methods addCredentials(String, String), .addCredentials(String, String, String, int, String), addNTLMCredentials(String, String, String, int, String, String), and addSocksCredentials(String, String, String, int) removed from DefaultCredentialsProvider. rbri Update Method CSSStyleSheet.validateSelectors(SelectorList, int, DomNode) is deprecated; please use method CSSStyleSheet.validateSelectors(SelectorList, DomNode) instead. rbri Fix core-js: Error with yield in ComputedPropertyName fixed. RhinoTeam Add core-js: Support ctor for regex that takes an existing regex and a different set of flags. RhinoTeam Fix FF implements a special handling for the return value of the compareFn function used to custom sort arrays. If the result is a boolean the value false will not be converted to 0 - it will be converted to -1. Fixes #844. rbri Update Upgrade Apache commons-lang3 to 3.16.0. rbri Fix One no loger required thread local variable removed. rbri Update Method WebRequest.setRefererlHeader(URL) is deprecated; please use Method WebRequest.setRefererHeader(URL) instead. rbri Fix core-js: exception when calling apply with emptyArgs. rbri Fix Window.performance is setable. rbri Add AbortController and AbortSignal stubs implemented. rbri Fix Worker ctor no longer failes when called with undefined as options. rbri Add HTMLFormControlsCollection is now iterable. rbri Add RadioNodeList is now iterable. rbri Add HTMLFormControlsCollection namedItem() implemented. Lai Quang Duong Add RadioNodeList getter and setter for value attribute implemented. Lai Quang Duong Update WebRequest.getParameters() updated again to be more compatible with Spring. Fixes #851. rbri Update WebRequest.getParameters() updated to deliver the same results as the servlet API will report if this request reaches a servlet. This implies several changes: For url-encoded and plain text encoded post requests, the query parameters are part of the result. For multipart requests only the query parameters forming the result. Please check also the javadoc of the method for more details. Fixes #836. rbri Add WorkerNavigator and WorkerLocation implemented. Fixes #816. rbri Add WebWorker context setup fixed, all API's now available. Fixes #816. rbri

Release 4.4.0 – July 28, 2024

Type Changes By Add core-js: Various missing methods in TypedArray added. RhinoTeam Fix XMLHttprequest 'responseXML' and 'response' (responseType document) results are identical. rbri Fix XMLHttprequest 'responseXML' bom headers are overruling the content encoding. rbri Fix XMLHttprequest 'responseXML' reads the plain response without converting to a string internally. rbri Fix XMLHttprequest 'responseXML' some fixes for handling of empty content. rbri Fix XMLHttprequest 'responseXML' - if the responseType is set to 'document' and the request was made asynchronously then support 'text/html' content type. rbri Fix XMLHttprequest 'response'' property now handles the XMLDocument generation the same way as the property 'responseXML'. rbri Fix The response encoding determination for XMLHttprequest fixed. If the content type header does not contain a content type (but a charset) then the charset info is ignored. rbri Fix DomNode.compareDocumentPosition now returns correct results if both nodes do not share the same root (eg. different document fragments). rbri Update Small sample for changing the browsers user agent addet to the docs. rbri Update Upgrade Apache commons-lang3 to 3.15.0. rbri Fix core-js: Array.prototype.sort is now stable. RhinoTeam Fix core-js: Function.prototype.toString/toSource now uses the source. This superceeds a fix we made in version 3.0.0. RhinoTeam Update Logging of a notifications about calling js functionality while the WebClient and the JS Engine are already going down is removed. Fixes #818. rbri Fix core-js: Improved position reporting in case of syntax errors. RhinoTeam Add core-js: Improved support for continuations. RhinoTeam Add core-js: Computed properties support added. RhinoTeam Update Upgrade commons-codec to 1.17.1. rbri Fix Fix wrong impl of polyfill cache. Thanks to xuxiaocheng0201. rbri Fix When an element is clicked, the postponed actions are executed too early - only the processing of the downloaded pages may take place at this time. rbri Fix A FormData object constructed from a form only enumerates not disabled elements by taking care of elements inside disabled fieldsets. rbri Fix DisabledElement.isDisabled() now checks also for the parent elements. This fixes problems with elements inside a disabled fieldset. rbri Add Function Element.getHTML() added for FF. rbri Update Changed accept header for images and documents to be in sync with FF 128. rbri Add DedicatedWorkerGlobalScope 'name' property added. Fixes #787. rbri Fix DedicatedWorkerGlobalScope 'constructor' property was missing. rbri Add Option 'fileProtocolForXMLHttpRequestsAllowed' to allow XMLHttpRequest for local files from the same directory and subdirectories. Fixes #808. rbri Fix FieldSets and Outputs are also accessible by there old names. rbri Update Upgrade commons-logging to 1.3.3 rbri Update websocket-client: jetty updated to 9.4.55.v20240627. rbri Update Method HtmlForm.getElements() is now deprecated; please use HtmlForm.getElements(Predicate<HtmlElement>) or HtmlForm.getFromElements() instead. Please read the jdoc of the new methods, they return slightly different results. rbri Fix FieldSets are part of the Form.elements collection. rbri Fix Inputs of type image are not part of the Form.elements collection. rbri Add Window length/self/parent/frames are defined as [Replaceable]. HtmlUnit now mimics the browsers regarding this. Fixes #787. rbri Fix ComputedCSSStyleDeclaration.display takes care of the hidden attribute. rbri Fix Move the 'cookie' property from HTMLDocument to Document. Fixes #805. rbri

Release 4.3.0 – June 27, 2024

Type Changes By Add Improved implementation of the hidden attribute setter. rbri Fix core-js: another hack on the const handling (in most cases const no treated like let - this is not correct but avoids the 'constant redefinition' parser error). rbri Add Sarissa 0.9.9.7 tests added. rbri Fix DateTimeFormat.format now takes care of the current browser timezone and locale. rbri Fix Fix some NPE in HtmlSerializer's. rbri Fix Improved innerHTML content parsing for special tags like title, textarea, style, and script. rbri Add DocumentFragment append()/prepend()/replaceChildren() added. rbri Fix URL.origin should include the port (if it is not the default one). rbri Fix Calling new DocumentFragment() now creates a properly initialized object. rbri Add XPathEvaluator.createExpression() and XPathExpression.evaluate() added. rbri Fix Various exceptions fixed when XPathEvaluator.evaluate() is called without some optional parameters. rbri Fix Documentation for changing the browser timezone/language added. Fixes #788. rbri Fix File.lastModifiedDate formatting fixed. rbri Fix Document.lastModified now takes care of the browser timezone. rbri Add Intl.DateTimeFormat().resolvedOptions().locale support added. rbri Add core-js: Date/Time format functions are now taking care of the browser locale. Lai Quang Duong Add core-js: Date.prototype.toLocaleString takes care of locales argument. Lai Quang Duong Fix core-js: Object.defineProperty() has to take care of ConsString. rbri Update Upgrade Apache commons-net to 3.11.1. rbri Fix Fix NPE during click processing when JavaScript engine disabled. Fixes #798. rbri

Release 4.2.0 – June 05, 2024

Type Changes By Update INCOMPATIBLE CHANGE: The signature of two methods from org.htmlunit.attachment.AttachmentHandler was changed. Please implement handleAttachment(Page, String) instead of handleAttachment(Page) and handleAttachment(WebResponse, String) instead of handleAttachment(WebResponse). rbri Update INCOMPATIBLE CHANGE: Ctor XMLHttpRequest(boolean caseSensitiveProperties) removed. This was only introduced for the XMLHttpRequest ActiveX object that is no longer there. Lai Quang Duong Add core-js: NetworkError introduced. rbri Fix neko: fix Html element creation when parsing XHTML files. rbri Update Upgrade Apache commons-net to 3.11.0. rbri Add GWT 2.11.0 tests. rbri Fix neko: fix the setup of the fragment parser; this fixes some problems with range.createContextualFragment(). rbri Update neko: code cleanup, more tests, some unused stuff removed; javadoc fixes. rbri Fix neko: AttributeMap.cloneMap() fixed. rbri Fix neko: fix fragment parsing without providing a context takes care of html tags in the fragment. rbri Fix HashChangeEvent.initHashChangeEvent() no longer supported by Firefox 126. rbri Add Firefox 126 sends the Priority header. rbri Add Function Element.getHTML() added for Chrome/Edge. rbri Update WebSocket ctor resolves the url relative to the page for the latest Chrome/Edge/FF. rbri Update Handling of Attachments is improved. Now we treat responses only haven and Content-Type header of application/octetstream in the same way as if the Content-Disposition header was set to attachment. This is was real browsers also do. Fixes #789. rbri Update Upgrade commons-logging to 1.3.2 rbri Fix ComputedCssStyleDeclaration.isScrollable(boolean, boolean) now checks also for the overflow-x/overflow-y styles. Fixes #742. rbri Fix Make HtmlElement.type() allow full-width space (\u3000), six-per-em space (\u2006) and tab (\t) characters. Lai Quang Duong Update Prevent iframes from loading local resource for security reason (reading local file resources is still allowed if the enclosing document itself was loaded from file). Lai Quang Duong Update Prevent XMLHttpRequest from loading local resource for security reason. Lai Quang Duong Update Improve Attachment.getSuggestedFilename() by making it prioritize the value of Anchor.download if exist. Lai Quang Duong Update Improve Attachment.getSuggestedFilename() by making it return the value of File.name if the attachment was downloaded through a blob-url created from a File. Lai Quang Duong Fix Options support added for window.scroll()/scrollBy()/scrollTo(). rbri Fix Initial simple implementation of element.scroll()/scrollBy()/scrollTo(). Fixes #742. rbri Add Fixes for hash processing in Location.reload(). Kanoko Yamamoto, Lai Quang Duong

Release 4.1.0 – April 28, 2024

Type Changes By Update HttpClientConverter.parseUrlQuery(String, Charset) and toQueryFormFields(List<NameValuePair>, Charset) are deprecated. Please use HttpUtils instead. rbri Update HttpClientConverter.formatDate(Date) and HttpClientConverter.parseDate(String) are deprecated. Please use HttpUtils instead. rbri Add Class HttpStatus defining a complete list of Http status codes added. Fixes #764. rbri Update Http status code constants in HttpClientConverter are deprecated. Please use the constants from HttpStatus. rbri Update Deprecated http status code constants removed from WebResponse. rbri Fix core-js: Fixed handling of unicode characters in the lexer. RhinoTeam Fix core-js: slightly improved Context.close() impl and try-with-resources usage. rbri Update Upgrade commons-codec to 1.17.0. rbri Remove Internal class WebClientInternals removed. rbri Add First simple version of HtmlElement innerText setter implemented. rbri Fix XMLHttpRequest now supports the 'x-user-defined' trick to transfer binary data. rbri Add Support for URL.createObjectURL() and URL.revokeObjectURL() added. Lai Quang Duong Add neko: x-user-defined encoding is now supported; like in real browsers x-user-defined is mapped to windows-1252. rbri Fix neko: Another bunch of fixes for encodings. Lai Quang Duong Update TextDecoder - fix handling of various charsets (incl. replacement and x-user-defined) rbri Update Upgrade Apache commons-text to 1.12.0. rbri Update Upgrade Apache commons-io to 2.16.1. rbri Fix core-js: set-callTrap should be called with the value, not the descriptor of value. Lai Quang Duong Fix Wrong script encoding was uses in some cases (regression in 4.0.0). rbri Update keyboard-howto updated and enhanced. Some documentation about clipboard handling added. rbri Add Missing unit test for the ClipboardHandler added. rbri

Release 4.0.0 – April 01, 2024

Type Changes By Remove IE is no longer supported. This implies the largest change of the code base during the last > 10 years. More than 200 flags removed from the code and about 6.000 test case expectations adjusted. And also many IE specifc classes are gone. rbri Remove The removal of the IE support also implies that the ActiveX support is also gone. rbri Remove Applets are no longer supported. This implies the AppletConfirmHandler and the applet related configuration settings are also removed. rbri Add New subproject htmlunit-websocket-client. For the start this is a shaded version of the latest Jetty 9 websocket-client. rbri Update Chrome/Edge 123. rbri Update Firefox 124. rbri Update Upgrade Apache commons-io to 2.16.0. rbri Update Refactor pac file support and add missing convert_addr() function support. rbri Update The EncodingSniffer now uses the StandardEncodingTranslator from neko. rbri Update neko: Introduce property http://cyberneko.org/html/properties/encoding-translator to set the translator from parsers. rbri Update neko: Introduce EncodingTranslator interface and switch the default encoding translator to the StandardEncodingTranslator. rbri Update Upgrade commons-logging to 1.3.1 rbri Fix Fix <iframe> so that the parent charset is used when no charset could otherwise be found. Lai Quang Duong Update The number of prescan bytes of an HTML document is changed from 4096 to 1024 bytes to be in line with specs. Lai Quang Duong Add CSS @charset definition support added. Lai Quang Duong Add Treat 'x-user-defined'' in meta tag as windows-1252. Lai Quang Duong Fix Fix the priority of BOM by moving it to the highest priority charset to be in line with html/xml/js/css etc. specifications. Lai Quang Duong Update Huge refactoring of the encoding handling. some methods of the EncodingSniffer are now deprecates; please have a look at the javadoc for hints about possible replacements. Lai Quang Duong Fix Fix for a ClassCastException in HtmlUnitNekoDOMBuilder (oss-fuzz). rbri Fix Execution of script tags included in template tags parsed from js is different in chrome. rbri Fix Template.content always returns the same object. rbri Fix Ensure that reading more characters at the end of the buffer is not stopped due to the buffer appearing being at the end with reading, rather we read till we get a -1. Streams can deliver less than requested size and hence the buffer looks like it it almost finished, but it is technically not. Fixes #714. René Schwietzke Update neko: XMLDocumentSource chaining is back. rbri Add neko: new feature http://cyberneko.org/html/features/scanner/plain-attr-values added. rbri Add neko: HTMLWriterFilter methods getPrintWriter(), hasSeenRootElement(), getElementDepth(), and getNormalize() added. rbri Fix core-js: fix return value when assigning to Symbol.__proto__. Lai Quang Duong Add core-js: [Symbol.species] support added to typed arrays rbri Update Update EncodingSniffer.ENCODING_FROM_LABEL with the latest at https://encoding.spec.whatwg.org/#names-and-labels Lai Quang Duong Fix Fix the encoding detection for xslt transformations. rbri Fix Image.onload() must be processed as postponed action. Lai Quang Duong Fix core-js: [Symbol.species] for Promise fixed'. RhinoTeam Add core-js: [Symbol.species] support improved. RhinoTeam Fix Stubs for element.scroll()/scrollBy()/scrollTo() added. Fixes #742. rbri Fix Invalid numbers are processed correct now when using the rowSpan/colSpan properties. Lai Quang Duong Fix Whitespace gets removed from rowspan/colspan attributes when using rowSpan/colSpan properties. Lai Quang Duong Fix Restore the ability to specify null as password value (regression in 3.4.0). Lai Quang Duong Fix neko: infinity loop problem fixed while processing <plaintext> using document.write(). Fixes https://github.com/HtmlUnit/htmlunit-neko/pull/92. Lai Quang Duong Fix Form elements available also when the form is detached from DOM (regression in 3.6.0). Fixes #740. rbri Update Geoloction implementation changed, the location is now part of the WebClientOptions, means you can set the location to an arbitrary position. rbri Update Upgrade Apache log4j-api to 2.23.0. rbri Fix Fix a NPE when closing a top level window after the js engine was already stopped. Fixes #730. rbri Fix neko: Html elements inside and svg titles element do not close this title element. rbri Fix neko: Parsing of self closing title tags inside a svg tag fixed. rbri Update websocket-client: jetty updated to 9.4.54.v20240208. rbri Update Spotbugs annotations removed - there was no real benefit from having them in the code. rbri

Release 3.11.0 – February 10, 2024

Type Changes By Fix Fix NPE when defining a javascript constructor alias for a non existing constructor. rbri Fix Method org.htmlunit.javascript.host.css.CSSStyleSheet.validateSelectors(SelectorList, int, DomNode) does not forward the SelectorList to the implementation (regression from version 3.7.0). rbri Update Upgrade commons-codec to 1.16.1. rbri Fix OrderedFastHashMap is now serializable. René Schwietzke Fix neko: FastHashMap is now serializable. René Schwietzke Fix neko: Fix the parsing of special tags (eg. title) - they consume all content until the matching end tag is reached. rbri Update neko: Optimize the attribute handling a bit for faster processing. rbri Update neko: Deprecated feature "http://cyberneko.org/html/features/document-fragment" removed. Please use "http://cyberneko.org/html/features/balance-tags/document-fragment" instead. rbri Fix Avoid a NPE if an XmlHttpRequest response arrives while the client already shouts down. rbri Update Firefox 122: The MouseEvent provided to the oncontextmenu handler has an detail of 1. rbri Update Firefox 122: HtmlButton no longer ignores disabled state set at the beginning of the action. rbri Update Firefox 122: anchor pathname property adjusted. rbri Update Firefox 122: 'offsetPosition'/'offset-position' and 'textWrap'/'text-wrap' are supported. rbri Update Firefox 122: 'offset' default value is 'normal'. rbri Fix neko: fix a regression in neko 3.11.0 regarding the handling of self closing unknown tags. Thanks to Ronny Shapiro. rbri Fix Fix potential NPE in HtmlPage.getElementById(String), HtmlPage.getElementsById(String), HtmlPage.getElementByName(String), HtmlPage.getElementsByName(String), and HtmlPage.getElementsByIdAndOrName(String). Ronny Shapiro Update Chrome/Edge 121: The properties 'width' and 'offsetWith' returning correct results for the 'rt' tag. rbri Update Chrome/Edge 121: Default display style for the 'rt' tag is 'ruby-text'. rbri Update Chrome/Edge 121: Default display style for the 'ruby' tag is 'ruby'. rbri Update Edge 121: html/image accept-header mentions 'image/avif'. rbri Update Chrome/Edge 121: SpeechSynthesis/SpeechSynthesisVoice are available as globals. rbri Update Chrome/Edge 121: CSSMediaRule.insertRule() the second argument 'position' is optional. rbri Update Chrome/Edge 121: scrollbarColor/ scrollbarWidth style property added. rbri Fix Bunch of dom performance updates. René Schwietzke Fix Changing the input type when Javascript engine is disabled should not throw. Ronny Shapiro Add core-js: Correct implementation of Math.atanh. RhinoTeam Add core-js: BigIntLiteral.toSource includes suffix. RhinoTeam Add core-js: Limit the length of the string to be used for source code indentation to avoid protect memory from overflow. rbri Add core-js: When an Array object's prototype is changed, disable the "dense only" optimization to ensure that prototype properties are considered by standard operations. RhinoTeam Update " Detection and reporting of obsolete mime types for javascript files has changed to be in sync with the spec and the current practice. "text/javascript" is the correct; "application/javascript" is reported as obsolete. Fixes #710. rbri Fix neko: AbstractDOMParser fix an old bug in the (optimized) handling of text nodes during dom construction - in some cases parts of the text got lost. rbri Fix neko: HTMLScanner make sure endDocument() is called even if the <plaintext> node is at the end of the document - otherwise the endElement calls for the parents are missing. rbri Fix neko: DOMMessageFormatter possible NPE fixed. rbri Fix neko: more performance updates. René Schwietzke Add neko: tag name scanner updated to match the real browsers. rbri Add HtmxOneNineTenScriptPreprozessor renamed to HtmxOneNineTenScriptPreProcessor. rbri

Release 3.10.0 – January 14, 2024

Type Changes By Add Htmx 1.9.10 support when using the org.htmlunit.javascript.preprocessor.HtmxOneNineTenScriptPreprozessor. rbri Add core-js: arguments[Symbol.iterator] points to Array Array.prototype[Symbol.iterator]. Lai Quang Duong Add core-js: Array.prototype[Symbol.iterator] points to the 'values' functions. rbri Add neko: many test cases added to the parser. rbri Add neko: rewritten script tag content parsing to be in sync with the spec. Lai Quang Duong Fix Make the output file handling of XmlSerializer.save(SgmlPage, File) more robust. rbri Update Suspicious code in WebResponseDate fixed. rbri Add BrowserVersionFeatures JS_OBJECT_ASSIGN and JS_WEAK_SET added. rbri Update Some BrowserVersionFeatures renamed: STRING_INCLUDES -> JS_STRING_INCLUDES, STRING_REPEAT -> JS_STRING_REPEAT, STRING_STARTS_ENDS_WITH -> JS_STRING_STARTS_ENDS_WITH, and STRING_TRIM_LEFT_RIGHT -> JS_STRING_TRIM_LEFT_RIGHT. rbri Add String.includes/startsWith/endsWith no longer throws a TypeError when the first argument is a regex and Symbol.match of that regex has been set to false. Lai Quang Duong Add String.prototype.replaceAll implemented. Lai Quang Duong Add RegExp.dotAll flag implemented. Lai Quang Duong Fix No longer throw an TypeError when RegExp.prototype.toString is called on a NativeObject. Lai Quang Duong Add Symbol.iterator property is now available on CSSStyleDeclaration/ComputedCSSStyleDeclaration. rbri Fix SymbolConstants are readonly. rbri Fix neko: frameset tags ignored in some more cases, handling of text before the frameset also fixed. rbri Fix neko: frameset tags closing the head. rbri Fix WebClientOptions.setMaxInMemory(int) should not create temp files if the limit is set to something <= 0. rbri Fix core-js: Fix Math.clz23() rounding errors. Lai Quang Duong Fix core-js: Reflect.construct() uses the wrong set of arguments if newTarget is set. Lai Quang Duong Add core-js: Receiver argument support added for Reflect.set(). Lai Quang Duong Fix core-js: Reflect.construct() uses the wrong set of arguments if newTarget is set. Lai Quang Duong Fix Improve content type detection for '.php' content. rbri Fix neko: frames tags without a frameset parent are ignored. rbri Fix neko: hr tag is allowed inside select's. rbri Fix neko: unknown elements are always moved to the body. rbri Update Upgrade Apache log4j-api to 2.22.1. rbri Add Node.isEqualNode() implemented. Lai Quang Duong Fix WebKitCSSMatrix aliases to DOMMatrix. rbri Fix neko: RTC is an inline element. rbri Fix neko: support early closing of cdata sections by >. rbri Fix neko: support bang comments (--!> as closing sequence). rbri csp: Address deprecation of 'referrer'. kingthorin csp: Address deprecation of 'plugin-types' and 'prefetch-src'. kingthorin Fix ScriptPreProcessor documentation added to the FAQ. rbri Update Bunch of refactorings to reduce the overall source code dependencies from core-js. rbri Update Make closing of windows more robust by making sure the deregistration is done also in case of errors. This should fix some more memory leaks. rbri Update The return value of the (internal) method DomNode.getScriptableObject() was changed from <T> to <T extends HtmlUnitScriptable>. This should remove some casts and makes the code a bit more clean. rbri Fix URL and anchor tag 'protocol' setter accepts also complete urls as parameter. rbri Fix URL 'protocol' setter validates (FF, Chrome, Edge). rbri Add Details 'name' property support added (Chrome/Edge). rbri Update Because the naming of the method and parametes is misleading, the method WebClientOptions.setSSLClientCertificate(InputStream, String, String) is deprecated. Please use WebClientOptions.setSSLClientCertificateKeyStore(InputStream, String, String) instead. rbri Update Because the naming of the method and parametes is misleading, the method WebClientOptions.setSSLClientCertificate(URL, String, String) is deprecated. Please use WebClientOptions.setSSLClientCertificateKeyStore(URL, String, String) instead. rbri

Release 3.9.0 – December 03, 2023

Type Changes By Update Upgrade commons-logging to 1.3.0 rbri Update Upgrade Apache commons-io to 2.15.1. rbri Add New subproject htmlunit-csp. This replaces shapesecurity/salvation. rbri Fix Enable FEATURE_SECURE_PROCESSING for the MSXML XSLProcessor (CVE-2023-49093). rbri Fix neko: fix wrong error processing for some unicode entities. René Schwietzke Fix Resolve only link tags having a 'stylesheet' rel attribute when searching for all styles of a page. rbri Update Upgrade Apache commons-lang3 to 3.14.0. rbri Fix The new CSS3Parser pool implementation throws sometimes an illegal state exception under load (regression from 3.8.0). Fixes #669. René Schwietzke Fix neko: incorrect handling of &#x and &#x; fixed. Fixes #54. René Schwietzke Fix neko: some incorrect HTML named entity definitions fixed. Fixes #54. René Schwietzke Update neko: new HTML named entities parser that is up to 20x faster for common entities. Fixes #54. René Schwietzke Update Upgrade Apache log4j-api to 2.22.0. rbri Add Some cleanup/simplification done for the way java objects are mapped to js objects. rbri

Release 3.8.0 – November 18, 2023

Type Changes By Add core-js: support trailing commas in function parameters. RhinoTeam Fix Content attribute value of a pseudo-attribute is no longer changed to lower case. Fixes #667. rbri Add Updated CSS3Parser pool implementation with a different concept to allow more pooling, lighter synchronization, and avoid leaks when not auto-closed. It also uses AutoCloseable instead of Closeable (this is for IO, not for try-with-resource in general). René Schwietzke Add core-js: hashbang support added. RhinoTeam Fix core-js: handling of object indices more in line with the spec. This repaces the fix we had since 3.4. RhinoTeam Fix core-js: allow updating of 'name' of a function, as required by the standard. RhinoTeam Fix core-js: javascript 'Set' cannot handle wrapped java objects properly. RhinoTeam Fix " Improved detection onf XML/XHtml content when not content type header is set. Fixes #663. rbri Update " Internal method HtmlInput.setType(String, boolean) renamed to changeType(String, boolean) and a return value added. Please check the javadoc if you use this. Fixes #658. rbri

Release 3.7.0 – October 30, 2023

Type Changes By Update INCOMPATIBLE CHANGE: For this version, the processing of WebWindowListener events got many changes/fixes/improvements. The main point was to let this work as stable as possible even if many WebWindowListener are registred. Also the state of the various WebClient properties should be clear in every case. This results in some minor changes the might have some impact for the backward compatibility. rbri Update cssparser: Switched from JavaCC to ParserGeneratorCC (https://github.com/tulipcc/ParserGeneratorCC). Based on this we have to chance to update the ParserGeneratorCC to fix some of our problems with the generated code. See https://github.com/tulipcc/ParserGeneratorCC/pulls for more. rbri Update Properties ownerNode and href moved from CSSStyleSheet to StyleSheet. rbri Update Upgrade Apache commons-io to 2.15.0. rbri Remove core-js: a no longer used switch removed rbri Update core-js: build system switched to maven rbri Update WebWindowListener javadoc updated to reflect the latest changes and include some words about common pitfalls. rbri Fix Make sure the webClient is in a consistent state when the WebWindowListener events are fired. rbri Fix Trigger WebWindowEvent for the initial WebClient window also if js is disabled. rbri Update Implementation of CSS pseudo classes :invalid and :valid improved. Fixes #338. rbri Update Form.isValid() checks all form elements. rbri Update WebClient documentation enhanced. rbri Update Documentation about proxy setup integrated into the WebClient documentation. Fixes #131. rbri Update Support ComputedCSSStyleDeclaration when JS engine is disabled. Fixes #131. rbri Remove test-javadoc removed from the website. rbri Add HtmlForm.getElements() is now part of the public api. Fixes #647. rbri Update A bit more documentation about the two ways to disable the JavaScript engine added. rbri Fix Remove proxy polyfill from the documentation because it is no longer available (Proxy/Reflect support was added to core-js). rbri Update Upgrade Jetty to 9.4.53.v20231009. rbri Add Sending the correct content type of "application/pdf" for PDF files for form-multipart posts. Fixes 637. rbri Fix Fixed a major memory leak - frame windows (incl. iframes) are still referenced by the web client window list after the parent was closed. In the end they are not garbage collected. rbri Update Upgrade Apache commons-net to 3.10.0. rbri Fix 'rel' attribute may contain multiple values, we have to split before checking the value. rbri

Release 3.6.0 – October 03, 2023

Type Changes By Fix INCOMPATIBLE CHANGE: WebClient.close() now really closes all windows and also stops the js engine. This means you can't use the the webClient afterwards for browsing. If you only like to cleanup all the window resources use WebClient.reset(). Fixes 627. rbri Add New method WebClient.reset() added, this is like close() but restarting the js engine and open a new empty window afterwards. rbri Add MochiKit 1.4.2 test suite added. rbri Update Upgrade Apache commons-io to 2.14.0. rbri Fix Accessing form elements by id (e.g. myForm.elementId) searches only form elements and not arbitrary descendants. rbri Fix Form elements are all elements that belong to a form; not only the child elements. We now take care of elements that use the form attribute to specify the associated form in many more places. This means that the method HtmlForm.getLostChildren() is removed. You should always use the mehtod HtmlForm.getElements() to get an list of all form-elements associated to that form (descendants or using the 'form' attribute). This implies also that all the HtmlForm methods for searching elements now working based on the getElements() method (also searching for elements associated to the form based on the 'form' attribute. rbri Add The URLSearchParams ctor now supports also a sequence of name-value string pairs, or any object with an iterator that produces a sequence of string pairs, or a record of string keys and string values. Lai Quang Duong Add Implementation of FormData.forEach(), FormData.keys(), and FormData.values() added. rbri Add Symbol.iterator property is now available on FormData. Thanks to Lai Quang Duong. rbri Fix cssparser: 'only' is a valid class selector name. rbri Fix core-js: Reflect.apply() now works also with primitive thisArgument (String, Number, Boolean). Thanks to Lai Quang Duong. rbri Update Introduce Platform-FontUtil to encapsulate awt.font stuff for android support. rbri Fix Several fixes for window.postMessage(). Fixes 633. rbri Add core-js: some minor improvements for the Reflect support. rbri Add core-js: bunch of improvements for the Proxy support. rbri Add core-js: Array.of has to use defineOwnProperty instead of set. rbri Add core-js: Improved unicode support for the js source parser. RhinoTeam Update Upgrade Jetty to 9.4.52.v20230823. rbri Update Update batik-transcoder version to 1.17. rbri Update Try to make the WebClient.close() procedure more robust. Fixes 627. rbri Update FF 116 now supports css page rules. rbri Add Method WebClientOptions.setSSLClientCertificateKeyStore(KeyStore, char[]) added. Fixes 623. rbri

Release 3.5.0 – August 20, 2023

Type Changes By Remove INCOMPATIBLE CHANGE: Class org.htmlunit.html.DomTreeWalker removed; use org.htmlunit.platform.dom.traversal.DomTreeWalker instead. rbri Remove INCOMPATIBLE CHANGE: Method org.htmlunit.SgmlPage.createTreeWalker(Node, int, NodeFilter, boolean) removed; use use org.htmlunit.platform.dom.traversal.DomTreeWalker.DomTreeWalker(DomNode, int, NodeFilter, boolean) instead. rbri Remove INCOMPATIBLE CHANGE: Class org.htmlunit.SgmlPage no longer implements the org.w3c.dom.traversal.DocumentTraversal interface; the method org.htmlunit.SgmlPage.createNodeIterator(Node, int, NodeFilter, boolean) is therefore also removed. rbri Remove INCOMPATIBLE CHANGE: Method org.htmlunit.html.HtmlImage.getImageReader() removed; use org.htmlunit.html.HtmlImage.getImageData() instead. rbri Remove INCOMPATIBLE CHANGE: Support for proxy polyfill removed. rbri Add core-js: Support for Array.prototype.flatMap added. RhinoTeam Update core-js: Proxy implementation added. rbri Fix core-js: format issues in Messages.properties fixed. rbri Fix core-js: missing array limit check added rbri Fix cssparser: 'inherit' is a valid class selector name. rbri Fix core-js: Improved handling for NativeError instances when generating the console output. Before this, when outputing NativeError instances the json serializer was used ending up in something like this '{"fileName":"source.js","lineNumber":426}'; means the whole message was missing. This fix brings the output closer to the output of real browsers by writing the message and the stack trace. rbri Add htmx version 1.9.4 testsuite added. rbri Fix neko: self closing textarea tag are now handled correctly. rbri Update neko: bunch of test cases added. rbri Update neko: XMLString now internally uses a StringBuilder instead of maintaining an char[] buffer. rbri Update neko: Code cleanup and more unused code removed. rbri Update neko: Use the same code style rules as HtmlUnit. rbri Fix Always restore interrupted status when catching and ignoring InterruptedExceptions. Fixes 609. Thanks to Guang-Hou. rbri Update Adjust HtmlDialog handling for the changes done in Chrome/Edge/FF 115. rbri Update Upgrade Apache commons-lang3 to 3.13.0. rbri Fix Fix batik version in images-howto. rbri

Release 3.4.0 – July 27, 2023

Type Changes By Update Testsuite cleanup and consistency checks. rbri Add Support for rb and rtc tag added. rbri Fix Document.releaseCapture() and Element.releaseCapture() having no return value. rbri Add htmx version 1.9.3 testsuite added. rbri Add NamedNodeMap methods getNamedItemNS(), setNamedItemNS(), and removeNamedItemNS() added. rbri Add NamedNodeMap, HTMLSelectElement/HTMLOptionsCollection and HTMLFormElement are now iterable (for..of support). rbri Add Support for the toStringTag symbol added to all dom classes. rbri Fix core-js: Two more fixes for symbol handling. rbri Fix Fix parameter processing for document.evaluate(). rbri Fix core-js: Negative integer index values must be handles as strings and not as integer. rbri Update Ctor HtmlUnitUsernamePasswordCredentials(String, String) is deprecated, please use HtmlUnitUsernamePasswordCredentials(String, char[]) instead. rbri Update Several methods of DefaultCredentialsProvider are deprecated, please use there counterparts expecting the password as char[] instead. rbri Add New methods StorageHolder.getLocalStorage(URL) and StorageHolder.getSessionStorage(WebWindow) to better support testing the Web Storage API. rbri Add Documentation for working with the StorageHolder added (https://www.htmlunit.org/details.html#Local.2FSession_Storage). rbri Remove Some code for the no longer available global storage removed from the StorageHolder implentation. rbri Update HttpWebConnection.downloadResponse(HttpUriRequest, WebRequest, HttpResponse, long) and WebResponse.markAsBlocked(String) introduced to make some content blocking iml possible. Fixes 611. rbri Update HttpWebConnection.downloadResponse(HttpUriRequest, WebRequest, HttpResponse, long) introduced to make some content blocking iml possible. Fixes 611. rbri Add Documentation for content blocking added (https://www.htmlunit.org/details.html#Content_blocking). Fixes 611. rbri Update WebClientOptions.getHomePage() now points to https://www.htmlunit.org/. rbri Update WebClientOptions.setActiveXNative() is deprecated (like the whole IE). rbri Add HtmlElement autofocus property added. rbri Fix Input elements value attribute handling fixed. Fixes 606. rbri Update Input elements are now using a separate isValueDirty flag. rbri Update Various documentation fixes and migration guide updates. Fixes 608. rbri Add New WebClientOption setTempFileDirectory() to specify a separate directory for the temp file. Fixes 605. rbri Update Upgrade Apache commons-io to 2.13.0. rbri Update core-js: Reflect.construct() support added. rbri

Release 3.3.0 – June 04, 2023

Type Changes By Update core-js: Reflect implementation added (only construct() support is missing). rbri Fix " Dialog tag method and properties added. Fixes 598. rbri Fix core-js: optimization - replace some language version checks with constant values rbri Fix core-js: the PropertyDescriptor has an setter slot even if no setter function is available rbri Fix core-js: the order of slots in the PropertyDescriptor is no in sync with the spec/browsers rbri Update Use Objects.equals() instead of StringUtils.equals(). rbri Fix HtmlForm.getInputByValue and HtmlForm.getInputsByValue have to use the value instead of the value attribute (regression in 3.0.0). Fixes 602. rbri Add core-js: Support for Array.at added. RhinoTeam Add core-js: Support for Array.flat added. RhinoTeam Fix nodeList[Symbol.iterator] === nodeList.values has to be true. Lai Quang Duong Update Symbol.iterator property is now available on URLSearchParams. Lai Quang Duong Update Putting both the @JsxSymbol and @JsxFunction annotations on the same method works properly. Lai Quang Duong Fix Reflect's properties having an incorrect scope. Lai Quang Duong Update Some fixes for TextEvent and more tests. rbri Update Remove the no longer available properties ondevicelight, ondeviceproximity, and onuserproximity from window (FF). rbri Update KeyboardEvent which property is IE only. rbri Update Body onmessageerror property has to be writeable in FF too. rbri Update Introduce AbstractRange and move the properties collapsed, startContainer, endContainer, startOffset, and endOffset. rbri Update Meta media property has to be writeable in FF. rbri Update Marquee properties height, width, and bgColor are avilable in FF also. rbri Update Event type property is read-only. rbri Update ScreenOrientation onchange property has to be writeable. rbri Update Support of form property relList added. rbri Update Setter for form property rel added. rbri Update Nearly all screen properties are read-only. rbri Update Link relList property is setable. rbri Update Anchor relList property is setable. rbri Update Remove the superfluous origin setter for anchors. rbri Update The which property is moved up to the UIEvent for Chrome/Edge and FF. rbri Update MouseEvent which property is only available in IE. rbri Update The head property is defined on Document and not on HtmlDocuent. rbri Update Frameset onmessageerror property is setable in FF also. rbri Update neko: minor optimization of avoid object creation and some not required method calls. rbri Update Upgrade Apache commons-io to 2.12.0. rbri Fix SOCKS proxy setup fixed. Vadzim Miliantsei

Release 3.2.0 – May 15, 2023

Type Changes By Fix Fix for the dom construction in some edge cases (oss-fuzz). rbri Add RTCSctpTransport stub added. rbri Add URLSearchParams.size property added. rbri Add SubmitEvent support added. rbri Update Avoid usage of org.w3c.dom.ranges.Range - this is not available on android. rbri Add Support unicode property escapes in regular expressions. Fixes 583. rbri Update cssparser: Custom properties without values are valid. rbri

Release 3.1.0 – April 16, 2023

Type Changes By Remove INCOMPATIBLE CHANGE: CookieManager.getPort(URL) removed. Looks like <a href="http://code.google.com/p/googleappengine/issues/detail?id=4784"> is solved. rbri Fix core-js: Handling of java primitive types in EqualObjectGraphs are fixed. RhinoTeam Fix neko: mention CVE-2023-26119 on the github page. rbri Fix neko: HtmlTagBalancer.reset() now resets the whole state. rbri Fix neko: fix search for message bundles (regression in 3.0.0). rbri Fix Calls to hasOwnProperty() and getOwnPropertyDescriptor now taking care of form elements accessible from the form object. Fixes 578. rbri Fix Document.getSelection() is defined for Firefox and IE also. rbri Fix Document.getElementsByName() is defined for Firefox also. rbri Fix Document.getElementsByName() returns a NodeList instead of a HTMLCollection. rbri Add HTMLCollections are iterable now - you can use them in for..of loops. Fixes 576. rbri Fix Regexp "[^]" and "[^]" break translation of later char ranges in the regex. Lai Quang Duong Add window.isSecureContext added. Fixes 573. rbri Fix neko: Template tags are valid inside the head. rbri Fix neko: Script tags are valid inside select's. rbri Fix neko: The dialog tag closes a p tag. rbri Fix NPE fix for CSSStyleDeclaration.getPropertyPriority(). Lai Quang Duong Fix Incorrect placement of character data outside the form if there is no closing form tag (regression in 3.0.0). Thanks to Lai Quang Duong. rbri Fix Regexp "[^]" should match any character, including new line. Lai Quang Duong Fix XMLHttpRequest post request for the same origin must include the cookies (regression in 3.0.0). Fixes 565. rbri Fix Use 'keep-alive' instead of 'Keep-Alive' for the connection header. rbri

Release 3.0.0 – March 19, 2023

Type Changes By Update INCOMPATIBLE CHANGE: Value processing for input controls changed; typing now ONLY changes the value but not the value attribute. As consequence all calls to setValueAttribute(..) have to be replaced by setValue() or type(). rbri Update INCOMPATIBLE CHANGE: HtmlButton.getAttribute() now returns the plain attribute value also for 'type' attribute instead of returning 'submit' in case the attribute is not set. rbri Update INCOMPATIBLE CHANGE: xpath: All packages renamed from net.sourceforge.htmlunit.xpath to org.htmlunit.xpath. rbri Update INCOMPATIBLE CHANGE: neko: All packages renamed from net.sourceforge.htmlunit.cyberneko to org.htmlunit.cyberneko and net.sourceforge.htmlunit.xerces to org.htmlunit.xerces. rbri Update INCOMPATIBLE CHANGE: cssparser: All packages renamed from net.sourceforge.htmlunit.cssparser to org.htmlunit.cssparser. rbri Update INCOMPATIBLE CHANGE: core-js: All packages renamed from net.sourceforge.htmlunit.corejs to org.htmlunit.corejs. rbri Update INTERNET_EXPLORER is deprecated. rbri Fix core-js: Function.toString() now returns the source of the function without any reformating. Fixes 552. rbri Fix DocumentFragment methods childElementCount(), firstElementChild(), and lastElementChild() are ignoring non element nodes. rbri Fix Document readystatechange event was not triggered on page loading. Fixes 561. rbri Fix Style.item() function fixed. rbri Fix Prevent sending cookies with preflight and cross-origin requests. Lai Quang Duong Update Remove well known ports from the WebRequest url. Lai Quang Duong Fix Fix incorrect splitting of URLSeachParams when parameters contain url-encoded required characters like "&". Lai Quang Duong Add Implementation of URLSeachParams.forEach() added. Lai Quang Duong Add Implementation of Blob.stream() stub added; just throws UnsupportedOperationException. Lai Quang Duong Add Implementation of Blob.arrayBuffer() added. Lai Quang Duong Update xpath: again some unused code removed. rbri Fix Always throw an UnsupportedEncodingException from all DataUrlDecoder methods to not bypass the general exeption handling. rbri Fix StringIndexOutOfBoundsException when parsing invalid data url's (oss-fuzz). rbri Fix Style and template tags are valid table childs. rbri Update Implement handling of the Cache-Control: no-cache directive. Lai Quang Duong Update Upgrade Jetty to 9.4.51.v20230217. rbri Fix CSS selectors filtering the type attribute like button[type='submit'] fixed. Fixes 555. rbri Fix Fix NullPointerException when parsing using html with ignored head tags (oss-fuzz). rbri Fix core-js: Setter function from property descriptor has to convert the args. Fixes 550. rbri Fix core-js: Preserving cause, when a JavaException is rethrown in JavaScript. RhinoTeam Fix core-js: Fix name property for bound functions. rbri Fix Document.evaluate() and XPathEvaluator.evaluate() now failing with a js exception if something is wrong with the xpath. rbri Fix Remove support for xpath function lower-case as this is not available in real browsers. rbri Add Take all Access-Control-Allow-Headers into account during XMLHttpRequest preflight auth. Fixes 549. rbri Fix neko: source/param/track are body tags. rbri Fix neko: noscript can be part of the header also. rbri Add neko: Add audio/bdi/canvas/data/datalist/dialog/mark/meter/picture/progress/slot/time/output/video tag support. rbri Fix neko: Select tags can only contain option/optgroup/template tags and text. rbri Fix neko: Content inside the noembed tag is handled as text. rbri Fix Fix ClassCastExceptions while parsing wrong html tags inside svg elements (e.g. <form>) (oss-fuzz). rbri Fix Class com.gargoylesoftware.htmlunit.html.XmlSerializer is now public. rbri Fix Bunch of fixes to attach input controls to the correct form during dom creation. Atsushi Nakagawa Fix Many corrections for the dom generation for misplaced form or form controls inside tables. rbri Fix neko: Close forms directly if they are at the wrong place inside a table. rbri Update neko: Augmentations converted into a tagging interface. rbri Update neko: code cleanup and unused features removed. rbri Fix Enable FEATURE_SECURE_PROCESSING for the XSLT processor. rbri Add Document disabling of website certificate check in the FAQ. rbri

Release 2.70.0 – January 22, 2023

Type Changes By Fix neko: Refactor XMLAttributes/XMLAttributesImpl to use a simple ArrayList<Attribute> as backend. rbri Fix neko: Fix ArrayOutOfBoundsException when parsing using JDK 17 (oss-fuzz). rbri Fix DocumentType properties entities and notations are only available in IE. rbri Add Methods append/prepend/replaceChildren added to Element. Fixes 544. rbri Fix Element.replaceWith() fixed for the case this was called without any new elements. rbri Fix Another Xerces detection fix for JDK 17. Fixes 541. rbri Add Missing properties addedNodes, removedNodes, previousSibling, and nextSibling added to MutationRecord. rbri Add Anchors are now taking care of the rel="noreferrer" attribute. Fixes 546. rbri Add Form ref attribute implemented (Chrome and Edge) rbri Update Method com.gargoylesoftware.htmlunit.html.HtmlImage.getImageReader() is depracated (Android compatibility). rbri Update Package package com.gargoylesoftware.htmlunit.javascript.host.canvas.rendering renamed to package com.gargoylesoftware.htmlunit.platform.canvas.rendering. rbri Update Package package com.gargoylesoftware.htmlunit.javascript.host.canvas.rendering renamed to package com.gargoylesoftware.htmlunit.platform.canvas.rendering. rbri Remove Methods com.gargoylesoftware.htmlunit.css.CssStyleSheet.parseSelectors(String) and com.gargoylesoftware.htmlunit.javascript.host.css.CSSStyleSheet.parseSelectors(String) removed. rbri Fix Reports generated by ElementOwnPropertiesTest and ElementPropertiesTest fixed. rbri Fix Methods createGain() and decodeAudioData() moved from AudioContext to BaseAudioContext. rbri Update cssparser: many, many updates for parsing the :not() pseudo selector done - they are now first class citicens for the parser and also for handling the selectors. rbri Fix Fixed url parameter processing in history.replaceState() / history.pushState(). Lai Quang Duong Remove Deprecated constants ABOUT_SCHEME, ABOUT_BLANK, and URL_ABOUT_BLANK removed from WebClient. rbri Update Class com.gargoylesoftware.htmlunit.html.DomTreeWalker is deprecated (Android compatibility). rbri Update Method com.gargoylesoftware.htmlunit.SgmlPage.createTreeWalker(Node, int, NodeFilter, boolean) is deprecated (Android compatibility). rbri Update New class com.gargoylesoftware.htmlunit.platform.dom.traversal.DomTreeWalker; this class can only be used with standard jdk - not on Android. rbri Add Fixed definition of the Location properties (they are defined on the object itself instead on the prototype). Fixes 528. rbri Fix WebClient#loadHtmlCodeIntoCurrentWindow() now uses the html parser instead of the xhtml parser. rbri Fix neko: Fix Exception when parsing a template tag as first node (oss-fuzz). rbri Fix Fix Exception when parsing documents with ignored head tags (oss-fuzz). rbri

Release 2.69.0 – January 05, 2023

Type Changes By Fix Xerces detection fixed. rbri Add HtmlUnit is now regulary tested by Google OSS-Fuzz. Fixes 531. rbri Fix neko: Fix ArrayIndexOutOfBoundsException when parsing a incomplete entity reference at the end (oss-fuzz). rbri Fix Fix ClassCastException when parsing svg body tag (oss-fuzz). rbri Fix Fix ClassCastException when parsing base element with namespace (oss-fuzz). rbri Fix core-js: fix scope for bound functions called inside Promise.then(). Fixes 522. rbri Fix Cached location.hash was not updated by history.replaceState() / history.pushState(). Fixes 523. rbri Fix The url was not encoded by history.replaceState() / history.pushState(). Fixes 523. rbri Fix Inconsistent use of UrlUtils.encodeAnchor() / UrlUtils.encodeHash(). rbri Update neko: more unused code removed. rbri Update xpath: again some unused code removed. rbri

Release 2.68.0 – Dezember 28, 2022

Type Changes By Fix cssparser: typo when skipping a rule containing em values. rbri Fix core-js: Many fixes for Object.assign(). RhinoTeam Fix Replace \n in console output with real line break. rbri Fix core-js: Make sure the placeholder replacements of console.log() is also done for ConsStrings. rbri Fix core-js: console.log() ignores %c styling but updates the param count to not disturb further replacements. rbri Add Support for unicode point escapes added when converting regex from js to java. Fixes 535. rbri Fix Minor fixes for unicode handling when converting regex from js to java. rbri Fix RequestParameter normalization should not replace KeyDataPair by NameValuePair. Fixes 533. Michael Lueck Add Minor fixes for radio button validation to fit Chrome/Edge/FF instead of IE. Fixes 530. rbri Add cssparser: support case-insensitively syntax for attribute values (https://www.w3.org/TR/selectors-4/#attribute-case). Fixes 530. rbri Fix Fix prototype for Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, and Intl.v8BreakIterator (regression from 2.64.0). Fixes 529. rbri Fix Browsers using windows-1252 if the content type header is charset=ascii. Fixes 525. rbri Add Crypto.randomUUID() added. rbri Fix neko: Fix handling of parser inserted tbody tags inside templates. rbri Update Upgrade Jetty to 9.4.50.v20221201. rbri Fix Process cookies with negative max-age values to make sure the cookie store gets updated (in fact this deletes an existing cookie). Fixes 524. rbri Update Upgrade Apache HttpComponents to 4.5.14. rbri Fix core-js: Constructor properties fixes. Fixes 238. rbri Update Upgrade Apache commons-net to 3.9.0. rbri Fix core-js: Descriptor of Function.length should be configurable. Fixes 521. rbri Fix neko: Use our own fork of xerces to get rid of some classpath problems because of the xml-api dependency. Fixes 521. rbri

Release 2.67.0 – November 20, 2022

Type Changes By Update Support sameSite attribute when constructing a cookie. rbri Update Cookie toString() includes sameSite attribute if set. rbri Fix Treat localhost as secure origin when processing cookies. rbri Fix Take care of the fixed position style attribute at some places. rbri Fix Remove some not required string operations from the DOMTokenList code. rbri Fix Fixing change notification for the DOMTokenList in some situations. rbri Fix DOMTokenList no longer adds an attribute to the dom node if remove is called an there was no attribute so far. rbri Fix AnimationEvent construction fixed. rbri Fix core-js: classCastException in hasOwnProperty on NativeJavaObject fixed. RhinoTeam Fix XPathResult determination of the resultType fixed. rbri Fix numberValue() and stringValue() for an empty XPathResult fixed. rbri Fix XPathResult.booleanValue() fixed. rbri Fix xpath: correct return value when substring() is used with a negative length rbri Fix xpath: fix error handling for invalid function arg count rbri

Release 2.66.0 – October 22, 2022

Type Changes By Fix core-js: RegEx - fix the error message in case the quantifier maximum (second value) is smaller than the minimum (first value) rbri Fix core-js: Remove usage of putIfAbsent() in the Hashmap class. This method does not exist on many old Android releases and there's no real downside to removing it. RhinoTeam Fix core-js: parent relationship in TaggedTemplateLiteral fixed. RhinoTeam Fix StaticDomNodeList has to be serializable. Fixes 513. rbri Fix Lambda functions used by Element have to be serializable. Fixes 513. rbri Fix FunctionWrapper has to be serializable. Fixes 511. rbri Update Avoid usage of ThreadLocal#withInitial for Android 7. rbri Update NamedNodeMap moved from com.gargoylesoftware.htmlunit.javascript to com.gargoylesoftware.htmlunit.javascript.host. rbri Add HTMLMediaElement.load() implemented as NoOp. Fixes 504. rbri Add Support for HTMLMediaElement.src and HTMLMediaElement.currentSrc properties added. Fixes 504. rbri Fix nodeType and nodeName moved to HTMLMediaElement. Fixes 504. rbri Add Simple mock for Performance getEntries()/getEntriesByName()/getEntriesByType() added. rbri Add htmx version 1.8.2 testsuite added. rbri Fix HTMLMediaElement.canPlayType() now returns more realistic results. This might help for some pages where the player src attribut is set from js only if the media type is supported. Fixes 504. rbri Add Method DomElement.setInnerHtml(String) added. Fixes 505. rbri Fix Fix generation of test-javadoc. rbri Add First simple implementation of NumberFormat.format() and NumberFormat.resolvedOptions() added. Fixes 501. rbri Fix Fix one more xsl transform issue when running without Xalan. rbri

Release 2.65.1 – October 03, 2022

Type Changes By Fix Wrong dependency to htmlunit-xpath snapshot rbri Fix There was still a dependency to Xalan. rbri

Release 2.65.0 – October 03, 2022

Type Changes By Update FF_ESR updatade from version 91 to 102. rbri Remove com.gargoylesoftware.htmlunit.util.TextUtils removed. rbri Update Switch from xalan to htmlunit-xpath. rbri Update Upgrade Jetty to 9.4.49.v20220914. rbri Add Introducing a PrintHandler configurable at the WebClient. You can provide your own Window.print() implementations if required. Fixes 501. rbri Fix A bug in one faq sample code that might result in wrong encoding is fixed. rbri Update Bunch of code cleanup for CSS handling. rbri

Release 2.64.0 – August 18, 2022

Type Changes By Update CSS pseudo selector :invalid improvements. rbri Fix Number control processing of whitespace fixed. rbri Fix Url/Email control processing of whitespace fixed. rbri Fix Email control takes care of the min/max length property during validation. rbri Fix Improved implementation of the ValidityState.isTooShort property. rbri Fix Fix maxlength validation if the initial value is longer. Fixes 496. rbri Update Upgrade salvation lib to salvation2 3.0.1. rbri Add Screen/ScreenOrientation property onchange added. rbri Add Screen property isExtended (Chrome/Edge) added. rbri Add Screen property orientation (and mozOrientation for FF) added. rbri Add ScreenOrientation properties angle and type added. rbri Update Various minor optimizations and some code cleanup. rbri Remove Deprecated class SimpleScriptable removed. rbri Remove Deprecated constant BrowserVersion.FIREFOX_78 removed. rbri Remove Deprecated methods CSSStyleSheet.selects(BrowserVersion, Selector, DomElement, String, boolean) and CSSStyleSheet.selects(BrowserVersion, Condition, DomElement, boolean) removed. rbri Fix Various NullPointerExceptions fixed when calculation style properties for the html node itself. Fixes 488. rbri

Release 2.63.0 – July 10, 2022

Type Changes By Fix window.event is a replaceable property. Fixes 487. rbri Fix window.event should return undefined if called outside an event handler rbri Fix Replace all XPath usages from our code because this might be called during dom tree consturction and XPath sometimes fails if the tree got changed during xpath evaluation. Fixes #385. rbri Update A bunch of code refactorings to avoid making inconsistent dom nodes visible in the dom tree. rbri Update Spotbugs annotations used in the code to supress some warnings. rbri Update Upgrade Apache log4j-api to 2.18.0. rbri

Release 2.62.0 – June 02, 2022

Type Changes By Add Introduce HtmlInput.getValue() and HtmlInput.setValue(String). rbri Fix core-js: Fix Object.getOwnPropertyDescriptors by fixing missing scope definitions. Thanks to Rural Hunter. rbri Fix core-js: Fix ClassCastException when using StringBuilder/Buffer. RhinoTeam Fix core-js: Fix typeof for native classes with shared global scope. RhinoTeam Add Introduce new abstract class HtmlSelectableTextInput to to share text selection and typing support. rbri Fix Correct the length of the resulting ArrayBuffer for XMLHttpRequest having a response type of 'arraybuffer' if the response is gzip compressed. This also fixes an ArrayIndexOutOfBounds exception. rbri Update WebRequest.getParameters() normalizes null values to empty strings. Fixes 223. rbri Fix WebRequest.getParameters() now takes care of explicit set parameters for get requests also. Fixes 223. rbri Fix Ignore invalid css selectors (inside pseudo not) instead of throwing an exception. Fixes 483. rbri Fix core-js: Code cleanup and minor optimizations. rbri Fix core-js: Better handling of Callables in NativeConsole. rbri Fix Node.getRootNode() fixed for DocumentFragment itself and fragment children. rbri Fix Window is no longer a callable. Fixes 482. Thanks to Rural Hunter. rbri Fix Window.postMessage now supports arbitary js objects as message instead of converting them into strings. Thanks to Thorsten Wendelmuth. rbri

Release 2.61.0 – April 25, 2022

Type Changes By Add String.toLocaleLowerCase() takes care of provided locale. rbri Add Button/Input formNoValidate propery added. rbri Fix ValidityState.patternMismatch fixed. rbri Fix Dispatching custom events now works for all DomNode's. This fixes also a NPE when running the htmx 1.7.0 test suite. rbri Add Node.getRootNode() added. rbri Add Support for :focus-within and :focus-visible pseudo selectors added. rbri Fix core-js: Did another hack in the code to tread const in for-of loop's like let. Fixes 449. rbri Fix neko: Some missing end-of-file checks added (this fixes possible IndexOutOfBounds exceptions). rbri Fix neko: Possilbe OOM exception with broken input fixed. rbri Fix core-js: JSON.stringify() fixes. rbri Remove HTMLCollection IE only methods nextNode() and reset() removed. rbri Fix Bunch of fixes for HTMLCollection and NodeList properties. rbri Update Use NativeConsole from core-js instead of our own implementation. As a side effect, WebConsole.Formatter is no longer supported. rbri Fix core-js: Using subarray() on a subarray produces incorrect results. Fixes 476. Thanks to Rural Hunter. rbri Fix Add missing delegate methods to WebResponseWrapper. Fixes 471. Thanks to Rural Hunter. rbri Update Improved method and vaiable naming at some places. Thanks to Bharatwaaj Shankaranarayanan. rbri Update INCOMPATIBLE CHANGE: Class MediaList was moved from package com.gargoylesoftware.htmlunit.javascript.host.dom into package com.gargoylesoftware.htmlunit.javascript.host.css. Fixes 360. rbri Add New method WebRequest.getParameters() returning all parameters (from the url and the body if available). This change was required to fix some issues with Spring MockMVC. Fixes 223. rbri Add Implementation of CSSPageRule selectorText setter added. Fixes 360. rbri Add cssparser: Support page rule setSelectorText(). rbri Fix docu: various fixes regarding using the sonatype snapshot repository. rbri Fix Running the test suite fails on some newer maschines because Jetty is not happy with tread pool limits setups in use. Fixes 462. Thanks to Rural Hunter. rbri Fix 'Origin' header added to same-origin non-GET requests. Fixes 461. Thanks to Rural Hunter. rbri

Release 2.60.0 – March 20, 2022

Type Changes By Fix core-js: ES2017 Object.getOwnPropertyDescriptors() implemented. RhinoTeam Fix core-js: Fix Object.assign when undefined value and inextensible. RhinoTeam Fix Worker.terminate() stub added. rbri Fix CanvasRenderingContext2D ignores unknown colors. rbri Fix HtmlFileInput.setValueAttribute(String) now handles an empty input as no file. Fixes 383. rbri Fix Make sure template content is not added to the dom during parsing; only to the content document fragment. Fixes 455. rbri Fix Image.prototype setup fixed. Fixes 451. rbri

Release 2.59.0 – March 5, 2022

Type Changes By Update Polyfill support documented. rbri Update Dedicated documentation of the WebClient/WebClientOptions and some more documentation updates. rbri Add Make sure to read sufficient byte for the encoding sniffer when the response is gzip encoded. Fixes 452. rbri Add Handle bom header also for gzip'ed responses. Fixes 450. rbri Add New web client option setProxyPolyfillEnabled() to automatically load a polyfill for the proxy api into the client. rbri Fix core-js: regex sticky support împlemented. rbri Fix core-js: improved error msg about unsupported regex flags. rbri Fix Jobs sheduled with the same targetExecutionTime are now processed in sheduling order. Fixes 369. rbri Add New web client option setFetchPolyfillEnabled() to automatically load a polyfill for the fetch api into the client. rbri Fix FileReader readAsArrayBuffer() and readAsText() are working for blobs also. rbri Update Upgrade commons-codec to 1.15. rbri Add Introducing a ClipboardHandler configurable at the WebClient. If you need clipboard support for entry fields set this to an AwtClipboardHandler. rbri Add Element.toggleAttribute() added. Thanks to Anton Demydenko. rbri Update Upgrade Jetty to 9.4.45.v20220203. rbri Fix Document.body setter accepts Framesets. Fixes 441. rbri

Release 2.58.0 – February 4, 2022

Type Changes By Update neko: Switch to xerces 2.12.2. rbri Fix asNormalizedText() uses the default style to determine blocks if css is disabled. Fixes 439. rbri Update HtmlUnitScriptable code cleanup. rbri Update SimpleScriptable is deprecated, please use HtmlUnitScriptable instead. rbri Fix Various fixes for the handling of select options when the select property changes. rbri Fix checkValidity returns correct value for radiobuttons checked by js or the user. rbri Fix checkValidity returns correct value if the checkbox was checked by js or the user. Fixes 438. rbri Add core-js: Object.hasOwn added. RhinoTeam Fix core-js: Support optional variable binding in catch. RhinoTeam Fix core-js: RegEx handles {0} quantifier with max of zero correctly. RhinoTeam Add core-js: Date ctor now respects the timezone. Fixes 423. rbri Add core-js: Promise.allSettled() added. RhinoTeam

Release 2.57.0 – January 23, 2022

Type Changes By Add Quota simulation added to localStorage. rbri Fix innerText ignores title content in most cases. rbri Fix NPE when using the console in a special scenario fixed. rbri Fix Formaction, formmethod, formtarget and formenctype no longer ignored on button without type attribute. Fixes 436. rbri Fix Fix duplicate classes inside our javadoc. Fixes 435. rbri Fix The caching algorithm now observe the max-age headers. Fixes 432. Ashley Frieze Add HTMLOutputElement form property added. rbri Update htmx testsuite changed to version 1.6.1 added. rbri Update Flash is no longer available in IE. rbri Fix innerText ignores script children. rbri Fix Script tags in DOMParser-created documents are not executed when adding to pages. rbri Add setCustomValidity() added. rbri Fix Button of type submit/reset button does not submit if the onclick handler disables the button for Chrome/Edge. rbri Fix Submit/Reset button does not submit if the onclick handler disables the button. rbri Add Form noValidate property added. rbri Fix Fix validation of decimal min/max/step values in number input. Michael Lueck Add Element.closest() function added. rbri Update Some text added to the web page to clarify js disable option. rbri Add willValidate property added. rbri Add htmx testsuite version 1.5.0 added. rbri Fix Adjust selection if the selected option gets removed. rbri Fix Fix validation for email input fields. Michael Lueck Fix The browser locale (language) is now forwarded to the JS engine; this fixes String.toLocaleLowerCase() if the locale is different from en. rbri Update File.lastModifiedDate uses the browser locale (language); same for Date.toLocalDateString and toLocalTimeString. rbri Update Upgrade Apache log4j-api to 2.17.1. rbri

Release 2.56.0 – December 12, 2021

Type Changes By Fix Fix charCode/keyCode for KeyPressEvent's when simulating Firefox. rbri Fix core-js: Fix Array.from when called with a sparse array. RhinoTeam Update core-js: Improved BitInt support. RhinoTeam Fix core-js: Fix return value of __lookupSetter__ with prototypes. RhinoTeam Fix core-js: Fix regression when setting __proto__. RBRi Fix core-js: Fix some potential NPEs in Parser.java. RhinoTeam Fix core-js: Fix invalid single quotes in French messages. RhinoTeam Fix Some fixes for the code samples on the getting started page. Thanks to Harald Albers. rbri Add cssparser: Support for dimensions turn and quater added. rbri Add cssparser: hsl/hsla support added. rbri Update cssparser: Improved color parsing for rgb/rgba. rbri Fix Fix request url encoding for script src. Thanks to leeyazhou. rbri Update FIREFOX_78 is now deprecated, use FIREFOX_ESR instead. rbri Update FIREFOX_ESR updated to Firefox 91. rbri Fix core-js: Fix for compilation or try statements. RhinoTeam Fix Links to issues and pulls on htmlunit webpage changes-report.html corrected. Fixes 405. rbri

Release 2.55.0 – November 14, 2021

Type Changes By Fix core-js: Fix problems with null "this" parameters in Function.prototype.call, Function.prototype.apply, Function.prototype.toString, and Object.prototype.toLocaleString. RhinoTeam Fix core-js: Messages now fall back to en in every case. RhinoTeam Fix core-js: Fix support for BigInt in Hashtable RhinoTeam Update core-js: Improved JDK 17 support. RhinoTeam Update core-js: Replace 'new Integer/Double/Long' by Integer/Double/Long.valueOf. RhinoTeam Update neko: Switch to xerces 2.12.1. rbri Fix Text content based width calculations in ComputedCSSStyleDeclaration now using the getVisibleText() method to come closer to real browsers (e.g. whitespace is now removed). Fixes 384. rbri Update neko: Switch to jUnit 5. rbri Remove SimpleScriptable#setHtmlElement removed. rbri Remove Deprecated method DomNode.asText() removed. rbri Add HTMLElement enterKeyHint property added. rbri Update HtmlSerializerVisibleText is now a bit more customizable. Fixes 399. Thanks to cdalexndr. rbri Fix Plus sign was replaced by a blank when found inside a data url. Fixes 403. rbri Fix HtmlSerializerVisibleText handling of different white-space style definitions improved. Fixes 397. Thanks to cdalexndr. rbri Add Separate documentation page for proxy setup and authentication. rbri Add Support socks proxy authentication. Fixes 394. rbri

Release 2.54.0 – October 17, 2021

Type Changes By Update core-js: Improve compile speed in some cases. RhinoTeam Update core-js: Avoid unnecessary arrayCopy in Kit.readStream, when initialBufferCapacity matches stream length. RhinoTeam Update core-js: Classcache must honor current security context. RhinoTeam Update core-js: Optimized XmlProcessor toXmlNewlines. RhinoTeam Fix Fix innerText when the element has svg children. rbri Add HTMLElement.outerText added. rbri Fix Fix innerHTML and outerHTML if one child node is a template. rbri Fix neko: Fix some problems when parsing template content. rbri Add Navigator.languages added. rbri Add A short section about 'Multithreading/Threads Pooling' added to the web page. rbri Add WebClient.setExecutor(ExecutorService) added to make threading more flexible. rbri Update Use a CachedThreadPool instead of a FixedThreadPool for our executor service because the number of WebSocket threads might block the whole execution otherwise. Fixes 390. Thanks to Dennis Duysak. rbri Fix Add missing support for XmlHttpRequest responseType and response properties. Fixes 388. rbri Fix Add missing request browser headers when setting location from js. Fixes 386. Thanks to Rural Hunter. rbri Fix Xpath case sensitive processing was broken if an string inside the xpath contains []() or @. Fixes 386. rbri Fix Setting the value of an file input to an empty string should not trigger the on change. Fixes 383. rbri Fix core-js: Fix processing of SCRIPTABLE_UNDEFINED when used in string concatenation. rbri

Release 2.53.0 – September 18, 2021

Type Changes By Fix XMLHttpRequest.send() has to serialize the body value if it is Document. Fixes 374. rbri Fix Finally support getting and setting style properties via elem.style['property-name'] notation. rbri Fix Style property vertical-align now accepts also "baseline", "sub", "super", "text-top", "text-bottom", "middle", "top", "bottom", "inherit", "initial", "revert"and "unset". Fixes 380. rbri Fix NativeMap's Map.entries() emulation no longer returns NativeMap.NULL_VALUE instead of actual null instance. rbri Fix Use the CssErrorHandler configured at the WebClient for parsing inline styles also. Fixes 378. rbri Fix Assigning URL.search has to encode the given string. rbri Fix If an URLSearchParams object is constructed from an URL all the changes have to update the url also. Thanks to cdalexndr. rbri Fix URLSearchParams js object misses initialization of parent and prototype. Thanks to cdalexndr. rbri Fix Fix detail value for PointerEvents. rbri Update Dependency HttpClient test-jar no longer required for the test suite. rbri

Release 2.52.0 – July 25, 2021

Type Changes By Add More detailed tests and some fixes for HtmlArea processing. rbri Update core-js: Two minor code optimizations regarding ConsString handling. rbri Update core-js: Delegator handling required for HtmlUnit is now part of Rhino. rbri Update core-js: Remove some no longer required changes from our Rhino fork. rbri Update Use our own simple Shape2D classes to reduce the java.awt dependencies. rbri Update Use our own simple color class to reduce the java.awt dependencies. rbri Remove Element behaviors and HTML components (HTCs) have been removed from the code base. It was removed more than 5 years ago from IE10. (https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/compatibility/hh801216(v=vs.85)?redirectedfrom=MSDN) rbri Update The new Apache commons-io to 2.11.0 is available but we are still at 2.20.0 because the new version seems to have an regression (https://issues.apache.org/jira/browse/IO-744). rbri Update SVGMatrix no longer requires java.awt.geom.AffineTransform. Hope that helps a bit on android. rbri Fix CSSImportRule.styleSheet now returns the imported style sheet instead of the importing one. Fixes 360. Thanks to Frank Danek. rbri Add CSS.supports() added - returns always true for now. rbri Update Inline styles are now parsed by the htmlunit-cssparser. rbri Update Upgrade Jetty to 9.4.43.v20210629. rbri Fix CSSStyleDeclaration.item property added. Fixes 360. Thanks to Frank Danek. rbri Fix CSSStyleDeclaration.length is now correct for stylesheets. Fixes 360. Thanks to Frank Danek. rbri Fix CSSGroupingRule.insert() now sets the parent rule for the inserted rule. Fixes 360. Thanks to Frank Danek. rbri Add PageRule style and selectorText property added. Fixes 360. Frank Danek Fix Improved PageRule support. Fixes 360. Frank Danek Add CSSStyleDeclaration.parentRule property added. Fixes 360. Frank Danek Fix Various CSS formatting fixes. Fixes 360. Thanks to Frank Danek. rbri Fix XMLHttpRequest-abort() triggers an error in Chrome/Edge if the send is aborted. Fixes 365. rbri

Release 2.51.0 – July 04, 2021

Type Changes By Fix XMLHttpRequest-abort() sets the state back to 0 and the webResponse to a network error. Fixes 365. rbri Fix core-js: Various fixes for undefined. RhinoTeam Fix core-js: Support ES2019 JSON superset. RhinoTeam Fix core-js: globalThis implemented. RhinoTeam Fix core-js: Fix bug when calling function on custom global object. RhinoTeam Add CSSConditionRule.conditionText added (for CSSMediaRule). Fixes 360. Thanks to Frank Danek. rbri Add CSSGroupingRule.cssRules, .insertRule() and .deleteRule() added (for CSSMediaRule). Fixes 360. Thanks to Frank Danek. rbri Fix CssParser: bring formatting closer to the browser. rbri Fix MediaList default toString() now prints the media text. Fixes 360. Thanks to Frank Danek. rbri Fix Assigning a value to CSSRule.cssText is a no op. Fixes 360. Thanks to Frank Danek. rbri Add HtmlImage.getSrc() added. Thanks to Frank Danek. rbri Add HtmlInput.getSrc() and HtmlImageInput.getSrc() added. Thanks to Frank Danek. rbri Fix INCOMPATIBLE CHANGE: HtmlImageInput.getSrcAttribute() returns the plain value of the source attribute. Use HtmlImageInput.getSrc() if you need the full qualified url. If your code uses HtmlImageInput.getSrcAttribute() you have to replace this with HtmlImageInput.getSrc(). Thanks to Frank Danek. rbri Fix XMLHttpRequest preserves the content type header if sending a file an the header was set from the javascript. Fixes 359. rbri Fix Improved ComputedCSSStyleDeclaration regarding height and width for empty span's. Thanks to Alex Gorbatovsky. rbri Fix Improved ComputedCSSStyleDeclaration regarding image height and width. Thanks to Alex Gorbatovsky. rbri Fix Improved ComputedCSSStyleDeclaration regarding image height and width. Thanks to Alex Gorbatovsky. rbri Add HtmlImage.getWidthOrDefault() and HtmlImage.getHeightOrDefault() added. rbri Fix Frameset/HTMLTableSectionElement/HTMLTableCaptionElement outerHTML property is setable. rbri Fix Translate response charset GB2312 to GBK like browsers do. Fixes 358. Thanks to tyuxue. rbri Fix Setting window.clientInformation now works correct for Chrome/Edge and IE. rbri Fix Setting window.innerHeight was broken because of an typo for a long time. rbri Fix Properties without a setter defined are no longer setable - this was a hack introduced for IE6 and is no longer valid. rbri Fix Document.body is setable. rbri Fix AudioParam value property is writable. rbri Add core-js: All "new Error" instances have a "stack" even if they are not thrown. RhinoTeam Fix core-js: A number of small spec compliance issues with all the Error classes are fixed. RhinoTeam Fix core-js: Make sure that the "name" and "length" properties of BaseFunction can have their attributes be modified and be deleted if so configured. RhinoTeam Add core-js: Template support added. Fixes 296. RhinoTeam Fix core-js: Object.seal/freeze/isSealed/isFrozen logic got a few fixes. RhinoTeam Fix core-js: Support indexed accessor properties. RhinoTeam Add core-js: Object.values / Object.entries / Object.fromEntries added. RhinoTeam Update core-js: Refactoring of the slot implementation. RhinoTeam Update Upgrade Apache commons-io to 2.10.0. rbri Fix Page type detection was wrong if no content type header was set and some unicode chars are present in the first bytes of an document. Fixes 357. Thanks to Antoni Reus. rbri Fix ComputedCSSStyleDeclaration height property now returns "auto" for invisible elements. rbri Add A simple version of getInnerHTML added for Chrome/Edge. rbri Fix Console.trace() now prints the call stack. Fixes 179. rbri Update Upgrade Jetty to 9.4.41.v20210516. rbri Fix Fix a possible resource leak if ThreadDeath is thrown when closing the script executor. Thanks to Sergio Moreno. rbri

Release 2.50.0 – May 16, 2021

Type Changes By Fix HTMLElement.innerText implementation is now closer to the spec. rbri Fix core-js: Optimization of the + operator. RhinoTeam Fix core-js: Small optimization for the increment/decrement operator. RhinoTeam Fix core-js: Small optimization for the increment/decrement operator. RhinoTeam Fix Document.contains(node) fixed. rbri Fix Node.contains(node) returns false for null and undefined parameter values. rbri Fix Error.stack lines are separated by LF only. Fixes 284. rbri Add Some links to the 'The Java Web Scraping Handbook' added. rbri Fix No longer throw an exception when DOM event name is used as function name. Fixes 347. rbri Fix core-js: fix duplicate entries of source files in htmlunit-core-js-2.x.0-sources.jar. RhinoTeam Update core-js: toNumeric speed improved. rbri Fix core-js: Number.parseInt and Number.parseFloat are the same as the global functions. RhinoTeam Add core-js: Number.EPSILON implemented. RhinoTeam Add core-js: String.raw implemented. RhinoTeam Fix core-js: Improve LengthOfArrayLike to operate on XMLObject. RhinoTeam Add core-js: BigInt support. RhinoTeam Add Anchor.protocol, Anchor.hostname fixes for various border cases. rbri Add URL properties hash, host, hostname, href, password, pathname, port, protocol, search, username and function toJSON added. Thanks to cdalexndr. rbri Fix core-js: Support numeric separator '_'. rbri Fix URL.toString() now returns the same value as implicit converting. rbri Fix URLSearchParams.toString() now returns the same value as implicit converting. rbri Update Upgrade Jetty to 9.4.40.v20210413. rbri Fix Selection.toString() now returns the same value as implicit converting. Fixes 319. rbri Fix core-js: Improved JSON.stringify() implementation. RhinoTeam Fix core-js: NPE fixed for code like for ({};;); RhinoTeam Fix core-js: Improved shorthand assignment support RhinoTeam Add MediaDevices.getUserMedia() added - but other than in real browsers this always throws an error because MediaStream's are not supported at the moment. rbri Add Navigator.mediaDevices property added. rbri Add Support for https proxies - the Webclient constructors are supporting a proxyScheme now. Fixes 340. rbri Fix Synchronize access to the WebSocketClient from the JettyWebSocketAdapter to avoid NPE. Fixes 310. rbri

Release 2.49.1 – April 11, 2021

Type Changes By Fix Clicking an anchor was always calling the attachment handler (if set). This was a regression from anchor download attribute support. rbri

Release 2.49.0 – April 11, 2021

Type Changes By Fix Fix :required and :optional pseudo classes to work with all html elements supporting the 'required' attribute. rbri Fix HtmlDetails.asNormalizedText() and HtmlDetails.asVisibleText() fixed. rbri Add Support for the CSS3 ':invalid' pseudo class added. Thanks to Uberto Barbini. rbri Add HTMLDetailsElement supports setting the open property. Fixes 334. rbri Add Method HtmlFileInput.setDirectory(File) added to support input elements with type file and webkitdirectory attribute. Fixes 248. rbri Fix Cookies generated from client code now sent to subdomains also. Fixes 333. rbri Update Anchors having the download attribute set are now passing the response into the AttachmentHandler if there is one defined. rbri Fix core-js: Make variable which has been defined null available in script. RhinoTeam Fix core-js: Speed of bitwiseNOT improved. RhinoTeam Fix core-js: Copying nodes in an XML tree no longer removes the source node. RhinoTeam Fix core-js: Object.assign fixed. RhinoTeam Update Documentation for the animation frame support added. rbri Update Upgrade Jetty to 9.4.39.v20210325. rbri Fix Execution of deferred scripts might fail if one script removes another. rbri

Release 2.48.0 – March 20, 2021

Type Changes By Fix HtmlNumberInput checkValidity() fixes. rbri Update Upgrade Apache log4j-api to 2.14.1. rbri Add CI build for pull requests is available at https://jenkins.wetator.org/job/htmlunit/view/change-requests/. rbri Update Upgrade Apache commons-lang3 to 3.12.0. rbri Update Upgrade Jetty to 9.4.38.v20210224. rbri Fix core-js: Array length limit check fixed. RhinoTeam Add core-js: Exponentiation operator support added. RhinoTeam Add FAQ updates. rbri Add Documentation for image file format support added. rbri Update A bunch of improvements for the CanvasRenderingContext2D.drawImage() implementations. rbri Fix Improved handling of floats in CSSStyleDeclaration during value conversion. Fixes 302. Dennis Duysak Fix core-js: Addition with string literal is now closer to the ECMAScript spec. RhinoTeam Update Upgrade Apache commons-net to 3.8.0. rbri Add DomNode#asNormalizedText() added to provide a more meaningful and stable normalization. DomNode#asText() is now deprecated. rbri Update HtmlSerializerVisibleText moved into separate package 'com.gargoylesoftware.htmlunit.html.serializer'. rbri Add Image comparison integrated into our test environment based on https://github.com/romankh3/image-comparison. We are able now to run the CanvasRenderingcontext2D test now as part of our CI build (and found already some issues) rbri Fix Fix the font size used by the AwtRenderingBackend implementation. rbri Fix Fix the AwtRenderingBackend implementation of clearRect to make it transparent instead of white. rbri Add Two convenience methods added: WebClient.loadHtmlCodeIntoCurrentWindow(String) and WebClient.loadXHtmlCodeIntoCurrentWindow(String). Fixes 271. rbri Fix Handle the anchor download property like Shift/Ctrl click - open a new window containing the downloaded content as UnknownPage. Fixes 309. rbri Fix HTMLInputElement.src is now setable also. Fixes 309. rbri Fix HTMLInputElement.src now returns the value in the context of the page. rbri

Release 2.47.1 – February 7, 2021

Type Changes By Fix neko: Fix a regression from the improved table parsing done in 2.44.0. rbri

Release 2.47.0 – February 7, 2021

Type Changes By Fix Defer attribute of scripts was ignored. rbri Fix Window.scroll()/scrollTo()/scrollBy() now triggers a scroll event. Fixes 282. rbri Fix core-js: Reject old octal's in property names. RhinoTeam Fix Location.reload() reloads to the wrong address when invoked across frames. Thanks to Atsushi Nakagawa. rbri Fix Return a rejected Promise rather than throw errors for all the methods in SubtleCrypto. Thanks to Atsushi Nakagawa. rbri Fix InputEvent constructor fixed. rbri Fix core-js: Make property __proto__ writable for functions also. Thanks to Atsushi Nakagawa. rbri Fix core-js: Make property only having a getter readonly. RhinoTeam Fix core-js: Make message handling variadic. RhinoTeam Fix KeyboardEvent constructor fixed. Fixes 293. Thanks to Joerg Werner. rbri Fix Fixes for (re) attaching iframes. Fixes 285. rbri Fix Fix handling of removal of the src attribute from frames. rbri Fix Referer header url is without ref part. rbri Fix Improved content sniffing for html pages. rbri Fix The invocation order of events added to XMLHttpRequest, through both addEventListener() and on-handlers is fixed, to be more consistent with major browser such as Chrome / FF / IE, as well as other events already implemented in HtmlUnit that use EventTarget's framework. Thanks to Atsushi Nakagawa. rbri Fix Properties oncopy, oncut, onpaste, classList and hasAttribute, onselectionchange, ontransitioncancel,ontransitionend,ontransitionrun and ontransitionstart fixed for many elements. rbri Fix Various fixes for body element properties. rbri Fix Setting onload attribute on body forwards to window. rbri Remove Deprecated method HtmlLabel.getReferencedElement() removed. rbri

Release 2.46.0 – January 2, 2021

Type Changes By Fix core-js: Fix bug with node position in labeled loops. RhinoTeam Fix core-js: JSON.stringify with no arguments should return undefined. RhinoTeam Fix core-js: JSON.stringify with more than 3 arguments should respect the first 3 arguments. RhinoTeam Fix Fix detection of supported javascript types. rbri Add OWASP dependency-check added to the build process. rbri Fix Document.cookies setter called with with blank does not reset the cookies in CHROME/EDGE. rbri Fix core-js: Fix handling of MemberBox functions in getOwnPropertyDescriptor. rbri Fix core-js: Fix Error.captureStackTrace(myError). rbri Fix core-js: Fix __lookupGetter__/__lookupSetter__ implementation. rbri Add Support individual timeout settings for XMLHttpRequest. rbri Update Processing of href changes is synchronous if only the hash was changed. rbri Update Improved performance due to avoiding Script conversion into String only for naming the action. Markus Heiden Fix core-js: Fix comment parsing in try and catch statements. RhinoTeam Fix core-js: Make type checking and casting a bit more generic to provide better error messages. rbri Fix Various fixes for handling of xml nodes by css selectors. rbri Fix Element.getElementsByTagName is case sensitive for xml nodes. rbri Fix CSS tag name selector is case sensitive for xml nodes. rbri Fix CSS selector for hyphen separated attribute values '|=' now works as specified. rbri Fix core-js: Fix parameter handling for Object.assign. rbri Fix core-js: Fix the (confusing) exception msg if Object.prototype.setPrototypeOf is called with less than two parameters. rbri Fix core-js: Fix JSON.stringify on a RegExp object; RegExp object is no longer callable. RhinoTeam Fix core-js: Math.max/min - each element coerced. RhinoTeam Add Support setting the USER_AGENT header per WebRequset. Thanks to Dargonfly. rbri Add Constructor improved for StorageEvent, TimeEvent, TouchEvent, TrackEvent, TransitionEvent and WheelEvent. rbri

Release 2.45.0 – November 12, 2020

Type Changes By Update INCOMPATIBLE CHANGE: Method signature for AbstractJavaScriptEngine.initialize(WebWindow, Page) changed, the method requires now the page as second parameter. rbri Add Property composed added to Event. rbri Fix Properties linkColor, aLinkColor, vLinkColor, bgColor, and fgColor moved from HtmlDocument to Document. rbri Fix CssParser: Generate correct type for rem dimensions. rbri Add CssParser: Support for the dimensions 'ch', 'vw', 'vh', 'vmin' and 'vmax' added. rbri Update CssParser: Back to JavaCC 7.0.4. rbri Update DeviceMotionEvent is available in IE also. rbri Update Upgrade Jetty to 9.4.34.v20201102. rbri Add Thenable prototypes support added. Thanks to Rural Hunter. rbri Add MouseEvent.buttons property added. rbri Update UIEvent handling of view property improved. rbri Fix Event, UIEvent and MouseEvent construction via new now handles the details dictionary more correct. rbri Fix MouseEvent properties clientX. clientY and button are readonly. rbri Add AudioBufferSourceNode.start(), AudioNode.connect(). rbri Add AudioContext.createBufferSource() moved up to BaseAudioContext. rbri Add BaseAudioContext.createBuffer() added. rbri Add GainNode gain property added. rbri Add AudioParam value, defaultValue, maxValue and minValued added. rbri Fix Promise.then() now supports also Thenables. Fixes 260. rbri Fix Validation pattern has to be ignored for empty values. Fixes 261. rbri Add New configuration option AcceptLanguageHeader for the BrowserVersion. rbri Fix Document.open() does not change the location of about:blank pages in FF. rbri Fix Function clear() moved from HtmlDocument to Document. rbri Fix Property all moved from HtmlDocument to Document. rbri Fix Functions captureEvents() and releaseEvents() moved from HtmlDocument to Document for Chrome/Edge/FF/FF78. rbri Fix Properties body, designMode, domain, forms, embeds, links, images, plugins, scripts, anchors and applets moved from HtmlDocument to Document for FF/FF78. rbri Fix Functions execCommand(), queryCommandEnabled() and queryCommandSupported() moved from HtmlDocument to Document for FF/FF78. rbri Fix Property parentWindow moved from HtmlDocument to Document for IE. rbri Fix Property onreadystatechange and readyState removed from HtmlScript for IE. rbri Update Upgrade Apache commons-net to 3.7.2. rbri Fix Property onshow is not available in Chrome/Edge. rbri Fix Make sure the js initialization of the new page is finished before the page is visible as enclosed page to the outside. Fixes #68. rbri Add PointerEvent supports altitudeAngle and azimuthAngle property for Chrome/Edge. rbri Update Upgrade Apache HttpComponents to 4.5.13. rbri Fix Method getPage(WebWindow, WebRequest, boolean) has to handle NoHttpResponseException because this internal call is used by the WebDriver (regression from 2.44.0). rbri Update Upgrade Apache log4j-api to 2.14.0. rbri

Release 2.44.0 – October 3, 2020

Type Changes By Update Upgrade Apache commons-net to 3.7.1. rbri Update Upgrade Jetty to 9.4.32.v20200930. rbri Fix Fix Rhino setup to avoid placing lazy load references to 'XML', 'XMLList', 'Namespace', and 'QName' in the window scope. rbri Fix Improved page cleanup when closing the WebClient; there was a leak if the enclosed page has an onbeforeunload handler in place that avoids page unloading). rbri Fix Fix some possible NPE when calling toString from js for Range or Location objects. rbri Update The console.log() output of Promise objects is now similar to Chrome. Thanks to Rural Hunter. rbri Fix core-js: Add missing attribute escaping for String.prototype.big and similar calls. rbri Fix core-js: Make sure the this object is coercible for String.prototype.big and similar calls. rbri Fix core-js: Object() constructor fix for non extensible functions. rbri Fix core-js: TypedArray.prototype.subarray() should not throw an exception if called without parameters. rbri Update CssParser: JavaCC 7.0.9. rbri Update CssParser: JDK 1.8 is now required. rbri Update CssParser: var() support added. Thanks to Christian Morgner. rbri Update CssParser: calc() support added. Thanks to Christian Morgner. rbri Fix Take care of the body if a post request is redirected based on a 307/308 response. Thanks to Anton Demydenko. rbri Fix Setup of the js engine for the DedicatedWorkerGlobalScope improved/fixes. Some strange js errors for scripts running inside the workers are now hopefully gone. Fixes #233. rbri Fix Scripts nodes are not moved out of tables. rbri Fix neko: Fixes for tables inside tables and forms inside tables. rbri Add Added validation based on minlength/maxlength for input types password, search, tel, text, url. Thanks to Anton Demydenko. rbri Add Added validation based on min/max for input types date, datetime-local, month, number, range, time, week. Thanks to Anton Demydenko. rbri Add Added validation based on pattern for input types date, email, password, search, tel, text, url. Thanks to Anton Demydenko. rbri Add Event processing for XMLHttpRequest is rewritten. Events defined using addEventListener are now supported and the triggered events are more correct. Thanks to Thorsten Wendelmuth. rbri Fix Fix NPE during checkbox/radiobutton event handlers without JS engine. Fixes #227. rbri Fix Parameter encoding for string representation of URLSearchParams fixed. rbri Fix core-js: Make __proto__ more closely match the spec. rhino Fix core-js: NativeArrayBuffer slice() length is 2. rbri Fix Possible NPE in HtmlPage.setFocusedEvent() fixed. Fixes #217. rbri Fix DOMParser.parseFromString no longer tries to execute script tags contained in the given input. Fixes #216. rbri Add Support for placeholder-shown / -ms-input-placeholder added. Fixes #212. Thanks to Thorsten Wendelmuth. rbri Update Bunch of updates to be back in sync with the IE11 DateTimeFormat handling. rbri Update Improved height calculation; for elements having a fixed width we will do word wrapping to generate a better height values. Fixes #124. rbri Update Upgrade salvation lib to salvation2 3.0.0. rbri Add Support to send blobs via XMLHttpRequest.send() added. Fixes #209. Thanks to Thorsten Wendelmuth. rbri Add FileReader.readAsDataURL() now works for Blob's also. rbri Add Blob.slice() supported. rbri Add Initial support for new Blob(bits[, options]);. rbri Add FormData.entries() support added. Fixes #205. Thanks to Thorsten Wendelmuth. rbri Fix neko: Setting innerHtml produces sometimes a stack overflow. rbri

Release 2.43.0 – August 8, 2020

Type Changes By Add Initial support for new File(bits, name[, options]);. Fixes #202. Thanks to Thorsten Wendelmuth. rbri Fix File.lastModifiedDate is no longer available in FF. rbri Add Using a node list directly inside a for..of operation is now supported like 'for (var entry of nodeList) {...}'. rbri Update URLSearchParams migrated to Rhino iterators also. Our own iterator implementation is now history. Fixes #200. rbri Update Major rework for our NodeList implementation. The methods entries(), keys(), and values() returning a better iterator implementation (now uses ES6Iterator from Rhino). Outside of some minor fixes this implements for..of support. rbri Update Minor changes of AbstractJavaScriptConfiguration better encapsulate the used maps; internal maps are now concurrent maps and no longer encapsulated as unmodifiable to make access faster. rbri Update ClassConfiguration is changed a bit, the fields propertyMap_, functionMap_, staticPropertyMap_, staticFunctionMap_ and constants_ are now lazy initialized to save some memory. rbri Update Simulated screen resolution is now 1920x1080. rbri Fix Fix prototype of parentElement property for IE. Fixes #199. rbri Fix core-js: Throw if the lastIndex prop of an regex is readonly. rbri Fix core-js: Support RegEx[Symbol.match]() and RegEx[Symbol.search](). rbri Fix core-js: Object.setPrototypeOf() arg[0] has to be coercible. rbri Fix core-js: Reduce auto boxing, make some more methods static and general code cleanup. rbri Fix core-js: String.prototype[Symbol.iterator].call(undefined) has to throw because undefined is not coercible. rbri Fix core-js: Fix String.indexOf and String.includes when searching for an empty string. rbri Fix DOMParser.parseFromString now supports the creation of HTMLDocuments also. Fixes #193. rbri Fix HtmlLink no longer stores the web response. Fixes #195. rbri Fix Improved encoding and BOM handling when loading a stylesheet. Fixes #192. rbri Remove FF60 support removed. rbri

Release 2.42.0 – July 11, 2020

Type Changes By Fix core-js: Fix wrong start object for getter in Object.assign(). rbri Fix core-js: No longer inherit strict mode when parsing a function body. rbri Fix Fix NPE in XMLSerializer.serializeToString(). Fixes #191. rbri Fix Make sure XMLSerializer.serializeToString() serializes all elements of a given document fragment. rbri Fix Respect button 'formnovalidate' attribute. Fixes #189. rbri Fix core-js: Did a dirty hack in the code to disable parts of Rhino's const handling. Hopefully a futher Rhino version will make some progress here and we get real up to date const support. rbri Update core-js: Improved regex range handling. rbri Add core-js: String.trimStart String.strimEnd added. rbri Add core-js: String.fromCodePoint() added. rbri Update core-js: Bunch of fixes for JDK 11. rbri Update core-js: Regular expressions are not functions in the context of string replace. rbri Update core-js: Class 'BodyCodegen' moved into a file. rbri Update core-js: TypedArray constructors are only callable via new. rbri Update core-js: Improved handling of negative ArrayBuffer size. rbri Update core-js: code cleanup; use the RangeError construction helper, avoid autoboxing and new Double() calls. rbri Fix Fix ClassCastException in Document.firstElementChild and Document.lastElementChild for documents with doctype. Fixes 182. rbri Fix Document.readyState should be interactive in DOMContentLoaded event handler. Fixes 180. Thanks to Rural Hunter. rbri Fix The method Crypto.getRandomValues misses a ArrayBufferView byte length check. rbri Fix The method Crypto.getRandomValues has to return the modified array. Fixes 183. rbri Update Upgrade Jetty to 9.4.30.v20200611. rbri Update core-js: Support for ES6 generators was added to Rhino. rbri

Release 2.41.0 – June 6, 2020

Type Changes By Fix core-js: It should be not possible to change the prototype of a non-extensible object. rbri Fix core-js: Fix handling of undefined parameter value in String.normalize(). rbri Fix core-js: Improved regexp parser. rbri Fix core-js: Function.__proto__ property ignores write access. rbri Fix core-js: Fix Object.getOwnPropertyDescriptor for index properties on native strings. rbri Fix Invoking getImageData with coordinates outside the drawing area no longer produces exceptions. Fixes 178. rbri Add Support for setTimeout and setInterval added to DedicatedWorkerGlobalScope. Fixes 177. Thanks to Rural Hunter. rbri Update Maven Fluido Skin used for the web page updated to version 1.9. rbri Fix core-js: Fix for a side effect between different regular expressions. rbri Fix core-js: Many fixes for array calls using this pattern Array.prototype.foo.call(null, ....);. rbri Fix core-js: Do not save/share an instance of NativeArrayBuffer in a static variable because this creates side effects. rbri Fix core-js: An error should be thrown when defining a property for a read-only variable in strict mode. rbri Fix core-js: The values of present properties of a sealed object can be changed as long as they are writable. Fixes 174. rbri Fix core-js: Symbol.length should be 0. rbri Fix core-js: Calling String.substr with undefined as length fixed. rbri Fix core-js: Using a regex like a function should throw a TypeError. rbri Fix core-js: Calling String.split with zero as limit fixed. rbri Update Upgrade Apache commons-io to 2.7. rbri Update Upgrade Jetty to 9.4.29.v20200521. rbri Fix WebResponse.getContentAsString() fails for compressed responses because of the BOM header detection. Fixes 175. rbri Fix Possible ArrayIndexOutOfBoundsException fixed. Fixes 173. rbri Fix HTMLTemplateElement.outerHTML() fixed. rbri Fix Properly print HtmlTemplate's children via asXml. Thanks to Ronny Shapiro. rbri Fix Document getElementById(..) now returns null for elements inside a template tag. Thanks to Ronny Shapiro. rbri Fix Fix NPE getting event handlers without JS engine. Thanks to Ronny Shapiro. rbri

Release 2.40.0 – May 2, 2020

Type Changes By Add New WebClientConfiguration option ConnectionTimeToLive added. Fixes 161. rbri Fix Fix for removing event listener from body. rbri Fix Improve focus and blur handling. fdanek Fix HtmlLabel.getReferencedElement() is now deprecated. Use HtmlLabel.getLabeledElement() instead. fdanek Fix Label form property has to work based in it's own form in IE11. fdanek Fix Label control property has to look for a nested labelable control as fallback if no for attribute is given. Additionally it is not available in IE11. fdanek Fix Better handling of recursive iframes content. Fixes 156. rbri Fix Fix exception when handling invalid body element with no JS engine. Thanks to Ronny Shapiro. rbri Fix Fix frameset exception with no JS engine. Thanks to Ronny Shapiro. rbri Fix Label form property has to work based on the element labeled by the label. rbri Fix Fix possible ConcurrentModificationException when cloning an HtmlPage / HtmlElement. Thanks to Ronny Shapiro. rbri Add Respect Content-Security-Policy: frame-ancestors when loading frame content. rbri Add Respect X-Frame-Options: DENY when loading frame content. rbri Fix Fix SvgScript NPE when script engine not available. Fixes #155. Thanks to Ronny Shapiro. rbri Update Upgrade Jetty to 9.4.28.v20200408. rbri Fix Fix NPE in image onload handler processing. rbri Add HTMLFormElement.requestSubmit() for FF and CHROME added. rbri Add New method AttachmentHandler.handleAttachment(WebResponse) added. By implementing your own AttachmentHandler you now can process the attachment response by your code without opening a new WebClinet window. rbri

Release 2.39.0 – April 5, 2020

Type Changes By Fix Neko: fix encoding of blanks in file uri's. rbri Fix DedicatedWorkerGlobalScope now extends EventTarget. Fixes #150. rbri Update Upgrade Apache commons-lang3 to 3.10. rbri Add Functions atob() and btoa() added to the worker scope. rbri Add FrameContentHandler added to support stop loading of frame content. rbri Fix Make the shutdown processing of the JavaScriptEngine more robust to avoid exceptions when accessing the engine while the shutdown was already triggered. Fixes #136. rbri Add CanvasRenderingContext2D transformation handling fixed. rbri Add AwtRenderingBackend log improved, every backend is now identified by an unique number. rbri Add Detailed debug log added to the AwtRenderingBackend. rbri Fix Text positioning in CanvasRenderingContext2D.fillText() fixed. rbri Fix CanvasRenderingContext2D.save() does not set the saved values to defaults. rbri Fix CanvasRenderingContext2D.save() / restore() takes care of the clip region. rbri Remove Enum com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName removed. rbri Add FIREFOX (latest) support added. Like we already do for CHROME we will support the recent version of Firefox in addition to at least one ESR version. rbri Fix HtmlLabel.getReferencedElement() now also supports HtmlButton, HtmlMeter, HtmlOutput, HtmlProgress, HtmlSelect and HtmlTextArea in nested variant and ignores not labelable elements in both variants. fdanek Fix WorkerGlobalScope.importScripts() now checks the content type of the script to import. Fixes #140. rbri Add First simple implementation for the anchor download and shape property added. rbri Update BrowserVersion FIREFOX_60 is now deprecated. rbri Remove Deprecated constructor WebRequest.WebRequest(URL, String) removed. rbri

Release 2.38.0 – March 8, 2020

Type Changes By Update Upgrade Apache HttpComponents to 4.5.12. rbri Fix Improved color parsing to support hsl colors also for CanvasRenderingContext2D strokeStyle and fillStyle property. Fixes #140. rbri Fix Make the type() processing more robust if the value of the control was changed directly without updating the selection. Fixes #142. rbri Fix Major parts of CanvasRenderingContext2D.clip implemented. Fixes #140. rbri Fix Use the correct color table for CanvasRenderingContext2D.fillStyle and CanvasRenderingContext2D.strokeStyle. Fixes #140. rbri Fix Fix StringIndexOutOfBoundsException when calculation text for dom nodes. Fixes #134. rbri Fix Support linking of submittable elements to a form via the form attribute. Fixes #132. rbri Fix Methods firstElementChild() and lastElementChild() are no longer failing because of a ClassCastException when calling for an xml document. rbri Add CanvasRenderingContext2D.putImageData() implemented. Fixes #140. rbri Add ImageData constructor implemented. rbri Add CanvasRenderingContext2D.createImageData(ImageData) implemented. Fixes #140. rbri Add CanvasRenderingContext2D.createImageData(width, height) implemented. Fixes #140. rbri Fix CanvasRenderingContext2D.getImageData() takes a snapshot of the current context. rbri Add Support for link property 'relList' implemented. rbri Add Support for area property 'relList' implemented. rbri Add Support for area property 'rel' added. rbri Add Support for anchor property 'relList' implemented. rbri Add Support for anchor property 'username' and 'password' added. rbri Fix HtmlNumberInput accepts decimals. Fixes #123. rbri Add New switch WebClientOptions.isWebSocketEnabled() added. This removes the WebSocket slot from the Window object. If you disable WebSocket support for your client, the jetty libraries are no longer requires. Fixes #122. rbri Fix AttachmentHandler.isAttachment(WebResponse) has to check case insensitive. rbri Fix Neko: Make sure rewind is working in all cases. Fixes neko #5. rbri

Release 2.37.0 – January 28, 2020

Type Changes By Fix Security: prevent Rhinos access to Java resources; e.g. call java methods. rbri Update Upgrade Apache HttpComponents to 4.5.11. rbri Fix XSLTProcessor now respects the xsl:output indent='yes' setting when simulating chrome. Fixes #118. rbri Update Upgrade Jetty to 9.4.26.v20200117. rbri Add DocumentFragment.getElementById() added. rbri Fix DocumentFragment methods childElementCount(), firstElementChild(), and lastElementChild() are no longer failing because of a ClassCastException. rbri Update Resync core-js with rhino trunk (2019-11-25). This includes some improvements to iterable processing. rbri Fix The entity processing was broken if an '&' was in front of a tag like </div>&X</div>. Fixes #79. rbri Fix Promise.all() and Promise.race() are now able to work with iterables instead of only supporting arrays. Fixes #114. rbri Update Upgrade Jetty to 9.4.25.v20191220. rbri Update Try to make stopping of the WebSockets more robust. rbri Add Some documentation added for file upload. Fixes #112. rbri Update Upgrade Apache log4j-api to 2.13.0. rbri Add CanvasRenderingContext2D.globalAlpha implemented. rbri Fix Angle handling for CanvasRenderingContext2D ellipse and arc fixed. rbri Fix No longer use annotations for the implementation of isReadOnlySettable to make the code simpler and faster. Fixes #107. rbri Add CanvasRenderingContext2D.ellipse(..) implemented. Fixes #92. rbri Update DOMRectList is visible. rbri Update Resync core-js with rhino trunk (2019-11-25). This fixes a bug regarding isExtensible handling. rbri Fix Browser specific vAling handling fixed. rbri Fix Do not create js peers during html parsing if js is disabled. rbri Update Some neko updates and some caching to use less objects and memory during html parsing. rbri Add Firefox 68 ESR simulation now available. rbri Fix More robust color parsing. Fixes #98. rbri Add CanvasRenderingContext2D.closePath() implemented. Fixes #92. rbri Update Upgrade Jetty to 9.4.24.v20191120. rbri Add MockWebConnection.getRequestedUrls() added. Fixes #91. rbri Fix Respect form 'novalidate' attribute. Fixes #75. rbri Update Resync core-js with rhino trunk (2019-10-19). rbri Fix Img elements in forms are accessible directly using the name also when nested. rbri Fix WebClient#openWindow no longer throws a ClassCastException when called from a non html page. Fixes #84. rbri Fix Wrong encoding used in window.atob(). Fixes #80. Thanks to Rural Hunter. rbri Fix File input with required attribute now validates correctly. Fixes #76. rbri Update Upgrade Apache HttpComponents to 4.5.10. rbri

Release 2.36.0 – August 24, 2019

Type Changes By Update INCOMPATIBLE CHANGE: WebConnection.close() and WebConnectionWrapper.close() are throwing an IOException instead of an Exception now. Thanks to Le Stephane. rbri Update Method isAttachment(WebResponse) moved from Attachment to the AttachmentHandler interface as default method. Based on this you can now overwrite the isAttachment(WebResponse) implementation with your own. rbri Update FIREFOX_52 is deprecated. rbri Fix Correct handling of media properties without values. rbri Add Console.assert(..) added. Fixes #66. rbri Fix Do not start the (Default)JavascriptExecutor if javascript is disabled for the client. Fixes #65. rbri Add New method com.gargoylesoftware.htmlunit.Cache.clearOutdated() to remove outdated entries. rbri Fix Make responses cachable in case the Cache-Control header with max-age or s-maxage overrules the Expires header. Fixes #62. rbri Remove Javascript Proxy stub removed. The class is only a stub an might confuse feature detections code that only checks for existence. Fixes #61. rbri Add Brotli support added. rbri Update Class XPathUtils renamed to XPathHelper. rbri Update Class XmlUtil renamed to XmlUtils and moved to com.gargoylesoftware.htmlunit.util. rbri Update Class TextUtil renamed to TextUtils and moved to com.gargoylesoftware.htmlunit.util. rbri Add ArchUnit added. rbri Fix Log no longer a warning for not supported link types. Instead log more detailed debug messages for this case. Fixes #53. rbri Fix Fix NPE for some unsupported css hacks. rbri Add Add a save() method in TextPage, which knows to save in the same charset as was received in the response. Thanks to Le Stephane. rbri Update Upgrade Apache commons-text to 1.7. rbri Fix HtmlPage.save(File) no longer fails if some linked resources are not available. Fixes #57. rbri Fix Link to sourceforge mailing lists fixed. Fixes #54. rbri Fix MessageEvent.initMessageEvent() port parameter checking fixed. rbri Fix Improved offsetTop calculation. Fixes #48. rbri Fix Trigger the correct event listener if a script tag points to an url that returns 204 (no content). rbri Fix WebSocket onOpen event handler is called with the event as parameter. Fixes #43. Thanks to James Kleeh. rbri Fix WebSocket events are initialized with correct srcElement and origin. rbri Update Cleanup our logging setup; slf4j dependencies removed, log4j2 is now used for all the tests of log output. rbri Fix Fix the referrer and origin header when the request was created from window.location.reload(). Fixes 2015. rbri Add AudioContext.createBufferSource and a simple AudioContext.decodeAudioData added. rbri Fix Revert a minor change to ensure backward compatibility with older jetty versions. Fixes #36. rbri Fix neko: Handle the (invalid) comment close tag '--!>' like the valid one regarding to the spec (https://html.spec.whatwg.org/multipage/parsing.html#comment-end-bang-state). Fixes #38. rbri Fix XMLHttpRequestEventTarget has no ctor. rbri Update Properties onError and onLoad moved from XMLHttpRequest up to XMLHttpRequestEventTarget. rbri Fix Clicking a label with a valid for attribute does not forward the click to the target if the target is disabled. rbri Update Code cleanup and some resource handling fixes for HttpWebConnection. rbri

Release 2.35.0 – April 15, 2019

Type Changes By Update Upgrade Apache commons-lang3 to 3.9. rbri Update Upgrade Apache HttpClient to 4.5.8. rbri Update StackOverflowError during javascript processing are now handled like other javascript errors. Only the JavaScriptErrorListener gets informed. Fixes #24. rbri Update Make the processing of request headers more correct and document the general idea. Fixes #27. Thanks to Joerg Werner. rbri Update Log a warning, if click() is a no-op because the target element is disabled or not displayed. Fixes #28. rbri Fix Fix an error in the url circle detection when loading frame content. Fixes #22. rbri Fix Avoid scientific notation when converting float back to strings (CSSParser) rbri Update Logging documentation updated. rbri Update INCOMPATIBLE CHANGE: JavaScriptErrorListener interface defines one new method warn(String, String, int, String, int). Please add an implementation to your own implementations of this interface. rbri Update INCOMPATIBLE CHANGE: DefaultJavaScriptErrorListener now logs all messages. rbri Add Class SilentJavaScriptErrorListener added. rbri Fix JavaScriptErrorListener is no longer saved from the HtmlUnitContextFactory to be sure to use always the currently configured one. rbri Remove Class com.gargoylesoftware.htmlunit.javascript.StrictErrorHandler removed. rbri Remove Class com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter removed. rbri Fix core-js: some array length border cases fixed rbri Fix core-js: array length null/undefined fixed rbri Add core-js: array includes added rbri Add core-js: array padStart and padEnd added rbri Fix Image handler are processed (again) if an image is imported into a new document. rbri Fix Page of the imported node fixed when importing. rbri Fix There is no need for a window if constructing a new event handler. Fixes 2008. rbri Fix Fix NPE when getting the baseUrl from a page created using DOMImplementation.createHTMLDocument(). rbri Fix Invalid urls with the about protocol (e.g. about:htmlunit) are now throwing a MalformedURLException to be handled like any other IOException. rbri Fix HtmlRangeInput improvements. Fixes 19. rbri Fix Input element with type date now stores the value typed in. Fixes 1923. rbri

Release 2.34.1 – March 4, 2019

Type Changes By Fix Fix insert position for elements with contenteditable='true'. rbri Fix Send 'image/png' as mime type when uploading a png file. Fixes 18. rbri

Release 2.34.0 – Feb 28, 2019

Type Changes By Fix CSS declarations in CDATA sections are not processed for XHtml and Xml pages. rbri Fix Script code in CDATA sections are not processed for XHtml and Xml pages. Fixes 2012. rbri Fix Neko-HtmlUnit parser: entity reference handling rewritten according to the spec. All specified character references are now supported and a bunch of fixes where also made for numeric references. Fixes 2011. rbri Fix ClassList.toggle/add/remove should take care of the HtmlAttributeChangeListener. Fixes 17. rbri Fix Audio node created from js now supports nodeType and nodeName property. Fixes 2010. rbri Update Upgrade Apache HttpClient to 4.5.7. rbri Update Avoid the try to add a response to cache if the response is already from cache or an redirect. rbri Fix Fix caching for redirected calls. Fixes 14. rbri Fix Some fixes for broken attribute processing done in neko-htmlunit. Fixes 258. rbri Update JavaScriptExecutor is no longer serializable. rbri Add FileReader.readAsText() added. Fixes 2007. rbri Update Major cleanup of the htmlunit-cssparser; all the references to the w3c classes are removed. This avoid a lot of instanceof/cast processing and will make it simpler to enhance the parser in the future. rbri Add New method Window.animateAnimationsFrames(). Use this to force one animation cycle. rbri Add Huge improvement for CanvasRenderingContext2D; we have working path handling and transformations now. rbri Update Another Rhino update; Array.fill, Array.keys, Array.entries, and Array.values is now supported. rbri Fix HtmlPage.save(File) and XmlSerializer.save(SgmlPage, File) are using the correct file encoding. rbri Fix No longer fail if the generated bytecode for method exceeds 64K limit; we (Rhino) will fall back to the interpreter mode. Fixes #1989. rbri Update We are using the Map/Set/WeakMap/WeakMap implementation from Rhino now, our own impl is gone. rbri Fix Improved support for insecure socket connections; InsecureTrustManager now extends X509ExtendedTrustManager instead of implementing only X509TrustManager. rbri Fix Fix Promise.resolve() called with an object having no 'then' slot. rbri Fix Fix handling of invalid values in media queries. rbri Fix Browsers are supporting GMT time format for cookie expires parsing. Fixes 1998. Thanks to Rural Hunter. rbri Fix Fix calculation of absolute url from relative one if dots present. Fixes 1995. Thanks to Joerg Werner. rbri Fix Setting the innerHtml has to clear the computed styles to force recalculation based on the new content. Fixes 1993. rbri Fix Map and Set forEach() are using undefined as this context in strict mode. rbri Add Stub impl of DateTimeFormat.resolvedOptions() added. rbri Fix Correct handling of content type 'no-gzip' and 'gzip-only-text/html'. rbri Update Reworked JS event listeners implementation; many incompatibilities with all supported browsers are fixed. Fixes 1984. Thanks to Atsushi Nakagawa. rbri Update Maven Fluido Skin used for the web page updated to version 1.7 rbri

Release 2.33 – Sep 12, 2018

Type Changes By Update INCOMPATIBLE CHANGE: ScriptResult.getNewPage() is no longer available. You can use something like webClient.getCurrentWindow().getEnclosedPage() instead. rbri Update Source repository is on GitHub now. rbri Fix Input tel/search/number now fires the oninput event. Fixes 256. rbri Update Reworked JS event listeners implementation; many incompatibilities with all supported browsers are fixed. Fixes 1984. Thanks to Atsushi Nakagawa. rbri Update Maven Fluido Skin used for the web page updated to version 1.7 rbri Update Improved calculation of the left offset. Fixes 1986. rbri Update We are using the typed array implementation from Rhino now, our own impl is gone. rbri Update Method Date.toUTCString() is available in Rhino; remove our own impl. rbri Fix Fix the order of the windows returned by WebClient.getTopLevelWindows() to be again the same as WebClient.getWebWindows(). Fixes 1979. Thanks to Atsushi Nakagawa. rbri Fix Improved support for javascript named function expressions (core-js). Fixes 1980. Thanks to Atsushi Nakagawa. rbri Fix DomNodeIterator no longer traverses uncles of root node. Fixes 1982. Thanks to Steve Harney. rbri Fix Add missing default delegating methods getContentLength(), cleanUp(), and defaultCharsetUtf8() to WebResponseWrapper. Fixes 1978. Thanks to Atsushi Nakagawa. rbri Update Major cleanup for neko and switch to xerces 2.12.0 rbri

Release 2.32 – July 29, 2018

Type Changes By Fix Event listeners had to be functions, other types are ignored. Fixes 1976. rbri Fix Setting window.clientInformation is ignored in IE. rbri Fix HTMLxxxInput.reset() results in a wrong state of the selection delegate. Fixes 1969. rbri Add FF60 ESR support. rbri Remove FF45 support removed. rbri Fix Many fixes for document.createEvent('xxx') to support the various UI events. rbri Fix Correct handling of additional parameters provided in functions setTimeout/setInterval. Fixes 1966. Thanks to Atsushi Nakagawa. rbri Fix NPE in HtmlTextArea.removeFocus(). Fixes 1964. rbri Fix WebClient default request header should not overwrite request-specific ones. Fixes 1970. rbri Fix Various fixes for the selector specificity calculation (CssParser). Fixes 1962. rbri

Release 2.31 – May 22, 2018

Type Changes By Update core-js is now in sync with the latest Rhino codebase. rbri Update Use Rhino/core-js now es2 mode (instead of using rhinos outdated default mode). rbri Update Use Rhino/core-js Symbol implementation instead of our own one. rbri Fix Various updates/fixes for the typed array support. rbri Fix Set constructor now supports parameters of type iterator also. rbri Add document.fonts added. rbri Update BrowserVersion: deprecate FIREFOX_45. rbri Fix Navigator.doNotTrack fixed, property is available in Chrome too, Window.doNotTrack added for is available for IE. rbri Update Special handling of the GAE environment is no longer required, the JDK8 at GAE has no longer any restrictions. rbri

Release 2.30 – March 25, 2018

Type Changes By Fix Improved clone implementation to take care of references. Fixes 1959. rbri Fix Setting the Map size property is now ignored (or throws a Type error in strict mode). Fixes 1956. rbri Fix Setting the CSSStyleDeclaration length property is now ignored (or throws a Type error in strict mode). Fixes 1956. rbri Add Setters for window.innerWidth/Height and window.outerWidth/Height added. rbri Fix Redirect of head requests should be head requests also. Fixes 1957. rbri Add Use the correct content type when guessing from the '.js' file extension. Fixes 1954. rbri Update Major refactoring of the css handling (selector processing). Every style sheet now has a selector index to speed up style processing. rbri Update We have now our own cssparser (a cleaned up version of the cssparser we have used so far) to be able to change the model classes to better support our use cases. rbri Update getArttibute is optimized for speed in some special cases. rbri Update Local files are now cached using the same rules as server requests (cacheable if date-modified is more than ten minutes in the past) rbri Add Our page cache now takes care of Cache Control headers. Fixes 1952. Thanks to Anton Demydenko. rbri Fix Fix incorrect encoding of consecutive '%' characters in url's. Fixes 1951. Thanks to Hartmut Arlt. rbri Fix RegExp: fix processing of /[]/ and /[^]/. Fixes 1949. Thanks to Atsushi Nakagawa. rbri Handling of invalid processing instructions fixed in neko. rbri Fix Fix some problem to be able to run our test suite with edge. Thanks to Frank Danek. rbri Add JavaScript: WeakSet and WeakMap constructor now supports user defined iterators also. rbri Fix Doing Ctrl+Click on an anchor now opens a new window also if the href is javascript based. rbri Add JavaScript: Setter for history.scrollRestoration added. rbri Fix Fix the broken initialization of the canvas context that empties the canvas every time canvas.getContext("2d") was called. Fixes 1674. rbri Add JavaScript: Set and Map constructor now supports user defined iterators also. rbri Add JavaScript: Array.from() now supports user defined iterators also. rbri Update Samples on page Get Started updated. rbri Fix NPE in com.gargoylesoftware.htmlunit.html.HtmlPage.cleanUp(). Fixes 1946. rbri Add JavaScript: URLSearchParams implementation finished (entries(), keys(), values()). rbri Fix JavaScript: URLSearchParams parser fixed (handling of '=' as first char of a part). rbri Fix JavaScript: Invalid 'Origin' header was sent as part of XMLHttpRequest if the request url was absolute and the page contains a base tag. Fixes 1944. rbri Fix JavaScript: CSSStyleSheet#addRule fixed error handling. Fixes 1943. rbri Fix JavaScript: CSSStyleSheet#addRule fixed return value when simulating ie rbri Fix JavaScript: CSSStyleSheet#insertRule improved error handling rbri Fix JavaScript: CSSStyleDeclaration#cssText throws an NPE when in stylesheet mode rbri Fix JavaScript: CSSStyleDeclaration#cssText usually return a ';' after the last rule rbri

Release 2.29 – December 28, 2017

Type Changes By Add JavaScript: TextEncoder/TextDecoder impl added. rbri Fix JavaScript: MutationObserver fires callbacks asynchronously. Fixes 1940. Thanks to Atsushi Nakagawa. rbri Fix JavaScript: Promise has to provide the same context setup as the rest and call processPostponedActions afterwards. Fixes 1941. rbri Fix If the coords of an image map entry are not valid ignore this entry. Fixes 1939. rbri Fix JavaScript: calling click() from js should always work even if the control is not visible. Fixes 1939. rbri Add JavaScript: Crypto.subtle added. Fixes 1936. rbri Add WebClient.setWebStartHandler() and the interface WebStartHandler added. Create your implementation of this interface to support WebStart links. rbri Add JavaScript: CanvasGradient.addColorStop() added rbri Fix JavaScript: CanvasRenderingContext2D.createRadialGradient() now returns an CanvasGradient rbri Fix JavaScript: CanvasRenderingContext2D.createLinearGradient() now returns an CanvasGradient rbri Fix Check option cssEnabled before downloading a css file (regression from 1927). Fixes 1935. rbri Fix JavaScript: Error.captureStackTrace is not available in FF and IE. Fixes 1840. rbri Fix JavaScript: location.reload uses the same request method like the original request. Fixes 1840. rbri Fix JavaScript: WebSocket constructor call failed with a NPE when called during page construction. rbri Fix JavaScript: fix Number.toLocaleString() to be able to support locale strings like 'en-US'. Fixes 1932. rbri Add JavaScript: performance.navigation.toJSON() added. rbri Add JavaScript: URL.searchParams added. rbri Add New configuration settings webSocketMaxTextMessageSize, webSocketMaxTextMessageBufferSize, webSocketMaxBinaryMessageSize, and webSocketMaxBinaryMessageBufferSize. rbri Add JavaScript: URL constructor and origin property added. rbri

Release 2.28 – November 12, 2017

Type Changes By Fix The link tag now supports the onLoad and the onError handler. Fixes 1927. rbri Fix The link tags are now loaded at page initialization. Fixes 1927. rbri Fix Link tags added to the page from javascript are now resolved directly. Fixes 1927. rbri Update CSS: cssparser updated to 0.9.24. rbri Add JavaScript: document.currentScript added. rbri Fix Selector specificity calculation fixed for selectors using the general sibling combinator (~). Fixes 1925. rbri Fix JavaScript: window.onerror provides now a valid error object. Fixes 1924. Thanks to Colin Alworth. rbri Fix JavaScript: throw a type error if the url property is requested from the WebSocket prototype. rbri Add JavaScript: simple impl for CanvasRenderingContext.fillText added. rbri Fix JavaScript: various fixes for the Promise implementation. rbri Fix JavaScript: writing to an iFrame triggers the onload event now for chrome also rbri Fix JavaScript: navigator.productSub now returns the same value as simulated browsers rbri Fix JavaScript: fix for a strange side effect in Range.getClientRects() and Range.getBoundingClientRect(). Both calls have removed all nodes inside the range from the document. rbri Fix JavaScript: fix handling of negative buffer sizes for the ArrayBuffer ctor. rbri Add JavaScript: getComputedTextLength() support added for svg text elements. rbri Fix JavaScript: document.createElementNS is now able to create svg elements also. rbri Add JavaScript: support NetworkInformation (Chrome only at the moment). rbri Add JavaScript: support FileReader.readAsArrayBuffer(). Fixes 1913. rbri Add JavaScript: support FileReader.readAsDataURL(). Fixes 1912. asashour Fix ProxyAutoConfig: fix isInNet(). Fixes 1911. asashour Fix There is an option for IE that enables/disables the sending of the complete file path when uploading a file. Starting with this version we simulate this in disabled state like the default setting for the internet zone. Fixes 1908. rbri Fix BrowserVersion.clone now copies the system-timezone attribute. rbri Remove INCOMPATIBLE CHANGE: BrowserVersion is final now and all constructors are removed. The only way to create new customized Browser versions is by using the BrowserVersionBuilder. Fixes 1890. rbri Update BrowserVersion setter methods are fluent now. Fixes 1890. rbri Fix DomElement: Fix .getChildElements(). Fixes 1905. asashour Remove Remove deprecated HtmlFileInput.setValueAttribute(String[]), HtmlInput.click(int,int), SgmlPage.getPageEncoding(), WebRequest.setCharset(String) and WebResponse.getContentAsString(String). asashour Fix Fix Location header if it has non-ASCII characters. Fixes 1898. asashour Fix JavaScript: fix ClassCastException in Array.from. rbri Add Support for form attributes formaction, formmethod, formtarget and formenctype added. Fixes 1884. Thanks to Anton Demydenko. rbri Fix JavaScript: fix ClassCastException when calculating offsetHeight. Fixes 1899. Thanks to Christian Rösch. rbri Fix Take care of label elements during event bubbling; they have to trigger a click event for the associated element. rbri Fix JavaScript: fix window.getComputedStyle() pseudo handling if pseudo param starts with double colon. rbri Update We are simulating the 64 bit version of Firefox 52 ESR and CHROME now. rbri Update More appropriate browser appVersion. rbri Fix JavaScript: fix Number.toLocaleString(). Fixes 1892. asashour Add JavaScript: SVGMatrix operations (flipX, flipY, inverse, multiply, rotate, rotateFromVector, scale, scaleNonUniform, skewX, skewY, translate) implemented. rbri

Release 2.27 – June 4, 2017

Type Changes By Fix JavaScript: fix Array out of bounds Exception in insertBefore implementation when calling without any parameters. Fixes 1891. rbri Add JavaScript: implement Array.from(). Fixes 44336828. asashour Update CSS: cssparser updated to 0.9.23. rbri Add JavaScript: implement Element.matches(). asashour Add JavaScript: implement .before(), .after() and .replaceWith(). asashour Add Simulated system time zone is now configurable (BrowserVersion.setSystemTimezone()). Fixes 1827. rbri Fix JavaScript: fix Set/Map with undefined value. Fixes 1886. asashour Fix Stack property was not set when new Error() was called from js. Fixes 1606. asashour Fix Fixed wrong dom tree because of duplicated head element. Fixes 1863. rbri Fix Avoid CCE in innerText when the element contains a SvgElement. Fixes 1883. rbri Fix Various fixes for javascript encoding detection. rbri Fix NPE in StyleSheetList.equivalentValues(). Fixes 1881. Thanks to Carsten Steul. rbri Add HtmlImageInput: add .saveAs(). Fixes 43854916. asashour Fix JavaScript: MouseEvent to support .pageX and .pageY for all browsers. Fixes 1877. asashour Fix JavaScript: fix Object.assign(). Fixes 1875. asashour Fix JavaScript: fix .set() of Typed Arrays. Fixes 1873. asashour Fix JavaScript: fix Typed Arrays construction with null. Fixes 1872. asashour Update WebClientOptions: deprecate .getPrintContentOnFailingStatusCode(). asashour Add JavaScript: implement Audio. Fixes 246. asashour Fix JavaScript: Selection.type implementation fixed for Chrome. rbri Fix JavaScript: document.baseURI calculation fixed for relative href. Fixes 1870. Thanks to Joerg Werner. rbri Fix JavaScript: fix setting .innerHTML. Fixes 43482935. asashour Add JavaScript: implement NodeList.entries(), keys(), values() and forEach(). asashour Fix Neko: fix handling of strange comment syntax supported by browsers. Fixes 1862. rbri Fix JavaScript: fix AbstractList iteration. Fixes 43394489. asashour Fix Neko: fix handling of invalid numeric entity references inside attributes. Fixes 1869. rbri Add JavaScript: add basic support for Range.getClientRects(). rbri Fix JavaScript: fix Map and Set iterator prototype. Fixes 1868. asashour Fix RegExp: fix translation of \0 at the end. Fixes 1867. Thanks to Leszek Hoppe. asashour Add Method HtmlPage.getElementsById(String) added to make simple to detect duplicate id's. rbri Fix JavaScript: fix parameter checking for MutationObserver.observe(). rbri Fix HtmlScript: charset attribute should not be considered. asashour Fix JavaScript: CSSRuleList.item() is supported in all browsers. asashour Remove Remove HtmlKeygen. asashour Add JavaScript: support Object.getOwnPropertySymbols(). Fixes 43263382. asashour Fix HtmlOption: fix .setSelected(). Fixes 1864. asashour

Release 2.26 – April 4, 2017

Type Changes By Fix Handle infinite meta refresh. asashour Fix HtmlOption: fix clicking. asashour Fix HttpWebConnection: fix User-Agent header of CONNECT request. Fixes 1861. asashour Add Applet: initial javascript interaction support added; it is now possible to use the JSObject from the applet to call javascript functions or set attributes. rbri Fix JavaScript: fix __proto__ of the top level object. Fixes 1856. asashour Fix JavaScript: fix Object.getPrototypeOf(). Fixes 1855. asashour Add WebClient: add .getInternals() to listener to WebSockets. Fixes 42982495. asashour Add JavaScript: Set and Map to support .forEach(). asashour Add Object tag now has some applet support. rbri Fix CSS: fix handling :target pseudo class. Fixes 46. asashour Update Deprecate HtmlImage.getComplete(). asashour Update Deprecate HtmlKeygen. asashour Fix JavaScript: WebSocket onError processing was missing. rbri Fix Fix detection of HtmlInput types (IE). asashour Fix Correct file type detection for files with css suffix. Fixes 1858. Thanks to Joerg Werner. rbri Add JavaScript: simple implementation for MediaSource.isTypeSupported added (returns always false). rbri Add WebClientOptions: add option for screen width/height. asashour Update Reduce the number of temp files created when asking images for width/height. rbri

Release 2.25 – February 23, 2017

Type Changes By Update Deprecate SgmlPage.getPageEncoding() and WebResponse.getContentAsString(String) variants. asashour Update INCOMPATIBLE CHANGE: change return type of WebRequest.getCharset, WebResponse.getContentCharset() and getContentCharsetOrNull(). asashour Fix JavaScript: correct handling of window.onbeforeunload. asashour Add Encoding support for DataURl added. rbri Update INCOMPATIBLE CHANGE: PromptHandler.handlePrompt() has a third parameter. asashour Add WebClientOptions: add option to automatically download images. asashour Fix Browsers are storing cookies with a dot at the start of the domain. rbri Fix HtmlAnchor: handle clicking page with shift or ctrl keys. asashour Update INCOMPATIBLE CHANGE: change the return type of DomNode.getByXPath. asashour Add Add HtmlSlot. asashour Update DomElement: .click() should does nothing when the element is not displayed. asashour Add Table elements now supporting the summary and rules attribute. rbri Remove Remove deprecated HtmlElement.getHtmlElementsByTagName(), .getHtmlElementsByTagNames() and CSSStyleSheet.modifyIfNecessary(). asashour Remove BrowserVersion: remove deprecated INTERNET_EXPLORER_11. asashour Update HtmlFileInput: deprecate .setValueAttribute(), use .setFiles() instead. asashour Fix JavaScript: nowrap property support added for div, dd, and dt elements (IE only). rbri Fix FormData now also respects configured mime type for uploading a file. rbri Add Reintroduce ScriptPreProcessor. Fixes 1818. asashour Fix JavaScript: fix Symbol creation. Fixes 1852. asashour Fix HtmlOption: clicking should unselect other options, even if the parent select is 'multiple'. asashour Fix JavaScript: WebSocket constructor should report an js error if the provided url is empty/null or invalid. rbri Update HtmlInput: deprecate .click(int, int). asashour Fix JavaScript: EventHander set at window-level only on setting it by attribute. asashour Fix Elements with 'tabindex' are focusable. asashour Add JavaScript: implement HTMLInputElement.checkValidity(). asashour Update HtmlInput: .setValueAttribute() no longer executes onchange event handler. asashour Fix JavaScript: HTMLInputElement: fix .value for file types. asashour Fix Minor java code issue from our get started page fixed; sample for using getElementsByTagName added. rbri Add Add HtmlEmailInput, HtmlTelInput and HtmlUrlInput. Fixes 1848. asashour Remove INCOMPATIBLE CHANGE: remove SvgPage and InteractivePage, use HtmlPage instead. Fixes 1830. asashour Add SgmlPage to implement DocumentTraversal. Fixes 240. asashour Fix SgmlPage: fix getElementsByTagName() and add .getElementsByTagNameNS(). Fixes 1849. asashour Remove BrowserVersion: remove deprecated FIREFOX_38. asashour Fix JavaScript: fix NullPointerException in MutationObserver. Fixes 1811. asashour Add DomNode: implement .getUserData() and .setUserData(). Fixes 239. asashour Update Mandate Java 8 as a minimum requirement. asashour

Release 2.24 – January 9, 2017

Type Changes By Update XmlPage: to ignore ByteOrderMark at the beginning of file. asashour Update CSS: cssparser updated to 0.9.21. rbri Fix Do not trigger mouse events for the associated element when clicking a label. rbri Fix JavaScript: the Map constructor accepts maps. rbri Fix JavaScript: the set constructor accepts array buffers, string, sets and maps. rbri Update Class JavasScriptPage removed. Real browsers are handling this page as simple HtmlPage containing only a script tag in the header. rbri Fix If there is no content type, the browser will look inside the content for a script tag. Fixes 1844. rbri Fix Conversion of ordered list to text has to take care of all children not only list items. Fixes 1845. Thanks to Rob Kodey. rbri Fix JavaScript: FF45 triggers mouse events also for disabled buttons and input elements. rbri Fix DL tag should close containing tags. Fixes 1842. rbri Fix JavaScript: Missing clear property added for headline, paragraph, and pre tags (IE only). rbri Fix Ignore the charset when checking the content type header for CORS requests. Fixes 1839. rbri Add WebClientOptions: add 'HistoryPageCacheLimit' to allow specifying the number of page references stored in history. If this value is smaller than the configured HistorySizeLimit than HtmlUnit will only use soft references for the first historyPageCacheLimit entries in the history. For older entries only the url is saved; the page will be (re)retrieved on demand. Fixes 1836. rbri Fix JavaScript: HTMLElement.getClientRects() returns an empty list for "display: none". Fixes 1834. rbri Fix HtmlImage.saveAs(File) no longer parses the image. Fixes 1833. rbri Fix JavaScript: throw JS runtime exception instead of Java IllegalArgumentException when method is called on incorrect objects. mguillem Add JavaScript: referrerPolicy property now supported for anchors (Chrome only). rbri Fix Many minor js class hierarchy fixes and missing constants added for IE. rbri Update Upgrade Apache log4j-api to 2.7. rbri Update Upgrade Apache commons-lang to 3.5. rbri Add JavaScript: missing property content added for template elements. rbri Add CSS: Support for css pseudo classes 'required' and 'optional' added. Fixes 1829. rbri Fix NPE in native arrays if typed array has a null value. Fixes 1828. Thanks to Michael Rimov. rbri Fix asText() now includes the content of iframe elements. Fixes 1824. rbri Add JavaScript: CanvasRenderingContext2D simple implementation for clearRect, fillRect, strokeRect. rbri Add JavaScript: CanvasRenderingContext2D support for transparency added. rbri Fix JavaScript: CanvasRenderingContext2D background color fixed. rbri Add JavaScript: simple implementation of CanvasRenderingContext2D.measureText() added rbri Fix Value of the Script#readyState property (IE only) fixed for nodes created from js. Fixes 1824. rbri Fix Page#toXML() no longer produces self closing form tags for empty forms. Fixes 1490. rbri Add JavaScript: console.timeStamp() added rbri Fix Parameter processing fixed for our FloatXX/IntXX Array slice. rbri Fix Value processing fixed for our FloatXX/IntXX Array constructor. The conversion for the values of the provided array works now; there is no longer a NPE. rbri Fix XPath attribute query has to take care of case for xml files. Fixes 1820. rbri Add Simple impl for SVGMatrix flipX/flipY/scale added. rbri Fix JavaScript: CSSStyleDeclaration fix handling of null and NaN for length properties. Fixes 1813. rbri Fix JavaScript: fix element.removeChild() when it is inside XMLDocument. Fixes 1815. asashour Fix Browsers are accepting arbitrary url's when the scheme is 'about'. Fixes 1813. rbri Add WebClientOptions: add 'localAddress' to allow specifying a network interface. asashour Fix XMLHttpRequest.getAllResponseHeaders() now uses the correct delimiter and more minor fixes. rbri Fix Implementation of event.stopImmediatePropagation() added. Fixes 1810. rbri Fix Authentication used for a first site was unnecessary sent to a second web site. Fixes 1729. Thanks to Hartmut Arlt. rbri Add JavaScript: Reflect.has() implemented. rbri Fix Support the special replacement patterns for the replacement string if replace was called for a string like 'abcd'.replace('cd', 'x$&'). rbri

Release 2.23 – July 27, 2016

Type Changes By Fix ClientWidth is not correctly calculated for div with 'position: absolute'. Fixes 1669. rbri Fix Use soft references for storing the page as part of the history to avoid OOMExceptions. Fixes 1805. rbri Fix Do not save any history entries if HistorySizeLimit is less than 1. Fixes 1805. rbri Update CSS: cssparser updated to 0.9.20. rbri Fix HtmlPage: .save() to handle relevant HtmlLink protocols. asashour Fix Fix handling return statements in URL starting with "javascript:". asashour Fix Take care of the font size when calculating the offsetWidth for text. rbri Fix ReferenceError after calling Object(FrameWindow). Fixes 1804. Thanks to Carsten Steul. rbri Fix IllegalStateException adding an option to a select. Fixes 1803. Thanks to Carsten Steul. rbri Update New class DefaultJavaScriptErrorListener added. This listener will be always used of no specific listener is defined. The logging of js errors was moved to this class. If you like to have the logging and your own JavaScriptErrorListener than subclass or decorate this. Fixes 1620. rbri Fix Computing of the current css styles now takes mouseOver into account. Fixes 1065. rbri Fix IndexOutofRangeException fixed in com.gargoylesoftware.htmlunit.attachment.Attachment.getSuggestedFilename(). rbri Fix JavaScript: scrollHeight, scrollWidth implementation improved. rbri Fix JavaScript: Window to throw Exception during construction by JavaScript. Fixes 1779. asashour Fix JavaScript: string.repeat() is not available in IE. rbri Fix JavaScript: string.includes() is not available in IE and FF38. rbri Add JavaScript: implement Object.assign(). Fixes 1797. asashour Fix JavaScript: string.startsWith(), and .endsWith() are not available in IE. rbri Update BrowserVersion: deprecate FIREFOX_38. asashour Fix NPE in CSSStyleSheet.fixIndex(). Fixes 1791. Thanks to Carsten Steul. rbri

Release 2.22 – May 27, 2016

Type Changes By Fix JavaScript: Implementation for DOMImplementation.createHTMLDocument() added. Fixes 1748. rbri Fix Use our own implementation of URL.sameFile to avoid excessive number of DNS lookups and and support path normalization before doing the comparison. Fixes 1787. rbri Add Keyboard: to have a parameter which allows typing to start at the text end. asashour Update CSS: cssparser updated to 0.9.19. rbri Fix HtmlElement: do not trigger keypress if keydown.preventDefault() is true. asashour Remove Remove deprecated DomNode.getScriptObject(), WebWindow.getScriptObject(), HtmlElement.type() methods and HtmlPage constructor with 'originatingUrl'. asashour Add WebClient: supports a registry of known file extensions used to determine the content type when uploading files. rbri Add WebClientOptions: .setSSLClientCertificate() supports InputStream. Fixes 231. asashour Fix DataUrlDecoder.decodeUrl() no longer replaces '+' with a space character. Fixes 1769. Thanks to Carsten Steul. rbri Update Dependency to gsbase library removed. rbri Add JavaScript: Simple implementation of URL.createObjectURL and URL.revokeObjectURL added. rbri Fix JavaScript: 'in' operator now works for FileList. rbri Fix JavaScript: DOMTokenList as an array. Fixes 1783. Thanks to Marek Gawlicki. asashour Update INCOMPATIBLE CHANGE: modify BrowserVersion.browserVersionNumeric from float to int. asashour Fix JavaScript: clear cached Symbols on closing the page. Fixes 1781. asashour Add WebClientOptions: add setHistorySizeLimit(). Fixes 175. Thanks to Madis Pärn. asashour Fix CSS: fix value verification for length property setters (e.g. width, height,...). rbri Fix HtmlForm: to include Accept and Accept-Encoding headers on submission. Fixes 1777. asashour Fix JavaScript: window.getComputedStyle() should use sheets of the element.document. asashour Fix JavaScript: fix HTMLElement.style setter. asashour Fix JavaScript: fix HTMLElement.offsetLeft. Fixes 1626. asashour Fix CSS: fontSize influences the calculated height. Fixes 1776. asashour Fix HttpWebConnection no longer removes 'Content-Length', 'Content-Encoding' and 'Content-MD5' HTTP headers. Fixes 1774. Thanks to Hartmut Arlt. rbri Update BrowserVersion: Chrome is the BEST_SUPPORTED. asashour Add JavaScript: support Document.adoptNode. Fixes 228. Thanks to Madis Pärn. asashour Fix DomNode: .asText() to handle CSS styles. Fixes 1770. asashour Add JavaScript: add primitive support for SVGElement.getBBox(). Fixes 1506. asashour Add JavaScript: Promise supports .reject() and .catch(). asashour Fix JavaScript: IE supports the data URIs. asashour Fix JavaScript: fix caching of computed styles. Fixes 1768. asashour Fix DomNode: fix .asText() for some special spaces. Fixes 1764. asashour Fix Fix CSS selector regression introduced during handling pseudo element in window.getComputedStyle(). asashour

Release 2.21 – Apr 6, 2016

Type Changes By Update Use Neko-HtmlUnit fork. asashour Fix JavaScript: window.getComputedStyle() to handle pseudo element. Fixes 1765. asashour Fix Malformed HTML: handle unterminated attribute value. Fixes 889. asashour Fix JavaScript: fix .offsetWidth, .offsetHeight, .clientWidth and .clientHeight of unconnected elements. asashour Add WebSocket support for binary data added. Thanks to Madis Pärn. rbri Add JavaScript: datetime property added for time elements. rbri Fix JavaScript: do not execute iframe onload handle if set while the element is attached to page (Chrome). asashour Fix JavaScript: CSSStyleDeclaration to return lower-case values (Chrome and IE). asashour Fix WebSocket event handling fixed, open event now fired, tests added. Fixes 1762. Thanks to Madis Pärn. rbri Add Improved MessageEvent implementation. rbri Fix JavaScript: Event.eventPhase is supported by Chrome. asashour Update HtmlElement: deprecate .getHtmlElementsByTagName() and .getHtmlElementsByTagNames(). asashour Add JavaScript: add .labels property for HTMLButtonElement, HTMLInputElement, HTMLKeygenElement, HTMLMeterElement, HTMLOutputElement, HTMLProgressElement, HTMLSelectElement and HTMLTextAreaElement. asashour Fix DomElement: fix .getElementsByTagName(). Fixes 1723. asashour Add Improved CloseEvent implementation; properties reason, code and wasClean are available now. Thanks to Madis Pärn. rbri Fix JavaScript: fix document.all when called with invalid index (Chrome). asashour Fix JavaScript: fix table.innerText. asashour Fix Fix XML attributes order. Fixes 1576. asashour Remove JavaScript: StaticNodeList removed. rbri Fix JavaScript: HTMLCollection and HTMLAllCollection function like access implementation improved (Chrome). rbri Fix JavaScript: wordSpacing property support percent values for FF45. rbri Add JavaScript: HTMLLabelElement.control property added (FF and Chrome). rbri Add JavaScript: FormData delete, get, getAll, set and has functions added. rbri Update History processing changed; now HtmlUnit remembers pages instead of requests. rbri Fix Pages are not loaded after History.pushState call. Fixes 1759. rbri Fix JavaScript: fix XMLHttpRequest CORS handling (Chrome). asashour Fix JavaScript: fix setting .innerText to null (Chrome). asashour Fix Fix handling of empty Cookies (Chrome). asashour Remove BrowserVersion: remove deprecated FIREFOX_31. asashour Add JavaScript: limited support for css @keyframes rules added. rbri Fix JavaScript: CSSRuleList ignores unsupported rules. rbri Fix JavaScript: Element.baseURI. asashour Fix JavaScript: XMLHttpRequest.overrideMimeType(). asashour Fix JavaScript: fix XMLDocument.getElementsByTagName(). asashour Add JavaScript: support window.performace.timing. Fixes 1756. rbri Add JavaScript: support HTMLAnchorElement.ping. Fixes 1755. asashour Add Firefox 45 ESR support added. asashour Add HtmlPage: add setElementFromPointHandler() for manually handling JavaScript document.elementFromPoint(). Fixes 1736. asashour Add JavaScript: add value property support for HTMLDataElement (FF only). rbri Add JavaScript: add initial support for HTMLStyleElement.scoped. rbri Add JavaScript: add support for HTMLStyleElement.disabled. asashour Update JavaScript: add support for Node.remove(). mguillem Update INCOMPATIBLE CHANGE: change BrowserVersion.INTERNET_EXPLORER nickname to "IE". asashour Update JavaScript: update Date.toLocaleDateString() and .toLocaleTimeString() to use en_US locale. asashour Add JavaScript: simple implementation of SVGPathElement.getTotalLength() added. rbri Fix JavaScript: ClassCastException in DOMTokenList#updateAttribute(). Fixes 1752. rbri Fix JavaScript: HTMLCollection to enumerate children names (Chrome). asashour Fix XPath: fix attribute case sensitivity (Chrome). asashour Fix JavaScript: fix PopStateEvent.state to be clone (Chrome and IE). asashour Fix JavaScript: fix Selection.rangeCount for Chrome. asashour Fix CSS: Chrome doesn't support 'target' selector or computed 'zIndex' property. asashour Fix JavaScript: fix location.hash. asashour Fix JavaScript: HTMLTableElement.innerText should not be read-only (Chrome). asashour Remove Remove deprecated WebClient.closeAllWindows(), HttpWebConnection.shutdown(), SgmlPage.createDomDocumentFragment(), XmlPage.getContent(), XmlPage.createXmlElement(), XmlPage.createXmlElementNS() and XmlPage.getXmlElementDescendants(). asashour Update SubmittableElement: rename getSubmitKeyValuePairs() to getSubmitNameValuePairs(). asashour

Release 2.20 – Feb 28, 2016

Type Changes By Fix JavaScript: correct calculation of clientWidth and .clientHeight styles. asashour Fix WebSocket: fix duplicate cookies sent with requests. rbri Fix JavaScript: Doctype properties prefix, localName and namespaceURI returning undefined for Chrome. rbri Fix JavaScript: Location should change immediately when calling history.pushState. Fixes 1749. Thanks to Adam Afeltowicz. rbri Fix HtmlPage.asXml(): expand empty I, BUTTON and unknown nodes to make generated XML readable as HTML on browsers. mguillem Fix JavaScript: FormData.append now supports the optional filename parameter. rbri Update BrowserVersion: deprecate INTERNET_EXPLORER_11, use INTERNET_EXPLORER instead. asashour Fix JavaScript: FormData constructor should support form parameter. Fixes 1751. Thanks to Frank Danek. rbri Fix JavaScript: XMLHttpRequest.upload is available in IE also. rbri Fix HtmlImage: to be serializable. Fixes 1750. asashour Fix JavaScript: HTMLElement.getBoundClientRect throws an error for IE if the element is not connected to a page. rbri Add JavaScript: implement ClientRectList methods. rbri Add JavaScript: implement Symbol.for. asashour Fix JavaScript: set prototype for objects constructed without 'new' keyword. asashour Fix Do not explicitly send the port 443 for HTTPS connections. Fixes 1741. rbri Fix Use the right keyCode when simulating enter. Fixes 1694. rbri Fix Setting the text property of an option creates a label attribute if there is no label defined so far. rbri Fix Origin attribute for anchors now works (FF, Chrome). rbri Fix SVGElements are supporting querySelector() and querySelectorAll(). Fixes 1742. rbri Fix id property was missing for SVGElements. rbri Fix Element.className no longer trims whitespace for Chrome. rbri Fix HashChangeEvent.initHashChangeEvent() not supported by Chrome. rbri Fix Applet is no longer supported by Chrome. rbri Fix Implementation of option.text is now in sync with latest Chrome. rbri Fix Properties clientLeft and clientTop are available in Chrome also. rbri Fix Add properties name, value, type, valuetype support to HTMLParamElement. Fixes 1740. rbri Fix Fix really weird IE behavior when applying a CSS3 pseudo selector to an detached node. This fixes the 'Invalid selector' output for the :enabled and :checked selector for pages using jQuery. rbri Fix Paragraph with style visibility:collapse is invisible in IE11 also. rbri Fix Document baseURI property is not available for IE. rbri Fix Improved asynchronously loading of scripts with async attribute. mguillem Fix Improved simulation of double click. rbri Fix Improving null handling when setting the value of text areas and input elements. rbri Fix Setting the width of a table column to null now works correct for FF/Chrome also. rbri Fix Fix our simulation of setting table caption/tHead/tFoot for Chrome. rbri Fix For Chrome className returns an empty string if the value of the class attribute is blank. rbri Fix Fixed document.all.namedItem for Chrome when parameter is a form name. rbri Fix Chrome ignores the target attribute if the href starts with 'javascript:'. rbri Fix Fix form processing for urls containing anchors when simulating chrome. rbri Fix Result of innerText fixed for Chrome. rbri Fix Fix return value of getAttributeNS when attribute is not defined. rbri Fix Option.text returns always the label if defined in Chrome. rbri Fix CSS :lang selector now works correct if the lang was defined at the parent. rbri Fix Empty form actions are not expanded by FF. rbri Fix Type attribute is case sensitive for input elements. rbri Add Implementation of Performance.now() added. rbri Fix Improved clientHeight calculation when height is set to auto. rbri Fix Updates on event handling, mouse-over for option and select elements are more correct now. rbri Fix IE never triggers a mouseover event for select options. rbri Fix FF triggers a mouseover event for select options even if the option is disabled. rbri Fix GAE support is back. rbri Fix Function document.open(..) returns the opened document. Fixes 1730. rbri Fix Browsers do not escape double quote and backslash in cookie values. rbri Fix Fix for possible StringIndexOutOfBoundsException in HtmlUnitBrowserCompatCookieSpec. Fixes 1735. rbri Add Fix NPE in FormData#append when calling with null or undefined as value. rbri Fix Fix redirect handling for status code 301, 302 and 307 (POST); add support for status code 308. Fixes 1733. rbri Fix Bring the implementation of special key support (e.g. VK_DELETE) for password input and textarea control in sync with the input text control. rbri Add BrowserVersion BEST_SUPPORTED added. This is (for now) a shortcut for FIREFOX_38. Thanks to mguillem. rbri Fix Area elements are not focusable if no href attribute defined. rbri Fix Anchors are not focusable if no href attribute defined. rbri Fix Basic authentication credentials in the URL could get lost. Fixes 1731. Thanks to Joerg Werner. rbri Add DefaultCredentialsProvider: to have .removeCredentials(). asashour Update Dependency to Commons Collections removed. rbri Fix HtmlPage: fix base URL with leading whitespace. Fixes 1728. Thanks to Joerg Werner. asashour

Release 2.19 – Nov 12, 2015

Type Changes By Add JavaScript: support document.hasFocus(). asashour Update INCOMPATIBLE CHANGE: Cache.cacheIfPossible() to return boolean and rename .isDynamicContent() to isCacheableContent(). asashour Fix CSSStyleSheet: response is cleaned up when it is not cached. asashour Add JavaScript: Support for History.pushState() and History.replaceState(). Fixes 1681. Thanks to Adam Afeltowicz. rbri Fix SgmlPage: fix .getElementsByTagName(). Fixes 1723. asashour Add JavaScript: Empty dummy implementations for MediaQueryList#addListener and MediaQueryList#removeListener added. rbri Update HttpWebConnection: deprecate .shutdown(). asashour Update INCOMPATIBLE CHANGE: WebConnection to extend AutoCloseable. Fixes 1727. asashour Fix JavaScript: Removing the active element from the DOM tree should reset the activeElement property. rbri Fix JavaScript: fix HTMLFormElement.action when the attribute is not defined. Fixes 1726. asashour Fix JavaScript: When an element inside an iframe becomes the active one, the iframe element also becomes the active one of his enclosing document. rbri Fix JavaScript: Improved simulation of onfocusin/out events. rbri Fix HtmlPage: fix synchronization for .addAutoCloseable(). Fixes 1725. asashour Update Enhance performance of DomNode.asText(). asashour Fix WebSocket: to be closed once the window is closed. Fixes 1715. asashour Fix JavaScript: Missing property HTMLElement.oninput added. Fixes 1702. rbri Fix Correctly handle redirection with broken gzip content. Fixes 1724. asashour Add CSS: support for Media Query feature 'max-resolution', 'min-resolution', and 'resolution' added. rbri Add CSS: support for Media Query feature 'max-device-width', 'min-device-width', 'max-height', 'min-height', 'max-device-height' and 'min-device-height' added. rbri Add CSS: support for Media Query 'not' operator added. rbri Add CSS: support for Media Query feature 'orientation'. rbri Fix CSS: initial support for Media Query features 'max-width' and 'min-width'. Fixes 1721. asashour Fix JavaScript: fix Promise.resolve() with empty parameters. asashour Update JavaScript: XMLHttpRequest.onerror is available in CHROME too. rbri Update JavaScript: XMLHttpRequest.onerror handler will be called with a ProgressEvent as parameter. rbri Add JavaScript: support for ProgressEvent properties lengthComputable, loaded, and total added. rbri Update JavaScript: add minimal WebWorker support. mguillem Update DomNode and WebWindow: deprecate .getScriptObject(). asashour Fix JavaScript: collections to be iterated using the default Symbol.iterator. Fixes 1699. asashour Fix ComputedCSSStyleDeclaration: fix StackOverflowError on calculating 'top' value. Fixes 1233. Thanks to Adam Afeltowicz. asashour Fix JavaScript: XMLHttpRequest.overrideMimeType() is available in IE11 too. rbri Fix JavaScript: XMLHttpRequest.overrideMimeType() does some state checking for IE11 and CHROME. rbri Update Upgrade Apache HttpComponents to 4.5.1. asashour Fix JavaScript: Event.stopPropagation() is available in Chrome too. rbri Fix Load asynchronously scripts with async attribute. mguillem Fix JavaScript: WebSocket to handle insecure SSL. Fixes 1720. asashour Fix Various fixes for our checkbox and radiobutton simulation. This also fixes css selectors working with the checked attribute. rbri Fix Do not click surrounding anchor for 'checkbox' and 'radio' input (Chrome). asashour Fix JavaScript: fix document.forms.form_name with prefixed forms. asashour Fix JavaScript: fix result value for title.text property for empty title tags (IE8). rbri Fix JavaScript: delays execution of Promise.then arguments. mguillem Fix JavaScript: fix CSSStyleRule.selectorText. asashour Fix CSS: only FF supports CSSCharsetRule. asashour Fix JavaScript: fix MediaList.item() and MediaList.mediaText results for media queries. rbri Update CSS: cssparser updated to 0.9.18. rbri Fix JavaScript: Property style.boxSizing is available in Chrome and FF too. rbri Fix CSS: fix @font-face for Chrome. asashour Fix Fix base tag for relative URI. Fixes 1718. Thanks to Adam Afeltowicz. asashour Fix JavaScript: TextArea now works correct if the children are manipulated from js. Fixes 1719. rbri Fix JavaScript: Window.top property is only writable in IE. rbri Add JavaScript: window.onsubmit support added. rbri Fix Correctly handle script when src attribute is only "://". asashour Fix JavaScript: process scripts with 'application/javascript' type (add IE11). asashour Fix JavaScript: Iterating through the .attributes property modifies outerHTML result. Fixes 1716. rbri Fix Cookies: fix handling of two digits expiry date in Chrome. asashour Add JavaScript: add .placeholder property (HTMLInputElement and HTMLTextAreaElement). asashour Fix JavaScript: textContent property is writable for table elements in Chrome also. rbri Fix JavaScript: HTMLScriptElement.src should return complete URL if src was defined. rbri Fix Correct simulation of type handling for input tags without type attribute being set. rbri Fix Handle typing in inputs of type search like in inputs of type text. mguillem Fix RegExp: fix translation of \0 when translating a js regexp into a java one. Fixes 1713. rbri Add JavaScript: label property implemented for menu element. rbri Add JavaScript: type property implemented for menu element. rbri Fix JavaScript: fix FormData to correctly handle File. asashour Add JavaScript: add window.location.origin. asashour Fix JavaScript: OptionsCollection length setter fix (Chrome). rbri Fix JavaScript: mouse events fixed when clicking an option (Chrome). rbri Add JavaScript: added support for Window.crypto.getRandomValues. mguillem Add JavaScript: added dummy implementations of Window.requestAnimationFrame and Window.cancelAnimationFrame. mguillem Fix Reflect fix done in latest Chrome for Node.compareDocumentPosition. rbri Fix Node.removeChild now throws a javascript exception if the node to be removed is not a descendant of the receiver. rbri Fix Node.insertBefore now throws a javascript exception instead of an DOMException. rbri Fix Improved width calculation if the style defines the width using a percent value. Fixes 1700. rbri Add Index property for HTMLOptionElement added. rbri Fix Consider base tag even when misplaced within body. mguillem Add Added HtmlPage.getBaseURL and HTMLDocument.baseURI. mguillem Fix INCOMPATIBLE CHANGE: The usual isXxxxEnabled() methods are added to the Interface WebConsole.Logger for better performance. rbri Fix String substitution in window.console.log fixed (handing of special chars like $, escaped percent sign, handling of missing replacement parameters). Fixes 1711. rbri Fix Window.dump() is available in FF only. rbri Fix XMLHttpRequest: call onload handler with a ProgressEvent parameter. asashour Fix Support for text property removed from HTMLTimeElement. rbri Fix Fix ClassCastException when triggering a click event for SVG elements. Fixes 1495. rbri Fix Correct handling of file URL's containing encoded character. Fixes 1708. rbri Fix Simulated Shockwave Flash plugin info updated to current version. rbri Fix Version property added to plugin. Fixes 1707. rbri Fix RegExp: there was a mutable 'singleton' shared between different regex results; this introduces strange side effects. Fixes 1706. Thanks to Carsten Steul. rbri Fix Return value of CSSStyleDeclaration.removeStyleAttribute() fixed when simulating Chrome. rbri Add Dummy implementation for History.state together with some more tests added. rbri Fix Latest FF versions are no longer defining these methods: History.next, History.current, History.previous. rbri Fix Cookies: quote only if the cookie was sent with quotes. Fixes 1705. rbri Fix Stylesheet list contains only active style sheets when simulating Chrome. rbri Fix File.lastModifiedDate now produces the correct output in all browsers. rbri Fix File.lastModified is not available in FF31. rbri

Release 2.18 – Jul 26, 2015

Type Changes By Add Introduce AbstractPage. asashour Update HtmlPage: change return type of .getFocusedElement() to DomElement. asashour Fix Cache: clean up cached WebResponse only when it moves out of cache. asashour Update XmlPage: deprecate .getContent(), .createXmlElement(), .createXmlElementNS() and .getXmlElementDescendants(). asashour Add Add SvgPage. asashour Add JavaScript: primitive implementation of XMLHttpRequestUpload. asashour Add JavaScript: implement FormData. asashour Fix Fix detection of standards mode for DocType with empty name (IE8). asashour Fix JavaScript: DocumentFragment: add .URL property and fix its default value (IE8). asashour Update SgmlPage: deprecate createDomDocumentFragment(). asashour Update HtmlPage: deprecate getFocusedElement() as its return type will change to DomElement. asashour Fix JavaScript: do not trigger events if the element is detached from page. asashour Fix JavaScript: Node.cloneNode() should return a node with a parent (IE8). asashour Add DomElement: now handle events (e.g. .click(), .focus()) to support SVG interaction. asashour Fix SVG: fix SVG element creation. asashour Add JavaScript: support HTMLInputElement.files. asashour Fix JavaScript: WebClient.getPage should trigger hashchange event when called for with the same URL but different hash than the current page. mguillem Fix DomNode: .setTextContent() should add child only if the text is not empty. asashour Fix JavaScript: XMLHttpRequest CORS handling for PUT and POST. Fixes 1698. asashour Fix JavaScript: fix Map, Set, WeakMap and WeakSet with empty constructor. Fixes 1699. asashour Add XmlPage: implement getElementsByTagName(). asashour Add Support PATCH Method for HTTP. Fixes 222. Thanks to Joerg Werner. asashour Fix JavaScript: properly handle event handlers as a property of document body. asashour Fix Typing: support clipboard copy, cut and paste. asashour Fix ImageData: reuse data property, to preserve setting the values. asashour Update Rename SelectionDelegate to SelectableTextSelectionDelegate, and add SimpleSelectionDelegate. asashour Add JavaScript: initial implementation of performance.navigation. asashour Fix Regex: back references to optional groups are corrected (e.g. /(a)?xyz\1/). rbri Update HtmlElement: Deprecated type() with shift, control and alt parameters. asashour Fix Properly handle cookies for unqualified hostname. Fixes 1697. asashour Add HtmlElement: add type(Keyboard). asashour Fix Mocked ActiveX objects have to be able to deal with unknown/unsupported properties. Thanks to Frank Danek. rbri Fix Regex: back references to enclosing groups are ignored by js regex (e.g. /(a)(b\2)/). rbri Fix Regex: minor improvements for the octal detection when converting a js regex into java regex. rbri Fix Fix an IllegalStateException when parsing ajax response containing an object tag. rbri Fix JavaScript: Limited support for CSSStyleRule.readonly added (property is available in IE only). rbri Fix JavaScript: fix KeyboardEvent constants. asashour Fix JavaScript: trigger SHIFT keydown/keyup events when "upper" characters are typed. asashour Add JavaScript: implement HTMLElement.contentEditable and isContentEditable. asashour Add JavaScript: implement TextRange.compareEndPoints() and .move(). asashour Fix HtmlTextInput: handle typing arrow keys. asashour Fix JavaScript: initial support for MutationObserver. Fixes 1691. asashour Add DomNode: add/remove CharacterDataChangeListener. asashour Update Upgrade Apache HttpComponents to 4.5. asashour Remove HtmlElement: mark .fireEvent() as internal API. asashour Remove Remove deprecated BrowserVersion.FIREFOX_24, ProxyAutoConfig, HttpWebConnection.downloadContent(), Event, KeyboardEvent and MouseEvent. asashour

Release 2.17 – Jun 3, 2015

Type Changes By Update CSS: cssparser updated to 0.9.16. asashour Update Update htmlunit-core-js to Rhino head of 03.06.2015 + custom patches. asashour Fix JavaScript: fix WebSocket.readyState. Fixes 1689. asashour Add Firefox 38 ESR support added. rbri Update BrowserVersion: deprecate FIREFOX_31. rbri Fix Button tag submits a form if type is unknown. rbri Add Initial support for HTML5 Input Types. asashour Add JavaScript: add HTMLInputElement.min and .max. asashour Add Add HtmlTemplate element. asashour Fix CSS: fix default attribute values. asashour Fix JavaScript: Typed Arrays to tolerate out of range. asashour Add JavaScript: implement style.setProperty(). rbri Add JavaScript: implement style.getPropertyPriority(). rbri Add JavaScript: implement CanvasRenderingContext2D.getImageData(). asashour Add JavaScript: support image.naturalWidth and .naturalHeight. asashour Add JavaScript: support CustomEvent. asashour Fix JavaScript: Element lookup by CSS class name does not always work. Fixes 1685. rbri Fix History: support POST requests. asashour Fix JavaScript: fix setting HTMLOptionElement.label. Fixes 1687. asashour Fix JavaScript: arbitrary elements are defined as JavaScript properties (only in IE8). asashour Add JavaScript: HTMLInputElement: support minLength (Chrome). asashour Add JavaScript: implement window.matchMedia() and .styleMedia. asashour Add JavaScript: implement Map, Set, WeakMap and WeakSet. asashour Fix JavaScript: handle events with functions bound to null. asashour Fix JavaScript: execute onload handlers for dynamically created iframe as well when src is set to about:blank. mguillem Add JavaScript: implement MessageChannel. Fixes 1680. asashour Add Support for 'hidden' HTML5 attribute added (method HtmlElement.isDisplayed() takes care of this). rbri Remove Remove deprecated JavaScriptEngine.shutdownJavaScriptExecutor() and CookieManager.getCookies(). asashour Add JavaScript: implement NodeIterator. asashour Update Upgrade Xalan to 2.7.2. asashour

Release 2.16 – Apr 20, 2015

Type Changes By Fix CSS selectors checking for an empty attribute (e.g. [data-section='']) are checking now the existence of the attribute also. rbri Update Upgrade NekoHtml to 1.9.22. asashour Add HTMLTextAreaElement: maxLength property support added. Fixes 1677. Thanks to Carsten Steul. rbri Fix JavaScript: Missing setter for style.media added. rbri Add JavaScript: implement Promise.resolve(). asashour Fix An Ajax request running in parallel to a form submit might influence the headers send by the submit. rbri Fix JavaScript: rename host class CharacterDataImpl to CharacterData, and ProcessingInstruction to extend CharacterData. asashour Update Upgrade Apache commons-lang to 3.4. rbri Fix JavaScript: type property for anchor elements implemented. Fixes 1675. rbri Fix Window: fix how events are handled in when a child iframe 'src' is empty. Fixes 1655. asashour Fix HTMLIFrameElement: once the document is open()ed, then the location should be the same as the enclosing page. Fixes 1655. asashour Fix JavaScriptEngine: hasAttribute is available in IE8 also. rbri Add HTMLScriptElement: support 'onload' event (Chrome). Fixes 1655. asashour Update XMLHttpRequest: handle incorrect HTTP method name. Fixes 1665. asashour Fix JavaScriptEngine: fix synchronization case. Fixes 1668. Thanks to Carsten Steul. asashour Update Upgrade Apache HttpComponents to 4.4.1 rbri Add JavaScript: initial support for "Intl" namespace. asashour Update CSS: cssparser updated to 0.9.15. rbri Fix JavaScript: fix the prototype of HTMLQuoteElement and HTMLInlineQuotationElement. Fixes 1671. Thanks to Carsten Steul. asashour Fix HtmlButton: 'type' attribute defaults to 'button' in quirks mode only (IE8). asashour Fix JavaScript: fix HTMLImageElement.src attribute. asashour Fix XSLTProcessor is not available in IE11. rbri Update BrowserVersion: deprecate FIREFOX_24 and remove deprecation of INTERNET_EXPLORER_8. asashour Add Initial support for HtmlBidirectionalIsolation, HtmlCommand, HtmlDetails, HtmlDialog, HtmlLayer, HtmlMain, HtmlMenuItem, HtmlNoLayer, HtmlSummary and HtmlTrack elements. asashour Update WebClient: deprecate .closeAllWindows(), use .close() or try-with-resources statement. asashour Fix Avoid exception when handling URLs with unknown protocols. mguillem Add JavaScript: added basic support for Notification. mguillem Add Package 'httpclient' added for our customizations of HttpClient. rbri Fix JavaScript: fix many host class names. asashour Fix Use the same parser for cookies when set from javascript as we use for cookies in the http header. rbri Fix Use the same parser for cookies when set via meta tag as we use for cookies in the http header. This fixes the missing support for various cookie attributes when set by meta tag (e.g. domain). rbri Fix Iterator and StopIteration are only available in FF. rbri Fix Event.metaKey is available in CHROME also. rbri Fix MouseEvent.keyCode fixed for IE8 and CHROME. rbri Fix JavaScript: Window is defined in Standards Mode (IE8). asashour Update Upgrade Apache HttpComponents to 4.4 asashour Fix JavaScriptEngine: consider false jsObject. asashour Add JavaScript: XSLTProcessor supported methods (Chrome). asashour Fix JavaScript: most elements prototype should be functions (Chrome and FF). asashour Fix INCOMPATIBLE CHANGE: SVG: Rename SvgMpath to SvgMPath. asashour Fix JavaScript: FunctionObject to also enumerate IDs of the parent objects. asashour Fix JavaScript: do not set the window.location when triggered by anchor onclick (Chrome and FF). asashour Fix JavaScript: Node.compareDocumentPosition() to handle argument which is not Node (Chrome). asashour Fix JavaScript: constants should not be overwritten or deleted. asashour Fix JavaScript: Node.insertBefore() throw exception for Chrome when second parameter is missing. asashour Fix JavaScript: handle Node, Element, CSSValue and CSSPrimitiveValue as function not object (Chrome, FF). asashour Fix Browsers are ignoring line breaks inside the src attribute of script/image/frames tags. Fixes 1663. rbri Add JavaScriptJobManager interface enhanced to support filtered access to the jobs. This helps to filter out heartbeat jobs while waiting for the background jobs to finish. rbri Add Mock implementation of element.setCapture(), element.releaseCapture() and document.releaseCapture() added. rbri Fix JavaScript: DocumentType: support 'publicId' and 'systemId', while 'prefix' is undefined in Chrome. asashour Update Upgrade Jetty to 9.2.10.v20150310. Fixes 1656. Thanks to David Ostrovsky. asashour Fix Wrong encoding used by StringWebReponse if charset placed in content. Fixes 1660. Thanks to Carsten Steul. rbri Fix Fix handling nameless cookie. asashour Fix Results for css selectors startsWith/endsWith/contains fixed for IE8 when searching with an empty string. rbri Fix Result of document.all.namedItem('name') for many hits fixed when simulating IE. rbri Fix Correct results when accessing window.ActiveXObject in IE11. rbri Fix Boolean(document.all) fixed for FF and IE11 (core-js fix). rbri Fix Many fixes for the select option javascript functions and the OptionsCollection. Fixes 1653. rbri Fix WebResponse used for 'about:blank' was shared between different windows. Because the object is not immutable this produces strange side effects. Fixes 1652. rbri Fix Possible NullPointerException in ProxyAutoConfig.isInNet fixed. Fixes 1649. rbri Fix Wrong activeElement for iFrames and their parents. Fixes 1648. Thanks to Carsten Steul. rbri Fix CSS pseudo selector ':checked' selects also selected options. rbri Fix JavaScript: Support event parameter for event handlers created implicit by setAttribute. Fixes 1647. Thanks to Carsten Steul. rbri Add AppletConfirmHandler added. It is possible to define this handler for a web client. This handler is called before an applet code download. By implementing this handler you can restrict the download per applet (like the confirm dialog in the browser). Fixes 1637. rbri Fix Method isDisplayed() now works correct for HtmlImage, HtmlMap and HtmlArea. rbri Fix WebClient.closeAllWindows() now kills the thread, if join does not succeed. This might happen, if one of the javascript jobs runs in an endless loop. rbri Fix WebClient.closeAllWindows() now stops the JS thread also of some onunload handler opens new windows or refreshes iframes. Fixes 1638. rbri Fix JavaScript: DOMTokenList#remove method remains tail-whitespace when the last token was removed. Fixes 1643. rbri Update Mandate Java 7 as a minimum requirement. asashour Fix JavaScript: document.importNode() is supported in Chrome. rbri Fix JavaScript: Improved width calculation if style is set to 'auto'. Fixes 1642. Thanks to Carsten Steul. rbri Fix JavaScript: Simplified synchronization in JavaScriptJobManagerImpl.waitForJobs methods. Fixes 1640. Thanks to Carsten Steul. rbri Fix Fix asText() of HtmlPreformattedText. rbri Fix JavaScript: fix Storage prototype properties. Fixes 1639. asashour Add BrowserVersion: introduce .setHeaderNamesOrdered() to guide the order of the request HTTP headers. asashour Fix JavaScript: fix writing to a read-only property in the prototype. Fixes 1633. Thanks to Jake Cobb. asashour Add Firefox 31 ESR support added. Fixes 1636. rbri Update Upgrade Apache HttpClient to 4.3.5. rbri Fix JavaScript: HTMLStyleElement.getSheet() is supported in Chrome. asashour Fix Many minor fixes for implementation.hasFeature (retested with ff24, ff31 and Chrome added). rbri Fix JavaScript: document.createNSResolver() and .evaluate() are supported in Chrome. asashour Fix JavaScript: window.atob(), .btoa() and .getSelection() are supported in Chrome. asashour Fix JavaScript: CSSStyleDeclaration.getPropertyCSSValue() is supported in Chrome. asashour Fix Many minor fixes for the screen object (setters implemented, more testcases, Chrome support added). rbri Update ProxyAutoConfig package fixed (moved from com.gargoylesoftware.htmlunit.javascript to com.gargoylesoftware.htmlunit). There is still a deprecated class at the original location for backward compatibility. rbri Fix Anchor or form did not load a page if the target URL differs from the current URL and ends with "#". Fixes 1628. rbri Fix HtmlNoScript: expand empty tag. Fixes 1624. asashour Fix JavaScript: fix class name of unknown elements with hyphen in their tag name. asashour Update Upgrade commons-logging to 1.2. rbri Fix JavaScript: default value for XMLHttpRequest.open's async parameter is true. Fixes 1625. Thanks to Jake Cobb. mguillem Fix JavaScript: XMLHttpRequest: overrideMimeType() to handle charset (Chrome and FF). asashour Fix Window.external implementation fixed; the property is available in FF and Chrome also. Additionally we added stubs for the functions AddSearchProvider and IsSearchProviderInstalled. rbri Fix Missing event listener functions addEventListener, removeEventListener and dispatchEvent added to applicationCache. Fixes 1613. Thanks to Jake Cobb. rbri Fix Width and height of file inputs should be greater than zero. Fixes 1622. Thanks to Hartmut Arlt. rbri Fix JavaScript: XMLDocument.getElementById(): to return XML elements (Chrome). Fixes 1618. asashour Fix JavaScript: XMLHttpRequest: support .onload for Chrome. Fixes 1618. asashour Fix Methods setExpression and removeExpression are only available in IE8. rbri Fix Image downloading: try to download only if the src attribute is not empty. rbri Fix Unexpected POST parameters in case of malformed HTML. Fixes 1619. Thanks to Carsten Steul. rbri Fix JavaScript: ensure that values returned by __lookupG(S)etter__ are normal JavaScript objects. Fixed related Rhino warning messages on System.err. (FF) mguillem Add JavaScript: Image.complete support added. Fixes 1617. rbri Fix URISyntaxException thrown while trying to load valid URL (invalid percent sign escaping). Fixes 1587. Thanks to Hartmut Arlt. rbri Fix Improved processing of malformed html. Fixes 1610. Thanks to Carsten Steul. rbri Fix JavaScript: button.type result fixed. rbri Fix JavaScript: function.apply() to handle usual objects. Fixes 1615. asashour Add JavaScript: implement .style.length and indexed value. Fixes 1615. asashour Add JavaScript: .querySelector() is supported in Chrome. asashour Fix JavaScript: .addEventListener() to handle native EventListener objects. Fixes 1614. asashour Add WebClientOptions: add .get and .setMaxInMemory(). Fixes 219. asashour Add WebClientOptions: add .setSSLTrustStore(). Fixes 1611. Thanks to Carsten Steul. asashour Remove BrowserVersion: remove deprecated INTERNET_EXPLORER_9 and FIREFOX_17. asashour Remove KeyDataPair: remove deprecated .getContentType(). asashour Fix HttpWebConnection: Java 7: handle "handshake alert: unrecognized_name" with insecure SSL. Fixes 1612. asashour Update Upgrade Apache HttpComponents to 4.3.4. asashour Fix Fix EOFException when processing responses with broken gzip'ed content. Fixes 1609. rbri

Release 2.15 – Jun 2, 2014

Type Changes By Update Upgrade NekoHtml to 1.9.21. asashour Fix Fix NPE when processing postMessage(). Fixes 1589. rbri Fix JavaScript: document and element .querySelectorAll() is supported in Chrome. Fixes 1597. asashour Fix Some changes of the SOCKS proxy settings are ignored for HTTPS. Fixes 1579. rbri Fix Avoid exception if the content-length provided by the server is not correct. Fixes 1608. Thanks to Carsten Steul. rbri Fix HtmlUnitRegExpProxy: better performance, as String.substring() implementation was changed in Java 7. asashour Fix NoSuchElementException when parsing malformed HTML. Fixes 1605. Thanks to Carsten Steul. rbri Update JavaScriptEngine: deprecate .shutdownJavaScriptExecutor(). asashour Fix JavaScriptEngine: removes all postponed actions on webClient.closeAllWindows();. Fixes 1604. asashour Fix JavaScript: handle RegExp constructed with 'undefined'. Fixes 1599. asashour Add WebClientOptions: add .setSSLClientProtocols(), .setSSLClientCipherSuites() and .setSSLInsecureProtocol(). Fixes 1600. asashour Fix ConcurrentModificationException in WebWindowImpl.destroyChildren(). Fixes 1602. rbri Fix JavaScript: fix .offsetHeight for empty <div>. asashour Fix HTML parsing: move illegal content found within a table before the table. Fixes 1598. mguillem Add JavaScript: Node.textContent can be set in Chrome. asashour Update JavaScript: ComputedCSSStyleDeclaration.getPropertyValue is supported in Chrome. asashour Update KeyDataPair: marked as internal API. asashour Fix HttpWebConnection: set socket timeout also (regression in 2.14). Fixes 1593. rbri Fix HtmlButton.getAttribute("type") now returns the correct value if no type was specified. rbri Fix JavaScript: Function evaluate now returns the correct result when called with XPathResult.BOOLEAN_TYPE as result type. rbri Fix JavaScript: table.insertRow was broken when trying to insert a row directly before the last one. rbri Add JavaScript: Window.name implementation fixed for IE11. Thanks to Frank Danek. rbri Add JavaScript: add support for the bgColor attribute on thead and tfoot element. rbri Update CookieManager: deprecate getCookies(URL). rbri Fix Cookies: Different path interpretation done by IE11 fixed. rbri Fix JavaScript: Some event definitions ignored when simulating IE11. rbri Fix HashMap corruption (leads to an endless loop) because of concurrent access. rbri Fix Cookies: Some fixes for the parsing of the expires date in IE11. rbri Fix HttpWebConnection: socket reuse (regression in 2.14). Fixes 1577. asashour Fix JavaScript: allow use of "in" operator with indexes for StaticNodeList and Attr. Fixes 1559. mguillem Fix File upload content type shouldn't contain charset. Fixes 1585. Thanks to Jakub Kotasek. rbri Fix JavaScript: setting outerHTML now works also for detached elements. Fixes 1584. rbri Add JavaScript: window.navigate(url) for IE browsers added. rbri Fix Optimized image data handling; the finalizer needed for the ImageInputStream no longer stops the image node itself from being gc'ed. Fixes 1583. Thanks to Carsten Steul. rbri Update INCOMPATIBLE CHANGE: All public methods of CookieManager are taking care of the isCookiesEnabled() state. Subclasses have to do the same. This was done as part of the migration to the new HttpClient api. rbri Fix HTML parsing: unknown closing tags can't close any other unknown tags. Fixes 1562. mguillem Add JavaScript: type property now supported by ul and ol tag. rbri Fix JavaScript: Fix handling of coordinate parameters when clicking on an image input. Fixes 1581. rbri Fix JavaScript: fix setting value to toString() function. asashour Update Upgrade Apache commons-lang to 3.3.2. asashour Fix JavaScript: Wrong charCode reported by the onKeyPress keyboard event for the space key. Fixes 1578. rbri Fix JavaScript: Fix our implementation of innerText for table elements. Fixes 1580. rbri Update Upgrade Apache HttpComponents to 4.3.3. asashour Fix JavaScript: The javascript inside the href attrib of an anchor executes in the context of the anchors target. rbri

Release 2.14 – Feb 17, 2014

Type Changes By Update Upgrade NekoHtml to 1.9.20. mguillem Fix Sanitize filenames constructed from URL's. Fixes 1574. rbri Fix JavaScript: Use the correct url for checking if the origin header has to be added to a XMLHttpRequest. Fixes 1575. rbri Fix JavaScript: Property contentDocument (Frame/iFrame) is available in IE8 also. rbri Fix GAEJavaScriptExecutor is public again but marked as part of the internal api. Fixes 1503. rbri Fix JavaScript: Fix encoding of innerHTML result for script content. Fixes 1509. rbri Fix JavaScript: handle 'arguments' as a parameter. Fixes 1572. asashour Fix JavaScript: Internal cleanup and some fixes for the innerHTML/outerHTML/insertAdjacentHTML. Fix appendChild/insertBefore/replaceChild also. Additionally trigger the correct notifications to inform about dom changes. Thanks to Frank Danek. rbri Fix HtmlParser fixed for pages with scripts outside the html tag. rbri Add HtmlFileInput: ability to upload multiple files using setValueAttribute(String []). Fixes 215. asashour Fix HTMLObjectElement: classid could be affected by webClient.setActiveXObjectMap(). asashour Fix Load iframe content when iframe is child of a node added by setting innerHTML. Fixes 1544. rbri Fix JavaScript: body.background property handling fixed for FF. rbri Fix JavaScript: Missing enctype property support added to forms. rbri Fix JavaScript: Attr firstChild/lastChild fixed when no child at all (FF). rbri Fix JavaScript: CORS handling is different in IE11 for the 'about:' protocol. Thanks to Frank Danek. rbri Fix JavaScript: Window many property fixes for IE11 and Chrome. Thanks to Frank Danek. rbri Fix JavaScript: CSSFontFace rule cssText property fixed for IE11. Thanks to Frank Danek. rbri Fix JavaScript: style zIndex is of type integer in IE11. Thanks to Frank Danek. rbri Fix JavaScript: DOMParser.parseFromString() type checking fixed. Thanks to Frank Danek. rbri Fix JavaScript: Function HTMLelement.insertAdjacentText added (IE, Chrome). Thanks to Frank Danek. rbri Update BrowserVersion: deprecate INTERNET_EXPLORER_8 and INTERNET_EXPLORER_9. asashour Fix JavaScript: improved width and height processing for html elements when simulating FF. rbri Fix Fix IllegalArgumentException occuring for entities with invalid UTF16 code. Fixes 1564. mguillem Update Upgrade Apache HttpClient to 4.3.2. asashour Fix CSS: Parsing of the :not pseudo class fixed, only simple selectors are allowed. This was a problem with CSSParser and is fixed in version 0.9.13. rbri Add JavaScript: ClientRect: add 'width' and 'height' properties. Fixes 1570. asashour Fix CSSStyleDeclaration: fix serialization of StyleElement. Fixes 1569. asashour Fix JavaScript: enumerating ordered numbers first (Chrome, FF and IE11). asashour Fix Do not change the active element when the content of an iframe was changed. Fixes 1568. rbri Fix JavaScript: conversion of anchor element into strings fixed. rbri Fix JavaScript: hashChangeEvent processing fixed. Thanks to Frank Danek. rbri Add JavaScript: New event class PointerEvent and BeforeUnloadEvent (required for IE11). Thanks to Frank Danek. rbri Update CSS: cssparser updated to 0.9.12. rbri Fix JavaScript: window.getComputedStyle and CSSStyleDeclaration.getPropertyValue() are supported starting IE9. Fixes 1566. asashour Update BrowserVersion: deprecate FIREFOX_17, FIREFOX_24 is our preferred Firefox for the next months. rbri Fix JavaScript: Document.inputEncoding and Document.characterSet are doing some kind of normalization on the encoding string starting with FF24. rbri Update Upgrade Apache commons-lang to 3.2.1. rbri Fix JavaScript: Window.opener is settable from javascript (FF24). rbri Fix JavaScript: Node.attributes is no longer supported (since FF22). rbri Fix JavaScript: XMLHttpRequest event processing fixed for FF24. rbri Fix Return value fixed for element.height and element.width when element is not attached to the page. rbri Add JavaScript: String.contains() added for FF18 and later. rbri Fix Return value fixed for element.height and element.width when element is not attached to the page. rbri Fix Element.currentStyle returns null for elements not attached to the page. rbri Update Upgrade commons-codec to 1.9. rbri Fix Some more tests converted into WebDriverTestCase. Thanks to Frank Danek. rbri Fix Improved HTML parsing to be more compatible with real browsers. Thanks to Frank Danek. rbri Fix JavaScript: Processing of events for checkbox, radiobutton and select fixed. Thanks to Frank Danek. rbri Fix JavaScript: namespaceURI returns the correct value for html elements. Thanks to Frank Danek. rbri Fix JavaScript: fix parseInt() when the value has a leading 0. Fixes 1563. asashour Add JavaScript: node and window.addEventListener() and .removeEventListener() are supported starting IE 9. Fixes 1536. asashour Fix JavaScript: XMLDocument.firstChild() is now enabled to support more nodes at the root level like ProcessingInstruction, Comment. Thanks to Frank Danek. rbri Fix JavaScript: DomCharacterData.deleteData no longer wipes the string when called with an invalid offset. Also the error handling is fixed. Thanks to Frank Danek. rbri Fix Use the same accept headers as browsers do. Fixes 1245. rbri Fix Possible dead lock in CSSStyleDeclaration fixed. Fixes 1530. rbri Fix JavaScript: Setting the value property of a select element does not trigger the onfocus event handler. Fixes 1558. rbri Fix JavaScript: Fixed enctype form property default value. Fixes 1560. rbri Fix JavaScript: location.hash returns '#' in ie mode if the location url ends with '#' (e.g. http://localhost/something/#). rbri Fix CSS: correct behavior of setting a style value to null. asashour Fix WebClient: .closeAllWindows() to delete all temporary files. asashour Add JavaScript: add missing MessageEvent properties. asashour Fix JavaScript: fix window.postMessage() to verify protocol, port and hostname. asashour Fix JavaScript: XMLHttpRequest CORS handling fixed, some new tests added and implementation fixed. rbri Fix JavaScript: Simplified/fixed implementation of the onReadyStateChange handler call. rbri Fix JavaScript: XMLHttpRequest status and statusText throws an exception in IE8 depending on the state of the request. rbri Fix JavaScript: XMLHttpRequest property 'withCredentials' is not setable in sync mode (browsers specific). rbri Fix JavaScript: XMLHttpRequest property 'withCredentials' is not available in IE8. rbri Fix JavaScript: element.setAttributeNode() applies to XML as well. Fixes 1553. asashour Fix JavaScript: HTMLElement.insertAdjacentHTML() is available in FF since version 8. rbri Add JavaScript: Embed now supports the width and height property. rbri Fix JavaScript: send the correct Referer header when changing the location property. Fixes 1551. rbri Fix SSL: use default algorithm for fetching the KeyManagerFactory. asashour Remove BrowserVersion: remove deprecated FIREFOX_3_6, FIREFOX_10, CHROME_16, INTERNET_EXPLORER_6 and INTERNET_EXPLORER_7. asashour Remove HtmlElement: remove deprecated getElementById() and .hasHtmlElementWithId(), and remove UrlUtils.encodeUrl(). asashour

Release 2.13 – Oct 11, 2013

Type Changes By Update HtmlImage: close imageReader in finalize(). Fixes 1541. asashour Update Upgrade NekoHtml to 1.9.19. mguillem Update CSS: cssparser updated to 0.9.11. rbri Fix Fixed wrong scripting scope assignment when handling attachments. mguillem Add JavaScript: TextRange: add getBookmark() and moveToBookmark(). Fixes 1499. asashour Fix JavaScript: .outerHTML don't check for correct tag closing in FF mode. rbri Fix IEConditionalCompilationScriptPreProcessor fix when evaluated to false. Fixes 1502. asashour Add JavaScript: add SVGSVGElement.createSVGRect(). Fixes 1538. asashour Fix JavaScript: .innerHTML to correctly process nested SVG elements. Fixes 1548. asashour Fix Date.toUTCString and Date.toGMTString now returns the correct format in IE mode. rbri Fix Date.toLocaleTimeString fixed in IE8 mode. rbri Fix Some debug log output added if HTMLDocument.canAlreadyBeParsed(String) returns false. Fixes 1524. rbri Update Deprecate KeyDataPair. asashour Fix JavaScript: array.sort() to use Arrays.LegacyMergeSort with Java 7. Fixes 1511. asashour Add JavaScript: support click method on any element for FF10+ too. mguillem Add JavaScript: window.localStorage and .sessionStorage are supported in Chrome. Fixes 1539. asashour Add JavaScript: node and window.addEventListener() and .removeEventListener() are supported in Chrome. Fixes 1545. asashour Fix CSS: Support selectors with more than one pseudo element (like '#list li:not(#item_1):not(#item_3)'). This was a problem with CSSParser and is fixed in version 0.9.11. rbri Fix JavaScript: HTMLStyleElement.type is writable. asashour Fix JavaScript: Missing setter for element.outerHTML in FF17 fixed. rbri Update Upgrade Apache HttpClient to 4.3.1. asashour Update KeyDataPair: deprecate getContentType(). asashour Fix JavaScript: fixed ClassCastException on TypedArray creation with start offset specified. Fixes 1542. mguillem Add Correct processing of the target window for anchors with hash-only href attribute. Fixes 1537. rbri Add JavaScript: added support for the 'type' and 'media' property of style elements. rbri Fix WebClient.getTopLevelWindows() now returns a snapshot of the list of top level windows to avoid ConcurrentModificationExceptions while using this list. Fixes 1534. rbri Fix In case the server reports an error via HTTP error code, the current page content was not replaced with the content of that error page if the error was the result of a form submit or an anchor click. rbri Fix JavaScript: added (simple) support for window.postMessage. Fixes 1481. mguillem Fix XMLHttpRequest open(..) methods failed when called with null for userid/password. Fixes 1532. Thanks to Sebastian Cato. rbri Fix XMLHttpRequest open(..) methods delivers wrong credentials. Fixes 1531. Thanks to Sebastian Cato. rbri Fix attr.baseURI not supported for FF. rbri Fix node.baseName not supported for XML nodes (IE). Fixes 1525. rbri Fix node.text is unsupported for text nodes in XML documents. Fixes 1523. Thanks to Chuck Dumont. rbri Fix XPathEvaluator.evaluate() ignores namespace resolver. Fixes 1528. Thanks to Chuck Dumont. rbri Fix XPathResult types STRING_TYPE, NUMBER_TYPE and BOOLEAN_TYPE don't work. Fixes 1527. Thanks to Chuck Dumont. rbri Fix Method document.createStyleSheet is more compatible with the IE; now the associated link node is also created and inserted at the right place in the header. The new link node is the ownerNode of the stylesheet. Fixes 1520. rbri Fix Using a wrong index when addressing an StyleSheetList always throws an Exception in IE. rbri Fix Fix the way we search for some java methods when creating a XML document from ActiveXObject. This should work with all JavaVMs now. Fixes 1521. rbri Fix Improved namespace support for XPath expressions. Fixes 1519, 1522. Thanks to Chuck Dumont. rbri Update Upgrade Apache HttpClient to 4.2.5. rbri Fix Support for the label property added to the optgroup element. rbri Update Ensure that onchange event isn't called at focus lost after usage of HtmlInput.setValueAttribute. Fixes 1518. mguillem Update JavaScript: add support for XPathEvaluator (FF & Chrome). Fixes 1516. mguillem Fix The display property now returns the correct default value for all HTML tags. rbri Fix Respect the media type when processing the import rules from a CSS style sheet. Fixes 1515. Thanks to Guy Burton. rbri Fix JavaScript: add basic support for window.navigator.security (FF only). mguillem Fix Make the handling of empty responses more error proof. Fixes 1510. rbri Fix Textarea cols() and rows() property processing fixed. rbri Fix Basefont support removed from Firefox after 3.6. rbri Fix Adjust the window.outherHeight for the newer FF versions. rbri Fix Use the correct frame/iframe for a given target if more than one exists for the given name. Fixes 1488. rbri Fix The value of input controls changes when the defaultValue was changed in IE8ff. rbri Fix The default value of input-file is no longer empty in IE8ff. rbri Fix Checked state of radio buttons and checkboxes changes when setting defaultChecked in IE8. rbri Update Upgrade commons-codec to 1.8. rbri Fix JavaScript: fix the mousedown/mouseup events triggered when clicking on an option. rbri Fix JavaScript: starting with IE8 the radio button checked state is reseted to false when adding to page. rbri Fix JavaScript: load the source of a dynamically created HTML(I)FrameElement first when it is added to the DOM. mguillem Fix JavaScript: IE 9 supports String.trim(). Fixes 1501. rbri Update Upgrade commons-logging to 1.1.2. rbri Fix Proxy configuration now respects the bypass host also after the proxy was used for another host before. Fixes 1486. Thanks to John J Murdoch. rbri Fix JavaScript: image.width() and image.height() are returning now the correct image size. Fixes 1476. rbri Fix JavaScript: DOMTokenList now works like in FF (different from spec). Some NPE exceptions are fixed, separator chars are fixed, and we are able to create an attribute if needed. rbri Fix JavaScript: Removing frame tag removes the associated FrameWindow also. Fixes 1497. rbri Fix HtmlPage.getElementById: always return the first element in document order (and not the first parsed one). mguillem Fix DomNode.querySelectorAll: return nodes matched by many selectors only once. mguillem Fix JavaScript: JS click() method triggers onchange handler on checkbox and radio button. mguillem Fix DomNode.removeAllChildren should not detach nested children from their parent node. Fixes 1494. mguillem Update WebRequest: deprecate constructor (WebRequest, URL). rbri Fix JavaScript: Attribute.expando now returns the correct value instead of the so far hard coded true (IE only). Fixes 1493. Thanks to Barry Pitman. rbri Remove WebClient: remove deprecated setPrintContentOnFailingStatusCode(), getPrintContentOnFailingStatusCode(), setThrowExceptionOnFailingStatusCode(), isThrowExceptionOnFailingStatusCode(), setJavaScriptEnabled(), isJavaScriptEnabled(), setCssEnabled(), isCssEnabled(), setAppletEnabled(), isAppletEnabled(), setPopupBlockerEnabled(), isPopupBlockerEnabled(), getHomePage(), setHomePage(), getProxyConfig(), setProxyConfig(), setRedirectEnabled(), isRedirectEnabled(), setUseInsecureSSL(), setActiveXNative(), isActiveXNative(), getTimeout(), setTimeout(), isThrowExceptionOnScriptError(), setThrowExceptionOnScriptError() and setSSLClientCertificate(). asashour Remove Remove deprecated BaseFrame, Htmlpage.getElementByAccessKey(), HtmlPage.getElementsByAccessKey(). asashour

Release 2.12 – Mar 6, 2013

Type Changes By Update BrowserVersion: support FF17, deprecate FF3.6. mguillem Fix JavaScript: add support for window.onchange handler (FF10+ and Chrome). Fixes 1484. Thanks to Hartmut Arlt. mguillem Fix Fixed synchronization problem causing a task triggered by setTimeout to be executed to early, before event handlers. mguillem Fix CookieManager: changed getCookies to return a copy of the current set of cookies to avoid ConcurrentModificationException. mguillem Fix JavaScript: add empty implementations of CanvasRenderingContext2D methods createImageData, createPattern, createRadialGradient, fillText, getImageData, getLineData, isPointInPath, measureText, putImageData, rect, rotate, setTransform, strokeText, and transform (FF). mguillem Fix Support for CSS pseudo selector ':target' added. rbri Add JavaScript: add DocumentFragment.querySelectorAll()/DocumentFragment.querySelector(). rbri Fix JavaScript: move method contains to Node, throw runtime exception on invalid argument. Fixes 1480. mguillem Fix Method innerHTML does not encode entities for style tags. rbri Add Initial support for HtmlMeter (FF 17). mguillem Fix JavaScript: fixed exception occurring while testing window or document == "some string". Fixes 1479. mguillem Fix Support for CSS pseudo selector ':focus' added. Fixes 1478. rbri Fix When simulating IE, the initial focus for a page is on the html element. rbri Fix JavaScript: fixed hanging problem (infinite loop) after Object function was called with a window as parameter. mguillem Fix JavaScript: determine default path for cookies set with document.cookie from current URL. Fixes 1458. mguillem Fix JavaScript: place document before window in scope chain for event handlers defined in HTML attributes. Fixes 898. mguillem Add JavaScript: added basic support for SVGAngle and SVGMatrix. mguillem Fix JavaScript: HTMLDocument.createElementNS can create SVG elements. mguillem Add JavaScript: add support for SVGSVGElement's style property and basic support for methods createSVGMatrix and getScreenCTM. mguillem Fix JavaScript: add support for CanvasRenderingContext2D.quadraticCurveTo (FF). mguillem Fix JavaScript: execute onload handler of pages loaded in a frame, replacing a previous content. Fixes 1443. mguillem Update Upgrade Apache HttpClient to 4.2.3. rbri Fix JavaScript: elements nested within an element with "display: none" have offsetHeight = offsetWidth = 0. mguillem Fix JavaScript: fixed wrong trigger of focus event in special cases when field loses focus. mguillem Fix JavaScript: ignore invalid indexes for History.go. mguillem Fix Some more elements to close "p": address, center, dd, dir, dl, dt, fieldset, listing, li, menu, ol, pre, ul and xmp. asashour Update Set max number of simultaneous connections per server to 6. mguillem Fix Handle pages with "application/javascript" content type as JavaScriptPage. Fixes 1471. asashour Add CSS: support Selectors Level 3. asashour Update JavaScript: fix document/element . querySelectorAll()/querySelector() (IE8). asashour Add JavaScript: add document.documentMode (IE). asashour Fix Fix URL handling of local files in Windows, if they have folders starting with dot. asashour Add JavaScript: add document.implementation.createDocument for Chrome. asashour Update UrlUtils: deprecate encodeUrl(URL, boolean). asashour Fix Fix the encoding of clicked links to match the enclosing page (FF). Fixes 1402. asashour Update Upper-case the charset detected from "meta" tag. asashour Update JavaScript: adjust availability of window.console (Firefox 4+, IE9+ and Chrome). mguillem Fix Fixed typo in method names of com.gargoylesoftware.htmlunit.WebConsole.Formatter. mguillem Add JavaScript: add document.charset, .characterSet, .defaultCharset and .inputEncoding. asashour Fix CSS: fix DirectAdjacentSelector (E + F). asashour Fix JavaScript: fix the value of "(i in x)" for NodeList, HTMLCollection and CSSRuleList. Fixes 1456. asashour Update HtmlElement: deprecate getElementById() and hasHtmlElementWithId(). asashour Update BrowserVersion: deprecate INTERNET_EXPLORER_6, INTERNET_EXPLORER_7, FIREFOX_10, CHROME_16, and make INTERNET_EXPLORER_8 the default one. Add INTERNET_EXPLORER_9, FIREFOX_17 and CHROME. asashour Fix JavaScript: fix Date.toLocaleDateString() and .toLocaleTimeString(). Fixes 1467. asashour Add Add BrowserVersion.clone(). mguillem Fix Fix a potential ConcurrentModificationException, on calling WebClient.getWebWindows(). asashour Fix WebClient.closeAllWindows() to delete all temporary created big files. Fixes 1344. asashour Fix JavaScript: .outerHTML of "basefont", "col", "embed" and "wbr" have forbidden end tag (FF). asashour Fix Escape "%%" in query string to avoid IllegalArgumentException. mguillem Add JavaScript: initial support for HTMLBGSoundElement (IE). asashour Fix JavaScript: HTMLElement.outerHTML use lower case for unknown, "spacer" and "multicol" elements (IE). asashour Fix Fix URL manipulation (UrlUtils) for file URLs containing drive letter. rbri Fix JavaScript: fix handling relations of document type comment with <html> element (IE). asashour Fix JavaScript: properties of Array.prototype should be defined in standards mode (IE). asashour Fix JavaScript: correctly process null function handlers. asashour Fix JavaScript: correct select.value after enclosing form.reset(). asashour Fix JavaScript: XML: element.removeAttribute() is case-sensitive. asashour Fix Correctly handle local file URL if it is in a separate driver (Windows). Fixes 1464. asashour Fix JavaScript: fix the return value of element.getAttribute() in standards mode (IE). asashour Fix JavaScript: element.set/getAttribute() should fix the name (e.g. "className") only in quirks mode (IE). asashour Fix Cookies: use 1970 as two digits year start for the expiration date. mguillem Fix Cookies: accept more non standard date formats for the expiration date. mguillem Fix Properly handle spaces after elements: "abbr", "acronym", "basefont", "bdo", "big", "blink", "cite", "code", "del", "dfn", "em", "ins", "kbd", "label", "map", "nobr", "q", "s", "samp", "small", "strike", "sub", "sup", "tt" and "var". Fixes 1463. asashour Fix JavaScript: element.outerHTML should throw an error if the provided value closes the parent. Fixes 1452. asashour Fix JavaScript: element.outerHTML should not print end tag if it is forbidden. asashour Change default RefreshHander to a NiceRefreshHandler(2). Fixes 1126. mguillem Fix Support Internationalized Domain Name (IDN). Fixes 1459. asashour Change default network timeout from infinite wait to 90 seconds. mguillem Fix JavaScript: function name referenced before its declaration should be visible (IE). asashour Fix JavaScript: function name referenced before its declaration should throw an exception (FF). asashour Fix JavaScript: prevent infinite loop during adding a DomNode to itself. Fixes 1253. asashour Fix JavaScript: don't enumerate function properties "arguments" and "caller". mguillem Fix JavaScript: handle definition of "function object.property() {}" (IE). asashour Add JavaScript: implement property HTMLElement.dataset (FF10). asashour Remove JavaScript: remove "constructor" property of host objects (IE). Fixes 1420. asashour Remove Cookie: remove deprecated (String name, String value) constructor. asashour

Release 2.11 – Nov 6, 2012

Type Changes By Update Upgrade NekoHtml to 1.9.17. mguillem Fix JavaScript: remove unneeded global properties ("java", "Packages" and "getClass") (FF). asashour Add JavaScript: implement "constructor" property of all host objects (FF). Fixes 1420. asashour Fix Properly handle spaces after "strong", "b", "i" and "u" elements. Fixes 1451. asashour Fix JavaScript: node.outerHtml not allowed for body and head nodes. rbri Fix JavaScript: "this === window" should be true. asashour Update CSS: cssparser updated to 0.9.8. rbri Fix Avoid double form submission when the onclick handler of a submit button calls form.submit() and the submission is answered by a redirect. mguillem Add JavaScript: implement window.dispatchEvent() (FF only). Fixes 1439. asashour Fix JavaScript: Some more fixes for correct calling of the Image onload handler. Fixes 1339. rbri Fix In some cases the javascript execution context was overwritten. This produces side effects like the one in this issue. Fixes 1433. rbri Update Handle NoHttpResponseException like an HTTP error and ignore it when option throwExceptionOnFailingStatusCode is set to true. mguillem Fix Handle 'deflate' Content-Encoding with content compressed using GZip compatible mode. mguillem Fix JavaScript: setting iframe.src to 'about:blank' should not load the page. Fixes 1441. asashour Fix JavaScript: iframe.src should point to the related page. Fixes 1441. asashour Add HtmlEmbed: add saveAs(File). Fixes 147. asashour Add JavaScript: XMLHttpRequest: support Cross-Origin Resource Sharing (CORS). Fixes 1356. asashour Fix JavaScript: Image onload not called after src change (using setAttribute('src', ) instead of src property). Fixes 1435. rbri Update DomNode: make .querySelectorAll() and .querySelector() public. Fixes 141. asashour Fix JavaScript: 'focus' and 'blur' event is triggered for 'document' descendants (FF and Chrome). Fixes 1314. asashour Fix Cookies: fix year with two digits. asashour Fix IE Conditional comments: handle "downlevel revealed" conditional cases. Fixes 1436. asashour Fix JavaScript: allow re-declaration of undefined, NaN and Infinity. Fixes 1399. mguillem Fix JavaScript: allow assignment to undefined, NaN and Infinity (FF3.6 and IE). mguillem Add JavaScript: implement Typed Arrays, namely ArrayBuffer, DataView, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array and Uint8ClampedArray. Fixes 1429. asashour Fix JavaScript: document.domain now allows the change from localhost to a different domain. Fixes 1340. rbri Fix JavaScript: exception.stack should not be defined in IE. asashour Add JavaScript: WebWindow: add getters and setters for window width and height. asashour Add JavaScript: add support for HTMLMediaElement.canPlayType(). asashour Fix Fixed NPE in HtmlPage.getTitleText() and WebClient.closeAllWindows() occurring when document.documentElement has been removed. Fixes 1154. mguillem Fix JavaScript: add support for CSSFontFaceRule (Firefox). mguillem Fix JavaScript: ensure that property "argument" of a function is null outside of it's scope. mguillem Fix JavaScript: add support for getAttributeNS, hasAttributeNS, removeAttributeNS, and setAttributeNS on Element (Firefox). Fixes 154. Thanks to lexicore. rbri Fix Missing synchronization in StorageImpl fixed. Fixes 1437. rbri Fix NPE fix for Range.htmlText. rbri Fix NPE fix for Range.parentElement(). rbri Fix Empty responses marked as GZip encoded no longer throwing an error. Fixes 1434. rbri Fix UrlUtils: fix an infinite loop when base URL is relative. Fixes 1431. asashour Fix JavaScript: ClassCastException in Window.jsxFunction_open() fixed. Fixes 1432. rbri Fix Timeout configuration changes are now taken into account. mguillem Update WebClient: deprecated setTimeout() and getTimeout(). Use webClient.getOptions() instead. mguillem Fix JavaScript: HTMLTableElement.refresh is only available when simulating IE. rbri Fix JavaScript: HTMLTableElement.moveRow, HTMLTableSectionElement.moveRow, Tfoot.moveRow, and THead.moveRow are only available when simulating IE. rbri Update INCOMPATIBLE CHANGE: WebResponseDate.getInputStream(), BinaryPage.getInputStream(), UnexpectedPage.getInputStream(), WebResponse.getContentAsStream(), and WebResponseWrapper.getContentAsStream() are throwing an IOException now. rbri Fix JavaScript: fixed namespace handling for nodes imported from an xml document via document.importNode(). Fixes 1427. rbri Fix DebuggingWebConnection: fixed IOException occurring while working with gzip encoded JavaScript responses. mguillem Update JavaScript: disabled (limited) JavaScript execution in HtmlPage instances that are not "active" anymore. mguillem Fix JavaScript: improved verifications to avoid that background tasks continue to run when page has been unloaded. mguillem Fix Google App Engine support: don't follow redirects automatically in UrlFetchWebConnection. Fixes 1425. mguillem Add Add SOCKS proxy support for HTTPS. Fixes 1206. mguillem Update HttpWebConnection: removed setUseInsecureSSL. Settings is now read from WebClientOptions. mguillem Update INCOMPATIBLE CHANGE: The interface HTMLParserListener is enhanced to be able to handle the html source when parsing a snippet. asashour Update WebClient: getWebConnection() and setWebConnection() are part of the public APIs. asashour Fix JavaScript: remove customized "eval", and depend on core-js. Fixes 1130. asashour Fix BackgroundJavaScriptFactory is now configurable. Fixes 208. rbri Fix JavaScript: function.arguments can be read-only (Chrome). asashour Add JavaScript: align property support added to heading elements rbri Fix JavaScript: setting script.text re-executes the script (IE) (in IE mode). Fixes 1078. rbri Fix JavaScript: fix various problems with re-execution of script. Fixes 1416. rbri Fix JavaScript: event handler functions should have a name. asashour Add JavaScript: implement function.arguments, and correct Arguments default value. Fixes 1421. asashour Update JavaScript: let event.type and .button, .clientX, .clientY to have setters. asashour Fix JavaScript: fix cases when trying to set a read-only attribute. Fixes 1422. asashour Add Add support for "Do Not Track" feature (FF10 only). asashour Update WebClient: deprecate setJavaScriptEnabled(), isJavaScriptEnabled(), setThrowExceptionOnScriptError(), isThrowExceptionOnScriptError(), setThrowExceptionOnFailingStatusCode(), isThrowExceptionOnFailingStatusCode(), setCssEnabled(), isCssEnabled(), setAppletEnabled(), isAppletEnabled(), setPopupBlockerEnabled(), isPopupBlockerEnabled(), setRedirectEnabled(), isRedirectEnabled(), setUseInsecureSSL() and setSSLClientCertificate(), setHomePage(), getHomePage(), setPrintContentOnFailingStatusCode(), getPrintContentOnFailingStatusCode(), getProxyConfig(), getProxyConfig(), setActiveXNative(), isActiveXNative(). Use webClient.getOptions() instead. asashour Add JavaScript: implement navigator.buildID, .oscpu, .vendor and .vendorSub. asashour Fix JavaScript: fix document.bgColor, .fgColor, body.aLink, .bgColor, .link, .text and .vLink. asashour Add JavaScript: implement document.getSelection(), .head, .alinkColor, .linkColor, .vlinkColor, and window.dump(). asashour Add DOM: implement text.getWholeText(). asashour Fix JavaScript: fix navigator.appMinorVersion, .cpuClass, .systemLanguage and .userLanguage values. asashour Add Geolocation: primitive support (FF only). Fixes 1331. asashour Add Implement WebConsole and JavaScript Console (FF only). Fixes 1397. Thanks to Andrea Martino. asashour Add JavaScript: implement element.classList (FF only). asashour Add JavaScript: add element.children (FF), it was implemented for only IE. asashour Update JavaScript: separate NodeList from previously existing HTMLCollection. asashour Add JavaScript: add node.attributes and element.baseURI. asashour Fix JavaScript: incompatible objects with the respective BrowserVersion should be HTMLUnknownElement. asashour Add Initial support for HtmlProgress (FF 10). asashour Add JavaScript: implement document.scripts for FF 10 (in addition to already implemented IE). asashour Add JavaScript: implement node.parentElement (FF 10). asashour Add Initial SVG support. asashour Update INCOMPATIBLE CHANGE: rename IElementFactory to ElementFactory, and change the return type of its methods from HtmlElement to DomElement. asashour Fix HtmlPage: cloneNode() should clone the underlying ScriptObject. asashour Add HtmlElement: support special keys for .type(int). asashour Update BaseFrame: is now deprecated, please use BaseFrameElement instead. asashour Fix BaseFrameElement: create a WebWindow for the new clone instance. Fixes 1195. asashour Fix Cookies: enable cookies after being disabled, should work. Fixes 1235. asashour Add DomElement: now implements ElementTraversal, with the corresponding JavaScript getters (FF only). Fixes 1141. asashour Add JavaScript: implement more Range methods. Fixes 1209. Thanks to James Phillpotts. asashour Fix JavaScript: document.getElementById() finds non-HTML elements. Fixes 1295. asashour Update HtmlPage: deprecate .getElementByAccessKey(), use .getHtmlElementByAccessKey() instead. asashour Update INCOMPATIBLE CHANGE: change the return type of HtmlPage.getElementById(), .getElementByName(), .getElementsByName(), .getElementsByTagName(), .getElementsByIdAndOrName() and HtmlElement.getChildElements() from HtmlElement to DomElement. asashour Update Mandate Java 6 as a minimum requirement. asashour Fix Delete temporary generated files on page.cleanUp(). Fixes 1344. Thanks to Nicolas Belisle. asashour Fix JavaScript: DocType is handled as Comment (IE only). asashour Update JavaScript: HTMLGenericElement instead of HTMLUnknownElement, and HTMLCommentElement instead of Comment (IE only). asashour Fix JavaScript: object default value to contain the name, in strict mode (IE only). asashour Fix JavaScript: Node should not define '.innerText'. asashour Fix JavaScript: comments are elements, most properties implemented (IE8 only). asashour Fix JavaScript: document.getElementById() should not search by name, with strict mode (IE8 only). asashour Add JavaScript: initial WebSocket support. asashour Remove Remove deprecated BrowserVersion.FIREFOX_3. asashour

Release 2.10 – Jul 21, 2012

Type Changes By Fix CSS: handling attributes which do not need explicit values, e.g. [disabled]. asashour Fix Google App Engine support: allow frame loading. Fixes 1418. mguillem Fix Cookie: null path is treated as "/" in .equals() and .hashCode() asashour Update Upgrade Apache HttpClient to 4.2.1. rbri Add JavaScript: window.onhashchange support added. Fixes 1410. asashour Update DomNode: fix potential NPE in DomNode.DescendantElementsIterator. Fixes 1404. asashour Add JavaScript: add window.mozInnerScreenX, .mozInnerScreenY and .mozPaintCount (FF only). Fixes 1410. asashour Update WebRequest: add default value for "Accept-Encoding" HTTP header. asashour Fix Fixed error processing when the onerror handler throws an error. Fixes 1406. Thanks to Hartmut Arlt. rbri Update JavaScript: add DocumentFragment.createAttribute(), createComment(), createDocumentFragment(), createElement() and createTextNode() (IE only). Fixes 1408. asashour Fix Some more style properties are now supported; IE8 simulation now supports the same set of properties like the real one. rbri Fix Correct the formating of the opacity style value. Fixes 1405. rbri Fix Correct the handling of unsupported style properties when simulating IE. rbri Fix Truncate file names in HtmlPage.savePage and DebuggingWebConnection to avoid exception due to too long file names. mguillem Fix JavaScript: querySelector(All) throws for invalid selectors. mguillem Fix Java 7: fix SSLPeerUnverifiedException for valid certificates when WebClient.setUseInsecureSSL(true) is used. mguillem Update Upgrade commons-codec to 1.6 rbri Update Upgrade Apache HttpClient to 4.2. asashour Add WebClient: add .setSSLClientCertificate() for client certificate authentication. Thanks to Martin Huber. asashour Fix CSS: The ':disabled' and the ':enabled' selector now works for all HtmlElements implementing the DisabledElement interface. Now the selector also checks e.g. Button and Textarea elements. rbri Fix JavaScript: handle out of bound moves for TextRange (IE only). Fixes 1357. Thanks to David Gileadi. mguillem Fix Google App Engine support: added basic cookie support. Fixes 1335. Thanks to Pieter Herroelen. mguillem Fix Fix XHR.onreadystatechange now supplies an event argument if simulating FF. Fixes 1365. rbri Update Unauthorized response should be received only once, and subsequent requests should have the Authentication string. asashour Update INCOMPATIBLE CHANGE: do not allow WebClient.addRequestHeader("Cookie", value) and Cookie must have a domain. asashour Fix Fix default content encoding for XML files. Fixes 1311. rbri Fix JavaScript: don't restrict XMLHttpRequest to same origin for FF 3.6 and upper. Fixes 1388. Thanks to James Phillpotts. mguillem Update Upgrade CSS Parser to 0.9.7. asashour Fix Fix missing support for different handling of self closing tags in HTML and XHTML. Fixes 1219. rbri Fix Fixed cookie threading issue. Fixes 1388. Thanks to James Phillpotts. mguillem Fix Fix a possible performance problem caused by a code fragment no longer needed after the update to HttpClient 4.1. Thanks to Gareth Doutch. rbri Update Upgrade Apache commons-io to 2.2. rbri Fix Check the onclick event for preventDefault/returnValue also when the handler produces no result. rbri Fix Don't create a new Attr when setAttributeNode(Attr) is called. This fixes jQuery.attr for IE browsers. Fixes 1375. rbri Fix HtmlElement attributes collection returns an empty attr for 'class' if simulating IE. rbri Fix Ignore gzip encoding problems when downloading external css content. Fixes 1389. rbri Fix Methods element.getElementsByTagName() and XMLDocument.getElementsByTagName() are now namespace aware. rbri Fix Method element.querySelectorAll() now only selects descended nodes of the element. rbri Update Upgrade Apache HttpClient to 4.1.3. rbri Fix Call onload event for frames in the correct order. Fixes 925. rbri Fix Implement some more fixes for handling of '!important' rules. Fixes 1386. rbri Fix Avoid calling class.getPackage() because of broken class loader implementation in ColdFusion. Fixes 1385. rbri Fix JavaScript: CSSStyleDeclaration.removeProperty is now available in FF mode. rbri Fix Some not needed exception declarations are gone. Fixes 1380. rbri Fix isDisplayed() has to return false for hidden form fields. Fixes 1376. Thanks to Hartmut Arlt. rbri Fix Cookies: add support for Set-Cookie attribute httpOnly. Fixes 1374. mguillem Fix JavaScript: fix strange return value 'net.sourceforge.htmlunit.corejs.javascript.UniqueTag.NOT_FOUND' of ComputedStyle.getPropertyValue. rbri Fix JavaScript: make Element.getBoundingRect available when simulating FF too. mguillem Fix If JavaScript is disabled, don't download the image even if an onload handler is defined. Fixes 1221. rbri Fix JavaScript: document.forms(0) is not valid in FF. Fixes 985. rbri Fix JavaScript: Initialization of the popup window misses some steps. Fixes 1134. rbri Fix JavaScript: Remove also the node parents from style cache when changing a node, because some styles have an effect for the parent properties also (e.g. height, width). Fixes 1021. rbri Fix JavaScript: script.text works correct now for script nodes with more than one child node. rbri Fix JavaScript: possible ClassCastException fixed in JavaScriptExecutionJob. Additionally cleaned up the code a bit and some more details added to the error messages. Fixes 1354. Thanks to rmillet42. rbri Fix JavaScript: StyleSheet insertRule/addRule and deleteRule/removeRule exception handling fixed. Now we reporting syntax errors back to javascript. rbri Update CSS: cssparser updated to 0.9.7-SNAPSHOT. rbri Update Upgrade Apache commons-lang to 3.1. rbri Fix JavaScript: document.getElementsByClassNameNS("*", "html") now returns the HTML tag for a page. Fixes 1363. Thanks to Daniel Wagner-Hall. rbri Fix JavaScript: concatenate all text nodes under a <script> tag when calculating the script code. Fixes 1364. Thanks to Daniel Wagner-Hall. rbri Fix JavaScript: No execution of javascript, if script tag imported (replaceChild) from different dom (xml). Fixes 1096. rbri Fix JavaScript: fix transformation of regular expressions like '{{something}}' into java regular expressions. Fixes 1360. rbri Fix HtmlScript.asXml(): don't insert CDATA if it is already present. Fixes 1343. mguillem Fix HtmlTable.getCellAt() now works in complex situations with colspan and rowspan. Fixes 1359. rbri Fix Ignore expiration date if the format is incorrect for cookies set by the remote server. Accept expiration dates enclosed with double quote. Fixes 1348. mguillem Fix JavaScript: NPE when the event handler performs only preventDefault(). Fixes 1184. rbri Fix JavaScript: Selecting an option via javascript (e.g. sel.options[1].selected = true) no longer triggers the focus event. rbri Fix JavaScript: JavaScriptExecutor had a memory leak; the list of jobs was never cleaned. Thanks to rmillet. rbri Fix JavaScript: addEventListener/attachEvent are behaving like the browser if called with null event handler. rbri Update Rewritten applet support; we support now many jar archive files, the codebase attribute, parameters, access to the codebase, documentbase and the parameters from the applet and LiveConnect (at the moment this is only a small stub). rbri Update Upgrade Apache commons-io to 2.1. rbri Fix JavaScript: fixed StackOverflowError occurring with onload handlers in documents created with document.write (IE only). Fixes 1346. mguillem Fix Better error message if browser configuration contains an unknown key. Fixes 1347. Thanks to Marco Cova. rbri Fix JavaScript: 'onload' handler for iframes was not called if an iframe without src attribute was added from javascript. Fixes 1334. rbri Fix JavaScript: 'onload' handler for iframes was called if an iframe was added to an document fragment. Fixes 1334. rbri Fix JavaScript: 'onload' handler for iframes was not called in IE mode if an iframe was added to an document fragment and after that the iframe was added to the document itself. Fixes 1334. rbri Fix Malformed HTML code: handle nested forms. mguillem Add Add NiceRefreshHandler. Fixes 1126. mguillem Fix Click on a selected option in a multiple select element unselects it. mguillem Fix JavaScript: StringIndexOutOfBoundsException when calling TextRange.text. rbri Fix CSS: forward the URI of an style sheet to the CSS parser for better error messages. Fixes 1337. Thanks to Anton Kozak. rbri Fix JavaScript: IEConditionalCompilationScriptPreProcessor throws exceptions for some scripts. Fixes 1325. Thanks to Adam Doupe. rbri Fix JavaScript: document property 'activeElement' is now available in FF3.6 mode. Fixes 1333. Thanks to Hartmut Arlt. rbri Fix SSL: for web servers which support only SSLv3, try to explicitly reconnect with that version. asashour Fix JavaScript: trim value of type attribute before to verify it (FF only). Fixes 1332. mguillem Fix CSS: support for @font-face fixed. Fixes 1066. rbri Fix JavaScript: document property 'readyState' is now available in FF3.6 mode. Fixes 1321. Thanks to Hartmut Arlt. rbri Remove Remove deprecated WebRequestSettings, WebResponseImpl, some BrowserVersion constants, DefaultCredentialsProvider.addProxyCredentials() and WebResponse.getContentAsBytes(). asashour

Release 2.9 – Aug 9, 2011

Type Changes By Fix CSS: pseudo class 'disabled' now supported in FF mode. rbri Fix JavaScript: properly handle XML inside frame. Fixes 1312. asashour Fix JavaScript: Wrong offsetHeight for elements with height set to 0px fixed. Fixes 1290. rbri Add Initial support for css background shorthand added. Fixes 1293. rbri Fix JavaScript: avoid encoding of % in Location.href when set as part of Location.hash. mguillem Fix HtmlPage.savePage: ensure that the right option is saved as selected. mguillem Fix JavaScript: ensure that first cell off each row has the same offsetLeft. Fixes 1251. mguillem Fix Missing history update during window.location.replace(newUrl) fixed. Fixes 1302. Thanks to Hartmut Arlt. rbri Fix NullPointerException in css parser error handler fixed. Fixes 1300. rbri Fix JavaScript: Fix for null index handling when adding a select option. Fixes 1298. rbri Fix JavaScript: zIndex handling fixed in many ways. Fixes 1299. rbri Fix JavaScript: fixed IndexOutOfBoundsException when accessing the CSSRuleList. Thanks to Peter Wilkinson. rbri Fix JavaScript: add support for CssStyleSheet removeRule & deleteRule. Fixes 1296. Thanks to Peter Wilkinson. rbri Add JavaScript: add support for element.removeAttributeNode() for IE too. Fixes 1294. mguillem Fix In some cases a new window was not attached to the JavaScript background worker thread. rbri Fix HtmlPage.save: fix exception occurring when a referenced image is not an image. mguillem Fix JavaScript: fix string conversion of native functions. mguillem Fix Parsing: accept self closing <iframe/> tags when simulating IE. mguillem Fix Fix a NPE because of bugs in NamedAttrNodeMapImpl. Fixes 1291. rbri Fix CSS: support for media="all" added. Fixes 1292. rbri Fix Wrong DOM node generated for tables. Fixes 1271. rbri Fix CCS parsing not required for Page.getTitleText(). Fixes 1199. rbri Fix JavaScript: add support for NamedNodeMap.removeNamedItem. Fixes 1270. mguillem Fix NPE fixed when CSS style declarations are addressed from JavaScript. rbri Fix INCOMPATIBLE CHANGE: The whole construction/setup of the AbstractHttpClient is now done by the factory method com.gargoylesoftware.htmlunit.HttpWebConnection.createHttpClient(). Only the setup of our cookie spec factory is done outside this call because this is really required later on. This gives you more flexibility setting up your own client. If you already do this, please check your implementation for compatibility. Fixes 1267. rbri Add JavaScript property mediaText and function item added to class MediaList. rbri Add JavaScript support for class CSSMediaRule added. rbri Fix Avoid exception occurring when script's src attribute is only "http://". Fixes 1267. mguillem Fix Recursion in CSS import causes stack overflow. Fixes 1088. rbri Fix Fix order of steps during Window initialization to avoid NPE in later access. Fixes 1273. Thanks to Kohsuke Kawaguchi. rbri Add DefaultCredentialsProvider: reactivate removed addNTLMCredentials and addNTLMProxyCredentials as HttpClient 4.1 now provides full support for NTLM authentication. mguillem Update Upgrade Apache HttpClient to 4.1.1. mguillem Fix Use correct separator for 'src' and 'href' attributes. Fixes 1268. rbri Fix Follow hyperlink when click is performed on a nested element. Fixes 1265. rbri Fix XMLSerializer.serializeToString() generate lower case tags for FF 3.6. rbri Fix XMLSerializer.serializeToString() generates self closing tags as defined by xhtml (only FF 3.6). Fixes 1228. rbri Fix Fix synchronization problem causing wrong page to be occasionally loaded into a window. Fixes 1259. Thanks to Nikolai Avteniev. mguillem Update INCOMPATIBLE CHANGE: The WebRequest no longer has a CredentialProvider as attribute. Now there are two attributes of type Credentials named urlCredentials and credentials. The attribute credentials has a getter and a setter method; the urlCredentials are only addressable via getter call. This change was needed to support credentials as part of the url. rbri Fix Improved memory handling of JavaScriptExecutor. Thanks to Kostadin Chikov. rbri Update Upgrade Apache commons-io to 2.0.1. rbri Fix Calculation for the next execution time of jobs (setInterval) fixed for some cases. Thanks to Nikolai Avteniev. rbri Fix JavaScript: fix exception in getComputedStyle occurring while evaluating child selector for node within a DocumentFragment. Fixes 1258. mguillem Fix Follow hyperlink when click is performed on a nested element. Fixes 1240. mguillem Fix IFrame created from javascript doesn't load source'. Fixes 1205. rbri Fix Initialization of iframes corrected, if content was written from javascript. Fixes 1160. rbri Fix Remove expired cookies. Fixes 1252. Thanks to Nikolai Avteniev. mguillem Fix Serialization support fixed for Pages with unfinished JavaScriptJob's. These jobs are NOT serialized. Fixes 1200. rbri Fix JavaScript: user and password parameters for the XMLHttpRequest.open method are optional; the check of there existence is fixed. Only if a user is set, a CredentialProvider is associated with the request (witch overwrites the one from the WebClient). rbri Fix NPE if URL contains basic auth info without password. Fixes 1241. rbri Fix JavaScript: Use the right encoding for the implementation of the loadXML and parseFromString methods. Fixes 1242. rbri Fix JavaScript: un-selecting selected option in a (single) select causes the first option to be selected (FF) or is ignored (IE). Fixes 1247. mguillem Fix Send cookies ordered by more specific path attribute. Fixes 1212. mguillem Fix The script tag supports now the type 'application/x-javascript' in Firefox mode. Fixes 1243. rbri Fix Improved synchronization and sleep() replaced by wait() in JavaScriptJobManagerImpl. Fixes 1236. rbri Update Upgrade Apache commons-lang to 2.6. rbri Update Upgrade Apache HttpClient to 4.1. mguillem Fix File name is send to server if HtmlFileInput.setData was called. Fixes 1234. rbri Fix Url's like 'http://www.google.com/..' reduced to 'http://www.google.com/'. Fixes 1232. rbri Fix JavaScript: added support for CSSCharsetRule. Fixes 1226. mguillem Fix HtmlElement.type: respect maxLength (if any) for text and password input fields. Fixes 1175. mguillem Add JavaScript: add dummy implementation of HTMLCanvasElement.toDataURL. Fixes 1222. mguillem Fix JavaScript: HTMLCanvasElement's width and height are of type Number not String. Fixes 1222. mguillem Update JavaScript: added Range constants START_TO_START, START_TO_END, END_TO_START and END_TO_END as well as basic implementation of Range.compareBoundaryPoints (FF only). mguillem Update Accept cookies set by server responses even if the path doesn't match the one of the requested content. mguillem Fix NPE in XMLSerializer.save(page) if the page contains an image tag without src attribute or link without href. Fixes 1220. rbri Fix JavaScript: support addressing a StaticNodeList like an array (e.g. node = staticNodeList[i]). This is done by prototype 1.6.1 if the querySelector API is available. rbri Fix JavaScript: add support for HTMLElement.querySelector and querySelectorAll for FF3.6 and IE8. Fixes 1201. rbri Remove DefaultCredentialsProvider: removed addNTLMCredentials and addNTLMProxyCredentials as HtmlUnit doesn't provide NTLM support out of the box anymore since release 2.8. See "NTLM authentication" documentation for details on how to work with NTLM. mguillem Update JavaScript: make window.top writable. mguillem Update JavaScript: octal support added to the regular expressions. rbri Fix HtmlImage; reset image reader also if image is reloaded because of src attribute change. Fixes 1218. rbri Fix JavaScript: add support for HTMLDocument.querySelector and querySelectorAll for FF3.6 and IE8. mguillem Fix JavaScriptErrorListener added (WebClient.setJavaScriptErrorListener(JavaScriptErrorListener)). Fixes 1168. rbri Fix JavaScript: fixed internal error occurring in XMLDocument.loadXML with ill formed XML code. mguillem Fix JavaScript: HTMLElement.prototype.innertHTML should be undefined (FF). mguillem Fix Don't trim class attribute for FF3.6. mguillem Fix JavaScript: don't reduce multiple white spaces when reading innerHTML (FF only). mguillem Fix XMLSerializer should expand empty 'textarea'. asashour Fix JavaScript: location.href returns the right value after clicking on a link that jumps only to a different hash. rbri Fix Fixed reload handling if only the hash part of a url changed. Fixes 1169. rbri Update HtmlSelect.setSelectedAttribute now returns the page in the WebClient's current window. Fixes 1146. mguillem Fix Parsing: <ins> is an inline element. Fixes 1144. mguillem Fix JavaScript: don't escape "+" in hash value (FF). Fixes 1177. mguillem Fix Cookies: consider quotes surrounding the value as part of the cookie value. Fixes 1050. mguillem Fix JavaScript: allow "//" in argument string of "new Function(...)". Fixes 1190. mguillem Update JavaScript: add support for function HTMLSelectElement.item. mguillem Fix JavaScript: don't throw an exception when setting incorrect value to HTMLSelectElement.selectedIndex for FF3.6. mguillem Fix Fix IE conditional compilation bug (IE only). Fixes 1191. mguillem Update JavaScript: add support for RegExp.$1..9, RegExp.lastMatch, RegExp.lastParen, RegExp.leftContext and RegExp.rightContext. rbri Update JavaScript: add support for function HTMLOptionsCollection.remove (IE only). Fixes 1188. mguillem Update Escape only <, & and " in attribute values where it was not yet the case (for instance HtmlSubmitInput). Fixes 1187. mguillem Fix Ignore leading and trailing spaces in namespace values. Fixes 1149. mguillem Fix HtmlTextArea.asXml(): don't append indent spaces before closing tag. Fixes 1174. mguillem Fix Fix exception when asking CookieManager for cookies of "about:blank". Fixes 1165. mguillem Add JavaScript: add empty implementations of CanvasRenderingContext2D.translate and scale (FF). Fixes 1138. mguillem Fix Consider <noscript>'s body as plain text for FF and discard it totally for IE. mguillem Fix ObjectInstantiationException: updated to expose the underlying 'cause' exception. Fixes 1164. asashour Update Deprecate BrowserVersion.FIREFOX_3. asashour Add JavaScript: add support for anchor.rel, and .rev, and link.rev. Fixes 1155. asashour Remove Remove deprecated BrowserVersion.FIREFOX_2, DomNode.getAllHtmlChildElements() and WebResponse.getRequestUrl(). asashour

Release 2.8 – Aug 5, 2010

Type Changes By Add HtmlOptionGroup: add utility method getEnclosingSelect(). Fixes 1153. asashour Fix HtmlRadioButtonInput: trigger onchange event handler on losing focus with IE. Fixes 1113. Thanks to Ronald Brill. asashour Update Configure JavaScript executor thread as daemon thread. Fixes 1068. mguillem Add JavaScript: initial support for HTMLAudioElement, HTMLSourceElement and HTMLVideoElement. asashour Fix Fix Content-Type header value on posting a form with "multipart/form-data" encoding. Fixes 1136. asashour Fix JavaScript: document.cookie should not return cookies that have expired since they have been set. Fixes 1142. mguillem Fix JavaScript: ignore expired cookies set by document.cookie. Fixes 1139. mguillem Fix JavaScript: XSLTemplate and XMLDOMParseError are not instantiable. mguillem Update HTTP headers: 'Host' to be the first (FF only). Fixes 179. asashour Fix JavaScript: XMLHttpRequest.setRequestHeader ignores prohibited headers. mguillem Fix JavaScript: fix 'typeof window'. Fixes 1125. asashour Add JavaScript: add dummy implementation of window.pageXOffset and .pageYOffset. Fixes 1123. asashour Update Add support for Google App Engine. Fixes 162. Thanks to Amit Manjhi. mguillem Fix HtmlCheckBoxInput: trigger onchange event handler on losing focus. Fixes 1112. Thanks to Ronald Brill. asashour Update Google App Engine support: WebClient uses per default UrlFetchWebConnection when Google App Engine is detected. mguillem Fix WebResponse.getLoadTime(): take body download time into account. Fixes 988. mguillem Update Remove MemoryInputStream and BinaryPage introduced since release 2.7. Download large binary content to a temporary file. mguillem Fix FileUpload: send Content-Type headers for file parts. Fixes 1118. asashour Fix JavaScript: allow access to lost elements per name from HTMLFormElement.elements in invalid HTML code. Fixes 1083. mguillem Fix XMLHttpRequest: post method to send query string. Fixes 1121. asashour Fix JavaScript: set a maximum for infinite recursion. Fixes 1091. asashour Update Deprecate WebResponse.getContentAsBytes(). asashour Fix JavaScript: make form elements only accessible by their original name (IE) or by all the names they have had (FF). mguillem Update Deprecated IsDescendantOfContextualFormFunction. mguillem Fix JavaScript: fire onchange for &lt;input type='password' ...&gt; when field loses focus and value has been changed. Fixes 1115. Thanks to Ronald Brill. mguillem Fix Fix NullPointerExceptin occurring when for JavaScript submitting form with hash multiple times. Fixes 1102. mguillem Fix HtmlTextArea.asXml(): escape XML characters. Fixes 1092. Thanks to Amit Khanna. mguillem Fix JavaScript: events fired by HTMLOptionElement should have 'srcElement' of the enclosing Select. asashour Fix JavaScript: fix event.button of click events with IE. Fixes 1111. asashour Fix JavaScript HtmlUnit RegExp proxy: use empty string for existing replacement groups without value. Fixes 1095. Thanks to Ronald Brill. mguillem Update HtmlPage.save: add support for (i)frames. mguillem Fix HtmlPage.save should not modify the current DOM. mguillem Fix JavaScript: window.execScript returns undefined and not null (IE only). Fixes 1105. mguillem Fix JavaScript: add support for function HTMLDocument.clear. mguillem Add JavaScript: add support for globalStorage, localStorage and sessionStorage. Fixes 170. asashour Add Page: add .getUrl(). asashour Add Add support for SOCKS proxy (at WebClient and WebRequest levels). Fixes 169. asashour Add Add UrlFetchWebConnection, an experimental WebConnection with limited functionalities but that doesn't require HttpClient. mguillem Fix HtmlArea: set 'Referer' header on clicking. asashour Fix Don't send charset information in Content-Type header for application/x-www-form-urlencoded POST requests. mguillem Fix Fix MemoryInputStream.read() for negative values. Fixes 1098. asashour Update Upgrade HttpClient to 4.0.1. Fixes 157. Thanks to Nicolas Belisle. asashour Update Deprecate BrowserVersion static constants. asashour Fix StringWebResponse: take care of provided charset for parsing. Fixes 1084. mguillem Add JavaScript: support string.trim(), .trimLeft() and .trimRight() (FF 3.6 only). Fixes 1052. asashour Add Initial support for FF 3.6. asashour Update Implement DomComment.getCanonicalXPath(). Fixes 167. Thanks to Philip Graf. mguillem Update INCOMPATIBLE CHANGE: WebResponse is now a class not an interface. WebResponseImpl is deprecated. asashour Fix Fix asText() of HtmlCheckBoxInput and HtmlRadioButtonInput. Fixes 1079. asashour Fix JavaScript: fix document.getElementsByTagName() for elements with prefix. Fixes 1069. asashour Update HtmlImageInput: fix submitted parameters. asashour Update BinaryPage: change threshold to 300 bytes, and handle chunked content. Fixes 1070. asashour Update Deprecate WebRequestSettings, WebResponse.getRequestSettings() and MockWebConnection.getLastWebRequestSettings(). asashour Update Correctly handle URLs with '%'. asashour Add JavaScript: add support for KeyboardEvent.which (FF only). Fixes 1057. asashour Add JavaScript: add support for navigator.productSub (FF only). Fixes 1059. mguillem Update JavaScript: fix ClassCastException in window.open(). Fixes 1060. asashour Update DomElement.asXml(): escape only <, & and " in attribute values. mguillem Add HtmlPage: add .isQuirksMode(), .querySelector() and .querySelectorAll(). asashour Remove Remove StringScriptPreProcessor. asashour Add JavaScript: add empty implementation of window.stop (FF only). Fixes 1048. asashour Fix JavaScript: fire (i)frames onload event even for non-HTML pages. mguillem Add JavaScript: use a single Java thread for executing background JavaScript tasks. Fixes 159. Thanks to Amit Manjhi. mguillem Add WebRequestSettings: add support for basic authentication inside the URL. Fixes 1036. asashour Fix DomNode.isDisplayed() (and by extension, DomNode.asText()) should ignore CSS styling when CSS has been disabled. Fixes 1040. sdanig Fix JavaScript: return window proxies from window.open(), window.top, window.parent, window.self, window.window and window.opener; proxy window.document and frame.contentDocument, too. Fixes 998. sdanig Add JavaScript: add support for HTMLTableCellElement.width and .height attributes. Fixes 966. asashour Fix JavaScript HtmlUnit RegExp proxy: don't escape unicode escape sequence in regular expression. Fixes 869. Thanks to Chris Frost. mguillem Fix Fix exception on HTTP response with code 302 without Location header. Fixes 869. mguillem Fix JavaScript: implement stack property on exceptions. Fixes 937. mguillem Fix HtmlTable.asText(): display first thead at the top, even if it appears after some tbody. Fixes 935. mguillem Fix JavaScript: fixed ClassCastException occurring in IE simulation while accessing XMLHttpRequest.responseXML when content uses XHTML namespace and contains a checked radio button. Fixes 1033. Thanks to Benoit Heinrich. mguillem Fix JavaScript: offsetHeight and offsetWidth should be 0 for elements with display:none, regardless of their contents. Fixes 1037. sdanig Fix When applying CSS rules to elements, take the media type into account. Fixes 1035. sdanig Fix JavaScript: fixed exception when calling setTimeout during window unload. Fixes 1032. mguillem Add Add BinaryPage to support download of large files. asashour Fix JavaScript: Form elements are also functions that take a child element's id, name or index and return the corresponding element (IE only). Fixes 987. sdanig Add JavaScript: add support for element.removeAttributeNode() (FF only). Fixes 160. Thanks to Benoit Heinrich. sdanig Add Add implementation of DomText.getCanonicalXPath(). Fixes 158. Thanks to Philip Graf. sdanig Fix JavaScript: img.onload functions not always called when img.src modified. Fixes 1029. Thanks to Benoit Heinrich. sdanig Fix JavaScript: Dynamically-added frame.onload and img.onload functions were sometimes being ignored. Fixes 1030. Thanks to Benoit Heinrich. sdanig Fix Clicking an element should make enclosing window the current one. Fixes 851. mguillem Fix Fixed ClassCastException occurring while accessing XMLHttpRequest.responseXML when content uses XHTML namespace and contains an (i)frame. Fixes 1026. mguillem Update JavaScript: added simple implementation of TextRange.setEndPoint (IE only). mguillem Fix JavaScript: implement window.scroll(x, y), window.scrollBy(x, y), window.scrollTo(x, y), window.scrollByLines(lines) and window.scrollByPages(pages). Fixes 972. sdanig Fix Parser: place text located between </TD> and </TR> before the enclosing TABLE. Fixes 1018. mguillem Fix JavaScript HtmlUnit RegExp proxy: handle two digits replacement references. Fixes 1024. mguillem Fix JavaScript: allow to set HTMLTableColElement's width to null. Fixes 1023. mguillem Update INCOMPATIBLE CHANGE: add an extra parameter (int lineNumber) to ScriptPreProcessor.preProcess(). asashour Add JavaScript: add dummy support for window.external.AutoCompletionSave() (IE only). Fixes 980. Thanks to Peter Faller. asashour Fix JavaScript: fix document.getElementsByName() to handle empty and null values. Fixes 977. Thanks to Tomasz Kalkosinski. asashour Remove Deprecation: remove DomText.splitDomText(), HtmlPage.getFirstAnchorByText(), WebClient.setIgnoreOutsideContent(), WebResponse.getRequestUrl, .getRequestMethod() and .getContentCharSet(), HTMLParser.parse() and WebRequestSettings.addAdditionalHeader(). asashour

Release 2.7 – Feb 9, 2010

Type Changes By Fix JavaScript: allow access to a frame through document.frameName (IE only). mguillem Fix JavaScript: better implementation of element.scrollLeft and element.scrollTop properties. Fixes 956. sdanig Fix JavaScript HtmlUnit RegExp proxy: handle $&, $' and $` in replacement string. Fixes 1016. mguillem Update Removed public method HtmlForm.submit(SubmittableElement) without replacement (method was marked as internal API). mguillem Fix JavaScript: StringScriptPreProcessor to use Rhino AST. Fixes 1007. asashour Fix JavaScript: many calls to form.submit after change of the action attribute causes many downloads and only the last one is parsed and loaded into the window. mguillem Fix JavaScript: fix dynamically loading of external script when loading a page as result of a click. Fixes 936. mguillem Update JavaScript: resolve relative URLs from opener's URL when document.write is used in a window opened with window.open. Fixes 1005. mguillem Update DomNode.asText(): don't include children of <noscript> if JavaScript is enabled. asashour Add JavaScript: empty implementation of CanvasRenderingContext2D.drawImage() (FF). asashour Update INCOMPATIBLE CHANGES (HttpClient 4 migration preparation): use internal NameValuePair class in the public APIs (rather than HttpClient's NameValuePair class); use internal Cookie class in the public APIs (rather than HttpClient's Cookie class). sdanig Fix JavaScript: execute script with event attribute only when value is "onload" (FF). mguillem Fix DomNode.asText(): H1, H2, H3, H4, H5 and H6 are blocks. Fixes 1013. mguillem Update JavaScript: ensure that elements returned by Selection.getRangeAt are of the right type (FF only). mguillem Update JavaScript: document body is selection's start element when designMode='on' is set and body has no child element (FF only). mguillem Update Throw exception with explicit message when maximum of allowed HTTP redirects is reached. mguillem Fix JavaScript: fix parseFloat for values like "40em". Fixes 989. mguillem Fix JavaScript: add support for Function.caller. Fixes 1001. mguillem Update Update htmlunit-core-js to Rhino head of 07.01.2010 + custom patches. mguillem Fix Redirect limit should apply regardless of whether or not the redirects are to the same URL. Fixes 1002. sdanig Fix JavaScript: fix value of element.offsetTop attribute when element's position is relative. Fixes 999. sdanig Fix JavaScript: fix format of document.lastModified attribute. Fixes 1004. Thanks to Richard Eggert. sdanig Fix JavaScript: fix XMLHttpRequest with empty body of 'PUT' method. Fixes 990. asashour Fix JavaScript: allow setting element.width and .height to a value that ends with 'px'. asashour Fix JavaScript: fix computed element widths and heights when percentages are involved in the CSS. sdanig Update Deprecated BrowserVersion.FIREFOX_2. mguillem Add Add WebClientUtils.attachVisualDebugger(WebClient). sdanig Fix JavaScript: add support for "onerror" event handlers on script nodes (FF only). Fixes 853. sdanig Fix JavaScript: better value for document.body.clientHeight. Fixes 973. sdanig Fix WebClient.closeAllWindows: improved JavaScript threads termination. mguillem Add Add WebWindow.isClosed(). mguillem Fix JavaScript HtmlUnit RegExp proxy: escape dollar after escaped backslash. Fixes 995. mguillem Fix JavaScript HtmlUnit RegExp proxy: un-escape illegally escaped characters. Fixes 929. mguillem Update Change TopLevelWindow and DialogWindow constructors' visibility to protected. mguillem Fix Don't pick invisible frame window as the current window. Fixes 996. mguillem Fix CSS: don't override rules with a higher specificity. mguillem Fix JavaScript: window.getSelection() returns null for frame windows that are not displayed (FF only). mguillem Fix MetaTag: fix NPE in encoding detection. Fixes 994. asashour Fix Don't skip form submission to same URL when triggered from an anchor with href="#". mguillem Fix JavaScript: added support for functions ScriptEngine, ScriptEngineMajorVersion, ScriptEngineMinorVersion, and ScriptEngineBuildVersion (IE only). Fixes 992. mguillem Fix JavaScript: keyCode of lower case characters is the same than upper case ones. Fixes 992. mguillem Fix JavaScript: add support for HTMLTextArea.setSelectionRange (FF only). Fixes 970. mguillem Fix JavaScript: enforce same-origin policy for XMLHttpRequest. Fixes 964. mguillem Fix Use style sheets too to compute DomNode.isDisplayed. mguillem Fix HtmlNoFrames.asText() returns empty string. Fixes 979. mguillem Fix JavaScript: XMLHttpRequest.responseXML is null when send() has not been called. mguillem Fix JavaScript: XMLHttpRequest.responseXML is accessible when no content type header is present. mguillem Update JavaScript: log exceptions thrown in background threads. Fixes 982. asashour Fix IEConditionalCompilationScriptPreProcessor should ignore string literals. Fixes 932. asashour Fix HtmlNoFrames: preserve inner XML content. asashour Fix JavaScript: add support for ProcessingInstruction during parsing. Fixes 981. asashour Fix JavaScript: better calculation of element.offsetTop and element.offsetHeight properties. Fixes 968. sdanig Fix Implement setter and getter for textContent on DomAttr. mguillem Fix JavaScript: fix exception accessing selectionStart and selectionEnd on inputs of type password. mguillem Fix JavaScript: better calculation of element.offsetLeft property. Fixes 953. sdanig Fix JavaScript: document.write() should have an affect (by implicit postponed call to close()). Fixes 967. asashour Fix Empty frames added via JavaScript shouldn't ever really become the "current window". Fixes 961. sdanig Fix JavaScript: fix attribute.setNodeValue(). asashour Fix JavaScript: fix NPE when element.setAttributeNode() is called for non-existing attribute. Fixes 939. asashour Fix JavaScript HtmlUnit RegExp proxy: escape "$" in replacement string for String.replace. Fixes 963. mguillem Fix JavaScript HtmlUnit RegExp proxy: replace "$$" by "$" in replacement string for String.replace. Fixes 962. mguillem Fix DefaultCredentialsProvider: addCredentials should overwrite previous values. mguillem Fix JavaScript: fix setting of element.innerText and .textContent with empty string or null. Fixes 959. asashour Fix Meta refresh: handle space as separator between delay and url. Fixes 954. mguillem Fix JavaScript: events focus and blur don't apply to all kind of HTML elements. Fixes 940. mguillem Fix JavaScript: add support for onerror handler. Fixes 943. mguillem Fix Fix issue where WebClient.waitForBackgroundJavaScriptStartingBefore hangs (setInterval with short interval). mguillem Fix HtmlScript: "for" and "event" attributes for 'window' are ignored by FF. asashour Fix JavaScript: MouseEvent.initMouseEvent and KeyboardEvent.initKeyEvent initialize metaKey. Fixes 945. mguillem Fix Fixed StringIndexOutOfBoundsException occurring when typing in a cloned text input or textarea node. mguillem Fix JavaScript: pre-process \xDD in string literals before IE conditional compilation. Fixes 932. asashour Add JavaScript: allow MouseEvent to have independent client coordinate values, if necessary. sdanig Fix Fix the DomNodeList returned by DomNode.getChildNodes() so that it behaves correctly when children are removed from the DOM. sdanig Update Deprecate DomNode.getAllHtmlChildElements(); replaced by the more intuitively named DomNode.getHtmlElementDescendants(). sdanig Add JavaScript: implement range.extractContents() (Firefox only). sdanig Fix JavaScript: properly handle body elements with qualified name. Fixes 933. asashour Fix Fix Node.setTextContent() to set the text for comment, cdata, text and processing instruction nodes, rather than appending a new text node. sdanig Fix JavaScript: mouse event 'ondblclick' should not trigger 'onclick' handler. asashour Fix CSS: add support for rule priority. Fixes 930. mguillem Fix JavaScript: properly escape XML entities in .xml property (IE) and XMLSerializer (FF). sdanig Add JavaScript: add support for HTMLDocument.lastModified. Fixes 927. mguillem Fix JavaScript: support the serialization of comments in .xml property (IE) and XMLSerializer (FF). sdanig Add JavaScript: implement element.getAttributeNodeNS() (Firefox only). sdanig Fix JavaScript: XMLHttpRequest.open throws an exception when the provided url is null or an empty string. mguillem Fix Fix caching of page's document element even after the document element has been removed from the page. sdanig Fix JavaScript: add support for XMLHttpRequest.onload (Firefox only). sdanig Fix JavaScript: document.activeElement is the document body by default (IE only). sdanig Fix JavaScript: add support for selection.addRange(), selection.removeAllRanges() and selection.removeRange() (FF only). sdanig Fix JavaScript: add support for TextRange.htmlText and TextRange.moveToElementText (IE only). Fixes 926. sdanig Fix JavaScript: handle namespaces when serializing XML. Fixes 910. asashour Fix JavaScript: window.location should start with 'file:///' instead of just 'file:/' when dealing with a local file. sdanig Fix JavaScript: HTMLTableCellElement.cellIndex, HTMLTableRowElement.rowIndex and sectionRowIndex (FF only) return -1 when the element is not added to the document. mguillem Update Don't allow JavaScript catch statements to catch HtmlUnit internal errors. mguillem Fix JavaScript: fix how document.write() detects complete string. Fixes 905. asashour Fix The default value of range.startContainer and range.endContainer is the document itself (Firefox only). Fixes 923. sdanig Add JavaScript: primitive support for xmlDocument.createNode() (IE only). Fixes 910. asashour Add JavaScript: implement attributes.setNamedItem(). asashour Fix Avoid errors triggered by images with onload attributes and invalid src URLs. sdanig Fix HtmlPage.getPageEncoding() was sometimes returning a different encoding than the encoding actually used to parse the page. Fixes 914. sdanig Add Implement DomAttr.getSpecified() and SgmlPage.createAttribute(). asashour Fix JavaScript: HTMLElement.offsetWidth and offsetHeight are 0 when the element is hidden. mguillem Fix DomNode.asText() considers UL content that is not within a LI too. Fixes 922. mguillem Fix Fix HtmlHtml.getCanonicalXPath() when document contains a doctype declaration. Fixes 921. mguillem Fix Form submission: don't send a Content-Type header when method is GET. mguillem Fix FormEncodingType.getInstance returns URL_ENCODED if the requested encoding type doesn't exist. Fixes 913. mguillem Fix JavaScript: don't call (i)frame's onload handler for the dummy page that fill the frame until the real content is loaded. Fixes 863. mguillem Fix Loading about:blank in an existing window resets the JavaScript scope for the window. mguillem Update JavaScript: window.opener is always writable for IE and only in special cases for FF. mguillem Update When a textarea receives focus its content is not selected and call to type(...) causes content to be appended. mguillem Update Click on a non form element removes focus from current element and triggers handlers if needed. mguillem Fix JavaScript: respect headers set by XMLHttpRequest.setRequestHeader(). Fixes 918. asashour Update JavaScript: improve resolution performance of "someForm.someField" when many elements in the page have "someField" as id or name attribute but only one in the provided form. Fixes 912. mguillem Update List returned by HtmlPage.getElementsByIdAndOrName is now mutable. mguillem Fix JavaScript: delete operator should not walk property chain. Fixes 884. mguillem Update Upgrade HtmlUnit-core-js to 2.7-SNAPSHOT (corresponds to head of Rhino trunk from Sep 21, 2009 + minimal adaptations). mguillem Fix JavaScript: remove String functions "equals" and "equalsIgnoreCase", Array functions "reduce" and "reduceRight" (FF2 and IE), global functions "isXMLName" and "uneval" (IE) as well as "toSource" on all objects (IE). mguillem Fix JavaScript: properly handle element.textContent with null value (FF only). Fixes 917. asashour Fix JavaScript: set the checked property of input of type 'radio' to defaultChecked when it is attached (IE only). asashour Fix JavaScript: HTMLImageElement's height and width are numbers, not strings. Fixes 915. mguillem Update HTMLElement.offsetWidth tries to compute width depending on the content when CSS attribute float is set to "right" or "left". mguillem Update CSS: add support for CSS3 pseudo classes :root, :enabled, :checked. mguillem Fix JavaScript: HTMLStyleElement.sheet parses all child nodes and not only the first one. mguillem Fix JavaScript: fix style 'pixel' attributes. Fixes 904. asashour Add JavaScript: HTMLTableElement's properties caption, tHead and tFoot are writable (FF only) with right parameters, otherwise an exception is thrown. mguillem Add JavaScript: add support for HTMLTableRowElement.sectionRowIndex. mguillem Add JavaScript: add support for DOMException constants (FF only). mguillem Update JavaScript: HtmlDocument.createTreeWalker accepts function as filter (FF only). mguillem Fix Fix memory leak when many different BrowserVersion instances used. Fixes 899. sdanig Fix JavaScript: HtmlButtonElement.type falls back to default value ("submit" for FF, "button" for IE) when attribute "type" is removed. mguillem Add Add IE8 support. asashour Fix JavaScript: appendChild, insertBefore and replaceChild throw exception (FF) or silently fail (IE) when parameter is the HTML node. mguillem Fix HtmlAnchor: fix characters escaping if 'href' is a javascript. asashour Fix Correctly clean up "/./" and "/../" sequences from URLs. Fixes 901. Thanks to Rodney Gitzel. mguillem Fix JavaScript: fix button.type attribute. asashour Fix JavaScript: perform delayed form submission with fields and target values at the moment where HtmlFormElement.submit is called. mguillem Add JavaScript: add primitive support for MutationEvent. asashour Update JavaScript: use KeyboardEvent in htmlElement.type() and add support for .charCode. asashour Fix JavaScript: normal submit button action has priority over HtmlFormElement.submit() called in onclick handler. mguillem Fix JavaScript: when link's onclick changes location the next page is still the one mentioned in href. mguillem Fix JavaScript: avoid multiple form submissions when HtmlFormElement.submit() is called multiple times. mguillem Remove BrowserVersion: remove deprecated methods related to JavaScript version. asashour Update Update JavaDoc of HtmlElement.click methods to reflect what already happens: click returns the page in the WebClient's current window. mguillem Remove Remove deprecated ClickableElement and StyledElement. asashour

Release 2.6 – Sep 2, 2009

Type Changes By Add JavaScript: add basic support for element.scopeName and .tagUrn (IE only). Fixes 897. asashour Fix JavaScript: HtmlFormElement.action returns the fully qualified URL (FF only). mguillem Fix JavaScript: setting HtmlTextAreaElement's defaultValue changes the current value if it is still the initial one (FF only). mguillem Add JavaScript: add primitive support for KeyboardEvent. asashour Fix Allow "javascript:..." URLs with encoded script code. Fixes 894. sdanig Fix Use the browser language (from the BrowserVersion being used) to set the value of the "Accept-Language" HTTP header. Fixes 850. sdanig Fix Don't treat 304 responses as if they were redirections. Fixes 868. sdanig Fix JavaScript: node.insertBefore() handles undefined variable. Fixes 892. asashour Update Cache: use cache for all kinds of (cacheable) content. mguillem Fix CSS: resolve relative URLs in @import rule from URL of current style sheet. mguillem Fix JavaScript: HTMLSelectElement throw exception when invalid value is set to selectedIndex (FF only). mguillem Update DebuggingWebConnection: display received headers in generated report, added addMark method. mguillem Fix CookieManager: handle cookies with null value. asashour Fix JavaScript: handle empty code. asashour Update Upgrade commons-codec to 1.4 asashour Fix JavaScript: document.getElementById() and document.getElementsByNames() trigger implicit document.close() calls (IE only). sdanig Fix JavaScript: window.frames returns a reference to the window itself. Fixes 873. sdanig Update Force NekoHtml and Xalan to use xercesImpl 2.9.1 dependency. Fixes 151. asashour Add Add selection-related methods to HtmlPasswordInput. Fixes 878. sdanig Fix JavaScript: fixed NPE calling inRange with selection range when nothing is selected (IE only). Fixes 886. mguillem Fix Add TITLE to HEAD even if it is found in BODY. Fixes 872. mguillem Fix Submit image button name too (FF only). mguillem Fix Include caption in HtmlTable's asText() representation. Fixes 883. mguillem Fix Fix DomNode.compareDocumentPosition() (FF only). asashour Add JavaScript: add support for the compact attribute on ul, ol, menu, dl and dir elements. sdanig Add JavaScript: implement node.normalize(). asashour Fix JavaScript: support the serialization of CDATASection in .xml property (IE) and XMLSerializer (FF). asashour Fix HtmlScript: fix the order of "type" and "language" attributes evaluation. asashour Update DomText: deprecate splitDomText(), use splitText() instead. asashour Fix JavaScript: fix .prefix attribute of xml nodes. asashour Fix JavaScript: fix text.splitText(). asashour Add JavaScript: implement xmlDocument.getElementsByTagName(), .getElementsByTagNameNS() and .nodeFromID(). asashour Fix Fix many issues with WebClient serialization and deserialization. Thanks to Nick Kralevich. sdanig Fix Load stylesheets referenced via @import. sdanig Fix JavaScript: fix XMLSerializer for non-element nodes (FF only). asashour Update JavaScript: move .xml attribute from xmlElement to xmlNode (IE only). asashour Update INCOMPATIBLE CHANGE: rename DomCData to DomCDataSection. asashour Fix JavaScript: node.appendChild() can be called inside xmlDocument. asashour Add XmlDocument: implement .createProcessingInstruction() and .createCDATASection(). asashour Add JavaScript: add support for map.areas attribute. asashour Fix JavaScript: process scripts with 'application/javascript' type (FF only). asashour Fix JavaScript: return collection if elements with duplicate IDs are found (IE only). asashour Fix Properly handle unicode characters in requested URLs. Fixes 859. asashour Update Deprecate WebClient.setIgnoreOutsideContent and HTMLParser.setIgnoreOutsideContent. mguillem Add Set 'referer' header on loading pictures and CSS files. Fixes 858. mguillem Add JavaScript: add basic support for CSSValue, CSSPrimitiveValue, and CSSStyleDeclaration.getPropertyCSSValue (FF only). Fixes 867. mguillem Fix JavaScript: set currentTarget on event when event handler is called after global event listener. Fixes 867. mguillem Fix Cleanup "/./" and "/../" in URLs before to perform a request. Fixes 861. mguillem Fix Fixed ConcurrentModificationException occurring in invalidation of computed styles when an other page tried to access some style information at the same time. Fixes 866. mguillem Fix JavaScript: about:blank (i)frame domain is the one of the container page (FF and IE) and same rules apply to set domain (FF only). mguillem Fix CSS: invalidate style of child elements when node attribute is changed. mguillem Fix JavaScript: read only properties can't be written (FF3 only). mguillem Fix JavaScript: parseFloat trim leading new line signs. Fixes 852. mguillem Fix Incorrect HTML: move DIV within TABLE before the TABLE. Fixes 811. mguillem Fix HtmlPage.asXml(): don't escape XML special characters when style node contains an XML comment. Fixes 835. mguillem Fix Correctly fire load events attached to script nodes via addEventListener (FF only). Fixes 853. sdanig Fix JavaScript: document.namespaces can be used as a function (IE only). Fixes 855. sdanig Fix Fix NullPointerException thrown for script tags referencing a resource that returns a 204 (No Content) response. Fixes 854. sdanig Fix JavaScript: add support for the window.onbeforeunload attribute. Fixes 844. sdanig Add JavaScript: add support for textarea.rows and textarea.cols attributes. sdanig Fix Some CSS properties are inherited from parent elements (computed styles only). sdanig Fix JavaScript: form submission should consider event.preventDefault() (FF only). Fixes 847. asashour Update JavaScript: make dummy implementation of HtmlDocument.elementFromPoint available for FF as well. mguillem Add JavaScript: add support for the colSpan, rowSpan, noWrap, axis and abbr attributes on td and th elements. sdanig Add JavaScript: add support for the bgColor attribute on table, tr, td and th elements. sdanig Add Add support for Proxy Auto-Config. Fixes 829. asashour Fix JavaScript: call onbeforeunload handler when TopLevelWindow.close() is called. Fixes 843. sdanig Fix JavaScript: reserve the duplicate ID attribute behavior on changing other attributes. asashour Add JavaScript: add support for attributes align, vAlign, ch and chOff for thead, tbody, tfoot, tr, td, and th elements. sdanig Fix CSS: properly handle 'lang' condition. Fixes 840. asashour Fix Handle HTML pages with empty 'Content-Type' HTTP header. asashour Fix Handle 204 (No Content) HTTP responses correctly. Fixes 837. sdanig Fix JavaScript: implement TextRange.inRange (IE only). mguillem Fix Check meta tags inside HTML pages for encoding information. Fixes 838. sdanig Add JavaScript: add support for br.clear attribute. sdanig Add JavaScript: add support for option.form, legend.form, object.form and label.form attributes. sdanig Fix Add better support for XHTML pages (new XHtmlPage class extends HtmlPage class). Fixes 763. sdanig Add JavaScript: add support for fieldSet.form and fieldSet.align attributes. sdanig Add JavaScript: add support for body.aLink, body.background, body.bgColor, body.link, body.text and body.vLink attributes. sdanig Add JavaScript: add support for attr.isId attribute (Firefox 3 only). sdanig Fix Update page URL when navigating to a local anchor. Fixes 826. sdanig Fix JavaScript: implement placeholder functions history.back(), history.forward() and history.go(). Fixes 90. sdanig Fix JavaScript: fix setting select.value. asashour Update Extending NodeList to implement List<E extends DomNode>. asashour Fix JavaScript: fix document.referrer. Fixes 834. asashour Update JavaScript: fix document.createAttribute(). asashour Update HtmlObject: "classid" is supported (using Jacob). Fixes 830. asashour Add HtmlSelect: add .getOptionByText(). Fixes 137. asashour Add HtmlPage and HtmlImage: add .save(). Fixes 135. asashour Update Change default value for "Accept-Language" HTTP header to "en-us". asashour Fix HtmlForm: properly handle 'action' which starts with a question mark. Fixes 824. asashour Update Deprecate WebRequestSettings.addAdditionalHeader() and HtmlPage.getFirstAnchorByText(). asashour Fix Handle XmlPage with NO_CONTENT HTTP status. Fixes 822. asashour Fix JavaScript: option.selected does not necessarily mean there is 'selected' attribute. asashour Fix JavaScript: correct attribute .firstChild and .lastChild (FF only). asashour Fix IE Conditional comments: handle comments with invalid expressions as plain text. Fixes 820. mguillem Fix JavaScript: handle multiple conditional compilation comments (IE only). Fixes 819. mguillem Update JavaScript: document.getElementById() should be case insensitive (IE only). asashour Fix JavaScript: body element of a frame has to be null while loading only as long as nothing has been loaded (IE only). mguillem Add JavaScript: initially implement properties of HTMLMetaElement. asashour Add JavaScript: add support for iframe.width and iframe.height properties. sdanig Add JavaScript: add element.document (IE only). asashour Add WebRequestSettings: add .removeAdditionalHeader() and make headers case-insensitive. asashour Add JavaScript: implement xmlDocument.createElementNS() (FF only). asashour Fix JavaScript: 'class' attribute should be trimmed (FF only). asashour Fix JavaScript: fix properties defined in super objects (IE only), and fix .getAttribute() and .getAttributeNode(). asashour Fix Parser: don't recognize &prod as incomplete entity. Fixes 817. mguillem Fix JavaScript: fix incorrect escaping of backslash in replacement for String.replace(String, String). Fixes 818. mguillem Add JavaScript: primitive implementation of canvas (FF only). Fixes 143. asashour Fix JavaScript: better implementation for "node's attributes collection is never empty for IE". asashour Fix JavaScript: option.value should not be affected by the text content (IE only). asashour Add JavaScript: add support for caption.align (IE and FF) and caption.vAlign (IE only). sdanig Add Add WebClient.getTopLevelWindows(). sdanig Fix Ignore content-type meta tag if HTTP header is specified. asashour Update WebResponse: Deprecate .getContentCharSet(), .getRequestMethod(), and .getRequestUrl(). Add .getContentCharset() and .getContentCharsetOrNull(). asashour Fix JavaScript: add support for selection.empty() and selection.type (IE only). sdanig Fix JavaScript: setInterval() invocations with a 0 millisecond delay behave like setTimeout() invocations in IE. sdanig Add JavaScript: add support for the col.align, col.vAlign, col.span, col.width, col.chOff and col.ch attributes. sdanig Add JavaScript: add support for input.accessKey, label.accessKey, anchor.accessKey, button.accessKey, legend.accessKey, textarea.accessKey and area.accessKey (Firefox only). sdanig Remove Deprecation: remove HtmlAttr, XmlElement, BrowserVersion.INTERNET_EXPLORER_6_0, .isNetscape(), getNickName(), DomAttr.getHtmlValue(), .getAttributeValue(), HtmlElement.isAttributeDefined(), .getAttributesCollection(), .getHtmlElementById(), .getHtmlElementsByAttribute(), HtmlPage.createHtmlElement(), WebResponse.getLoadTimeInMilliSeconds(), .getResponseBody(), and .getUrl(). asashour

Release 2.5 – Apr 21, 2009

Type Changes By Update Upgrade HtmlUnit-core-js to 2.5. asashour Update Upgrade NekoHtml to 1.9.12. asashour Fix JavaScript: fix ClassCastException setting or reading property readOnly of HtmlTextAreaElement. Fixes 813. mguillem Update JavaScript: added support for HTMLTableRowElement.deleteCell. Fixes 812. mguillem Update HtmlUnit-core-js now changes package names from org.mozilla.* to net.sourceforge.htmlunit.corejs.* to allow project to use "original" Rhino together with HtmlUnit. mguillem Add Add HtmlPage.getElementByName(String) method. sdanig Fix Remove leading "../" (if any) when resolving URLs. Fixes 718. mguillem Fix JavaScript: don't try to instantiate applets accessed by JavaScript when applet support is disabled. mguillem Fix HtmlOption: handle markup in nested content when it has to be used as default value. mguillem Fix HtmlOption.asText(): no need to consider label attribute. mguillem Fix HtmlOption: label attribute should not be considered in asText(). mguillem Fix JavaScript: dynamically created iframe should load external scripts. Fixes 805. asashour Fix HtmlPage: getFullyQualifiedUrl() should be relative to page of the top window. Fixes 806. asashour Add (EXPERIMENTAL) Add WebClient.waitForBackgroundJavaScript() and WebClient.waitForBackgroundJavaScriptStartingBefore(), which allow waiting for JavaScript background jobs to finish (should be used instead of JavaScriptJobManager methods, which are internal APIs). mguillem Add Add DomNode.isDisplayed() to the public API. sdanig Add JavaScript: add support for reading and writing img.align, p.align, table.align, thead.align, tbody.align, tfoot.align, iframe.align, input.align and applet.align properties. sdanig Add JavaScript: add support for reading and writing the base.href and base.target properties. sdanig Fix JavaScript: window.event should be available during execution of script.onreadystatechange handler (IE only). Fixes 802. sdanig Fix JavaScript: element.getElementsByTagNameNS() can accept null 'namespaceURI'. Fixes 799. asashour Fix Correctly initialize style attribute of images created via JavaScript. Fixes 797. sdanig Fix JavaScript: add support for 'oninput' events on text inputs (Firefox only). Fixes 792. sdanig Fix JavaScript: window.open() can accept numeric name. Fixes 796. asashour Fix JavaScript: in an XMLHttpRequest handler, 'this' is the handler when simulating FF2 and the XHR otherwise. mguillem Fix ToplevelWindow.close() deregisters sub-frames. mguillem Fix JavaScript: add support for window.length. mguillem Fix HtmlForm: submit to the same page if 'action' attribute is not defined. Fixes 791. asashour Fix Apply ScriptPreProcessor to window.eval(). Fixes 780. mguillem Fix HtmlPage.asXml(): expand empty UL and OL nodes to make generated XML readable as HTML on browsers. mguillem Update Upgrade HtmlUnit-core-js to 2.5 (corresponds to head of Rhino branch 1.7R2 from Dec 12, 2008 + fix for Rhino issue 477604). Fixes 770. mguillem Fix JavaScript: add support for selection.getRangeAt() (Firefox only). sdanig Fix JavaScript: add support for CSSImportRule. Fixes 789. sdanig Fix Make password inputs listen to event.preventDefault(). Fixes 531. sdanig Fix JavaScript: calling event.stopPropagation() shouldn't preclude using multiple event listeners of the same type on a single node. Fixes 783. sdanig Fix JavaScript: add support for event.cancelBubble in Firefox emulation mode (already present in IE emulation mode). Fixes 783. sdanig Fix JavaScript: setting event.returnValue=false should abort the event (IE only). Fixes 783. sdanig Add JavaScript: add support form.item() (IE only). asashour Fix When a form is submitted via JavaScript (form.submit()), form submittal should not actually occur until after the current script finishes executing. Fixes 775. sdanig Fix Fix content type sniffing for local XHTML files. Fixes 762. sdanig Fix Fix case-sensitivity of XPath expressions for XHTML documents that are served as 'text/xml'. Fixes 764. sdanig Fix JavaScript: add support for the window.onerror attribute. sdanig Fix JavaScript: document functions should be usable without a reference to the document (IE only). Fixes 774. sdanig Add JavaScript: add support for element.clearAttributes() and element.mergeAttributes() (IE only). sdanig Fix JavaScript: handle invalid back references in string.replace(...) as if they were escaped. Fixes 782. sdanig Fix JavaScript: remove objects created by Rhino in window scope like 'com' that aren't available in browsers. Fixes 781. mguillem Update JavaScript: process false return value of handlers added by .attachEvent() or .addEventListener(). Fixes 779. asashour Fix JavaScript: make prototype available on DOM nodes as __proto__ (FF only). mguillem Fix JavaScript: hide standard Object and Array functions that don't exist on IE. mguillem Fix JavaScript: Expand support for document.namespaces collection. sdanig Fix JavaScript: XMLSerializer should properly handle Document. asashour Fix JavaScript: Date.getYear() returns four digits for years before 1900 and after 1999 when simulating IE. Fixes 777. mguillem Fix JavaScript: single submission of form if onclick handler of HTMLSubmitInput also submits the form. Fixes 775. asashour Update Add default value for "Accept" and "Accept-Language" HTTP headers. Fixes 774. asashour Add JavaScript: add support for HTMLElement.removeNode(). Fixes 774. asashour Update JavaScript: move removeAttribute() from HTMLElement to Element. asashour Update JavaScript: element.doScroll() should throw an exception if page is not yet loaded. asashour Fix JavaScript: fix the return value of node.insertBefore(). Fixes 767. asashour Fix JavaScript: fix behavior when document.cookie is set to an empty string or a string without an '=' character. Fixes 761. sdanig Fix JavaScript: fix element.parentElement if the parent is DocumentFragment. Fixes 757. asashour Fix JavaScript: anchor's href attribute is empty string when no href was specified. mguillem Fix JavaScript: custom RegExp proxy now ignores back references in character class as browsers do. mguillem Fix Correct JavaScript parent scope after using WebClient.setCurrentWindow. bradclarke Add JavaScript: add support for Enumerator (IE only). Fixes 760. asashour Fix JavaScript: custom RegExp proxy now accepts unescaped opening square brackets in character class. mguillem Add JavaScript: add support for HTMLDocument.dispatchEvent (FF only). mguillem Update JavaScript: properties of XMLHttpRequest ActiveX object are case insensitive. Fixes 765. asashour Fix Allow numbers with decimal points in refresh meta tags. sdanig Fix JavaScript: XMLHttpRequest is supported in IE7. asashour Fix Fail gracefully when script tags contain empty 'src' attributes. sdanig Fix Make the cookie manager thread-safe. sdanig Fix JavaScript: setting anchor.hash should accept values both with and without the '#' character. sdanig Fix JavaScript: values returned by anchor.hash should include the '#' character. sdanig Add JavaScript: add support for HTMLElement.dir, .lang, .tabIndex and .spellcheck. asashour Add JavaScript: add support for window.atob() and btoa(). asashour Fix JavaScript: compute URL relatively to owning page for showModelessDialog and showModalDialog. Fixes 769. mguillem Fix IE Conditional comments: accept expressions that contain identifier other than IE (like mso). Fixes 759. mguillem Fix If content-type meta tags contain empty encoding information, ignore it and use the default encoding. Fixes 752. sdanig Update Ignore namespaces if the tag name does not have a prefix. Fixes 758. asashour Update DomElement.getElementsByTagName() should search in only sub-elements. Fixes 756. asashour Add JavaScript: add support for document.createComment(). asashour Update Deprecate ClickableElement and StyledElement, directly use HtmlElement instead. asashour Add JavaScript: add initial support for TextRange.moveStart() and .moveEnd(). Fixes 754. asashour Add JavaScript: add support for document.getElementsByClassName and HTMLElement.getElementsByClassName (FF3 only). mguillem Update JavaScript: document.execCommand doesn't throw an exception when called with unknown command (FF3 only). mguillem Update JavaScript: document.scripts doesn't exist for FF. mguillem Update JavaScript: when simulating Firefox, document.write(ln) returns the function, no matter if elements with this name are present or not. mguillem Update JavaScript: document.createEvent doesn't initialize the target property under FF3. mguillem Update JavaScript: document.all('notExisting') returns undefined for FF. mguillem Update JavaScript: tags property exists on collections for FF2 but not for FF3. mguillem Update JavaScript: prototype should not be enumerated (FF). mguillem Update JavaScript: IE does not enumerate objects methods. asashour Update BrowserVersion: deprecate setJavaScriptVersion(), getJavaScriptVersion() and getJavaScriptVersionNumeric(). asashour Update Replace ThreadManager with JavaScriptJobManager, which internally uses the executor services provided by JDK 5. sdanig Add Add HtmlAbbreviated, HtmlAcronym, HtmlBackgroundSound, HtmlBig, HtmlBlink, HtmlBold, HtmlCitation, HtmlCode, HtmlDefinition, HtmlEmphasis, HtmlExample, HtmlItalic, HtmlKeyboard, HtmlListing, HtmlMarquee, HtmlMultiColumn, HtmlNoBreak, HtmlNoEmbed, HtmlPlainText, HtmlS, HtmlSample, HtmlSmall, HtmlSpacer, HtmlStrike, HtmlStrong, HtmlSubscript, HtmlSuperscript, HtmlTeletype, HtmlUnderlined and HtmlVariable. asashour Remove Deprecation: remove XmlAttr, SubmitMethod, WebRequestSettings.setURL(), and WebClient methods: setCookiesEnabled(), setProxyHost(), setProxyPort(), addHostsToProxyBypass(), and removeHostsFromProxyBypass(). asashour

Release 2.4 – Dec 30, 2008

Type Changes By Update Upgrade HtmlUnit-core-js to 2.4 (corresponds to head of Rhino branch 1.7R2 from Dec 12, 2008). mguillem Update Upgrade NekoHtml to 1.9.11. asashour Add Add support for HtmlEmbed, HtmlCanvas and HtmlWordBreak. asashour Fix JavaScript: correct the return value of EventNode.fireEvent(). Fixes 744. asashour Update JavaScript: add dummy implementation for TextRange methods collapse and select (IE). mguillem Fix JavaScript: replace \n with \r\n for property defaultValue of HtmlTextAreaElement (IE) and ignore leading new line sign. Fixes 748. mguillem Fix JavaScript: frame window object retrieved through should be live and reflect page loads in the window. Fixes 729. mguillem Update JavaScript: do not throw exception on invalid regular expressions. mguillem Add Support for IE conditional comments in HTML code. mguillem Update JavaScript: removeAttribute should delete node property too (IE only), getAttribute returns property if no attribute is found (IE only). mguillem Fix JavaScript: fixed exception occurring while accessing src property of freshly created Image object. Fixes 722. mguillem Fix HtmlPage.asXml(): expand empty table nodes to make generated XML readable as HTML on browsers. Fixes 742. mguillem Fix HtmlTextArea.type(...) should not trigger onchange handler. mguillem Fix Delay execution of image onload handlers after the page finish to load. Fixes 740. mguillem Add First experiments to support applets. mguillem Update 100% success with MochiKit unit tests. mguillem Add JavaScript: HTMLElement.filters is not undefined (IE only). mguillem Fix JavaScript: offsetParent is undefined for detached nodes. mguillem Fix JavaScript: HTMLHtmlElement's clientWidth and clientHeight gives the available screen size. mguillem Fix CSS: font-size is inherited. mguillem Fix CSS: parse shorthand background to find background color. mguillem Fix CSS: parse individual border width from borderWidth. mguillem Fix JavaScript: add dummy implementation for HTMLElement's clientLeft and clientTop. mguillem Update Deprecate HtmlPage.getHtmlElementByAccessKey(), HtmlPage.getHtmlElementsByAccessKey(), HtmlPage.getHtmlElementsByName(), HtmlPage.getHtmlElementsByIdAndOrName(), HtmlElement.getHtmlElementsByAttribute() and HtmlElement.getHtmlElementById(). asashour Update Deprecate DomElement methods getAttributeValue, setAttributeValue. Usage of DOM 2 methods getAttribute, getAttributeNS, setAttribute and setAttributeNS is preferred. mguillem Update Deprecate XmlPage.getDocumentXmlElement(), HtmlPage.createHtmlElement() and createHtmlElementNS(). asashour Fix Document and Element.getElementsByTagName() should not be affected by namespaces. asashour Fix JavaScript: node's attributes collection is never empty for IE. mguillem Add JavaScript: add support for Comment object. Fixes 733. Thanks to Mirko Friedenhagen. asashour Fix JavaScript: prototype for event handlers should be the function prototype. Fixes 734. sdanig Update JavaScript: add support for document.captureEvents (FF). Fixes 658. sdanig Fix JavaScript: fix option.text. Fixes 731. asashour Add JavaScript: add support for window.showModalDialog() and window.showModelessDialog(). Fixes 703. sdanig Fix JavaScript: support Text object. Fixes 730. asashour Fix HtmlInput: typing enter should behave as clicking submit input. asashour Update JavaScript: added support for document.applets. mguillem Add JavaScript: add support for getting and setting the image.onload attribute. Fixes 453. sdanig Add If an image has an onload handler, download the image and then invoke the onload handler. Fixes 453. sdanig Add JavaScript: add support for elements.nextNode() and elements.reset() for the element collection returned by XmlDocument.selectNodes(...) (IE only). Fixes 538. sdanig Fix JavaScript: fix setting input.type if it is the first child. asashour Fix When querying elements for namespaced attributes, don't fall back to returning non-namespaced attributes. Fixes 657. sdanig Add JavaScript: add support for element.removeAttributeNS() (FF only). Fixes 657. sdanig Add JavaScript: dummy support for XUL element in HtmlDocument.createElementNS (FF only). mguillem Add JavaScript: window.controllers is not null (FF only). mguillem Fix JavaScript: IE ignores empty text children. asashour Add JavaScript: add support for document.queryCommandEnabled(). sdanig Add JavaScript: add partial support for window.getSelection() (FF only). sdanig Fix JavaScript: element.style.opacity only accepts numeric values when emulating FF. sdanig Fix JavaScript: fix element.style.display default values when emulating IE. sdanig Fix JavaScript: element.style length-related attributes should be converted to pixels (FF only). sdanig Fix JavaScript: postpone the execution of setting 'location.href'. Fixes 723. asashour Fix JavaScript: select.appendChild(option), .add(), and insertBefore() should update .selectedIndex. asashour Fix Silently ignore HTTP Status code "USE_PROXY" (305), and treat it as success. Fixes 722. asashour Fix XPath: proper handling of upper cased HTML elements. asashour Add Implemented DomNode#compareDocumentPosition and add Node.compareDocumentPosition (FF only). mguillem Add JavaScript: add support for element.contains() (IE only). asashour Fix JavaScript: element.innerHTML should quote anchor href attributes and empty attributes when emulating IE. Fixes 725. sdanig Fix JavaScript: In certain cases, node collections were returning elements when inexistent attributes were accessed. sdanig Fix As per browser conventions, the node for the top-level html tag should only ever contain the head and body tags -- never any text nodes. sdanig Fix JavaScript: make sure element.offsetWidth is constrained by the element's parent's dimensions. sdanig Fix CSS rules specified in stylesheets should not override CSS rules specified directly in an element's "style" attribute. sdanig Add JavaScript: implement element.style.pixelLeft, pixelRight, pixelTop and pixelBottom (IE only). sdanig Fix JavaScript: fire onchange for &lt;input type='file' ...&gt; when field loses focus and value has been changed. mguillem Fix JavaScript: fire focus event not only on &lt;input ...&gt;. Fixes 706. mguillem Add Add support for HTMLDocument.createTreeWalker (FF only). Fixes 131. Thanks to Mike Dirolf. mguillem Add Add support for 'deflate' Content-Encoding. Fixes 717. asashour Update HtmlPage.asXml(): expand empty style nodes to make generated XML readable as HTML on Firefox 3. mguillem Fix HtmlTextInput: type() should remove selected text(). Fixes 716. asashour Add JavaScript: add support for document.uniqueID (IE only). Fixes 715. asashour Update Made static WebClient methods getJavaScriptTimeout() and setJavaScriptTimeout() non-static, so that they can be configured on a per-WebClient basis. Fixes 689. sdanig Add JavaScript: add support for document.compatMode. asashour Add HtmlInput: add isReadOnly() and setReadOnly(). asashour Fix JavaScript: node.appendBefore() should run added script element. asashour Fix Set 'referer' header and other additional headers on loading external JavaScript files. Thanks to Marco Cova. asashour Fix JavaScript: window.frames should return the ones with id attribute (IE only). Fixes 712. asashour Add Add support for DocumentType. asashour Update Better formatting for asText() particularly with new lines for TR, BR or LI and tabs between cells. Fixes 361. mguillem Fix HtmlElement: correctly handle getNodeName(). Fixes 673. asashour Fix JavaScript: correctly handle element.nodeName, .tagName, .prefix, .localName, and .namespaceURI. asashour Add JavaScript: add support for document.namespaces (IE only). asashour Fix JavaScript: Firefox doesn't support select.options.childNodes. asashour Update XmlElement: is deprecated, use DomElement instead. asashour Update HtmlElement: deprecate getAttributesCollection() and isAttributeDefined(). asashour Update BrowserVersion: deprecate INTERNET_EXPLORER_6_0 and INTERNET_EXPLORER_7_0. Fixes 705. asashour Fix JavaScript: document.cookie should overwrite existing cookie. Fixes 707. Thanks to David Bylsma. asashour Update Upgrade Xalan to 2.7.1. Fixes 705. asashour Fix FrameWindow: should be Serializable. asashour Fix JavaScript: postpone the execution of dynamically added external scripts. asashour Fix JavaScript: correct script.onreadystatechange behavior for external JavaScript files. asashour Fix JavaScript: add support for script.onload (FF only). asashour Fix JavaScript: Attr.specified queries owner node for attribute's existence. mguillem Fix JavaScript: HtmlOptionsElement.getAttributeNode returns a node for attributes "id", "value" and "selected" even if these attributes weren't specified in HTML code (IE only). mguillem Fix JavaScript: HtmlOptionsCollection delegates to enclosing select for FF as well. mguillem Fix HtmlSelect: removeOption() and replaceOption() to inspect only HtmlOption children. Fixes 698. asashour Update Upgrade JUnit to 4.5. asashour Fix JavaScript: fireEvent calls handlers with received event object rather than with a copy (IE only). mguillem Fix JavaScript: trigger deferred scripts' onreadystatechange handler before onload event (IE only). mguillem Fix JavaScript: constant values like TEXT_NODE on elements are not available when simulating IE. mguillem Fix JavaScript: objects like HTMLElement don't have a their prototype property in their prototype chain (FF only). mguillem Fix JavaScript: use 'className' instead of 'class' to get/set class attribute (IE only). mguillem Fix JavaScript: Node.getAttributeNode returns null if no attribute exists with the specified name. mguillem Fix Form element can be included as HTML inside XML. Fixes 696. asashour Fix JavaScript: fix incorrect value of CSSStyleRule.selectorText when identified by id (like "#foo"). Fixes 702. mguillem Fix JavaScript: define properties altKey, ctrlKey and shiftKey on UIEvent when simulating Firefox. mguillem Fix JavaScript: use UIEvent for keyboard events. mguillem Fix JavaScript: cloneNode copies event handlers when simulating IE. mguillem Update Better generics: avoid the need for casting when calling HtmlElement.getHtmlElementById(), HtmlForm.getInputByName(), and .getInputByValue(). asashour Fix JavaScript: implemented workaround for NPE in CSSParser in some usage of CSSStyleSheet.insertRule. mguillem Fix JavaScript: finished implementation of insertRule (FF) and addRule (IE) on CSSStyleSheet. mguillem Fix JavaScript: CSSStyleRule.selectorText should return values like ".foo" rather than "*.foo". mguillem Remove Deprecation: remove HtmlUnitXPath class, DomNode.getXXXDomYYY(), HtmlPage.getDocumentHtmlElement(), HtmlPage.moveFocusToElement(), HtmlPage.getFocusedElement(), WebClient.popFirstWindow(), and WebClient.pushClearFirstWindow(). asashour Add ActiveX: add support for native ActiveX controls (using Jacob). asashour Update WebResponse interface: deprecate getResponseBody() in favor of getContentAsByteArray(), deprecate getLoadTimeInMillSeconds() in favor of getLoadTime(), deprecate getUrl() in favor of getRequestUrl(), add getContentAsString(String). sdanig

Release 2.3 – Sept 16, 2008

Type Changes By Update Better generics: avoid the need for casting when calling methods like WebClient.getPage(), HtmlPage.getHtmlElementById(), ... NOTE: This change avoids casting so that code like 'HtmlImage e = (HtmlImage) page.getHtmlElementById("myImage")' can be written as 'HtmlImage e = page.getHtmlElementById("myImage")'. HOWEVER, due to a bug in Sun Java 5 compiler (fixed in Java 6 and not existing for instance in Eclipse), calling directly a method from the base return type without assigning the result to a variable will produce a compilation error. A simple workaround consists in changing code like 'page.getHtmlElementById("foo").asText()' to 'page.&lt;HtmlElement&gt;getHtmlElementById("foo").asText()' (or assigning the result of the 'getHtmlElementById("foo")' call to an intermediate variable). asashour Fix JavaScript: replace \n with \r\n for value property of HtmlTextAreaElement (IE) and ignore leading new line sign. mguillem Fix JavaScript: document.cookie value to be surrounded by double quotes if it contains space. asashour Update CookieManager: process server-side cookies. asashour Fix Avoid NullPointerException when iframe.src is a "javascript:..." URL and JavaScript has been disabled. sdanig Fix JavaScript: add doScroll() method to bodies, divs, spans and textareas (IE only). Fixes 687. sdanig Fix HtmlTextArea: replace new lines with '%0D%0A' and remove first occurrence in form submission. asashour Fix JavaScript: when setting location.href, if the only real change is in the hash then just change the hash and don't hit the server. Fixes 695. sdanig Add Allow custom CSS error handlers (via WebClient.getCssErrorHandler() and WebClient.setCssErrorHandler()) and provide two error handler implementations out of the box (DefaultCssErrorHandler and SilentCssErrorHandler). Fixes 132. sdanig Update Upgrade NekoHtml to 1.9.9. asashour Fix Select element can be included as HTML inside XML. Fixes 696. asashour Fix JavaScript: setting select.selectedIndex should not change page focus. Fixes 654. asashour Add Add facility method WebClient.closeAllWindows(). mguillem Fix JavaScript: StackOverFlowError when setting html fragment containing BODY tag to innerHTML of an element inside BODY. Updated the parser to ignore HTML, HEAD (with contents in IE) and BODY tag while parsing fragment. sudhan_moghe Fix JavaScript: Make innerHTML property read only in IE for following elements col, colgroup, frameset, head, html, style, table, tbody, tfoot, thead, title, tr. Property is writable for all the elements in FF. sudhan_moghe Fix JavaScript: Make innerText property read only for following elements html, table, tbody, tfoot, thead, tr. FF do not have the property. sudhan_moghe Add JavaScript: Add support for title.text. sudhan_moghe Update WebRequestSettings: Add trailing slash to any URL that contains only hostname (with or without port). asashour Update Rework WebConnection class hierarchy: remove unnecessary WebConnection.getWebClient() and WebConnection.getState() methods, delete unnecessary WebConnectionImpl abstract class, make WebConnection classes part of the public API by removing their internal API warning. sdanig Add Add CookieManager class which can be used to manage cookies on a per-WebClient basis. Fixes 129. sdanig Fix Fix condition where CSS warnings and errors did not have a systemID to easily identify error origin. Fixes 677. sdanig Fix JavaScript: add support for properties style (FF) and styleSheet (IE) on HTMLStyleElement and dummy support for the methods insertRule (FF) and addRule (IE) on CSSStyleSheet. mguillem Update XMLSerializer: includes attributes from HTMLElements. Thanks to Darrell DeBoer. asashour Remove XmlAttr: remove deprecated constructor with Map.Entry. asashour Fix ThreadManager: add WebWindow name to the background threads name. Fixes 694. asashour Fix XmlPage: ClassCastException should not be thrown by .getByXPath(). Fixes 692. asashour Fix JavaScript: trigger focus event when clicking an element or typing in it. Fixes 629. mguillem Fix JavaScript: trigger mousedown and mouseup event when an element is clicked. Fixes 646. mguillem Fix JavaScript: make document.styleSheets[x] respect WebClient.printContentOnFailingStatusCode and WebClient.throwExceptionOnFailingStatusCode settings when downloading external CSS files. Fixes 685. sdanig Fix JavaScript: StackOverflowError when setting the location hash via the location.href attribute. Fixes 688. sdanig Add JavaScript: add stylesheet.href attribute. Fixes 680. sdanig Fix Don't parse &lt;noscript&gt; content when JavaScript is enabled. Fixes 488. mguillem Fix JavaScript: document.XXX allow to access forms by id (IE only). mguillem Fix JavaScript: silently ignore script nodes with event="..." for="..." when the target element can't be found (IE only). Fixes 669. mguillem Fix JavaScript: copy dynamic properties from template in fireEvent (IE only). Fixes 647. mguillem Fix JavaScript: fixed event order when setting the value of a text field. Fixes 660. mguillem Fix JavaScript: escape quotes found in attribute values when accessing through innerHTML. Fixes 678. mguillem Update Make IE7 the default BrowserVersion (was IE6). sdanig Add Add BrowserVersion for Firefox 3 emulation. sdanig Fix Fixed NullPointerException occurring document.styleSheets[x] with out of bound index. Fixes 676. mguillem Fix Fixed NullPointerException occurring in HtmlPage.writeInParsedStream() when document.write is called after setting innerHTML of some element in page. Fixes 674. Thanks to Ethan Glasser-Camp. sudhan_moghe Fix HTMLParser: now considers namespaces. Fixes 673. asashour Fix HtmlElement: asText() respects hidden visibility style attribute. Fixes 672. asashour Fix Add missing equals() methods to the PluginConfiguration and PluginConfiguration.MimeType classes. sdanig Fix WebClient.expandUrl doesn't handle references correctly. Fixes 662. Thanks to Martin Tamme. sudhan_moghe Fix Attribute values for cloned nodes were not available via JavaScript. Fixes 659. sdanig Add JavaScript: add support for navigator.product (FF only). Fixes 665. asashour Update Upgrade Commons Collections to 3.2.1 asashour Fix JavaScript: 'window.event' should be preserved after another event firing. asashour

Release 2.2 – Jul 24, 2008

Type Changes By Fix JavaScript: fix endless recursion when innerHTML has script that modifies the innerHTML. Fixes 655. sudhan_moghe Fix Accept \r and \n for HtmlTextArea.type(). Fixes 653. mguillem Fix Avoid to perform multiple request for the same external stylesheet. Add facility to access referred content from HtmlLink. mguillem Fix Fix memory leak of window objects when the windows contain long-running background JavaScript tasks scheduled via setInterval() or setTimeout(). Fixes 648. sdanig Fix JavaScript: fix JavaScript error with form.element, when element is located before closing form tag but the tag balancing forces form to be closed earlier. Fixes 651. sudhan_moghe Add HtmlFileInput: allow to load data from memory. Thanks to Andrew_WOT. mguillem Add JavaScript: add support for attribute.text and attribute.xml (IE only). sudhan_moghe Add JavaScript: add support for document.activeElement and element.setActive() (IE only). Fixes 634. sudhan_moghe Update Ensure to focus element on calling HtmlElement.type(). Fixes 629. asashour Add JavaScript: add support for script.text. Fixes 640. asashour Fix Fix exception when opening about:blank with Firefox. Fixes 641. asashour Add Add classes AttachmentHandler, CollectingAttachmentHandler and Attachment to handle attachments outside of the normal page flow (disabled by default for backwards compatibility). sdanig Fix JavaScript: postponed loading of frame content after script execution when src is set from a script. mguillem Fix JavaScript: window.execScript() now accepts undefined 'language' (IE only). asashour Fix Fix current window's computation when a window is closed by JavaScript during onload processing. Fixes 635. Thanks to Sudhan Moghe. mguillem Fix ThreadManager: set BrowserVersion of HtmlUnitContextFactory of newly created threads. Fixes 637. Thanks to Rene Schwietzke. asashour Fix JavaScript: fix variable scope after document.write. Fixes 603. Thanks to Sudhan Moghe. mguillem Fix Parsing: handle quotes in comments correctly within script nodes. Fixes 632. mguillem Add Cache compiled scripts and parsed stylesheets at the WebClient level. sdanig Update INCOMPATIBLE CHANGE: HtmlElement.getPage() now returns SgmlPage instead of HtmlPage. asashour Add JavaScript: add support for TextRange.duplicate() (IE only). mguillem Add JavaScript: add support for property xml on XML DOM nodes (IE only). mguillem Remove Remove ant build file. asashour Fix Maintain CSS style attribute order, according to document definition. sdanig Fix Style attributes in upper case are not recognized. Fixes 633. Thanks to Sudhan Moghe. mguillem Fix JavaScript: fixed document.write(ln) handling of &lt;br&gt; and &lt;hr&gt;. Fixes 436. mguillem Fix JavaScript: improved document.write(ln) support to add nodes to the right parent. Thanks to Karel Kolman. mguillem Fix JavaScript: HTMLDocument.ownerDocument is always null. mguillem Fix Fix HtmlTextInput.type(), HtmlTextArea.type() and HtmlPasswordInput.type() to handle backspaces correctly. sdanig Fix JavaScript: implemented a workaround for Rhino bug in number primitive resolution (Rhino bug 374918). Fixes 536. sdanig Add Move proxy-related methods from WebClient to new class ProxyConfig. Fixes 116. sdanig Fix JavaScript: value of form elements is set before triggering keyUp event (was after). mguillem Update Be more tolerant while extracting charset from incorrect Content-Type header. Fixes 617. mguillem Fix JavaScript: add optionElement.disabled and optionGroupElement.disabled attributes. sdanig Fix HtmlOption.isDisabled() and HtmlOptionGroup.isDisabled() always return false when emulating IE. Fixes 630. sdanig Fix Don't lose any custom request headers during redirection. Fixes 631. sdanig Fix Allow PUT request with body content. Thanks to Andreas Hartmann. mguillem Fix Fix extraneous load of frame contents cause by frame node cloning. Fixes 613. sdanig Add JavaScript: add support for methods getAttribute(), setAttribute() and removeAttribute() on element.style and element.runtimeStyle (IE only). Fixes 628. sdanig Fix Fix incorrect handling of conflicting return values in different event handlers during event bubbling. Fixes 626. sdanig Fix Malformed HTML code: associate form elements located before closing form tag to the form even if tag balancing forced form to be closed earlier. mguillem Fix Be more lenient about spurious whitespace in node attributes containing relative URLs (image.src, script.src, link.href, etc). Fixes 627. sdanig Fix Fix document.cookie so that it works correctly when loading HTML pages from the local filesystem, when there is no real domain available. sdanig Fix Allow calls to WebClient.openWindow() with null URLs. Fixes 625. sdanig Add JavaScript: add support for onpropertychange event type (IE only). Fixes 615. asashour Fix Fix HtmlPage.getHtmlElementsByIdAndOrName() returns same element twice. Fixes 623. mguillem Add JavaScript: implement textRange.text setter (IE only). asashour Add JavaScript: implement style.zIndex. Fixes 614. Thanks to Rodney Gitzel. asashour Fix NamedNodeMap instances (element.attributes) are case-insensitive in HTML documents (but not XML documents). sdanig Fix Invalid HTML: when the same attribute appears more than one time, consider the first value rather than the last one. Fixes 621. mguillem Fix JavaScript: HtmlInput.type value is always lower case. mguillem Fix Deprecated JavaScriptEngine.get/setTimeout(), added replacement methods WebClient.get/setJavaScriptTimeout(). Fixes 421. sdanig Fix Fix serialization of HtmlPages (was broken in some scenarios). Fixes 606. sdanig Update Change license to Apache 2. mguillem Fix Fix IllegalStateException that occured using document.write assigned to a variable (IE only). Fixes 605. mguillem Add HtmlPasswordInput: type() appends text to the value. asashour Update JavaScript: XMLDocumet.getElementById retrieve elements with HTML namespace (FF only). Fixes 618. mguillem Update Improved logic to detect the window with the focus. mguillem Add JavaScript: improved behavior of XMLHttpRequest in network error handling. Added support for the onError callback (FF only). Fixes 1962847. Thanks to Stuart Begg. mguillem Fix Fixed ClassCastException in CSS child selector processing. Fixes 616. mguillem Add Allow to directly invoke URLs with javascript protocol. mguillem Add Add facilities on HtmlImage to download the referenced image and read it. Fixes 1954183. mguillem Remove Remove deprecated HtmlPage.executeJavaScriptIfPossible() and WebClient.assertionFailed(). asashour Update INCOMPATIBLE CHANGE: Replace SubmitMethod with HttpMethod (some methods with incompatible return types). asashour Add HtmlPage: add refresh(), deprecate HttpWebConnection.newWebResponseInstance() (replaced with another method with different parameters), and deprecate one of WebResponseImpl constructors (with replacement). Fixes 127. asashour Update WebRequestSettings: deprecate getURL() and setURL(), use getUrl() and setUrl(). asashour Fix JavaScript: don't store cookies when document.cookie is set and cookies are disabled. Fixes 608. sdanig Add JavaScript: add support for the link.href, link.type and link.rel properties. sdanig Fix JavaScript: initialize event.target correctly when using createEvent and dispatchEvent (FF only). sdanig Update DomAttr: deprecate getHtmlValue() and setHtmlValue(). asashour Remove INCOMPATIBLE CHANGE: HtmlAttr and XmlAttr are no more used, use DomAttr instead. asashour Fix JavaScript: fix XMLElement.attributes. Fixes 595. asashour Update &lt;span&gt;: empty tag is expanded as required by browsers. Fixes 601. Thanks to Sudhan Moghe. asashour Add JavaScript: add support for XMLElement.hasAttribute() (FF only). asashour Add JavaScript: add support for HTMLAnchorElement.click(). Fixes 602. Thanks to Sudhan Moghe. asashour Fix Any onload events specified on frames and iframes are executed each time the frame content changes -- not just the first time that the frame loads. sdanig Fix Make UTF-8 the default encoding for all XMLHttpRequests. sdanig Fix Encode and decode location.hash when emulating Firefox. sdanig Fix HtmlPage: cloned page handles XPath. Fixes 600. asashour Add JavaScript: Add select.multiple support. sdanig Add JavaScript: Add initial support for CSSRule and CSSStyleRule. asashour Add Add WebClient.setCssEnabled(boolean) and WebClient.isCssEnabled(). Fixes 123. sdanig Fix JavaScript: object properties now returned in creation order. mguillem Update Use HtmlUnit-core-js (which is a Rhino fork) instead of Rhino. mguillem

Release 2.1 – Apr 15, 2008

Type Changes By Update Deprecate HtmlPage.getDocumentHtmlElement(). asashour Add Add support for DomNode.getTextContent() and setTextContent(). asashour Add JavaScript: add initial support for CSSRuleList. asashour Fix HtmlTextInput and HtmlTextArea: fix type() space. asashour Update HtmlPage.getReadyState() now synchronized with the information from the documentElement. Fixes 402. mguillem Update CSS parsing optimization: avoid parsing CSS selectors multiple times. sdanig Update Initialize mouse event coordinates lazily, in order to avoid unnecessary CSS processing overhead. sdanig Fix JavaScript: window.open without URL provided returns blank window when simulating Firefox too. Fixes 392. mguillem Fix JavaScript: clear existing events handlers when page's content is changed with document.write. Fixes 521. mguillem Fix JavaScript: fixed document.location in pages created with document.write. mguillem Fix JavaScript: fixed ClassCastException occurring when select() is called on form elements other than text inputs. mguillem

Release 2.0 – Apr 7, 2008

Type Changes By Update Upgrade NekoHtml to 1.9.7. asashour Update Deprecate DomNode non-DOM methods, i.e. getLastDomChild(), getParentDomNode(), getPreviousSibling(), getNextDomSibling(), getFirstDomChild() and cloneDomNode(). asashour Update Deprecate HtmlUnitXPath. asashour Update DomNode: asXml() uses charset from HtmlPage.getPageEncoding(). Fixes 586. asashour Update Upgrade Jetty to 6.1.9. asashour Update Upgrade Commons Lang to 2.4. asashour Update Deprecate popFirstWindow and pushClearFirstWindow on WebClient. mguillem Fix Add element.offsetParent to FF emulation mode. sdanig Update Upgrade CSS Parser to 0.9.5. sdanig Add Add initial support for data protocol (Firefox only). mguillem Fix Fix element.clientWidth, clientHeight, offsetTop, offsetLeft and offsetParent to reflect CSS configuration. sdanig Add In BoxObject, add attributes element, firstChild, lastChild, nextSibling, previousSibling, x, y, width and height. sdanig Fix Fix element.offsetWidth and element.offsetHeight to include padding. sdanig Add Add DomNode.getCanonicalXPath(). asashour Update Deprecate HtmlPage.moveFocusToElement() and getElementWithFocus(), use setFocusedElement() and getFocusedElement(). asashour Update Meta Refresh: case-insensitive URL (#1924784). Fixes 1924784. Thanks to Dmitri Zoubkov. asashour Update Upgrade Rhino to 1.7R1. asashour Add JavaScript: add support for XMLElement.getElementsByTagNameNS() (FF only). asashour Add JavaScript: add support for input.setSelectionRange() (FF only). asashour Update HtmlSelect: if any HtmlOption is selected, focus is moved to HtmlSelect. asashour Add JavaScript: add support for 'onfocusin' and 'onfocusout' (IE only). asashour Update JavaScript: CSSStyleSheet added support for ownerNode (FF) and owningElement (IE). mguillem Update JavaScript: allow direct access to nodes per id/name when simulating Firefox too. mguillem Update JavaScript: fixed various issues with Node methods appendChild, insertBefore and replaceChild when involved nodes don't belong to the same document. mguillem Update HtmlPage.asXml(): place scripts in CDATA sections with comments. mguillem Fix JavaScript: fix window.location.hash so it always starts with '#'. asashour Update Upgrade Jetty to 6.1.8, Commons IO to 1.4 and FileUpload to 1.2.1. asashour Remove INCOMPATIBLE CHANGE: Remove KeyValuePair, and hide HtmlForm.getParameterListForSubmit() and .getSubmittableElements(), they shouldn't be directly called by users. asashour Fix JavaScript: return undefined for out of bound element access on HtmlFormElement. mguillem Fix JavaScript: custom RegExp proxy now accepts unescaped curly braces. mguillem Fix JavaScript: ComputedCSSStyleDeclaration.getPropertyValue returns the same value as direct property access. mguillem Add JavaScript: add support for HtmlElement.textContent (FF only). mguillem Remove Remove Jaxen dependency. asashour Remove Remove deprecated methods in HtmlPage: assertAllIdAttributesUnique(), assertAllAccessKeyAttributesUnique(), assertAllTabIndexAttributesSet() (use corresponding methods in WebAssert instead). sdanig Remove Remove deprecated WebRequestSettings.setCookiePolicy() and getCookiePolicy(). sdanig Fix JavaScript: element.currentStyle returns calculated (rather than static) style (IE only). sdanig Add Add method Cache.clear(). sdanig Update JavaScript: added support for (undocumented) method CollectGarbage (IE only). mguillem Update DomNode.getByXPath(): when called with a string starting with slash, evaluation is relative to the root element, not to the DomNode. You can add initial dot. asashour Add Add Xalan 2.7.0 as dependency. asashour Fix JavaScript: fixed IndexOutOfBoundsException in processing of IE @elif pre processor instruction. Fixes 578. mguillem Fix JavaScript: instanceof now works correctly with html elements (FF only). mguillem Fix JavaScript: property ownerDocument now defined on node. mguillem Fix JavaScript: ignore calls to document.open() during page parsing. sdanig Fix JavaScript: calling document.write() after a page has finished parsing results in overwriting the entire page. sdanig Fix Handle script elements with src attributes containing "javascript:..." URLs. Fixes 514. sdanig Fix Correct the order of script element execution, deferred script element execution, script ready state changes, deferred script ready state changes, and onload handlers. sdanig Add JavaScript: add support for document.fireEvent (IE only) and document.onXXX event handlers (elements already had these). sdanig Fix Don't reload page from server if window.location.hash is modified. sdanig Fix JavaScript: HTMLCollection.item and namedItem return null when element is not found. mguillem Update JavaScript: avoid detection of document.all when simulating FF (property still available). mguillem Update XPath: case-insensitive match for attribute names. asashour Fix Add temporary body element when one is missing and document.write() is called. sdanig Fix Add implicit body element when one is missing and there is no content to trigger addition by NekoHTML. sdanig Fix When document is missing a body element, document.body returns null instead of undefined. sdanig Fix Execute JavaScript when a script element's src attribute is set (always when emulating IE, only sometimes when emulating FF). sdanig Fix Add test-scoped dependency on slf4j, in order to trigger correct logging in Jetty during the unit tests. sdanig Add JavaScript: add support for document.importNode() (FF only). Fixes 571. asashour Update Upgrade Jetty to 6.1.7 and JCL to 1.1.1. sdanig Fix Fixed incorrect processing of multiple conditional compilation flags (IE only). mguillem Add JavaScript: add empty implementation of HTMLElement.clientWidth and .clientHeight. asashour Fix JavaScript: remove style attribute if it is empty. asashour Add Add support of having XML inside Html (IE only). asashour Update INCOMPATIBLE CHANGE: Rename UnknownHtmlElement to HtmlUnknownElement. asashour Update Beautify asXml() by removing unnecessary blanks. asashour Fix XmlPage: fix asText() and asXml(). asashour Add JavaScript: add basic support for document.queryCommandSupported and document.execCommand. mguillem Fix XmlPage: correct XPath handling (#1883395). Fixes 564. asashour Update Fixed User-Agent header for IE6. mguillem Update JavaScript: changed simulated screen dimensions to 1024x768 (was 800x600). mguillem Add JavaScript: add basic support for all missing style attributes. asashour Update JavaScript: Node.replaceChild() correctly processes DocumentFragment. asashour Update JavaScript: XMLHttpRequest should not call onreadystatechange handler if sync (FF only). asashour Add JavaScript: add support for Range.createContextualFragment (FF only). asashour Update JavaScript: <code>__proto__</code> is only defined for Firefox. asashour Fix Handle line comments in multiline onXxxx events handlers declarations. Fixes 347. mguillem Update Upgraded nekohtml to version 1.9.6.1 mguillem Update INCOMPATIBLE CHANGE: Change html package to implement W3C DOM API interfaces, though most methods are not yet implemented. Remove deprecated methods. Fix DomCData derivation to be from DomText. Rename getAttributes methods that conflict with W3C DOM API return type. (#1747878). Fixes 112. dktaylor Update INCOMPATIBLE CHANGE: Rename HtmlHeader1 (to HtmlHeader6) to corresponding HtmlHeading1 (to HtmlHeading6). asashour Update INCOMPATIBLE CHANGE: Rename HtmlTextDirection to the correct name (HtmlDirectory). asashour Update JavaScript: XMLHttpRequest should not throw an exception when send() is called without args (for FF) and when send content is specified but method is GET. mguillem Update JavaScript: correct toString() for properties in 'window' scope (FF only). asashour Update JavaScript: detect encoding from XML declaration (#1876545). Fixes 561. asashour Fix JavaScript: HTMLAnchor href attribute should be reachable even if the URL is malformed. mguillem Add JavaScript: add support for XMLElement.getAttributeNode() (#1874624). Fixes 558. Thanks to Sudhan Moghe. asashour Fix JavaScript: document.cookie separates cookies with '; ' and not ';'. mguillem Fix Fixed ClassCastException occurring when a non HTML page is loaded with Firefox simulation (regression in 1.14). mguillem Remove Remove Assert, use WebAssert instead. asashour Update Upgrade JUnit to 4.4. asashour Add JavaScript: Add support for HTMLHtmlElement. asashour Remove HtmlForm: Remove deprecated .getRadioButtonInput() and .setCheckedRadioButton(). asashour Remove Remove deprecated HtmlForm.fakeCheckedRadioButton() and HtmlSelect.fakeSelectedAttribute(). asashour Add JavaScript: Add support for XPathResult.iterateNext() (FF only). Fixes 556. asashour Remove Remove deprecated HtmlElement.MapEntryWrappingIterator. asashour Update Deprecate HtmlElement.getAttributeEntriesIterator(), use .getAttributes() instead. asashour Fix JavaScript: HTMLCollection should not have 'tags' property in Firefox (except for <code>document.all</code>). asashour Add HtmlTextInput and HtmlTextArea: Add support for select(), and fix tabIndex JavaScript property. asashour Add Add initial support for document.selection.createRange() (IE only). asashour Remove Remove deprecated constants in BrowserVersion, in addition to HtmlForm.submit(). asashour Update Deprecate DomNode.getChildIterator(), use getChildren() instead. asashour Update INCOMPATIBLE CHANGE: DomNode.getAllHtmlChildElements() returns Iterable instead of Iterator. asashour Remove DomNode: remove unused EventHandler, and deprecated PropertyChange methods. asashour Update Deprecate HtmlElement.getChildElementsIterator(), use getChildElements() instead. asashour Add JavaScript: add support for input.selectionStart, input.selectionEnd, and input.textLength. asashour Remove Remove deprecated DomNode.XXXX_NODE, use org.w3c.dom.Node instead. asashour Remove Remove the public (deprecated) constructor of HtmlElement and its subclasses. asashour

Release 1.14 – Jan 9, 2008

Type Changes By Fix JavaScript: allow script node's onreadystatechange handler to be set to null. mguillem Fix Don't escape '+' in URL path. Fixes 1866448. Thanks to David Bylsma. mguillem Add JavaScript: add support for 'Node' prototype. mguillem Add JavaScript: add support for window.resizeBy. mguillem Update JavaScript: StyleSheetList correctly loads CSS content (FF only). asashour Add Correctly handle URLs with path starting with double slash. mguillem Add JavaScript: add configurable support for supported plugins and mime types (FF only). Per default a Shockwave Flash plugin is "configured" for Firefox 2. mguillem Fix JavaScript: XMLHttpRequest.responseXML.getElementById should always return null (#1854975). Fixes 547. asashour Add JavaScript: add support for "for (i in collection)" (#1862054). Fixes 548. asashour Add JavaScript: XSLT support (ActiveXObject 'Msxml2.XSLTemplate') (IE only). asashour Update XPath: is now namespace aware for XmlElements. asashour Add JavaScript: add initial support for XPathResult, and XSLTProcessor (FF only). asashour Update JavaScript: activate document.all for Firefox too. mguillem Add Add DomElement with its JavaScript 'Element' prototype. asashour Fix XPath: DomCharacterData is treated as text node. asashour Add XMLDocument: add support for .parseError property (IE only), createElement(), createNSResolver() (FF only), evaluate() (FF only), and 'xml:space' attribute (IE only). asashour Update XMLPage handles qualified tag names. asashour Update JavaScript: added 'HTMLEvents' to the event types supported by document.createEvent (Firefox). mguillem Update JavaScript: use custom JDK based regular expression evaluation for String.match to avoid Rhino problems (speed and wrong evaluation). mguillem Update HtmlTextInput and HtmlPasswordInput: type('\n') submits the enclosing form. asashour Update &lt;frame&gt; and &lt;iframe&gt; should trim values in 'src' attribute. asashour Update JavaScript: element.dispatchEvent() exactly behaves as calling ClickableElement.click() and .dblClick() and returns correct value (based on event.preventDefault()) (#1813007). Fixes 531. asashour Add JavaScript: add initial support for event.preventDefault() (anchor, checkbox, text input, textarea, others to follow) (#1813007). Fixes 531. asashour Add HtmlTextInput: type() appends text to the value. asashour Add JavaScript: cache parsed JavaScript responses. Fixes 108. mguillem Update JavaScript [internal]: removed ScriptEngine, use JavaScriptEngine directly. mguillem Add XMLPage: add support for comment node. asashour Update Deprecate FocusableElement. asashour Add JavaScript: add support for label.htmlFor (#1835550). Fixes 541. asashour Fix JavaScript: fix removeChild() for XML elements (#1836922). Fixes 543. asashour Add JavaScript: Add style.borderBottom[Color,Style,Width], .borderLeft[Color,Style,Width], .borderRight[Color,Style,Width], and .borderTop[Color,Style,Width] (#1835836). Fixes 542. asashour Add Parse CSS files and use the result in window.getComputedStyle(), as well as providing accurate values for document.styleSheets.length. All CSS file downloading and parsing occurs lazily. NOTE: Adds a dependency on cssparser 0.9.4. sdanig Fix JavaScript: Tolerate empty string for DOMParser.parseFromString() (FF only), and ActiveXObject('Microsoft.XMLDOM').loadXML() (IE only) (#1835090). Fixes 540. asashour Fix JavaScript: &lt;iframe&gt; src is now correctly handled via setAttribute() (#1828914). Fixes 537. asashour Fix JavaScript: add support for getAttributeNS and setAttributeNS on node (Firefox). mguillem Fix JavaScript: don't encode xml special characters for innerHTML property on script nodes. mguillem Fix Ignore &lt;script&gt; src that starts with "javascript:". asashour Fix Handle file URLs with query portions (file://my/path?a=b) and ref portions (file://my/path#ref) without breaking. sdanig Fix Fixed possible ConcurrentModificationException and dead lock with HtmlAttributeChangeListener and DomChangeListener. mguillem Add Add support for deferred script elements (IE only). sdanig Fix Avoid leaving the DOM in an inconsistent state when DomNode.replace(DomNode) is called and the target node is used as the parameter. sdanig Fix JavaScript: delegate select.options.xxx property modifications to the parent select element (property accesses were already being delegated correctly; IE only). sdanig Add Add basic support for document.getBoxObjectFor() (FF only) (#1815602). Fixes 534. Thanks to Sam Hough. asashour Update HtmlTextArea.asXml() now preserves content and expands empty tag to make generated xml interpretable as html by browsers. mguillem Add Add WebAssert utility class for domain-specific assertions. INCOMPATIBLE CHANGE: Deprecate assertion methods in HtmlPage in favor of using WebAssert. The exceptions thrown are now java.lang classes instead of junit classes, though they still function as before. sdanig Update HtmlForm: on submitting a form without parameters, URL should not end with a question mark (IE7 only). asashour Add JavaScript: getElementsByTagName now returns empty collection when called with 'incorrect' name. mguillem Add JavaScript: add support for hasAttribute and hasAttributeNS on node (Firefox), getNamedItem on NamedNodeMap. mguillem Add Add a popup blocker (WebClient.setPopupBlockerEnabled(boolean)). sdanig Fix Use browser-compatibility cookie handling by default, deprecate unnecessary cookie settings in WebRequestSettings, ensure cookie policy used during HTTP communication matches the cookie policy used by the document.cookie attribute, use a single cookie header during HTTP communication. sdanig Add HtmlFileInput: add support for non-ASCII name of uploaded files (#1818569). Fixes 535. asashour Add JavaScript: accept ECMA reserved keywords like 'float' as normal identifier. mguillem Add JavaScript: added support for DOMContentLoaded event (Firefox). Fixes 530. Thanks to Sam Hough. mguillem Add Add possibility to configure the mime type used when uploading a file. mguillem Add JavaScript: add support for the htmlElement.attributes collection. sdanig Add Add WebClient.setUseInsecureSSL(boolean): forces the client to trust all hosts, regardless of their certificates. Makes it easy to work around servers with expired or misconfigured certificates. sdanig Add JavaScript: make focus and blur available on HtmlElement. Fixes 532. Thanks to Sam Hough. mguillem Fix Don't use custom RetryHandler anymore to allow standard retry when server drops the connection which caused NoHttpResponseException. (see http://jakarta.apache.org/httpcomponents/httpclient-3.x/exception-handling.html). Fixes 503. mguillem Fix Make the loading of external .js files referenced via script tags listen to WebClient.getPrintContentOnFailingStatusCode() and WebClient.isThrowExceptionOnFailingStatusCode(). sdanig Add Add support for CDATA sections of xml documents. mguillem Add Add facility method DomNode.getFirstByXPath(xpathExpr). mguillem Add JavaScript exceptions: line number information now relative to the page. mguillem Add Add HtmlPage.executeJavaScript to inject JavaScript code in a page. mguillem Add JavaScript: add support for element.dispatchEvent(event) (Firefox only). sdanig Add Cache JS server responses to avoid useless requests (script caching will come later). Fixes 108. mguillem Fix Don't load the originally specified source of a frame, when its location has already been changed by JavaScript. Fixes 363. mguillem Add Add primitive support for document.styleSheets (#1805817). Fixes 526. asashour Add Add support of setExpression and removeExpression for element and style (#1809522). Fixes 529. asashour Update Update window.frames so it does not throw ClassCastException (#1802836). Fixes 524. asashour Update JavaScript: document.all('notExistingElement') now returns null as IE does. Fixes 525. mguillem Fix Fix loading content containing 'Content-Type' header with quoted charset (#1797235). Fixes 522. asashour Update Upgrade Jetty to 6.1.5. asashour Fix JavaScript: XMLDocument should not ignore descendants non-empty DomText in IE. asashour Fix JavaScript: loadXML() supports relative URLs in ActiveXObjects: 'Microsoft.XmlDom' and 'MSXML.DOMDocument' (IE only). asashour Add Add basic support for attributes of XML elements. asashour Add Added FalsifyingWebConnection, a WebConnection wrapper that provides facility methods to provide other content than the "real" one. mguillem Add JavaScript: added backgroundImage to allowed style properties. mguillem Add JavaScript: added Document.createRange() and basic support for Range (Firefox only). mguillem Add JavaScript: add selectNodes() and selectSingleNode() (IE only), getElementsByTagName() and .tagName property for XML elements. asashour Add JavaScript: add basic support of setProperty() function and .preserveWhiteSpace property for ActiveXObjects: 'Microsoft.XmlDom' and 'MSXML.DOMDocument' (IE only). asashour Update DomNode.getByXPath() with 'id()' function should return empty list instead of throwing an exception (#1790308). Fixes 519. asashour Add WebClient.loadWebResponse should not be final. Fixes 520. mguillem Add JavaScript: add UIEvent.initUIEvent() (FF only). sdanig Add Allow HTTP methods DELETE, HEAD, OPTIONS, PUT and TRACE (in WebClient.getPage(WebRequestSettings) and in XMLHttpRequest). mguillem Add JavaScript: add XMLSerializer (FF), and .xml property for ActiveXObjects: 'Microsoft.XmlDom' and 'MSXML.DOMDocument' (IE). asashour Add JavaScript: add DOMParser, with implementation of parseFromString() (FF only). asashour Add JavaScript: add loadXML() and selectNodes() for ActiveXObjects: 'Microsoft.XmlDom' and 'MSXML.DOMDocument' (IE only). asashour Update JavaScript: ignore text nodes of loaded XML by ActiveXObjects: 'Microsoft.XmlDom' and 'MSXML.DOMDocument' (IE). asashour Update Move getWebClient() from HtmlPage to SgmlPage. asashour Update JavaScript: correctly handle 'documentElement' property for 'document.implementation.createDocument()' (FF), and ActiveXObjects: 'Microsoft.XmlDom' and 'MSXML.DOMDocument' (IE). asashour Add JavaScript: add load() and getElementsByTagName() for 'document.implementation.createDocument()' (FF), and ActiveXObjects: 'Microsoft.XmlDom' and 'MSXML.DOMDocument' (IE). asashour Add JavaScript: add support for function element.fireEvent() (IE only). Thanks to Rob Di Marco. sdanig Add JavaScript: add support for function mouseEvent.initMouseEvent() (FF only). Thanks to Rob Di Marco. sdanig Update ActiveXObject (XmlHttp): should not be created by case-sensitive string. (#1784330). Fixes 515. Thanks to Dan Fabulich. asashour Update Add support for keypress and keyup events (keydown is already supported). Deprecate HtmlElement.keyDown() methods in favor of HtmlElement.type() methods which simulate user typing rather than a single event type. sdanig Add Add SgmlPage: moving towards having fully fledged XmlPage. asashour Fix Regular Expressions: allow 'undefined' pattern, and tolerate improper patterns (trigger warning). asashour Update Upgrade Rhino to 1.6R7. asashour Add JavaScript: add support for function event.initEvent() (FF only). Thanks to Rob Di Marco. sdanig Fix Fix document.createEvent() and document.createEventObject(): set event prototypes correctly. sdanig Add JavaScript: add 'async' property for 'document.implementation.createDocument()' (FF), and ActiveXObjects: 'Microsoft.XmlDom' and 'MSXML.DOMDocument' (IE). asashour Add JavaScript: add support for read-only attributes uiEvent.detail and uiEvent.view (FF only). Thanks to Rob Di Marco. sdanig Update JavaScript: fixed bug in String.replace (due to custom RegExp proxy) when first arg is a String with special characters and not a RegExp. Fixes 513. mguillem Add JavaScript: add basic support for 'document.implementation.createDocument()' (FF), and ActiveXObjects: 'Microsoft.XmlDom' and 'MSXML.DOMDocument' (IE). asashour Update JavaScript: select.size is used when only needed. asashour Update Upgrade HttpClient to 3.1. asashour Add JavaScript: document.createElement() to accept html as a valid parameter (IE only). asashour Add JavaScript: Make event.shiftKey, event.ctrlKey and event.altKey IE-only attributes; add mouseEvent.shiftKey, mouseEvent.ctrlKey, mouseEvent.altKey and mouseEvent.metaKey FF-only attributes. sdanig Add JavaScript: add support for read-only attributes event.timeStamp, event.bubbles and event.cancelable and event.eventPhase (FF only). Thanks to Rob Di Marco. sdanig Add JavaScript: document.createElement() to accept "&lt;tagName&gt;" as a valid parameter. asashour Update JavaScript: element.setAttribute() sets corresponding event handler onXXX if found (FF only). asashour Add JavaScript: add primitive support for document.elementFromPoint (IE only). asashour Add Add namespace support for attributes: DomNode.getnamespaceURI, getLocalName, getPrefix, setPrefix, hasAttributes, HtmlElement.getAttribute, getAttributeNS, hasAttributes, hasAttribute, hasAttributeNS, setAttribute, setAttributeNS, setAttributeValue(NS), and removeAttributeNS. (#1747878). Fixes 112. dktaylor Add JavaScript: add support for element.uniqueID (IE only). asashour Update Deprecate unused class MapEntryWrappingIterator. (#1747878). Fixes 112. dktaylor Update Deprecate String-to-String attribute map for HtmlElement. Add initial support for namespaces for attributes. (#1747878). Fixes 112. dktaylor Update Deprecate HtmlAttr implementing Map.Entry that conflicts with W3C DOM API. Replace uses of Map.Entry with HtmlAttr. Add HtmlAttr.getName. (#1747878). Fixes 112. dktaylor Add New interface com.gargoylesoftware.htmlunit.OnbeforeunloadHandler with associated WebClient getter and setter, to support 'onbeforeunload' event (#1498419). Fixes 359. asashour Add JavaScript: document.getElementById() must not return elements added to newly created ones (not yet added to document). asashour Add JavaScript: add support for 'onunload' event handler. asashour

Release 1.13 – Aug 17, 2007

Type Changes By Update Add document.createEvent() and document.createEventObject(). Thanks to Rob Di Marco. sdanig Update HtmlElement.asXml(): separate lines for empty element and the one after. asashour Fix JavaScript: element.appendChild() and insertBefore() must recursively maintain document.getElementById() contract. asashour Add WebRequestSettings: add getter and setter of CookiePolicy. asashour Update JavaScript: for element.appendChild(), .insertBefore(), .innerHTML, and .innerText: if the element parentNode is null, create a DocumentFragment to be the parentNode (IE only). asashour Update Deprecated methods that conflict with W3C DOM API: DomTest.splitText, HtmlPage.getDocumentElement, createElement, createElementNS, HtmlAttr.getValue, setValue, DomNode.getLastChild, getParentNode, getPreviousSibling, getNextSibling, getFirstChild, cloneNode, appendChild, HtmlElement.cloneNode. Added replacement Dom or Html methods. Renamed HtmlPage.createDocumentFragment to createDomDocumentFragment. (#1747878). Fixes 112. dktaylor Update Deprecated DomNode.XXXX_NODE. asashour Update Change DomNode.ATTRIBUTE_NODE to be 2 in order to match W3C DOM Node.ATTRIBUTE_NODE. asashour Add JavaScript: add support for document.createDocumentFragment(). asashour Add JavaScript: add basic support for element.getBoundingClientRect() and element.getClientRects(). asashour Add JavaScript: add support for node.isSameNode(). asashour Remove WebClient: Remove deprecated moveFocusFromElement(), moveFocusToElement(), and getElementWithFocus(). asashour Update HtmlTitle.asXml(): empty tag is expanded as required by Internet Explorer. asashour Update JavaScript: if window object could not find a property or function, it returns 'undefined' instead of null (#1771549). Fixes 509. asashour

Release 1.12 – Aug 10, 2007

Type Changes By Add Add method HtmlPage.getHtmlElementsByName(String). sdanig Fix HtmlSelect (in single-selection mode) selects the first option if none is selected. asashour Add JavaScript: add basic support for element.runtimeStyle. mguillem Update JavaScript: add basic support for document.createStyleSheet (when emulating IE only). mguillem Update JavaScript: implemented a workaround for Rhino bug in string primitive resolution (Rhino bug 374918). mguillem Update Deprecate HtmlForm.submit(). asashour Update Deprecate HtmlForm.fakeCheckedRadioButton(). asashour Update The method element.style.getPropertyValue('foo') should expect property names to be delimiter-separated (ie 'font-size') rather than camel case (ie 'fontSize'). sdanig Add Basic document.implementation: hasFeature(). asashour Update Add support for oncontextmenu event type. asashour Update Fix element.innerHTML, element.innerText, element.outerHTML: uppercase tag names when emulating IE; don't quote attributes when they don't contain whitespace and we're emulating IE; always use separate open and close tags (even if the tag is empty); escape XML characters inside text nodes. sdanig Add HtmlElement: add rightClick(). asashour Update JavaScript added minimal support for MouseEvent properties clientX, clientY, pageX, pageY, screenX, screenY coherent with position of event's target. mguillem Update Set Referer header for requests from XMLHttpRequest. mguillem Update First option in a single-selection select input gets selected by default. sdanig Update Add implementation of element.style.filter attribute (when emulating IE only). sdanig Add JavaScript: added support for properties "button" and "which" on mouse events. mguillem Add Add initial support for IE conditional compilation @if, @elif, @else, @end and @set instructions as well as for conditional compilation variables. mguillem Update Fix getElementsByTagName('*') at the document level (it was returning an empty collection). sdanig Add JavaScript: add support for style.getPropertyValue() (#1759750). Fixes 507. asashour Update JavaScript: fixed eval scope bug when used within function. Fixes 485. mguillem Add Add an optional (disabled by default) debugger implementation which can make it easier to debug complex interactions between HtmlUnit and JavaScript. sdanig Add Deprecate BrowserVersion constants for Mozilla 1.0, Netscape 4.7.9 and Netscape 6.2.3; add MSIE 7 and Firefox 2. sdanig Add JavaScript: add basic support for element.currentStyle and window.getComputedStyle. Fixes 504. asashour Update BrowserVersion: add equals() and hashCode(). Fixes 505. Thanks to Matt Ryall. asashour Add HtmlElement: add mouseOver(), mouseMove(), mouseOut(), mouseDown(), and mouseUp(). asashour Update JavaScript: implement navigator.cookieEnabled to match WebClient#isCookiesEnabled(). asashour Add Add empty implementation for table.refresh() (#1742662). Fixes 495. asashour Update HTMLCollection: cache getElements() for better performance (#1751756). Fixes 502. asashour Add Experimental: added AjaxController and NicelyResynchronizingAjaxController. mguillem Update JavaScript: added support for window.captureEvents (FF). Fixes 283. mguillem Update JavaScript: fixed addEventListener cannot be called twice. Fixes 478. mguillem Update JavaScript: added support for event capturing and bubbling phases. mguillem Update JavaScript: added support for Event.stopPropagation() (FF) and Event.cancelBubble() (IE). mguillem Update JavaScript: added support for window.onclick and window.ondblclick. mguillem Update Ignore &lt;base&gt; if inside &lt;body&gt; (#1579707). Fixes 388. asashour Fix FailingHttpStatusCodeException is thrown for failing frame (#1065041). Fixes 162. asashour Update JavaScript: use custom JDK based regular expression evaluation for String.replace to avoid Rhino problems (speed and wrong evaluation). mguillem Update Elements inside &lt;noscript&gt; are ignored if isJavaScriptEnabled() (#1186639). Fixes 257. asashour Update Version: add getProductName(), getProductVersion() and getCopyright() (#1748672). Fixes 499. asashour Add DomNode: add/remove DomChangeListener. asashour Remove Remove deprecated WebClient.getThrowExceptionOnFailingStatusCode and BaseFrame.FrameWindow. asashour Update HtmlImageInput, HtmlResetInput and HtmlSubmitInput can be clicked if exist outside an enclosing form. (#1747454). Fixes 1747454. asashour Add JavaScript: allow FormField.onchange, form.onsubmit and frame.onload to be set to null (#1745024). Fixes 497. asashour Add JavaScript: Add table.cellSpacing and table.cellPadding. asashour Add HtmlElement and HtmlPage: add/remove HtmlAttributeChangeListener (#1124781). Fixes 74. asashour Add JavaScript: Implement insertAdjacentElement(). asashour Update HtmlSubmitInput: setting value to "Submit Query" if not specified, associated with asText(), asXml(), and submitValue changes. asashour Add HTMLElement.scrollIntoView() is added as an empty implementation (#1740086). Fixes 492. Thanks to Bruce Chapman. asashour Fix DomNode.asText() now correctly handles style elements (e.g. &lt;i&gt;, &lt;b&gt;, and &lt;font&gt;) (#1731042). Fixes 490. Thanks to Rodney Gitzel. asashour Fix HtmlPage.clone() doesn't share idMap_ with original (#1708397). Fixes 470. Thanks to Bruce Chapman. asashour Add ClickableElement: Add dblClick() (#1385295). Fixes 91. asashour Add JavaScript: Add document.createElementNS(), element.namespaceURI, element.prefix, and element.localName (#1521790). Fixes 364. asashour Add HtmlPage supports Serialization (#1685311). Fixes 443. asashour Add Add partial support for IE Conditional Compilation (#1680026). Fixes 437. asashour Update Meta Refresh: tolerate spaces before the semicolon (#1549916). Fixes 1549916. Thanks to Andre Soereng. asashour Update Allow setChecked of &lt;input type="radio"&gt; which is outside any &lt;form&gt; (#1587962). Fixes 397. asashour Update Deprecated HtmlForm#getRadioButtonInput(String,String) and HtmlForm#setCheckedRadioButton(String,String). Use #getByXPath instead. asashour Fix Allow HtmlFileInput to handle values starting with "file:/" (#1513928). Fixes 362. asashour Update Align node types numeric values to W3C values. mguillem Fix JavaScript: allow comment nodes to be retrieved mguillem Update HtmlSelectElement: ignores setting 'selectedIndex' to more than or equal to options size. asashour Add HtmlForm: #getTextAreaByName and #getButtonByName (#1713515). Fixes 1713515. Thanks to Philip Graf. asashour Add Add UTF-16BE, and UTF-16LE charset detection (#1729467). Fixes 110. Thanks to Karel Kolman. asashour Update Use WebRequestSettings#getCharset() as the encoding of pages instead of "ISO-8859-1" (#1483301). Fixes 349. asashour Fix Proper handling of &nbsp; in DomNode#asText() (#1549745). Fixes 374. Thanks to Kristian Muntau. asashour Update JavaScript: Simulate browser behavior for comments that have last line of "statement--&gt;", but not "statement//--&gt;". asashour Add JavaScript: Add support for location.toString() (#1725742). Fixes 483. asashour Update asXml() now expands tags for div, iframe and script to make generated xml interpretable as html by browsers. mguillem Add Add support for table.width (#1691024). Fixes 450. asashour Update HtmlInput (HtmlCheckBoxInput and HtmlRadioButtonInput): #setChecked now returns Page (#1724889). Fixes 480. asashour Fix Javascript: Correct handling of comments (#1725162). Fixes 481. asashour Update JavaScript [internal]: use Context.call(ContextAction) for faster JavaScript execution. mguillem Update Meta Refresh empty URL is handled (#1722665). Fixes 479. asashour Add JavaScript: add support for textarea.selectionStart, textarea.selectionEnd, and textarea.textLength (#1714772). Fixes 475. asashour Update DomNode#getAllHtmlChildElements() now returns Iterator. asashour Update Fixed exception occurring handling script tag with one line content starting with &lt;!-- and without closing --!&gt;. Fixes 473. mguillem Update JavaScript: allow function named onload. Fixes 409. mguillem Update JavaScript: made equality tests on functions working. mguillem Update JavaScript: don't allow usage of write(ln) detached from document object when simulating Firefox. mguillem Update JavaScript [internal]: large refactoring for a better Rhino usage. mguillem Add JavaScript: Add support for event.shiftKey, event.ctrlKey, and event.altKey. Fixes 79. asashour Update Tolerate URL starting with http:/ and http: in Firefox. Fixes 474. asashour Update Added IncorrectnessListener to get notified of things that HtmlUnit cope with but that don't respect standards. mguillem Update JavaScript: provide the event object to onreset handlers. mguillem Update Added ScriptException.printScriptStackTrace to retrieve the stack trace of the script execution. mguillem Add WebClient can now enable/disable cookies support. asashour Update JavaScript: allow to set window.onload to something else than a function. Fixes 262. mguillem Update DomNode.DescendantElementsIterator.remove() now throws UnsupportedOperationException (previous behavior was not correct). Fixes 463. Thanks to Bruce Chapman. mguillem Update JavaScript: added support for label property on Option objects. mguillem Update JavaScript: added support for defaultSelected property on Option objects. Thanks to Bruce Chapman. mguillem Update JavaScript: allow selected and defaultSelected attribute in Option constructor. Fixes 462. Thanks to Bruce Chapman. mguillem Update INCOMPATIBLE CHANGE: Remove HtmlOption#getValue() (deprecated nearly two years ago), remove FailingHttpStatusCodeException#FailingHttpStatusCodeException(int, String) (deprecated over a year ago), remove ScriptException#getEnclosedException() (deprecated over a year ago). sdanig Update JavaScript: Add support for script.src, script.type, script.readyState and script.onreadystatechange. sdanig Update When cloning nodes, clone the id attribute as well. Fixes 468. Thanks to Bruce Chapman. sdanig Update Avoid NPEs for responses with null bodies (ie 304 Not Modified responses). Fixes 466. Thanks to Martin Tamme. sdanig Update JavaScript: Cloning a script node should not execute the script. Fixes 469. Thanks to Bruce Chapman. sdanig Update JavaScript: Don't run scripts after the window location changes. Fixes 465. sdanig Update Verify correct behavior of HtmlSelect#asText() with multiple selections, fix JavaDoc. Fixes 418. sdanig Update JavaScript: add support for frameset.rows and frameset.cols properties. Fixes 464. Thanks to Bruce Chapman. sdanig Update JavaScript: ignore invalid script.src attribute used by jQuery ("//:"). Fixes 455. sdanig Update Trim whitespace off of anchor href attributes. Fixes 427. sdanig Update JavaScript: add support for event.type property. sdanig Update Fixed NPE exception triggered by invalid iframe/frame src attribute. Fixes 458. sdanig Update Fixed infinite loop triggered by recursive iframe/frame src attribute. Fixes 459. sdanig Update JavaScript: fixed set innerHTML uses 8bits for all chars and ignores some HTML. Fixes 371. Thanks to Sam Hough and Ahmed Ashour. mguillem Update JavaScript: handle out of bound indexes on options as browsers do (undefined when too high and exception when negative). mguillem Update Added (limited) support for client side map. Fixes 40. Thanks to Ahmed Ashour. mguillem Update Don't execute JavaScript in &lt;noframes&gt; and &lt;iframe&gt;. Fixes 447. Thanks to Ahmed Ashour. mguillem Update Set Referer header on outgoing requests. Fixes 454. Thanks to Ahmed Ashour. mguillem Update JavaScript: setting innerHTML to null shouldn't create any text node for Firefox. Fixes 452. Thanks to Ahmed Ashour. mguillem Update JavaScript: fixed remaining problem of submitted select values when select.selectedIndex = -1 has been used before setting an other value. Fixes 442. mguillem Update JavaScript: setting innerHTML to empty string shouldn't create any text node. Fixes 451. Thanks to Ahmed Ashour. mguillem Update JavaScript: added support for property parentElement on DOM nodes (IE specific). Fixes 449. Thanks to Ahmed Ashour. mguillem Update JavaScript: configure correctly the prototype hierarchy on created host objects. mguillem Update JavaScript: fixed non executed scripts added with document.write. Fixes 411. Thanks to Karel Kolman. mguillem Update JavaScript: "this" should be the window and not the current node in JavaScript href of link and area as well as in JavaScript action of forms. Fixes 448. mguillem Update Fixed wrong parsing order of comment and text nodes. Fixes 444. Thanks to Karel Kolman. mguillem Update JavaScript: added support for following properties on HtmlAnchor: hash, host, hostname, pathname, port, protocol, search and target. Fixes 444. Thanks to Bruce Chapman. mguillem Update Handle correctly anchors (alias reference) in URLs after form submission. mguillem Update JavaScript: XMLHttpRequest now encodes post body in UTF-8. Fixes 440. mguillem

Release 1.11 – Mar 15, 2007

Type Changes By Update Respect non proxy hosts in redirects from a host using proxy. Fixes 431. mguillem Update JavaScript: resolve relative locations from the originating page for Location's href, replace and assign. mguillem Update Renamed frame host class to avoid conflict when a frame has 'Frame' as name. Fixes 379. mguillem Update Form should not send push buttons on submit. Fixes 435. mguillem Update Added facility method DomNode.getByXPath(xpathExpr). mguillem Update JavaScript: Option.setAttribute now works even if option has not yet been added to a select. Fixes 432. mguillem Update Parse as html all responses with content type ending with "xhtml+xml" like XHTML mobile profile documents (application/vnd.wap.xhtml+xml). Fixes 434. mguillem Update Improved HtmlPage.getAnchors's javadoc. Fixes 430. mguillem Update Added support for server side map (HtmlImage.click(int, int)). Fixes 39. mguillem Update Allow redirections to the same URL with a maximal number of 20. Fixes 415. mguillem Update Fixed HtmlHtml.getXmlLangAttribute(). mguillem Update Upgraded dependencies to Jaxen 1.1, commons-lang 2.2, rhino 1.6R5, commons-io 1.3. mguillem Update Changing element id should not impact child nodes. Fixes 428. Thanks to Karel Kolman. mguillem Update JavaScript: provide event object as argument when calling onload listeners attached with attachEvent (Internet explorer). mguillem Update JavaScript: provide the event object to onsubmit handlers. Fixes 425. mguillem Update Set cookies defined in meta tags with http-equiv equals to set-cookie. mguillem Update Fixed NullPointerException occurring while submitting a from which onsubmit handler returns null. Fixes 1628521. Thanks to Andre Soereng. mguillem Update JavaScript: fixed bad initialisation of JavaScript context when window content changes (was introduced since last release in fixed for bug 1040244). Fixes 417. mguillem Update JavaScript: ensure that script execution is synchronized on the owning html page (for instance using XMLHttpRequest asynchronously). Fixes 360. mguillem Update JavaScript: made ThreadManager thread safe. Fixes 393. Thanks to Karel Kolman. mguillem Update JavaScript: perform correct setup of context for asynchronous execution of XMLHttpRequest. Fixes 414. Thanks to Deryk Sinotte. mguillem Update JavaScript: don't wrap JavaScript primitive types when returned from a Java method. Fixes 410. mguillem Update Fixed Non-html reply in window.open() doesn't create window object by restricting initialization of windows and pages. Added line/column numbering of HTML elements for embedded script names that are easier to debug. Fixes 152. dktaylor Update JavaScript: fixed regression introduced in 1.10 on window.eval for local scope. Fixes 408. mguillem Update JavaScript: provide the event object to onfocus and onblur handlers. mguillem Update Moved focus related methods from WebClient to HtmlPage and deprecated them on WebClient. mguillem Update Fixed AREA elements can't handle JavaScript hrefs by copying code from anchor element. Fixes 407. dktaylor Update Fixed frames[i] return null for frames generated by document.write by allowing JavaScript Window object to be properly initialized with JavaScriptEngine. Fixes 259. dktaylor Update Fixed document.write problem when &lt;a...&gt; written in 2 times by checking for complete HTML tags before parsing. Fixes 223. dktaylor Update Fixed document.write() does not keep ending spaces by reducing text of adjacent text nodes as a whole instead of separately. Fixes 355. dktaylor Update JavaScript: handle comments in event handlers. Fixes 1601754. Thanks to Andre Soereng. mguillem Update JavaScript: if window with name 'myOldWin' exists, window.open('', 'myOldWin') should retrieve it rather than opening a new one. Fixes 399. mguillem Update Fixed asText() for style node. Now returns an empty string. mguillem Update JavaScript: fixed select.selectedIndex = -1 should not be irreversible. Fixes 400. mguillem Update JavaScript: setting option's selected status to false when it is already false shouldn't reset the whole select. Fixes 401. mguillem Update JavaScript: fixed java.util.ConcurrentModificationException occurring when some onload event is removed during execution of an onload event. Fixes 404. mguillem Update JavaScript: second argument DOM node's insertBefore is now optional when simulating Internet Explorer. Fixes 333. mguillem Update Added support for comments: &lt;!-- some comment --&gt;. Patch from Karel Kolman. Fixes 101. Thanks to Karel Kolman. mguillem Update JavaScript: added XMLHttpRequest.overrideMimeType. Fixes 82. mguillem Update JavaScript: fixed bug preventing to set non String style properties. Fixes 398. mguillem Update JavaScript: allow to add options to a select with an index as second argument when simulating Internet Explorer. Fixes 380. mguillem Update Ignore invalid URLs specified in &lt;base href="..."/&gt;. Fixes 387. mguillem

Release 1.10 – Nov 03, 2006

Type Changes By Update Fixed asText() for script node. Now returns an empty string. Fixes 395. mguillem Update Removed ":" in project id to avoid problems on Windows with plugins like idea. Fixes 385. mguillem Update Upgraded jaxen to 1.1-beta-11 (even if it's a "beta", this is the version recommended by jaxen developers). mguillem Update Added Maven compliant scopes in project.xml. Fixes 377. mguillem Update JavaScript: added minimal support for navigator.mimeTypes (Firefox). mguillem Update Fixed select's faked selections are ignored, if select is empty. Fixes 381. mguillem Update Fixed asText() for hidden input. Now returns an empty string. Fixes 382. mguillem Update JavaScript: only style's built in properties are of type String (with empty string as default value) mguillem Update Use MultiThreadedHttpConnectionManager (avoids problems with requests started asynchronously from JavaScript). Fixes 97. mguillem Update JavaScript: property "all" now available on all html element (Internet explorer). Fixes 383. mguillem Update Fixed incorrect handling of web connections (missing call to releaseConnection()). mguillem Update JavaScript: item(xx) method now works correctly on node list. mguillem Update JavaScript: improved support for addEventListener on DOM nodes (Mozilla) and added support for attachEvent (Internet explorer). Thanks to Daniel Gredler. mguillem Update JavaScript: build XMLHttpRequest for all ActiveX names starting with "Msxml2.XMLHTTP". mguillem Update JavaScript: fixed bug in table.insertRow with empty tbody. Fixes 378. mguillem Update Follow redirection to the same Url if original method was a POST. Handle redirections like browsers do rather than according to the RFC. Fixes 367. mguillem Update JavaScript: allow script to set a "javascript:..." location. Fixes 317. mguillem Update JavaScript: use of HTMLElement.innerHTML should not cause registration of a WebWindow. Fixes 357. mguillem Update JavaScript: window.eval now evaluates in the right window scope. mguillem Update JavaScript: added basic support for addEventListener on DOM nodes (Mozilla). mguillem Update JavaScript: added support for window.createPopup (Internet Explorer). mguillem Update Added FrameWindow.getFrameElement and support for Javascript's frameElement property on windows. mguillem Update Parser: automatically add an &lt;head&gt; element if none present in html source (as done by Internet Explorer and Firefox). mguillem Update JavaScript: Location.replace wrongly loaded new URL in top window. Fixes 353. mguillem Update XPath: fixed wrong behavior with following axis. Fixes 365. mguillem Update JavaScript: fixed double execution of external JavaScript files occurring when text contained between &lt;script src=...&gt; and &lt;/script&gt;. Fixes 375. mguillem Update JavaScript: allow to specify a maximal script execution time. Fixes 99. Thanks to Andre Soereng. mguillem Update INCOMPATIBLE CHANGE: OK button is now simulated for JavaScript confirm calls when no ConfirmHandler is installed (it was was the Cancel button previously). mguillem Update Removed Jelly support. mguillem Update Updated doc to reflect migration from CVS to SVN. Fixes 373. mguillem Update Do not submit reset buttons in forms. bradclarke Update Transparently decompress server response if gzipped for transfer. Fixes 294. Thanks to Daniel Gredler. mguillem Update JavaScript: fixed default String conversion of objects (like table, table row, table cell, collection). Fixes 370. mguillem Update JavaScript: XMLHttpRequest.responseXml NodeList elements now accessible by index. Fixes 334. mguillem Update JavaScript: take expiration date into account when creating cookies. Fixes 1525234. Thanks to Andre Soereng. mguillem Update JavaScript: cells collection for rows now takes th into account. Fixes 366. mguillem Update JavaScript: table/tbody.deleteRow(-1) will now delete the last row bradclarke

Release 1.9 – Jun 27, 2006

Type Changes By Update Upgraded commons-collections to version 3.2 bradclarke Update Upgraded commons-logging to version 1.1 bradclarke Update Upgraded commons-io to version 1.2 bradclarke Update JavaScript: added support IE style of events (window.event). Fixes 93. mguillem Update Added possibility to configure NTLM credentials for the DefaultCredentialsProvider. Fixes 95. mguillem Update Added facility method WebClient.getPage(String). mguillem Update Upgraded jaxen to 1.1-beta-9 (even if it's a "beta", this is the version recommended by jaxen developers). mguillem Update JavaScript: set form as parent scope for form fields (allows handlers to call directly form methods like submit()). mguillem Update XmlPage: parse xml pages namespace aware. mguillem Update JavaScript: ensure that the page being loaded has not already been replaced in its window by a new one through JavaScript before executing onload handlers. Fixes 356. mguillem Update Use Byte Order Mark to recognize UTF-8 content when no charset header is provided. mguillem Update JavaScript: added addEventListener/attachEvent, removeEventListener/detachEvent to Window, allowing to register load events on a window. mguillem Update Upgraded commons-httpclient to version 3.0.1. mguillem Update JavaScript: added support for properties defaultView (Mozilla) and parentWindow (IE) on Document. mguillem Update JavaScript: added support for property ownerDocument on HtmlElements. mguillem Update DomText.asText() now cleans up &nbsp; and multiple blanks as other DomNodes do. mguillem Update Added facility methods HtmlOption.getEnclosingSelect() and HtmlLabel.getReferencedElement(). mguillem Update Fixed HtmlTable.getCellAt when table contains a rowspan. Fixes 343. Thanks to Julien Henry. mguillem Update Proxy settings now respected to load external JavaScript files. Fixes 345. mguillem Update HtmlCheckBoxInput.setChecked() now fires the JavaScript onchange event. bradclarke Update Implemented window.setTimeout(function, int) and window.setInterval(function, int) bradclarke Update HtmlOption.asText() now respects the label attribute as browsers do. bradclarke Update Encode path part of URLs containing illegal characters. Fixes 338. mguillem Update Added support for firing onkeydown events. Fixes 1436102. Thanks to Brad Murray. mguillem Update HtmlElement.getAttributeEntriesIterator now returns the attributes in the order in which they appear in the html source code. Fixes 335. mguillem Update HttpWebConnection now allows extensions to simply override HttpClient creation. Fixes 92. mguillem Update Use configured proxy when performing a request after a redirection. Fixes 340. mguillem Update Allow &lt;button...&gt;s located outside of a form to be clicked and their onclick handler to be called. mguillem

Release 1.8 – Feb 17, 2006

Type Changes By Update Cookies can now be shared between HTTP and HTTPS. Fixes 304. mguillem Update HttpWebConnection now uses a single instance of HttpClient (as it can now handle multiple connections). mguillem Update Throw ScriptException (unless WebClient.isThrowExceptionOnScriptError() is false) when the source of an external script can't be loaded. mguillem Update Deprecated ScriptException.getEnclosedException. Use getCause instead. mguillem Update Added URL of the failed request in message of FailingHttpStatusCodeException. mguillem Update Fixed a bug that could cause a ConcurrentModificationException when navigating away from a page with JavaScript running in the background. bradclarke Update DefaultPageCreator now builds an XmlPage and not a TextPage for responses with content type "text/vnd.wap.wml". mguillem Update JavaScript: fixed parent scope wrongly set on Style object. mguillem Update FailingHttpStatusCodeException now contains the failing WebResponse. mguillem Update Modified XmlHttpRequest to use new thread management API for async requests. bradclarke Update JavaScript: fixed exception in access to a DOM node when the page contains a custom object with the same name as the one used by htmlunit for the host object (caused error like: "Form" is not a constructor). mguillem Update Fixed bad handling of comma in Location header of redirections (30x). Fixes 208. mguillem Update Implemented setInterval/clearInterval and thread management for setTimeout and setInterval threads. Thanks to Steven Grimm and Daniel Gredler for patches that were helpful in the implementation. bradclarke Update JavaScript: added support for properties target and srcElement on events. Fixes 305. Thanks to Stefan Anzinger. mguillem Update Upgraded commons-httpclient to version 3.0. mguillem Update Fixed NPE thrown when JS error occurs on click when ThrowExceptionOnScriptError is false. Fixes 329. Thanks to Paul King. mguillem Update Added HtmlAnchor.openLinkInNewWindow() bradclarke Update JavaScript: changes on form's action attribute in onSubmit were ignored. Fixes 328. mguillem Update Allow external scripts to be loaded using file protocol. Fixes 327. mguillem Update JavaScript: added support for property cellIndex on td and th eleements. Fixes 1369052. Thanks to Mark van Leeuwen. mguillem Update BaseFrame.FrameWindow has been deprecated and replaced with a top level FrameWindow class. bradclarke Update JavaScript: fixed exception occurring when addBehavior is called twice for the same behavior. mguillem Update JavaScript: Implement add() method for OptionsArray to avoid TypeError. Fixes 1378925. Thanks to Bruce Faulkner. mguillem Update JavaScript: added the full URL of the file containing the script being executed in the exception message when a script error occurs. mguillem Update JavaScript: made Location properties writable. Fixes 289. Thanks to Daniel Gredler. mguillem Update Added possibility to bypass configured proxy for some hosts. Fixes 1224239. Thanks to Daniel Gredler. mguillem Update Fixed support for NTLM proxy. Fixes 1224239. Thanks to Vikram Shitole and Daniel Gredler. mguillem Update JavaScript: setting options' length to a value greater than current. size fills option array with empty options. Fixes 323. mguillem Update Fixed mangled binary files loaded with the file protocol for non ISO-8859-1 default system file encoding. Fixes 1370049. Thanks to Paul King. mguillem Update Upgraded commons-io to 1.1. mguillem Update Form's name now writable (both in DOM and in Javascript). Fixes 322. mguillem Update Javascript: getElementsByTagName now returns an ElementArray (instead of a NativeArray) for html elements allowing expressions like "myForm.getElementsByTagName('input')['one']". Fixes 321. mguillem Update JavaScript: when simulating IE, options collection delegates to select when the requested property/method doesn't exist. Fixes 210. Thanks to Daniel Gredler. mguillem Update Consider inputs with invalid type as text inputs. mguillem Update JavaScript: responses to XMLHttpRequest don't disturb window contents anymore. Fixes 318. mguillem Add All code deprecated prior to 1.6 has been removed bradclarke Add JavaScript: added implementation of IE behavior "#default#download". Fixes 1343212. Thanks to Stefan Anzinger. mguillem Update Fixed HtmlSelect.getSelectedOptions to return an empty list if select has no option. JavaScript: fixed select.value to return an empty string when select has no option. mguillem Update HtmlOption.click() now returns correctly the page loaded by an onchange event. Fixes 315. mguillem Update Fixed requested URL for post form with empty action and original page containing a query string or action containing only a query string. Fixes 316. Thanks to Ian Lovejoy. mguillem Update Upgraded jaxen to 1.1-beta-8 (even if it's a "beta", this is the version recommended by jaxen developers). mguillem Update JavaScript: added support for property contentWindow on (i)frames. mguillem Update Upgraded rhino JavaScript library to 1.6R2. Noteworthy is that the JavaScript stack trace is now added in the normal Java stack trace (bug 274467 reported by Daniel Gredler, see http://www.mozilla.org/rhino/rhino16R2.html for full change log). mguillem Update Fill frame windows with about:blank when the declaring tag is found to allow JavaScript to run on it before the real content is loaded. Fixes 291. mguillem Update Upgraded commons-httpclient to version 3.0rc4 in ant as well. Made HtmlForm.submit(SubmittableElement) public to simulate keyboard submits (more to come later). bradclarke Update JavaScript: XMLHttpRequest.send now accepts null as parameter and fails when simulating Mozilla if called with no parameter like the browser does. mguillem Update Upgraded commons-httpclient to version 3.0rc4. mguillem Update Javascript: allow to set current node's property within onclick event handler. Fixes 300. mguillem Update Javascript: XMLHttpRequest now accepts non xml responses. Fixes 267. mguillem Update Javascript: allow to change selected attribute of options created with document.createElement('option') and not yet added to a select. Fixes 313. mguillem Update Load frames content first after the page is loaded to allow access to the whole page for scripts contained in the frames. Fixes 307. mguillem Update JavaScript: added support for document.frames (specific to IE). mguillem Update JavaScript: when simulating IE, second parameter in Select.add can be omitted. Fixes 308. mguillem Update JavaScript: in a frameset, document.body returns the frameset node. mguillem Update JavaScript: added dummy implementation of the properties scrollHeight, scrollLeft, scrollTop and scrollWidth for html elements. mguillem Update JavaScript: added document.anchors. Fixes 303. mguillem Update JavaScript: XMLHttpRequest now accepts relative urls. Fixes 269. mguillem Update JavaScript: allow creation of XMLHttpRequest as new ActiveXObject('Microsoft.XMLHTTP') when simulating Internet Explorer. mguillem Update JavaScript: default conversion of host objects to string is now "[object Xxxx]" like what Mozilla does mguillem Update DomNode.asXml() now produces correct xml encoding special characters. Fixes 1289462. Thanks to Lothar Märkle. mguillem Update JavaScript: implemented property offsetParent. Fixes 1267106. Thanks to Bruce Faulkner. mguillem

Release 1.7 – Aug 23, 2005

Type Changes By Update JavaScript: img nodes can be accessed by id or name within a form. Fixes 236. mguillem Update Click on a JavaScript link loading a page containing frames now return the main loaded page and not a frame anymore. Fixes 1265410. Thanks to Stefan Anzinger. mguillem Update Trim the text of HtmlOption when it is used as initial value attribute (when no attribute is found as defined in HTML 4.01). mguillem Update JavaScript: fixed problem occurring while reading properties of nodes retrieved with childNodes(). Fixes 1265410. Thanks to Bruce Faulkner. mguillem Update When posting a form as multipart/form-data don't send Content-Transfer-Encoding headers for the parts and send Content-Type headers only for files like browsers do. Fixes 270. mguillem Update When posting a form, use encoding from accept-charset attribute if any else from page to encode the posted parameters. Fixes 219. mguillem Update Fixed infinite loop when DefaultCredentialsProvider provides invalid credential. Ensure that the web connection uses the CredentialProvider configured for the WebClient. mguillem Update Handle port correctly when handling a redirection to an other port on the same host. Fixes 260. mguillem Update JavaScript: fixed properties text, value and selected for Option objects created from JavaScript and not yet added to a select. Fixes 230. mguillem Update Added WebResponse.getRequestMethod(). ImmediateRefreshHandler now accepts a refresh to the same URL if the first request was a POST. Fixes 276. mguillem Update JavaScript: added support for window.closed. mguillem Update HtmlOption's value attribute initial value is the text of the option if no attribute is found as defined in HTML 4.01. Deprecated HtmlOption.getValue(). mguillem Update JavaScript: fixed execution of onchange handlers to really return "The page that occupies this window after this method completes" as defined by the javadoc. Fixes 241. mguillem Update JavaScript: fixed behavior of table.insertRow and table.rows.length for tables containing nested tables. Fixes 295. mguillem Update Improved the way getHtmlElementById handle pages containing multiple elements with the same id. Fixes 297. mguillem Update JavaScript: made input.setAttribute("type", xxx) behave the same than input.type = xxxx. Fixes 296. mguillem Update JavaScript: fixed double execution of script inside &lt;table&gt;. Fixes 274. mguillem Update Set state of radio button before executing onclick handler. Fixes 1241739. Thanks to Bruce Faulkner. mguillem Update Upgraded nekohtml to version 0.9.5 mguillem Update Load responses which content type matches regular expression "application/.*\+xml" as XmlPage (rather than UnexpectedPage). mguillem Update Children of removed nodes were erroneously still available by id using HtmlPage.getElementById. Fixes 287. mguillem Update Upgraded commons-jelly to version 1.0 bradclarke Update Upgraded commons-httpclient to version 3.0rc3 bradclarke Update Added method for setting HttpClient's virtual host. Fixes 1195509. Thanks to dlevine004. bradclarke Update INCOMPATIBLE CHANGE: HtmlElement.getAttributeEntriesIterator now return an iterator on HtmlAttr (and not Map.Entry) allowing XPath expressions that return a list of node attributes. Fixes 281. Thanks to Denis N. Antonioli. mguillem Update Don't perform server request when a link is clicked if href is just an anchor (like "#"). Fixes 279. mguillem Update JavaScript: resolve relative locations from the originating page. Fixes 203. mguillem Update JavaScript: use the Window as the top scope in Rhino JavaScript engine. Fixes 1213455. Thanks to Daniel Gredler. mguillem Update JavaScript: Fixed bug with onchange handler being fired for all input type="file" on creation. bradclarke Update JavaScript: handle position in insertAjacentHTML as case insensitive as IE does. Fixes 273. mguillem Update HtmlOption.click() now selects the option. Fixes 278. mguillem Update Handle content types in a case insensitive way (as of RFC 2045). Fixes 277. mguillem Update Implemented form reset, defaultValue and defaultChecked. Fixes 1209947. Thanks to Daniel Gredler. mguillem Update JavaScript: Added window.print() as unimplemented method. bradclarke Update Javascript: document.getElementsByTagName and document.getElementsByName now return an ElementArray (instead of a NativeArray) allowing expressions like "document.getElementsByTagName('a').item(0)". Fixes 265. mguillem Update In a script tag &lt;script type="..."&gt;, the value of the type attribute is case insensitive. Thanks to Ray Suliteanu. mguillem Update Send headers added with WebClient.addRequestHeader to the server again (bug introduced in release 1.6). mguillem Update Upgraded jaxen to 1.1-beta-6 (even if it's a "beta", this is the version recommended by jaxen developers and it fixes the element order bug). mguillem Update A click on a &lt;label ...&gt; is now propagated to the referenced element. mguillem

Release 1.6 – May 10, 2005

Type Changes By Update Added XMLHttpRequest support. Patch submitted by Daniel Gredler. Fixes 1194006. Thanks to Daniel Gredler. bradclarke Update Deprecated and renamed getAll&lt;Something&gt;s methods to get&lt;Something&gt;s to make them easier to find. Fixes 61. Thanks to Daniel Gredler. bradclarke Update More refactoring and deprecation to use WebRequestSettings. WebRequestSettings now has get/setAdditionalHeaders, patch submitted by Daniel Gredler. INCOMPATIBLE CHANGE: Third party extenders of WebConnection will need to implement getResponse(WebRequestSettings) in place of other getResponse methods, which have been deprecated and given default implementations that call this method. bradclarke Update Javascript: fixed exception occurring while changing type of input created via document.createElement(). Fixes 254. Thanks to Bruce Faulkner. mguillem Update Upgraded commons-httpclient to version 3.0rc2 bradclarke Update Javascript: insertRow now accepts the number of rows as parameter value. Fixes 1188143. Thanks to Bruce Faulkner. mguillem Update Javascript: the onchange event handler of a radio button is now invoked when its state is changed. Fixes 1183019. Thanks to Chris Eldredge. mguillem Update Javascript: implemented property contentDocument for frames and iframes on Mozilla. mguillem Update Javascript: fixed error occurring in NodeImpl insertBefore() with null reference child object. Fixes 251. Thanks to George Murnock. mguillem Update Now load the mapping of html classes to their respective JS classes from the configuration file. cerskine Update Javascript: when simulating IE, window.open("") handles empty string as "about:blank". Fixes 250. mguillem Update Reworked the processing of the JavaScript functions and properties. Names have all changed to start with jsxXXX and now the functions and properties are registered with the prototypes when they are defined. cerskine Update INCOMPATIBLE CHANGE: replaced WebClient.setValidateHtml(boolean) with WebClient.setHTMLParserListener(HTMLParserListener) allowing to programmatically catch parser messages. mguillem Update Javascript: fixed infinite loop caused by onblur. Fixes 246. mguillem Update The URL of a page resulting of a form submission with the GET method now contains the query parameters (which are encoded when needed according to the page's encoding). mguillem Update Javascript: added navigator.language for Mozilla. mguillem Update Javascript: added dummy implementation of Mozilla's window properties innerHeight, innerWidth, outerHeight, outerWidth. mguillem Update Added to the JavaScript configuration page a column showing if a function is not implemented. cerskine Update Reworked the JavaScript configuration. Configuration file is now used and supports the browser constraints on the properties and functions. cerskine Update Javascript: navigator properties now depend from used BrowserVersion. mguillem Add Javascript: added dummy implementation for read only properties offsetHeight, offsetLeft, offsetTop and offsetWidth. mguillem Add Javascript: added support for multiple arguments for document.write and document.writeln. Fixes 1150208. mguillem Add Added WebResponse.getResponseHeaders(). Fixes 1150208. Thanks to Daniel Gredler. mguillem Update Fixed NPE in loadWebResponse for responses with status code 204 (No Content). Fixes 1166652. Thanks to Alfred Nathaniel. mguillem Update Javascript: form's onsubmit property is now a function and can be assigned. Fixes 248. Thanks to Kent Tong. mguillem Add Javascript: added support for new Image() and changing src attribute. Fixes 1153758. Thanks to George Murnock. mguillem

Release 1.5 – March 13, 2005

Type Changes By Update Determine content-type of uploaded files. Fixes 56. mguillem Add Javascript: implemented method removeAttribute for DOM nodes. Fixes 1153758. Thanks to George Murnock. mguillem Update Javascript: Added support for document.scripts bradclarke Update Javascript: fixed getAttribute() to return null if the requested attribute is not defined. Fixes 239. mguillem Add Javascript: implemented property childNodes. Fixes 1153693. Thanks to George Murnock. mguillem Update Fixed bug where document.write-ing a frame was causing an attempt to load an invalid URL starting with http://first bradclarke Update Fixed node reference problem occurring when the text of a textarea is changed. Fixes 237. mguillem Update Javascript: document.links doesn't return tags with empty href anymore. Fixes 235. Thanks to George Murnock. mguillem Update A RefeshHandler can now throw IOExceptions instead of handling them. Updated ImmediateRefeshHandler and ThreadedRefeshHandler to make refresh failures exceptions instead of just log messages. Added WaitingRefeshHandler for waiting real time on the current thread. bradclarke Update Javascript: the type property of input elements can now be changed. mguillem Update Fixed bug occurring when submitting from JavaScript a form with a JavaScript action. Fixes 227. Thanks to George Murnock. mguillem Update HtmlElement's getHtmlElementsByAttribute, getHtmlElementsByTagName, and getHtmlElementsByTagNames were all updated to ignore the case of the passed in tag name as they're always compared with a lowercase version. Fixes 75. bradclarke Update JavaScript: Implemented location.reload(). Fixes 1145916. Thanks to Daniel Gredler. bradclarke Update Fixed bug with meta refresh that only contained a number. Fixes 226. Thanks to Daniel Gredler. bradclarke Update INCOMPATIBLE CHANGE: RefeshHandler interface changed and they must now do the refresh themselves. DefaultRefreshHandler was replaced with ImmediateRefreshHandler (the new default) and ThreadedRefreshHandler. Fixes 1145869. Thanks to Daniel Gredler. bradclarke Update INCOMPATIBLE CHANGE: com.gargoylesoftware.htmlunit.CredentialProvider has been removed. You should now use org.apache.commons.httpclient.auth.CredentialsProvider instead. This patch should allow support for NTLM and Digest authentication as well as proxy authentication. Fixes 1144103. Thanks to Daniel Gredler. bradclarke Update JavaScript: Pick up behaviors defined in style attribute when simulating IE. Fixes 1110768. Thanks to Daniel Gredler. mguillem Update JavaScript: expressions like myForm.myField now look for form fields with "myField" as id or name. Fixes 215. mguillem Update Clicked image button without name sends parameter x and y. Fixes 217. mguillem Update Submit form elements in the same order that they appear in the HTML form. Fixes 191. Thanks to David D. Kilzer. mguillem Update Upgraded commons-httpclient to version 3.0rc1 bradclarke Update JavaScript: fixed document.domain setter for domains like d1.d2.d3.d4.com. Fixes 1115259. Thanks to Michael Ottati. mguillem Update JavaScript: fixed document.myForm.myField should not retrieve the field if it is an input of type image. Fixes 214. mguillem Update JavaScript: added empty implementation of type setter for input fields (already allowing some scripts to run). mguillem Add Added HtmlElement.getEnclosingElement(String tagName). mguillem Update JavaScript: added properties rowIndex and cells and function insertCell for table rows. mguillem Add JavaScript: fixed insertRow when asked to insert at the end of the rows collection (was inserted one position before). mguillem Update Guess content type for file content and file name when loading a file URL. Fixes 212. mguillem Update Parse responses of type "application/xml" as XmlPage. mguillem Update Fixed wrong URLs expansion with "#". Fixes 203. Thanks to Hans Donner. mguillem Update JavaScript: improved window.execScript to execute JavaScript code. Fixes 1106319. Thanks to Daniel Gredler. mguillem Update Use commons-codec's Base64. Marked custom Base64 as deprecated. Fixes 1109224. Thanks to Hans Donner. mguillem Update Fixed NullPointerException thrown in JavaScript by createElement('input'). Fixes 144. Thanks to Daniel Gredler. mguillem Update Javascript: implemented innerText for html elements (read/write). Fixes 1107432. Thanks to Hans Donner. mguillem Update Fixed ClassCastException occurring when unloading a frameset that contained a frame which content wasn't html. mguillem Update Implemented WebRequestSettings parameter object. Created new WebClient.getPage() methods and deprecated old ones. bradclarke Update Stopped httpclient from automatically retrying failed connections 5 times. bradclarke Update A failure when setting a location from JavaScript now throws an exception bradclarke Update Added support for misc table methods in JavaScript. Fixes 1104522. Thanks to Daniel Gredler. bradclarke Update JavaScript: added dummy implementation of window.setInterval and window.clearInterval doing nothing. mguillem Update synchronized JavaScript execution for multi-threaded testing. Fixes 140. Thanks to David D. Kilzer. bradclarke Update parse application/xhtml+xml content type into HtmlPage. Fixes 1088709. bradclarke Update JavaScript: use js object Input for &lt;input type="image" .../&gt; and &lt;input type="button" .../&gt;. Fixes 206. mguillem Update JavaScript: default conversion to string of an anchor returns the fully qualified URL specified by the href. mguillem Update JavaScript: the DOM node of a &lt;frame&gt; or &lt;frame&gt; is now visible to the contained page while loading. mguillem Update JavaScript: when simulating IE, a variable named after the id of a DOM node represents this DOM node. Fixes 177. mguillem Add Made window.name writable. Fixes 1099235. Thanks to David D. Kilzer. mguillem Update JavaScript: document.xxx now retrieves DOM node with name xxx only if it's an img or a form (input should not be retrieved). Fixes 202. mguillem Update JavaScript: Fixed bug in window.frames[i] (was introduced in 1.4). mguillem Update JavaScript: Fixed bug with frames.length not working. cerskine Add JavaScript: Implement writable document.location. Fixes 1100321. Thanks to Daniel Gredler. mguillem Update JavaScript: added window.status and removed erroneous document.status. Fixes 199. mguillem Update Fixed window.frames['frameName'] causes ClassCastException. Fixes 198. Thanks to Chris Eldredge. mguillem Update JavaScript: document.getElementById("") now returns null. mguillem

Release 1.4 – January 9, 2005

Type Changes By Add Fixed platform specific encoding problem in test WebClientTest.testLoadPage_EncodeQueryString(). Fixes 197. Thanks to David D. Kilzer. mbowler Add JavaScript: added window.clearTimeout. Fixes 65. Thanks to Daniel Gredler. mguillem Update JavaScript: dynamically compiled function runs in the scope of their creation. Fixes 134. mguillem Update JavaScript: fixed problem occurring for &lt;script for="window" event="onload()"&gt; with event value ending with "()". mguillem Add JavaScript: added document.domain. mguillem Add JavaScript: added implementation of IE behavior "#default#clientCaps". Fixes 1096789. Thanks to Daniel Gredler. mguillem Update JavaScript: added support to get/set the onload property as a function for window and for frames. mguillem Update INCOMPATIBLE CHANGE: HtmlFrame and HtmlInlineFrame don't implement WebWindow anymore but now contain a WebWindow accessible by getEnclosedWindow(). JavaScript handling of frames works better due to the distinction between frame element and contained window. mguillem Add Added HtmlPage.getFrameByName mguillem Update asText() now returns "checked" or "unchecked" for HtmlRadioButtonInput and HtmlCheckBoxInput. Fixes 176. Thanks to Mike Bresnahan. mguillem Add JavaScript: added dummy implementation of window.execScript doing nothing. mguillem Add JavaScript: added attribute support. Fixes 1096133. Thanks to Daniel Gredler. mguillem Add Added WebClient.setThrowExceptionOnScriptError(boolean) and isThrowExceptionOnScriptError() to allow script errors to stop only execution of current script as browsers do. mguillem Update JavaScript: document.write(ln) writes directly in DOM which allows access to DOM nodes in the same script code. mguillem Add Added WebClient.setTimeout(int) and WebClient.getTimeout() bradclarke Update JavaScript: all elements can now be accessed by name with syntax document.foo (like what was already working for forms). mguillem Update JavaScript: setting the value attribute of a select object now selects the corresponding option. mguillem Update document.images is now a "live" collection. mguillem Update Added DebuggingWebConnection, a web connection that saves the received responses and builds an overview. Sometimes useful at conception time to understand what is "browsed". mguillem Update Extended JavaScript event handler to most common events: ondblclick, onmousedown, onmouseup, onmousemove, onmouseover, onmouseout, onkeypress, onkeydown, onkeyup, onfocus, onblur. Fixes 1090438. Thanks to Chris Eldredge. mguillem Update Added JS support for outerHTML. mguillem Update Upgraded commons-httpclient to version 3.0beta1 mguillem Update Added dependency to commons-codec 1.3 mguillem Update Possibly incompatible change: Removed fix trying to mimic browser kludge for non-RFC2019-compliant cookies as it causes new problems. Fixes 159. mguillem Update Possibly incompatible change: Don't set httpclient's cookie policy to COMPATIBILITY anymore what lets user configure it directly or use the default (RFC2109). mguillem Add Added support for setting cookies from JS (like document.cookie = "foo=something"). mguillem Add Added dependency to commons-lang mguillem Update Trying to set a JS property configured with writable="false" now generates a JS runtime error. mguillem Add Added conversion to string and method toString on event handler functions. mguillem Add Added support for JS document.links. mguillem Update IFrames can now be seen in JS as an html element too. Expressions like window.myIFrame.style.display now work. Fixes 165. mguillem Update document.forms is now a "live" collection and forms can be accessed with document.forms["myFormId"] where "myFormId" is the id of a form. Fixes 187. mguillem Update Collections like document.all or form.elements now use xpath expressions and are "live" (thanks to Daniel Gredler for the idea). mguillem Update Added the possibility to evaluate xpath expressions relatively to a particular node of a the html document. mguillem Update Added node.children. mguillem Update Fixed bug for JS wrapped in HTML comments on one line. Fixes 188. Thanks to Daniel Gredler. mguillem Update Allow to set commons-httpclient cookie policy using system property. mguillem Update Added support for insertAdjacentHTML. mguillem Update Fixed DomNode.replace() fails to set previousSibling on newNode and other problems when changing DomNode. Fixes 131. mguillem Update Allow onclick event handler to be set by JavaScript. Fixes 1080365. Thanks to Chris Eldredge. mguillem Update Added logic to WebClient to allow messages from parsing the HTML to be displayed on the on the console. cerskine Update Fixed bug changing "//" to "/" in query parameters of URLs called from a page. Fixes 181. Thanks to Sergey Gorelkin. mguillem Update When simulating IE, nodes can now be accessed directly by their name (ex: window.form1). mguillem Update Improved ElementArray: fix for empty collection and addition of method namedItem(). Fixes 1085878. Thanks to Daniel Gredler. mguillem Update Fixed bug with setTimeout: a timeout is now only executed if the page that placed it is always "alive". mguillem Update Fixed html element property access in JS: attributes are case sensitive. Fixes 180. mguillem Update Improved JS innerHTML to allow complex html code to be set. mguillem Update Refactored different arrays of html elements in a generic ElementArray. Expressions like "document.all.tags('s').item(y)" can now be evaluated. Fixes 1085224. Thanks to Daniel Gredler. mguillem Update Upgraded rhino js to 1.6R1. Fixes 63. mguillem Update Fixed NullPointerException tossed by HtmlSelect.asText() if no option is selected. Fixes 175. Thanks to Mike Bresnahan. mguillem Update Improved Refresh meta tag support: Take care of enclosing &lt;noscript&gt; tags and correctly interpret quoted urls. mguillem Update Implemented IE specific behavior related methods as well as default behavior "#default#homePage". Fixes 1081544. Thanks to Daniel Gredler. mguillem Update Implemented screen methods. Fixes 1081544. Thanks to Daniel Gredler. mguillem Update Added missing (for IE) methods/properties of window.navigator. Fixes 1082509. Thanks to Daniel Gredler. mguillem Update Added support for window.location.replace(...). mguillem Update Fixed problem with pages where body's onload contains a return statement. Fixes 174. Thanks to Daniel Gredler. mguillem Update Fixed bug in JS accessing form elements through syntax like myForm[i] and don't count inputs with type=image in form.length as browsers do. mguillem Update Automatically add value="on" for radio buttons and checkboxes without value attribute (available for JS access and used when submitting a form as browsers do). Fixes 172. mguillem Update Added support for methods moveBy, scroll, scrollBy, scrollByLines, scrollByPages and scrollTo for JS window object. Fixes 1075526. Thanks to Daniel Gredler. mguillem Update Fixed bug where encoded "&", "=", "+", ",", and "$" in URLs would be decoded before sending to the server. bradclarke Update getTypeAttribute now returns "text" for input without specified type attribute as it is the default value. mguillem Update Added support for item function in JavaScript like "document.all(...).item(...). Fixes 171. mguillem Update Onchange script handlers not executed anymore if the field value is changed by JavaScript. This should for instance avoid infinite loops when field A changes field B and field B changes field A. mguillem Update Upgraded nekohtml to version 0.9.4 bradclarke Add Automatically encode query string part of requested URLs if needed as browsers do (for instance change "http://first?a=b c" to "http://first?a=b%20c"). mguillem Add Response of type "text/xml" are now represented as an XmlPage (rather that a TextPage) which gives access to the Document object if the xml is well formed. mguillem Update Fixed bug for JS location.protocol (was missing a ":", e.g. "http:" and not "http"). Fixes 167. Thanks to Michael Ottati. mguillem Add Added support for getting and setting option.selected in JavaScript. Fixes 166. mguillem Update Fixed bug where a NullPointerException is thrown when leaving a page containing an iframe without src attribute. mguillem Add Added support for window.resizeTo. Fixes 1068672. Thanks to Dierk Koenig. mguillem Update Fixed wrong values of window.opener: now null (instead of undefined) when no opener and null when a link opens in "_top". Fixes 1068667. mguillem Update Upgraded commons-httpclient to version 2.0.2 mbowler Update Added support for function syntax on document.all(). Fixes 1067471. Thanks to Marc Guillemot. mbowler Update Added support for InnerHTML(). Fixes 1065797. Thanks to Chris Erskine. mbowler Update Added support for enabling the errors from NekoHtml by setting a value on the WebClient. Fixes 1065797. Thanks to Chris Erskine. mbowler Update Previously, if you clone an element, and set an attribute in either the old or the new, the new setting appears in the other one as well. This was because cloneNode just left the attributemap alone, so the clones wound up using the same ones as the old. Fixes 1065797. Thanks to Mike Gallaher. mbowler

Release 1.3 – November 12, 2004

Type Changes By Update Upgraded commons-jelly to version 1.0-beta-4 mbowler Update Upgraded commons-jelly-tags-log to version 1.0 mbowler Update Upgraded commons-jelly-tags-xml to version 1.0 mbowler Update Upgraded commons-jelly-tags-junit to version 1.0 mbowler Update Upgraded commons-jexl to version 1.0 mbowler Update Upgraded commons-cli to version 1.0 mbowler Update Upgraded dom4j to version 1.5 mbowler Add Added dependencies to jaxen 1.0 and saxpath 1.0 as they are needed by the latest dom4j. It would appear that saxpath will be rolled into jaxen in future releases but for now it is a separate dependency. mbowler Update Upgraded commons-collections to version 3.1 mbowler Update Upgraded commons-beanutils to version 1.7.0 mbowler Update Upgraded commons-httpclient to version 2.0.1 mbowler Update Upgraded xercesImpl to version 2.6.2 mbowler Update Upgraded nekohtml to version 0.9.1 mbowler Update Upgraded commons-logging to version 1.0.4 mbowler Update Upgraded gsbase to version 2.0.1 mbowler Update Updated server names for cvs access. Fixes 1033055. Thanks to Chris Erskine. mbowler Update Added support for the JavaScript document.images and also for getting and setting the page title. Fixes 1032913. Thanks to Chris Erskine. mbowler Update Patch for JS frames.length. Fixes 1006472. Thanks to Marc Guillemot. mbowler Update Fixed inconsistencies in the handling of isDisabled. Fixes 975675. Thanks to David D. Kilzer, Mike Bresnahan. mbowler Update Initial support for Active X objects. Fixes 940981. Thanks to Ben Curren. mbowler Update INCOMPATIBLE CHANGE: The common browsers will automatically insert a tbody tag inside tables if there isn't one already there. Now HtmlUnit does that as well. Fixes 129. mbowler Update Fixed bug where calling document.body from JavaScript before the body tag had been parsed was causing an exception. mbowler Update Added support for JavaScript table.rows. Fixes 127. Thanks to David D. Kilzer. mbowler Update The common browsers always return uppercase values for the JavaScript nodeName property. Now HtmlUnit does as well. Fixes 128. mbowler Update Added support for the IE attribute document.readyState. Also added the js.log custom logger to aid in debugging JavaScript errors. Thanks to Chris Erskine. mbowler Update Added support for onchange handlers in textareas. Fixes 1045243. Thanks to Marc Guillemot. mbowler Update Stubbed out window.moveTo(x,y). Fixes 1049797. Thanks to Marc Guillemot. mbowler Update Added dependency to commons-io. Fixes 1053811. Thanks to Marc Guillemot. mbowler Update Initial support for file urls. There is a bug in commons-io that will break this when trying to read file URLs on another drive under windows: http://issues.apache.org/bugzilla/show_bug.cgi?id=31884. Fixes 1053811. Thanks to Marc Guillemot. mbowler Update Fixes for buggy link management in DomNode.basicRemove(). Fixes 1051885. Thanks to Mike Williams. mbowler Update Fix for bug where HttpWebConnection.getStateForUrl() fails with localhost URL. Fixes 149. Thanks to David D. Kilzer. mbowler Update Added IE specific behaviour for getElementById(). Fixes 1056744. Thanks to Chris Erskine. mbowler Update Made WebTestCase abstract. Fixes 1056376. Thanks to David D. Kilzer. mbowler Update Changed HtmlElement.getOneHtmlElement() to match the documented behaviour in the case where multiple matches were found. Fixes 155. mbowler Add Added getElementsByTagName(), getClassName() and setClassName() to HTMLElement. Fixes 1058238. Thanks to Chris Erskine. mbowler Update getAttribute() and setAttribute() missing on HTMLElement. Fixes 130. Thanks to David D. Kilzer. mbowler Update Mimic browser kludge for non-RFC2019-compliant cookies. Fixes 159. Thanks to David D. Kilzer. mbowler Update Fixed bug where the getAttribute() and setAttribute() methods were not ignoring the case of the attribute name when getting and setting. Fixes 133. Thanks to David D. Kilzer. mbowler Update Fixed bug where a colon in a relative URL causes MalformedURLException in WebClient.expandUrl(). Fixes 147. mbowler Update If the type attribute isn't specified on a button attribute then the default value according to the spec is "submit". Internet Explorer doesn't obey the spec and returns "button". HtmlUnit now does what the browsers do, depending which BrowserVersion is specified.. Fixes 156. mbowler Update Fixed bug in handling of onclick handlers for an HtmlCheckBoxInput. When an onclick handler is specified on a HTML checkbox that causes a new page to be displayed, the function HtmlCheckBoxInput.click() was not returning the new page. Rather it was returning the original page. Fixes 137. Thanks to Mike Bresnahan. mbowler Update Fixed bug where HtmlImageInput.click() was not including the name.x and name.y attributes in the submitted request. Fixes 141. Thanks to Mike Bresnahan. mbowler Update If form.submit() is called from JavaScript then the forms onsubmit handler should not get executed. Fixes 146. mbowler Update Fixed OutOfMemoryError when submitting a form many times from the same HtmlPage. Fixes 160. Thanks to David D. Kilzer. mbowler Update Clean up memory use in HttpWebConnection.makeWebResponse(). Fixes 161. Thanks to David D. Kilzer. mbowler

Release 1.3-pre2 – September 26, 2004

Type Changes By Update Added support for setting input.name in JavaScript bradclarke Update Added support for JavaScript document.body bradclarke Update Changed HtmlSelect.getSelectedOptions() to not auto-select the first option if the list size > 1. Fixes 136. Thanks to Mike Bresnahan. bradclarke Update Refactored HtmlFileInput submission to include the filename even when there is no file submitted. Fixes 138. Thanks to David D. Kilzer. bradclarke Update Added support for JavaScript Window.close(). Fixes 956964. Thanks to David D. Kilzer. bradclarke Update INCOMPATIBLE CHANGE: WebClient.moveFocusToElement() now takes a FocusableElement as it's parameter instead of an HtmlElement. FocusableElement is derived from HtmlElement. Added framework for focus() and blur() as well as JavaScript support for them on anchors and inputs. Fixes 123. Thanks to David D. Kilzer. bradclarke Update Added support for JavaScript Element.setAttribute() bradclarke Update Added support for JavaScript Node.hasChildNodes() bradclarke Update Fix for Bug 916316 - this.form inside onclick should work now bradclarke Update Implemented JavaScript document.getElementsByName() bradclarke Update Added support for setting select.selectedIndex from JavaScript bradclarke Update Changed HtmlSelect.fakeSelectedAttribute() to use an empty string as no value at all (nothing submitted) bradclarke Update Fixed bug where a select option with no value attribute was not submitted with it's contents bradclarke Update DefaultPageCreator can now be easily extended to add custom content type handling without affecting the default handlers. bradclarke Update INCOMPATIBLE CHANGE: PageCreator.createPage() no longer takes a WebClient as a parameter. If you have an existing PageCreator you can get the WebClient from the WebWindow parameter. This change also occurred in DefaultPageCreator. bradclarke Update Deprecated HtmlPage(WebClient, URL, WebResponse, webWindow) in favor of HtmlPage(URL, WebResponse, webWindow) bradclarke Update Deprecated HTMLParser() as you should never need an instance bradclarke Update Deprecated HTMLParser.parse(WebClient, WebRespose, WebWindow) in favor of static HTMLParser.parse(WebRespose, WebWindow). bradclarke Update Updated HtmlRadioButtonInput.click() to select the clicked radio button bradclarke Update Fixed bug where the JavaScript value of a select list was always empty. It should now correctly be the value of the selected option. bradclarke Update Fixed bug where the JavaScript value of an option element was empty if the value attribute was not defined. The value should now correctly be the contents of the element. bradclarke Update Added HtmlOption.getValue() that returns the value of the option as it should be submitted bradclarke Update Fixed bug where submitting a form with a submit control that had no name would submit an invalid name/value pair instead of ignoring the control bradclarke Update Fixed bug where submitting a form containing a select that had no options caused a NullPointerException. bradclarke Update INCOMPATIBLE CHANGE: Changed HtmlPage so it is no longer derived from HtmlElement. It is now derived from DomNode and a new HtmlHtml element represents the root element of the document. Similarly, Document in JavaScript is no longer derived from HTMLElement, but is derived from NodeImpl instead. dktaylor Add Add HtmlPage.getDocumentElement() and Document.documentElement in JavaScript. dktaylor Update Improved speed of getElementById(). dktaylor Update Change the node type and node name for HtmlPage and Document in JavaScript. dktaylor Update Nested input elements, i.e. those that were not immediate children of the enclosing form, were not handled. Thanks to Christian Sell. mbowler Update Changed the behaviour of single select lists to match the common browsers. When multiple items have the selected attribute then the last one is returned to the server. When no items have been selected, the first one is sent to the server. Thanks to Christian Sell. mbowler Update Deprecated MockWebConnection.setContent() in favour of setDefaultResponse() which is more descriptive. Changed all tests to use the new method. mbowler Update Changed all tests to use MockWebConnection instead of FakeWebConnection. The FakeWebConnection class has been deprecated and will be removed for the next major release of HtmlUnit after 1.3. mbowler Update The same hard coded URLs were being used over and over again throughout the tests. Defined constants for the most frequently used URLs in WebTestCase and changed tests to use these constants. This will reduce the number of temporary objects during tests runs and will decrease the chance of making a typo in the urls. mbowler Update Fixed bug where forms without names were not being returned by document.forms. Fixes 111. mbowler Add Added support for the following attributes on Document.Location: hash, host, hostname, href, pathname, port, protocol and search. Fixes 112. mbowler Add Added support for Anchor.href and Anchor.getAttribute(). Fixes 856885. Thanks to Alexei Goussev. mbowler Update Fixed bug where getting the style attribute should return an empty string instead of NOT_FOUND. Fixes 871620. Thanks to Alexei Goussev. mbowler Update Fixed bug where calling select() on an HtmlInput from JavaScript caused an exception about select being a function and a property (it's only a function) bradclarke Update Added initial support for refresh handlers. They will be invoked from meta tag refreshes and response header refreshes but not currently from JavaScript refreshes mbowler Update Added serialVersionUID to all classes that are Serializable but didn't already have one of these. mbowler Update Fix for performance problem in JavaScript handling. Fixes 1034897. Thanks to Darrell DeBoer. mbowler Update If the server returns an unsupported encoding type then the browsers assume ISO-8859-1. Now HtmlUnit does the same. Fixes 115. mbowler

Release 1.3-pre1 – November 7, 2003

Type Changes By Update INCOMPATIBLE CHANGE: Added method to interface WebWindowListener for window closing events. mbowler Update INCOMPATIBLE CHANGE: There previously were three separate tree models for any given page: 1) the HtmlElement hierarchy 2) The xml DOM model and 3) the JavaScript element model. Now the first two tree models have been merged into one. Thanks to Christian Sell. mbowler Update Continued migration of the build process from ant to maven. mbowler Update Patch for bug in onload handler submitted by Andreas Hangler. Fixes 69. mbowler Update Added support for the about: protocol - patch from Jun Chen. Fixes 797144. mbowler Update Added support for window frames - patch from Jun Chen. Fixes 797144. mbowler Update an update of the version number in build.xml and outputting of a src jar for the current build. Patch submitted by Brad Clarke. Fixes 43. Thanks to Brad Clarke. mbowler Update Added HtmlFileInput support. Patch submitted by Brad Clarke. Fixes 42. Thanks to Brad Clarke. mbowler Update Upgraded junit.jar to 3.8.1. Fixes 44. Thanks to Brad Clarke. mbowler Update Fixed bug where HtmlPage.asText() would blow up if form tags were found between tr and td tags. Clearly this is illegal html but the browsers support it so HtmlUnit needs to as well. Fixes 101. mbowler Update Fixed bug where form elements without names were being submitted anyway. Patch supplied by Brad Clarke. Fixes 104. Thanks to Brad Clarke. mbowler Update Fixed bug where disabled elements were being submitted anyway. Patch supplied by Brad Clarke. Fixes 105. Thanks to Brad Clarke. mbowler Update Navigator.javaEnabled should be method not property. Fixes 100. mbowler Add Added WebClient.getWebWindows(). Fixes 38. mbowler Update Fixed bug where radio button and checkbox logic was case sensitive. Patch supplied by Brad Clarke. Fixes 106. Thanks to Brad Clarke. mbowler Update Added support for Window.focus(). Patch supplied by Brad Clarke. Fixes 49. Thanks to Brad Clarke. mbowler Update Add support for getting HTMLElement.firstChild, lastChild, nextSibling and previousSibling. HTMLElement.firstChild returns the first node below the current node. HTMLElement.lastChild returns the last node below the current node. HTMLElement.nextSibling returns the node after the current node. HTMLElement.previousSibling returns the node before the current node. They each return null if there is no such node or the node type is not supported (not HTML). dktaylor Update Add support for HTMLElement.removeChild and insertBefore. HTMLElement.removeChild removes an Element from the HTML document. It returns the removed Element which is no longer part of the HTML document. HTMLElement.insertBefore adds a new child element before another child element. It returns the newly added child element. dktaylor Update Add support for HTMLElement.cloneNode and replaceChild and Document.createTextNode to close RFE 805051. To support createTextNode, added support for DOM text nodes and character data nodes including the data and length properties and appendData, deleteData, insertData, replaceData, substringData and splitText functions. Updated DOM API properties and methods of HTMLElement to work with text nodes. Also added support for HTMLElement.nodeType, nodeName and nodeValue properties. Fixes 45. dktaylor Add Added method HtmlArea.click() mbowler Add Add support for click() for all element types that have an onClick attribute. This includes image. Removed extra non-standard attributes (onClick, etc.) from BDO element. Fixed support for button tags with type other than submit. Added support for access keys to anchor, area, label, legend, and textarea elements. Fixes 41. dktaylor Update Fixed bug where variables defined in a script could not be referenced as "window.myVariable". This prevented the google ads from working on the HtmlUnit website. mbowler Add Stubbed out Window.onerror mbowler Update Fixed bug where an option without a value could not be selected. Fixes 99. mbowler Update Fixed bug where Select[index] wasn't returning options. Fixes 98. mbowler Update Fixed bug where button names would get submitted twice. Patch submitted by Brad Clarke. Fixes 108. Thanks to Brad Clarke. mbowler Add Added support for auto-refresh both from a Meta tag and from an HTTP response header. Fixes 33. mbowler Update Added support for the format of &lt;script&gt; defined by DOM Level 2. Patch submitted by Jun Chen. Fixes 824842. Thanks to Jun Chen. mbowler Update An HtmlTextArea should not contain anything but preformatted text, so doing things such as converting &lt;br&gt; to line breaks and removing extra white space should not happen. Patch supplied by Brad Clarke. Fixes 109. Thanks to Brad Clarke. mbowler Update Fixed exception when trying to reference one frame by name from another in JavaScript. For example "parent.nav.document", where nav is the name of the frame. Fixes 107. mbowler Update Fixed exception when specifying an empty string for src on an a frame. Fixes 97. mbowler Update Fixed the bug where newly opened windows targeted at named frames were not opening in the correct windows. Changed returned page from click() method to work with new targets. That is, instead of just returning changes to the immediate window, it returns any window that is opened. So, if you call click() on an element that has a target set, you will get the page in the window for that target. This is particularly needed for the _blank target where you couldn't find the new window without this change since it is not named. Fixes 92. dktaylor Update Fixed a bug where windows that were overwritten were not cleaned up so they would be returned from getWebWindowByName. dktaylor Add Added WebWindow.getTopWindow() and getParentWindow(). dktaylor Add Added support for the remaining special target names (_blank, _parent, _top in addition to _self that was already supported). These special target names are supported for a, area and form elements as well as the JavaScript open() function. dktaylor Add Added support for DOM API node navigation methods in HtmlElement so they are available within test cases. This includes getParentNode, getNextSibling, getPreviousSibling, getFirstChild, getLastChild, getNodeType, getNodeName, and getNodeValue. dktaylor Add Added support for base elements to set a default target using the target attribute. This affects a, area and form elements. dktaylor Update Fixed a bug where a base element without an href attribute was causing a MalformedURLException to be thrown. This can be caused when the base element just sets a default target. Similarly check for empty href attribute in a and area elements. (The HTML 4 standard does not allow the action attribute to be optional in form elements.) dktaylor Update Changed the behaviour of HtmlCheckBoxInput.click() to be consistent with IE and Mozilla. Patch submitted by Jun Chen. Fixes 824730. Thanks to Jun Chen. mbowler Update Fix return type from DomCharacterData.getData to be String. dktaylor Update Removed non-standard Element API from Text and CharacterData Node classes by factoring out a DOM Node class in the html and JavaScript implementations. Return type from DOM navigation methods, e.g., getFirstChild(), standardized to be DomNode instead of HtmlElement. dktaylor Add Added support for onload handlers on frames. This isn't supported by the HTML specification but is supported by the popular browsers. mbowler Update Upgraded commons-httpclient.jar to 2.0-rc2 mbowler Add New method WebClient.loadWebResponseInto() which can be used to create pages that were not loaded via HTTP. mbowler Add New method StringWebResponse which can be used to easily create a WebResponse based on a string containing html. mbowler Add Finished the second variation of document.write(), writing to frames other than the one that is loading. Fixes 14. mbowler Add New method TopLevelWindow.close(). Fixes 37. mbowler Add Added "type" attribute to WebWindowEvent to make testing easier mbowler Update Refactored test for window opening using the new type attribute. mbowler Add Added support for window.status. Fixes 23. mbowler Add New method HtmlForm.getInputByValue() to get a single input. Fixes 29. mbowler Add New method HtmlForm.getInputsByValue() to get multiple inputs. Fixes 29. mbowler Update Raise more specific exception from HtmlForm.getRadioButtonInput if there is no radio button to match the name. dktaylor Add Added support for JavaScript editing of select options: add new options, replace options, remove options, shorten options list, set value, and set text. These features also available through HtmlOption. dktaylor Update Fixed support for option label attribute so label value is returned as text if label is set. dktaylor Add Add support for the id attribute of HTMLElement in JavaScript. This partly fixes bug 757225. dktaylor Add Add HtmlElement.getId and setId. dktaylor Update Fix Document.getElementById in JavaScript so it returns null when there is no element with the given ID. dktaylor Update Added support for jelly wrappers mbowler Update Fixed bug with expansion of URLs that contain pound signs. mbowler Update Upgraded NekoHTML to 0.8.1 mbowler Update Added MockWebConnection in the deployable tree and changed FakeWebConnection (in the test tree) to subclass that. mbowler

Release 1.2.3 – July 31, 2003

Type Changes By Add Initial support for Maven mbowler Update Fixed bug where checkboxes weren't getting properly mapped to the JavaScript Checkbox object which resulted in incorrect behaviour. Add some additional tests to prevent this kind of problem happening again. mbowler Update Fixed bug in the setup of JavaScript form variables which resulted in situations where input elements may not show up in the form depending on what had happened during page load. mbowler Add Refactored some logic out of Form into FormElementsArray for easier maintenance mbowler Update Many classes had their own assertNotNull() method. Created an assert class and changed all classes to use Assert.notNull() rather than separate methods. mbowler Update Fixed bug in character encoding. Patch supplied by Noboru Sinohara. Fixes 72. Thanks to Noboru Sinohara. mbowler Update Enhanced HtmlElement.asText() to behave more like a browser. Patch supplied by Mike J. Bresnahan. Thanks to Mike J. Bresnahan. mbowler Update Updated NekoHTML to 0.7.7 mbowler Update Changed the JavaScriptEngine to use weak references for HtmlPage objects. Previously HtmlPage objects were never being garbage collected resulting in excessive memory usage. Fixes 76. Thanks to Noboru Sinohara. mbowler Update Fixed bug where the JavaScript textarea object was not properly getting and setting the 'value'. Fixes 79. mbowler Update Fixed bug where URL expansion wasn't obeying the base element as defined in the html. Fixes 74. Thanks to XuefengHe. mbowler Update Fixed bug where JavaScript form elements were not always being initialized correctly.. Fixes 78. Thanks to jin kim. mbowler Update Fixed typo in two of the samples in the getting started document. Fixes 81. Thanks to Matt Ho. mbowler Update Moved all tests under src/test/java mbowler Update Fixed bug where onload handler would not execute a function if the brackets weren't specified. Patch submitted by David K. Taylor. Fixes 69. Thanks to David K. Taylor. mbowler Update Fixed bug "document.write of script element does not load script". Patch submitted by David K. Taylor. Fixes 71. Thanks to David K. Taylor. mbowler Update Fix for bug 740636 "getElementsByTagName should be case insensitive". Patch submitted by David K. Taylor. Fixes 85. Thanks to David K. Taylor. mbowler Update Fix for bug 740605 "External script is executed before script element added". Patch submitted by David K. Taylor. Fixes 84. Thanks to David K. Taylor. mbowler Update Fix for bug 740665 "Script attributes undefined when script executes". Patch submitted by David K. Taylor. Fixes 86. Thanks to David K. Taylor. mbowler Update Fix for bug 742902 "document.location prints as object reference instead of URL". Patch submitted by David K. Taylor. Fixes 87. Thanks to David K. Taylor. mbowler Update Fix for bug 743241 "document.write from external script is not added to document". Patch submitted by David K. Taylor. Fixes 88. Thanks to David K. Taylor. mbowler Update Partial fix for RFE 741930 "document.createElement(...) and form.appendChild(...)". This fix adds document.createElement for most element types. It does not support input tags. Fixes 27. dktaylor Update Add support for setting window.onload within a script. Window.onload may be set to the name of a function, e.g., window.onload=initFunc; dktaylor Update Partial fix for RFE 741930 "document.createElement(...) and form.appendChild(...)". This fix adds HTMLElement.appendChild. Fixes 27. Thanks to Barnaby Court. dktaylor Update Add support for getting HTMLElement.parentNode. HTMLElement.parentNode returns the node above the current node. It returns null if there is no parent or the parent node type is not supported (not HTML). dktaylor Update Fixed broken behaviour in Input.onclick. Previously, if the onclick handler for a submit input didn't return true then the form would not be submitted. The html spec doesn't seem clear on this but Internet Explorer and Mozilla both allow the form to be submitted no matter what is returned from Input.onclick. mbowler Update Moved all logic from the HtmlInput subclasses up into HtmlInput itself. Patch provided by Barnaby Court. Thanks to Barnaby Court. mbowler Update Added instructions for the "how to compile from cvs" document. Patch provided by Barnaby Court. Thanks to Barnaby Court. mbowler Update Changed HtmlTextArea.setText() to actually modify the DOM Patch provided by Barnaby Court. Fixes 759217. Thanks to Barnaby Court. mbowler Update Fix for bug 738548 - "Form values are not Posted Properly to Server". Fixes 82. mbowler Add Added support for the property Window.name mbowler Add Added read-only support for Document.cookie. mbowler Add Added support for the JavaScript method Window.setTimeout(). Fixes 52. mbowler Update Upgraded the rhino engine to 1.5R4.1 mbowler Update Upgraded the xerces to 2.4 mbowler Add New method HtmlPage.getAllForms(). Fixes 28. mbowler Update Fixed bug where inputs would not submit properly if the type attribute wasn't lowercase. mbowler Update Changed behaviour of HtmlImageInput submission to be consistent with what the browsers do. If the input's name was foo we would previously send the following values to the server: foo, foo.x and foo.y. The browsers only send foo.x and foo.y. Fixes 89. mbowler Add Added docs on configuring JSSE - contributed by Tom Hamilton mbowler

Release 1.2.2 – March 29, 2003

Type Changes By Add Started tracking more information about changes mbowler Update Fixed bug where the checked attribute wasn't always returning the correct value. Fixes 58. Thanks to Jean-Luc Vaillant. mbowler Update Fixed bug where checkboxes were returning the wrong value if they hadn't explicitly been set by the server. Fixes 57. Thanks to Jean-Luc Vaillant. mbowler Add Added support for JavaScript Document.getElementsByTagName(). Fixes 59. mbowler Update Fixed bug where document.all wasn't being initialized correctly until after the entire page had loaded. This meant that JavaScript that executed during page load would blow up when trying to access document.all. Fixes 65. Thanks to Mabel Chow. mbowler Add Added support for location.hostname which fixed all but one of the tests in the sanity check. Thanks to Teo Kian Lee. mbowler Add Added support for document.all[index] mbowler Update Changed the JavaScript tagName attribute to return uppercase values according to spec mbowler Update Updated configuration file with more functions/properties mbowler Add Added support for document.all.tags() Thanks to Mabel Chow. mbowler Update Fixed bug in expansion of relative URLs Thanks to Dominique Broeglin. mbowler Add Added support for setting the src attribute on an iframe via JavaScript. Setting this attribute will cause the iframe to be reloaded with new content. Fixes 67. Thanks to David K. Taylor. mbowler Update Improved the documentation for WebWindowEvent handling as the behaviour wasn't really self explanatory. Fixes 64. mbowler

Release 1.2.1 – March 20, 2003

Type Changes By Add Added method HtmlButtonInput#click(). mbowler Update Fixed a bug in JavaScript loading where external scripts were being loaded after the page was fully parsed rather than as each &lt;script&gt; tag was being handled. This resulted in situations where JavaScript that was executed during the parsing of the page would not be able to access functions declared in the external JavaScript files. mbowler Update Fixed bug in HtmlForm.getRadioButtonsByName() where it would not match elements with an uppercase value for "radio" mbowler Update Fixed a bunch of places that were declared to throw ElementNotFoundException but never actually did. mbowler

Release 1.2 – March 10, 2003

Type Changes By Update Fixed bug where redirection didn't happen correctly if the location header contained multiple entries separated by commas mbowler Update Fixed bug where some success status codes (not 200) were being reported as errors mbowler Update Upgraded NekoHTML to version 0.7.4 mbowler Update Upgraded commons-httpclient to 2.0beta3 mbowler Update Upgraded xerces to 2.2.1 mbowler Update Upgraded the rhino JavaScript engine to version 1.5b3 mbowler Add Added support for the Window.opener property mbowler Update Fixed bug where JavaScript that was enclosed in html comment tags would blow up mbowler Add Initial support for keyboard navigation mbowler Add Initial draft of a howto for keyboard navigation mbowler Add New method: HtmlButton#isDisabled() mbowler Update The click() method on buttons now do nothing if that element is disabled mbowler Update Fixed bug where JavaScript Form.elements was not returning radio buttons mbowler Update Refactored the interface between WebClient and WebConnection to make it easier to add custom implementations of WebConnection. mbowler Add Added support for the JavaScript Style object mbowler Update Fixed bug where comments on the same line of an opening html comment inside a script tag were being treated as JavaScript rather than as comment mbowler Update Fixed bug where clicking on a checkbox would submit the form. mbowler Update Fixed bug where form.submit() was always loading into the default WebWindow, not the current one. mbowler Add Added support for indexed properties in JavaScript forms mbowler Update Changes in the latest versions of commons-httpclient are reusing buffers that they previously weren't. This results in a situation where trying to get the content out of a WebResponse after the initial load would result in no content. Buffering is now done within HtmlUnit to avoid this problem. mbowler Add New method WebResponse#getLoadTimeInMilliSeconds() to measure load times of specific pages. This is intended for performance tuning of web applications mbowler Update Moved submission guidelines into their own document (submittingPatches.html). mbowler Update Fixed bug where the variable "this" in an onclick handler was a Window rather than the appropriate component. mbowler Add Added support for onchange handlers in input tags mbowler Add Added support for JavaScript document.referrer mbowler Add Added support for JavaScript document.URL mbowler Add Added initial support for JavaScript document.write(). Calling document.write() to add content while the page is loading is working. Using it to write to a different frame is not. mbowler

Release 1.1 – November 25, 2002

Type Changes By Update Fixed bug where loading of external JavaScript files would not follow redirects. mbowler Update Fixed bug where accessing radio buttons by name wasn't working correctly mbowler Update Stubbed out Window.close() mbowler Update If there is only one radio button with a given name then JavaScript should be returning the radio button, not an array of buttons. The code was always returning an array. mbowler Update Fixed bug where the JavaScript Option.text was returning the wrong value mbowler

Release 1.1-rc2 – November 16, 2002

Type Changes By Update Fixed bug where calling WebClient.open() would open a new top level window every time. mbowler Update Fixed bug where javascript:Window.open() was not returning the new window object mbowler Add Added support for onchange handler in HtmlSelect Thanks to Mike J. Bresnahan. mbowler Update Cleaned up some javadoc warnings mbowler Add New method WebClient#loadWebResponse(URL, SubmitMethod, List) mbowler Update Removed the need for HiddenWebWindow - JavaScript files are now loaded via WebClient#loadWebResponse(URL, SubmitMethod, List). This should fix an intermittent bug where an UnsupportedOperationException was being called from the HiddenWebWindow if a JavaScript file was returned with a content type of "text/html" mbowler Update Fixed bug where javascript:option.getValue() was returning the text, not the value mbowler Update Improved some error handling when secondary pages are being loaded by frames mbowler

Release 1.1-rc1 – October 29, 2002

Type Changes By Update Upgraded commons-logging.jar to 1.0.2 mbowler Update Upgraded commons-httpclient.jar to Oct 20/2002 gump build mbowler Add Added support for javascript:Input.disabled mbowler Update Upgraded NekoHTML to version 0.6.8 + patches from the author mbowler Update Changed window.open() to understand the magic name _self mbowler Add Added HtmlOption#setSelected(boolean) mbowler Add Completed support for reset buttons mbowler Update Page load was blowing up if the name of an input was the same as the name of a predefined property in Form (ie id or action). Fixed so that if the input has the same name as a predefined property, the input wins. mbowler Add Added support for the JavaScript method Window.confirm() mbowler Add New interface ConfirmHandler mbowler Add New method WebClient#setConfirmHandler(ConfirmHandler) and WebClient#getConfirmHandler() mbowler Add Added support for the JavaScript method Window.prompt() mbowler Add New interface PromptHandler mbowler Add New method WebClient#setPromptHandler(PromptHandler) and WebClient#getPromptHandler() mbowler Add New method HtmlForm#getParameterListForSubmit(). This method is intended as a debugging aid. mbowler Update Page load would blow up if no body tag found. Framesets aren't required to have body tags mbowler Add Added support for JavaScript URLs in Frame and IFrame src tags mbowler Update Improved some error messages during initialization mbowler Add New class ObjectInstantiationException mbowler Add Added protocol package for URL protocols and added protocol/javascript package for code that supports JavaScript URLs mbowler Update Removed deprecated method WebClient.setBrowserVersion(BrowserVersion). No replacement for this method - browser versions must be set in the constructor of the WebClient. mbowler Update Removed deprecated method HtmlPage.executeJavascriptIfPossible(String,String). Use HtmlPage.executeJavaScriptIfPossible(String,String,boolean) instead. mbowler Update Removed deprecated method HtmlPage.getTitle(). Use HtmlPage.getTitleText() instead. mbowler Update Added support for manipulating the disabled attribute of any element via JavaScript. This is incorrect according to the html specification but Internet Explorer supports it so we have to as well. This will print a warning if it is used. mbowler Update Fixed bug where script tags that loaded external files would cause the new script to overwrite the existing page in the window mbowler Update Fixed bug where a redirect called from JavaScript in the page load would not replace the page. mbowler

Release 1.1-pre5 – September 24, 2002

Type Changes By Update Changed html parser from JTidy to CyberNeko. CyberNeko is better at parsing really bad html but this now gives us a dependency on the xerces parser from apache. mbowler Update The directory structure has undergone a significant change and is now checked in under a single module ("htmlunit") in cvs. This should only affect those people who are checking out code directly from cvs. mbowler Update Upgraded checkstyle to version 2.4 mbowler Add Added support for document.location (an alias for window.location) mbowler Update Changed initialization order in HtmlPage so that the enclosing window is initialized before the JavaScript is run mbowler Update BEHAVIOUR CHANGE: WebClients may no longer change browser versions after creation. This is required because some of the JavaScript bits initialize differently depending on which browser is in use. If we allowed the browser version to change then behaviour would be very unpredictable. mbowler Add Added method HtmlPage#getFirstAnchorByText(java.lang.String) mbowler Update First steps towards having property/function information in a configuration file mbowler Add Added method HtmlPage#getHtmlElementsByAccessKey(char) mbowler Add Added support for javascript:document.getElementById() mbowler Add Added support for javascript:document.all[string] mbowler Update Fixed bug where relative URLs were not being expanded in certain situations mbowler Update Fixed bug in relative URL expansion that was blowing up on URLs like //foo.com mbowler Update Upgraded commons-httpclient.jar and commons-logging.jar to the Aug 30 gump build mbowler Add Added HtmlElement#asXml() mbowler Add Added WebClient#expandUrl(URL, String) mbowler Update Fixed bug where relative URLs in redirects were not being expanded. mbowler Update Fixed bug in HtmlSelect#getOptionByValue(String) where searching for the option would start at the top of the page instead of at the select. mbowler Update Applied patches to NekoHTML to fix problems with script tags and isindex tags. Thanks to Andy Clark (author of NekoHTML) for extremely quick responses to bug reports. mbowler Add Added support for HtmlImageInput#click() and HtmlImageInput#click(int, int) mbowler Update Changed redirect logic so that on a 302 or 303 status, if the method changes from post to get, the parameters will be thrown away for the second request. The HTTP spec is unclear on this exact behaviour but the common browsers seem to do it this way. mbowler Add Added the constant BrowserVersion.NETSCAPE_6_2_3 mbowler

Release 1.1-pre4 – August 23, 2002

Type Changes By Update Changed the license used by HtmlUnit to an apache style one mbowler Update Changed default value of WebClient.isRedirectEnabled() to false to be consistent with pre2 mbowler Update Updated look of documentation mbowler Add Started migrating System.out.println calls over to commons-logging. Refer to the logging tutorial (logging.html) for information on customizing this. mbowler Add Support for onClick handlers in HtmlSubmitInput mbowler Update Support for onClick handlers in HtmlButton mbowler Update Fixed bug where NullPointerException would be thrown if window.alert() was called and no AlertHandler had been registered mbowler Add Support for onload handler on the body tag mbowler Add Support for customizing the page types. See WebClient.setPageCreator() mbowler Add Added HtmlElement.hasHtmlElementWithId() mbowler Update Renamed DefaultAlertHandler to CollectingAlertHandler mbowler Update Fixed NullPointerException in HtmlForm during submission of a form containing a radio button mbowler Add Stubbed out the following methods on Input: click(), focus(), blur(), select() mbowler Add Added support for inherited functions to SimpleScriptable. Previously only getters and setters were supported. mbowler Update Changed SimpleScriptable.getLog() to create a new log object each time. This is necessary since in rhino, functions don't know who their object is. A way for functions to learn about their objects will have to be determined. mbowler Add Added a JavaScript style object mbowler Add Added new method HtmlElement.isAttributeDefined() mbowler Update Changed HtmlElement.getAttributeValue() to return constants indicating whether the attribute was defined with an empty value or just not defined. Both of these constants are empty strings so the behaviour of this method hasn't changed. mbowler Add Added a tutorial section on the main page and added a link to the table tutorial mbowler Add Started writing the table tutorial - still needs a lot of work mbowler Add Added support for the JavaScript function Form.submit() mbowler Update Fixed bug where javascript:document.forms[formName] was blowing up mbowler Update Changed logic behind anchor onClick() handler to abort the click if JavaScript returns false mbowler Update Changed logic behind form onSubmit() handler to abort the submit if JavaScript returns false mbowler Update Fixed WebConnection so that it now passes the query string through on post requests mbowler Add Added HtmlFrame class. Loading a page containing frames will cause those frames to be automatically loaded as well. mbowler Update Added support for loading iframes mbowler Add Added HtmlFrameSet class mbowler Add Added a coding conventions document (codingConventions.html) mbowler Add Added a "how to get the latest code from cvs" document (buildingFromCvs.html) mbowler Update Renamed WebWindow.getPage() and setPage() to getEnclosedPage() and setEnclosedPage() to avoid conflict with getPage in HtmlElement mbowler Add Added WebClient.getWebWindowByName() mbowler Add New class WebWindowNotFoundException mbowler Update When checking to see if a script is JavaScript we previously assumed that the script was not and then looked for proof that it was. This gives us behaviour that is different from browsers in some situations. The logic has been changed so that now it assumed that any script IS JavaScript unless there is proof otherwise. mbowler Add New method HtmlPage.getFrames() mbowler Add Initial support for resetting forms. None of the elements actually revert to their previous values yet but onReset handlers will be run if specified. mbowler Add New method HtmlTable.getCaptionText() mbowler Update Deprecated HtmlPage.getTitle() to be replaced with HtmlPage.getTitleText(). This will be removed before the final release of 1.1 mbowler Add Added support for the JavaScript properties: Select.options, Select.selectedIndex, Select.length and Option.value mbowler

Release 1.1-pre3 – July 23, 2002

Type Changes By Add Added HtmlElement.getParent() mbowler Add Added HtmlElement.getNextSibling() mbowler Add Added HtmlElement.getPreviousSibling() mbowler Update Changed WebConnection so that cookies will be shared among servers in the same domain mbowler Add Added support for redirection - WebClient.setRedirectEnabled(boolean) mbowler Add Added method on WebResponse to access the response headers mbowler Add Many new JavaScript objects - this will be transparent to users of HtmlUnit mbowler Update Lots of refactoring in the JavaScript portion mbowler Update Fixed a NullPointerException if the server doesn't return a content-type header mbowler Update Fixed HtmlElement.childrenAsText() so that it ignores comments mbowler Add Added support for Input.checked mbowler Add Added some constants to BrowserVersion for various browsers mbowler Update Upgraded gsbase.jar to version 1.8 mbowler Update Replaced js.jar with a version that has been compiled with debug support mbowler Update Upgraded commons-httpclient.jar to the July 27 gump build. mbowler Add Added commons-logging.jar (July 27 gump build) which is needed by httpclient mbowler Add Support for proxy server and ssl together mbowler

Release 1.1-pre2 – July 10, 2002

Type Changes By Update Fixed NullPointerException due to a bug in JTidy - thanks to Mike J Bresnahan for tracking this one right into the JTidy source. mbowler Add HtmlAnchor now supports JavaScript URLs and onClick handlers mbowler Add Ability to set the emulated browser via WebClient.setBrowserVersion(BrowserVersion) mbowler Add Stubbed out a bunch of JavaScript methods that are used by the popular websites. Each stubbed out method will print a diagnostic message when it is called to alert the user to the fact that it was called. This is just a temporary measure to ensure that HtmlUnit doesn't blow up when hitting common sites. These methods *will* be implemented properly at some point. mbowler Add Added WebWindow mbowler Add Added TopLevelWindow mbowler Add Added WebWindowListener mbowler Add Added WebWindowEvent mbowler Add Added WebWindowAdapter mbowler Add Added initial support for javascript:open(). Does not currently support features or browser history mbowler Update Fixed some cases in HtmlPage.getFullyQualifiedUrl() that weren't expanding properly mbowler Add Added HtmlTitle mbowler Add Added HtmlPage.getTitle() mbowler Add Added JavaScript window.location="some url" mbowler Add Stubbed out the JavaScript history object mbowler Add Added support JavaScript URLs in HtmlForm submission mbowler Add Added support for HtmlForm.onSubmit() mbowler Update Rewrote logic for handling relative URLs mbowler Update Fixed bug in HtmlRadioButtonInput that was causing isChecked() to return false in some cases even if the checked attribute was there. mbowler

Release 1.1-pre1 – July 2, 2002

Type Changes By Add Added initial JavaScript support mbowler Update Lots of bug fixes mbowler

Release 1.0 – May 22, 2002

Type Changes By Add Initial release mbowler