Closed Bug 1283173 (webext-port-tampermonkey) Opened 4 years ago Closed 3 years ago

Enable Tampermonkey Chrome extension to work with Firefox

Categories

(WebExtensions :: Compatibility, defect, P5)

defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: bsilverberg, Unassigned)

References

(Depends on 1 open bug)

Details

(Whiteboard: [popular chrome extensions]triaged)

Chrome extension at https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
No test uploaded to AMO yet. Failed linter validation with:
Your add-on failed validation with 1 error.
- "/incognito" should match pattern "^spanning$"

I tried downloading and loading as a temporary add-on, and saw these messages:

- 1467215608939	addons.webextension.<unknown>	ERROR	Loading extension 'null': Reading manifest: Error processing content_scripts.0.matches.0: Value must either: be one of ["<all_urls>"], match the pattern /^(https?|file|ftp|app|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/  
Log.jsm:753

- Error: Extension is invalid
Stack trace:
loadManifestFromWebManifest<@resource://gre/modules/addons/XPIProvider.jsm:913:11
TaskImpl_run@resource://gre/modules/Task.jsm:319:40
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:937:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:816:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:747:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:779:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:714:7
TaskImpl_run@resource://gre/modules/Task.jsm:324:13
promise callback*TaskImpl_handleResultValue@resource://gre/modules/Task.jsm:395:7
TaskImpl_run@resource://gre/modules/Task.jsm:327:13
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:937:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:816:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:747:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:779:7
Promise.prototype.then@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:454:5
TaskImpl_handleResultValue@resource://gre/modules/Task.jsm:395:7
TaskImpl_run@resource://gre/modules/Task.jsm:327:13
TaskImpl@resource://gre/modules/Task.jsm:280:3
createAsyncFunction/asyncFunction@resource://gre/modules/Task.jsm:254:14
loadManifestFromWebManifest<@resource://gre/modules/addons/XPIProvider.jsm:909:23
TaskImpl_run@resource://gre/modules/Task.jsm:319:40
promise callback*TaskImpl_handleResultValue@resource://gre/modules/Task.jsm:395:7
TaskImpl_run@resource://gre/modules/Task.jsm:327:13
TaskImpl@resource://gre/modules/Task.jsm:280:3
createAsyncFunction/asyncFunction@resource://gre/modules/Task.jsm:254:14
loadManifestFromDir<@resource://gre/modules/addons/XPIProvider.jsm:1348:19
TaskImpl_run@resource://gre/modules/Task.jsm:319:40
TaskImpl@resource://gre/modules/Task.jsm:280:3
createAsyncFunction/asyncFunction@resource://gre/modules/Task.jsm:254:14
loadManifestFromFile@resource://gre/modules/addons/XPIProvider.jsm:1493:12
this.XPIProvider.installTemporaryAddon<@resource://gre/modules/addons/XPIProvider.jsm:3926:23
TaskImpl_run@resource://gre/modules/Task.jsm:319:40
TaskImpl@resource://gre/modules/Task.jsm:280:3
createAsyncFunction/asyncFunction@resource://gre/modules/Task.jsm:254:14
AddonManagerInternal.installTemporaryAddon@resource://gre/modules/AddonManager.jsm:2320:12
this.AddonManager.installTemporaryAddon@resource://gre/modules/AddonManager.jsm:3473:12
loadAddonFromFile@resource://gre/modules/commonjs/toolkit/loader.js -> resource://devtools/client/aboutdebugging/components/addons/controls.js:57:5
controls.js:59:9

More investigation is needed to determine what the actual issue/issues is/are.
Alias: webext-port-tampermonkey
Hi, Tampermonkey dev here.

Can you please add the following bugs at the "Depends on" field?

A) 1273138, 1267027
B) 1213455, 1280027

A is needed by both, the Firefox [1] and the Chrome [2] version, while B is only needed to make the Chrome version run.

BTW: the match pattern issue mentioned at the post above is fixed.

Thanks,
Jan

[1] https://addons.mozilla.org/en-US/firefox/addon/tampermonkey/
[2] https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
Jan, I have added the first set of dependencies, referred to as A above. Do you not have access to add these dependencies yourself?

I'm unclear about B though. You say that's required for the Chrome version, but if you are going to port the Firefox version to WebExtensions then the Chrome version might be irrelevant to Firefox. 

Also:
- Bug 1213455 is a general tracking bug. Could you be more specific about what more is needed for notifications to support the extension?
- Bug 1280027 is just about changing a warning to an error. I don't see how that would affect your extension's ability to work. Did you perhaps mean that you need support for "incognito" properties other than "spanning"?
Depends on: 1273138, 1267027
> Do you not have access to add these dependencies yourself?
No, these fields are read-only for me.

> then the Chrome version might be irrelevant to Firefox.
I was not sure about this, because the bug title explicitly mentions "Tampermonkey Chrome".

There already is a Firefox version of Tampermonkey and for me it's OK to ignore the Chrome version. I just added B) in case you really want to make the Chrome version to work.

Bug 1213455: getPermissionLevel is used by the Chrome version
Bug 1280027: Sorry, I misunderstood the issue a little bit. However, Tampermonkey Chrome won't work until "spanning" is supported.
(In reply to Jan Biniok from comment #3)
> Tampermonkey Chrome won't work until "spanning" is supported.
I meant "split" instead of "spanning". :)
Hi, Tampermonkey also depends on bug 1213473 (chrome.runtime.reload or location.reload) [1] for full functionality.

[1] https://github.com/Tampermonkey/tampermonkey/issues/321

Thanks, Jan
Depends on: 1307624
(In reply to Jan Biniok from comment #5)
> Hi, Tampermonkey also depends on bug 1213473 (chrome.runtime.reload or
> location.reload) [1] for full functionality.

This has been implemented as part of bug 1279012, its just that the documentation on MDN hasn't been done yet.
Component: WebExtensions: Untriaged → WebExtensions: Compatibility
Priority: -- → P5
Looks like its doing ok as one: https://addons.mozilla.org/en-US/firefox/addon/tampermonkey/statistics/?last=365

Note: that chrome.runtime.reload was fixed in bug 1279012.

Closing this tracking bug for getting the extension working although I know there are a few bugs that can be fixed like bug 1267027.
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Product: Toolkit → WebExtensions
You need to log in before you can comment on or make changes to this bug.