Example usage for com.google.gwt.chrome.crx.client Port postMessage

List of usage examples for com.google.gwt.chrome.crx.client Port postMessage

Introduction

In this page you can find the example usage for com.google.gwt.chrome.crx.client Port postMessage.

Prototype

public final native void postMessage(JavaScriptObject msg) ;

Source Link

Usage

From source file:com.google.speedtracer.client.BackgroundPage.java

License:Apache License

/**
 * Helper function that loads data from a file. This should only get called
 * when the port name is either {@link DataLoader.DATA_LOAD} or
 * {@link DataLoader.RAW_DATA_LOAD}.//from  w  w  w  .j  a  v  a2s . com
 */
private void doDataLoad(final Port port) {
    BrowserConnectionState browserConn = browserConnectionMap.get(FILE_BROWSER_ID);
    if (browserConn == null) {
        browserConn = new BrowserConnectionState();
        browserConnectionMap.put(FILE_BROWSER_ID, browserConn);
    }

    // In situation where we open a file in a tab that was previously
    // used to open a file... we dont care. Overwrite it.
    final TabModel tabModel = new TabModel(browserAction.mtIcon());
    int tabId = port.getSender().getTab().getId();

    if (port.getName().equals(DataLoader.DATA_LOAD)) {
        final LoadFileDataInstance dataInstance = LoadFileDataInstance.create(port);
        tabModel.dataInstance = dataInstance;
        browserConn.tabMap.put(tabId, tabModel);

        // Connect the datainstance to receive data from the data_loader.
        port.getOnMessageEvent().addListener(new MessageEvent.Listener() {
            VersionedRecordConverter converter;
            boolean receivedFirstMessage;

            public void onMessage(MessageEvent.Message message) {
                if (!receivedFirstMessage) {
                    receivedFirstMessage = true;
                    dataInstance.onTimelineProfilerStarted();
                }
                EventRecordMessage eventRecordMessage = message.cast();
                if (!getVersion().equals(eventRecordMessage.getVersion())) {
                    if (converter == null) {
                        converter = VersionedRecordConverter.create(eventRecordMessage.getVersion());
                    }
                    converter.convert(dataInstance, eventRecordMessage.getEventRecord());
                    return;
                }
                dataInstance.onEventRecord(eventRecordMessage.getEventRecord());
            }
        });
    } else {
        // We are dealing with RAW data (untransformed inspector data) that still
        // needs conversion.
        final Proxy proxy = new Proxy(tabId) {
            @Override
            protected void connectToDataSource() {
                // Tell the data_loader content script to start sending.
                port.postMessage(LoadFileDataInstance.createAck());
            }
        };

        // Connect the DataInstance to receive data from the data_loader
        port.getOnMessageEvent().addListener(new MessageEvent.Listener() {
            boolean receivedFirstMessage;

            public void onMessage(MessageEvent.Message message) {
                if (!receivedFirstMessage) {
                    receivedFirstMessage = true;
                    tabModel.dataInstance.onTimelineProfilerStarted();
                }
                PageEventMessage pageEventMessage = message.cast();
                // We don't support versioning for RAW data since it would mean
                // maintaining support for multiple Chrome versions. We assume
                // that RAW data should always be the same format as the current
                // Chrome build.
                proxy.dispatchDebuggerEventRecord(pageEventMessage.getDebuggerRecord());
            }
        });

        tabModel.dataInstance = ChromeDebuggerDataInstance.create(proxy);
        browserConn.tabMap.put(tabId, tabModel);
    }

    tabModel.tabDescription = TabDescription.create(tabId, port.getSender().getTab().getTitle(),
            port.getSender().getTab().getUrl());
    openMonitor(FILE_BROWSER_ID, tabId, tabModel);
}

From source file:com.google.speedtracer.headlessextension.client.HeadlessBackgroundPage.java

License:Apache License

/**
 * This method provides a convenient place to annotate sending messages with
 * debugging./*  w ww  .j  av a 2 s .  co m*/
 */
private static void sendToContentScript(Port port, Port.Message message) {
    port.postMessage(message);
}