package com.google.gwt.nextgen.webmessaging.client; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; import com.google.gwt.dom.client.IFrameElement; import com.google.gwt.event.shared.HandlerRegistration; import com.google.gwt.user.client.ui.Widget; public class WindowProxy extends Widget implements HasMessageHandlers { protected WindowProxy() {} public static native WindowProxy get() /*-{ return $wnd; }-*/; public static native WindowProxy get(IFrameElement iframe) /*-{ return iframe.contentWindow; }-*/; public native void postMessage(JavaScriptObject message, String targetOrigin) /*-{ this.postMessage(message, targetOrigin); }-*/; public native void postMessage(JavaScriptObject message, String targetOrigin, JsArray<MessagePort> ports ) /*-{ this.postMessage(message, targetOrigin, ports); }-*/; public static JsArray<MessagePort> jsArray(MessagePort... ports) { JsArray<MessagePort> jsArray = JavaScriptObject.createArray().cast(); for (MessagePort port: ports) { jsArray.push(port); } return jsArray; } class SimpleHandlerRegistration implements HandlerRegistration { public SimpleHandlerRegistration(WindowProxy proxy, MessageHandler handler) { } @Override public void removeHandler() { } } public HandlerRegistration addMessageHandler(MessageHandler handler) { return addDomHandler(handler, DomMessageEvent.getType()); } /* * document.addEventListener("message", function(e) {. . * document.getElementById("test").textContent = e.domain + " said: " + e.data; * }, false); */ }