Closed
Bug 989289
Opened 11 years ago
Closed 11 years ago
Australis: Toolbar seems broken after launch Firefox28 -> Firefox29 -> Firefox28(Icons and Text) -> Firefox29, And "Restore Defaults" does not fix the broken
Categories
(Firefox :: Toolbars and Customization, defect)
Tracking
()
VERIFIED
FIXED
Firefox 31
People
(Reporter: alice0775, Assigned: Gijs)
References
(Blocks 1 open bug)
Details
(Keywords: dev-doc-complete, Whiteboard: [Australis:P3+])
Attachments
(2 files, 6 obsolete files)
136.47 KB,
image/png
|
Details | |
6.42 KB,
patch
|
Gijs
:
review+
Sylvestre
:
approval-mozilla-aurora+
Sylvestre
:
approval-mozilla-beta+
mconley
:
checkin+
|
Details | Diff | Splinter Review |
Steps to Reproduce:
1. Start Firefox29
2. Start Firefox28 with same profile
3. Select "Icons and text" in Toolbar Customization
4. Exit Browser
5. Start Firefox29 with same profile
---- Observe how toolbar broken
6. "Restore Defaults" in in Toolbar Customization
---- Observe how toolbar broken
Actual Results:
Toolbar seems broken.
"Restore Defaults" does not fix the broken.
Expected Results:
Toolbar should be Icon only.
"Restore Defaults" should reset icon mode too.
![]() |
Reporter | |
Comment 1•11 years ago
|
||
At lease, "Restore Defaults" should work.
Assignee | ||
Comment 2•11 years ago
|
||
This is because of how our migration code works. It's always been like that and its effects can in some cases be felt in different ways as well. I don't think we really want to fix this right now.
Assignee | ||
Comment 3•11 years ago
|
||
(In reply to Alice0775 White from comment #1)
> At lease, "Restore Defaults" should work.
I disagree. Making restore defaults do that kind of work for what is an edge case of an edge case doesn't seem worth it to me.
Comment 4•11 years ago
|
||
The upgrade -> downgrade -> upgrade scenario is not terribly uncommon (especially with a big UI change), and we've worked to support it in the past. Although the definition of "support" can vary -- I certainly wouldn't spend time making, say, the "icons&text" preference be retained upon downgrade (assuming it isn't, but that's not really relevant here). But getting into a broken state that can't easily be fixed is not swell.
We could make "Restore Defaults" take care of this, if there's no feasible alternative, but I think the right fix should really be to make this not happen. Can we make 29 just always forcibly clear this, or make it harder to accidentally show labels?
I'd actually make this P2 but for the fact that the user needs to reenable icons+text.
Would reconsider needing a fix if this is too difficult / risky.
Whiteboard: [Australis:P3+]
Comment 5•11 years ago
|
||
(In reply to Justin Dolske [:Dolske] from comment #4)
> The upgrade -> downgrade -> upgrade scenario is not terribly uncommon
> (especially with a big UI change), and we've worked to support it in the
> past. Although the definition of "support" can vary -- I certainly wouldn't
> spend time making, say, the "icons&text" preference be retained upon
> downgrade (assuming it isn't, but that's not really relevant here). But
> getting into a broken state that can't easily be fixed is not swell.
>
> We could make "Restore Defaults" take care of this, if there's no feasible
> alternative, but I think the right fix should really be to make this not
> happen. Can we make 29 just always forcibly clear this, or make it harder to
> accidentally show labels?
>
Forcibly clearing sounds possible. We could get the toolbar binding to remove that attribute on construction, or CustomizableUI to remove it on toolbar registration.
Comment 7•11 years ago
|
||
The good news is that, at least for Classic Theme Restorer, wiping out the mode="full" attribute from the toolbars will not affect its text+icons support.
Updated•11 years ago
|
Status: NEW → ASSIGNED
Comment 8•11 years ago
|
||
Comment 9•11 years ago
|
||
Pretty simple - just force the mode attribute on construction.
Comment 10•11 years ago
|
||
In our add-on compat document, we wrote:
"Support for small icons mode as well as text and icons mode have been removed."
I _think_ that means we can force this attribute without anybody claiming it as a surprise.
Comment 11•11 years ago
|
||
Comment on attachment 8399457 [details] [diff] [review]
Patch v1
How's my thinking on this? Do we have add-on compat issues to think about here, or am I right in thinking that we're OK to force this attribute value?
Attachment #8399457 -
Flags: review?(jaws)
Updated•11 years ago
|
Attachment #8399456 -
Flags: review?(jaws)
Comment 12•11 years ago
|
||
Comment on attachment 8399456 [details] [diff] [review]
Regression test - Patch v1
Actually, y'know what, I'm going to withhold asking for review on this until I'm certain this is the right approach.
Attachment #8399456 -
Flags: review?(jaws)
Comment 13•11 years ago
|
||
Comment on attachment 8399457 [details] [diff] [review]
Patch v1
Review of attachment 8399457 [details] [diff] [review]:
-----------------------------------------------------------------
The commit message should be changed to say "Bug 989282 - Forcibly set the 'mode' attribute to 'icons' on toolbar contruction. r=jaws'
::: browser/components/customizableui/content/toolbar.xml
@@ +24,5 @@
> this.addEventListener("overflow", this);
> this.addEventListener("underflow", this);
> }
>
> + this.setAttribute("mode", "icons");
Please move this to _init
Attachment #8399457 -
Flags: review?(jaws) → review+
Comment 14•11 years ago
|
||
Comment on attachment 8399456 [details] [diff] [review]
Regression test - Patch v1
Cool, thanks Jared. Mind reviewing the little test too?
Attachment #8399456 -
Flags: review?(jaws)
Comment 15•11 years ago
|
||
Addressed feedback, updated comment, and fixed the bug number while I was at it.
Also added a small bit of documentation to accompany the change.
Attachment #8399457 -
Attachment is obsolete: true
Attachment #8399508 -
Flags: review+
Updated•11 years ago
|
Attachment #8399456 -
Flags: review?(jaws) → review+
Comment 16•11 years ago
|
||
Folded and landed:
remote: https://hg.mozilla.org/integration/fx-team/rev/2f22e878159e
status-firefox29:
--- → affected
status-firefox30:
--- → affected
Whiteboard: [Australis:P3+] → [Australis:P3+][fixed-in-fx-team]
Updated•11 years ago
|
Flags: in-testsuite+
Status: ASSIGNED → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Whiteboard: [Australis:P3+][fixed-in-fx-team] → [Australis:P3+]
Target Milestone: --- → Firefox 31
Assignee | ||
Comment 18•11 years ago
|
||
Mike/Jared, do we want to uplift this, too? I'd actually argue that because it'll most affect 29, it's quite important that we get it there...
Flags: needinfo?(mconley)
Flags: needinfo?(jaws)
Assignee | ||
Comment 20•11 years ago
|
||
Comment on attachment 8399508 [details] [diff] [review]
Patch v1.1 (r+'d by jaws)
[Approval Request Comment]
Bug caused by (feature/regressing bug #): Australis / upgrade/downgrades
User impact if declined: after certain upgrade/downgrade sequences, the toolbar layout might be (unrecoverably) messed up
Testing completed (on m-c, etc.): on m-c, has automated test
Risk to taking this patch (and alternatives if risky): low
String or IDL/UUID changes made by this patch: none
Attachment #8399508 -
Flags: approval-mozilla-beta?
Attachment #8399508 -
Flags: approval-mozilla-aurora?
Flags: needinfo?(mconley)
Assignee | ||
Comment 21•11 years ago
|
||
Comment on attachment 8399456 [details] [diff] [review]
Regression test - Patch v1
[Approval Request Comment]
See comment #20
Attachment #8399456 -
Flags: approval-mozilla-beta?
Attachment #8399456 -
Flags: approval-mozilla-aurora?
Updated•11 years ago
|
Attachment #8399508 -
Flags: approval-mozilla-beta?
Attachment #8399508 -
Flags: approval-mozilla-beta+
Attachment #8399508 -
Flags: approval-mozilla-aurora?
Attachment #8399508 -
Flags: approval-mozilla-aurora+
Updated•11 years ago
|
Attachment #8399456 -
Flags: approval-mozilla-beta?
Attachment #8399456 -
Flags: approval-mozilla-beta+
Attachment #8399456 -
Flags: approval-mozilla-aurora?
Attachment #8399456 -
Flags: approval-mozilla-aurora+
Comment 22•11 years ago
|
||
Updated•11 years ago
|
status-firefox31:
--- → fixed
Comment 23•11 years ago
|
||
Per our IRC conversation, I had to skip the newly-added test on Linux debug due to the permaleaksit perturbed mochitest-bc-1 into hitting.
https://hg.mozilla.org/releases/mozilla-aurora/rev/4f6268f94b1d
The leak:
https://tbpl.mozilla.org/php/getParsedLog.php?id=37477352&tree=Mozilla-Aurora
TEST-UNEXPECTED-FAIL | chrome://mochitests/content/browser/browser/components/sessionstore/test/browser_635418.js | leaked until shutdown [nsGlobalWindow #7109 chrome://browser/content/tabview.html]
TEST-UNEXPECTED-FAIL | browser/components/sessionstore/test/browser_635418.js | leaked 2 window(s) until shutdown [url = chrome://browser/content/tabview.html]
Assignee | ||
Comment 24•11 years ago
|
||
remote: https://hg.mozilla.org/releases/mozilla-beta/rev/1244d500650c
Backed out of beta per IRC discussion with mconley because the current fix would also force the icons attribute on add-on toolbars.
Assignee | ||
Comment 25•11 years ago
|
||
I'm using the pref as a proxy for 'has this profile been on Australis before'. I believe this works because we remove this pref in pre-Australis versions like 28: https://mxr.mozilla.org/mozilla-release/source/browser/components/nsBrowserGlue.js#1291 using very similar code. The only unfortunate thing is that if you have a pristine non-customized-at-all profile, the pref won't get set at all, and so the code needlessly runs. That's suboptimal, but I don't see a way around it, and it doesn't seem any worse than the code that ran before (on every toolbar creation). Mike, does this make sense?
Attachment #8404292 -
Flags: review?(mconley)
Assignee | ||
Updated•11 years ago
|
Assignee: mconley → gijskruitbosch+bugs
Status: REOPENED → ASSIGNED
Comment 26•11 years ago
|
||
Comment on attachment 8404292 [details] [diff] [review]
use nsBrowserGlue to migrate users,
Review of attachment 8404292 [details] [diff] [review]:
-----------------------------------------------------------------
Tentative r- because I don't think this takes care of all cases.
::: browser/components/nsBrowserGlue.js
@@ +1316,5 @@
> _migrateUI: function BG__migrateUI() {
> const UI_VERSION = 22;
> const BROWSER_DOCURL = "chrome://browser/content/browser.xul#";
> let currentUIVersion = 0;
> + let alreadyOnAustralis = Services.prefs.prefHasUserValue("browser.uiCustomization.state");
I don't think we can rely on this. In the event that the user has gone from 28, to 29, to 27, back to 29, they _will_ have a browser.uiCustomization.state, and we're back to square one.
I'm starting to wonder if perhaps a migration isn't the right way of doing this - but making it so that Resetting Defaults removes those old attributes is the better way forward.
Attachment #8404292 -
Flags: review?(mconley) → review-
Assignee | ||
Comment 27•11 years ago
|
||
OK, how is this? I included the toolbox because without that, going back to 28 confuses our dialogs because they look at the toolbox properties and assume they're always in sync with the toolbars. I imagine some addons might also check for iconsize/mode on the toolbox rather than the toolbar, and I figured... better safe than sorry?
Attachment #8404315 -
Flags: review?(mconley)
Assignee | ||
Updated•11 years ago
|
Attachment #8404292 -
Attachment is obsolete: true
Comment 28•11 years ago
|
||
Comment on attachment 8404315 [details] [diff] [review]
only migrate builtin toolbars, also migrate toolbox,
Review of attachment 8404315 [details] [diff] [review]:
-----------------------------------------------------------------
r=me, but I have a few requests:
1) Please file a bug to consider exposing the list of default toolbars through CustomizableUI
2) Please consider my simplification of the setAttribute thing you do
Thanks Gijs!
::: browser/components/customizableui/content/toolbar.xml
@@ +14,5 @@
> </resources>
> <implementation>
> <field name="overflowedDuringConstruction">null</field>
> + <field name="_builtinToolbars" readonly="true">
> + new Set(["nav-bar", "PersonalToolbar", "addon-bar", "TabsToolbar", "toolbar-menubar"])
:(
I wonder if down the line we should try to expose this set through CustomizableUI instead. This is probably fine for now though.
@@ +51,5 @@
> // Bug 989289: Forcibly set the now unsupported "mode" attribute, just
> // in case it gets accidentally restored from persistence from a user
> // that's been upgrading and downgrading.
> + if (this._builtinToolbars.has(this.id)) {
> + if (this.getAttribute("mode") != "icons") {
We can probably make this a bit less wordy by having something like:
const kDefaultAttributes = {
"mode": "icons",
"iconsize": "small",
}
for (let attr in kDefaultAttributes) {
let value = kDefaultAttributes[value]; // Or use an Iterator, or whatever.
if (this.getAttribute(attr) != value) {
this.setAttribute(attr, value);
document.persist(this.id, attr);
}
if (this.toolbox && this.toolbox.getAttribute(attr) != value) {
this.toolbox.setAttribute(attr, value);
document.persist(this.toolbox.id, attr);
}
}
Attachment #8404315 -
Flags: review?(mconley) → review+
Assignee | ||
Updated•11 years ago
|
Attachment #8404315 -
Attachment is obsolete: true
Comment 30•11 years ago
|
||
Comment on attachment 8404887 [details] [diff] [review]
only migrate builtin toolbars, also migrate toolbox,
Review of attachment 8404887 [details] [diff] [review]:
-----------------------------------------------------------------
r=me with my nits fixed, and let's not forget to dev-doc-needed for the new method for CustomizableUI.
Great work!
::: browser/components/customizableui/content/toolbar.xml
@@ +13,5 @@
> <stylesheet src="chrome://global/skin/toolbar.css"/>
> </resources>
> <implementation>
> <field name="overflowedDuringConstruction">null</field>
> + <field name="_builtinToolbars" readonly="true">
This can go now.
@@ +51,5 @@
> + // Bug 989289: Forcibly set the now unsupported "mode" and "iconsize"
> + // attributes, just in case they accidentally get restored from
> + // persistence from a user that's been upgrading and downgrading.
> + if (CustomizableUI.isBuiltinToolbar(this.id)) {
> + const attributes = new Map([["mode", "icons"], ["iconsize", "small"]]);
Nit: kAttributes or ATTRIBUTES. I prefer the former, because then it doesn't look like I'm YELLING. :)
Attachment #8404887 -
Flags: review?(mconley) → review+
Comment 31•11 years ago
|
||
Comment on attachment 8404887 [details] [diff] [review]
only migrate builtin toolbars, also migrate toolbox,
Review of attachment 8404887 [details] [diff] [review]:
-----------------------------------------------------------------
::: browser/components/customizableui/src/CustomizableUI.jsm
@@ +245,5 @@
> }, true);
> },
>
> + get _builtinToolbars() {
> + return new Set([
It's too bad we can't make the returned set read-only... that way, we wouldn't have to recreate it each time. :/
Assignee | ||
Comment 32•11 years ago
|
||
Assignee | ||
Updated•11 years ago
|
Attachment #8404887 -
Attachment is obsolete: true
Assignee | ||
Comment 33•11 years ago
|
||
Comment on attachment 8405047 [details] [diff] [review]
only migrate builtin toolbars, also migrate toolbox,
Carrying over r+, hoping someone has a chance to land this between now and tomorrow.
Attachment #8405047 -
Flags: review+
Attachment #8405047 -
Flags: checkin?
Assignee | ||
Updated•11 years ago
|
Keywords: dev-doc-needed
Updated•11 years ago
|
tracking-firefox29:
--- → ?
Keywords: verifyme
Updated•11 years ago
|
Comment 34•11 years ago
|
||
Flags: in-testsuite+
Whiteboard: [Australis:P3+] → [Australis:P3+][fixed-in-fx-team]
Comment 35•11 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 11 years ago → 11 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Whiteboard: [Australis:P3+][fixed-in-fx-team] → [Australis:P3+]
Comment 36•11 years ago
|
||
Comment on attachment 8405047 [details] [diff] [review]
only migrate builtin toolbars, also migrate toolbox,
[Approval Request Comment]
Bug caused by (feature/regressing bug #):
The original patch for this bug, believe it or not. The original patch was already backed out of beta.
User impact if declined:
Users who use add-ons that inject toolbars with different modes and iconsizes will be forced to have mode="icons" and iconsize="small". This patch makes it so that we only force that for built-in toolbars.
Testing completed (on m-c, etc.):
A few days to bake on m-c.
Risk to taking this patch (and alternatives if risky):
Low risk.
String or IDL/UUID changes made by this patch:
None.
Attachment #8405047 -
Flags: checkin?
Attachment #8405047 -
Flags: checkin+
Attachment #8405047 -
Flags: approval-mozilla-beta?
Attachment #8405047 -
Flags: approval-mozilla-aurora?
Comment 37•11 years ago
|
||
The automated test provided with the original patch has been excised, since we didn't think it was worth it to try to fake out one of the built-in toolbars.
Flags: in-testsuite+
Updated•11 years ago
|
Updated•11 years ago
|
Attachment #8405047 -
Flags: approval-mozilla-beta?
Attachment #8405047 -
Flags: approval-mozilla-beta+
Attachment #8405047 -
Flags: approval-mozilla-aurora?
Attachment #8405047 -
Flags: approval-mozilla-aurora+
Assignee | ||
Comment 38•11 years ago
|
||
Keywords: dev-doc-needed → dev-doc-complete
Comment 39•11 years ago
|
||
Comment 40•11 years ago
|
||
Updated•11 years ago
|
Attachment #8399456 -
Attachment is obsolete: true
Updated•11 years ago
|
Attachment #8399508 -
Attachment is obsolete: true
Comment 41•11 years ago
|
||
Reproduced the initial issue using old Nightly build and verified that the issue is fixed on Firefox 29 beta 8, latest Aurora and latest Nightly.
Status: RESOLVED → VERIFIED
Keywords: verifyme
You need to log in
before you can comment on or make changes to this bug.
Description
•