[HtmlUnit] SVN: [13741] trunk/htmlunit

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[HtmlUnit] SVN: [13741] trunk/htmlunit

rbri
Revision: 13741
          http://sourceforge.net/p/htmlunit/code/13741
Author:   rbri
Date:     2017-03-15 19:43:00 +0000 (Wed, 15 Mar 2017)
Log Message:
-----------
revert back to last release

Modified Paths:
--------------
    trunk/htmlunit/pom.xml
    trunk/htmlunit/src/changes/changes.xml
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersion.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/DefaultPageCreator.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/MockWebConnection.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/TextUtil.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImage.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/InputElementFactory.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/package-info.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/background/DefaultJavaScriptExecutor.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Screen.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/WebSocket.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/MediaSource.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/performance/PerformanceNavigationTiming.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/package-info.java
    trunk/htmlunit/src/site/xdoc/packagingARelease.xml
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserParameterizedRunner.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserRunner.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserVersionTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/CookieManagerTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/DefaultPageCreator2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/ErrorOutputChecker.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/ExternalTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/NotYetImplementedTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/SimpleWebTestCase.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClient3Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClientTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebDriverTestCase.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebResponseTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebServerTestCase.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebTestCase.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/general/ElementCreationTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/general/ElementDefaultStyleDisplayTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/general/ElementPropertiesTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/general/HostClassNameTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/general/HostConstantsTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/FocusableElement2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlAnchorTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlBackgroundSoundTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlCheckBoxInput2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlFieldSetTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlFontTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlFrame2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlHeadTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlImage2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlImageTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlInlineFrame2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlKeyGenTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlNumberInputTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPage3Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPasswordInputTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlRadioButtonInput2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlTextInputTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/MalformedHtmlTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/IEWeirdSyntaxTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeArrayTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/History2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/Location2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/WebSocketTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/Window3Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleSheetTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/StyleAttributesIterable2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/css/StyleAttributesIterableTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DocumentTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/MutationObserverTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/TreeWalkerTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/event/BeforeUnloadEventTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/event/Event2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/event/EventHandlerTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/event/EventTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/event/UIEventTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLAllCollectionTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBodyElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLButtonElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDListElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDirectoryElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocumentTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLDocumentWrite2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFrameElement2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLHtmlElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLIFrameElement3Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLImageElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLKeygenElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLOptionElement2Test.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLSelectElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTextAreaElementTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/performance/PerformanceTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/performance/PerformanceTimingTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLDocumentTest.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/runners/BrowserStatement.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/runners/BrowserVersionClassRunner.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/svg/SvgCursorTest.java
    trunk/htmlunit/src/test/resources/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.Chrome.txt
    trunk/htmlunit/src/test/resources/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.notAttached.Chrome.txt

Added Paths:
-----------
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/event/ServiceWorkerMessageEvent.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLKeygenElement.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBCursor.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBDatabase.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBFactory.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBIndex.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBKeyRange.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBObjectStore.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBRequest.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBTransaction.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/webkitAudioContext.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/webkitOfflineAudioContext.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/svg/SVGCursorElement.java
    trunk/htmlunit/src/test/resources/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties.FF38.txt
    trunk/htmlunit/src/test/resources/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration2Test.properties2.FF38.txt
    trunk/htmlunit/src/test/resources/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.FF38.txt
    trunk/htmlunit/src/test/resources/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedCSSStyleDeclarationTest.properties.notAttached.FF38.txt
    trunk/htmlunit/src/test/resources/com/gargoylesoftware/htmlunit/javascript/host/css/ComputedHeightTest.properties.FF38.txt

Removed Paths:
-------------
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/AudioScheduledSourceNode.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/annotations/FailWithWebDriver.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/media/
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/svg/SvgJavaScriptTest.java
    trunk/htmlunit/src/test/resources/testfiles/4x7.jpg
    trunk/htmlunit/src/test/resources/testfiles/empty.css

Modified: trunk/htmlunit/pom.xml
===================================================================
--- trunk/htmlunit/pom.xml 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/pom.xml 2017-03-15 19:43:00 UTC (rev 13741)
@@ -18,7 +18,7 @@
         <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
         <additionalparam>-Xdoclint:none</additionalparam>
         <!-- As a property, as it is included in Checkstyle build -->
-        <checkstyle.version>7.6</checkstyle.version>
+        <checkstyle.version>7.5.1</checkstyle.version>
     </properties>
 
     <build>
@@ -122,9 +122,6 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-javadoc-plugin</artifactId>
                 <version>2.10.4</version>
-                <configuration>
-                    <additionalparam>--allow-script-in-comments</additionalparam>
-                </configuration>
                 <executions>
                     <execution>
                         <goals>
@@ -825,7 +822,7 @@
         <dependency>
             <groupId>org.eclipse.jetty.websocket</groupId>
             <artifactId>websocket-client</artifactId>
-            <version>9.4.2.v20170220</version>
+            <version>9.4.1.v20170120</version>
         </dependency>
         <!-- Test dependencies. -->
         <dependency>
@@ -843,7 +840,7 @@
         <dependency>
             <groupId>org.apache.logging.log4j</groupId>
             <artifactId>log4j-api</artifactId>
-            <version>2.8.1</version>
+            <version>2.8</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -856,13 +853,13 @@
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
-            <version>1.7.24</version>
+            <version>1.7.23</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-log4j12</artifactId>
-            <version>1.7.24</version>
+            <version>1.7.23</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -875,20 +872,26 @@
         <dependency>
             <groupId>org.eclipse.jetty</groupId>
             <artifactId>jetty-webapp</artifactId>
-            <version>9.4.2.v20170220</version>
+            <version>9.4.1.v20170120</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.eclipse.jetty.websocket</groupId>
             <artifactId>websocket-server</artifactId>
-            <version>9.4.2.v20170220</version>
+            <version>9.4.1.v20170120</version>
             <scope>test</scope>
         </dependency>
         <!-- WebDriver -->
         <dependency>
             <groupId>org.seleniumhq.selenium</groupId>
+            <artifactId>selenium-api</artifactId>
+            <version>3.1.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.seleniumhq.selenium</groupId>
             <artifactId>htmlunit-driver</artifactId>
-            <version>2.26-SNAPSHOT</version>
+            <version>2.25</version>
             <scope>test</scope>
             <exclusions>
                 <exclusion>
@@ -900,28 +903,34 @@
         <dependency>
             <groupId>org.seleniumhq.selenium</groupId>
             <artifactId>selenium-ie-driver</artifactId>
-            <version>3.3.1</version>
+            <version>3.1.0</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.seleniumhq.selenium</groupId>
             <artifactId>selenium-firefox-driver</artifactId>
-            <version>3.3.1</version>
+            <version>3.1.0</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.seleniumhq.selenium</groupId>
             <artifactId>selenium-chrome-driver</artifactId>
-            <version>3.3.1</version>
+            <version>3.1.0</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.seleniumhq.selenium</groupId>
             <artifactId>selenium-edge-driver</artifactId>
-            <version>3.3.1</version>
+            <version>3.1.0</version>
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.seleniumhq.selenium</groupId>
+            <artifactId>selenium-support</artifactId>
+            <version>3.1.0</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.tmatesoft.svnkit</groupId>
             <artifactId>svnkit</artifactId>
             <version>1.8.12</version>
@@ -943,19 +952,4 @@
             <url>http://oss.sonatype.org/service/local/staging/deploy/maven2</url>
         </repository>
     </distributionManagement>
-    <repositories>
-        <repository>
-            <snapshots>
-                <enabled>true</enabled>
-                <updatePolicy>always</updatePolicy>
-            </snapshots>
-            <releases>
-                <enabled>false</enabled>
-            </releases>
-            <id>OSS Sonatype snapshots</id>
-            <name>OSS Sonatype snapshots</name>
-            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
-            <layout>default</layout>
-        </repository>
-    </repositories>
 </project>

Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/changes/changes.xml 2017-03-15 19:43:00 UTC (rev 13741)
@@ -8,24 +8,6 @@
 
     <body>
         <release version="2.26" date="???" description="Bugfixes">
-            <action type="fix" dev="rbri">
-                JavaScript: WebSocket onError processing was missing.
-            </action>
-            <action type="fix" dev="asashour">
-                Fix detection of HtmlInput types (IE).
-            </action>
-            <action type="fix" dev="rbri" issue="1858" due-to="Joerg Werner">
-                Correct file type detection for files with css suffix.
-            </action>
-            <action type="add" dev="rbri">
-                JavaScript: simple implementation for MediaSource.isTypeSupported added (returns always false).
-            </action>
-            <action type="add" dev="asashour">
-                WebClientOptions: add option for screen width/height.
-            </action>
-            <action type="update" dev="rbri">
-                Reduce the number of temp files created when asking images for width/height.
-            </action>
         </release>
         <release version="2.25" date="February 23, 2017" description="Java 8, InteractivePage and SvgPage removed, PromptHandler, WebRequest.getCharset, ScriptPreProcessor, Bugfixes">
             <action type="update" dev="asashour">

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersion.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersion.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersion.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -52,36 +52,36 @@
  *      };
  * </pre>
  * <script>
-       var pre = document.getElementById('htmlUnitCode');
-       pre.innerHTML = pre.innerHTML.replace('APPNAME', navigator.appName);
-       pre.innerHTML = pre.innerHTML.replace('APPVERSION', navigator.appVersion);
-       pre.innerHTML = pre.innerHTML.replace('USERAGENT', navigator.userAgent);
-       var isMicrosoft = navigator.appVersion.indexOf('Trident/') != -1;
-       var isEdge = navigator.appVersion.indexOf('Edge') != -1;
-       var isChrome = navigator.appVersion.indexOf('Chrome') != -1;
-       var numeric = 52;
-       if (isMicrosoft) {
-           numeric = 11;
-       }
-       else if (isEdge) {
-           numeric = 13;
-       }
-       else if (isChrome) {
-           numeric = 56;
-       }
-       pre.innerHTML = pre.innerHTML.replace('NUMERIC', numeric);
-       var browser = "FIREFOX_52";
-       if (isMicrosoft) {
-           browser = "INTERNET_EXPLORER";
-       }
-       else if (isEdge) {
-           browser = "EDGE";
-       }
-       else if (isChrome) {
-           browser = "CHROME";
-       }
-       pre.innerHTML = pre.innerHTML.replace('BROWSER', browser);
-   </script>
+ *     var pre = document.getElementById('htmlUnitCode');
+ *     pre.innerHTML = pre.innerHTML.replace('APPNAME', navigator.appName);
+ *     pre.innerHTML = pre.innerHTML.replace('APPVERSION', navigator.appVersion);
+ *     pre.innerHTML = pre.innerHTML.replace('USERAGENT', navigator.userAgent);
+ *     var isMicrosoft = navigator.appVersion.indexOf('Trident/') > 0;
+ *     var isEdge = navigator.appVersion.indexOf('Edge') != -1;
+ *     var isChrome = navigator.appVersion.indexOf('Chrome') != -1;
+ *     var numeric = 45;
+ *     if (isMicrosoft) {
+ *         numeric = 11;
+ *     }
+ *     else if (isEdge) {
+ *         numeric = 13;
+ *     }
+ *     else if (isChrome) {
+ *         numeric = 56;
+ *     }
+ *     pre.innerHTML = pre.innerHTML.replace('NUMERIC', numeric);
+ *     var browser = "FIREFOX_45";
+ *     if (isMicrosoft) {
+ *         browser = "INTERNET_EXPLORER";
+ *     }
+ *     else if (isEdge) {
+ *         browser = "EDGE";
+ *     }
+ *     else if (isChrome) {
+ *         browser = "CHROME";
+ *     }
+ *     pre.innerHTML = pre.innerHTML.replace('BROWSER', browser);
+ * </script>
  * However, note that the constants are not enough to fully customize the browser,
  *   you also need to look into the {@link BrowserVersionFeatures} and the classes inside "javascript" package.
  *
@@ -124,15 +124,6 @@
         "Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0",
         45, "FF45", null);
 
-    /**
-     * Firefox 52 ESR.
-     * @since 2.26
-     */
-    public static final BrowserVersion FIREFOX_52 = new BrowserVersion(
-        NETSCAPE, "5.0 (Windows)",
-        "Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0",
-        52, "FF52", null);
-
     /** Internet Explorer 11. */
     public static final BrowserVersion INTERNET_EXPLORER = new BrowserVersion(
         NETSCAPE, "5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko",
@@ -141,10 +132,10 @@
     /** Latest Chrome. */
     public static final BrowserVersion CHROME = new BrowserVersion(
         NETSCAPE, "5.0 (Windows NT 6.1) AppleWebKit/537.36"
-        + " (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36",
+        + " (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36",
         "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36"
-        + " (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36",
-        57, "Chrome", null);
+        + " (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36",
+        56, "Chrome", null);
 
     /** Microsoft Edge. Work In Progress!!! */
     public static final BrowserVersion EDGE = new BrowserVersion(
@@ -175,17 +166,6 @@
         FIREFOX_45.setImgAcceptHeader("image/png,image/*;q=0.8,*/*;q=0.5");
         FIREFOX_45.setCssAcceptHeader("text/css,*/*;q=0.1");
 
-        // FF52
-        FIREFOX_52.initDefaultFeatures();
-        FIREFOX_52.setVendor("");
-        FIREFOX_52.buildId_ = "20170303022339";
-        FIREFOX_52.setHeaderNamesOrdered(new String[] {
-            "Host", "User-Agent", "Accept", "Accept-Language", "Accept-Encoding", "Referer", "Cookie", "Connection"});
-        FIREFOX_52.setHtmlAcceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
-        FIREFOX_52.setXmlHttpRequestAcceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
-        FIREFOX_52.setImgAcceptHeader("image/png,image/*;q=0.8,*/*;q=0.5");
-        FIREFOX_52.setCssAcceptHeader("text/css,*/*;q=0.1");
-
         // IE
         INTERNET_EXPLORER.initDefaultFeatures();
         INTERNET_EXPLORER.setVendor("");

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/DefaultPageCreator.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/DefaultPageCreator.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/DefaultPageCreator.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -106,32 +106,27 @@
             return PageType.UNKNOWN;
         }
 
-        switch (contentType) {
-            case "text/html":
-            case "image/svg+xml":
-                return PageType.HTML;
+        if ("text/html".equals(contentType)) {
+            return PageType.HTML;
+        }
 
-            case "text/javascript":
-            case "application/x-javascript":
-            case "application/javascript":
-                return PageType.JAVASCRIPT;
+        if ("text/javascript".equals(contentType) || "application/x-javascript".equals(contentType)
+                || "application/javascript".equals(contentType)) {
+            return PageType.JAVASCRIPT;
+        }
 
-            case "text/xml":
-            case "application/xml":
-            case "text/vnd.wap.wml":
-                return PageType.XML;
+        if ("text/xml".equals(contentType)
+            || "application/xml".equals(contentType)
+            || "text/vnd.wap.wml".equals(contentType)
+            || contentType.endsWith("+xml")) {
+            return PageType.XML;
+        }
 
-            default:
-                if (contentType.endsWith("+xml")) {
-                    return PageType.XML;
-                }
+        if (contentType.startsWith("text/")) {
+            return PageType.TEXT;
+        }
 
-                if (contentType.startsWith("text/")) {
-                    return PageType.TEXT;
-                }
-
-                return PageType.UNKNOWN;
-        }
+        return PageType.UNKNOWN;
     }
 
     /**

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/MockWebConnection.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/MockWebConnection.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/MockWebConnection.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -327,7 +327,7 @@
 
     /**
      * Convenient method that is the same as calling
-     * {@link #setResponse(URL, String, int, String, String, Charset, List)} with a status
+     * {@link #setResponse(URL,String,int,String,String,String,List)} with a status
      * of "200 OK" and no additional headers.
      *
      * @param url the URL that will return the given response

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/TextUtil.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/TextUtil.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/TextUtil.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -19,6 +19,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 
@@ -53,6 +54,7 @@
      * @param content the string
      * @param charset the encoding to use when converting the string to a stream
      * @return the resulting input stream
+     * @throws UnsupportedEncodingException if the encoding is not supported
      */
     public static InputStream toInputStream(
             final String content,

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -132,7 +132,6 @@
  * @author Nicolas Belisle
  * @author Ronald Brill
  * @author Frank Danek
- * @author Joerg Werner
  */
 public class WebClient implements Serializable, AutoCloseable {
 
@@ -1206,20 +1205,11 @@
      * @return "application/octet-stream" if nothing could be guessed
      */
     public String guessContentType(final File file) {
+        String contentType = URLConnection.guessContentTypeFromName(file.getName());
         if (file.getName().endsWith(".xhtml")) {
-            // Java's mime type map returns application/xml in JDK8.
-            return "application/xhtml+xml";
+            // Java's mime type map doesn't know about XHTML files (at least in Sun JDK5).
+            contentType = "application/xhtml+xml";
         }
-
-        // Java's mime type map does not know these in JDK8.
-        if (file.getName().endsWith(".js")) {
-            return "text/javascript";
-        }
-        if (file.getName().toLowerCase().endsWith(".css")) {
-            return "text/css";
-        }
-
-        String contentType = URLConnection.guessContentTypeFromName(file.getName());
         if (contentType == null) {
             try (InputStream inputStream = new BufferedInputStream(new FileInputStream(file))) {
                 contentType = URLConnection.guessContentTypeFromStream(inputStream);
@@ -1229,7 +1219,12 @@
             }
         }
         if (contentType == null) {
-            contentType = "application/octet-stream";
+            if (file.getName().endsWith(".js")) {
+                contentType = "text/javascript";
+            }
+            else {
+                contentType = "application/octet-stream";
+            }
         }
         return contentType;
     }

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -56,8 +56,6 @@
     private int historyPageCacheLimit_ = Integer.MAX_VALUE;
     private InetAddress localAddress_;
     private boolean downloadImages_;
-    private int screenWidth_ = 1024;
-    private int screenHeight_ = 768;
 
     /**
      * If set to {@code true}, the client will accept connections to any host, regardless of
@@ -613,40 +611,4 @@
     public boolean isDownloadImages() {
         return downloadImages_;
     }
-
-    /**
-     * Sets the screen width.
-     *
-     * @param screenWidth the screen width
-     */
-    public void setScreenWidth(final int screenWidth) {
-        this.screenWidth_ = screenWidth;
-    }
-
-    /**
-     * Returns the screen width.
-     *
-     * @return the screen width
-     */
-    public int getScreenWidth() {
-        return screenWidth_;
-    }
-
-    /**
-     * Sets the screen height.
-     *
-     * @param screenHeight the screen height
-     */
-    public void setScreenHeight(final int screenHeight) {
-        this.screenHeight_ = screenHeight;
-    }
-
-    /**
-     * Returns the screen height.
-     *
-     * @return the screen height
-     */
-    public int getScreenHeight() {
-        return screenHeight_;
-    }
 }

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImage.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImage.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlImage.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -74,8 +74,6 @@
     private int lastClickY_;
     private WebResponse imageWebResponse_;
     private transient ImageData imageData_;
-    private int width_ = -1;
-    private int height_ = -1;
     private boolean downloaded_;
     private boolean onloadInvoked_;
     private boolean createdByJavascript_;
@@ -135,12 +133,6 @@
                 // onload handlers may need to be invoked again, and a new image may need to be downloaded
                 onloadInvoked_ = false;
                 downloaded_ = false;
-                width_ = -1;
-                height_ = -1;
-                if (imageData_ != null) {
-                    imageData_.close();
-                    imageData_ = null;
-                }
 
                 final String readyState = htmlPage.getReadyState();
                 if (READY_STATE_LOADING.equals(readyState)) {
@@ -372,10 +364,7 @@
      * @throws IOException if an error occurs while downloading or reading the image
      */
     public int getHeight() throws IOException {
-        if (height_ < 0) {
-            determineWidthAndHeight();
-        }
-        return height_;
+        return getImageReader().getHeight(0);
     }
 
     /**
@@ -387,10 +376,7 @@
      * @throws IOException if an error occurs while downloading or reading the image
      */
     public int getWidth() throws IOException {
-        if (width_ < 0) {
-            determineWidthAndHeight();
-        }
-        return width_;
+        return getImageReader().getWidth(0);
     }
 
     /**
@@ -406,19 +392,6 @@
         return imageData_.getImageReader();
     }
 
-    private void determineWidthAndHeight() throws IOException {
-        final ImageReader imgReader = getImageReader();
-        width_ = imgReader.getWidth(0);
-        height_ = imgReader.getHeight(0);
-
-        // ImageIO creates temp files; to save file handles
-        // we will cache the values and close this directly to free the resources
-        if (imageData_ != null) {
-            imageData_.close();
-            imageData_ = null;
-        }
-    }
-
     /**
      * <p>Returns the <tt>WebResponse</tt> for the image contained by this image element.</p>
      * <p><span style="color:red">POTENTIAL PERFORMANCE KILLER - DOWNLOADS THE IMAGE - USE AT YOUR OWN RISK</span></p>
@@ -459,14 +432,8 @@
                 request.setAdditionalHeader("Referer", page.getUrl().toExternalForm());
                 imageWebResponse_ = webclient.loadWebResponse(request);
             }
-
-            if (imageData_ != null) {
-                imageData_.close();
-                imageData_ = null;
-            }
+            imageData_ = null;
             downloaded_ = true;
-            width_ = -1;
-            height_ = -1;
         }
     }
 
@@ -590,7 +557,7 @@
      * of objects which could all be garbage collected without impacting the ImageReader it is better to
      * wrap it in another class.
      */
-    private static final class ImageData implements AutoCloseable {
+    private static final class ImageData {
 
         private final ImageReader imageReader_;
 
@@ -607,12 +574,6 @@
          */
         @Override
         protected void finalize() throws Throwable {
-            close();
-            super.finalize();
-        }
-
-        @Override
-        public void close() {
             if (imageReader_ != null) {
                 try {
                     try (ImageInputStream stream = (ImageInputStream) imageReader_.getInput()) {
@@ -627,6 +588,7 @@
                     imageReader_.dispose();
                 }
             }
+            super.finalize();
         }
     }
 

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/InputElementFactory.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/InputElementFactory.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/InputElementFactory.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -85,10 +85,8 @@
         }
 
         String type = null;
-        for (final Map.Entry<String, DomAttr> entry : attributeMap.entrySet()) {
-            if ("type".equalsIgnoreCase(entry.getKey())) {
-                type = entry.getValue().getValue();
-            }
+        if (attributes != null) {
+            type = attributes.getValue("type");
         }
         if (type == null) {
             type = "";

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/package-info.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/package-info.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/package-info.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -14,7 +14,7 @@
  */
 
 /**
- * Classes specific to HTML pages, particularly the {@link com.gargoylesoftware.htmlunit.html.HtmlPage} which represents
+ * Classes specific to HTML pages, particularly the {@link HtmlPage} which represents
  * an HTML document and provides access to its content.
  */
 package com.gargoylesoftware.htmlunit.html;

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/background/DefaultJavaScriptExecutor.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/background/DefaultJavaScriptExecutor.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/background/DefaultJavaScriptExecutor.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -138,7 +138,7 @@
         // this has to be a multiple of 10ms
         // otherwise the VM has to fight with the OS to get such small periods
         final long sleepInterval = 10;
-        while (!shutdown_ && !Thread.currentThread().isInterrupted() && webClient_.get() != null) {
+        while (!shutdown_ && webClient_.get() != null) {
             final JavaScriptJobManager jobManager = getJobManagerWithEarliestJob();
 
             if (jobManager != null) {
@@ -164,7 +164,7 @@
             }
 
             // check for cancel
-            if (shutdown_ || Thread.currentThread().isInterrupted() || webClient_.get() == null) {
+            if (shutdown_ || webClient_.get() == null) {
                 break;
             }
 
@@ -173,7 +173,7 @@
                 Thread.sleep(sleepInterval);
             }
             catch (final InterruptedException e) {
-                Thread.currentThread().interrupt();
+                // nothing, probably a shutdown notification
             }
         }
     }

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -23,7 +23,6 @@
 import com.gargoylesoftware.htmlunit.javascript.host.ActiveXObject;
 import com.gargoylesoftware.htmlunit.javascript.host.AppBannerPromptResult;
 import com.gargoylesoftware.htmlunit.javascript.host.ApplicationCache;
-import com.gargoylesoftware.htmlunit.javascript.host.AudioScheduledSourceNode;
 import com.gargoylesoftware.htmlunit.javascript.host.BarProp;
 import com.gargoylesoftware.htmlunit.javascript.host.BatteryManager;
 import com.gargoylesoftware.htmlunit.javascript.host.BroadcastChannel;
@@ -255,6 +254,7 @@
 import com.gargoylesoftware.htmlunit.javascript.host.event.RTCPeerConnectionIceEvent;
 import com.gargoylesoftware.htmlunit.javascript.host.event.SVGZoomEvent;
 import com.gargoylesoftware.htmlunit.javascript.host.event.SecurityPolicyViolationEvent;
+import com.gargoylesoftware.htmlunit.javascript.host.event.ServiceWorkerMessageEvent;
 import com.gargoylesoftware.htmlunit.javascript.host.event.SpeechSynthesisEvent;
 import com.gargoylesoftware.htmlunit.javascript.host.event.StorageEvent;
 import com.gargoylesoftware.htmlunit.javascript.host.event.TextEvent;
@@ -295,6 +295,14 @@
 import com.gargoylesoftware.htmlunit.javascript.host.idb.IDBOpenDBRequest;
 import com.gargoylesoftware.htmlunit.javascript.host.idb.IDBRequest;
 import com.gargoylesoftware.htmlunit.javascript.host.idb.IDBTransaction;
+import com.gargoylesoftware.htmlunit.javascript.host.idb.webkitIDBCursor;
+import com.gargoylesoftware.htmlunit.javascript.host.idb.webkitIDBDatabase;
+import com.gargoylesoftware.htmlunit.javascript.host.idb.webkitIDBFactory;
+import com.gargoylesoftware.htmlunit.javascript.host.idb.webkitIDBIndex;
+import com.gargoylesoftware.htmlunit.javascript.host.idb.webkitIDBKeyRange;
+import com.gargoylesoftware.htmlunit.javascript.host.idb.webkitIDBObjectStore;
+import com.gargoylesoftware.htmlunit.javascript.host.idb.webkitIDBRequest;
+import com.gargoylesoftware.htmlunit.javascript.host.idb.webkitIDBTransaction;
 import com.gargoylesoftware.htmlunit.javascript.host.media.AnalyserNode;
 import com.gargoylesoftware.htmlunit.javascript.host.media.AudioBuffer;
 import com.gargoylesoftware.htmlunit.javascript.host.media.AudioBufferSourceNode;
@@ -347,7 +355,9 @@
 import com.gargoylesoftware.htmlunit.javascript.host.media.VTTCue;
 import com.gargoylesoftware.htmlunit.javascript.host.media.VideoPlaybackQuality;
 import com.gargoylesoftware.htmlunit.javascript.host.media.WaveShaperNode;
+import com.gargoylesoftware.htmlunit.javascript.host.media.webkitAudioContext;
 import com.gargoylesoftware.htmlunit.javascript.host.media.webkitMediaStream;
+import com.gargoylesoftware.htmlunit.javascript.host.media.webkitOfflineAudioContext;
 import com.gargoylesoftware.htmlunit.javascript.host.media.midi.MIDIAccess;
 import com.gargoylesoftware.htmlunit.javascript.host.media.midi.MIDIInput;
 import com.gargoylesoftware.htmlunit.javascript.host.media.midi.MIDIInputMap;
@@ -417,8 +427,7 @@
         AppBannerPromptResult.class, ApplicationCache.class, ApplicationCacheErrorEvent.class, ArrayBuffer.class,
         ArrayBufferView.class, ArrayBufferViewBase.class, Attr.class, AudioBuffer.class,
         AudioBufferSourceNode.class, AudioContext.class, AudioDestinationNode.class, AudioListener.class,
-        AudioNode.class, AudioParam.class, AudioProcessingEvent.class, AudioScheduledSourceNode.class,
-        BarProp.class, BaseAudioContext.class,
+        AudioNode.class, AudioParam.class, AudioProcessingEvent.class, BarProp.class, BaseAudioContext.class,
         BatteryManager.class, BeforeInstallPromptEvent.class, BeforeUnloadEvent.class, BiquadFilterNode.class,
         Blob.class, BlobEvent.class, BroadcastChannel.class, Cache.class, CacheStorage.class,
         CanvasCaptureMediaStream.class, CanvasCaptureMediaStreamTrack.class,
@@ -461,7 +470,7 @@
         HTMLFrameSetElement.class,
         HTMLHeadElement.class, HTMLHeadingElement.class, HTMLHRElement.class, HTMLHtmlElement.class,
         HTMLIFrameElement.class, HTMLImageElement.class, HTMLInlineQuotationElement.class, HTMLInputElement.class,
-        HTMLIsIndexElement.class, HTMLLabelElement.class,
+        HTMLIsIndexElement.class, HTMLKeygenElement.class, HTMLLabelElement.class,
         HTMLLegendElement.class, HTMLLIElement.class, HTMLLinkElement.class, HTMLListElement.class,
         HTMLMapElement.class, HTMLMarqueeElement.class,
         HTMLMediaElement.class, HTMLMenuElement.class, HTMLMenuItemElement.class, HTMLMetaElement.class,
@@ -523,7 +532,7 @@
         RTCSessionDescription.class, RTCStatsReport.class, Screen.class, ScreenOrientation.class,
         ScriptProcessorNode.class,
         SecurityPolicyViolationEvent.class, Selection.class, ServiceWorker.class, ServiceWorkerContainer.class,
-        ServiceWorkerRegistration.class, Set.class, ShadowRoot.class,
+        ServiceWorkerMessageEvent.class, ServiceWorkerRegistration.class, Set.class, ShadowRoot.class,
         SharedWorker.class, SimpleArray.class, SiteBoundCredential.class, SourceBuffer.class, SourceBufferList.class,
         SpeechSynthesis.class, SpeechSynthesisEvent.class,
         SpeechSynthesisUtterance.class, StereoPannerNode.class, Storage.class, StorageEvent.class, StorageManager.class,
@@ -535,7 +544,7 @@
         SVGAnimatedTransformList.class, SVGAnimateElement.class,
         SVGAnimateMotionElement.class, SVGAnimateTransformElement.class, SVGAnimationElement.class,
         SVGCircleElement.class,
-        SVGClipPathElement.class, SVGComponentTransferFunctionElement.class,
+        SVGClipPathElement.class, SVGComponentTransferFunctionElement.class, SVGCursorElement.class,
         SVGDefsElement.class, SVGDescElement.class, SVGDiscardElement.class, SVGDocument.class, SVGElement.class,
         SVGEllipseElement.class, SVGFEBlendElement.class, SVGFEColorMatrixElement.class,
         SVGFEComponentTransferElement.class, SVGFECompositeElement.class, SVGFEConvolveMatrixElement.class,
@@ -575,9 +584,11 @@
         WEBGL_compressed_texture_s3tc.class, WEBGL_debug_renderer_info.class, WebGLActiveInfo.class, WebGLBuffer.class,
         WebGLContextEvent.class, WebGLFramebuffer.class, WebGLProgram.class, WebGLRenderbuffer.class,
         WebGLRenderingContext.class, WebGLShader.class, WebGLShaderPrecisionFormat.class, WebGLTexture.class,
-        WebGLUniformLocation.class, WebKitAnimationEvent.class,
-        WebKitCSSMatrix.class, webkitMediaStream.class, WebKitMutationObserver.class,
-        webkitRTCPeerConnection.class, webkitSpeechGrammar.class,
+        WebGLUniformLocation.class, WebKitAnimationEvent.class, webkitAudioContext.class,
+        WebKitCSSMatrix.class, webkitIDBCursor.class, webkitIDBDatabase.class, webkitIDBFactory.class,
+        webkitIDBIndex.class, webkitIDBKeyRange.class, webkitIDBObjectStore.class, webkitIDBRequest.class,
+        webkitIDBTransaction.class, webkitMediaStream.class, WebKitMutationObserver.class,
+        webkitOfflineAudioContext.class, webkitRTCPeerConnection.class, webkitSpeechGrammar.class,
         webkitSpeechGrammarList.class, webkitSpeechRecognition.class, webkitSpeechRecognitionError.class,
         webkitSpeechRecognitionEvent.class, WebKitTransitionEvent.class, webkitURL.class,
         WebSocket.class, WheelEvent.class, Window.class, Worker.class, XMLDocument.class,

Deleted: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/AudioScheduledSourceNode.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/AudioScheduledSourceNode.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/AudioScheduledSourceNode.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2002-2017 Gargoyle Software Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.gargoylesoftware.htmlunit.javascript.host;
-
-import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
-
-import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
-import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
-
-/**
- * A JavaScript object for {@code AudioScheduledSourceNode}.
- *
- * @author Ronald Brill
- */
-@JsxClass(browsers = @WebBrowser(CHROME))
-public class AudioScheduledSourceNode extends SimpleScriptable {
-
-    /**
-     * Creates a new instance.
-     */
-    @JsxConstructor
-    public AudioScheduledSourceNode() {
-    }
-}

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Screen.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Screen.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Screen.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -217,7 +217,7 @@
      */
     @JsxGetter
     public int getHeight() {
-        return ((Window) getParentScope()).getWebWindow().getWebClient().getOptions().getScreenHeight();
+        return 768;
     }
 
     /**
@@ -361,7 +361,7 @@
      */
     @JsxGetter
     public int getWidth() {
-        return ((Window) getParentScope()).getWebWindow().getWebClient().getOptions().getScreenWidth();
+        return 1024;
     }
 
     /**

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/WebSocket.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/WebSocket.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/WebSocket.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -437,24 +437,5 @@
             fire(msgEvent);
             callFunction(messageHandler_, new Object[] {msgEvent});
         }
-
-        @Override
-        public void onWebSocketError(final Throwable cause) {
-            super.onWebSocketError(cause);
-            readyState_ = CLOSED;
-            outgoingSession_ = null;
-
-            final Event errorEvent = new Event();
-            errorEvent.setType(Event.TYPE_ERROR);
-            fire(errorEvent);
-            callFunction(errorHandler_, new Object[] {errorEvent});
-
-            final CloseEvent closeEvent = new CloseEvent();
-            closeEvent.setCode(1006);
-            closeEvent.setReason(cause.getMessage());
-            closeEvent.setWasClean(false);
-            fire(closeEvent);
-            callFunction(closeHandler_, new Object[] {closeEvent});
-        }
     }
 }

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/event/ServiceWorkerMessageEvent.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/event/ServiceWorkerMessageEvent.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/event/ServiceWorkerMessageEvent.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/event/ServiceWorkerMessageEvent.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.event;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * A JavaScript object for {@code ServiceWorkerMessageEvent}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class ServiceWorkerMessageEvent extends Event {
+
+    /**
+     * Creates a new instance.
+     */
+    @JsxConstructor
+    public ServiceWorkerMessageEvent() {
+    }
+}

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLKeygenElement.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLKeygenElement.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLKeygenElement.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLKeygenElement.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,77 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.html;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.html.HtmlKeygen;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxGetter;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxSetter;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+import com.gargoylesoftware.htmlunit.javascript.host.dom.AbstractList;
+
+/**
+ * The JavaScript object {@code HTMLKeygenElement}.
+ *
+ * @author Ahmed Ashour
+ * @author Daniel Gredler
+ * @author Ronald Brill
+ */
+@JsxClass(domClass = HtmlKeygen.class, browsers = @WebBrowser(CHROME))
+public class HTMLKeygenElement extends HTMLElement {
+
+    /** "Live" labels collection; has to be a member to have equality (==) working. */
+    private AbstractList labels_;
+
+    /**
+     * Creates an instance.
+     */
+    @JsxConstructor
+    public HTMLKeygenElement() {
+    }
+
+    /**
+     * Returns the {@code name} attribute.
+     * @return the {@code name} attribute
+     */
+    @JsxGetter
+    public String getName() {
+        return getDomNodeOrDie().getAttribute("name");
+    }
+
+    /**
+     * Sets the {@code name} attribute.
+     * @param name the {@code name} attribute
+     */
+    @JsxSetter
+    public void setName(final String name) {
+        getDomNodeOrDie().setAttribute("name", name);
+    }
+
+    /**
+     * Returns the labels associated with the element.
+     * @return the labels associated with the element
+     */
+    @JsxGetter
+    public AbstractList getLabels() {
+        if (labels_ == null) {
+            labels_ = new LabelsHelper(getDomNodeOrDie());
+        }
+        return labels_;
+    }
+
+}

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBCursor.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBCursor.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBCursor.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBCursor.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.idb;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * A JavaScript object for {@code webkitIDBCursor}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class webkitIDBCursor extends IDBCursor {
+
+    /**
+     * Creates a new instance.
+     */
+    @JsxConstructor
+    public webkitIDBCursor() {
+    }
+}

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBDatabase.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBDatabase.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBDatabase.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBDatabase.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.idb;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * A JavaScript object for {@code webkitIDBDatabase}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class webkitIDBDatabase extends IDBDatabase {
+
+    /**
+     * Creates a new instance.
+     */
+    @JsxConstructor
+    public webkitIDBDatabase() {
+    }
+}

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBFactory.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBFactory.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBFactory.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBFactory.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.idb;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * A JavaScript object for {@code webkitIDBFactory}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class webkitIDBFactory extends IDBFactory {
+
+    /**
+     * Creates a new instance.
+     */
+    @JsxConstructor
+    public webkitIDBFactory() {
+    }
+}

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBIndex.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBIndex.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBIndex.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBIndex.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.idb;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * A JavaScript object for {@code webkitIDBIndex}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class webkitIDBIndex extends IDBIndex {
+
+    /**
+     * Creates a new instance.
+     */
+    @JsxConstructor
+    public webkitIDBIndex() {
+    }
+}

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBKeyRange.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBKeyRange.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBKeyRange.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBKeyRange.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.idb;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * A JavaScript object for {@code webkitIDBKeyRange}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class webkitIDBKeyRange extends IDBKeyRange {
+
+    /**
+     * Creates a new instance.
+     */
+    @JsxConstructor
+    public webkitIDBKeyRange() {
+    }
+}

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBObjectStore.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBObjectStore.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBObjectStore.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBObjectStore.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.idb;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * A JavaScript object for {@code webkitIDBObjectStore}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class webkitIDBObjectStore extends IDBObjectStore {
+
+    /**
+     * Creates a new instance.
+     */
+    @JsxConstructor
+    public webkitIDBObjectStore() {
+    }
+}

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBRequest.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBRequest.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBRequest.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBRequest.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.idb;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * A JavaScript object for {@code webkitIDBRequest}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class webkitIDBRequest extends IDBRequest {
+
+    /**
+     * Creates a new instance.
+     */
+    @JsxConstructor
+    public webkitIDBRequest() {
+    }
+}

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBTransaction.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBTransaction.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBTransaction.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/idb/webkitIDBTransaction.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.idb;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * A JavaScript object for {@code webkitIDBTransaction}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class webkitIDBTransaction extends IDBTransaction {
+
+    /**
+     * Creates a new instance.
+     */
+    @JsxConstructor
+    public webkitIDBTransaction() {
+    }
+}

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/MediaSource.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/MediaSource.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/MediaSource.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -20,7 +20,6 @@
 
 import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
 import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxStaticFunction;
 import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
 import com.gargoylesoftware.htmlunit.javascript.host.event.EventTarget;
 
@@ -28,7 +27,6 @@
  * A JavaScript object for {@code MediaSource}.
  *
  * @author Ahmed Ashour
- * @author Ronald Brill
  */
 @JsxClass(browsers = {@WebBrowser(CHROME), @WebBrowser(FF), @WebBrowser(EDGE)})
 public class MediaSource extends EventTarget {
@@ -39,17 +37,4 @@
     @JsxConstructor
     public MediaSource() {
     }
-
-    /**
-     * @see <a href="https://developer.mozilla.org/en-US/docs/Web/API/MediaSource/isTypeSupported">
-     * MDN MediaSource#isTypeSupported </a>
-     *
-     * @param mimeType the mimeType to check
-     * @return indicating if the given MIME type is supported by the
-     * current user agent — this is, if it can successfully create SourceBuffer objects for that MIME type
-     */
-    @JsxStaticFunction
-    public static boolean isTypeSupported(final String mimeType) {
-        return false;
-    }
 }

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/webkitAudioContext.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/webkitAudioContext.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/webkitAudioContext.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/webkitAudioContext.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.media;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * A JavaScript object for {@code webkitAudioContext}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class webkitAudioContext extends AudioContext {
+
+    /**
+     * Creates an instance.
+     */
+    @JsxConstructor
+    public webkitAudioContext() {
+    }
+}

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/webkitOfflineAudioContext.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/webkitOfflineAudioContext.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/webkitOfflineAudioContext.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/media/webkitOfflineAudioContext.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.media;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+import com.gargoylesoftware.htmlunit.javascript.host.event.EventTarget;
+
+/**
+ * A JavaScript object for {@code webkitOfflineAudioContext}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(browsers = @WebBrowser(CHROME))
+public class webkitOfflineAudioContext extends EventTarget {
+
+    /**
+     * Creates an instance.
+     */
+    @JsxConstructor
+    public webkitOfflineAudioContext() {
+    }
+}

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/performance/PerformanceNavigationTiming.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/performance/PerformanceNavigationTiming.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/performance/PerformanceNavigationTiming.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -14,7 +14,6 @@
  */
 package com.gargoylesoftware.htmlunit.javascript.host.performance;
 
-import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
 import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.IE;
 
 import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
@@ -26,7 +25,7 @@
  *
  * @author Ahmed Ashour
  */
-@JsxClass(browsers = {@WebBrowser(CHROME), @WebBrowser(IE)})
+@JsxClass(browsers = @WebBrowser(IE))
 public class PerformanceNavigationTiming extends SimpleScriptable {
 
     /**

Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/svg/SVGCursorElement.java (from rev 13642, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/svg/SVGCursorElement.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/svg/SVGCursorElement.java                        (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/svg/SVGCursorElement.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2002-2017 Gargoyle Software Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.gargoylesoftware.htmlunit.javascript.host.svg;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
+
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstructor;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+import com.gargoylesoftware.htmlunit.svg.SvgCursor;
+
+/**
+ * A JavaScript object for {@code SVGCursorElement}.
+ *
+ * @author Ahmed Ashour
+ */
+@JsxClass(domClass = SvgCursor.class,
+    browsers = @WebBrowser(CHROME))
+public class SVGCursorElement extends SVGElement {
+
+    /**
+     * Creates an instance.
+     */
+    @JsxConstructor
+    public SVGCursorElement() {
+    }
+}

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/package-info.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/package-info.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/package-info.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -14,6 +14,6 @@
  */
 
 /**
- * Framework classes (contains the {@link com.gargoylesoftware.htmlunit.WebClient} class which is the main entry point).
+ * Framework classes (contains the {@link WebClient} class which is the main entry point).
  */
 package com.gargoylesoftware.htmlunit;

Modified: trunk/htmlunit/src/site/xdoc/packagingARelease.xml
===================================================================
--- trunk/htmlunit/src/site/xdoc/packagingARelease.xml 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/site/xdoc/packagingARelease.xml 2017-03-15 19:43:00 UTC (rev 13741)
@@ -85,7 +85,7 @@
                     </li>
                     <li>
                         Build the zip files
-                        <source>mvn -up clean site package</source>
+                        <source>mvn -up clean site package -Dmaven.javadoc.failOnError=false</source>
                     </li>
                     <li>
                         Upload the two zip files (htmlunit-x.y-bin.zip and htmlunit-x.y-src.zip) to

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserParameterizedRunner.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserParameterizedRunner.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserParameterizedRunner.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -139,10 +139,6 @@
                     runners_.add(new BrowserVersionClassRunnerWithParameters(
                             klass, BrowserVersion.FIREFOX_45, true, tests));
                 }
-                if (browsers.contains("ff52")) {
-                    runners_.add(new BrowserVersionClassRunnerWithParameters(
-                            klass, BrowserVersion.FIREFOX_52, true, tests));
-                }
                 if (browsers.contains("ie")) {
                     runners_.add(new BrowserVersionClassRunnerWithParameters(
                             klass, BrowserVersion.INTERNET_EXPLORER, true, tests));
@@ -161,10 +157,6 @@
                 runners_.add(new BrowserVersionClassRunnerWithParameters(
                         klass, BrowserVersion.FIREFOX_45, false, tests));
             }
-            if (browsers.contains("hu-ff52")) {
-                runners_.add(new BrowserVersionClassRunnerWithParameters(
-                        klass, BrowserVersion.FIREFOX_52, false, tests));
-            }
             if (browsers.contains("hu-ie")) {
                 runners_.add(new BrowserVersionClassRunnerWithParameters(
                         klass, BrowserVersion.INTERNET_EXPLORER, false, tests));

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserRunner.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserRunner.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserRunner.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -14,6 +14,11 @@
  */
 package com.gargoylesoftware.htmlunit;
 
+import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.CHROME;
+import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.EDGE;
+import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF;
+import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE;
+
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -75,9 +80,6 @@
                 if (browsers.contains("ff45")) {
                     runners_.add(new BrowserVersionClassRunner(klass, BrowserVersion.FIREFOX_45, true));
                 }
-                if (browsers.contains("ff52")) {
-                    runners_.add(new BrowserVersionClassRunner(klass, BrowserVersion.FIREFOX_52, true));
-                }
                 if (browsers.contains("ie")) {
                     runners_.add(new BrowserVersionClassRunner(klass, BrowserVersion.INTERNET_EXPLORER, true));
                 }
@@ -92,9 +94,6 @@
             if (browsers.contains("hu-ff45")) {
                 runners_.add(new BrowserVersionClassRunner(klass, BrowserVersion.FIREFOX_45, false));
             }
-            if (browsers.contains("hu-ff52")) {
-                runners_.add(new BrowserVersionClassRunner(klass, BrowserVersion.FIREFOX_52, false));
-            }
             if (browsers.contains("hu-ie")) {
                 runners_.add(new BrowserVersionClassRunner(klass, BrowserVersion.INTERNET_EXPLORER, false));
             }
@@ -165,10 +164,7 @@
         FF,
 
         /** Firefox 45. */
-        FF45,
-
-        /** Firefox 52. */
-        FF52
+        FF45
     }
 
     /**
@@ -215,12 +211,6 @@
         String[] FF45() default { EMPTY_DEFAULT };
 
         /**
-         * Alerts for Firefox 52. If not defined, {@link #FF()} is used.
-         * @return the alerts
-         */
-        String[] FF52() default { EMPTY_DEFAULT };
-
-        /**
          * Alerts for latest Chrome.
          * @return the alerts
          */
@@ -273,12 +263,6 @@
         String[] FF45() default { EMPTY_DEFAULT };
 
         /**
-         * Alerts for Firefox 52. If not defined, {@link #FF()} is used.
-         * @return the alerts
-         */
-        String[] FF52() default { EMPTY_DEFAULT };
-
-        /**
          * Alerts for latest Chrome.
          * @return the alerts
          */
@@ -306,13 +290,8 @@
          * @return the browsers
          */
         Browser[] value() default {
-            Browser.IE, Browser.FF, Browser.CHROME, Browser.EDGE
+            IE, FF, CHROME, EDGE
         };
-
-        /**
-         * @return an optional reason.
-         */
-        String reason() default "";
     }
 
     /**
@@ -328,7 +307,7 @@
          * @return the browsers
          */
         Browser[] value() default {
-            Browser.IE, Browser.FF, Browser.CHROME, Browser.EDGE
+            IE, FF, CHROME, EDGE
         };
     }
 

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserVersionTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserVersionTest.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/BrowserVersionTest.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -32,9 +32,8 @@
     @Test
     public void getBrowserVersionNumeric() {
         assertEquals(45, BrowserVersion.FIREFOX_45.getBrowserVersionNumeric());
-        assertEquals(52, BrowserVersion.FIREFOX_52.getBrowserVersionNumeric());
         assertEquals(11, BrowserVersion.INTERNET_EXPLORER.getBrowserVersionNumeric());
-        assertEquals(57, BrowserVersion.CHROME.getBrowserVersionNumeric());
+        assertEquals(56, BrowserVersion.CHROME.getBrowserVersionNumeric());
         assertEquals(13, BrowserVersion.EDGE.getBrowserVersionNumeric());
     }
 

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/CookieManagerTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/CookieManagerTest.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/CookieManagerTest.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -45,14 +45,6 @@
 public class CookieManagerTest extends WebDriverTestCase {
 
     /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected boolean supportsWebDriver() {
-        return false;
-    }
-
-    /**
      * Closes the real ie because clearing all cookies seem to be not working
      * at the moment.
      */

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/DefaultPageCreator2Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/DefaultPageCreator2Test.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/DefaultPageCreator2Test.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -32,7 +32,6 @@
     @Test
     public void determinePageType() {
         assertEquals(PageType.HTML, DefaultPageCreator.determinePageType("text/html"));
-        assertEquals(PageType.HTML, DefaultPageCreator.determinePageType("image/svg+xml"));
 
         assertEquals(PageType.JAVASCRIPT, DefaultPageCreator.determinePageType("text/javascript"));
         assertEquals(PageType.JAVASCRIPT, DefaultPageCreator.determinePageType("application/x-javascript"));
@@ -45,6 +44,7 @@
         assertEquals(PageType.XML, DefaultPageCreator.determinePageType("application/vnd.mozilla.xul+xml"));
         assertEquals(PageType.XML, DefaultPageCreator.determinePageType("application/vnd.wap.xhtml+xml"));
         assertEquals(PageType.XML, DefaultPageCreator.determinePageType("application/rdf+xml"));
+        assertEquals(PageType.XML, DefaultPageCreator.determinePageType("image/svg+xml"));
 
         assertEquals(PageType.TEXT, DefaultPageCreator.determinePageType("text/plain"));
         assertEquals(PageType.TEXT, DefaultPageCreator.determinePageType("text/csv"));

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/ErrorOutputChecker.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/ErrorOutputChecker.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/ErrorOutputChecker.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -36,21 +36,20 @@
 public class ErrorOutputChecker implements TestRule {
     private PrintStream originalErr_;
     private final ByteArrayOutputStream baos_ = new ByteArrayOutputStream();
-    private static final Pattern[] PATTERNS = {
-            Pattern.compile("Starting ChromeDriver 2\\.28\\.455520 ?\\(?[0-9a-f]*\\)? on port \\d*\r?\n"
-                    + "Only local connections are allowed\\.\r?\n"),
-            Pattern.compile(".*FirefoxOptions toCapabilities\r?\n"),
-            Pattern.compile(".*Preferring the firefox binary in these options \\(.*\\)\r?\n"),
+    private static final Pattern WEB_DRIVER_CHROME_MSG =
+            Pattern.compile("Starting ChromeDriver 2\\.27\\.440174 ?\\(?[0-9a-f]*\\)? on port \\d*\r?\n"
+                    + "Only local connections are allowed\\.\r?\n");
+    private static final Pattern WEB_DRIVER_IE_MSG =
             Pattern.compile("Started InternetExplorerDriver server \\(\\d\\d\\-bit\\)\r?\n"
                     + "2\\.53\\.1\\.0\r?\n"
                     + "Listening on port \\d*\r?\n"
-                    + "Only local connections are allowed\r?\n"),
-            // edge
-            Pattern.compile(".*Listening on http://localhost:\\d*/ \r\r?\n"),
-            // edge
-            Pattern.compile(".*Stopping server.\r\r?\n"),
-            Pattern.compile(".*ProtocolHandshake createSession\r?\n(INFO|INFORMATION): Detected dialect: OSS\r?\n")
-    };
+                    + "Only local connections are allowed\r?\n");
+    private static final Pattern WEB_DRIVER_EDGE_MSG1 =
+            Pattern.compile(".*Listening on http://localhost:\\d*/ \r\r?\n");
+    private static final Pattern WEB_DRIVER_EDGE_MSG2 =
+            Pattern.compile(".*Stopping server.\r\r?\n");
+    private static final Pattern WEB_DRIVER_IGNORE_MSG =
+            Pattern.compile(".*ProtocolHandshake createSession\r?\nINFO: Detected dialect: OSS\r?\n");
 
     /**
      * {@inheritDoc}
@@ -77,10 +76,12 @@
         if (baos_.size() != 0) {
             String output = baos_.toString();
 
-            // remove webdriver messages
-            for (Pattern pattern : PATTERNS) {
-                output = pattern.matcher(output).replaceAll("");
-            }
+            // remove webdriver message
+            output = WEB_DRIVER_CHROME_MSG.matcher(output).replaceAll("");
+            output = WEB_DRIVER_IE_MSG.matcher(output).replaceAll("");
+            output = WEB_DRIVER_EDGE_MSG1.matcher(output).replaceAll("");
+            output = WEB_DRIVER_EDGE_MSG2.matcher(output).replaceAll("");
+            output = WEB_DRIVER_IGNORE_MSG.matcher(output).replaceAll("");
 
             if (!output.isEmpty()) {
                 if (output.contains("ChromeDriver")) {

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/ExternalTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/ExternalTest.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/ExternalTest.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -78,7 +78,7 @@
                 }
             }
             assertVersion("org.sonatype.oss", "oss-parent", "9");
-            assertChromeDriver("2.28");
+            assertChromeDriver("2.27");
         }
     }
 

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/NotYetImplementedTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/NotYetImplementedTest.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/NotYetImplementedTest.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -151,7 +151,6 @@
         int count = 0;
         int countIE = 0;
         int countFF45 = 0;
-        int countFF52 = 0;
         int countChrome = 0;
         int countEdge = 0;
         for (final String entry : entries_) {
@@ -196,14 +195,9 @@
             if (browser.contains("FF45")) {
                 countFF45++;
             }
-            if (browser.contains("FF52")) {
-                countFF52++;
-            }
             if (!browser.contains("FF45")
-                    && !browser.contains("FF52")
                     && browser.contains("FF")) {
                 countFF45++;
-                countFF52++;
             }
             if (browser.contains("CHROME")) {
                 countChrome++;
@@ -214,7 +208,6 @@
             if (browser.contains("All")) {
                 countIE++;
                 countFF45++;
-                countFF52++;
                 countChrome++;
                 countEdge++;
             }
@@ -224,32 +217,27 @@
         final StringBuilder overview = new StringBuilder();
         overview.append("<table class='bottomBorder'>\n");
         overview.append("  <tr>\n");
-        overview.append("    <td class='numeric'>").append(count).append("</td>\n");
+        overview.append("    <td class='numeric'>").append(Integer.toString(count)).append("</td>\n");
         overview.append("    <td>methods marked as NotYetImplemented</td>\n");
         overview.append("  </tr>\n");
 
         overview.append("  <tr>\n");
-        overview.append("    <td class='numeric'>").append(countIE).append("</td>\n");
+        overview.append("    <td class='numeric'>").append(Integer.toString(countIE)).append("</td>\n");
         overview.append("    <td>for IE</td>\n");
         overview.append("  </tr>\n");
 
         overview.append("  <tr>\n");
-        overview.append("    <td class='numeric'>").append(countFF45).append("</td>\n");
+        overview.append("    <td class='numeric'>").append(Integer.toString(countFF45)).append("</td>\n");
         overview.append("    <td>for FF45</td>\n");
         overview.append("  </tr>\n");
 
         overview.append("  <tr>\n");
-        overview.append("    <td class='numeric'>").append(countFF52).append("</td>\n");
-        overview.append("    <td>for FF52</td>\n");
-        overview.append("  </tr>\n");
-
-        overview.append("  <tr>\n");
-        overview.append("    <td class='numeric'>").append(countChrome).append("</td>\n");
+        overview.append("    <td class='numeric'>").append(Integer.toString(countChrome)).append("</td>\n");
         overview.append("    <td>for Chrome</td>\n");
         overview.append("  </tr>\n");
 
         overview.append("  <tr>\n");
-        overview.append("    <td class='numeric'>").append(countEdge).append("</td>\n");
+        overview.append("    <td class='numeric'>").append(Integer.toString(countEdge)).append("</td>\n");
         overview.append("    <td>for Edge</td>\n");
         overview.append("  </tr>\n");
 

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/SimpleWebTestCase.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/SimpleWebTestCase.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/SimpleWebTestCase.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -249,9 +249,7 @@
      */
     @Before
     public void before() {
-        final List<Thread> jsThreads = getJavaScriptThreads();
-        assertEquals("There are still " + jsThreads.size()
-                        + " JS threads running before starting the test", 0, jsThreads.size());
+        assertEquals(0, getJavaScriptThreads().size());
     }
 
     /**
@@ -268,7 +266,7 @@
         webClient_ = null;
 
         final List<Thread> jsThreads = getJavaScriptThreads();
-        assertEquals("There are still " + jsThreads.size() + " JS threads running after the test", 0, jsThreads.size());
+        assertEquals(0, jsThreads.size());
 
         // collect stack traces
         // caution: the threads may terminate after the threads have been returned by getJavaScriptThreads()

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClient3Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClient3Test.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClient3Test.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -47,14 +47,6 @@
 public class WebClient3Test extends WebDriverTestCase {
 
     /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected boolean supportsWebDriver() {
-        return false;
-    }
-
-    /**
      * Regression test for bug 3012067: a null pointer exception was occurring.
      * @throws Exception if an error occurs
      */

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClientTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClientTest.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebClientTest.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -76,7 +76,6 @@
  * @author Sudhan Moghe
  * @author Ronald Brill
  * @author Carsten Steul
- * @author Joerg Werner
  */
 @RunWith(BrowserRunner.class)
 public class WebClientTest extends SimpleWebTestCase {
@@ -1429,7 +1428,6 @@
         assertEquals("empty.jpg", "image/jpeg", c.guessContentType(getTestFile("empty.jpg")));
         assertEquals("empty.gif", "image/gif", c.guessContentType(getTestFile("empty.gif")));
         assertEquals("empty.js", "text/javascript", c.guessContentType(getTestFile("empty.js")));
-        assertEquals("empty.css", "text/css", c.guessContentType(getTestFile("empty.css")));
 
         // test real files with bad file suffix
         assertEquals("tiny-png.img", "image/png", c.guessContentType(getTestFile("tiny-png.img")));

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebDriverTestCase.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebDriverTestCase.java 2017-03-15 19:32:40 UTC (rev 13740)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebDriverTestCase.java 2017-03-15 19:43:00 UTC (rev 13741)
@@ -16,7 +16,6 @@
 
 import static com.gargoylesoftware.htmlunit.BrowserVersion.INTERNET_EXPLORER;
 import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeTrue;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -54,8 +53,8 @@
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
-import org.openqa.selenium.Alert;
 import org.openqa.selenium.Dimension;
+import org.openqa.selenium.JavascriptExecutor;
 import org.openqa.selenium.NoSuchSessionException;
 import org.openqa.selenium.NoSuchWindowException;
 import org.openqa.selenium.WebDriver;
@@ -64,22 +63,22 @@
 import org.openqa.selenium.chrome.ChromeDriver;
 import org.openqa.selenium.chrome.ChromeDriverService;
 import org.openqa.selenium.edge.EdgeDriver;
+import org.openqa.selenium.firefox.FirefoxBinary;
 import org.openqa.selenium.firefox.FirefoxDriver;
-import org.openqa.selenium.firefox.FirefoxOptions;
+import org.openqa.selenium.firefox.FirefoxProfile;
 import org.openqa.selenium.htmlunit.HtmlUnitDriver;
-import org.openqa.selenium.htmlunit.local.HtmlUnitLocalDriver;
-import org.openqa.selenium.htmlunit.local.HtmlUnitWebElement;
+import org.openqa.selenium.htmlunit.HtmlUnitWebElement;
 import org.openqa.selenium.ie.InternetExplorerDriver;
-import org.openqa.selenium.remote.BrowserType;
-import org.openqa.selenium.remote.DesiredCapabilities;
-import org.openqa.selenium.remote.RemoteWebElement;
 import org.openqa.selenium.remote.UnreachableBrowserException;
 
 import com.gargoylesoftware.htmlunit.MockWebConnection.RawResponseData;
 import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
 import com.gargoylesoftware.htmlunit.html.HtmlPageTest;
 import com.gargoylesoftware.htmlunit.util.NameValuePair;
 
+import net.sourceforge.htmlunit.corejs.javascript.Context;
+
 /**
  * Base class for tests using WebDriver.
  * <p>
@@ -89,7 +88,7 @@
  * <pre>
    browsers=hu,ff45,ie
    chrome.bin=/path/to/chromedriver                     [Unix-like]
-   ff52.bin=/usr/bin/firefox                            [Unix-like]
+   ff45.bin=/usr/bin/firefox                            [Unix-like]
    ie.bin=C:\\path\\to\\32bit\\IEDriverServer.exe       [Windows]
    edge.bin=C:\\path\\to\\MicrosoftWebDriver.exe        [Windows]
    autofix=true
@@ -97,12 +96,11 @@
  * The file could contain some properties:
  * <ul>
  *   <li>browsers: is a comma separated list contains any combination of "hu" (for HtmlUnit with all browser versions),
- *   "hu-ie", "hu-ff52", "ff52", "ie", "chrome", which will be used to drive real browsers</li>
+ *   "hu-ie", "hu-ff45", "ff45", "ie", "chrome", which will be used to drive real browsers</li>
  *
  *   <li>chrome.bin (mandatory if it does not exist in the <i>path</i>): is the location of the ChromeDriver binary (see
  *   <a href="http://chromedriver.storage.googleapis.com/index.html">Chrome Driver downloads</a>)</li>
  *   <li>ff45.bin (optional): is the location of the FF binary, in Windows use double back-slashes</li>
- *   <li>ff52.bin (optional): is the location of the FF binary, in Windows use double back-slashes</li>
  *   <li>ie.bin (mandatory if it does not exist in the <i>path</i>): is the location of the IEDriverServer binary (see
  *   <a href="http://selenium-release.storage.googleapis.com/index.html">IEDriverServer downloads</a>)</li>
  *   <li>edge.bin (mandatory if it does not exist in the <i>path</i>): is the location of the MicrosoftWebDriver binary
@@ -143,7 +141,6 @@
     private static String EDGE_BIN_;
     private static String IE_BIN_;
     private static String FF45_BIN_;
-    private static String FF52_BIN_;
 
     /** The driver cache. */
     protected static final Map<BrowserVersion, WebDriver> WEB_DRIVERS_ = new HashMap<>();
@@ -163,10 +160,7 @@
     private Boolean useStandards_;
     private static Boolean LAST_TEST_MockWebConnection_;
 
-    /**
-     * The HtmlUnitDriver.
-     */
-    private WebDriver webDriver_;
+    private WebClient webClient_;
 
     /**
      * Override this function in a test class to ask for STATIC_SERVER2_ to be set up.
@@ -196,7 +190,6 @@
                     EDGE_BIN_ = properties.getProperty("edge.bin");
                     IE_BIN_ = properties.getProperty("ie.bin");
                     FF45_BIN_ = properties.getProperty("ff45.bin");
-                    FF52_BIN_ = properties.getProperty("ff52.bin");
 
                     final boolean autofix = Boolean.parseBoolean(properties.getProperty("autofix"));
                     System.setProperty(AUTOFIX_, Boolean.toString(autofix));
@@ -286,10 +279,6 @@
         }
         WEB_DRIVERS_.clear();
 
-        final List<Thread> jsThreads = getJavaScriptThreads();
-        assertEquals("There are still " + jsThreads.size()
-                + " JS threads running after shutDownAll", 0, jsThreads.size());
-
         shutDownRealBrowsers();
 
         stopWebServers();
@@ -394,22 +383,11 @@
     }
 
     /**
-     * Temporary flag to say the test class supports the Remote WebDriver.
-     * Ultimately all classes will support, and we will remove this.
-     *
-     * @return whether to run with driver, or ignore it for now.
-     */
-    protected boolean supportsWebDriver() {
-        return true;
-    }
-
-    /**
      * Builds a new WebDriver instance.
      * @return the instance
      * @throws IOException in case of exception
      */
     protected WebDriver buildWebDriver() throws IOException {
-        assumeTrue(supportsWebDriver());
         if (useRealBrowser()) {
             if (getBrowserVersion().isIE()) {
                 if (IE_BIN_ != null) {
@@ -445,45 +423,24 @@
                 System.setProperty("webdriver.firefox.marionette", "false");
 
                 if (FF45_BIN_ != null) {
-                    final FirefoxOptions options = new FirefoxOptions();
-                    options.setBinary(FF45_BIN_);
-                    return new FirefoxDriver(options);
+                    return new FirefoxDriver(new FirefoxBinary(new File(FF45_BIN_)), new FirefoxProfile());
                 }
                 return new FirefoxDriver();
             }
 
-            if (BrowserVersion.FIREFOX_52 == getBrowserVersion()) {
-                if (FF52_BIN_ != null) {
-                    final FirefoxOptions options = new FirefoxOptions();
-                    options.setBinary(FF52_BIN_);
-                    return new FirefoxDriver(options);
-                }
-                return new FirefoxDriver();
-            }
-
             throw new RuntimeException("Unexpected BrowserVersion: " + getBrowserVersion());
         }
-        if (webDriver_ == null) {
-            final DesiredCapabilities capabilities = new DesiredCapabilities();
-            capabilities.setBrowserName(getBrowserName(getBrowserVersion()));
-            webDriver_ = new HtmlUnitDriver(capabilities);
+        if (webClient_ == null) {
+            webClient_ = new WebClient(getBrowserVersion());
         }
-        return webDriver_;
+        return new HtmlUnitDriver(true) {
+            @Override
+            protected WebClient newWebClient(final BrowserVersion browserVersion) {
+                return webClient_;
+            }
+        };
     }
 
-    private static String getBrowserName(final BrowserVersion browserVersion) {
-        if (browserVersion == BrowserVersion.FIREFOX_45 || browserVersion == BrowserVersion.FIREFOX_52) {
-            return BrowserType.FIREFOX;
-        }
-        if (browserVersion == BrowserVersion.INTERNET_EXPLORER) {
-            return BrowserType.IE;
-        }
-        if (browserVersion == BrowserVersion.EDGE) {
-            return BrowserType.EDGE;
-        }
-        return BrowserType.CHROME;
-    }
-
     /**
      * Starts the web server delivering response from the provided connection.
      * @param mockConnection the sources for responses
@@ -905,7 +862,7 @@
 
         try {
             // gets the collected alerts, waiting a bit if necessary
-            actualAlerts = getCollectedAlerts(driver, expectedAlerts.length);
+            actualAlerts = getCollectedAlerts(driver);
 
             final long maxWait = System.currentTimeMillis() + maxWaitTime;
             while (actualAlerts.size() < expectedAlerts.length && System.currentTimeMillis() < maxWait) {
@@ -1006,59 +963,43 @@
      * @return the collected alerts
      * @throws Exception in case of problem
      */
+    @SuppressWarnings("unchecked")
     protected List<String> getCollectedAlerts(final WebDriver driver) throws Exception {
-        return getCollectedAlerts(driver, getExpectedAlerts().length);
-    }
+        final List<String> collectedAlerts = new ArrayList<>();
 
-    /**
-     * Gets the alerts collected by the driver.
-     * Note: it currently works only if no new page has been loaded in the window
-     * @param driver the driver
-     * @param alertsLength the expected length of Alerts
-     * @return the collected alerts
-     * @throws Exception in case of problem
-     */
-    protected List<String> getCollectedAlerts(final WebDriver driver, final int alertsLength) throws Exception {
-        final List<String> collectedAlerts = new ArrayList<>();
-        for (int i = 0; i < alertsLength; i++) {
-            final Alert alert = driver.switchTo().alert();
-            collectedAlerts.add(alert.getText());
-            alert.accept();
+        // do not throw an exception if we ask for collected alerts for non html pages
+        // see com.gargoylesoftware.htmlunit.WebClient3Test.javascriptContentDetectorContentTypeTextPlain()
+        if (driver instanceof HtmlUnitDriver) {
+            final Page page = getWebWindowOf((HtmlUnitDriver) driver).getEnclosedPage();
+            if (!(page instanceof HtmlPage)) {
+                return collectedAlerts;
+            }
         }
 
-//        // do not throw an exception if we ask for collected alerts for non html pages
-//        // see com.gargoylesoftware.htmlunit.WebClient3Test.javascriptContentDetectorContentTypeTextPlain()
-//        if (driver instanceof HtmlUnitDriver) {
-//            final Page page = getWebWindowOf((HtmlUnitDriver) driver).getEnclosedPage();
-//            if (!(page instanceof HtmlPage)) {
-//                return collectedAlerts;
-//            }
-//        }
-//
-//        final JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
-//
-//        final Object result = jsExecutor.executeScript("return top.__huCatchedAlerts");
-//
-//        if (result != null) {
-//            if (driver instanceof HtmlUnitDriver) {
-//                return (List<String>) result;
-//            }
-//            if (result instanceof List) {
-//                for (final Object alert : (List<Object>) result) {
-//                    collectedAlerts.add(Context.toString(alert));
-//                }
-//            }
-//            else if (result instanceof String) {
-//                collectedAlerts.add(result.toString());
-//            }
-//            else {
-//                final Map<?, ?> map  = (Map<?, ?>) result;
-//                for (final Object key : map.keySet()) {
-//                    final int index = Integer.parseInt(key.toString());
-//                    collectedAlerts.add(index, map.get(key).toString());
-//                }
-//            }
-//        }
+        final JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
+
+        final Object result = jsExecutor.executeScript("return top.__huCatchedAlerts");
+
+        if (result != null) {
+            if (driver instanceof HtmlUnitDriver) {
+                return (List<String>) result;
+            }
+            if (result instanceof List) {
+                for (final Object alert : (List<Object>) result) {
+                    collectedAlerts.add(Context.toString(alert));
+                }
+            }
+            else if (result instanceof String) {
+                collectedAlerts.add(result.toString());
+            }
+            else {
+                final Map<?, ?> map  = (Map<?, ?>) result;
+                for (final Object key : map.keySet()) {
+                    final int index = Integer.parseInt(key.toString());
+                    collectedAlerts.add(index, map.get(key).toString());
+                }
+            }
+        }
         return collectedAlerts;
     }
 
@@ -1069,11 +1010,6 @@
      * @see #getWebWindowOf(HtmlUnitDriver)
      */
     protected HtmlElement toHtmlElement(final WebElement webElement) {
-        if (webElement instanceof RemoteWebElement) {
-            throw new RuntimeException(
-                        "WebDriverTestCase.toHtmlElement(WebElement) does not work for RemoteWebElement's");
-        }
-
         try {
             final Field field = HtmlUnitWebElement.class.getDeclaredField("element");
             field.setAccessible(true);
@@ -1091,9 +1027,7 @@
     @Before
     public void before() {
         if (!isWebClientCached()) {
-            final List<Thread> jsThreads = getJavaScriptThreads();
-            assertEquals("There are still " + jsThreads.size()
-                            + " JS threads running before starting the test", 0, jsThreads.size());
+            assertEquals(0, getJavaScriptThreads().size());
         }
     }
 
@@ -1107,48 +1041,12 @@
         super.releaseResources();
 
         if (!isWebClientCached()) {
-            if (webDriver_ != null) {
-                webDriver_.quit();
+            if (webClient_ != null) {
+                webClient_.close();
+                webClient_.getCookieManager().clearCookies();
             }
-//            if (webClient_ != null) {
-//                webClient_.close();
-//                webClient_.getCookieManager().clearCookies();
-//            }
-//            webClient_ = null;
-
-            List<Thread> jsThreads = getJavaScriptThreads();
-
-            if (jsThreads.size() > 0) {
-                LOG.error("There are still " + jsThreads.size()
-                            + " JS threads running after the test; we will wait a bit");
-                for (Thread thread : jsThreads) {

@@ Diff output truncated at 100000 characters. @@

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
HtmlUnit-develop mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/htmlunit-develop