Robbendebiene / Gesturefy

Navigate, operate, and browse faster with mouse gestures! A customizable Firefox mouse gesture add-on with a variety of different commands.
https://addons.mozilla.org/firefox/addon/gesturefy/
GNU General Public License v3.0
829 stars 74 forks source link

Supporting non-http/https pages #728

Closed TheNamlessGuy closed 2 months ago

TheNamlessGuy commented 2 months ago

Hi! I guess this is more of a feature request/support question than a bug report, so please excuse the fact that I don't use the provided template.

Today, I got an issue opened for my plugin, saying that this plugin doesn't work on the tabs it generates. I saw that it's mentioned that moz-extension tabs aren't supported in the trouble shooting guide. I wondered why, and after looking into how the extension works, I guess it's due to <all_urls> not supporting it?

If that's the reason why, would it be possible to use a combination of browser.tabs.onUpdated and browser.scripting.executeScript/browser.scripting.insertCSS in order to (perhaps optionally) also inject the relevant code into those types of pages? And even if <all_urls> isn't the reason why, would it be possible to go that route regardless?

EDIT: I could help look into this myself when I get some more time on my hands, if this is too big of an ask.

Robbendebiene commented 2 months ago

Hi, thanks for the detailed request. As far as I know there is now way for an extension to run code in foreign moz-extension pages. This is an inherent security aspect of webextensions. So using browser.scripting.executeScript/browser.scripting.insertCSS should fail with an error.

Extensions can only communicate with each other through messages. So in theory we could manage to get this to work if Gesturefy sends a message to Tab Grouper containing the necessary code which Tab Grouper would have to call eval() on. However this would require you to basically replicate a complete Gesturefy instance, so this isn't anywhere near from feasible. Additionally the use of eval in Manifest v3 won't be supported.

Long story short, unfortunately we cannot solve this problem 🫣

TheNamlessGuy commented 2 months ago

That makes sense. Unfortunate, but understandable. Thanks for the answer