Add-on "Dict.cc Translation" broken in Firefox 52 because it fails to create URI from string

RESOLVED FIXED

Status

()

Firefox
Extension Compatibility
RESOLVED FIXED
10 months ago
9 months ago

People

(Reporter: Dr. Werner Fink, Unassigned)

Tracking

({addon-compat, regression})

52 Branch
addon-compat, regression
Points:
---

Firefox Tracking Flags

(firefox52 wontfix, firefox-esr52 wontfix, firefox53- wontfix, firefox54- wontfix, firefox55- wontfix)

Details

(URL)

(Reporter)

Description

10 months ago
User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Build ID: 20170317000000

Steps to reproduce:

Install dict.cc translation addon and try to use it. Compare with https://github.com/Lusito/dict.cc-translation and https://addons.mozilla.org/en-US/firefox/addon/dictcc-translation/ as well as https://github.com/Lusito/dict.cc-translation/wiki/Rant-about-Mozilla


Actual results:

It does not work


Expected results:

It simply should work. I had used dict.cc very often in past and I'm really miss sadly this tool!

Comment 1

10 months ago
Valentin, could you check this regression which brokes completely this add-on, please.

STR:

1) Install the add-on https://addons.mozilla.org/en-US/firefox/addon/dictcc-translation/
2) Open about:addons and open the options of the add-on

Result: UI of the modal is broken, tabs can't be selected, buttons aren't clickable etc..

Regression range:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=e7edcb
82063f05a44fde50116d5e9b219be40bb6&tochange=9256346ca5ad7048cff07b0be3a414baf6c9
e104

Valentin Gosu — Bug 1337629 - Restrict allowed hostname characters r=mcmanus

Error in browser console when opening the add-on options:

searchdictcc:Error: Creating URI from string failed
Stack trace:
sandbox@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/loader/sandbox.js:32:17
WorkerSandbox@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/content/sandbox.js:145:19
constructor@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/heritage.js:135:7
@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/sync-worker.js:144:25
dispatch@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/method/core.js:119:12
method/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/lang/functional/core.js:26:42
method@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/lang/functional/core.js:26:12
@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/panel.js:408:3
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:110:7
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:86:38
receive@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:115:5
next@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:37:24
filter/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:54:7
transform/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:44:29
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:110:7
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:86:38
receive@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:115:5
next@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:37:24
filter/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:54:7
transform/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:44:29
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:110:7
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:86:38
forward@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/panel/events.js:20:10
observe@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/system/events.js:81:7
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/system/events.js:59:5
onContentLoad@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/panel/utils.js:316:7
EventListener.handleEvent*make@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/panel/utils.js:343:3
setup@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/panel.js:212:16
@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/disposable.js:45:56
dispatch@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/method/core.js:119:12
initialize@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/disposable.js:135:17
constructor@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/heritage.js:135:7
exports.show@resource://gre/modules/commonjs/toolkit/loader.js -> resource://searchdictcc-at-roughael/lib/options.js:58:24
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:110:7
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:86:38
buttonClick@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/simple-prefs.js:22:3
observe@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/system/events.js:81:7
injectOptions/</<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/preferences/native-options.js:159:9
EventListener.handleEvent*injectOptions/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/preferences/native-options.js:158:7
injectOptions@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/preferences/native-options.js:136:3
onAddonOptionsDisplayed@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/preferences/native-options.js:54:9
observe@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/system/events.js:81:7
fillSettingsRows/finish/<@chrome://mozapps/content/extensions/extensions.js:3512:9
fillSettingsRows/whenViewLoaded/<@chrome://mozapps/content/extensions/extensions.js:3499:11
notifyViewChanged@chrome://mozapps/content/extensions/extensions.js:954:5
_updateView/<@chrome://mozapps/content/extensions/extensions.js:3263:7
fillSettingsRows/xhr.onload@chrome://mozapps/content/extensions/extensions.js:3591:13
EventHandlerNonNull*fillSettingsRows@chrome://mozapps/content/extensions/extensions.js:3558:9
_updateView@chrome://mozapps/content/extensions/extensions.js:3261:5
show/<@chrome://mozapps/content/extensions/extensions.js:3284:9
safeCall@resource://gre/modules/AddonManager.jsm:192:5
makeSafe/<@resource://gre/modules/AddonManager.jsm:207:25
process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:922:23
Promise*scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:739:11
schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:770:7
Promise.prototype.then@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:455:5
getAddon@resource://gre/modules/addons/XPIProvider.jsm -> resource://gre/modules/addons/XPIProviderUtils.js:1068:12
getVisibleAddonForID@resource://gre/modules/addons/XPIProvider.jsm -> resource://gre/modules/addons/XPIProviderUtils.js:1117:5
getAddonByID@resource://gre/modules/addons/XPIProvider.jsm:4203:5
callProviderAsync@resource://gre/modules/AddonManager.jsm:294:12
promiseCallProvider/<@resource://gre/modules/AddonManager.jsm:318:53
Promise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:390:5
promiseCallProvider@resource://gre/modules/AddonManager.jsm:317:10
getAddonByID/promises<@resource://gre/modules/AddonManager.jsm:2433:12
getAddonByID@resource://gre/modules/AddonManager.jsm:2432:20
getAddonByID@resource://gre/modules/AddonManager.jsm:3555:7
show@chrome://mozapps/content/extensions/extensions.js:3279:5
loadViewInternal@chrome://mozapps/content/extensions/extensions.js:935:7
loadView@chrome://mozapps/content/extensions/extensions.js:855:5
doCommand@chrome://mozapps/content/extensions/extensions.js:1084:9
doCommand@chrome://mozapps/content/extensions/extensions.js:1240:11
doCommand@chrome://mozapps/content/extensions/extensions.js:1615:5
showPreferences@chrome://mozapps/content/extensions/extensions.xml:1584:11
oncommand@about:addons:1:1
Blocks: 1337629
Status: UNCONFIRMED → NEW
Has Regression Range: --- → yes
Has STR: --- → yes
status-firefox52: --- → affected
status-firefox53: --- → affected
status-firefox54: --- → affected
status-firefox55: --- → affected
status-firefox-esr52: --- → affected
tracking-firefox53: --- → ?
tracking-firefox54: --- → ?
tracking-firefox55: --- → ?
tracking-firefox-esr52: --- → ?
Component: Untriaged → Extension Compatibility
Ever confirmed: true
Flags: needinfo?(valentin.gosu)
Keywords: addon-compat, regression
Summary: firefox 52 is breaking addons like Dict.cc translation → Add-on "Dict.cc Translation" broken in Firefox 52 because it fails to create URI from string
status-firefox52: affected → wontfix
This is due to the addon specifying in package.json: 

"permissions": {
  "cross-domain-content": ["http://*.dict.cc/", "https://*.dict.cc/"],
}

* is not a valid hostname domain, so we fail in Sandbox.cpp::ParsePrincipal

I will post in https://github.com/Lusito/dict.cc-translation/issues/26 to try to get the developer to fix the addon.
Flags: needinfo?(valentin.gosu)
Based on Comment 2 and the Github issue being resolved, I don't think we need to track for any of the branches nominated in Comment 1.
status-firefox53: affected → wontfix
status-firefox54: affected → wontfix
status-firefox55: affected → wontfix
status-firefox-esr52: affected → wontfix
tracking-firefox53: ? → -
tracking-firefox54: ? → -
tracking-firefox55: ? → -
tracking-firefox-esr52: ? → ---

Comment 4

9 months ago
Let's close it as the add-on dev fixed it.
Status: NEW → RESOLVED
Last Resolved: 9 months ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.