From: <asa...@us...> - 2017-05-31 08:43:20
|
Revision: 14505 http://sourceforge.net/p/htmlunit/code/14505 Author: asashour Date: 2017-05-31 08:43:17 +0000 (Wed, 31 May 2017) Log Message: ----------- JsxClass: add extendedClass() as a parameter Modified Paths: -------------- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/AbstractJavaScriptConfiguration.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/ClassConfiguration.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JsxClass.java trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/performance/Performance.java trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/configuration/ClassConfigurationTest.java Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/AbstractJavaScriptConfiguration.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/AbstractJavaScriptConfiguration.java 2017-05-31 08:04:04 UTC (rev 14504) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/AbstractJavaScriptConfiguration.java 2017-05-31 08:43:17 UTC (rev 14505) @@ -128,6 +128,16 @@ boolean isJsObject = false; String className = null; + String extendedClassName = ""; + + final Class<?> superClass = klass.getSuperclass(); + if (superClass != SimpleScriptable.class) { + extendedClassName = superClass.getSimpleName(); + } + else { + extendedClassName = ""; + } + for (int i = 0; i < jsxClassValues.length; i++) { final JsxClass jsxClass = jsxClassValues[i]; @@ -139,12 +149,16 @@ if (!jsxClass.className().isEmpty()) { className = jsxClass.className(); } + if (jsxClass.extendedClass() != Object.class) { + extendedClassName = jsxClass.extendedClass().getSimpleName(); + } + break; } } final ClassConfiguration classConfiguration = new ClassConfiguration(klass, domClasses.toArray(new Class<?>[0]), isJsObject, - className); + className, extendedClassName); process(classConfiguration, hostClassName, expectedBrowser); return classConfiguration; @@ -163,9 +177,22 @@ if (className.isEmpty()) { className = null; } + String extendedClassName = ""; + + final Class<?> superClass = klass.getSuperclass(); + if (superClass != SimpleScriptable.class) { + extendedClassName = superClass.getSimpleName(); + } + else { + extendedClassName = ""; + } + if (jsxClass.extendedClass() != Object.class) { + extendedClassName = jsxClass.extendedClass().getSimpleName(); + } + final ClassConfiguration classConfiguration = new ClassConfiguration(klass, domClasses.toArray(new Class<?>[0]), jsxClass.isJSObject(), - className); + className, extendedClassName); process(classConfiguration, hostClassName, expectedBrowser); return classConfiguration; Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/ClassConfiguration.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/ClassConfiguration.java 2017-05-31 08:04:04 UTC (rev 14504) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/ClassConfiguration.java 2017-05-31 08:43:17 UTC (rev 14505) @@ -24,7 +24,6 @@ import java.util.Set; import com.gargoylesoftware.htmlunit.javascript.HtmlUnitScriptable; -import com.gargoylesoftware.htmlunit.javascript.SimpleScriptable; import net.sourceforge.htmlunit.corejs.javascript.Context; import net.sourceforge.htmlunit.corejs.javascript.ScriptableObject; @@ -64,14 +63,7 @@ * @param className the class name, can be null */ public ClassConfiguration(final Class<? extends HtmlUnitScriptable> hostClass, final Class<?>[] domClasses, - final boolean jsObject, final String className) { - final Class<?> superClass = hostClass.getSuperclass(); - if (superClass != SimpleScriptable.class) { - extendedClassName_ = superClass.getSimpleName(); - } - else { - extendedClassName_ = ""; - } + final boolean jsObject, final String className, final String extendedClassName) { hostClass_ = hostClass; hostClassSimpleName_ = hostClass_.getSimpleName(); jsObject_ = jsObject; @@ -82,6 +74,7 @@ else { className_ = className; } + extendedClassName_ = extendedClassName; } void setJSConstructor(final Member jsConstructor) { Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JsxClass.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JsxClass.java 2017-05-31 08:04:04 UTC (rev 14504) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/configuration/JsxClass.java 2017-05-31 08:43:17 UTC (rev 14505) @@ -54,6 +54,12 @@ String className() default ""; /** + * The extended (super) class. + * @return the extended (super) class + */ + Class<?> extendedClass() default Object.class; + + /** * The {@link SupportedBrowser}s supported by this constant. * @return the {@link SupportedBrowser}s */ Modified: trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/performance/Performance.java =================================================================== --- trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/performance/Performance.java 2017-05-31 08:04:04 UTC (rev 14504) +++ trunk/htmlunit/src/main/java/com/gargoylesoftware/htmlunit/javascript/host/performance/Performance.java 2017-05-31 08:43:17 UTC (rev 14505) @@ -17,7 +17,9 @@ import static com.gargoylesoftware.htmlunit.javascript.configuration.SupportedBrowser.CHROME; import static com.gargoylesoftware.htmlunit.javascript.configuration.SupportedBrowser.EDGE; import static com.gargoylesoftware.htmlunit.javascript.configuration.SupportedBrowser.FF; +import static com.gargoylesoftware.htmlunit.javascript.configuration.SupportedBrowser.IE; +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; @@ -30,7 +32,8 @@ * @author Ahmed Ashour * @author Ronald Brill */ -@JsxClass +@JsxClass({CHROME, FF}) +@JsxClass(value = IE, extendedClass = SimpleScriptable.class) public class Performance extends EventTarget { private PerformanceTiming timing_; Modified: trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/configuration/ClassConfigurationTest.java =================================================================== --- trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/configuration/ClassConfigurationTest.java 2017-05-31 08:04:04 UTC (rev 14504) +++ trunk/htmlunit/src/test/java/com/gargoylesoftware/htmlunit/javascript/configuration/ClassConfigurationTest.java 2017-05-31 08:43:17 UTC (rev 14505) @@ -32,7 +32,7 @@ */ @Test public void forJSFlagTrue() throws Exception { - final ClassConfiguration config1 = new ClassConfiguration(ConfigTestClass.class, null, true, null); + final ClassConfiguration config1 = new ClassConfiguration(ConfigTestClass.class, null, true, null, ""); assertTrue("JSObject Flag should have been set", config1.isJsObject()); } @@ -41,7 +41,7 @@ */ @Test public void forJSFlagFalse() throws Exception { - final ClassConfiguration config1 = new ClassConfiguration(ConfigTestClass.class, null, false, null); + final ClassConfiguration config1 = new ClassConfiguration(ConfigTestClass.class, null, false, null, ""); assertFalse("JSObject Flag should not have been set", config1.isJsObject()); } |