|
From: <asa...@us...> - 2012-11-05 08:17:43
|
Revision: 7682
http://sourceforge.net/p/htmlunit/code/7682
Author: asashour
Date: 2012-11-05 08:17:40 +0000 (Mon, 05 Nov 2012)
Log Message:
-----------
JavaScript: remove unneeded global properties (FF).
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-05 06:37:03 UTC (rev 7681)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-05 08:17:40 UTC (rev 7682)
@@ -8,6 +8,9 @@
<body>
<release version="2.11" date="???" description="Bugfixes, Java 6, HtmlPage.getElementById(), .type() special keys, initial WebSocket support, initial SVG support, primitive Geolocation support, SOCKS proxy for https, CORS">
+ <action type="fix" dev="asashour">
+ JavaScript: remove unneeded global properties (FF).
+ </action>
<action type="add" dev="asashour" issue="1420">
JavaScript: implement "constructor" property of all host objects (FF).
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-05 06:37:03 UTC (rev 7681)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-05 08:17:40 UTC (rev 7682)
@@ -290,10 +290,6 @@
/** Was originally .isIE(). */
@BrowserFeature(@WebBrowser(IE))
- GENERATED_144,
-
- /** Was originally .isIE(). */
- @BrowserFeature(@WebBrowser(IE))
GENERATED_150,
/** Was originally .isFirefox(). */
@@ -1038,6 +1034,10 @@
@BrowserFeature(@WebBrowser(IE))
JS_WINDOW_IS_NOT_A_FUNCTION,
+ /** Supports XML. */
+ @BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME) })
+ JS_XML,
+
/** Indicates that a xml attribute supports the text property. */
@BrowserFeature(@WebBrowser(IE))
JS_XML_ATTRIBUTE_HAS_TEXT_PROPERTY,
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java 2012-11-05 06:37:03 UTC (rev 7681)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine.java 2012-11-05 08:17:40 UTC (rev 7682)
@@ -14,7 +14,6 @@
*/
package com.gargoylesoftware.htmlunit.javascript;
-import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_144;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_ALLOW_CONST_ASSIGNMENT;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_CONSTRUCTOR;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_DEFINE_GETTER;
@@ -23,6 +22,7 @@
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_FUNCTION_BIND;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_FUNCTION_TOSOURCE;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_HAS_OBJECT_WITH_PROTOTYPE_PROPERTY_IN_WINDOW_SCOPE;
+import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_XML;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.STRING_TRIM;
import java.io.IOException;
@@ -197,9 +197,10 @@
}
// remove some objects, that Rhino defines in top scope but that we don't want
- deleteProperties(window, "javax", "org", "com", "edu", "net", "JavaAdapter", "JavaImporter", "Continuation");
- if (browserVersion.hasFeature(GENERATED_144)) {
- deleteProperties(window, "Packages", "java", "getClass", "XML", "XMLList", "Namespace", "QName");
+ deleteProperties(window, "java", "javax", "org", "com", "edu", "net",
+ "JavaAdapter", "JavaImporter", "Continuation", "Packages", "getClass");
+ if (!browserVersion.hasFeature(JS_XML)) {
+ deleteProperties(window, "XML", "XMLList", "Namespace", "QName");
}
// put custom object to be called as very last prototype to call the fallback getter (if any)
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java 2012-11-05 06:37:03 UTC (rev 7681)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java 2012-11-05 08:17:40 UTC (rev 7682)
@@ -200,4 +200,45 @@
loadPageWithAlerts2(html);
}
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("exception")
+ public void packages() throws Exception {
+ object("Packages");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("exception")
+ public void java() throws Exception {
+ object("java");
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("undefined")
+ public void object_getClass() throws Exception {
+ object("window.getClass");
+ }
+
+ private void object(final String object) throws Exception {
+ final String html = "<html><head></head><body>\n"
+ + "<script>\n"
+ + "try {\n"
+ + " alert(" + object + ");\n"
+ + "} catch (e) {\n"
+ + " alert('exception');\n"
+ + "}\n"
+ + "</script>\n"
+ + "</body></html>";
+
+ loadPageWithAlerts2(html);
+ }
}
|
|
From: <rb...@us...> - 2012-11-05 18:54:42
|
Revision: 7690
http://sourceforge.net/p/htmlunit/code/7690
Author: rbri
Date: 2012-11-05 18:54:39 +0000 (Mon, 05 Nov 2012)
Log Message:
-----------
code cleanup and allow self closing for fragment parsing
Modified Paths:
--------------
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2012-11-05 12:28:32 UTC (rev 7689)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2012-11-05 18:54:39 UTC (rev 7690)
@@ -151,6 +151,7 @@
ancestors.add(1, new QName(null, "body", null, null));
}
+ domBuilder.setFeature(HTMLScanner.ALLOW_SELFCLOSING_TAGS, true);
domBuilder.setProperty(HTMLTagBalancer.FRAGMENT_CONTEXT_STACK, ancestors.toArray(new QName[] {}));
final XMLInputSource in = new XMLInputSource(null, url.toString(), null, new StringReader(source), null);
@@ -257,7 +258,7 @@
private static void addBodyToPageIfNecessary(
final HtmlPage page, final boolean originalCall, final boolean checkInsideFrameOnly) {
// IE waits for the whole page to load before initializing bodies for frames.
- final boolean waitToLoad = page.getWebClient().getBrowserVersion().hasFeature(PAGE_WAIT_LOAD_BEFORE_BODY);
+ final boolean waitToLoad = page.hasFeature(PAGE_WAIT_LOAD_BEFORE_BODY);
if (page.getEnclosingWindow() instanceof FrameWindow && originalCall && waitToLoad) {
return;
}
@@ -341,7 +342,7 @@
|| !qualifiedName.contains(":") || namespaceURI.equals(XHTML_NAMESPACE)) {
if (SVG_NAMESPACE.equals(namespaceURI)
- && page.getWebClient().getBrowserVersion().hasFeature(SVG)) {
+ && page.hasFeature(SVG)) {
return SVG_FACTORY;
}
@@ -499,7 +500,7 @@
return;
}
- if (parsingInnerHead_ && page_.getWebClient().getBrowserVersion().hasFeature(
+ if (parsingInnerHead_ && page_.hasFeature(
IGNORE_CONTENTS_OF_INNER_HEAD)) {
return;
}
@@ -600,8 +601,7 @@
if ("head".equals(tagLower)) {
parsingInnerHead_ = false;
}
- if ("head".equals(tagLower) || page_.getWebClient().getBrowserVersion().hasFeature(
- IGNORE_CONTENTS_OF_INNER_HEAD)) {
+ if ("head".equals(tagLower) || page_.hasFeature(IGNORE_CONTENTS_OF_INNER_HEAD)) {
return;
}
}
@@ -629,7 +629,7 @@
/** {@inheritDoc} */
public void characters(final char[] ch, final int start, final int length) throws SAXException {
if ((characters_ == null || characters_.length() == 0)
- && page_.getWebClient().getBrowserVersion().hasFeature(HTMLPARSER_REMOVE_EMPTY_CONTENT)
+ && page_.hasFeature(HTMLPARSER_REMOVE_EMPTY_CONTENT)
&& StringUtils.isBlank(new String(ch, start, length))) {
DomNode node = currentNode_.getLastChild();
@@ -743,7 +743,7 @@
handleCharacters();
final String data = new String(ch, start, length);
if (!data.startsWith("[CDATA")
- || !page_.getWebClient().getBrowserVersion().hasFeature(GENERATED_3)) {
+ || !page_.hasFeature(GENERATED_3)) {
final DomComment comment = new DomComment(page_, data);
currentNode_.appendChild(comment);
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-05 12:28:32 UTC (rev 7689)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-05 18:54:39 UTC (rev 7690)
@@ -995,7 +995,6 @@
CHROME = { "Old = <span id=\"innerNode\">Old outerHTML</span>", "New = <div></div><div></div>" },
FF = { "Old = <span id=\"innerNode\">Old outerHTML</span>",
"New = <span id=\"innerNode\">Old outerHTML</span>" })
- @NotYetImplemented(IE)
public void setOuterHTMLAddMultipleSelfClosingBlock() throws Exception {
final String html = createPageForSetOuterHTML("div", "<div/><div>");
loadPageWithAlerts2(html);
|
|
From: <asa...@us...> - 2012-11-06 08:20:06
|
Revision: 7695
http://sourceforge.net/p/htmlunit/code/7695
Author: asashour
Date: 2012-11-06 08:19:59 +0000 (Tue, 06 Nov 2012)
Log Message:
-----------
Cookie: remove deprecated (String name, String value) constructor.
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/util/Cookie.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-06 07:27:05 UTC (rev 7694)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-06 08:19:59 UTC (rev 7695)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="remove" dev="asashour">
+ Cookie: remove deprecated (String name, String value) constructor.
+ </action>
</release>
<release version="2.11" date="Nov 6, 2012" description="Bugfixes, Java 6, HtmlPage.getElementById(), .type() special keys, initial WebSocket support, initial SVG support, primitive Geolocation support, SOCKS proxy for https, CORS">
<action type="update" dev="mguillem">
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/util/Cookie.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/util/Cookie.java 2012-11-06 07:27:05 UTC (rev 7694)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/util/Cookie.java 2012-11-06 08:19:59 UTC (rev 7695)
@@ -57,18 +57,6 @@
private final boolean httponly_;
/**
- * Creates a new cookie with the specified name and value. The new cookie applies to all
- * domains and all paths, never expires and is not secure.
- * @param name the cookie name
- * @param value the cookie name
- * @deprecated as of 2.10, specify the domain
- */
- @Deprecated
- public Cookie(final String name, final String value) {
- this(null, name, value);
- }
-
- /**
* Creates a new cookie with the specified name and value which applies to the specified domain.
* The new cookie applies to all paths, never expires and is not secure.
* @param domain the domain to which this cookie applies
|
|
From: <asa...@us...> - 2012-11-09 11:07:43
|
Revision: 7704
http://sourceforge.net/p/htmlunit/code/7704
Author: asashour
Date: 2012-11-09 11:07:39 +0000 (Fri, 09 Nov 2012)
Log Message:
-----------
JavaScript: implement "dataset" property (FF).
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
Added Paths:
-----------
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMStringMap.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-09 06:35:04 UTC (rev 7703)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-09 11:07:39 UTC (rev 7704)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="add" dev="asashour">
+ JavaScript: implement "dataset" property (FF).
+ </action>
<action type="remove" dev="asashour" issue="1420">
JavaScript: remove "constructor" property of host objects (IE).
</action>
Added: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMStringMap.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMStringMap.java (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMStringMap.java 2012-11-09 11:07:39 UTC (rev 7704)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2002-2012 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 com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+
+/**
+ * A JavaScript object for DOMStringMap.
+ *
+ * @version $Revision$
+ * @author Ahmed Ashour
+ */
+@JsxClass
+public final class DOMStringMap extends SimpleScriptable {
+
+ /**
+ * Creates an instance. JavaScript objects must have a default constructor.
+ */
+ public DOMStringMap() {
+ }
+
+ /**
+ * Creates an instance.
+ * @param node the node which contains the underlying string
+ */
+ public DOMStringMap(final Node node) {
+ setDomNode(node.getDomNodeOrDie(), false);
+ setParentScope(node.getParentScope());
+ setPrototype(getPrototype(getClass()));
+ }
+
+}
Property changes on: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMStringMap.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-09 06:35:04 UTC (rev 7703)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-09 11:07:39 UTC (rev 7704)
@@ -101,6 +101,7 @@
import com.gargoylesoftware.htmlunit.javascript.host.Attr;
import com.gargoylesoftware.htmlunit.javascript.host.BoxObject;
import com.gargoylesoftware.htmlunit.javascript.host.ClientRect;
+import com.gargoylesoftware.htmlunit.javascript.host.DOMStringMap;
import com.gargoylesoftware.htmlunit.javascript.host.DOMTokenList;
import com.gargoylesoftware.htmlunit.javascript.host.Element;
import com.gargoylesoftware.htmlunit.javascript.host.Event;
@@ -2797,4 +2798,14 @@
public Element getParentElement() {
return super.getParentElement();
}
+
+ /**
+ * Returns the "dataset" attribute.
+ * @return the "dataset" attribute
+ */
+ @JsxGetter({ @WebBrowser(value = FF, minVersion = 10), @WebBrowser(CHROME) })
+ public DOMStringMap getDataset() {
+ return new DOMStringMap(this);
+ }
+
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-09 06:35:04 UTC (rev 7703)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-09 11:07:39 UTC (rev 7704)
@@ -2536,4 +2536,24 @@
loadPageWithAlerts2(html);
}
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = "undefined", FF3_6 = "undefined", DEFAULT = "[object DOMStringMap]")
+ public void dataset() throws Exception {
+ final String html
+ = "<html><head>\n"
+ + "<script>\n"
+ + " function test() {\n"
+ + " alert(document.body.dataset);\n"
+ + " }\n"
+ + "</script>\n"
+ + "</head>\n"
+ + "<body onload='test()'>\n"
+ + "</body></html>";
+
+ loadPageWithAlerts2(html);
+ }
}
|
|
From: <asa...@us...> - 2012-11-09 11:12:27
|
Revision: 7705
http://sourceforge.net/p/htmlunit/code/7705
Author: asashour
Date: 2012-11-09 11:12:24 +0000 (Fri, 09 Nov 2012)
Log Message:
-----------
JS host classes: move "dom" to a separate package
Modified Paths:
--------------
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Document.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java
Added Paths:
-----------
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMException.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMImplementation.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMParser.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMap.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenList.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/package.html
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMExceptionTest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMImplementationTest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMParserTest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenListTest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/package.html
Removed Paths:
-------------
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMException.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMImplementation.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMParser.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMStringMap.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMTokenList.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DOMExceptionTest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DOMImplementationTest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DOMParserTest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DOMTokenListTest.java
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 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -38,10 +38,6 @@
import com.gargoylesoftware.htmlunit.javascript.host.ClipboardData;
import com.gargoylesoftware.htmlunit.javascript.host.Comment;
import com.gargoylesoftware.htmlunit.javascript.host.Console;
-import com.gargoylesoftware.htmlunit.javascript.host.DOMException;
-import com.gargoylesoftware.htmlunit.javascript.host.DOMImplementation;
-import com.gargoylesoftware.htmlunit.javascript.host.DOMParser;
-import com.gargoylesoftware.htmlunit.javascript.host.DOMTokenList;
import com.gargoylesoftware.htmlunit.javascript.host.Document;
import com.gargoylesoftware.htmlunit.javascript.host.DocumentFragment;
import com.gargoylesoftware.htmlunit.javascript.host.DocumentType;
@@ -117,6 +113,10 @@
import com.gargoylesoftware.htmlunit.javascript.host.css.CSSValue;
import com.gargoylesoftware.htmlunit.javascript.host.css.ComputedCSSStyleDeclaration;
import com.gargoylesoftware.htmlunit.javascript.host.css.StyleSheetList;
+import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMException;
+import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMImplementation;
+import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMParser;
+import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMTokenList;
import com.gargoylesoftware.htmlunit.javascript.host.geo.Coordinates;
import com.gargoylesoftware.htmlunit.javascript.host.geo.Geolocation;
import com.gargoylesoftware.htmlunit.javascript.host.geo.Position;
Deleted: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMException.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMException.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMException.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 2002-2012 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.FF;
-import net.sourceforge.htmlunit.corejs.javascript.Context;
-
-import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstant;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxGetter;
-import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
-
-/**
- * Exception for DOM manipulations.
- *
- * @see <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-17189187">
- * DOM-Level-2-Core</a>
- * @version $Revision$
- * @author Marc Guillemot
- */
-@JsxClass(browsers = @WebBrowser(FF))
-public class DOMException extends SimpleScriptable {
- /** If the specified range of text does not fit into a DOMString. */
- @JsxConstant
- public static final short DOMSTRING_SIZE_ERR = org.w3c.dom.DOMException.DOMSTRING_SIZE_ERR;
- /** If any node is inserted somewhere it doesn't belong. */
- @JsxConstant
- public static final short HIERARCHY_REQUEST_ERR = org.w3c.dom.DOMException.HIERARCHY_REQUEST_ERR;
- /** If index or size is negative, or greater than the allowed value. */
- @JsxConstant
- public static final short INDEX_SIZE_ERR = org.w3c.dom.DOMException.INDEX_SIZE_ERR;
- /** If an attempt is made to add an attribute that is already in use elsewhere. */
- @JsxConstant
- public static final short INUSE_ATTRIBUTE_ERR = org.w3c.dom.DOMException.INUSE_ATTRIBUTE_ERR;
- /** If a parameter or an operation is not supported by the underlying object. */
- @JsxConstant
- public static final short INVALID_ACCESS_ERR = org.w3c.dom.DOMException.INVALID_ACCESS_ERR;
- /** If an invalid or illegal character is specified, such as in a name. */
- @JsxConstant
- public static final short INVALID_CHARACTER_ERR = org.w3c.dom.DOMException.INVALID_CHARACTER_ERR;
- /** If an attempt is made to modify the type of the underlying object. */
- @JsxConstant
- public static final short INVALID_MODIFICATION_ERR = org.w3c.dom.DOMException.INVALID_MODIFICATION_ERR;
- /** If an attempt is made to use an object that is not, or is no longer, usable. */
- @JsxConstant
- public static final short INVALID_STATE_ERR = org.w3c.dom.DOMException.INVALID_STATE_ERR;
- /** If an attempt is made to create or change an object in a way which is incorrect with regard to namespaces. */
- @JsxConstant
- public static final short NAMESPACE_ERR = org.w3c.dom.DOMException.NAMESPACE_ERR;
- /** If data is specified for a node which does not support data. */
- @JsxConstant
- public static final short NO_DATA_ALLOWED_ERR = org.w3c.dom.DOMException.NO_DATA_ALLOWED_ERR;
- /** If an attempt is made to modify an object where modifications are not allowed. */
- @JsxConstant
- public static final short NO_MODIFICATION_ALLOWED_ERR = org.w3c.dom.DOMException.NO_MODIFICATION_ALLOWED_ERR;
- /** If an attempt is made to reference a node in a context where it does not exist. */
- @JsxConstant
- public static final short NOT_FOUND_ERR = org.w3c.dom.DOMException.NOT_FOUND_ERR;
- /** If the implementation does not support the requested type of object or operation. */
- @JsxConstant
- public static final short NOT_SUPPORTED_ERR = org.w3c.dom.DOMException.NOT_SUPPORTED_ERR;
- /** If an invalid or illegal string is specified. */
- @JsxConstant
- public static final short SYNTAX_ERR = org.w3c.dom.DOMException.SYNTAX_ERR;
- /** If a node is used in a different document than the one that created it (that doesn't support it). */
- @JsxConstant
- public static final short WRONG_DOCUMENT_ERR = org.w3c.dom.DOMException.WRONG_DOCUMENT_ERR;
-
- private final short code_;
- private final String message_;
- private int lineNumber_;
- private String fileName_;
-
- /**
- * Default constructor used to build the prototype.
- */
- public DOMException() {
- code_ = -1;
- message_ = null;
- }
-
- /**
- * Constructor.
- * @param message the exception message
- * @param errorCode the error code
- */
- public DOMException(final String message, final short errorCode) {
- code_ = errorCode;
- message_ = message;
- }
-
- /**
- * Gets the exception code.
- * @return the exception code
- */
- @JsxGetter
- public Object getCode() {
- if (code_ == -1) {
- return Context.getUndefinedValue();
- }
- return code_;
- }
-
- /**
- * Gets the exception message.
- * @return the exception message
- */
- @JsxGetter
- public Object getMessage() {
- if (message_ == null) {
- return Context.getUndefinedValue();
- }
- return message_;
- }
-
- /**
- * Gets the line at which the exception occurred.
- * @return the line of the exception
- */
- @JsxGetter
- public Object getLineNumber() {
- if (lineNumber_ == -1) {
- return Context.getUndefinedValue();
- }
- return lineNumber_;
- }
-
- /**
- * Gets the name of the in which the exception occurred.
- * @return the name of the source file
- */
- @JsxGetter
- public Object getFilename() {
- if (fileName_ == null) {
- return Context.getUndefinedValue();
- }
- return fileName_;
- }
-
- /**
- * Sets the location in JavaScript source where this exception occurred.
- * @param fileName the name of the source file
- * @param lineNumber the line number
- */
- public void setLocation(final String fileName, final int lineNumber) {
- fileName_ = fileName;
- lineNumber_ = lineNumber;
- }
-}
Deleted: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMImplementation.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMImplementation.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMImplementation.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2002-2012 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.BrowserVersionFeatures.GENERATED_35;
-import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.FF;
-
-import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxFunction;
-import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
-import com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocument;
-import com.gargoylesoftware.htmlunit.xml.XmlPage;
-
-/**
- * A JavaScript object for DOMImplementation.
- *
- * @version $Revision$
- * @author Ahmed Ashour
- *
- * @see <a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-core.html#ID-102161490">
- * W3C Dom Level 1</a>
- */
-@JsxClass
-public class DOMImplementation extends SimpleScriptable {
-
- /**
- * Test if the DOM implementation implements a specific feature.
- * @param feature the name of the feature to test (case-insensitive)
- * @param version the version number of the feature to test
- * @return true if the feature is implemented in the specified version, false otherwise
- */
- @JsxFunction
- public boolean hasFeature(final String feature, final String version) {
- if (getBrowserVersion().hasFeature(GENERATED_35)) {
- if ("HTML".equals(feature) && "1.0".equals(version)) {
- return true;
- }
- }
- else {
- if ("HTML".equals(feature) && ("1.0".equals(version) || "2.0".equals(version))) {
- return true;
- }
- else if ("XML".equals(feature) && ("1.0".equals(version) || "2.0".equals(version))) {
- return true;
- }
- else if ("CSS2".equals(feature) && "2.0".equals(version)) {
- return true;
- }
- else if ("XPath".equals(feature) && "3.0".equals(version)) {
- return true;
- }
- //TODO: other features.
- }
- return false;
- }
-
- /**
- * Creates an {@link XMLDocument}.
- *
- * @param namespaceURI the URI that identifies an XML namespace
- * @param qualifiedName the qualified name of the document to instantiate
- * @param doctype the document types of the document
- * @return the newly created {@link XMLDocument}
- */
- //TODO: change doctype type to "DocType"
- @JsxFunction(@WebBrowser(FF))
- public XMLDocument createDocument(final String namespaceURI, final String qualifiedName,
- final Object doctype) {
- final XMLDocument document = new XMLDocument(getWindow().getWebWindow());
- document.setParentScope(getParentScope());
- document.setPrototype(getPrototype(document.getClass()));
- if (qualifiedName != null && !qualifiedName.isEmpty()) {
- final XmlPage page = document.getDomNodeOrDie();
- page.appendChild(page.createXmlElementNS(namespaceURI, qualifiedName));
- }
- return document;
- }
-}
Deleted: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMParser.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMParser.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMParser.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2002-2012 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.FF;
-
-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.JsxFunction;
-import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
-import com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocument;
-
-/**
- * A JavaScript object for DOMParser.
- *
- * @version $Revision$
- * @author Ahmed Ashour
- *
- * @see <a href="http://www.xulplanet.com/references/objref/DOMParser.html">XUL Planet</a>
- */
-@JsxClass(browsers = @WebBrowser(FF))
-public class DOMParser extends SimpleScriptable {
-
- /**
- * JavaScript constructor.
- */
- @JsxConstructor
- public void jsConstructor() {
- // Empty.
- }
-
- /**
- * The string passed in is parsed into a DOM document.
- * @param str the UTF16 string to be parsed
- * @param contentType the content type of the string -
- * either <tt>text/xml</tt>, <tt>application/xml</tt>, or <tt>application/xhtml+xml</tt>. Must not be NULL.
- * @return the generated document
- */
- @JsxFunction
- public XMLDocument parseFromString(final String str, final String contentType) {
- final XMLDocument document = new XMLDocument();
- document.setParentScope(getParentScope());
- document.setPrototype(getPrototype(XMLDocument.class));
- document.loadXML(str);
- return document;
- }
-}
Deleted: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMStringMap.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMStringMap.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMStringMap.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2002-2012 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 com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
-
-/**
- * A JavaScript object for DOMStringMap.
- *
- * @version $Revision$
- * @author Ahmed Ashour
- */
-@JsxClass
-public final class DOMStringMap extends SimpleScriptable {
-
- /**
- * Creates an instance. JavaScript objects must have a default constructor.
- */
- public DOMStringMap() {
- }
-
- /**
- * Creates an instance.
- * @param node the node which contains the underlying string
- */
- public DOMStringMap(final Node node) {
- setDomNode(node.getDomNodeOrDie(), false);
- setParentScope(node.getParentScope());
- setPrototype(getPrototype(getClass()));
- }
-
-}
Deleted: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMTokenList.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMTokenList.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMTokenList.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -1,160 +0,0 @@
-/*
- * Copyright (c) 2002-2012 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 java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import com.gargoylesoftware.htmlunit.html.DomAttr;
-import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxFunction;
-import com.gargoylesoftware.htmlunit.javascript.configuration.JsxGetter;
-
-/**
- * A JavaScript object for DOMTokenList.
- *
- * @version $Revision$
- * @author Ahmed Ashour
- */
-@JsxClass
-public final class DOMTokenList extends SimpleScriptable {
-
- private String attributeName_;
-
- /**
- * Creates an instance. JavaScript objects must have a default constructor.
- */
- public DOMTokenList() {
- }
-
- /**
- * Creates an instance.
- * @param node the node which contains the underlying string
- * @param attributeName the attribute name of the DomElement of the specified node
- */
- public DOMTokenList(final Node node, final String attributeName) {
- setDomNode(node.getDomNodeOrDie(), false);
- setParentScope(node.getParentScope());
- setPrototype(getPrototype(getClass()));
- attributeName_ = attributeName;
- }
-
- /**
- * Returns the length property.
- * @return the length
- */
- @JsxGetter
- public int getLength() {
- final String value = getDefaultValue(null);
- return value.split(" ").length;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String getDefaultValue(final Class<?> hint) {
- final DomAttr attr = (DomAttr) getDomNodeOrDie().getAttributes().getNamedItem(attributeName_);
- if (attr != null) {
- final String value = attr.getValue();
- return value;
- }
- return "";
- }
-
- /**
- * Adds the specified token to the underlying string.
- * @param token the token to add
- */
- @JsxFunction
- public void add(final String token) {
- if (!contains(token)) {
- final DomAttr attr = (DomAttr) getDomNodeOrDie().getAttributes().getNamedItem(attributeName_);
- attr.setValue(attr.getValue() + ' ' + token);
- }
- }
-
- /**
- * Removes the specified token from the underlying string.
- * @param token the token to remove
- */
- @JsxFunction
- public void remove(final String token) {
- if (contains(token)) {
- final DomAttr attr = (DomAttr) getDomNodeOrDie().getAttributes().getNamedItem(attributeName_);
- if (attr != null) {
- final List<String> values = new ArrayList<String>(Arrays.asList(attr.getValue().split(" ")));
- values.remove(token);
- final StringBuilder builder = new StringBuilder();
- for (int i = 0; i < values.size(); i++) {
- builder.append(values.get(i));
- if (i < values.size() - 1) {
- builder.append(' ');
- }
- }
- attr.setValue(builder.toString());
- }
- }
- }
-
- /**
- * Toggle the token, by adding or removing.
- * @param token the token to add or remove
- * @return whether the string now contains the token or not
- */
- @JsxFunction
- public boolean toggle(final String token) {
- if (contains(token)) {
- remove(token);
- return false;
- }
- add(token);
- return true;
- }
-
- /**
- * Checks if the specified token is contained in the underlying string.
- * @param token the token to add
- * @return true if the underlying string contains token, otherwise false
- */
- @JsxFunction
- public boolean contains(final String token) {
- final DomAttr attr = (DomAttr) getDomNodeOrDie().getAttributes().getNamedItem(attributeName_);
- if (attr != null) {
- final List<String> values = Arrays.asList(attr.getValue().split(" "));
- return values.contains(token);
- }
- return false;
- }
-
- /**
- * Returns the item at the specified index.
- * @param index the index of the item
- * @return the item
- */
- @JsxFunction
- public Object item(final int index) {
- final DomAttr attr = (DomAttr) getDomNodeOrDie().getAttributes().getNamedItem(attributeName_);
- if (attr != null) {
- final List<String> values = Arrays.asList(attr.getValue().split(" "));
- if (index < values.size()) {
- return values.get(index);
- }
- }
- return null;
- }
-}
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Document.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Document.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Document.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -51,6 +51,7 @@
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.DOMImplementation;
import com.gargoylesoftware.htmlunit.javascript.host.html.HTMLCollection;
import com.gargoylesoftware.htmlunit.javascript.host.html.HTMLElement;
import com.gargoylesoftware.htmlunit.xml.XmlUtil;
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -36,6 +36,7 @@
import com.gargoylesoftware.htmlunit.javascript.configuration.JsxGetter;
import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
import com.gargoylesoftware.htmlunit.javascript.host.css.ComputedCSSStyleDeclaration;
+import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMTokenList;
import com.gargoylesoftware.htmlunit.javascript.host.html.HTMLCollection;
/**
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Node.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -56,6 +56,7 @@
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.DOMException;
import com.gargoylesoftware.htmlunit.javascript.host.html.HTMLHtmlElement;
import com.gargoylesoftware.htmlunit.javascript.host.xml.XMLSerializer;
import com.gargoylesoftware.htmlunit.xml.XmlPage;
Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMException.java (from rev 7691, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMException.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMException.java (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMException.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2002-2012 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.dom;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.FF;
+import net.sourceforge.htmlunit.corejs.javascript.Context;
+
+import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxConstant;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxGetter;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+
+/**
+ * Exception for DOM manipulations.
+ *
+ * @see <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-17189187">
+ * DOM-Level-2-Core</a>
+ * @version $Revision$
+ * @author Marc Guillemot
+ */
+@JsxClass(browsers = @WebBrowser(FF))
+public class DOMException extends SimpleScriptable {
+ /** If the specified range of text does not fit into a DOMString. */
+ @JsxConstant
+ public static final short DOMSTRING_SIZE_ERR = org.w3c.dom.DOMException.DOMSTRING_SIZE_ERR;
+ /** If any node is inserted somewhere it doesn't belong. */
+ @JsxConstant
+ public static final short HIERARCHY_REQUEST_ERR = org.w3c.dom.DOMException.HIERARCHY_REQUEST_ERR;
+ /** If index or size is negative, or greater than the allowed value. */
+ @JsxConstant
+ public static final short INDEX_SIZE_ERR = org.w3c.dom.DOMException.INDEX_SIZE_ERR;
+ /** If an attempt is made to add an attribute that is already in use elsewhere. */
+ @JsxConstant
+ public static final short INUSE_ATTRIBUTE_ERR = org.w3c.dom.DOMException.INUSE_ATTRIBUTE_ERR;
+ /** If a parameter or an operation is not supported by the underlying object. */
+ @JsxConstant
+ public static final short INVALID_ACCESS_ERR = org.w3c.dom.DOMException.INVALID_ACCESS_ERR;
+ /** If an invalid or illegal character is specified, such as in a name. */
+ @JsxConstant
+ public static final short INVALID_CHARACTER_ERR = org.w3c.dom.DOMException.INVALID_CHARACTER_ERR;
+ /** If an attempt is made to modify the type of the underlying object. */
+ @JsxConstant
+ public static final short INVALID_MODIFICATION_ERR = org.w3c.dom.DOMException.INVALID_MODIFICATION_ERR;
+ /** If an attempt is made to use an object that is not, or is no longer, usable. */
+ @JsxConstant
+ public static final short INVALID_STATE_ERR = org.w3c.dom.DOMException.INVALID_STATE_ERR;
+ /** If an attempt is made to create or change an object in a way which is incorrect with regard to namespaces. */
+ @JsxConstant
+ public static final short NAMESPACE_ERR = org.w3c.dom.DOMException.NAMESPACE_ERR;
+ /** If data is specified for a node which does not support data. */
+ @JsxConstant
+ public static final short NO_DATA_ALLOWED_ERR = org.w3c.dom.DOMException.NO_DATA_ALLOWED_ERR;
+ /** If an attempt is made to modify an object where modifications are not allowed. */
+ @JsxConstant
+ public static final short NO_MODIFICATION_ALLOWED_ERR = org.w3c.dom.DOMException.NO_MODIFICATION_ALLOWED_ERR;
+ /** If an attempt is made to reference a node in a context where it does not exist. */
+ @JsxConstant
+ public static final short NOT_FOUND_ERR = org.w3c.dom.DOMException.NOT_FOUND_ERR;
+ /** If the implementation does not support the requested type of object or operation. */
+ @JsxConstant
+ public static final short NOT_SUPPORTED_ERR = org.w3c.dom.DOMException.NOT_SUPPORTED_ERR;
+ /** If an invalid or illegal string is specified. */
+ @JsxConstant
+ public static final short SYNTAX_ERR = org.w3c.dom.DOMException.SYNTAX_ERR;
+ /** If a node is used in a different document than the one that created it (that doesn't support it). */
+ @JsxConstant
+ public static final short WRONG_DOCUMENT_ERR = org.w3c.dom.DOMException.WRONG_DOCUMENT_ERR;
+
+ private final short code_;
+ private final String message_;
+ private int lineNumber_;
+ private String fileName_;
+
+ /**
+ * Default constructor used to build the prototype.
+ */
+ public DOMException() {
+ code_ = -1;
+ message_ = null;
+ }
+
+ /**
+ * Constructor.
+ * @param message the exception message
+ * @param errorCode the error code
+ */
+ public DOMException(final String message, final short errorCode) {
+ code_ = errorCode;
+ message_ = message;
+ }
+
+ /**
+ * Gets the exception code.
+ * @return the exception code
+ */
+ @JsxGetter
+ public Object getCode() {
+ if (code_ == -1) {
+ return Context.getUndefinedValue();
+ }
+ return code_;
+ }
+
+ /**
+ * Gets the exception message.
+ * @return the exception message
+ */
+ @JsxGetter
+ public Object getMessage() {
+ if (message_ == null) {
+ return Context.getUndefinedValue();
+ }
+ return message_;
+ }
+
+ /**
+ * Gets the line at which the exception occurred.
+ * @return the line of the exception
+ */
+ @JsxGetter
+ public Object getLineNumber() {
+ if (lineNumber_ == -1) {
+ return Context.getUndefinedValue();
+ }
+ return lineNumber_;
+ }
+
+ /**
+ * Gets the name of the in which the exception occurred.
+ * @return the name of the source file
+ */
+ @JsxGetter
+ public Object getFilename() {
+ if (fileName_ == null) {
+ return Context.getUndefinedValue();
+ }
+ return fileName_;
+ }
+
+ /**
+ * Sets the location in JavaScript source where this exception occurred.
+ * @param fileName the name of the source file
+ * @param lineNumber the line number
+ */
+ public void setLocation(final String fileName, final int lineNumber) {
+ fileName_ = fileName;
+ lineNumber_ = lineNumber;
+ }
+}
Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMImplementation.java (from rev 7691, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMImplementation.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMImplementation.java (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMImplementation.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2002-2012 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.dom;
+
+import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_35;
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.FF;
+
+import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxFunction;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+import com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocument;
+import com.gargoylesoftware.htmlunit.xml.XmlPage;
+
+/**
+ * A JavaScript object for DOMImplementation.
+ *
+ * @version $Revision$
+ * @author Ahmed Ashour
+ *
+ * @see <a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-core.html#ID-102161490">
+ * W3C Dom Level 1</a>
+ */
+@JsxClass
+public class DOMImplementation extends SimpleScriptable {
+
+ /**
+ * Test if the DOM implementation implements a specific feature.
+ * @param feature the name of the feature to test (case-insensitive)
+ * @param version the version number of the feature to test
+ * @return true if the feature is implemented in the specified version, false otherwise
+ */
+ @JsxFunction
+ public boolean hasFeature(final String feature, final String version) {
+ if (getBrowserVersion().hasFeature(GENERATED_35)) {
+ if ("HTML".equals(feature) && "1.0".equals(version)) {
+ return true;
+ }
+ }
+ else {
+ if ("HTML".equals(feature) && ("1.0".equals(version) || "2.0".equals(version))) {
+ return true;
+ }
+ else if ("XML".equals(feature) && ("1.0".equals(version) || "2.0".equals(version))) {
+ return true;
+ }
+ else if ("CSS2".equals(feature) && "2.0".equals(version)) {
+ return true;
+ }
+ else if ("XPath".equals(feature) && "3.0".equals(version)) {
+ return true;
+ }
+ //TODO: other features.
+ }
+ return false;
+ }
+
+ /**
+ * Creates an {@link XMLDocument}.
+ *
+ * @param namespaceURI the URI that identifies an XML namespace
+ * @param qualifiedName the qualified name of the document to instantiate
+ * @param doctype the document types of the document
+ * @return the newly created {@link XMLDocument}
+ */
+ //TODO: change doctype type to "DocType"
+ @JsxFunction(@WebBrowser(FF))
+ public XMLDocument createDocument(final String namespaceURI, final String qualifiedName,
+ final Object doctype) {
+ final XMLDocument document = new XMLDocument(getWindow().getWebWindow());
+ document.setParentScope(getParentScope());
+ document.setPrototype(getPrototype(document.getClass()));
+ if (qualifiedName != null && !qualifiedName.isEmpty()) {
+ final XmlPage page = document.getDomNodeOrDie();
+ page.appendChild(page.createXmlElementNS(namespaceURI, qualifiedName));
+ }
+ return document;
+ }
+}
Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMParser.java (from rev 7691, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMParser.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMParser.java (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMParser.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2002-2012 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.dom;
+
+import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.FF;
+
+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.JsxFunction;
+import com.gargoylesoftware.htmlunit.javascript.configuration.WebBrowser;
+import com.gargoylesoftware.htmlunit.javascript.host.xml.XMLDocument;
+
+/**
+ * A JavaScript object for DOMParser.
+ *
+ * @version $Revision$
+ * @author Ahmed Ashour
+ *
+ * @see <a href="http://www.xulplanet.com/references/objref/DOMParser.html">XUL Planet</a>
+ */
+@JsxClass(browsers = @WebBrowser(FF))
+public class DOMParser extends SimpleScriptable {
+
+ /**
+ * JavaScript constructor.
+ */
+ @JsxConstructor
+ public void jsConstructor() {
+ // Empty.
+ }
+
+ /**
+ * The string passed in is parsed into a DOM document.
+ * @param str the UTF16 string to be parsed
+ * @param contentType the content type of the string -
+ * either <tt>text/xml</tt>, <tt>application/xml</tt>, or <tt>application/xhtml+xml</tt>. Must not be NULL.
+ * @return the generated document
+ */
+ @JsxFunction
+ public XMLDocument parseFromString(final String str, final String contentType) {
+ final XMLDocument document = new XMLDocument();
+ document.setParentScope(getParentScope());
+ document.setPrototype(getPrototype(XMLDocument.class));
+ document.loadXML(str);
+ return document;
+ }
+}
Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMap.java (from rev 7704, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMStringMap.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMap.java (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMap.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2002-2012 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.dom;
+
+import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.host.Node;
+
+/**
+ * A JavaScript object for DOMStringMap.
+ *
+ * @version $Revision$
+ * @author Ahmed Ashour
+ */
+@JsxClass
+public final class DOMStringMap extends SimpleScriptable {
+
+ /**
+ * Creates an instance. JavaScript objects must have a default constructor.
+ */
+ public DOMStringMap() {
+ }
+
+ /**
+ * Creates an instance.
+ * @param node the node which contains the underlying string
+ */
+ public DOMStringMap(final Node node) {
+ setDomNode(node.getDomNodeOrDie(), false);
+ setParentScope(node.getParentScope());
+ setPrototype(getPrototype(getClass()));
+ }
+
+}
Copied: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenList.java (from rev 7691, trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/DOMTokenList.java)
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenList.java (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMTokenList.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -0,0 +1,161 @@
+/*
+ * Copyright (c) 2002-2012 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.dom;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import com.gargoylesoftware.htmlunit.html.DomAttr;
+import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxFunction;
+import com.gargoylesoftware.htmlunit.javascript.configuration.JsxGetter;
+import com.gargoylesoftware.htmlunit.javascript.host.Node;
+
+/**
+ * A JavaScript object for DOMTokenList.
+ *
+ * @version $Revision$
+ * @author Ahmed Ashour
+ */
+@JsxClass
+public final class DOMTokenList extends SimpleScriptable {
+
+ private String attributeName_;
+
+ /**
+ * Creates an instance. JavaScript objects must have a default constructor.
+ */
+ public DOMTokenList() {
+ }
+
+ /**
+ * Creates an instance.
+ * @param node the node which contains the underlying string
+ * @param attributeName the attribute name of the DomElement of the specified node
+ */
+ public DOMTokenList(final Node node, final String attributeName) {
+ setDomNode(node.getDomNodeOrDie(), false);
+ setParentScope(node.getParentScope());
+ setPrototype(getPrototype(getClass()));
+ attributeName_ = attributeName;
+ }
+
+ /**
+ * Returns the length property.
+ * @return the length
+ */
+ @JsxGetter
+ public int getLength() {
+ final String value = getDefaultValue(null);
+ return value.split(" ").length;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getDefaultValue(final Class<?> hint) {
+ final DomAttr attr = (DomAttr) getDomNodeOrDie().getAttributes().getNamedItem(attributeName_);
+ if (attr != null) {
+ final String value = attr.getValue();
+ return value;
+ }
+ return "";
+ }
+
+ /**
+ * Adds the specified token to the underlying string.
+ * @param token the token to add
+ */
+ @JsxFunction
+ public void add(final String token) {
+ if (!contains(token)) {
+ final DomAttr attr = (DomAttr) getDomNodeOrDie().getAttributes().getNamedItem(attributeName_);
+ attr.setValue(attr.getValue() + ' ' + token);
+ }
+ }
+
+ /**
+ * Removes the specified token from the underlying string.
+ * @param token the token to remove
+ */
+ @JsxFunction
+ public void remove(final String token) {
+ if (contains(token)) {
+ final DomAttr attr = (DomAttr) getDomNodeOrDie().getAttributes().getNamedItem(attributeName_);
+ if (attr != null) {
+ final List<String> values = new ArrayList<String>(Arrays.asList(attr.getValue().split(" ")));
+ values.remove(token);
+ final StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < values.size(); i++) {
+ builder.append(values.get(i));
+ if (i < values.size() - 1) {
+ builder.append(' ');
+ }
+ }
+ attr.setValue(builder.toString());
+ }
+ }
+ }
+
+ /**
+ * Toggle the token, by adding or removing.
+ * @param token the token to add or remove
+ * @return whether the string now contains the token or not
+ */
+ @JsxFunction
+ public boolean toggle(final String token) {
+ if (contains(token)) {
+ remove(token);
+ return false;
+ }
+ add(token);
+ return true;
+ }
+
+ /**
+ * Checks if the specified token is contained in the underlying string.
+ * @param token the token to add
+ * @return true if the underlying string contains token, otherwise false
+ */
+ @JsxFunction
+ public boolean contains(final String token) {
+ final DomAttr attr = (DomAttr) getDomNodeOrDie().getAttributes().getNamedItem(attributeName_);
+ if (attr != null) {
+ final List<String> values = Arrays.asList(attr.getValue().split(" "));
+ return values.contains(token);
+ }
+ return false;
+ }
+
+ /**
+ * Returns the item at the specified index.
+ * @param index the index of the item
+ * @return the item
+ */
+ @JsxFunction
+ public Object item(final int index) {
+ final DomAttr attr = (DomAttr) getDomNodeOrDie().getAttributes().getNamedItem(attributeName_);
+ if (attr != null) {
+ final List<String> values = Arrays.asList(attr.getValue().split(" "));
+ if (index < values.size()) {
+ return values.get(index);
+ }
+ }
+ return null;
+ }
+}
Added: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/package.html
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/package.html (rev 0)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/package.html 2012-11-09 11:12:24 UTC (rev 7705)
@@ -0,0 +1,5 @@
+<html><head></head>
+<body>
+Implementations of the DOM JavaScript host objects - users of HtmlUnit shouldn't
+need anything in this package.
+</body></html>
Property changes on: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/package.html
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -101,8 +101,6 @@
import com.gargoylesoftware.htmlunit.javascript.host.Attr;
import com.gargoylesoftware.htmlunit.javascript.host.BoxObject;
import com.gargoylesoftware.htmlunit.javascript.host.ClientRect;
-import com.gargoylesoftware.htmlunit.javascript.host.DOMStringMap;
-import com.gargoylesoftware.htmlunit.javascript.host.DOMTokenList;
import com.gargoylesoftware.htmlunit.javascript.host.Element;
import com.gargoylesoftware.htmlunit.javascript.host.Event;
import com.gargoylesoftware.htmlunit.javascript.host.EventHandler;
@@ -114,6 +112,8 @@
import com.gargoylesoftware.htmlunit.javascript.host.Window;
import com.gargoylesoftware.htmlunit.javascript.host.css.CSSStyleDeclaration;
import com.gargoylesoftware.htmlunit.javascript.host.css.ComputedCSSStyleDeclaration;
+import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMStringMap;
+import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMTokenList;
/**
* The JavaScript object "HTMLElement" which is the base class for all HTML
Deleted: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DOMExceptionTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DOMExceptionTest.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DOMExceptionTest.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2002-2012 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 org.junit.Test;
-import org.junit.runner.RunWith;
-
-import com.gargoylesoftware.htmlunit.BrowserRunner;
-import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts;
-import com.gargoylesoftware.htmlunit.WebDriverTestCase;
-
-/**
- * Tests for {@link DOMException}.
- *
- * @version $Revision$
- * @author Marc Guillemot
- */
-@RunWith(BrowserRunner.class)
-public class DOMExceptionTest extends WebDriverTestCase {
-
- /**
- * @throws Exception if the test fails
- */
- @Test
- @Alerts(FF = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15" },
- IE = "exception")
- public void constants() throws Exception {
- final String html = "<html><head>\n"
- + "<script>\n"
- + " var properties = ['INDEX_SIZE_ERR', 'DOMSTRING_SIZE_ERR', 'HIERARCHY_REQUEST_ERR',"
- + " 'WRONG_DOCUMENT_ERR', 'INVALID_CHARACTER_ERR', 'NO_DATA_ALLOWED_ERR', 'NO_MODIFICATION_ALLOWED_ERR',"
- + " 'NOT_FOUND_ERR', 'NOT_SUPPORTED_ERR', 'INUSE_ATTRIBUTE_ERR', 'INVALID_STATE_ERR', 'SYNTAX_ERR',"
- + " 'INVALID_MODIFICATION_ERR', 'NAMESPACE_ERR', 'INVALID_ACCESS_ERR'];\n"
- + " try {\n"
- + " for (var i=0; i<properties.length; ++i) {\n"
- + " alert(DOMException[properties[i]]);\n"
- + " }\n"
- + " } catch(e) { alert('exception');}\n"
- + "</script></head>\n"
- + "<body></body></html>";
-
- loadPageWithAlerts2(html);
- }
-
- /**
- * @throws Exception if the test fails
- */
- @Test
- @Alerts(FF = { "undefined", "undefined", "undefined", "undefined" },
- IE = "exception")
- public void properties() throws Exception {
- final String html = "<html><head>\n"
- + "<script>\n"
- + " try {\n"
- + " alert(DOMException.code);\n"
- + " alert(DOMException.filename);\n"
- + " alert(DOMException.lineNumber);\n"
- + " alert(DOMException.message);\n"
- + " } catch(e) { alert('exception');}\n"
- + "</script></head>\n"
- + "<body></body></html>";
-
- loadPageWithAlerts2(html);
- }
-
- /**
- * Test exception throw by an illegal DOM appendChild.
- * @throws Exception if the test fails
- */
- @Test
- @Alerts(FF = { "3", "Node cannot be inserted at the specified point in the hierarchy",
- "6", "§§URL§§", "HIERARCHY_REQUEST_ERR: 3", "1" },
- IE = { "1" })
- public void appendChild_illegal_node() throws Exception {
- final String html = "<html><head><title>foo</title><script>\n"
- + "function test() {\n"
- + " var htmlNode = document.documentElement;\n"
- + " var body = document.body;\n"
- + " try {\n"
- + " body.appendChild(htmlNode);\n"
- + " } catch(e) {\n"
- + " alert(e.code);\n"
- + " alert(e.message);\n"
- + " alert(e.lineNumber);\n"
- + " alert(e.filename);\n"
- + " alert('HIERARCHY_REQUEST_ERR: ' + e.HIERARCHY_REQUEST_ERR);\n"
- + " };\n"
- + " alert(body.childNodes.length);\n"
- + "}\n"
- + "</script></head><body onload='test()'><span>hi</span></body></html>";
-
- loadPageWithAlerts2(html);
- }
-}
Deleted: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DOMImplementationTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DOMImplementationTest.java 2012-11-09 11:07:39 UTC (rev 7704)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/DOMImplementationTest.java 2012-11-09 11:12:24 UTC (rev 7705)
@@ -1,130 +0,0 @@
-/*
- * Copyright (c) 2002-2012 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.BrowserRunner.Browser.FF;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import com.gargoylesoftware.htmlunit.BrowserRunner;
-import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts;
-import com.gargoylesoftware.htmlunit.BrowserRunner.Browsers;
-import com.gargoylesoftware.htmlunit.SimpleWebTestCase;
-
-/**
- * Tests for {@link DOMImplementation}.
- *
- * @version $Revision$
- * @author Ahmed Ashour
- * @author Marc Guillemot
- */
-@RunWith(BrowserRunner.class)
-public class DOMImplementationTest extends SimpleWebTestCase {
-
- /**
- * @throws Exception if the test fails
- */
- @Test
- @Alerts(FF = { "HTML 1.0: true", "HTML 2.0: true", "HTML 3.0: false" },
- IE = { "HTML 1.0: true", "HTML 2.0: false", "HTML 3.0: false" })
- public void hasFeatu...
[truncated message content] |
|
From: <asa...@us...> - 2012-11-09 12:58:45
|
Revision: 7706
http://sourceforge.net/p/htmlunit/code/7706
Author: asashour
Date: 2012-11-09 12:58:42 +0000 (Fri, 09 Nov 2012)
Log Message:
-----------
Implement DOMStringMap
Modified Paths:
--------------
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMap.java
Added Paths:
-----------
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMapTest.java
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 2012-11-09 11:12:24 UTC (rev 7705)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JavaScriptConfiguration.java 2012-11-09 12:58:42 UTC (rev 7706)
@@ -116,6 +116,7 @@
import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMException;
import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMImplementation;
import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMParser;
+import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMStringMap;
import com.gargoylesoftware.htmlunit.javascript.host.dom.DOMTokenList;
import com.gargoylesoftware.htmlunit.javascript.host.geo.Coordinates;
import com.gargoylesoftware.htmlunit.javascript.host.geo.Geolocation;
@@ -281,7 +282,8 @@
CSSRuleList.class, CSSStyleDeclaration.class, CSSStyleRule.class, CSSStyleSheet.class, CSSValue.class,
CanvasRenderingContext2D.class, CharacterDataImpl.class, ClientRect.class, Comment.class,
ComputedCSSStyleDeclaration.class, Console.class, Coordinates.class, DataView.class, DOMException.class,
- DOMImplementation.class, DOMParser.class, DOMTokenList.class, Document.class, DocumentFragment.class,
+ DOMImplementation.class, DOMParser.class, DOMStringMap.class,
+ DOMTokenList.class, Document.class, DocumentFragment.class,
DocumentType.class, Element.class, Enumerator.class, Event.class, EventNode.class, External.class,
Float32Array.class, Float64Array.class,
FormChild.class, FormField.class, Geolocation.class, History.class,
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java 2012-11-09 11:12:24 UTC (rev 7705)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/css/CSSStyleDeclaration.java 2012-11-09 12:58:42 UTC (rev 7706)
@@ -706,6 +706,7 @@
* to camel-cased (e.g. <tt>fontSize</tt>).
* @param string the string to camelize
* @return the transformed string
+ * @see com.gargoylesoftware.htmlunit.javascript.host.dom.DOMStringMap#decamelize(String)
*/
protected static String camelize(final String string) {
if (string == null) {
@@ -719,7 +720,7 @@
// not found in CamelizeCache_; convert and store in cache
final int pos = string.indexOf('-');
- if (pos == -1 || pos >= string.length() - 1) {
+ if (pos == -1 || pos == string.length() - 1) {
// cache also this strings for performance
CamelizeCache_.put(string, string);
return string;
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMap.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMap.java 2012-11-09 11:12:24 UTC (rev 7705)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMap.java 2012-11-09 12:58:42 UTC (rev 7706)
@@ -14,9 +14,16 @@
*/
package com.gargoylesoftware.htmlunit.javascript.host.dom;
+import net.sourceforge.htmlunit.corejs.javascript.Context;
+import net.sourceforge.htmlunit.corejs.javascript.Scriptable;
+import net.sourceforge.htmlunit.corejs.javascript.ScriptableObject;
+
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable;
import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
import com.gargoylesoftware.htmlunit.javascript.host.Node;
+import com.gargoylesoftware.htmlunit.javascript.host.Window;
/**
* A JavaScript object for DOMStringMap.
@@ -43,4 +50,57 @@
setPrototype(getPrototype(getClass()));
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Object get(final String name, final Scriptable start) {
+ final HtmlElement e = getDomNodeOrNull();
+ if (e != null) {
+ final String value = e.getAttribute("data-" + decamelize(name));
+ if (value != DomElement.ATTRIBUTE_NOT_DEFINED) {
+ return value;
+ }
+ }
+ return NOT_FOUND;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void put(final String name, final Scriptable start, final Object value) {
+ if (!(ScriptableObject.getTopLevelScope(this) instanceof Window) || getWindow().getWebWindow() == null) {
+ super.put(name, start, value);
+ }
+ else {
+ final HtmlElement e = getDomNodeOrNull();
+ e.setAttribute("data-" + decamelize(name), Context.toString(value));
+ }
+ }
+
+ /**
+ * Transforms the specified string from camel-cased (e.g. <tt>fontSize</tt>)
+ * to delimiter-separated (e.g. <tt>font-size</tt>).
+ * to camel-cased .
+ * @param string the string to decamelize
+ * @return the transformed string
+ * @see com.gargoylesoftware.htmlunit.javascript.host.css.CSSStyleDeclaration#camelize
+ */
+ public static String decamelize(final String string) {
+ if (string == null || string.isEmpty()) {
+ return string;
+ }
+
+ final StringBuilder buffer = new StringBuilder();
+ for (int i = 0; i < string.length(); i++) {
+ final char ch = string.charAt(i);
+ if (Character.isUpperCase(ch)) {
+ buffer.append('-').append(Character.toLowerCase(ch));
+ }
+ else {
+ buffer.append(ch);
+ }
+ }
+ return buffer.toString();
+ }
}
Added: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMapTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMapTest.java (rev 0)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMapTest.java 2012-11-09 12:58:42 UTC (rev 7706)
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2002-2012 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.dom;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import com.gargoylesoftware.htmlunit.BrowserRunner;
+import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts;
+import com.gargoylesoftware.htmlunit.WebDriverTestCase;
+
+/**
+ * Tests for {@link DOMStringMap}.
+ *
+ * @version $Revision$
+ * @author Ahmed Ashour
+ */
+@RunWith(BrowserRunner.class)
+public class DOMStringMapTest extends WebDriverTestCase {
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(FF = { "undefined", "there" }, FF3_6 = { })
+ public void get() throws Exception {
+ final String html
+ = "<html><head><title>First</title><script>\n"
+ + "function test() {\n"
+ + " if (document.body.dataset) {\n"
+ + " alert(document.body.dataset.hi);\n"
+ + " alert(document.body.dataset.hello);\n"
+ + " }\n"
+ + "}\n"
+ + "</script></head><body onload='test()' data-hello='there'>\n"
+ + "</body></html>";
+
+ loadPageWithAlerts2(html);
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(FF = { "old", "old", "null", "null" }, FF3_6 = { })
+ public void put() throws Exception {
+ final String html
+ = "<html><head><title>First</title><script>\n"
+ + "function test() {\n"
+ + " if (document.body.dataset) {\n"
+ + " document.body.dataset.dateOfBirth = 'old';\n"
+ + " alert(document.body.dataset.dateOfBirth);\n"
+ + " alert(document.body.getAttribute('data-date-of-birth'));\n"
+ + " document.body.dataset.dateOfBirth = null;\n"
+ + " alert(document.body.dataset.dateOfBirth);\n"
+ + " alert(document.body.getAttribute('data-date-of-birth'));\n"
+ + " }\n"
+ + "}\n"
+ + "</script></head><body onload='test()'>\n"
+ + "</body></html>";
+
+ loadPageWithAlerts2(html);
+ }
+}
Property changes on: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/dom/DOMStringMapTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
|
|
From: <asa...@us...> - 2012-11-11 11:58:38
|
Revision: 7717
http://sourceforge.net/p/htmlunit/code/7717
Author: asashour
Date: 2012-11-11 11:58:29 +0000 (Sun, 11 Nov 2012)
Log Message:
-----------
GWT 2.5.0 is fully supported
Modified Paths:
--------------
trunk/htmlunit/src/site/xdoc/index.xml
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/GWT250Test.java
trunk/htmlunit/src/test/resources/libraries/GWT/README
Added Paths:
-----------
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/JSON.css
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/JSON.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/com/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/com/google/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/com/google/gwt/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/com/google/gwt/sample/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/com/google/gwt/sample/json/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/com/google/gwt/sample/json/client/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/com/google/gwt/sample/json/client/JSON$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/com/google/gwt/sample/json/client/JSON$JSONResponseTextHandler.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/com/google/gwt/sample/json/client/JSON$SearchButtonHandler.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/classes/com/google/gwt/sample/json/client/JSON.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/json/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/json/rpcPolicyManifest/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/json/rpcPolicyManifest/manifest.txt
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/json/symbolMaps/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/json/symbolMaps/1CB5881BCD2440CDE42D0CF4F0AF7D50.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/json/symbolMaps/26CB0FC5722AD090CBEB33754AF88029.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/json/symbolMaps/50CE601D10A7FA0094E0376DAF7507C8.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/json/symbolMaps/75B7BE35EFF32B1B1619B707923B24EA.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/json/symbolMaps/A3BA7E53F27A30621C5D3EF6C58AB0E6.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/deploy/json/symbolMaps/D8A4B76C156D45CC3DF2C75F5F08AFD5.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/lib/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/WEB-INF/web.xml
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/favicon.ico
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/1CB5881BCD2440CDE42D0CF4F0AF7D50.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/26CB0FC5722AD090CBEB33754AF88029.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/50CE601D10A7FA0094E0376DAF7507C8.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/75B7BE35EFF32B1B1619B707923B24EA.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/A3BA7E53F27A30621C5D3EF6C58AB0E6.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/D8A4B76C156D45CC3DF2C75F5F08AFD5.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/EDC7827FEEA59EE44AD790B1C6430C45.cache.png
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/clear.cache.gif
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/hosted.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/json.nocache.js
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/JSON/json/search-results.js
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/Mail.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/AboutDialog$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/AboutDialog.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Contacts$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Contacts$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Contacts$Contact.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Contacts$ContactPopup$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Contacts$ContactPopup.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Contacts$Style.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Contacts.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Mail$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Mail$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Mail$GlobalResources.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Mail.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/MailDetail$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/MailDetail.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/MailItem.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/MailItems.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/MailList$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/MailList$Listener.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/MailList$SelectionStyle.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/MailList.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Mailboxes$Images.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Mailboxes.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/NavBar$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/NavBar.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Shortcuts$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Shortcuts.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Tasks$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/Tasks.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/TopPanel$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/classes/com/google/gwt/sample/mail/client/TopPanel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/mail/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/mail/rpcPolicyManifest/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/mail/rpcPolicyManifest/manifest.txt
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/mail/symbolMaps/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/mail/symbolMaps/0FD17690641499F3B3073381950B9DEA.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/mail/symbolMaps/1CBD15371417A37D11E798197D696D2A.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/mail/symbolMaps/333B1D6BD61A407BDEE0D8664CCF288D.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/mail/symbolMaps/94EB8763933572351940583828B15D59.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/mail/symbolMaps/952ED36BC018DA83A54F08D5C39A29A9.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/deploy/mail/symbolMaps/9F9D13C00E02D147B9790082EB2D188E.symbolMap
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/lib/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/WEB-INF/web.xml
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/favicon.ico
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/gradient_bg_th.png
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/0FD17690641499F3B3073381950B9DEA.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/196F0C6B8AACCA73AFF0D609FFAB5378.cache.png
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/1CBD15371417A37D11E798197D696D2A.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/20BE821ADF70427E40CF4EB11BAEF83E.cache.png
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/333B1D6BD61A407BDEE0D8664CCF288D.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/3BC9B6E44E4771F2F85B9094A2DA6416.cache.png
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/51BDF5B93509AA1F1BC6DF3080013499.cache.jpg
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/565F22FF7696FB352A8B0BFB04001E79.cache.png
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/61B4B0B4F491ADB29DB45F9620850594.cache.gif
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/91D5CD9C9F27CB285666947488F07704.cache.gif
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/94EB8763933572351940583828B15D59.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/952ED36BC018DA83A54F08D5C39A29A9.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/9F9D13C00E02D147B9790082EB2D188E.cache.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/B6B6AE38F859FEC58CE8973F5C4D740D.cache.gif
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/C4943CC50481C035E92103C8CAB306AF.cache.gif
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/DE97258B391723C7A5CE876B33D33A0D.cache.png
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/EDC7827FEEA59EE44AD790B1C6430C45.cache.png
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/clear.cache.gif
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/hosted.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Mail/mail/mail.nocache.js
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/Showcase.html
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/appengine-web.xml
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ContentWidget$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ContentWidget$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ContentWidget$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ContentWidget$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ContentWidget$Callback.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ContentWidget.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ContentWidgetView$ContentWidgetViewUiBinder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ContentWidgetView.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/MainMenuTreeViewModel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/MainMenuTreeViewModel$Category.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/MainMenuTreeViewModel$CategoryCell.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/MainMenuTreeViewModel$ContentWidgetCell.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/MainMenuTreeViewModel$MenuConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/MainMenuTreeViewModel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/Showcase$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/Showcase$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/Showcase$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/Showcase$GeneratorInfo.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/Showcase.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseAnnotations$ShowcaseData.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseAnnotations$ShowcaseRaw.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseAnnotations$ShowcaseSource.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseAnnotations$ShowcaseStyle.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseAnnotations.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseResources.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseShell$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseShell$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseShell$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseShell$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseShell$5.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseShell$6.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseShell$CustomCallback.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseShell$ShowcaseShellUiBinder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/ShowcaseShell.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactDatabase$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactDatabase$Category.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactDatabase$ContactInfo$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactDatabase$ContactInfo.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactDatabase$DatabaseConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactDatabase.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactInfoForm$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactInfoForm$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactInfoForm$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactInfoForm.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactTreeViewModel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactTreeViewModel$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactTreeViewModel$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactTreeViewModel$CategoryCell.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactTreeViewModel$Images.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactTreeViewModel$LetterCount.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactTreeViewModel$LetterCountCell.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ContactTreeViewModel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellBrowser$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellBrowser$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellBrowser$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellBrowser$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellBrowser.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellList$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellList$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellList$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellList$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellList$ContactCell.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellList$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellList$Images.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellList.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$10.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$11.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$12.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$13.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$14.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$15.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$16.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$17.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$18.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$19.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$20.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$21.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$22.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$23.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$24.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$25.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$5.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$6.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$7.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$8.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$9.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$BirthdayChange.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$CategoryChange.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$FirstNameChange.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$GetValue.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$Images.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$LastNameChange.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler$PendingChange.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellSampler.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$10.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$11.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$12.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$5.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$6.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$7.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$8.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$9.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTable.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTree$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTree$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTree$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTree$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellTree.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellValidation$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellValidation$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellValidation$3$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellValidation$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellValidation$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellValidation$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellValidation$Template.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellValidation$ValidatableInputCell.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellValidation$ValidationData.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCellValidation.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$10.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$11.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$12.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$13.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$14.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$15.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$16.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$17.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$5.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$6.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$7.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$8.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$9.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$CustomFooterBuilder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$CustomHeaderBuilder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$CustomTableBuilder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$Resources.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid$Styles.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwCustomDataGrid.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$10.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$11.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$12.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$13.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$14.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$15.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$5.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$6.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$7.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$8.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$9.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$Binder.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/CwDataGrid.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/RangeLabelPager.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ShowMorePagerPanel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/cell/ShowMorePagerPanel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/BlogMessages.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/ColorConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwBidiFormatting$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwBidiFormatting$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwBidiFormatting$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwBidiFormatting$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwBidiFormatting.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwBidiInput$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwBidiInput$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwBidiInput.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwConstantsExample$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwConstantsExample$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwConstantsExample$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwConstantsExample.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwConstantsWithLookupExample$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwConstantsWithLookupExample$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwConstantsWithLookupExample$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwConstantsWithLookupExample$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwConstantsWithLookupExample.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwDateTimeFormat$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwDateTimeFormat$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwDateTimeFormat$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwDateTimeFormat$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwDateTimeFormat$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwDateTimeFormat.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwDictionaryExample$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwDictionaryExample$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwDictionaryExample.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwMessagesExample$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwMessagesExample$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwMessagesExample$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwMessagesExample$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwMessagesExample.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwNumberFormat$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwNumberFormat$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwNumberFormat$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwNumberFormat$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwNumberFormat$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwNumberFormat.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwPluralFormsExample$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwPluralFormsExample$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwPluralFormsExample$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwPluralFormsExample$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/CwPluralFormsExample.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/ErrorMessages.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/ExampleConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/i18n/PluralMessages.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwListBox$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwListBox$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwListBox$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwListBox.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwMenuBar$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwMenuBar$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwMenuBar$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwMenuBar.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwStackLayoutPanel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwStackLayoutPanel$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwStackLayoutPanel$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwStackLayoutPanel$Images.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwStackLayoutPanel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwStackPanel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwStackPanel$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwStackPanel$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwStackPanel$Images.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwStackPanel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwSuggestBox$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwSuggestBox$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwSuggestBox.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwTree$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwTree$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwTree$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/lists/CwTree.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwAnimation$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwAnimation$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwAnimation$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwAnimation$CustomAnimation.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwAnimation$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwAnimation.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwCookies$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwCookies$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwCookies$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwCookies$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwCookies$5.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwCookies$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwCookies.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwFrame$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwFrame$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwFrame$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwFrame$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/other/CwFrame.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwAbsolutePanel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwAbsolutePanel$2.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwAbsolutePanel$3.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwAbsolutePanel$4.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwAbsolutePanel$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwAbsolutePanel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwDecoratorPanel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwDecoratorPanel$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwDecoratorPanel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwDisclosurePanel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwDisclosurePanel$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwDisclosurePanel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwDockPanel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwDockPanel$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwDockPanel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwFlowPanel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwFlowPanel$CwConstants.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwFlowPanel.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwHorizontalPanel$1.class
trunk/htmlunit/src/test/resources/libraries/GWT/2.5.0/Showcase/WEB-INF/classes/com/google/gwt/sample/showcase/client/content/panels/CwHorizontalPanel...
[truncated message content] |
|
From: <asa...@us...> - 2012-11-12 11:03:36
|
Revision: 7720
http://sourceforge.net/p/htmlunit/code/7720
Author: asashour
Date: 2012-11-12 11:03:27 +0000 (Mon, 12 Nov 2012)
Log Message:
-----------
JavaScript: handle definition of "function object.property() {}" (IE).
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/HtmlUnitContextFactory.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngineTest.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-11 12:40:03 UTC (rev 7719)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-12 11:03:27 UTC (rev 7720)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="asashour">
+ JavaScript: handle definition of "function object.property() {}" (IE).
+ </action>
<action type="add" dev="asashour">
JavaScript: implement property HTMLElement.dataset (FF10).
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-11 12:40:03 UTC (rev 7719)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-12 11:03:27 UTC (rev 7720)
@@ -857,6 +857,13 @@
@BrowserFeature({ @WebBrowser(value = FF, minVersion = 10), @WebBrowser(CHROME) })
JS_FUNCTION_BIND,
+ /**
+ * Indicates that function can be defined as
+ * <code>function object.property() {}</code> instead of <code>object.property = function() {}</code>.
+ */
+ @BrowserFeature(@WebBrowser(IE))
+ JS_FUNCTION_OBJECT_METHOD,
+
/** Indicates if the method toSource exists on the native objects. */
@BrowserFeature(@WebBrowser(FF))
JS_FUNCTION_TOSOURCE,
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/HtmlUnitContextFactory.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/HtmlUnitContextFactory.java 2012-11-11 12:40:03 UTC (rev 7719)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/HtmlUnitContextFactory.java 2012-11-12 11:03:27 UTC (rev 7720)
@@ -303,6 +303,8 @@
return browserVersion_.hasFeature(JS_ERROR_STACK);
case Context.FEATURE_HTMLUNIT_CONSTRUCTOR:
return browserVersion_.hasFeature(BrowserVersionFeatures.JS_CONSTRUCTOR);
+ case Context.FEATURE_HTMLUNIT_FUNCTION_OBJECT_METHOD:
+ return browserVersion_.hasFeature(BrowserVersionFeatures.JS_FUNCTION_OBJECT_METHOD);
default:
return super.hasFeature(cx, featureIndex);
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngineTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngineTest.java 2012-11-11 12:40:03 UTC (rev 7719)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngineTest.java 2012-11-12 11:03:27 UTC (rev 7720)
@@ -1624,22 +1624,23 @@
* @throws Exception if the test fails
*/
@Test
- @NotYetImplemented
- @Alerts(IE = { "1", "2" }, FF = { })
+ @Alerts(IE = { "1", "2" })
public void function_object_method() throws Exception {
- final String html = "<html><head><title>foo</title><script>\n"
- + " try {\n"
- + " alert('1');\n"
- + " function document.onclick() {\n"
- + " alert('hi');\n"
- + " }\n"
- + " alert('2');\n"
- + " } catch(e) {alert(e)}\n"
- + "</script></head><body>\n"
- + " <div id='myDiv'>Hello there</div>\n"
- + "</body></html>";
+ if (getBrowserVersion().isIE()) {
+ final String html = "<html><head><title>foo</title><script>\n"
+ + " try {\n"
+ + " alert('1');\n"
+ + " function document.onclick() {\n"
+ + " alert('hi');\n"
+ + " }\n"
+ + " alert('2');\n"
+ + " } catch(e) {alert(e)}\n"
+ + "</script></head><body>\n"
+ + " <div id='myDiv'>Hello there</div>\n"
+ + "</body></html>";
- loadPageWithAlerts(html);
+ loadPageWithAlerts(html);
+ }
}
/**
|
|
From: <mgu...@us...> - 2012-11-13 13:31:37
|
Revision: 7726
http://sourceforge.net/p/htmlunit/code/7726
Author: mguillem
Date: 2012-11-13 13:31:33 +0000 (Tue, 13 Nov 2012)
Log Message:
-----------
JavaScript: don't enumerate function properties "arguments" and "caller" (fixed in core-js snapshot)
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeFunctionTest.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-13 05:55:45 UTC (rev 7725)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-13 13:31:33 UTC (rev 7726)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="mguillem">
+ JavaScript: don't enumerate function properties "arguments" and "caller".
+ </action>
<action type="fix" dev="asashour">
JavaScript: handle definition of "function object.property() {}" (IE).
</action>
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeFunctionTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeFunctionTest.java 2012-11-13 05:55:45 UTC (rev 7725)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/NativeFunctionTest.java 2012-11-13 13:31:33 UTC (rev 7726)
@@ -145,4 +145,27 @@
loadPageWithAlerts2(html);
}
+
+ /**
+ * Function properties "arguments" and "caller" were wrongly enumerated as of HtmlUnit-2.11.
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("foo1 done")
+ public void in() throws Exception {
+ final String html = "<html><body><script>\n"
+ + "function foo1() {\n"
+ + " for (var i in foo1) {\n"
+ + " alert(i);\n"
+ + " };\n"
+ + " alert('foo1 done');\n"
+ + "};\n"
+ + "function foo0() {\n"
+ + " foo1();\n"
+ + "}\n"
+ + "foo0();\n"
+ + "</script></body></html>";
+
+ loadPageWithAlerts2(html);
+ }
}
|
|
From: <asa...@us...> - 2012-11-17 13:13:30
|
Revision: 7733
http://sourceforge.net/p/htmlunit/code/7733
Author: asashour
Date: 2012-11-17 13:13:26 +0000 (Sat, 17 Nov 2012)
Log Message:
-----------
JavaScript: prevent infinite loop during adding a DomNode to itself.
Issue 1253
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/DomNodeTest.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-16 10:30:59 UTC (rev 7732)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-17 13:13:26 UTC (rev 7733)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="asashour" issue="1253">
+ JavaScript: prevent infinite loop during adding a DomNode to itself.
+ </action>
<action type="fix" dev="mguillem">
JavaScript: don't enumerate function properties "arguments" and "caller".
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-16 10:30:59 UTC (rev 7732)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-17 13:13:26 UTC (rev 7733)
@@ -1073,6 +1073,10 @@
@BrowserFeature(@WebBrowser(FF))
KEYBOARD_EVENT_SPECIAL_KEYPRESS,
+ /** If true, then silently ignore element.appendChild(element); */
+ @BrowserFeature(@WebBrowser(IE))
+ NODE_APPEND_CHILD_SELF_IGNORE,
+
/** Body of a <noscript> tag is not totally ignored but considered as a (not displayed) text node. */
@BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME) })
NOSCRIPT_BODY_AS_TEXT,
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java 2012-11-16 10:30:59 UTC (rev 7732)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java 2012-11-17 13:13:26 UTC (rev 7733)
@@ -16,6 +16,7 @@
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.DISPLAYED_COLLAPSE;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.DOM_NORMALIZE_REMOVE_CHILDREN;
+import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.NODE_APPEND_CHILD_SELF_IGNORE;
import java.io.IOException;
import java.io.PrintWriter;
@@ -30,6 +31,7 @@
import java.util.NoSuchElementException;
import java.util.concurrent.atomic.AtomicBoolean;
+import net.sourceforge.htmlunit.corejs.javascript.Context;
import net.sourceforge.htmlunit.corejs.javascript.ScriptableObject;
import org.w3c.css.sac.CSSException;
@@ -875,6 +877,12 @@
* {@inheritDoc}
*/
public DomNode appendChild(final Node node) {
+ if (node == this) {
+ if (!hasFeature(NODE_APPEND_CHILD_SELF_IGNORE)) {
+ Context.throwAsScriptRuntimeEx(new Exception("Can not add not to itself " + this));
+ }
+ return this;
+ }
final DomNode domNode = (DomNode) node;
if (domNode instanceof DomDocumentFragment) {
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/DomNodeTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/DomNodeTest.java 2012-11-16 10:30:59 UTC (rev 7732)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/DomNodeTest.java 2012-11-17 13:13:26 UTC (rev 7733)
@@ -764,4 +764,28 @@
assertTrue(page.getElementById("d3").isDisplayed());
}
+ /**
+ * Test for Bug #1253.
+ *
+ * @throws Exception on test failure
+ */
+ @Test
+ @Alerts(FF = { "exception", "0" }, IE = {"true", "0" })
+ public void appendChild_recursive() throws Exception {
+ final String html = "<html><head><title>foo</title>\n"
+ + "<script>\n"
+ + "function test(){\n"
+ + " var e = document.createElement('div');\n"
+ + " try {\n"
+ + " alert(e.appendChild(e) === e);\n"
+ + " } catch(e) {alert('exception');}\n"
+ + " alert(e.childNodes.length);"
+ + "}\n"
+ + "</script>\n"
+ + "</head><body onload='test()'>\n"
+ + "</body></html>";
+
+ loadPageWithAlerts(html);
+ }
+
}
|
|
From: <asa...@us...> - 2012-11-17 23:42:30
|
Revision: 7736
http://sourceforge.net/p/htmlunit/code/7736
Author: asashour
Date: 2012-11-17 23:42:27 +0000 (Sat, 17 Nov 2012)
Log Message:
-----------
organize imports
Modified Paths:
--------------
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInputTest.java
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java 2012-11-17 23:39:00 UTC (rev 7735)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/xml/XMLHttpRequest.java 2012-11-17 23:42:27 UTC (rev 7736)
@@ -36,8 +36,8 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Map.Entry;
import java.util.Stack;
-import java.util.Map.Entry;
import net.sourceforge.htmlunit.corejs.javascript.Context;
import net.sourceforge.htmlunit.corejs.javascript.ContextAction;
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInputTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInputTest.java 2012-11-17 23:39:00 UTC (rev 7735)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlSubmitInputTest.java 2012-11-17 23:42:27 UTC (rev 7736)
@@ -26,8 +26,8 @@
import org.openqa.selenium.WebElement;
import com.gargoylesoftware.htmlunit.BrowserRunner;
+import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts;
import com.gargoylesoftware.htmlunit.MockWebConnection;
-import com.gargoylesoftware.htmlunit.BrowserRunner.Alerts;
import com.gargoylesoftware.htmlunit.WebDriverTestCase;
import com.gargoylesoftware.htmlunit.util.NameValuePair;
|
|
From: <asa...@us...> - 2012-11-19 13:24:28
|
Revision: 7739
http://sourceforge.net/p/htmlunit/code/7739
Author: asashour
Date: 2012-11-19 13:24:25 +0000 (Mon, 19 Nov 2012)
Log Message:
-----------
JavaScript: function name referenced before its declaration should throw an exception (FF).
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-19 09:22:49 UTC (rev 7738)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-19 13:24:25 UTC (rev 7739)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="asashour">
+ JavaScript: function name referenced before its declaration should throw an exception (FF).
+ </action>
<action type="fix" dev="asashour" issue="1253">
JavaScript: prevent infinite loop during adding a DomNode to itself.
</action>
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java 2012-11-19 09:22:49 UTC (rev 7738)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java 2012-11-19 13:24:25 UTC (rev 7739)
@@ -150,7 +150,7 @@
@Test
@Alerts(FF = { "undefined", "foo error" },
IE = {"function foo() {}", "function foo() {}" })
- @NotYetImplemented
+ @NotYetImplemented(IE)
public void variableNotDefined() throws Exception {
final String html = "<html><head></head><body>\n"
+ "<script>\n"
|
|
From: <asa...@us...> - 2012-11-19 14:46:08
|
Revision: 7740
http://sourceforge.net/p/htmlunit/code/7740
Author: asashour
Date: 2012-11-19 14:46:05 +0000 (Mon, 19 Nov 2012)
Log Message:
-----------
JavaScript: function name referenced before its declaration should be visible (IE).
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/HtmlUnitContextFactory.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-19 13:24:25 UTC (rev 7739)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-19 14:46:05 UTC (rev 7740)
@@ -9,6 +9,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
<action type="fix" dev="asashour">
+ JavaScript: function name referenced before its declaration should be visible (IE).
+ </action>
+ <action type="fix" dev="asashour">
JavaScript: function name referenced before its declaration should throw an exception (FF).
</action>
<action type="fix" dev="asashour" issue="1253">
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-19 13:24:25 UTC (rev 7739)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-19 14:46:05 UTC (rev 7740)
@@ -858,6 +858,12 @@
JS_FUNCTION_BIND,
/**
+ * Indicates that function is defined even before its declaration, inside a block.
+ */
+ @BrowserFeature(@WebBrowser(IE))
+ JS_FUNCTION_DECLARED_FORWARD_IN_BLOCK,
+
+ /**
* Indicates that function can be defined as
* <code>function object.property() {}</code> instead of <code>object.property = function() {}</code>.
*/
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/HtmlUnitContextFactory.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/HtmlUnitContextFactory.java 2012-11-19 13:24:25 UTC (rev 7739)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/HtmlUnitContextFactory.java 2012-11-19 14:46:05 UTC (rev 7740)
@@ -305,6 +305,8 @@
return browserVersion_.hasFeature(BrowserVersionFeatures.JS_CONSTRUCTOR);
case Context.FEATURE_HTMLUNIT_FUNCTION_OBJECT_METHOD:
return browserVersion_.hasFeature(BrowserVersionFeatures.JS_FUNCTION_OBJECT_METHOD);
+ case Context.FEATURE_HTMLUNIT_FUNCTION_DECLARED_FORWARD_IN_BLOCK:
+ return browserVersion_.hasFeature(BrowserVersionFeatures.JS_FUNCTION_DECLARED_FORWARD_IN_BLOCK);
default:
return super.hasFeature(cx, featureIndex);
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java 2012-11-19 13:24:25 UTC (rev 7739)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/JavaScriptEngine2Test.java 2012-11-19 14:46:05 UTC (rev 7740)
@@ -122,7 +122,6 @@
@Test
@Alerts(IE = {"in goo", "in hoo", "in foo" },
FF = {"in goo", "in hoo", "foo error" })
- @NotYetImplemented(IE)
public void functionDeclaredForwardInBlock() throws Exception {
final String html = "<html><head></head><body>\n"
+ "<script>\n"
|
|
From: <mgu...@us...> - 2012-11-20 07:27:10
|
Revision: 7741
http://sourceforge.net/p/htmlunit/code/7741
Author: mguillem
Date: 2012-11-20 07:27:05 +0000 (Tue, 20 Nov 2012)
Log Message:
-----------
Change default network timeout from infinite wait to 90 seconds.
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-19 14:46:05 UTC (rev 7740)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-20 07:27:05 UTC (rev 7741)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="udpate" dev="mguillem">
+ Change default network timeout from infinite wait to 90 seconds.
+ </action>
<action type="fix" dev="asashour">
JavaScript: function name referenced before its declaration should be visible (IE).
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2012-11-19 14:46:05 UTC (rev 7740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2012-11-20 07:27:05 UTC (rev 7741)
@@ -1730,11 +1730,8 @@
}
/**
- * <p>Sets the timeout of the {@link WebConnection}. Set to zero (the default) for an infinite wait.</p>
+ * <p>Sets the timeout of the {@link WebConnection}.</p>
*
- * <p>Note: The timeout is used twice. The first is for making the socket connection, the second is
- * for data retrieval. If the time is critical you must allow for twice the time specified here.</p>
- *
* @param timeout the value of the timeout in milliseconds
* @deprecated as of 2.11, please use {@link #getOptions()}.{@link WebClientOptions#setTimeout setTimeout()}
* instead.
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java 2012-11-19 14:46:05 UTC (rev 7740)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClientOptions.java 2012-11-20 07:27:05 UTC (rev 7741)
@@ -42,7 +42,7 @@
private boolean activeXNative_;
private String homePage_ = "http://htmlunit.sf.net/";
private ProxyConfig proxyConfig_;
- private int timeout_;
+ private int timeout_ = 90000; // like Firefox 16 default's value for network.http.connection-timeout
private boolean useInsecureSSL_ = false; // default is secure SSL
@@ -342,7 +342,7 @@
/**
* Gets the timeout value for the {@link WebConnection}.
- *
+ * The default timeout is 90 seconds (it was 0 up to HtmlUnit-2.11).
* @return the timeout value in milliseconds
* @see WebClientOptions#getTimeout(int)
*/
@@ -351,7 +351,7 @@
}
/**
- * <p>Sets the timeout of the {@link WebConnection}. Set to zero (the default) for an infinite wait.</p>
+ * <p>Sets the timeout of the {@link WebConnection}. Set to zero for an infinite wait.</p>
*
* <p>Note: The timeout is used twice. The first is for making the socket connection, the second is
* for data retrieval. If the time is critical you must allow for twice the time specified here.</p>
|
|
From: <asa...@us...> - 2012-11-20 10:46:27
|
Revision: 7743
http://sourceforge.net/p/htmlunit/code/7743
Author: asashour
Date: 2012-11-20 10:46:23 +0000 (Tue, 20 Nov 2012)
Log Message:
-----------
Support Internationalized Domain Name (IDN).
Issue 1459
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebRequest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebRequestTest.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-20 09:51:49 UTC (rev 7742)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-20 10:46:23 UTC (rev 7743)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="asashour" issue="1459">
+ Support Internationalized Domain Name (IDN).
+ </action>
<action type="udpate" dev="mguillem">
Change default network timeout from infinite wait to 90 seconds.
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebRequest.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebRequest.java 2012-11-20 09:51:49 UTC (rev 7742)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebRequest.java 2012-11-20 10:46:23 UTC (rev 7743)
@@ -15,6 +15,7 @@
package com.gargoylesoftware.htmlunit;
import java.io.Serializable;
+import java.net.IDN;
import java.net.URL;
import java.util.Collections;
import java.util.HashMap;
@@ -118,6 +119,15 @@
final String query = (url.getQuery() != null) ? "?" + url.getQuery() : "";
url = buildUrlWithNewFile(url, removeDots(path) + query);
}
+ final String idn = IDN.toASCII(url.getHost());
+ if (!idn.equals(url.getHost())) {
+ try {
+ url = new URL(url.getProtocol(), idn, url.getPort(), url.getFile());
+ }
+ catch (final Exception e) {
+ throw new RuntimeException("Cannot change hostname of URL: " + url.toExternalForm(), e);
+ }
+ }
url_ = url.toExternalForm();
// http://john.smith:secret@localhost
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebRequestTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebRequestTest.java 2012-11-20 09:51:49 UTC (rev 7742)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/WebRequestTest.java 2012-11-20 10:46:23 UTC (rev 7743)
@@ -163,4 +163,16 @@
final WebRequest request = new WebRequest(url);
assertEquals("gzip, deflate", request.getAdditionalHeaders().get("Accept-Encoding"));
}
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ public void idn() throws Exception {
+ final String internationalized = "\u0645\u0635\u0631";
+ final URL url = new URL("http://" + internationalized + ".com/" + internationalized);
+ final WebRequest request = new WebRequest(url);
+ final URL expected = new URL("http://xn--wgbh1c.com/" + internationalized);
+ assertEquals(expected, request.getUrl());
+ }
}
|
|
From: <mgu...@us...> - 2012-11-20 11:06:43
|
Revision: 7744
http://sourceforge.net/p/htmlunit/code/7744
Author: mguillem
Date: 2012-11-20 11:06:39 +0000 (Tue, 20 Nov 2012)
Log Message:
-----------
Change default RefreshHander to a NiceRefreshHandler(2).
Issue 1126
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-20 10:46:23 UTC (rev 7743)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-20 11:06:39 UTC (rev 7744)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="udpate" dev="mguillem" issue="1126">
+ Change default RefreshHander to a NiceRefreshHandler(2).
+ </action>
<action type="fix" dev="asashour" issue="1459">
Support Internationalized Domain Name (IDN).
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2012-11-20 10:46:23 UTC (rev 7743)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2012-11-20 11:06:39 UTC (rev 7744)
@@ -164,7 +164,7 @@
private ScriptPreProcessor scriptPreProcessor_;
private Map<String, String> activeXObjectMap_ = Collections.emptyMap();
- private RefreshHandler refreshHandler_ = new ImmediateRefreshHandler();
+ private RefreshHandler refreshHandler_ = new NiceRefreshHandler(2);
private JavaScriptErrorListener javaScriptErrorListener_;
private WebClientOptions options_ = new WebClientOptions();
@@ -1586,7 +1586,7 @@
*/
public void setRefreshHandler(final RefreshHandler handler) {
if (handler == null) {
- refreshHandler_ = new ImmediateRefreshHandler();
+ refreshHandler_ = new NiceRefreshHandler(2);
}
else {
refreshHandler_ = handler;
@@ -1594,8 +1594,9 @@
}
/**
- * Returns the current refresh handler or null if one has not been set.
- * @return the current RefreshHandler or null
+ * Returns the current refresh handler.
+ * The default refresh handler is a {@link NiceRefreshHandler NiceRefreshHandler(2)} (since HtmlUnit-2.12).
+ * @return the current RefreshHandler
*/
public RefreshHandler getRefreshHandler() {
return refreshHandler_;
|
|
From: <asa...@us...> - 2012-11-20 18:19:24
|
Revision: 7748
http://sourceforge.net/p/htmlunit/code/7748
Author: asashour
Date: 2012-11-20 18:18:57 +0000 (Tue, 20 Nov 2012)
Log Message:
-----------
JavaScript: element.outerHTML should not print end tag if it is forbidden.
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLAreaElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBRElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBaseElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBaseFontElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLFrameElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLHRElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLImageElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLInputElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLIsIndexElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLLinkElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLMetaElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLParamElement.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLTableColElement.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBRElementTest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-20 13:24:52 UTC (rev 7747)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-20 18:18:57 UTC (rev 7748)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="asashour">
+ JavaScript: element.outerHTML should not print end tag if it is forbidden.
+ </action>
<action type="udpate" dev="mguillem" issue="1126">
Change default RefreshHander to a NiceRefreshHandler(2).
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLAreaElement.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLAreaElement.java 2012-11-20 13:24:52 UTC (rev 7747)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLAreaElement.java 2012-11-20 18:18:57 UTC (rev 7748)
@@ -91,4 +91,11 @@
super.setAccessKey(accessKey);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected boolean isEndTagForbidden() {
+ return true;
+ }
}
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBRElement.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBRElement.java 2012-11-20 13:24:52 UTC (rev 7747)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBRElement.java 2012-11-20 18:18:57 UTC (rev 7748)
@@ -70,4 +70,11 @@
getDomNodeOrDie().setAttribute("clear", clear);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected boolean isEndTagForbidden() {
+ return true;
+ }
}
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBaseElement.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBaseElement.java 2012-11-20 13:24:52 UTC (rev 7747)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBaseElement.java 2012-11-20 18:18:57 UTC (rev 7748)
@@ -71,4 +71,11 @@
getDomNodeOrDie().setAttribute("target", target);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected boolean isEndTagForbidden() {
+ return true;
+ }
}
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBaseFontElement.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBaseFontElement.java 2012-11-20 13:24:52 UTC (rev 7747)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLBaseFontElement.java 2012-11-20 18:18:57 UTC (rev 7748)
@@ -90,4 +90,12 @@
public void setSize(final int size) {
getDomNodeOrDie().setAttribute("size", Context.toString(Integer.valueOf(size)));
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected boolean isEndTagForbidden() {
+ return true;
+ }
}
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-20 13:24:52 UTC (rev 7747)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-20 18:18:57 UTC (rev 7748)
@@ -933,8 +933,9 @@
buffer.append(">");
// Add the children.
printChildren(buffer, node, html);
- // Close the tag. IE does it i |
|
From: <asa...@us...> - 2012-11-21 10:25:38
|
Revision: 7751
http://sourceforge.net/p/htmlunit/code/7751
Author: asashour
Date: 2012-11-21 10:25:36 +0000 (Wed, 21 Nov 2012)
Log Message:
-----------
JavaScript: element.outerHTML should throw an error if the provided value closes the parent.
Issue 1452
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-21 07:47:01 UTC (rev 7750)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-21 10:25:36 UTC (rev 7751)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="asashour" issue="1452">
+ JavaScript: element.outerHTML should throw an error if the provided value closes the parent.
+ </action>
<action type="fix" dev="asashour">
JavaScript: element.outerHTML should not print end tag if it is forbidden.
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-21 07:47:01 UTC (rev 7750)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-21 10:25:36 UTC (rev 7751)
@@ -66,6 +66,7 @@
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.cyberneko.html.HTMLElements;
import org.w3c.css.sac.CSSException;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
@@ -1033,8 +1034,26 @@
throw Context.reportRuntimeError("outerHTML is read-only for tag " + domNode.getNodeName());
}
- final DomNode proxyNode = new ProxyDomNode(domNode.getPage(), domNode, false);
- parseHtmlSnippet(proxyNode, false, value);
+ final DomDocumentFragment fragment = (DomDocumentFragment) domNode.getPage().createDocumentFragment();
+ parseHtmlSnippet(fragment, false, value);
+ DomNode child = fragment.getFirstChild();
+ if (child instanceof DomElement) {
+ final String parentName = domNode.getParentNode().getNodeName().toUpperCase();
+ final short[] closes = HTMLElements.getElement(child.getNodeName()).closes;
+ if (closes != null) {
+ for (final short close : closes) {
+ if (HTMLElements.getElement(close).name.equals(parentName)) {
+ throw Context.reportRuntimeError("outerHTML can not set '" + value
+ + "' while its parent is " + domNode.getParentNode());
+ }
+ }
+ }
+ }
+
+ while (child != null) {
+ domNode.insertBefore(child);
+ child = fragment.getFirstChild();
+ }
domNode.remove();
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-21 07:47:01 UTC (rev 7750)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-21 10:25:36 UTC (rev 7751)
@@ -915,7 +915,6 @@
"New = <span id=\"innerNode\">Old outerHTML</span>" },
FF = { "Old = <span id=\"innerNode\">Old outerHTML</span>",
"New = <span id=\"innerNode\">Old outerHTML</span>" })
- @NotYetImplemented(IE)
public void setOuterHTMLAddBlockToParagraph() throws Exception {
final String html = createPageForSetOuterHTML("p", "<div>test</div>");
loadPageWithAlerts2(html);
@@ -932,7 +931,6 @@
"New = <span id=\"innerNode\">Old outerHTML</span>" },
FF = { "Old = <span id=\"innerNode\">Old outerHTML</span>",
"New = <span id=\"innerNode\">Old outerHTML</span>" })
- @NotYetImplemented(IE)
public void setOuterHTMLAddParagraphToParagraph() throws Exception {
final String html = createPageForSetOuterHTML("p", "<p>test</p>");
loadPageWithAlerts2(html);
@@ -964,7 +962,6 @@
"New = <span id=\"innerNode\">Old outerHTML</span>" },
FF = { "Old = <span id=\"innerNode\">Old outerHTML</span>",
"New = <span id=\"innerNode\">Old outerHTML</span>" })
- @NotYetImplemented(IE)
public void setOuterHTMLAddAnchorToAnchor() throws Exception {
final String html = createPageForSetOuterHTML("a", "<a>test</a>");
loadPageWithAlerts2(html);
|
|
From: <asa...@us...> - 2012-11-23 07:17:20
|
Revision: 7756
http://sourceforge.net/p/htmlunit/code/7756
Author: asashour
Date: 2012-11-23 07:17:17 +0000 (Fri, 23 Nov 2012)
Log Message:
-----------
Properly handle spaces after "em" element.
Issue 1463
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-22 19:18:55 UTC (rev 7755)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-23 07:17:17 UTC (rev 7756)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="asashour" issue="1463">
+ Properly handle spaces after "em" element.
+ </action>
<action type="fix" dev="asashour" issue="1452">
JavaScript: element.outerHTML should throw an error if the provided value closes the parent.
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2012-11-22 19:18:55 UTC (rev 7755)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2012-11-23 07:17:17 UTC (rev 7756)
@@ -660,7 +660,8 @@
if (node.getFirstChild() != null
&& (node instanceof HtmlAnchor || node instanceof HtmlSpan || node instanceof HtmlFont
|| node instanceof HtmlStrong || node instanceof HtmlBold
- || node instanceof HtmlItalic || node instanceof HtmlUnderlined)) {
+ || node instanceof HtmlItalic || node instanceof HtmlUnderlined
+ || node instanceof HtmlEmphasis)) {
return false;
}
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java 2012-11-22 19:18:55 UTC (rev 7755)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java 2012-11-23 07:17:17 UTC (rev 7756)
@@ -441,4 +441,28 @@
loadPageWithAlerts2(html);
}
+ /**
+ * @throws Exception on test failure
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_em() throws Exception {
+ final String html = "<html><head><title>test_getChildNodes</title>\n"
+ + "<script>\n"
+ + "function test() {\n"
+ + " for (var i = 1; i <= 6; i++) {\n"
+ + " alert(document.getElementById('p' + i).childNodes.length);\n"
+ + " }\n"
+ + "}\n"
+ + "</script>\n"
+ + "</head><body onload='test()'>\n"
+ + "<p id='p1'> <em></em> </p>\n"
+ + "<p id='p2'><em></em> </p>\n"
+ + "<p id='p3'> <em></em></p>\n"
+ + "<p id='p4'> <em>something</em> </p>\n"
+ + "<p id='p5'><em>something</em> </p>\n"
+ + "<p id='p6'> <em>something</em></p>\n"
+ + "</body></html>";
+ loadPageWithAlerts2(html);
+ }
}
|
|
From: <mgu...@us...> - 2012-11-23 10:15:04
|
Revision: 7757
http://sourceforge.net/p/htmlunit/code/7757
Author: mguillem
Date: 2012-11-23 10:14:58 +0000 (Fri, 23 Nov 2012)
Log Message:
-----------
- Cookies: use 1970 as two digits year start for the expiration date.
- Cookies: accept more non standard date formats for the expiration date.
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/CookieManagerTest.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-23 07:17:17 UTC (rev 7756)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-23 10:14:58 UTC (rev 7757)
@@ -8,6 +8,12 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="mguillem">
+ Cookies: use 1970 as two digits year start for the expiration date.
+ </action>
+ <action type="fix" dev="mguillem">
+ Cookies: accept more non standard date formats for the expiration date.
+ </action>
<action type="fix" dev="asashour" issue="1463">
Properly handle spaces after "em" element.
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java 2012-11-23 07:17:17 UTC (rev 7756)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/HttpWebConnection.java 2012-11-23 10:14:58 UTC (rev 7757)
@@ -29,14 +29,13 @@
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.charset.Charset;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.Random;
@@ -97,6 +96,8 @@
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.impl.cookie.BasicPathHandler;
import org.apache.http.impl.cookie.BrowserCompatSpec;
+import org.apache.http.impl.cookie.DateParseException;
+import org.apache.http.impl.cookie.DateUtils;
import org.apache.http.message.BasicHeader;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.CoreConnectionPNames;
@@ -734,9 +735,27 @@
*/
private static final Comparator<Cookie> COOKIE_COMPARATOR = new CookiePathComparator();
- private static final SimpleDateFormat INCORRECT_FORMAT
- = new SimpleDateFormat("EEE,dd MMM yyyy HH:mm:ss z", Locale.US);
+ private static final Date DATE_1_1_1970;
+ static {
+ final Calendar calendar = Calendar.getInstance();
+ calendar.setTimeZone(DateUtils.GMT);
+ calendar.set(1970, Calendar.JANUARY, 1, 0, 0, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ DATE_1_1_1970 = calendar.getTime();
+ }
+
+ // simplified patterns from BrowserCompatSpec, with yy patterns before similar yyyy patterns
+ private static final String[] DEFAULT_DATE_PATTERNS = new String[] {
+ "EEE dd MMM yy HH mm ss zzz",
+ "EEE dd MMM yyyy HH mm ss zzz",
+ "EEE MMM d HH mm ss yyyy",
+ "EEE dd MMM yy HH mm ss z ",
+ "EEE dd MMM yyyy HH mm ss z ",
+ "EEE dd MM yy HH mm ss z ",
+ "EEE dd MM yyyy HH mm ss z ",
+ };
+
HtmlUnitBrowserCompatCookieSpec(final IncorrectnessListener incorrectnessListener) {
super();
final BasicPathHandler pathHandler = new BasicPathHandler() {
@@ -749,6 +768,7 @@
final CookieAttributeHandler originalExpiresHandler = getAttribHandler(ClientCookie.EXPIRES_ATTR);
final CookieAttributeHandler wrapperExpiresHandler = new CookieAttributeHandler() {
+
public void validate(final Cookie cookie, final CookieOrigin origin) throws MalformedCookieException {
originalExpiresHandler.validate(cookie, origin);
}
@@ -757,22 +777,11 @@
if (value.startsWith("\"") && value.endsWith("\"")) {
value = value.substring(1, value.length() - 1);
}
- final int length = value.length();
- if (value.endsWith("GMT") && length > 16 && !Character.isDigit(value.charAt(length - 16))) {
- //add "19" prefix to the year
- value = value.substring(0, length - 15) + "19" + value.substring(length - 15);
- try {
- INCORRECT_FORMAT.parse(value);
- value = value.substring(0, 4) + ' ' + value.substring(4);
- }
- catch (final Exception e) {
- //this is ok
- }
- }
+ value = value.replaceAll("[ ,:-]+", " ");
try {
- originalExpiresHandler.parse(cookie, value);
+ cookie.setExpiryDate(DateUtils.parseDate(value, DEFAULT_DATE_PATTERNS, DATE_1_1_1970));
}
- catch (final MalformedCookieException e) {
+ catch (final DateParseException e) {
incorrectnessListener.notify("Incorrect cookie expiration time: " + value, this);
}
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/CookieManagerTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/CookieManagerTest.java 2012-11-23 07:17:17 UTC (rev 7756)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/CookieManagerTest.java 2012-11-23 10:14:58 UTC (rev 7757)
@@ -281,9 +281,63 @@
}
/**
+ * Two digits years should be interpreted as 20xx if before 1970 and as 19xx otherwise.
* @throws Exception if the test fails
*/
@Test
+ @Alerts("cookie1=1; cookie2=2; cookie3=3")
+ public void setCookieExpires_twoDigits() throws Exception {
+ final List<NameValuePair> responseHeader1 = new ArrayList<NameValuePair>();
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie1=1;expires=Sun 01-Dec-68 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie2=2;expires=Thu 01-Dec-69 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie3=3;expires=Mon 31-Dec-69 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie4=4;expires=Thu 01-Jan-70 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie5=5;expires=Tue 01-Dec-70 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie6=6;expires=Wed 01-Dec-71 16:00:00 GMT"));
+ getMockWebConnection().setResponse(getDefaultUrl(), HTML_ALERT_COOKIE, 200, "OK", "text/html", responseHeader1);
+
+ loadPageWithAlerts2(getDefaultUrl());
+ }
+
+ /**
+ * Two digits years should be interpreted as 20xx if before 1970 and as 19xx otherwise.
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("cookie1=1; cookie2=2; cookie3=3")
+ public void setCookieExpires_twoDigits2() throws Exception {
+ final List<NameValuePair> responseHeader1 = new ArrayList<NameValuePair>();
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie1=1;expires=Sun,01 Dec 68 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie2=2;expires=Thu,01 Dec 69 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie3=3;expires=Mon,31 Dec 69 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie4=4;expires=Thu,01 Jan 70 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie5=5;expires=Tue,01 Dec 70 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie6=6;expires=Wed,01 Dec 71 16:00:00 GMT"));
+ getMockWebConnection().setResponse(getDefaultUrl(), HTML_ALERT_COOKIE, 200, "OK", "text/html", responseHeader1);
+
+ loadPageWithAlerts2(getDefaultUrl());
+ }
+
+ /**
+ * Two digits years should be interpreted as 20xx if before 1970 and as 19xx otherwise,
+ * even with a quite strange date format.
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts("cookie1=1")
+ public void setCookieExpires_badDateFormat() throws Exception {
+ final List<NameValuePair> responseHeader1 = new ArrayList<NameValuePair>();
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie1=1;expires=Sun-01 Dec 68 16:00:00 GMT"));
+ responseHeader1.add(new NameValuePair("Set-Cookie", "cookie6=6;expires=Wed-01 Dec 71 16:00:00 GMT"));
+ getMockWebConnection().setResponse(getDefaultUrl(), HTML_ALERT_COOKIE, 200, "OK", "text/html", responseHeader1);
+
+ loadPageWithAlerts2(getDefaultUrl());
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
@Alerts
public void setCookieExpired_badDateFormat2() throws Exception {
final List<NameValuePair> responseHeader1 = new ArrayList<NameValuePair>();
|
|
From: <asa...@us...> - 2012-11-23 19:32:02
|
Revision: 7759
http://sourceforge.net/p/htmlunit/code/7759
Author: asashour
Date: 2012-11-23 19:31:58 +0000 (Fri, 23 Nov 2012)
Log Message:
-----------
Properly handle spaces after elements: "abbr", "acronym", "basefont", "bdo", "big", "blink", "cite",
"code", "del", "dfn", "em", "ins", "kbd", "label", "map", "nobr", "q", "s", "samp", "small", "strike",
"sub", "sup", "tt" and "var".
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPageTest.java
Added Paths:
-----------
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/source/TestSource.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-23 10:19:25 UTC (rev 7758)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-23 19:31:58 UTC (rev 7759)
@@ -15,7 +15,9 @@
Cookies: accept more non standard date formats for the expiration date.
</action>
<action type="fix" dev="asashour" issue="1463">
- Properly handle spaces after "em" element.
+ Properly handle spaces after elements: "abbr", "acronym", "basefont", "bdo", "big", "blink", "cite",
+ "code", "del", "dfn", "em", "ins", "kbd", "label", "map", "nobr", "q", "s", "samp", "small", "strike",
+ "sub", "sup", "tt" and "var".
</action>
<action type="fix" dev="asashour" issue="1452">
JavaScript: element.outerHTML should throw an error if the provided value closes the parent.
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2012-11-23 10:19:25 UTC (rev 7758)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HTMLParser.java 2012-11-23 19:31:58 UTC (rev 7759)
@@ -658,10 +658,24 @@
return false;
}
if (node.getFirstChild() != null
- && (node instanceof HtmlAnchor || node instanceof HtmlSpan || node instanceof HtmlFont
+ && (node instanceof HtmlAnchor || node instanceof HtmlSpan
+ || node instanceof HtmlFont
|| node instanceof HtmlStrong || node instanceof HtmlBold
|| node instanceof HtmlItalic || node instanceof HtmlUnderlined
- || node instanceof HtmlEmphasis)) {
+ || node instanceof HtmlEmphasis
+ || node instanceof HtmlAbbreviated || node instanceof HtmlAcronym
+ || node instanceof HtmlBaseFont || node instanceof HtmlBidirectionalOverride
+ || node instanceof HtmlBig || node instanceof HtmlBlink
+ || node instanceof HtmlCitation || node instanceof HtmlCode
+ || node instanceof HtmlDeletedText || node instanceof HtmlDefinition
+ || node instanceof HtmlInsertedText || node instanceof HtmlKeyboard
+ || node instanceof HtmlLabel || node instanceof HtmlMap
+ || node instanceof HtmlNoBreak || node instanceof HtmlInlineQuotation
+ || node instanceof HtmlS || node instanceof HtmlSample
+ || node instanceof HtmlSmall || node instanceof HtmlStrike
+ || node instanceof HtmlSubscript || node instanceof HtmlSuperscript
+ || node instanceof HtmlTeletype || node instanceof HtmlVariable
+ )) {
return false;
}
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java 2012-11-23 10:19:25 UTC (rev 7758)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HTMLParser2Test.java 2012-11-23 19:31:58 UTC (rev 7759)
@@ -14,6 +14,9 @@
*/
package com.gargoylesoftware.htmlunit.html;
+import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.FF;
+import static com.gargoylesoftware.htmlunit.BrowserRunner.Browser.IE;
+
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -226,7 +229,7 @@
@Test
@Alerts(IE = { "2", "1", "2", "1", "1", "1", "2", "2", "1", "1", "1", "1" },
FF = { "2", "2", "3", "3", "2", "2", "3", "2", "2", "3", "2", "2" })
- public void childNodes_p() throws Exception {
+ public void childNodes_p_parent() throws Exception {
final String html = "<html><head><title>test_getChildNodes</title>\n"
+ "<script>\n"
+ "function test() {\n"
@@ -286,183 +289,1041 @@
loadPageWithAlerts2(html);
}
+ private String createHtmlForChildNodes(final String tagName) {
+ return "<html><head><title>test_getChildNodes</title>\n"
+ + "<script>\n"
+ + "function test() {\n"
+ + " for (var i = 1; i <= 6; i++) {\n"
+ + " alert(document.getElementById('p' + i).childNodes.length);\n"
+ + " }\n"
+ + "}\n"
+ + "</script>\n"
+ + "</head><body onload='test()'>\n"
+ + "<p id='p1'> <" + tagName + "></" + tagName + "> </p>\n"
+ + "<p id='p2'><" + tagName + "></" + tagName + "> </p>\n"
+ + "<p id='p3'> <" + tagName + "></" + tagName + "></p>\n"
+ + "<p id='p4'> <" + tagName + ">something</" + tagName + "> </p>\n"
+ + "<p id='p5'><" + tagName + ">something</" + tagName + "> </p>\n"
+ + "<p id='p6'> <" + tagName + ">something</" + tagName + "></p>\n"
+ + "</body></html>";
+ }
+
/**
- * @throws Exception on test failure
+ * @throws Exception if the test fails
*/
@Test
@Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
- public void childNodes_span() throws Exception {
- final String html = "<html><head><title>test_getChildNodes</title>\n"
- + "<script>\n"
- + "function test() {\n"
- + " for (var i = 1; i <= 6; i++) {\n"
- + " alert(document.getElementById('p' + i).childNodes.length);\n"
- + " }\n"
- + "}\n"
- + "</script>\n"
- + "</head><body onload='test()'>\n"
- + "<p id='p1'> <span></span> </p>\n"
- + "<p id='p2'><span></span> </p>\n"
- + "<p id='p3'> <span></span></p>\n"
- + "<p id='p4'> <span>something</span> </p>\n"
- + "<p id='p5'><span>something</span> </p>\n"
- + "<p id='p6'> <span>something</span></p>\n"
- + "</body></html>";
+ public void childNodes_abbr() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("abbr"));
+ }
- loadPageWithAlerts2(html);
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_acronym() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("acronym"));
}
/**
- * @throws Exception on test failure
+ * @throws Exception if the test fails
*/
@Test
@Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
- public void childNodes_strong() throws Exception {
- final String html = "<html><head><title>test_getChildNodes</title>\n"
- + "<script>\n"
- + "function test() {\n"
- + " for (var i = 1; i <= 6; i++) {\n"
- + " alert(document.getElementById('p' + i).childNodes.length);\n"
- + " }\n"
- + "}\n"
- + "</script>\n"
- + "</head><body onload='test()'>\n"
- + "<p id='p1'> <strong></strong> </p>\n"
- + "<p id='p2'><strong></strong> </p>\n"
- + "<p id='p3'> <strong></strong></p>\n"
- + "<p id='p4'> <strong>something</strong> </p>\n"
- + "<p id='p5'><strong>something</strong> </p>\n"
- + "<p id='p6'> <strong>something</strong></p>\n"
- + "</body></html>";
+ public void childNodes_a() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("a"));
+ }
- loadPageWithAlerts2(html);
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_address() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("address"));
}
/**
- * @throws Exception on test failure
+ * @throws Exception if the test fails
*/
@Test
+ @Alerts(IE = { "2", "2", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented(IE)
+ public void childNodes_applet() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("applet"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "3" })
+ @NotYetImplemented
+ public void childNodes_area() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("area"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented(IE)
+ public void childNodes_audio() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("audio"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "3" })
+ @NotYetImplemented(IE)
+ public void childNodes_bgsound() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("bgsound"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "2" }, FF = { "3", "2", "2", "3", "2", "3" })
+ public void childNodes_base() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("base"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "3" })
+ @NotYetImplemented(FF)
+ public void childNodes_basefont() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("basefont"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
@Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
- public void childNodes_i() throws Exception {
- final String html = "<html><head><title>test_getChildNodes</title>\n"
- + "<script>\n"
- + "function test() {\n"
- + " for (var i = 1; i <= 6; i++) {\n"
- + " alert(document.getElementById('p' + i).childNodes.length);\n"
- + " }\n"
- + "}\n"
- + "</script>\n"
- + "</head><body onload='test()'>\n"
- + "<p id='p1'> <i></i> </p>\n"
- + "<p id='p2'><i></i> </p>\n"
- + "<p id='p3'> <i></i></p>\n"
- + "<p id='p4'> <i>something</i> </p>\n"
- + "<p id='p5'><i>something</i> </p>\n"
- + "<p id='p6'> <i>something</i></p>\n"
- + "</body></html>";
+ public void childNodes_bdo() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("bdo"));
+ }
- loadPageWithAlerts2(html);
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_big() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("big"));
}
/**
- * @throws Exception on test failure
+ * @throws Exception if the test fails
*/
@Test
@Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_blink() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("blink"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ public void childNodes_blockquote() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("blockquote"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "1", "1", "1" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(FF)
+ public void childNodes_body() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("body"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
public void childNodes_b() throws Exception {
- final String html = "<html><head><title>test_getChildNodes</title>\n"
- + "<script>\n"
- + "function test() {\n"
- + " for (var i = 1; i <= 6; i++) {\n"
- + " alert(document.getElementById('p' + i).childNodes.length);\n"
- + " }\n"
- + "}\n"
- + "</script>\n"
- + "</head><body onload='test()'>\n"
- + "<p id='p1'> <b></b> </p>\n"
- + "<p id='p2'><b></b> </p>\n"
- + "<p id='p3'> <b></b></p>\n"
- + "<p id='p4'> <b>something</b> </p>\n"
- + "<p id='p5'><b>something</b> </p>\n"
- + "<p id='p6'> <b>something</b></p>\n"
- + "</body></html>";
+ loadPageWithAlerts2(createHtmlForChildNodes("b"));
+ }
- loadPageWithAlerts2(html);
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "3", "3", "3" }, FF = { "4", "3", "3", "5", "4", "4" })
+ @NotYetImplemented
+ public void childNodes_br() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("br"));
}
/**
- * @throws Exception on test failure
+ * @throws Exception if the test fails
*/
@Test
+ @Alerts(IE = { "2", "2", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented(IE)
+ public void childNodes_button() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("button"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented(IE)
+ public void childNodes_canvas() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("canvas"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(IE)
+ public void childNodes_caption() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("caption"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_center() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("center"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
@Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
- public void childNodes_u() throws Exception {
- final String html = "<html><head><title>test_getChildNodes</title>\n"
- + "<script>\n"
- + "function test() {\n"
- + " for (var i = 1; i <= 6; i++) {\n"
- + " alert(document.getElementById('p' + i).childNodes.length);\n"
- + " }\n"
- + "}\n"
- + "</script>\n"
- + "</head><body onload='test()'>\n"
- + "<p id='p1'> <u></u> </p>\n"
- + "<p id='p2'><u></u> </p>\n"
- + "<p id='p3'> <u></u></p>\n"
- + "<p id='p4'> <u>something</u> </p>\n"
- + "<p id='p5'><u>something</u> </p>\n"
- + "<p id='p6'> <u>something</u></p>\n"
- + "</body></html>";
+ public void childNodes_cite() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("cite"));
+ }
- loadPageWithAlerts2(html);
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_code() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("code"));
}
/**
- * @throws Exception on test failure
+ * @throws Exception if the test fails
*/
@Test
@Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
- public void childNodes_font() throws Exception {
- final String html = "<html><head><title>test_getChildNodes</title>\n"
- + "<script>\n"
- + "function test() {\n"
- + " for (var i = 1; i <= 6; i++) {\n"
- + " alert(document.getElementById('p' + i).childNodes.length);\n"
- + " }\n"
- + "}\n"
- + "</script>\n"
- + "</head><body onload='test()'>\n"
- + "<p id='p1'> <font></font> </p>\n"
- + "<p id='p2'><font></font> </p>\n"
- + "<p id='p3'> <font></font></p>\n"
- + "<p id='p4'> <font>something</font> </p>\n"
- + "<p id='p5'><font>something</font> </p>\n"
- + "<p id='p6'> <font>something</font></p>\n"
- + "</body></html>";
- loadPageWithAlerts2(html);
+ public void childNodes_dfn() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("dfn"));
}
/**
- * @throws Exception on test failure
+ * @throws Exception if the test fails
*/
@Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_dd() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("dd"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
@Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_del() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("del"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_dir() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("dir"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ public void childNodes_div() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("div"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_dl() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("dl"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_dt() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("dt"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "3", "3", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "3" })
+ @NotYetImplemented
+ public void childNodes_embed() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("embed"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
public void childNodes_em() throws Exception {
- final String html = "<html><head><title>test_getChildNodes</title>\n"
- + "<script>\n"
- + "function test() {\n"
- + " for (var i = 1; i <= 6; i++) {\n"
- + " alert(document.getElementById('p' + i).childNodes.length);\n"
- + " }\n"
- + "}\n"
- + "</script>\n"
- + "</head><body onload='test()'>\n"
- + "<p id='p1'> <em></em> </p>\n"
- + "<p id='p2'><em></em> </p>\n"
- + "<p id='p3'> <em></em></p>\n"
- + "<p id='p4'> <em>something</em> </p>\n"
- + "<p id='p5'><em>something</em> </p>\n"
- + "<p id='p6'> <em>something</em></p>\n"
- + "</body></html>";
- loadPageWithAlerts2(html);
+ loadPageWithAlerts2(createHtmlForChildNodes("em"));
}
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_fieldset() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("fieldset"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_font() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("font"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented(IE)
+ public void childNodes_form() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("form"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented
+ public void childNodes_frame() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("frame"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "1", "1", "3", "3", "2" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented
+ public void childNodes_frameset() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("frameset"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ public void childNodes_h1() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("h1"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ public void childNodes_h2() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("h2"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ public void childNodes_h3() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("h3"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ public void childNodes_h4() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("h4"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ public void childNodes_h5() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("h5"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ public void childNodes_h6() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("h6"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "1", "1", "1" }, FF = { "1", "1", "1", "1", "1", "1" })
+ public void childNodes_head() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("head"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ public void childNodes_hr() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("hr"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "1", "1", "1" }, FF = { "1", "1", "1", "1", "1", "1" })
+ public void childNodes_html() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("html"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_iframe() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("iframe"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_q() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("q"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "3", "3", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "3" })
+ @NotYetImplemented(IE)
+ public void childNodes_img() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("img"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_ins() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("ins"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(FF)
+ public void childNodes_isindex() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("isindex"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_i() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("i"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_kbd() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("kbd"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_label() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("label"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented
+ public void childNodes_legend() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("legend"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_listing() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("listing"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_li() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("li"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "3" })
+ @NotYetImplemented(IE)
+ public void childNodes_link() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("link"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_map() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("map"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_marquee() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("marquee"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_menu() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("menu"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "3" })
+ @NotYetImplemented(IE)
+ public void childNodes_meta() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("meta"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented(IE)
+ public void childNodes_multicol() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("multicol"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_nobr() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("nobr"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_noembed() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("noembed"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_noframes() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("noframes"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_noscript() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("noscript"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_object() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("object"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_ol() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("ol"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented
+ public void childNodes_optgroup() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("optgroup"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented
+ public void childNodes_option() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("option"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ public void childNodes_p() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("p"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "3" })
+ @NotYetImplemented
+ public void childNodes_param() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("param"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0" }, FF = { "1" })
+ @NotYetImplemented
+ public void childNodes_plaintext() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("plaintext"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_pre() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("pre"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented(IE)
+ public void childNodes_progress() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("progress"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_s() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("s"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_samp() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("samp"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented
+ public void childNodes_script() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("script"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented(IE)
+ public void childNodes_select() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("select"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_small() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("small"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "3" })
+ @NotYetImplemented
+ public void childNodes_source() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("source"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented
+ public void childNodes_spacer() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("spacer"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_span() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("span"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_strike() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("strike"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_strong() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("strong"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_style() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("style"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_sub() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("sub"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_sup() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("sup"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "1", "1", "1" }, FF = { "3", "2", "2", "3", "3", "2" })
+ @NotYetImplemented(FF)
+ public void childNodes_table() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("table"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(IE)
+ public void childNodes_col() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("col"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(IE)
+ public void childNodes_colgroup() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("colgroup"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(IE)
+ public void childNodes_tbody() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("tbody"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(IE)
+ public void childNodes_td() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("td"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(IE)
+ public void childNodes_th() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("th"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(IE)
+ public void childNodes_tr() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("tr"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented(IE)
+ public void childNodes_textarea() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("textarea"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(IE)
+ public void childNodes_tfoot() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("tfoot"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "1", "1", "1", "1", "1", "1" })
+ @NotYetImplemented(IE)
+ public void childNodes_thead() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("thead"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_tt() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("tt"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented(FF)
+ public void childNodes_title() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("title"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_u() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("u"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_ul() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("ul"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "1", "1", "1", "2", "2", "1" }, FF = { "3", "2", "2", "3", "2", "2" })
+ public void childNodes_var() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("var"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "2" })
+ @NotYetImplemented(IE)
+ public void childNodes_video() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("video"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "2", "2", "2", "4", "4", "3" }, FF = { "3", "2", "2", "3", "2", "3" })
+ @NotYetImplemented(IE)
+ public void childNodes_wbr() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("wbr"));
+ }
+
+ /**
+ * @throws Exception if the test fails
+ */
+ @Test
+ @Alerts(IE = { "0", "0", "0", "0", "0", "0" }, FF = { "1", "0", "1", "1", "0", "1" })
+ @NotYetImplemented
+ public void childNodes_xmp() throws Exception {
+ loadPageWithAlerts2(createHtmlForChildNodes("xmp"));
+ }
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPageTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPageTest.java 2012-11-23 10:19:25 UTC (rev 7758)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/HtmlPageTest.java 2012-11-23 19:31:58 UTC (rev 7759)
@@ -80,6 +80,9 @@
public static final String STANDARDS_MODE_PREFIX_
= "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n";
+ /** List of all HTML tags.*/
+ public static final List<String> HTML_TAGS_ = DefaultElementFactory.SUPPORTED_TAGS_;
+
/**
* @throws Exception if the test fails
*/
Added: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/source/TestSource.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/source/TestSource.java (rev 0)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/source/TestSource.java 2012-11-23 19:31:58 UTC (rev 7759)
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2002-2012 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.source;
+
+import com.gargoylesoftware.htmlunit.html.HtmlPageTest;
+
+/**
+ * Use to generate test cases.
+ *
+ * @version $Revision$
+ * @author Ahmed Ashour
+ */
+public final class TestSource {
+
+ private TestSource() { }
+
+ /**
+ * Generate test case for each one HTML elements.
+ * @param testNamePrefix the prefix of the test name
+ * @param htmlGeneratorMethod the method name which is called to generate the HTML, it expects a tag name parameter
+ * @param defaultAlerts default string inside the parenthesis of <tt>@Alerts()</tt>, can be null
+ */
+ public static void generateTestForHtmlElements(final String testNamePrefix, final String htmlGeneratorMethod,
+ final String defaultAlerts) {
+ for (final String tag : HtmlPageTest.HTML_TAGS_) {
+ System.out.println();
+ System.out.println(" /**");
+ System.out.println(" * @throws Exception if the test fails");
+ System.out.println(" */");
+ System.out.println(" @Test");
+ System.out.print(" @Alerts(");
+ if (defaultAlerts != null) {
+ System.out.print(defaultAlerts);
+ }
+ System.out.println(")");
+ System.out.println(" public void " + testNamePrefix + '_' + tag + "() throws Exception {");
+ System.out.println(" loadPageWithAlerts2(" + htmlGeneratorMethod + "(\"" + tag + "\"));");
+ System.out.println(" }");
+ }
+ }
+}
Property changes on: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/source/TestSource.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
|
|
From: <asa...@us...> - 2012-11-24 07:20:29
|
Revision: 7760
http://sourceforge.net/p/htmlunit/code/7760
Author: asashour
Date: 2012-11-24 07:20:25 +0000 (Sat, 24 Nov 2012)
Log Message:
-----------
JavaScript: prevent infinite loop during adding a DomNode to a descendant.
Issue 1253
Modified Paths:
--------------
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/DomNodeTest.java
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java 2012-11-23 19:31:58 UTC (rev 7759)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/DomNode.java 2012-11-24 07:20:25 UTC (rev 7760)
@@ -884,6 +884,9 @@
return this;
}
final DomNode domNode = (DomNode) node;
+ if (domNode.isDescendant(this)) {
+ Context.throwAsScriptRuntimeEx(new Exception("Can not add (grand)parent to itself " + this));
+ }
if (domNode instanceof DomDocumentFragment) {
final DomDocumentFragment fragment = (DomDocumentFragment) domNode;
@@ -1623,4 +1626,19 @@
protected boolean hasFeature(final BrowserVersionFeatures feature) {
return getPage().getWebClient().getBrowserVersion().hasFeature(feature);
}
+
+ /**
+ * Checks whether the specified node is descendant of this node or not.
+ * @param node the node to check if it is descendant or not
+ * @return whether the specified node is descendant of this node or not
+ */
+ protected boolean isDescendant(final DomNode node) {
+ for (DomNode parent = node; parent != null; parent = parent.getParentNode()) {
+ if (parent == this) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java 2012-11-23 19:31:58 UTC (rev 7759)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlPage.java 2012-11-24 07:20:25 UTC (rev 7760)
@@ -1760,18 +1760,6 @@
}
}
- /**
- * Checks whether the specified element is descendant of this HtmlPage or not.
- */
- private boolean isDescendant(final DomElement element) {
- for (DomNode parent = element; parent != null; parent = parent.getParentNode()) {
- if (parent == this) {
- return true;
- }
- }
- return false;
- }
-
private void addElement(final Map<String, List<DomElement>> map, final DomElement element,
final String attribute, final boolean recurse) {
final String value = element.getAttribute(attribute);
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/DomNodeTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/DomNodeTest.java 2012-11-23 19:31:58 UTC (rev 7759)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/html/DomNodeTest.java 2012-11-24 07:20:25 UTC (rev 7760)
@@ -788,4 +788,31 @@
loadPageWithAlerts(html);
}
+ /**
+ * Test for Bug #1253.
+ *
+ * @throws Exception on test failure
+ */
+ @Test
+ @Alerts({ "true", "exception", "1", "0" })
+ public void appendChild_recursive_parent() throws Exception {
+ final String html = "<html><head><title>foo</title>\n"
+ + "<script>\n"
+ + "function test(){\n"
+ + " var e1 = document.createElement('div');\n"
+ + " var e2 = document.createElement('div');\n"
+ + " try {\n"
+ + " alert(e1.appendChild(e2) === e2);\n"
+ + " alert(e2.appendChild(e1) === e1);\n"
+ + " } catch(e) {alert('exception');}\n"
+ + " alert(e1.childNodes.length);"
+ + " alert(e2.childNodes.length);"
+ + "}\n"
+ + "</script>\n"
+ + "</head><body onload='test()'>\n"
+ + "</body></html>";
+
+ loadPageWithAlerts(html);
+ }
+
}
|
|
From: <asa...@us...> - 2012-11-25 10:54:43
|
Revision: 7766
http://sourceforge.net/p/htmlunit/code/7766
Author: asashour
Date: 2012-11-25 10:54:39 +0000 (Sun, 25 Nov 2012)
Log Message:
-----------
JavaScript: element.set/getAttribute() should fix the name (e.g. "className") only in Quirks mode (IE).
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-25 09:56:52 UTC (rev 7765)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-25 10:54:39 UTC (rev 7766)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="asashour">
+ JavaScript: element.set/getAttribute() should fix the name (e.g. "className") only in Quirks mode (IE).
+ </action>
<action type="fix" dev="mguillem">
Cookies: use 1970 as two digits year start for the expiration date.
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-25 09:56:52 UTC (rev 7765)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-25 10:54:39 UTC (rev 7766)
@@ -450,10 +450,6 @@
/** Was originally .isIE(). */
@BrowserFeature(@WebBrowser(IE))
- GENERATED_66,
-
- /** Was originally .isIE(). */
- @BrowserFeature(@WebBrowser(IE))
GENERATED_69,
/** Was originally .isIE(). */
@@ -583,6 +579,13 @@
@BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME) })
HTMLELEMENT_ALIGN_INVALID,
+ /**
+ * Indicates that attribute name should be fixed for get/setAttribute(), specifically "className" and "class",
+ * only in quirks mode.
+ */
+ @BrowserFeature(@WebBrowser(IE))
+ HTMLELEMENT_ATTRIBUTE_FIX_IN_QUIRKS_MODE,
+
/** */
HTMLELEMENT_TRIM_CLASS_ATTRIBUTE,
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java 2012-11-25 09:56:52 UTC (rev 7765)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java 2012-11-25 10:54:39 UTC (rev 7766)
@@ -138,8 +138,8 @@
*/
@JsxFunction
public Object getAttribute(String attributeName, final Integer flags) {
+ attributeName = fixAttributeName(attributeName);
final boolean supportsFlags = getBrowserVersion().hasFeature(JS_GET_ATTRIBUTE_SUPPORTS_FLAGS);
- attributeName = fixAttributeName(attributeName);
Object value;
if (supportsFlags && flags != null && flags == 2 && "style".equalsIgnoreCase(attributeName)) {
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-25 09:56:52 UTC (rev 7765)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElement.java 2012-11-25 10:54:39 UTC (rev 7766)
@@ -16,7 +16,7 @@
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_167;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_65;
-import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_66;
+import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.HTMLELEMENT_ATTRIBUTE_FIX_IN_QUIRKS_MODE;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_69;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_70;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_71;
@@ -564,7 +564,8 @@
*/
@Override
protected String fixAttributeName(final String attributeName) {
- if (getBrowserVersion().hasFeature(GENERATED_66)) {
+ if (getBrowserVersion().hasFeature(HTMLELEMENT_ATTRIBUTE_FIX_IN_QUIRKS_MODE)
+ && ((HtmlPage) getDomNodeOrDie().getPage()).isQuirksMode()) {
if ("className".equals(attributeName)) {
return "class";
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-25 09:56:52 UTC (rev 7765)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-25 10:54:39 UTC (rev 7766)
@@ -27,6 +27,7 @@
import com.gargoylesoftware.htmlunit.BrowserRunner.Browsers;
import com.gargoylesoftware.htmlunit.BrowserRunner.NotYetImplemented;
import com.gargoylesoftware.htmlunit.WebDriverTestCase;
+import com.gargoylesoftware.htmlunit.html.HtmlPageTest;
/**
* Tests for {@link HTMLElement}.
@@ -2555,14 +2556,13 @@
* @throws Exception on test failure
*/
@Test
- @Alerts("")
- @NotYetImplemented(IE)
+ @Alerts(IE = "t", FF = "")
public void setAttribute_className() throws Exception {
final String html = "<html><head>\n"
+ "<script>\n"
+ " function test(){\n"
+ " var div = document.createElement('div');\n"
- + " div.setAttribute('className', 't');"
+ + " div.setAttribute('className', 't');\n"
+ " alert(div.className);\n"
+ " }\n"
+ "</script>\n"
@@ -2576,14 +2576,13 @@
* @throws Exception on test failure
*/
@Test
- @Alerts("t")
- @NotYetImplemented(IE)
+ @Alerts(IE = "", FF = "t")
public void setAttribute_class() throws Exception {
final String html = "<html><head>\n"
+ "<script>\n"
+ " function test(){\n"
+ " var div = document.createElement('div');\n"
- + " div.setAttribute('class', 't');"
+ + " div.setAttribute('class', 't');\n"
+ " alert(div.className);\n"
+ " }\n"
+ "</script>\n"
@@ -2593,4 +2592,44 @@
loadPageWithAlerts2(html);
}
+ /**
+ * @throws Exception on test failure
+ */
+ @Test
+ @Alerts("")
+ public void setAttribute_className_standards() throws Exception {
+ final String html = HtmlPageTest.STANDARDS_MODE_PREFIX_ + "<html><head>\n"
+ + "<script>\n"
+ + " function test(){\n"
+ + " var div = document.createElement('div');\n"
+ + " div.setAttribute('className', 't');\n"
+ + " alert(div.className);\n"
+ + " }\n"
+ + "</script>\n"
+ + "</head>\n"
+ + "<body onload='test()'></body></html>";
+
+ loadPageWithAlerts2(html);
+ }
+
+ /**
+ * @throws Exception on test failure
+ */
+ @Test
+ @Alerts("t")
+ public void setAttribute_class_standards() throws Exception {
+ final String html = HtmlPageTest.STANDARDS_MODE_PREFIX_ + "<html><head>\n"
+ + "<script>\n"
+ + " function test(){\n"
+ + " var div = document.createElement('div');\n"
+ + " div.setAttribute('class', 't');\n"
+ + " alert(div.className);\n"
+ + " }\n"
+ + "</script>\n"
+ + "</head>\n"
+ + "<body onload='test()'></body></html>";
+
+ loadPageWithAlerts2(html);
+ }
+
}
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2012-11-25 09:56:52 UTC (rev 7765)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2012-11-25 10:54:39 UTC (rev 7766)
@@ -1080,7 +1080,6 @@
*/
@Test
@Alerts("support: A background on the testElement does not cause IE8 to crash (#9823) (0, 1, 1)")
- @NotYetImplemented(IE)
public void test_106() throws Exception {
runTest(106);
}
@@ -1504,6 +1503,7 @@
FF10 = "attributes: attr(jquery_method) (0, 9, 9)",
CHROME = "attributes: attr(jquery_method) (0, 9, 9)",
IE = "attributes: attr(String, Object) (0, 81, 81)")
+ @NotYetImplemented(IE)
public void test_143() throws Exception {
runTest(143);
}
@@ -1588,6 +1588,7 @@
FF10 = "attributes: prop(String, Object) (0, 31, 31)",
CHROME = "attributes: prop(String, Object) (0, 31, 31)",
IE = "attributes: removeAttr(Multi String, variable space width) (0, 8, 8)")
+ @NotYetImplemented(IE)
public void test_150() throws Exception {
runTest(150);
}
|
|
From: <asa...@us...> - 2012-11-25 14:38:53
|
Revision: 7769
http://sourceforge.net/p/htmlunit/code/7769
Author: asashour
Date: 2012-11-25 14:38:51 +0000 (Sun, 25 Nov 2012)
Log Message:
-----------
JavaScript: fix the return value of element.getAttribute() in standards mode (IE).
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-25 13:33:33 UTC (rev 7768)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-25 14:38:51 UTC (rev 7769)
@@ -9,6 +9,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
<action type="fix" dev="asashour">
+ JavaScript: fix the return value of element.getAttribute() in standards mode (IE).
+ </action>
+ <action type="fix" dev="asashour">
JavaScript: element.set/getAttribute() should fix the name (e.g. "className") only in Quirks mode (IE).
</action>
<action type="fix" dev="mguillem">
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-25 13:33:33 UTC (rev 7768)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/BrowserVersionFeatures.java 2012-11-25 14:38:51 UTC (rev 7769)
@@ -873,9 +873,9 @@
@BrowserFeature(@WebBrowser(FF))
JS_FUNCTION_TOSOURCE,
- /** Indicates that the getAttribute method supports ie style flags. */
+ /** Indicates that the getAttribute method supports IE style flags, only in quirks mode . */
@BrowserFeature(@WebBrowser(IE))
- JS_GET_ATTRIBUTE_SUPPORTS_FLAGS,
+ JS_GET_ATTRIBUTE_SUPPORTS_FLAGS_IN_QUIRKS_MODE,
/** Javascript function getBackgroundColor of computed styles returns the color as rgb. */
@BrowserFeature({ @WebBrowser(FF), @WebBrowser(CHROME) })
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java 2012-11-25 13:33:33 UTC (rev 7768)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/Element.java 2012-11-25 14:38:51 UTC (rev 7769)
@@ -15,7 +15,7 @@
package com.gargoylesoftware.htmlunit.javascript.host;
import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.GENERATED_37;
-import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_GET_ATTRIBUTE_SUPPORTS_FLAGS;
+import static com.gargoylesoftware.htmlunit.BrowserVersionFeatures.JS_GET_ATTRIBUTE_SUPPORTS_FLAGS_IN_QUIRKS_MODE;
import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.CHROME;
import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.FF;
import static com.gargoylesoftware.htmlunit.javascript.configuration.BrowserName.IE;
@@ -27,9 +27,11 @@
import net.sourceforge.htmlunit.corejs.javascript.Scriptable;
+import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.html.DomAttr;
import com.gargoylesoftware.htmlunit.html.DomElement;
import com.gargoylesoftware.htmlunit.html.DomNode;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.javascript.NamedNodeMap;
import com.gargoylesoftware.htmlunit.javascript.configuration.JsxClass;
import com.gargoylesoftware.htmlunit.javascript.configuration.JsxFunction;
@@ -139,7 +141,9 @@
@JsxFunction
public Object getAttribute(String attributeName, final Integer flags) {
attributeName = fixAttributeName(attributeName);
- final boolean supportsFlags = getBrowserVersion().hasFeature(JS_GET_ATTRIBUTE_SUPPORTS_FLAGS);
+ final Page page = getDomNodeOrDie().getPage();
+ final boolean supportsFlags = getBrowserVersion().hasFeature(JS_GET_ATTRIBUTE_SUPPORTS_FLAGS_IN_QUIRKS_MODE)
+ && page instanceof HtmlPage && ((HtmlPage) page).isQuirksMode();
Object value;
if (supportsFlags && flags != null && flags == 2 && "style".equalsIgnoreCase(attributeName)) {
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-25 13:33:33 UTC (rev 7768)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/host/html/HTMLElementTest.java 2012-11-25 14:38:51 UTC (rev 7769)
@@ -2665,7 +2665,6 @@
*/
@Test
@Alerts({ "null", "", "null", "undefined" })
- @NotYetImplemented(IE)
public void getAttribute2_standards() throws Exception {
final String html = HtmlPageTest.STANDARDS_MODE_PREFIX_ + "<html>\n"
+ "<head>\n"
Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java
===================================================================
--- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2012-11-25 13:33:33 UTC (rev 7768)
+++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/libraries/JQuery182Test.java 2012-11-25 14:38:51 UTC (rev 7769)
@@ -1457,7 +1457,6 @@
@Alerts(FF3_6 = "attributes: attr(String) (0, 46, 46)", FF10 = "attributes: attr(String) in XML Files (0, 3, 3)",
CHROME = "attributes: attr(String) in XML Files (0, 3, 3)",
IE = "attributes: attr(String) (0, 46, 46)")
- @NotYetImplemented(IE)
public void test_139() throws Exception {
runTest(139);
}
@@ -1503,7 +1502,6 @@
FF10 = "attributes: attr(jquery_method) (0, 9, 9)",
CHROME = "attributes: attr(jquery_method) (0, 9, 9)",
IE = "attributes: attr(String, Object) (0, 81, 81)")
- @NotYetImplemented(IE)
public void test_143() throws Exception {
runTest(143);
}
@@ -1562,7 +1560,6 @@
FF10 = "attributes: removeAttr(String) in XML (0, 7, 7)",
CHROME = "attributes: removeAttr(String) in XML (0, 7, 7)",
IE = "attributes: removeAttr(String) (0, 12, 12)")
- @NotYetImplemented(IE)
public void test_148() throws Exception {
runTest(148);
}
@@ -1588,7 +1585,6 @@
FF10 = "attributes: prop(String, Object) (0, 31, 31)",
CHROME = "attributes: prop(String, Object) (0, 31, 31)",
IE = "attributes: removeAttr(Multi String, variable space width) (0, 8, 8)")
- @NotYetImplemented(IE)
public void test_150() throws Exception {
runTest(150);
}
|
|
From: <asa...@us...> - 2012-11-26 06:52:36
|
Revision: 7772
http://sourceforge.net/p/htmlunit/code/7772
Author: asashour
Date: 2012-11-26 06:52:33 +0000 (Mon, 26 Nov 2012)
Log Message:
-----------
Correctly handle local file URL if it is in a separate driver (Windows).
Issue 1464
Modified Paths:
--------------
trunk/htmlunit/src/changes/changes.xml
trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
Modified: trunk/htmlunit/src/changes/changes.xml
===================================================================
--- trunk/htmlunit/src/changes/changes.xml 2012-11-26 06:38:07 UTC (rev 7771)
+++ trunk/htmlunit/src/changes/changes.xml 2012-11-26 06:52:33 UTC (rev 7772)
@@ -8,6 +8,9 @@
<body>
<release version="2.12" date="???" description="Bugfixes">
+ <action type="fix" dev="asashour" issue="1464">
+ Correctly handle local file URL if it is in a separate driver (Windows).
+ </action>
<action type="fix" dev="asashour">
JavaScript: fix the return value of element.getAttribute() in standards mode (IE).
</action>
Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java
===================================================================
--- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2012-11-26 06:38:07 UTC (rev 7771)
+++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/WebClient.java 2012-11-26 06:52:33 UTC (rev 7772)
@@ -46,7 +46,6 @@
import net.sourceforge.htmlunit.corejs.javascript.ScriptableObject;
import org.apache.commons.codec.DecoderException;
-import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
@@ -1286,7 +1285,7 @@
cleanUrl = UrlUtils.getUrlWithNewRef(cleanUrl, null);
}
- final File file = FileUtils.toFile(cleanUrl);
+ final File file = new File(cleanUrl.toExternalForm().substring(5));
if (!file.exists()) {
// construct 404
final List<NameValuePair> compiledHeaders = new ArrayList<NameValuePair>();
|