Skip to content

Commit d125d65

Browse files
committed
Fix DevTools panel disconnecting in Chrome after 30 seconds of inactivity
WE2-967 Includes minor cleanup for DevTools related files Signed-off-by: Tanel Metsar <[email protected]>
1 parent f925152 commit d125d65

File tree

3 files changed

+71
-33
lines changed

3 files changed

+71
-33
lines changed

static/views/devtools/panels/devtools-webeid.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,13 @@
2222

2323
<div class="version" title="Extension version"></div>
2424
</header>
25+
2526
<main>
2627
<section data-page="events">
2728
<div id="event-list"></div>
2829
<pre id="event-details"></pre>
2930
</section>
31+
3032
<section data-page="log">
3133
<div class="toolbar">
3234
<div class="group">
@@ -44,12 +46,12 @@
4446
</div>
4547
<div id="log-messages"></div>
4648
</section>
49+
4750
<section data-page="settings">
4851
<div class="warning">The settings you change here apply to all pages and persist even after closing DevTools.</div>
4952
<table>
5053
<tbody id="settings-list"></tbody>
5154
</table>
52-
5355
</section>
5456
</main>
5557

static/views/devtools/panels/devtools-webeid.js

Lines changed: 68 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -24,38 +24,78 @@ import events from "./webeid-events.js";
2424
import log from "./webeid-log.js";
2525
import settings from "./webeid-settings.js";
2626

27+
(function connect() {
28+
const backgroundConnection = chrome.runtime.connect({
29+
name: "webeid-devtools",
30+
});
2731

28-
const backgroundConnection = chrome.runtime.connect({
29-
name: "webeid-devtools",
30-
});
32+
const keepAliveInterval = setInterval(() => {
33+
backgroundConnection.postMessage({ devtools: "keep-alive" });
34+
}, 20000);
3135

32-
backgroundConnection.onMessage.addListener((message) => {
33-
if (!message.tabId || message.tabId === chrome.devtools.inspectedWindow.tabId) {
34-
if (message.devtools === "log") {
35-
log.append(message);
36-
} else if (message.devtools === "event") {
37-
events.append(message);
36+
backgroundConnection.onDisconnect.addListener(() => {
37+
clearInterval(keepAliveInterval);
3838

39-
const direction = (
40-
message.type === "request"
41-
? "—►"
42-
: message.type === "response"
43-
? "◄—"
44-
: "?"
45-
);
39+
log.append({
40+
source: "devtools-webeid.js",
41+
type: "debug",
42+
time: new Date().toISOString().match(/T((.)*)Z/)[1],
43+
message: [
44+
"DevTools panel disconnected. Attempting to reconnect."
45+
],
46+
});
47+
48+
try {
49+
connect();
4650

4751
log.append({
48-
time: message.time,
49-
type: "event",
50-
source: `${message.layer1} ${direction} ${message.layer2}`,
51-
message: [message.data],
52+
source: "devtools-webeid.js",
53+
type: "debug",
54+
time: new Date().toISOString().match(/T((.)*)Z/)[1],
55+
message: [
56+
"DevTools panel reconnected."
57+
],
5258
});
53-
} else if (message.devtools === "settings") {
54-
const { config, defaultConfig } = message;
55-
56-
settings.render(config, defaultConfig, backgroundConnection);
57-
58-
document.querySelector('header .version').textContent = defaultConfig.VERSION;
59+
} catch {
60+
log.append({
61+
source: "devtools-webeid.js",
62+
type: "error",
63+
time: new Date().toISOString().match(/T((.)*)Z/)[1],
64+
message: [
65+
"Web eID DevTools panel disconnected from the extension. Please reopen the browser DevTools to continue."
66+
],
67+
});
68+
}
69+
});
70+
71+
backgroundConnection.onMessage.addListener((message) => {
72+
if (!message.tabId || message.tabId === chrome.devtools.inspectedWindow.tabId) {
73+
if (message.devtools === "log") {
74+
log.append(message);
75+
} else if (message.devtools === "event") {
76+
events.append(message);
77+
78+
const direction = (
79+
message.type === "request"
80+
? "—►"
81+
: message.type === "response"
82+
? "◄—"
83+
: "?"
84+
);
85+
86+
log.append({
87+
time: message.time,
88+
type: "event",
89+
source: `${message.layer1} ${direction} ${message.layer2}`,
90+
message: [message.data],
91+
});
92+
} else if (message.devtools === "settings") {
93+
const { config, defaultConfig } = message;
94+
95+
settings.render(config, defaultConfig, backgroundConnection);
96+
97+
document.querySelector('header .version').textContent = defaultConfig.VERSION;
98+
}
5999
}
60-
}
61-
});
100+
});
101+
})();

static/views/devtools/panels/webeid-log.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,8 @@ function createLogEntryElement(type, time, message, source) {
4747

4848
function stringifyError(error) {
4949
const {
50-
fileName,
51-
lineNumber,
52-
columnNumber,
5350
message,
5451
name,
55-
code,
5652
stack,
5753
} = error;
5854

0 commit comments

Comments
 (0)