/**
* Called when our content script opens connection to this extension.
*/
-var portCounter = 0; // Additional tab name differentiation
chrome.runtime.onConnect.addListener(function(port) {
- // When a new tab connects, it has no custom name. Since a tab
- // with the same tab number can connect multiple times -- sometimes
- // in an unexpected order -- give each port a unique name. This
- // name will persist for the life of the connected port object.
- //
- // The port name can normally be any string, but our Java backend
- // currently expects a Long (numeric) value, so format the port name
- // as the tab number, followed by up to 12 zeroes, followed by our
- // auto-increment. This can accommodate more than trillion unique
- // tab identifiers before the browser has to be restarted.
- //
- // TODO: teach the Java backend to treat "msgid" as a String
- // instead of a Long so we can use tab names like:
- // port.name = tabNumber + "-" + increment++;
- if (port.name == "") {
- let base = (port.sender.tab.id + "").padEnd(12, "0");
- port.name = Number(base) + portCounter++;
- }
-
- var tabId = port.name;
+ // Apply a random unique name to each newly connected port.
+ // This name will persist for the life of the port object.
+ let tabId = port.name = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER - 1);
browserPorts[tabId] = port;