Skip to content
This repository has been archived by the owner on Feb 9, 2020. It is now read-only.

Commit

Permalink
fix(background): handle refresh better
Browse files Browse the repository at this point in the history
  • Loading branch information
btford committed Dec 22, 2014
1 parent bd32b00 commit 287074b
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 20 deletions.
66 changes: 46 additions & 20 deletions background.js
@@ -1,24 +1,50 @@
var buffer = [];
function addToBuffer(message) {
buffer.push(message);

// tabId -> devtool port
var inspectedTabs = {};

// TODO: keep track of app state here
// tabId -> list of buffered events
var buffer = {};

function bufferOrForward(message, sender) {
var tabId = sender.tab.id,
devToolsPort = inspectedTabs[tabId];

if (devToolsPort) {
devToolsPort.postMessage(message);
}
if (!buffer[tabId] || message === 'refresh') {
resetState(tabId);
}
buffer[tabId].push(message);
}
chrome.runtime.onMessage.addListener(addToBuffer);

// context script –> background
chrome.runtime.onMessage.addListener(bufferOrForward);

chrome.runtime.onConnect.addListener(function(devToolsPort) {
chrome.runtime.onMessage.removeListener(addToBuffer);
buffer.forEach(function(msg) {
devToolsPort.postMessage(msg);
});
buffer = [];

devToolsPort.onMessage.addListener(function(inspectedTabId) {
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo) {
if(tabId === inspectedTabId && changeInfo.status === 'loading') {
devToolsPort.postMessage('refresh');
}

devToolsPort.onMessage.addListener(registerInspectedTabId);

function registerInspectedTabId(inspectedTabId) {
inspectedTabs[inspectedTabId] = devToolsPort;

if (!buffer[inspectedTabId]) {
resetState(inspectedTabId);
}
buffer[inspectedTabId].forEach(function(msg) {
devToolsPort.postMessage(msg);
});

devToolsPort.onDisconnect.addListener(function () {
delete inspectedTabs[inspectedTabId];
});
});
// context script –> background
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
devToolsPort.postMessage(msg);
});

//devToolsPort.onMessage.removeListener(registerInspectedTabId);
}

});

function resetState(tabId) {
buffer[tabId] = [];
}
2 changes: 2 additions & 0 deletions inject.js
Expand Up @@ -3,6 +3,8 @@ if (document.cookie.indexOf('__ngDebug=true') != -1) {
}

function bootstrapHint () {
chrome.extension.sendMessage('refresh');

var html = document.getElementsByTagName('html')[0];

var eventProxyElement = document.createElement('div');
Expand Down

0 comments on commit 287074b

Please sign in to comment.