List of usage examples for com.google.gwt.chrome.crx.client Port getName
public final native String getName() ;
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)); } } }); }