Skip to content

Commit 12bb0b6

Browse files
committed
add config for disabling redirects in devtools
1 parent fd89332 commit 12bb0b6

7 files changed

Lines changed: 60 additions & 23 deletions

File tree

config/config.exs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ if config_env() == :dev do
4040
]
4141

4242
config :live_debugger,
43+
devtools_allow_redirects: false,
4344
live_reload: [
4445
patterns: [
4546
~r"priv/static/.*(js|css|svg)$",

devtools/chrome/devtools.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,24 @@ chrome.devtools.panels.create(
1111
panelWindow = window;
1212
isShown = true;
1313
try {
14-
window.set_iframe_url(await getLiveDebuggerSessionURL(chrome));
14+
window.setIframeUrl(await getLiveDebuggerSessionURL(chrome));
1515
} catch (error) {
16-
window.set_iframe_url(null);
16+
window.setIframeUrl(null);
1717
}
1818
}
1919
});
2020

2121
chrome.webNavigation.onCompleted.addListener(async (details) => {
22-
if (details.tabId === chrome.devtools.inspectedWindow.tabId) {
22+
if (
23+
details.tabId === chrome.devtools.inspectedWindow.tabId &&
24+
allowRedirects(chrome)
25+
) {
2326
try {
24-
panelWindow.set_iframe_url(await getLiveDebuggerSessionURL(chrome));
27+
panelWindow.setIframeUrl(await getLiveDebuggerSessionURL(chrome));
2528
} catch (error) {
26-
panelWindow.set_iframe_url(null);
29+
panelWindow.setIframeUrl(null);
2730
}
2831
}
2932
});
30-
},
33+
}
3134
);

devtools/common/devtools.html

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
<!doctype html>
22
<html lang="en">
3-
<head>
4-
<meta charset="UTF-8" />
5-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6-
</head>
7-
<body>
8-
<script src="url.js"></script>
9-
<script src="devtools.js"></script>
10-
</body>
11-
</html>
3+
4+
<head>
5+
<meta charset="UTF-8" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7+
</head>
8+
9+
<body>
10+
<script src="url.js"></script>
11+
<script src="devtools.js"></script>
12+
</body>
13+
14+
</html>

devtools/common/panel.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const iframe = document.getElementById("content");
22
const errorInfo = document.getElementById("error-info");
33

4-
function set_iframe_url(url) {
4+
function setIframeUrl(url) {
55
if (url) {
66
iframe.src = url;
77
iframe.hidden = false;

devtools/common/url.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,28 @@ function getLiveDebuggerSessionURL(browserElement) {
7373
);
7474
});
7575
}
76+
77+
function allowRedirects() {
78+
return new Promise((resolve, reject) => {
79+
const script = `
80+
(function() {
81+
const metaTag = document.querySelector('meta[name="live-debugger-config"]');
82+
if (metaTag) {
83+
return metaTag.getAttribute('devtools-allow-redirects') === 'true';
84+
}
85+
return false;
86+
})();
87+
`;
88+
89+
browserElement.devtools.inspectedWindow.eval(
90+
script,
91+
(result, isException) => {
92+
if (isException) {
93+
reject(new Error("Error checking allow redirects"));
94+
} else {
95+
resolve(result);
96+
}
97+
}
98+
);
99+
});
100+
}

devtools/firefox/devtools.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,24 @@ browser.devtools.panels.create(
1111
panelWindow = window;
1212
isShown = true;
1313
try {
14-
window.set_iframe_url(await getLiveDebuggerSessionURL(browser));
14+
window.setIframeUrl(await getLiveDebuggerSessionURL(browser));
1515
} catch (error) {
16-
window.set_iframe_url(null);
16+
window.setIframeUrl(null);
1717
}
1818
}
1919
});
2020

2121
browser.webNavigation.onCompleted.addListener(async (details) => {
22-
if (details.tabId === chrome.devtools.inspectedWindow.tabId) {
22+
if (
23+
details.tabId === chrome.devtools.inspectedWindow.tabId &&
24+
allowRedirects(browser)
25+
) {
2326
try {
24-
panelWindow.set_iframe_url(await getLiveDebuggerSessionURL(browser));
27+
panelWindow.setIframeUrl(await getLiveDebuggerSessionURL(browser));
2528
} catch (error) {
26-
panelWindow.set_iframe_url(null);
29+
panelWindow.setIframeUrl(null);
2730
}
2831
}
2932
});
30-
},
33+
}
3134
);

lib/live_debugger.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ defmodule LiveDebugger do
8686
debug_button? = Keyword.get(config, :debug_button?, true)
8787
highlighting? = Keyword.get(config, :highlighting?, true)
8888
version = Application.spec(:live_debugger)[:vsn] |> to_string()
89+
devtools_allow_redirects = Keyword.get(config, :devtools_allow_redirects, true)
8990

9091
live_debugger_url = "http://#{ip_string}:#{port}"
9192
live_debugger_assets_url = "http://#{ip_string}:#{port}/#{@assets_path}"
@@ -96,7 +97,8 @@ defmodule LiveDebugger do
9697
browser_features?: browser_features?,
9798
debug_button?: debug_button?,
9899
highlighting?: highlighting?,
99-
version: version
100+
version: version,
101+
devtools_allow_redirects: devtools_allow_redirects
100102
}
101103

102104
tags = LiveDebuggerWeb.Components.Config.live_debugger_tags(assigns)

0 commit comments

Comments
 (0)