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

Commit 287074b

Browse files
committed
fix(background): handle refresh better
1 parent bd32b00 commit 287074b

File tree

2 files changed

+48
-20
lines changed

2 files changed

+48
-20
lines changed

background.js

Lines changed: 46 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,50 @@
1-
var buffer = [];
2-
function addToBuffer(message) {
3-
buffer.push(message);
1+
2+
// tabId -> devtool port
3+
var inspectedTabs = {};
4+
5+
// TODO: keep track of app state here
6+
// tabId -> list of buffered events
7+
var buffer = {};
8+
9+
function bufferOrForward(message, sender) {
10+
var tabId = sender.tab.id,
11+
devToolsPort = inspectedTabs[tabId];
12+
13+
if (devToolsPort) {
14+
devToolsPort.postMessage(message);
15+
}
16+
if (!buffer[tabId] || message === 'refresh') {
17+
resetState(tabId);
18+
}
19+
buffer[tabId].push(message);
420
}
5-
chrome.runtime.onMessage.addListener(addToBuffer);
21+
22+
// context script –> background
23+
chrome.runtime.onMessage.addListener(bufferOrForward);
24+
625
chrome.runtime.onConnect.addListener(function(devToolsPort) {
7-
chrome.runtime.onMessage.removeListener(addToBuffer);
8-
buffer.forEach(function(msg) {
9-
devToolsPort.postMessage(msg);
10-
});
11-
buffer = [];
12-
13-
devToolsPort.onMessage.addListener(function(inspectedTabId) {
14-
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo) {
15-
if(tabId === inspectedTabId && changeInfo.status === 'loading') {
16-
devToolsPort.postMessage('refresh');
17-
}
26+
27+
devToolsPort.onMessage.addListener(registerInspectedTabId);
28+
29+
function registerInspectedTabId(inspectedTabId) {
30+
inspectedTabs[inspectedTabId] = devToolsPort;
31+
32+
if (!buffer[inspectedTabId]) {
33+
resetState(inspectedTabId);
34+
}
35+
buffer[inspectedTabId].forEach(function(msg) {
36+
devToolsPort.postMessage(msg);
37+
});
38+
39+
devToolsPort.onDisconnect.addListener(function () {
40+
delete inspectedTabs[inspectedTabId];
1841
});
19-
});
20-
// context script –> background
21-
chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
22-
devToolsPort.postMessage(msg);
23-
});
42+
43+
//devToolsPort.onMessage.removeListener(registerInspectedTabId);
44+
}
45+
2446
});
47+
48+
function resetState(tabId) {
49+
buffer[tabId] = [];
50+
}

inject.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ if (document.cookie.indexOf('__ngDebug=true') != -1) {
33
}
44

55
function bootstrapHint () {
6+
chrome.extension.sendMessage('refresh');
7+
68
var html = document.getElementsByTagName('html')[0];
79

810
var eventProxyElement = document.createElement('div');

0 commit comments

Comments
 (0)