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

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

Introduction

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

Prototype

public final native String getName() ;

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  . ja v  a 2 s.c o  m*/
 */
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.client.BackgroundPage.java

License:Apache License

private void listenForContentScripts() {
    // A content script connects to us when we want to load data.
    Chrome.getExtension().getOnConnectEvent().addListener(new ConnectEvent.Listener() {
        public void onConnect(final Port port) {
            String portName = port.getName();
            if (portName.equals(DataLoader.DATA_LOAD) || portName.equals(DataLoader.RAW_DATA_LOAD)) {
                // We are loading data.
                doDataLoad(port);//  w ww  .  j  a  v a 2 s .com
            }
        }
    });

    // A content script can message us if it detects that we should auto open
    // Speed Tracer for a trampoline file.
    Chrome.getExtension().getOnRequestEvent().addListener(new RequestEvent.Listener() {
        public void onRequest(JavaScriptObject request, Sender sender, SendResponse sendResponse) {
            if (DataBag.getBooleanProperty(request, "autoOpen")) {
                // Open Speed Tracer.
                Tab tab = sender.getTab();
                monitorTabClickListener.onClicked(tab);
                // The Monitor coming alive and calling back should be
                // asynchronous. We should be able to stick in the SendResponse
                // callback in before the Monitor calls back, and then notify the
                // content script after we know the monitor is opened and ready.
                BrowserConnectionState browserConnection = browserConnectionMap.get(CHROME_BROWSER_ID);
                browserConnection.tabMap.get(tab.getId()).monitorOpenedCallback = sendResponse.cast();
            }
        }
    });
}

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

License:Apache License

private void listenForExternalExtensions(final ExternalExtensionListener exListener) {
    // External extensions can also be used as data sources. Hook this up.
    Chrome.getExtension().getOnRequestExternalEvent().addListener(new RequestExternalEvent.Listener() {
        public void onRequestExternal(JavaScriptObject request, Sender sender, SendResponse sendResponse) {
            // Ensure the extension attempting to connect is not blacklisted.
            if (!ExternalExtensionDataInstance.isBlackListed(sender.getId())) {
                final ConnectRequest connectRequest = request.cast();
                final int browserId = connectRequest.getBrowserId();

                BrowserConnectionState connection = browserConnectionMap.get(browserId);

                if (connection == null) {
                    // If this is the first opened connection for this browser type,
                    // then we provision an entry for it in the browser map.
                    exListener.onBrowserConnected(browserId);
                }//from w  ww . jav  a 2  s. c  o m

                final int tabId = connectRequest.getTabId();
                final String portName = ExternalExtensionDataInstance.SPEED_TRACER_EXTERNAL_PORT + browserId
                        + "-" + tabId;

                // So we will now begin listening for connections on a dedicated
                // port name for this browser/tab combo.
                Chrome.getExtension().getOnConnectExternalEvent()
                        .addListener(new ConnectExternalEvent.Listener() {
                            public void onConnectExternal(Port port) {
                                if (portName.equals(port.getName())) {
                                    // Provision a DataInstance and a TabDescription.
                                    DataInstance dataInstance = ExternalExtensionDataInstance.create(port);
                                    TabDescription tabDescription = TabDescription.create(tabId,
                                            connectRequest.getTitle(), connectRequest.getUrl());

                                    // Now remember the DataInstance and TabDescription, and
                                    // open a Monitor.
                                    exListener.onTabMonitorStarted(browserId, tabDescription, dataInstance);
                                }
                            }
                        });

                // Send a response that tells the external extension what port
                // name to connect to.
                sendResponse.invoke(ExternalExtensionDataInstance.createResponse(portName));
            }
        }
    });
}