Closed Bug 1150907 Opened 9 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.
https://bugzilla.mozilla.org/show_bug.cgi?id=1399562
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: