[HtmlUnit] SVN: [15559] trunk/htmlunit/src

rbri--- via HtmlUnit-develop <[email protected]> Thu, 30 Aug 2018 19:28:18 +0000
Newsgroups gmane.comp.java.htmlunit.devel
Message-ID <[email protected]>
Revision: 15559
          http://sourceforge.net/p/htmlunit/code/15559
Author:   rbri
Date:     2018-08-30 19:28:16 +0000 (Thu, 30 Aug 2018)
Log Message:
-----------
another cleanup step

Modified Paths:
--------------
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/ScriptResult.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomElement.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlRadioButtonInput.java
    trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/event/EventTarget.java
    trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElement2Test.java

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/ScriptResult.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/ScriptResult.java	2018-08-30 17:34:53 UTC (rev 15558)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/ScriptResult.java	2018-08-30 19:28:16 UTC (rev 15559)
@@ -27,18 +27,13 @@
     /** The object that was returned from the script engine. */
     private final Object javaScriptResult_;
 
-    /** The page that is currently loaded at the end of the script execution. */
-    private final Page newPage_;
-
     /**
      * Creates a new instance.
      *
      * @param javaScriptResult the object that was returned from the script engine
-     * @param newPage the page that is currently loaded at the end of the script execution
      */
-    public ScriptResult(final Object javaScriptResult, final Page newPage) {
+    public ScriptResult(final Object javaScriptResult) {
         javaScriptResult_ = javaScriptResult;
-        newPage_ = newPage;
     }
 
     /**
@@ -50,19 +45,11 @@
     }
 
     /**
-     * Returns the page that is loaded at the end of the script execution.
-     * @return the new page
-     */
-    public Page getNewPage() {
-        return newPage_;
-    }
-
-    /**
      * {@inheritDoc}
      */
     @Override
     public String toString() {
-        return "ScriptResult[result=" + javaScriptResult_ + " page=" + newPage_ + "]";
+        return "ScriptResult[result=" + javaScriptResult_ + "]";
     }
 
     /**

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomElement.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomElement.java	2018-08-30 17:34:53 UTC (rev 15558)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomElement.java	2018-08-30 19:28:16 UTC (rev 15559)
@@ -1150,7 +1150,7 @@
         if (scriptResult == null) {
             return clickPage;
         }
-        return (P) scriptResult.getNewPage();
+        return (P) getPage().getWebClient().getCurrentWindow().getEnclosedPage();
     }
 
     /**
@@ -1359,7 +1359,7 @@
             currentPage = page;
         }
         else {
-            currentPage = scriptResult.getNewPage();
+            currentPage = page.getWebClient().getCurrentWindow().getEnclosedPage();
         }
 
         final boolean mouseOver = !MouseEvent.TYPE_MOUSE_OUT.equals(eventType);

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java	2018-08-30 17:34:53 UTC (rev 15558)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlForm.java	2018-08-30 19:28:16 UTC (rev 15559)
@@ -125,13 +125,14 @@
                     if (scriptResult == null) {
                         return htmlPage;
                     }
-                    return scriptResult.getNewPage();
+                    return htmlPage.getWebClient().getCurrentWindow().getEnclosedPage();
                 }
             }
 
             final String action = getActionAttribute().trim();
             if (StringUtils.startsWithIgnoreCase(action, JavaScriptURLConnection.JAVASCRIPT_PREFIX)) {
-                return htmlPage.executeJavaScript(action, "Form action", getStartLineNumber()).getNewPage();
+                htmlPage.executeJavaScript(action, "Form action", getStartLineNumber());
+                return htmlPage.getWebClient().getCurrentWindow().getEnclosedPage();
             }
         }
         else {
@@ -377,7 +378,7 @@
         final SgmlPage htmlPage = getPage();
         final ScriptResult scriptResult = fireEvent(Event.TYPE_RESET);
         if (ScriptResult.isFalse(scriptResult)) {
-            return scriptResult.getNewPage();
+            return htmlPage.getWebClient().getCurrentWindow().getEnclosedPage();
         }
 
         for (final HtmlElement next : getHtmlElementDescendants()) {

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java	2018-08-30 17:34:53 UTC (rev 15558)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlInput.java	2018-08-30 19:28:16 UTC (rev 15559)
@@ -530,7 +530,7 @@
 
         if (scriptResult != null) {
             // current window doesn't exist anymore
-            return scriptResult.getNewPage();
+            return page.getWebClient().getCurrentWindow().getEnclosedPage();
         }
 
         return page;

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java	2018-08-30 17:34:53 UTC (rev 15558)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java	2018-08-30 19:28:16 UTC (rev 15559)
@@ -909,7 +909,7 @@
      */
     public ScriptResult executeJavaScript(String sourceCode, final String sourceName, final int startLine) {
         if (!getWebClient().getOptions().isJavaScriptEnabled()) {
-            return new ScriptResult(Undefined.instance, this);
+            return new ScriptResult(Undefined.instance);
         }
 
         if (StringUtils.startsWithIgnoreCase(sourceCode, JavaScriptURLConnection.JAVASCRIPT_PREFIX)) {
@@ -920,7 +920,7 @@
         }
 
         final Object result = getWebClient().getJavaScriptEngine().execute(this, sourceCode, sourceName, startLine);
-        return new ScriptResult(result, getWebClient().getCurrentWindow().getEnclosedPage());
+        return new ScriptResult(result);
     }
 
     /** Various possible external JavaScript file loading results. */
@@ -2505,7 +2505,7 @@
     public ScriptResult executeJavaScriptFunction(final Object function, final Object thisObject,
             final Object[] args, final DomNode htmlElementScope) {
         if (!getWebClient().getOptions().isJavaScriptEnabled()) {
-            return new ScriptResult(null, this);
+            return new ScriptResult(null);
         }
 
         return executeJavaScriptFunction((Function) function, (Scriptable) thisObject, args, htmlElementScope);
@@ -2517,7 +2517,7 @@
         final JavaScriptEngine engine = (JavaScriptEngine) getWebClient().getJavaScriptEngine();
         final Object result = engine.callFunction(this, function, thisObject, args, htmlElementScope);
 
-        return new ScriptResult(result, getWebClient().getCurrentWindow().getEnclosedPage());
+        return new ScriptResult(result);
     }
 
     private void writeObject(final ObjectOutputStream oos) throws IOException {

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlRadioButtonInput.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlRadioButtonInput.java	2018-08-30 17:34:53 UTC (rev 15558)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlRadioButtonInput.java	2018-08-30 19:28:16 UTC (rev 15559)
@@ -143,7 +143,7 @@
         if (changed) {
             final ScriptResult scriptResult = fireEvent(Event.TYPE_CHANGE);
             if (scriptResult != null) {
-                page = scriptResult.getNewPage();
+                page = page.getEnclosingWindow().getWebClient().getCurrentWindow().getEnclosedPage();
             }
         }
         return page;

Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/event/EventTarget.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/event/EventTarget.java	2018-08-30 17:34:53 UTC (rev 15558)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/event/EventTarget.java	2018-08-30 19:28:16 UTC (rev 15559)
@@ -111,18 +111,7 @@
      * @return the result
      */
     public ScriptResult fireEvent(final Event event) {
-        fireEventImpl(event);
-        // This is deprecated but there're still a few places using ScriptResult.getNewPage()
-        return new ScriptResult(null, getWindow().getWebWindow().getWebClient().getCurrentWindow().getEnclosedPage());
-    }
-
-    /**
-     * Fires the event on the node with capturing and bubbling phase.
-     * @param event the event
-     */
-    private void fireEventImpl(final Event event) {
         final Window window = getWindow();
-        final Object[] args = new Object[] {event};
 
         event.startFire();
         final Event previousEvent = window.getCurrentEvent();
@@ -146,7 +135,7 @@
                 propagationPath.add(parent.getScriptableObject());
             }
 
-            // The load event has some unnatural behaviour that we need to handle specially
+            // The load event has some unnatural behavior that we need to handle specially
             if (Event.TYPE_LOAD.equals(event.getType())) {
                 // The load event for other elements target that element and but path only
                 // up to Document and not Window, so do nothing here
@@ -166,9 +155,9 @@
                 final EventTarget jsNode = propagationPath.get(i);
                 final EventListenersContainer elc = jsNode.eventListenersContainer_;
                 if (elc != null) {
-                    elc.executeCapturingListeners(event, args);
+                    elc.executeCapturingListeners(event, new Object[] {event});
                     if (event.isPropagationStopped()) {
-                        return;
+                        return new ScriptResult(null);
                     }
                 }
             }
@@ -182,24 +171,13 @@
                 final EventTarget jsNode = propagationPath.get(0);
                 final EventListenersContainer elc = jsNode.eventListenersContainer_;
                 if (elc != null) {
-                    elc.executeAtTargetListeners(event, args);
+                    elc.executeAtTargetListeners(event, new Object[] {event});
                     if (event.isPropagationStopped()) {
-                        return;
+                        return new ScriptResult(null);
                     }
                 }
             }
 
-            // Refactoring note: This should probably be done further down
-            HtmlLabel label = null;
-            if (event.processLabelAfterBubbling()) {
-                for (DomNode parent = ourParentNode; parent != null; parent = parent.getParentNode()) {
-                    if (parent instanceof HtmlLabel) {
-                        label = (HtmlLabel) parent;
-                        break;
-                    }
-                }
-            }
-
             // bubbling phase
             if (event.isBubbles()) {
                 // This belongs here inside the block because events that don't bubble never set
@@ -210,14 +188,24 @@
                     final EventTarget jsNode = propagationPath.get(i);
                     final EventListenersContainer elc = jsNode.eventListenersContainer_;
                     if (elc != null) {
-                        elc.executeBubblingListeners(event, args);
+                        elc.executeBubblingListeners(event, new Object[] {event});
                         if (event.isPropagationStopped()) {
-                            return;
+                            return new ScriptResult(null);
                         }
                     }
                 }
             }
 
+            HtmlLabel label = null;
+            if (event.processLabelAfterBubbling()) {
+                for (DomNode parent = ourParentNode; parent != null; parent = parent.getParentNode()) {
+                    if (parent instanceof HtmlLabel) {
+                        label = (HtmlLabel) parent;
+                        break;
+                    }
+                }
+            }
+
             if (label != null) {
                 final HtmlElement element = label.getReferencedElement();
                 if (element != null && element != getDomNodeOrNull()) {
@@ -235,6 +223,8 @@
             event.endFire();
             window.setCurrentEvent(previousEvent); // reset event
         }
+
+        return new ScriptResult(null);
     }
 
     /**

Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElement2Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElement2Test.java	2018-08-30 17:34:53 UTC (rev 15558)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFormElement2Test.java	2018-08-30 19:28:16 UTC (rev 15559)
@@ -64,8 +64,8 @@
         getMockWebConnection().setDefaultResponse(secondContent);
         final HtmlPage page = loadPageWithAlerts(html);
 
-        final HtmlPage secondPage =
-            (HtmlPage) page.executeJavaScript("document.form1.submit()").getNewPage();
+        page.executeJavaScript("document.form1.submit()");
+        final HtmlPage secondPage = (HtmlPage) getWebClient().getCurrentWindow().getEnclosedPage();
         assertEquals("second", secondPage.getTitleText());
     }
 
@@ -87,7 +87,8 @@
         final List<String> collectedAlerts = new ArrayList<>();
 
         final HtmlPage page1 = loadPage(html, collectedAlerts);
-        final HtmlPage page2 = (HtmlPage) page1.executeJavaScript("document.form1.submit()").getNewPage();
+        page1.executeJavaScript("document.form1.submit()");
+        final HtmlPage page2 = (HtmlPage) getWebClient().getCurrentWindow().getEnclosedPage();
 
         assertEquals(page1, page2);
         assertEquals(getExpectedAlerts(), collectedAlerts);
@@ -111,7 +112,8 @@
         final List<String> collectedAlerts = new ArrayList<>();
 
         final HtmlPage page1 = loadPage(html, collectedAlerts);
-        final HtmlPage page2 = (HtmlPage) page1.executeJavaScript("document.form1.submit()").getNewPage();
+        page1.executeJavaScript("document.form1.submit()");
+        final HtmlPage page2 = (HtmlPage) getWebClient().getCurrentWindow().getEnclosedPage();
 
         assertEquals(page1, page2);
         assertEquals(getExpectedAlerts(), collectedAlerts);
@@ -135,7 +137,8 @@
         final List<String> collectedAlerts = new ArrayList<>();
 
         final HtmlPage page1 = loadPage(html, collectedAlerts);
-        final HtmlPage page2 = (HtmlPage) page1.executeJavaScript("document.form1.submit()").getNewPage();
+        page1.executeJavaScript("document.form1.submit()");
+        final HtmlPage page2 = (HtmlPage) getWebClient().getCurrentWindow().getEnclosedPage();
 
         assertEquals(page1, page2);
         assertEquals(getExpectedAlerts(), collectedAlerts);
@@ -183,8 +186,9 @@
 
         final HtmlPage page = loadPageWithAlerts(html);
 
-        final HtmlPage secondPage
-            = (HtmlPage) page.executeJavaScript("document.form1.submit()").getNewPage();
+        page.executeJavaScript("document.form1.submit()");
+        final HtmlPage secondPage = (HtmlPage) getWebClient().getCurrentWindow().getEnclosedPage();
+
         assertEquals("second", secondPage.getTitleText());
         assertEquals("MyNewWindow", secondPage.getEnclosingWindow().getName());
     }


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot