Closed
Bug 1150907
Opened 10 years ago
Closed 7 years ago
ui/button/action re-creation fails after "Remove from Toolbar"
Categories
(Add-on SDK Graveyard :: General, defect, P2)
Add-on SDK Graveyard
General
Tracking
(Not tracked)
RESOLVED
INCOMPLETE
People
(Reporter: kostas, Unassigned)
References
Details
Attachments
(1 file)
2.10 KB,
application/gzip
|
Details |
User Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0
Build ID: 20150328223854
Steps to reproduce:
- create a button (ui/button/action)
- right-click on the button and select "Remove from Toolbar"
- repeat 2 times: destroy() the button and re-create (with the same id)
The bug can be reproduced easily with the attached tiny addon:
- cfx run
- Right click on the "Pin" button and press 'Remove from Toolbar'
- Press the "Play" button _twice_
Actual results:
The first re-creation succeeds, the seconds gives:
TypeError: aId is undefined
Stack trace:
CustomizableUIInternal.isSpecialWidget@resource://app/modules/CustomizableUI.jsm:1108:5
CustomizableUIInternal.getWidgetProvider@resource://app/modules/CustomizableUI.jsm:729:9
CustomizableUIInternal.wrapWidget@resource://app/modules/CustomizableUI.jsm:345:20
this.CustomizableUI.createWidget@resource://app/modules/CustomizableUI.jsm:3079:1
create@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/ui/button/view.js:122:1
setup@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/ui/button/action.js:60:5
@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/disposable.js:48:56
dispatch@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/method/core.js:119:12
Disposable<.initialize@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/disposable.js:69:17
constructor@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/core/heritage.js:146:23
createTestButton@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-wcu3go6jbbeaug-at-jetpack/button-bug/lib/main.js:14:15
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:97:9
@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/ui/button/action.js:99:3
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:97:9
receive@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:115:5
transform/next@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:36:24
filter/<@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:53:7
transform/<@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:43:29
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:97:9
receive@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:115:5
transform/next@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:36:24
filter/<@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:53:7
transform/<@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/utils.js:43:29
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:97:9
create/<.onBuild/<@resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///tmp/tmpotQ0Yi.mozrunner/extensions/jid1-wcU3GO6JBBeaug@jetpack.xpi!/bootstrap.js -> resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/ui/button/view.js:155:1
Expected results:
The button should have been created (although hidden, since it's removed from the toolbar).
Some more info: it seems that, although the ActionButton constructor fails under the conditions described above, the button is actually created and behaves well! So the following awful workaround (hijack ActionButton.prototype.setup and ignore all errors) seems to work.
var oldSetup = ActionButton.prototype.setup;
ActionButton.prototype.setup = function() {
try {
oldSetup.apply(this, arguments);
} catch(e) {
console.log("setup failed, continuing anyway\n", e);
}
}
The same exact bug holds for ToggleButton.
Updated•10 years ago
|
Priority: -- → P2
Updated•10 years ago
|
Blocks: sdk/ui/button
I could reproduce it with JPM version 1.0.5 (instead of cfx) and firefox 44.
Comment 3•7 years ago
|
||
Status: UNCONFIRMED → RESOLVED
Closed: 7 years ago
Resolution: --- → INCOMPLETE
You need to log in
before you can comment on or make changes to this bug.
Description
•