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)

defect

Tracking

(Not tracked)

RESOLVED INCOMPLETE

People

(Reporter: kostas, Unassigned)

References

Details

Attachments

(1 file)

Attached file button-bug.tar.gz
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.
Priority: -- → P2
I could reproduce it with JPM version 1.0.5 (instead of cfx) and firefox 44.
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.

Attachment

General

Creator:
Created:
Updated:
Size: