You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ar...@apache.org on 2009/12/03 22:35:18 UTC
svn commit: r886930 [1/10] - in
/myfaces/trinidad/branches/ar_clientBehaviors:
trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/
trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/
trinidad-build/src/main/res...
Author: arobinson74
Date: Thu Dec 3 21:35:09 2009
New Revision: 886930
URL: http://svn.apache.org/viewvc?rev=886930&view=rev
Log:
Checkpoint
Modified:
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/CoreRenderer.java
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Subform.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGoButton.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/chooseColor-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandButton-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandLink-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/commandNavigationItem-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/goButton-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputColor-simple-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputDate-simple-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/inputListOfValues-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/resetButton-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailHeader-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithPrompt-minimalScrRdr-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimal-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalIE-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalIERtl-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalInacc-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalPPC-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalSaf-golden.xml
myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/showDetailWithoutPrompt-minimalScrRdr-golden.xml
Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/CoreRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/CoreRenderer.java?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/CoreRenderer.java (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/CoreRenderer.java Thu Dec 3 21:35:09 2009
@@ -18,14 +18,21 @@
*/
package org.apache.myfaces.trinidad.render;
+
import java.io.IOException;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import javax.faces.application.ResourceHandler;
import javax.faces.component.UIComponent;
import javax.faces.component.UIViewRoot;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.ClientBehaviorHint;
+import javax.faces.component.behavior.ClientBehaviorHolder;
import javax.faces.context.FacesContext;
import javax.faces.render.Renderer;
@@ -162,7 +169,6 @@
tearDownEncodingContext(context, rc, (UIXComponent)component);
}
-
//
// COERCION HELPERS
//
@@ -186,7 +192,7 @@
return null;
String uri = o.toString();
-
+
// *** EL Coercion problem ***
// If icon or image attribute was declared with #{resource[]} and that expression
// evaluates to null (it means ResourceHandler.createResource returns null because requested resource does not exist)
@@ -196,8 +202,8 @@
{
return null;
}
-
-
+
+
// With JSF 2.0 url for resources can be done with EL like #{resource['resourcename']}
// and such EL after evalution contains context path for the current web application already,
// -> we dont want call viewHandler.getResourceURL()
@@ -213,7 +219,7 @@
}
else
{
- // If the specified path starts with a "/",
+ // If the specified path starts with a "/",
// following method will prefix it with the context path for the current web application,
// and return the result
return fc.getApplication().getViewHandler().getResourceURL(fc, uri);
@@ -241,7 +247,6 @@
}
}
-
/**
* Coerces an object into a resource URI, calling the view-handler.
* @deprecated use toResourceUri
@@ -251,7 +256,6 @@
return toResourceUri(FacesContext.getCurrentInstance(),o);
}
-
/**
* Returns the integer value of an object; this does
* not support null (which must be substituted with a default
@@ -262,8 +266,6 @@
return ((Number) o).intValue();
}
-
-
/**
* Returns the integer value of an object; this does
* not support null (which must be substituted with a default
@@ -316,7 +318,6 @@
return c;
}
-
@Override
public final void encodeBegin(FacesContext context,
UIComponent component) throws IOException
@@ -377,12 +378,12 @@
if (getRendersChildren())
throw new IllegalStateException();
}
-
+
/**
* Hook for rendering the component resources for the <code>target</code>.
* @param context Current <code>FacesContext</code> object for this request.
* @param target The target for the resources (e.g. head/body/form)
- *
+ *
* @throws IOException
*/
protected final void encodeComponentResources(
@@ -413,7 +414,6 @@
throw new IllegalStateException();
}
-
/**
* Hook for rendering all of a component; only
* called if getRendersChildren() is <em>true</em>.
@@ -459,7 +459,6 @@
child.encodeEnd(context);
}
-
@SuppressWarnings("unchecked")
protected void encodeAllChildren(
FacesContext context,
@@ -659,7 +658,6 @@
return total;
}
-
/**
* @param afterChildIndex The children coming after this index, will
* be considered.
@@ -684,7 +682,6 @@
return NO_CHILD_INDEX;
}
-
//
// AGENT CAPABILITY CONVENIENCE METHODS
//
@@ -779,6 +776,158 @@
// Rendering convenience methods.
//
+ /**
+ * Renders a non-submission client event handler (onfocus for example) including any associated
+ * client behaviors for the event.
+ *
+ * @param facesContext The faces context
+ * @param component The component
+ * @param disabled true if the component is disabled, stops the processing of client behaviors
+ * @param eventName The event, without the "on*" prefix, to render
+ * @param eventHandlerScript Script to be executed after the behaviors. May be null
+ * @param eventAttributeName the event attribute name. Null if it should not be rendered. Example
+ * value: onclick
+ * @param userHandlerScript user event handler to be executed before the event handler script and
+ * any client behavior scripts. May be null.
+ * @param params Any parameters that should be sent by behaviors that submit
+ * @throws IOException If a rendering exception occurs
+ */
+ protected void renderClientEventHandler(
+ FacesContext facesContext,
+ UIComponent component,
+ boolean disabled,
+ String eventName,
+ String eventAttributeName,
+ Collection<ClientBehaviorContext.Parameter> params,
+ String userHandlerScript,
+ String eventHandlerScript
+ ) throws IOException
+ {
+ List<ClientBehavior> behaviors = null;
+ ClientBehaviorContext behaviorContext = null;
+
+ if (!disabled && component instanceof ClientBehaviorHolder)
+ {
+ behaviors = ((ClientBehaviorHolder)component).getClientBehaviors().get(eventName);
+ if (behaviors != null && !behaviors.isEmpty())
+ {
+ behaviorContext = ClientBehaviorContext.createClientBehaviorContext(
+ facesContext, component, eventName, component.getClientId(facesContext), params);
+ }
+ }
+ if (params == null)
+ {
+ params = Collections.emptyList();
+ }
+
+ boolean hasHandler = eventHandlerScript != null && eventHandlerScript.length() > 0;
+ boolean hasUserHandler = userHandlerScript != null && userHandlerScript.length() > 0;
+ String script = null;
+
+ if (hasHandler && behaviorContext == null && !hasUserHandler)
+ {
+ script = eventHandlerScript;
+ }
+ else if (hasUserHandler && behaviorContext == null && !hasHandler)
+ {
+ script = userHandlerScript;
+ }
+ else if (!hasUserHandler && !hasHandler && behaviorContext != null && behaviors.size() == 1)
+ {
+ ClientBehavior behavior = behaviors.get(0);
+ script = behavior.getScript(behaviorContext);
+ if ("click".equals(eventName) && _isSubmittingBehavior(behavior))
+ {
+ // prevent the default click action if submitting
+ script += ";return false;";
+ }
+ }
+ else
+ {
+ // There are multiple scripts, we will need to chain the methods.
+ int length = behaviors.size();
+ if (hasHandler) { ++length; }
+ if (hasUserHandler) { ++length; }
+ String[] scripts = new String[length];
+ int index = 0;
+ boolean submitting = false;
+ if (hasUserHandler)
+ {
+ scripts[0] = userHandlerScript;
+ index = 1;
+ }
+ for (int size = behaviors.size() + index; index < size; ++index)
+ {
+ ClientBehavior behavior = behaviors.get(index);
+ scripts[index] = behavior.getScript(behaviorContext);
+ submitting |= _isSubmittingBehavior(behavior);
+ }
+ if (hasHandler)
+ {
+ scripts[index] = eventHandlerScript;
+ }
+
+ script = RenderUtils.getChainedJS(true, scripts);
+ if (submitting && "click".equals(eventName))
+ {
+ // prevent the default click action if submitting
+ script += ";return false;";
+ }
+ }
+
+ if (script != null)
+ {
+ facesContext.getResponseWriter().writeAttribute(eventAttributeName, script, null);
+ }
+ }
+
+ protected void encodeParameters(
+ Collection<ClientBehaviorContext.Parameter> params,
+ StringBuilder builder
+ ) throws IOException
+ {
+ boolean first = true;
+ for (ClientBehaviorContext.Parameter param : params)
+ {
+ if (first)
+ {
+ first = false;
+ }
+ else
+ {
+ builder.append(',');
+ }
+ _encodeJsParameter(builder, param.getName(), param.getValue());
+ }
+ }
+
+ private boolean _isSubmittingBehavior(
+ ClientBehavior behavior)
+ {
+ return behavior.getHints().contains(ClientBehaviorHint.SUBMITTING);
+ }
+
+ private void _encodeJsParameter(
+ StringBuilder out,
+ String name,
+ Object value)
+ {
+ out.append('\'');
+ RenderUtils.escapeJS(out, name, true);
+ out.append("\':");
+
+ if (value == null)
+ {
+ out.append("null");
+ }
+ else
+ {
+ out.append('\'');
+ RenderUtils.escapeJS(out, value.toString(), true);
+ out.append('\'');
+ }
+ }
+
protected void renderEncodedActionURI(
FacesContext context,
String name,
@@ -803,8 +952,6 @@
}
}
-
-
/**
* Render a generic CSS styleClass (not one derived from an attribute).
* The styleclass will be passed through the RenderingContext
@@ -876,7 +1023,6 @@
context.getResponseWriter().writeAttribute("class", value, null);
}
-
// Heuristic guess of the maximum length of a typical compressed style
private static final int _COMPRESSED_LENGTH = 4;
Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-api/src/main/java/org/apache/myfaces/trinidad/render/RenderUtils.java Thu Dec 3 21:35:09 2009
@@ -6,9 +6,9 @@
* to you 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
@@ -19,6 +19,8 @@
package org.apache.myfaces.trinidad.render;
import java.io.IOException;
+
+import java.util.ArrayList;
import java.util.List;
import javax.faces.component.NamingContainer;
@@ -27,9 +29,12 @@
import javax.faces.context.FacesContext;
import org.apache.myfaces.trinidad.component.UIXForm;
+import org.apache.myfaces.trinidad.context.Agent;
+import org.apache.myfaces.trinidad.context.RenderingContext;
import org.apache.myfaces.trinidad.logging.TrinidadLogger;
import org.apache.myfaces.trinidad.util.ComponentUtils;
+
/**
* Generic utilities for rendering.
*
@@ -104,21 +109,21 @@
}
/**
- * Given a 'from' component and a relativeId,
+ * Given a 'from' component and a relativeId,
* return the clientId for use at rendering time that will identify the
* id of the component you are referencing on the client.
* This is used for attributes like e.g. "for" and "chooseId".
- *
+ *
* <p>
* e.g., given this hierarchy
* <br/>
- * <f:subview id="aaa">
+ * <f:subview id="aaa">
* <f:subview id="xxx"><br/>
<tr:chooseColor id="cp1" .../><br/>
<f:subview id="yyy"><br/>
<tr:inputColor id="sic1" chooseId="::cp1" .../><br/>
</f:subview><br/>
- </f:subview>
+ </f:subview>
</f:subview><br/>
</p>
<p>
@@ -126,7 +131,7 @@
* The 'relativeId' is "::cp1". ('::' pops up one naming container)
* The return value is 'aaa:xxx:cp1' when
* the clientId of the 'xxx' component is 'aaa:xxx'.
- *
+ *
* </p>
* <p>
* It does not assume that the target component can be located, although it does
@@ -143,7 +148,7 @@
* naming container. If the 'from' component is a naming container, then
* '::' will pop out of the 'from' component itself. A relativeId with ':::' pops up two naming containers, etc.
* ComponentUtils.findRelativeComponent finds and returns the component, whereas
- * this method returns a relativeId that can be used during renderering
+ * this method returns a relativeId that can be used during renderering
* so the component can be found in javascript on the client.
* </p>
* @param context
@@ -162,7 +167,7 @@
{
if (from == null)
return null;
-
+
if ((scopedId == null) || (scopedId.length() == 0))
return null;
@@ -170,41 +175,41 @@
int colonCount = _getColonCount(scopedId);
// colonCount == 0: fully relative
- // colonCount == 1: absolute
+ // colonCount == 1: absolute
// colonCount > 1: for each extra colon after 1, pop out of
// the naming container (to the view root, if naming containers run out)
-
+
if (colonCount == 1)
return scopedId.substring(1);
if (colonCount == 0 && !(from instanceof NamingContainer))
{
- // we do it the fast way if there
+ // we do it the fast way if there
// are no colons and the from isn't a NamingContainer.
// the reason is this use case hasn't changed between the previous
// logic and the current logic for finding the component, so it
- // is already backward compatible, and therefore we don't have to
+ // is already backward compatible, and therefore we don't have to
// call the findComponent code for backward compatibility.
return _getRelativeId(context, from, scopedId, colonCount);
}
-
- //
- // We need to make it backward compatible, and
+
+ //
+ // We need to make it backward compatible, and
// the only way is to use the findRelativeComponent code.
- // This way we'll have a hint that the syntax is 'old' if
- // it can't be found. Plus, findRelativeComponent code has
+ // This way we'll have a hint that the syntax is 'old' if
+ // it can't be found. Plus, findRelativeComponent code has
// backward compatibilty built in.
- UIComponent component =
+ UIComponent component =
ComponentUtils.findRelativeComponent(from, scopedId);
if (component == null && from instanceof NamingContainer)
{
component = ComponentUtils.findRelativeComponent(from.getParent(), scopedId);
if (component != null)
{
- _LOG.warning("DEPRECATED_RELATIVE_ID_SYNTAX",
+ _LOG.warning("DEPRECATED_RELATIVE_ID_SYNTAX",
new Object[] {scopedId, from});
}
}
-
+
// the component wasn't found, but go ahead and return something smart
if (component == null)
{
@@ -217,13 +222,325 @@
}
+ /**
+ * Return the chained JavaScript
+ */
+ public static String getChainedJS(
+ boolean shortCircuit,
+ String... scripts
+ )
+ {
+ if (scripts.length == 0)
+ {
+ return null;
+ }
+
+ if (scripts.length == 1)
+ {
+ return scripts[1];
+ }
+ // Strip out null & 0-length scripts
+ List<String> filteredScripts = new ArrayList<String>(scripts.length);
+ for (String script : scripts)
+ {
+ if (script != null)
+ {
+ script = script.trim();
+ if (script.length() > 0)
+ {
+ filteredScripts.add(script);
+ }
+ }
+ }
+ if (filteredScripts.isEmpty())
+ {
+ return null;
+ }
+ else if (filteredScripts.size() == 1)
+ {
+ return filteredScripts.get(0);
+ }
+
+ StringBuilder builder = new StringBuilder(100);
+ builder.append("return _chainMultiple([");
+ boolean first = true;
+ for (String script : filteredScripts)
+ {
+ if (first)
+ {
+ builder.append('\'');
+ first = false;
+ }
+ else
+ {
+ builder.append(",'");
+ }
+ escapeJS(builder, script, true);
+ builder.append('\'');
+ }
+ RenderingContext rc = RenderingContext.getCurrentInstance();
+ if (rc.getAgent().getType().equals(Agent.TYPE_DESKTOP))
+ {
+ if (shortCircuit)
+ builder.append("],this,event,true);");
+ else
+ builder.append("],this,event);");
+ }
+ else
+ {
+ // Some mobile browsers do not support DOM Event object.
+ // If event is passed, the script crushes before the function gains
+ // control.
+ if (shortCircuit)
+ builder.append("],this,null,true);");
+ else
+ builder.append("],this,null);");
+ }
+
+ return builder.toString();
+ }
+
+ /**
+ * Handle escaping '/', and single quotes, plus escaping text inside of
+ * quotes with just a String for input. If a String in and a String out is
+ * all that is required, this version is more efficient if the String
+ * does not need to be escaped.
+ */
+ public static String escapeJS(
+ String inString
+ )
+ {
+ return escapeJS(inString, false /* inQuotes */);
+ }
+
+ /**
+ * Handle escaping '/', and single quotes, plus escaping text inside of
+ * quotes with just a String for input. If a String in and a String out is
+ * all that is required, this version is more efficient if the String
+ * does not need to be escaped.
+ */
+ public static String escapeJS(
+ String inString,
+ boolean inQuotes
+ )
+ {
+ int charCount = inString.length();
+
+ StringBuilder outBuilder = new StringBuilder(charCount * 2);
+
+ escapeJS(outBuilder, inString, inQuotes);
+
+ // since we only add characters, if the character count is different, we
+ // will have a different output string, otherwise, reuse the input string,
+ // as it is unchanged
+ if (charCount != outBuilder.length())
+ {
+ return outBuilder.toString();
+ }
+ else
+ {
+ return inString;
+ }
+ }
+
+ /**
+ * Handle escaping '/', and single quotes, plus escaping text inside of
+ * quotes.
+ */
+ public static void escapeJS(
+ StringBuilder outBuilder,
+ String inString
+ )
+ {
+ escapeJS(outBuilder, inString, false /* inQuotes */);
+ }
+
+ /**
+ * Handle escaping '/', and single quotes, plus escaping text inside of
+ * quotes.
+ */
+ public static void escapeJS(
+ StringBuilder outBuilder,
+ String inString,
+ boolean inQuotes)
+ {
+ escapeJS(outBuilder, inString, inQuotes, 1 /* escapeCount */);
+ }
+
+ /**
+ * Handle escaping '/', and single quotes, plus escaping text inside of
+ * quotes.
+ */
+ public static void escapeJS(
+ StringBuilder outBuilder,
+ String inString,
+ boolean inQuotes,
+ int escapeCount
+ )
+ {
+ int leadSlashCount = (int)Math.pow(2, escapeCount) - 2;
+ int charCount = inString.length();
+
+ char prevChar = '\u0000';
+
+ //
+ // loop through the string escaping the single quotes at the \'s as
+ // necessary
+ //
+ for (int i = 0; i < charCount; i++)
+ {
+ char currChar = inString.charAt(i);
+
+ if (currChar == '\'')
+ {
+ if (!(inQuotes && (prevChar == '\\')))
+ {
+ // only toggle whetehr we are in quotes if the quote isn't escaped
+ inQuotes = !inQuotes;
+ }
+
+ // handle double-escaping case
+ // eg. "\'" + escapeJS(builder,"a'b",true,2) + "\'" -> "\'a\\\'b\'"
+ for (int j=0; j < leadSlashCount; j++)
+ {
+ outBuilder.append('\\');
+ }
+
+ // always escape quotes
+ outBuilder.append('\\');
+
+ // output the current character
+ outBuilder.append(currChar);
+ }
+ else
+ {
+ if (inQuotes)
+ {
+ if (currChar > 255)
+ {
+ outBuilder.append("\\u");
+ _appendHexString(outBuilder, currChar, 4);
+ }
+ else
+ {
+ if ((currChar > 31) &&
+ (currChar < 128))
+ {
+ if (currChar == '\\')
+ {
+ // escape all \'s in strings
+ outBuilder.append('\\');
+ }
+
+ // output the current character
+ outBuilder.append(currChar);
+ }
+ else
+ {
+ outBuilder.append("\\x");
+ _appendHexString(outBuilder, currChar, 2);
+ }
+ }
+ }
+ else
+ {
+ // Double up backslashes (see bug 1676002)
+ if (currChar == '\\')
+ outBuilder.append('\\');
+
+ // output the current character
+ outBuilder.append(currChar);
+ }
+ }
+
+ // keep track of the previous character to determine whether
+ // single quotes are escaped
+ prevChar = currChar;
+ }
+ }
+
+ private static void _escapeSingleQuotes(
+ StringBuilder outBuilder,
+ String inString
+ )
+ {
+ int charCount = inString.length();
+ char prevChar = '\u0000';
+ boolean inQuotes = false;
+
+ //
+ // loop through the string escaping the single quotes at the \'s as
+ // necessary
+ //
+ for (int i = 0; i < charCount; i++)
+ {
+ char currChar = inString.charAt(i);
+
+ if (currChar == '\'')
+ {
+ if (!(inQuotes && (prevChar == '\\')))
+ {
+ // only toggle whetehr we are in quotes if the quote isn't escaped
+ inQuotes = !inQuotes;
+ }
+
+ // always escape quotes
+ outBuilder.append('\\');
+ }
+ else if ((currChar == '\\') && inQuotes)
+ {
+ // escape all \'s in strings
+ outBuilder.append('\\');
+ }
+
+ // output the current character
+ outBuilder.append(currChar);
+
+ // keep track of the previous character to determine whether
+ // single quotes are escaped
+ prevChar = currChar;
+ }
+ }
+
+ private static void _appendHexString(
+ StringBuilder builder,
+ int number,
+ int minDigits
+ )
+ {
+ String hexString = Integer.toHexString(number);
+
+ int hexLength = hexString.length();
+
+ int zeroPadding = minDigits - hexLength;
+
+ if (zeroPadding > 0)
+ {
+ builder.append('0');
+
+ while (zeroPadding > 1)
+ {
+ builder.append('0');
+ zeroPadding--;
+ }
+ }
+ else
+ {
+ if (zeroPadding < 0)
+ {
+ throw new IllegalArgumentException();
+ }
+ }
+
+ builder.append(hexString);
+ }
// This does NOT use findComponent
// ComponentUtils.findRelativeComponent finds the component, whereas
- // this method returns a relativeId that can be used during renderering
+ // this method returns a relativeId that can be used during renderering
// so the component can be found in javascript on the client.
// This code is faster because it doesn't have to find the component.
- // It is used when the getRelativeId's findRelativeComponent cannot find
+ // It is used when the getRelativeId's findRelativeComponent cannot find
// the component. This way we can return the relativeId anyway.
private static String _getRelativeId(
FacesContext context,
@@ -239,8 +556,8 @@
{
relativeId = relativeId.substring(colonCount);
}
-
- // if the component is not a NamingContainer, then we need to
+
+ // if the component is not a NamingContainer, then we need to
// get the component's naming container and set this as the 'from'.
if (!(from instanceof NamingContainer))
@@ -286,7 +603,7 @@
return null;
}
-
+
// Figure out how many colons
private static int _getColonCount(String relativeId)
{
Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Subform.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Subform.xml?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Subform.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/Subform.xml Thu Dec 3 21:35:09 2009
@@ -16,7 +16,7 @@
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-
+
-->
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:tr="http://myfaces.apache.org/trinidad"
Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGoButton.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGoButton.xml?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGoButton.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-build/src/main/resources/META-INF/maven-faces-plugin/components/trinidad/core/CoreGoButton.xml Thu Dec 3 21:35:09 2009
@@ -152,6 +152,10 @@
</mfp:example>
<mfp:author>Andy Schwartz</mfp:author>
<mfp:component-metadata/>
+ <fmd:client-behavior-holder>true</fmd:client-behavior-holder>
+ <fmd:default-event-name>click</fmd:default-event-name>
+ <fmd:event-names>blur click dblclick focus keydown keypress keyup mousedown mousemove
+ mouseout mouseover mouseup</fmd:event-names>
<mfp:java-constructor>
<mfp:property-name>destination</mfp:property-name>
</mfp:java-constructor>
Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/XhtmlUtils.java Thu Dec 3 21:35:09 2009
@@ -37,6 +37,7 @@
import org.apache.myfaces.trinidad.context.Agent;
import org.apache.myfaces.trinidad.context.RenderingContext;
import org.apache.myfaces.trinidad.logging.TrinidadLogger;
+import org.apache.myfaces.trinidad.render.RenderUtils;
import org.apache.myfaces.trinidadinternal.agent.TrinidadAgent;
import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.Scriptlet;
import org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.jsLibs.XhtmlScriptletFactory;
@@ -200,153 +201,85 @@
writer.endElement("script");
}
-
- /**
+ /**
* Return the chained JavaScript
+ * @deprecated use method in RenderUtils instead
*/
+ @Deprecated
public static String getChainedJS(
String evh1,
String evh2,
boolean shortCircuit
)
{
- //
- // don't chain if one of the Strings is null or empty
- //
- if (evh1 == null)
- return evh2;
-
- if (evh2 == null)
- return evh1;
-
- int evh1Length = evh1.length();
-
- if (evh1Length == 0)
- return evh2;
-
- int evh2Length = evh2.length();
-
- if (evh2Length == 0)
- return evh1;
-
- //
- // Chain the results together
- //
-
- // allocate enough room for the constants plus double the length
- // of the possible-escaped strings
- //
- StringBuilder outBuilder = new StringBuilder(15 +
- evh1Length * 2 +
- 3 +
- evh2Length * 2 +
- 18);
-
- outBuilder.append("return _chain('");
- _escapeSingleQuotes(outBuilder, evh1);
- outBuilder.append("','");
- _escapeSingleQuotes(outBuilder, evh2);
-
- RenderingContext arc = RenderingContext.getCurrentInstance();
- boolean isDesktop = (arc.getAgent().getType().equals(Agent.TYPE_DESKTOP));
-
- if (isDesktop)
- {
- if ( shortCircuit )
- outBuilder.append("',this,event,true)");
- else
- outBuilder.append("',this,event)");
- }
- else
- {
- // Some mobile browsers do not support DOM Event object.
- // If event is passed, the script crushes before the function gains
- // control.
- if ( shortCircuit )
- outBuilder.append("',this,null,true)");
- else
- outBuilder.append("',this,null)");
- }
-
- return outBuilder.toString();
+ return RenderUtils.getChainedJS(shortCircuit, evh1, evh2);
}
-
/**
* Handle escaping '/', and single quotes, plus escaping text inside of
* quotes with just a String for input. If a String in and a String out is
* all that is required, this version is more efficient if the String
* does not need to be escaped.
+ * @deprecated use method in RenderUtils instead
*/
+ @Deprecated
public static String escapeJS(
String inString
)
{
- return escapeJS(inString, false /* inQuotes */);
+ return RenderUtils.escapeJS(inString);
}
-
-
/**
* Handle escaping '/', and single quotes, plus escaping text inside of
* quotes with just a String for input. If a String in and a String out is
* all that is required, this version is more efficient if the String
* does not need to be escaped.
+ * @deprecated use method in RenderUtils instead
*/
+ @Deprecated
public static String escapeJS(
String inString,
boolean inQuotes
)
{
- int charCount = inString.length();
-
- StringBuilder outBuilder = new StringBuilder(charCount * 2);
-
- escapeJS(outBuilder, inString, inQuotes);
-
- // since we only add characters, if the character count is different, we
- // will have a different output string, otherwise, reuse the input string,
- // as it is unchanged
- if (charCount != outBuilder.length())
- {
- return outBuilder.toString();
- }
- else
- {
- return inString;
- }
+ return RenderUtils.escapeJS(inString, inQuotes);
}
-
/**
* Handle escaping '/', and single quotes, plus escaping text inside of
* quotes.
+ * @deprecated use method in RenderUtils instead
*/
+ @Deprecated
public static void escapeJS(
StringBuilder outBuilder,
String inString
)
{
- escapeJS(outBuilder, inString, false /* inQuotes */);
+ RenderUtils.escapeJS(outBuilder, inString);
}
-
/**
* Handle escaping '/', and single quotes, plus escaping text inside of
* quotes.
+ * @deprecated use method in RenderUtils instead
*/
+ @Deprecated
public static void escapeJS(
StringBuilder outBuilder,
String inString,
boolean inQuotes)
{
- escapeJS(outBuilder, inString, inQuotes, 1 /* escapeCount */);
+ RenderUtils.escapeJS(outBuilder, inString, inQuotes);
}
/**
* Handle escaping '/', and single quotes, plus escaping text inside of
* quotes.
+ * @deprecated use method in RenderUtils instead
*/
+ @Deprecated
public static void escapeJS(
StringBuilder outBuilder,
String inString,
@@ -354,163 +287,9 @@
int escapeCount
)
{
- int leadSlashCount = (int)Math.pow(2, escapeCount) - 2;
- int charCount = inString.length();
-
- char prevChar = '\u0000';
-
- //
- // loop through the string escaping the single quotes at the \'s as
- // necessary
- //
- for (int i = 0; i < charCount; i++)
- {
- char currChar = inString.charAt(i);
-
- if (currChar == '\'')
- {
- if (!(inQuotes && (prevChar == '\\')))
- {
- // only toggle whetehr we are in quotes if the quote isn't escaped
- inQuotes = !inQuotes;
- }
-
- // handle double-escaping case
- // eg. "\'" + escapeJS(builder,"a'b",true,2) + "\'" -> "\'a\\\'b\'"
- for (int j=0; j < leadSlashCount; j++)
- {
- outBuilder.append('\\');
- }
-
- // always escape quotes
- outBuilder.append('\\');
-
- // output the current character
- outBuilder.append(currChar);
- }
- else
- {
- if (inQuotes)
- {
- if (currChar > 255)
- {
- outBuilder.append("\\u");
- _appendHexString(outBuilder, currChar, 4);
- }
- else
- {
- if ((currChar > 31) &&
- (currChar < 128))
- {
- if (currChar == '\\')
- {
- // escape all \'s in strings
- outBuilder.append('\\');
- }
-
- // output the current character
- outBuilder.append(currChar);
- }
- else
- {
- outBuilder.append("\\x");
- _appendHexString(outBuilder, currChar, 2);
- }
- }
- }
- else
- {
- // Double up backslashes (see bug 1676002)
- if (currChar == '\\')
- outBuilder.append('\\');
-
- // output the current character
- outBuilder.append(currChar);
- }
- }
-
- // keep track of the previous character to determine whether
- // single quotes are escaped
- prevChar = currChar;
- }
+ RenderUtils.escapeJS(outBuilder, inString, inQuotes, escapeCount);
}
- private static void _appendHexString(
- StringBuilder builder,
- int number,
- int minDigits
- )
- {
- String hexString = Integer.toHexString(number);
-
- int hexLength = hexString.length();
-
- int zeroPadding = minDigits - hexLength;
-
- if (zeroPadding > 0)
- {
- builder.append('0');
-
- while (zeroPadding > 1)
- {
- builder.append('0');
- zeroPadding--;
- }
- }
- else
- {
- if (zeroPadding < 0)
- {
- throw new IllegalArgumentException();
- }
- }
-
- builder.append(hexString);
- }
-
-
- private static void _escapeSingleQuotes(
- StringBuilder outBuilder,
- String inString
- )
- {
- int charCount = inString.length();
- char prevChar = '\u0000';
- boolean inQuotes = false;
-
- //
- // loop through the string escaping the single quotes at the \'s as
- // necessary
- //
- for (int i = 0; i < charCount; i++)
- {
- char currChar = inString.charAt(i);
-
- if (currChar == '\'')
- {
- if (!(inQuotes && (prevChar == '\\')))
- {
- // only toggle whetehr we are in quotes if the quote isn't escaped
- inQuotes = !inQuotes;
- }
-
- // always escape quotes
- outBuilder.append('\\');
- }
- else if ((currChar == '\\') && inQuotes)
- {
- // escape all \'s in strings
- outBuilder.append('\\');
- }
-
- // output the current character
- outBuilder.append(currChar);
-
- // keep track of the previous character to determine whether
- // single quotes are escaped
- prevChar = currChar;
- }
- }
public static String getJSIdentifier(String clientId)
{
if (clientId == null)
@@ -526,7 +305,7 @@
FastMessageFormat formatter = new FastMessageFormat(pattern);
return formatter.format(parameters);
}
-
+
/*
* This method returns the encoded parameter name or paramater value
* for the Non-JavaScript browsers
@@ -535,45 +314,45 @@
{
return param + XhtmlConstants.NO_JS_PARAMETER_KEY;
}
-
+
/*
* This method returns the name attribute of HTML elements for Non-JavaScript
- * browsers. It is encoded with parameter name and value pair.
+ * browsers. It is encoded with parameter name and value pair.
*/
public static String getEncodedNameAttribute(String param[])
{
// The incoming array(param[]) must contain parameter name and value pair
// in the order of <<name1>>, <<value1>>, <<name2>>, <<value2>>,...
- // The encoded parameter name and value for the above would be
+ // The encoded parameter name and value for the above would be
// <<name1>><<encodingKey>><<value1>><<encodingKey>>
// <<name2>><<encodingKey>><<value2>>
-
+
int noOfParam = param.length;
int bufferLen = 0;
-
- // Calculate what would be the length of the encoded param name and
+
+ // Calculate what would be the length of the encoded param name and
// value pair. We need it to initialize the buffer size of StringBuilder.
for(int i = 0; i < noOfParam; i++)
{
bufferLen += param[i].length();
}
- // If there are N parameter names and values, there would be N-1
+ // If there are N parameter names and values, there would be N-1
// encoding key so add its length also
bufferLen += (noOfParam -1) * XhtmlConstants.NO_JS_PARAMETER_KEY.length();
-
+
StringBuilder nameAttri = new StringBuilder(bufferLen);
-
+
//Encode all the parameter names and values except the last parameter value
for(int i = 0; i < noOfParam-1; i++)
{
nameAttri.append(getEncodedParameter(param[i]));
}
-
+
nameAttri.append(param[noOfParam-1]);
-
+
return(nameAttri.toString());
}
-
+
/** HashMap mapping names to their scriptlets */
private static Map<Object, Scriptlet> _sScriptletTable =
Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/main/javascript/META-INF/adf/jsLibs/Core.js Thu Dec 3 21:35:09 2009
@@ -1847,13 +1847,13 @@
// WM5.
if (isPartial && _supportsPPR())
{
- // In the case of Windows-mobile(WM) browsers, during rendering,
+ // In the case of Windows-mobile(WM) browsers, during rendering,
// Trinidad stores the value of the request-header field, UA-pixels,
- // into a hidden-parameter's value attribute. WM browsers' PPRs don't
- // contain UA-pixels in their request-headers. So during a WM browser's
- // PPR, we need to manually set the field, UA-pixels, into the
+ // into a hidden-parameter's value attribute. WM browsers' PPRs don't
+ // contain UA-pixels in their request-headers. So during a WM browser's
+ // PPR, we need to manually set the field, UA-pixels, into the
// request-header with the hidden parameter's value.
-
+
if (_agent.isPIE || _agent.isWindowsMobile6)
{
var header = new Array(1);
@@ -1861,9 +1861,9 @@
TrPage.getInstance().sendPartialFormPost(form, parameters, header);
}
else
- {
+ {
TrPage.getInstance().sendPartialFormPost(form, parameters);
- }
+ }
}
else
{
@@ -3148,14 +3148,35 @@
shortCircuit // shortcircuit if handler 1 false
)
{
- var result1 = _callChained(evh1, target, event);
- if ( shortCircuit && (result1 == false))
- return false;
- var result2 = _callChained(evh2, target, event);
+ return _chainMultiple([evh1, evh2], target, event);
+}
- // since undefined results should be evaluated as true,
- // return false only if either result1 or result2 return false
- return !((result1 == false) || (result2 == false));
+/**
+ * Chain two or more functions together returning whether the default
+ * event handling should occur
+ */
+function _chainMultiple(
+ eventHandlers, // Array of event handler JavaScript strings
+ target, // target of event
+ event, // the fired event (or null)
+ shortCircuit // shortcircuit if handler 1 false
+ )
+{
+ var overallResult = true;
+ for (var i = 0, size = eventHandlers.length; i < size; ++i)
+ {
+ var result = _callChained(eventHandlers[i], target, event);
+ if (result === false)
+ {
+ if (shortCircuit)
+ {
+ return false;
+ }
+ overallResult = false;
+ }
+ }
+
+ return overallResult;
}
function _callChained(
@@ -3206,11 +3227,8 @@
{
return true;
}
-
}
-
-
// Enforce the maximum length of a form element
// Returns true if event processing should continue, false otherwise.
function _checkLength(formElement, length, event)
Modified: myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimal-golden.xml
URL: http://svn.apache.org/viewvc/myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimal-golden.xml?rev=886930&r1=886929&r2=886930&view=diff
==============================================================================
--- myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimal-golden.xml (original)
+++ myfaces/trinidad/branches/ar_clientBehaviors/trinidad-impl/src/test/resources/org/apache/myfaces/trinidadinternal/renderkit/golden/body-minimal-golden.xml Thu Dec 3 21:35:09 2009
@@ -1,356 +1,356 @@
-<results>
- <body
- id="mainId"
- onload="_checkLoad()"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[id,myBodyId]-->
-
- <body
- id="myBodyId"
- onload="_checkLoad()"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[shortDesc,myShortDesc]-->
-
- <body
- id="mainId"
- onload="_checkLoad()"
- onunload="_checkUnload(event)"
- title="myShortDesc"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onclick,null]-->
-
- <body
- id="mainId"
- onclick="test-onclick"
- onload="_checkLoad()"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[ondblclick,null]-->
-
- <body
- id="mainId"
- ondblclick="test-ondblclick"
- onload="_checkLoad()"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onkeydown,null]-->
-
- <body
- id="mainId"
- onkeydown="test-onkeydown"
- onload="_checkLoad()"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onkeypress,null]-->
-
- <body
- id="mainId"
- onkeypress="test-onkeypress"
- onload="_checkLoad()"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onkeyup,null]-->
-
- <body
- id="mainId"
- onkeyup="test-onkeyup"
- onload="_checkLoad()"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onload,null]-->
-
- <body
- id="mainId"
- onload="return _chain('_checkLoad()','test-onload',this,event)"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onmousedown,null]-->
-
- <body
- id="mainId"
- onload="_checkLoad()"
- onmousedown="test-onmousedown"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onmousemove,null]-->
-
- <body
- id="mainId"
- onload="_checkLoad()"
- onmousemove="test-onmousemove"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onmouseout,null]-->
-
- <body
- id="mainId"
- onload="_checkLoad()"
- onmouseout="test-onmouseout"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onmouseover,null]-->
-
- <body
- id="mainId"
- onload="_checkLoad()"
- onmouseover="test-onmouseover"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onmouseup,null]-->
-
- <body
- id="mainId"
- onload="_checkLoad()"
- onmouseup="test-onmouseup"
- onunload="_checkUnload(event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-<!--AttributeTest[onunload,null]-->
-
- <body
- id="mainId"
- onload="_checkLoad()"
- onunload="return _chain('_checkUnload(event)','test-onunload',this,event)"
- >
-
- <a
- name="top"
- >
-
- </a>
- <noscript
- >
- This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
- </noscript>
- <span
- id="id_text"
- >
- Enter
- </span>
- </body>
-</results>
+<results>
+ <body
+ id="mainId"
+ onload="_checkLoad()"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[id,myBodyId]-->
+
+ <body
+ id="myBodyId"
+ onload="_checkLoad()"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[shortDesc,myShortDesc]-->
+
+ <body
+ id="mainId"
+ onload="_checkLoad()"
+ onunload="_checkUnload(event)"
+ title="myShortDesc"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onclick,null]-->
+
+ <body
+ id="mainId"
+ onclick="test-onclick"
+ onload="_checkLoad()"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[ondblclick,null]-->
+
+ <body
+ id="mainId"
+ ondblclick="test-ondblclick"
+ onload="_checkLoad()"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onkeydown,null]-->
+
+ <body
+ id="mainId"
+ onkeydown="test-onkeydown"
+ onload="_checkLoad()"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onkeypress,null]-->
+
+ <body
+ id="mainId"
+ onkeypress="test-onkeypress"
+ onload="_checkLoad()"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onkeyup,null]-->
+
+ <body
+ id="mainId"
+ onkeyup="test-onkeyup"
+ onload="_checkLoad()"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onload,null]-->
+
+ <body
+ id="mainId"
+ onload="return _chainMultiple(['_checkLoad()','test-onload'],this,event);"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onmousedown,null]-->
+
+ <body
+ id="mainId"
+ onload="_checkLoad()"
+ onmousedown="test-onmousedown"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onmousemove,null]-->
+
+ <body
+ id="mainId"
+ onload="_checkLoad()"
+ onmousemove="test-onmousemove"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onmouseout,null]-->
+
+ <body
+ id="mainId"
+ onload="_checkLoad()"
+ onmouseout="test-onmouseout"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onmouseover,null]-->
+
+ <body
+ id="mainId"
+ onload="_checkLoad()"
+ onmouseover="test-onmouseover"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onmouseup,null]-->
+
+ <body
+ id="mainId"
+ onload="_checkLoad()"
+ onmouseup="test-onmouseup"
+ onunload="_checkUnload(event)"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+<!--AttributeTest[onunload,null]-->
+
+ <body
+ id="mainId"
+ onload="_checkLoad()"
+ onunload="return _chainMultiple(['_checkUnload(event)','test-onunload'],this,event);"
+ >
+
+ <a
+ name="top"
+ >
+
+ </a>
+ <noscript
+ >
+ This page uses JavaScript and requires a JavaScript enabled browser.Your browser is not JavaScript enabled.
+ </noscript>
+ <span
+ id="id_text"
+ >
+ Enter
+ </span>
+ </body>
+</results>