[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