Closed Bug 573062 Opened 15 years ago Closed 14 years ago

Add "(restart required)" to tooltip for "Remove," "Disable," "Enable" buttons for add-ons requiring restart

Categories

(Toolkit :: Add-ons Manager, defect, P2)

defect

Tracking

()

VERIFIED FIXED
mozilla2.0b3
Tracking Status
blocking2.0 --- final+

People

(Reporter: jboriss, Assigned: asaf)

References

Details

(Whiteboard: [AddonsRewrite])

Attachments

(1 file, 2 obsolete files)

(restart required) should be added to the end of the tooltip string for add-ons that require a restart. This makes the full string: - Uninstall this add-on (restart required) - Disable this add-on (restart required) - Enable this add-on (restart required)
Whiteboard: [AddonsRewrite]
Version: unspecified → Trunk
Needs API support. While we're at it, may as well cover updates as well. Filed bug 573149.
Assignee: nobody → felipc
Status: NEW → ASSIGNED
felipe, I'm already working on this. If you haven't started yet, please assign it to me. If you did, thanks ;)
Oh, FYI, I talked to Dave and about the API required here. We agreed that a operationsWouldRequireRestart bitfield would work best because there's a separate requires-restart check for each operation.
I haven't started yet on these bugs, Mano. Are you working on the API side too?
Assignee: felipc → mano
Yeah.
Depends on: 573149
Back-end patch is on bug 573149.
Attached patch patch (obsolete) — Splinter Review
This patch depends on the back-end part.
Attachment #455430 - Flags: review?(dtownsend)
Comment on attachment 455430 [details] [diff] [review] patch >+ if ("getTooltip" in cmd) { >+ if (addon) >+ cmdElt.setAttribute("tooltiptext", cmd.getTooltip(addon)); >+ else >+ cmdElt.removeAttribute("tooltiptext"); >+ } I think it should be letting cmd.getTooltip() determine what to do if there's no addon - as there are cases where no addon is perfectly ok (not in the case of these specific commands, but I'm thinking future-proofing). > <method name="_updateState"> ... >+ this._enableBtn.setAttribute("tooltiptext", tooltip); >+ } >+ else { >+ this._enableBtn.hidden = true; >+ } For consistency with the rest of the file, remove the newline between "}" and "else" (and the other cases this happens). >+ let tooltip = gViewController.commands["cmd_disableItem"] >+ .getTooltip(this.mAddon); I wonder if gViewController should have a function to do this - something like getTooltipForCommand(command, addon). Up to you - I'm fine with either way. Can you add tests for this - one for the list view (testing the xbl binding), and one for the detail view (testing the command updater). Can use the mocking provider in /toolkit/mozapps/extensions/test/browser/head.js. r- because I'd like to see the tests.
Attachment #455430 - Flags: review?(dtownsend) → review-
Attached patch patch with test (obsolete) — Splinter Review
Attachment #455430 - Attachment is obsolete: true
Attachment #456126 - Flags: review?(bmcbride)
bmcbride: ping.
Comment on attachment 456126 [details] [diff] [review] patch with test >diff -r c1bb84d2470d toolkit/mozapps/extensions/content/extensions.js > cmd_disableItem: { > isEnabled: function(aAddon) { > if (!aAddon) > return false; > return hasPermission(aAddon, "disable"); > }, > doCommand: function(aAddon) { > aAddon.userDisabled = true; >+ }, >+ getTooltip: function(aAddon) { >+ if (!aAddon) >+ return ""; >+ >+ if (aAddon.operationsRequiringRestart & AddonManager.OP_NEEDS_RESTART_DISABLE) >+ return gStrings.ext.GetStringFromName("disableAddonRestartRequiredTooltip"); >+ >+ return gStrings.ext.GetStringFromName("disableAddonTooltip"); You have an extra newline there that doesn't match the others, might as well make them consistent. >diff -r c1bb84d2470d toolkit/mozapps/extensions/content/extensions.xml > <method name="_updateState"> > <body><![CDATA[ > this.setAttribute("incompatible", !this.mAddon.isCompatible); > > this._preferencesBtn.hidden = !this.mAddon.optionsURL; > >- this._enableBtn.hidden = !this.hasPermission("enable"); >- this._disableBtn.hidden = !this.hasPermission("disable"); >- this._removeBtn.hidden = !this.hasPermission("uninstall"); >+ if (this.hasPermission("enable")) { >+ this._enableBtn.hidden = false; >+ let tooltip = gViewController.commands["cmd_enableItem"] >+ .getTooltip(this.mAddon); >+ this._enableBtn.setAttribute("tooltiptext", tooltip); >+ } >+ else >+ this._enableBtn.hidden = true; The code style here requires braces around the else part too when the if part has them. Same for the others in this function.
Comment on attachment 456126 [details] [diff] [review] patch with test >diff -r c1bb84d2470d toolkit/mozapps/extensions/content/extensions.js > var canUpdate = hasPermission(aAddon, "upgrade"); > document.getElementById("detail-autoUpdate").hidden = !canUpdate; > document.getElementById("detail-findUpdates").hidden = !canUpdate; > document.getElementById("detail-prefs").hidden = !aAddon.optionsURL; > > self.updateState(); > > gViewController.updateCommands(); >+ // aWindow.alert("updated"); > gViewController.notifyViewChanged(); > }); > }, Debugging code that snuck in I guess?
Attachment #456126 - Flags: review?(bmcbride) → review+
> >+ } > >+ else > >+ this._enableBtn.hidden = true; > > The code style here requires braces around the else part too when the if part > has them. Same for the others in this function. Dave, see comment 8...
(In reply to comment #13) > > >+ } > > >+ else > > >+ this._enableBtn.hidden = true; > > > > The code style here requires braces around the else part too when the if part > > has them. Same for the others in this function. > > Dave, see comment 8... Huh well I guess Blair wrote this code so he knows best. Must have snuck past me in the uber-review. Stick with the consistency.
I'll fix that patch tomorrow morning, and then, will do.
blocking2.0: beta2+ → final+
Sorry I didn't get to this - was on PTO for most of last week. (In reply to comment #14) > > Dave, see comment 8... > > Huh well I guess Blair wrote this code so he knows best. Must have snuck past > me in the uber-review. Stick with the consistency. Er, actually, I meant remove the newline - not remove the braces. ie, instead of this: >+ } >+ else { >+ this._enableBtn.hidden = true; >+ } It should be: > > > >+ } else { > > > >+ this._enableBtn.hidden = true; > > > >+ }
Attached patch for checkinSplinter Review
before checkin, hg add toolkit/mozapps/extensions/test/browser/browser_bug573062.js
Attachment #456126 - Attachment is obsolete: true
Keywords: checkin-needed
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Flags: in-testsuite+
Flags: in-litmus-
Resolution: --- → FIXED
Target Milestone: --- → mozilla2.0b3
Keywords: checkin-needed
Status: RESOLVED → VERIFIED
Verified on : Mozilla/5.0 (Windows; Windows NT 6.0; rv:2.0b3) Gecko/20100805 Firefox/4.0b3 and Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0b3) Gecko/20100805 Firefox/4.0b3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: