package org.ovirt.engine.ui.webadmin.system; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArrayString; /** * Contains HTML5 {@code message} event data. */ public class MessageEventData { private static final String ANY_ORIGIN = "*"; //$NON-NLS-1$ // Origin of the window that sent the message private final String origin; // Message data, i.e. String or JavaScriptObject instance private final Object data; // Window that sent the message private final JavaScriptObject sourceWindow; public MessageEventData(String origin, Object data, JavaScriptObject sourceWindow) { this.origin = origin; this.data = data; this.sourceWindow = sourceWindow; } /** * Returns {@code true} if event origin matches one of {@code allowedSourceOrigins}. * <p> * Note that "*" translates to "any origin", as per HTML5 cross-window messaging specification. */ public boolean originMatches(JsArrayString allowedSourceOrigins) { for (int i = 0; i < allowedSourceOrigins.length(); i++) { String allowedOrigin = allowedSourceOrigins.get(i); if (allowedOrigin != null && (ANY_ORIGIN.equals(allowedOrigin) || allowedOrigin.equals(origin))) { return true; } } return false; } public String getOrigin() { return origin; } public Object getData() { return data; } public JavaScriptObject getSourceWindow() { return sourceWindow; } }