Anyone else has FF 52 issues?

My add-on stopped working with FF 52, even the web-extension version I had almost finished stopped working. Does anyone else have issues with FF 52?
All errors seem to happen within FF code, with no trace to my code.

Old Version: https://addons.mozilla.org/en-US/firefox/addon/dictcc-translation/
Web-Extension: https://addons.mozilla.org/en-US/firefox/addon/dictcc-translation/versions/beta?page=1#version-5.0a

one problem on the web-extension seems to be, that FF52 finally implemented browser.storage.sync, but it seems to be broken:
(I checked if browser.storage.sync exists to use it whenever mozilla finally implements it)
browser.storage.sync.get(null, function (map) { }); // map == undefined

but using browser.storage.local still leaves the add-on broken with no errors shown.

On the normal version I get an error "Error: Creating URI from string failed"
With stacktrace only in these files:
resource://gre/modules/commonjs/sdk/loader/sandbox.js
resource://gre/modules/commonjs/toolkit/loader.js

Yes, our addon isn’t working either, despite being listed as working “with Firefox 45.0 and later”.

https://addons.mozilla.org/en-US/firefox/addon/nuxeo-dev-tools/

1 Like

I hear some people are having problems because of the major introductions like async/await.

I wonder if the “your addons were automatically checked and verified” happend for the Firefox 52 channel.

1 Like

I hear some people are having problems because of the major introductions like async/await.

Well, I just had another look of the problem I had with this (otherwise great!) feature.

Turns out, Firefox now doesn’t like const { async, } = { }; whereas const async = { }.async; is still perfectly Ok. (Chrome accepts booth.)

But since the only thing I did with that async variable was stuff like

async(function*() {
	const value = (yield somePromise);
	return value + 42;
});

I simply used proper async functions and didn’t investigate any further.

I guess this could be worth a bug report. On the other hand it’s a little to late for that …

2 Likes

Nice find, tho I don’t use destructuring assignment. Neither in my old sdk version nor in my web-extension version.

I think it’s implemented, but off by default, so to make it work the user would need to go to about:config and change a setting. For my add-on, I work around this by just assuming browser.storage.sync doesn’t exist on Firefox.

This should be a pretty future-proove test:

if (!browser.storage.sync || (await browser.storage.sync.get('some_key').then(() => false, () => true))) {
 	// storage.sync is unavailable or broken, use storage.local instead
	browser.storage.sync = browser.storage.local; // TODO: move data once .sync is available
}
1 Like