Commit Graph

2692 Commits

Author SHA1 Message Date
Mike Conley
1a20701542 Bug 1801678 - Compute the right insertion point for a browser action widget when the toolbar is overflowed. r=Gijs
We have a function, OverflowableToolbar.findOverflowedInsertionPoints, whose job it is to compute
the right insertion point for a widget if the widget is being inserted into an overflowable
toolbar.

That function failed to account for the possibility that the widget was a browser action, and
would return the #defaultList instead of the #webExtList if the item was overflowing. This
patch checks the ID of the widget first, and then supplies the correct list.

Differential Revision: https://phabricator.services.mozilla.com/D162586
2022-11-24 18:51:19 +00:00
Mike Conley
ffe9f710be Bug 1801678 - Refactor OverflowableToolbar to turn #webExtList into a memoizing getter. r=Gijs
The WebExtension overflow list is created lazily because the panel itself is lazy, and only gets
inserted the first time it is needed. Originally, I had written a separate function `#getWebExtList()`
to do the work of forcing the WebExtension overflow list to de-lazify, and then hold a reference
to it in #webExtList.

It turns out, that's a bit of a footgun. More than once, I've used #webExtList directly, forgetting
that the value might turn out to be `null` because the list hasn't delazified yet.

In order to smooth out that rough edge, this patch makes `#webExtList` a memoizing (evalutes once,
caches the return value for subsequent calls) getter so that anything that uses it doesn't have
to worry about the lazification. The reference member is now called #webExtListRef, and I've
added documentation about how it's probably best not to use it directly.

Differential Revision: https://phabricator.services.mozilla.com/D162585
2022-11-24 18:51:19 +00:00
Mike Conley
1337c13918 Bug 1798377 - Don't display the overflow button unless there's at least 1 item overflowed with non-zero width. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D162576
2022-11-24 18:51:18 +00:00
Mike Conley
a4c6de385c Bug 1800967 - Update internal OverflowableToolbar state when unpinning an extension button from the toolbar when overflowed. r=willdurand,Gijs
We have some internal bookkeeping within OverflowableToolbar to remember the state of things that
have overflowed, like how wide the window needs to be before they can be moved back, etc. When an
item is removed from an overflowable toolbar while overflowed, we update that internal bookkeeping
so that OverflowableToolbar doesn't accidentally try to move those items back into the toolbar
when the window becomes wide enough again.

We've added a new overflow list for extension buttons, but we weren't updating our internal accounting
when items had been overflowed into that list. This patch fixes that.

Differential Revision: https://phabricator.services.mozilla.com/D162434
2022-11-24 18:51:18 +00:00
Itiel
c5c7610894 Bug 1577257 - Share logic behind panel headers across the UI r=willdurand,Gijs,fluent-reviewers,flod
Differential Revision: https://phabricator.services.mozilla.com/D160972
2022-11-17 21:34:34 +00:00
Mike Conley
e7e92912a0 Bug 1801097 - Set the AREA_ADDONS placements when resetting, even if Unified Extensions is disabled. r=Gijs
Even if Unified Extensions is enabled, it is expected that each registered area
will have a placements array set in gPlacements. When resetting, that's normally
re-created in restoreStateForArea, but we were skipping that call for AREA_ADDONS,
and then manually setting the placements array - but only if Unified Extensions
was enabled.

This change makes it so that we always set it when resetting.

Differential Revision: https://phabricator.services.mozilla.com/D162306
2022-11-17 18:13:44 +00:00
Mark Banner
5d1820b074 Bug 1799314 - Convert consumers of testing modules to import ES modules direct (browser/). r=Gijs,settings-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D161914
2022-11-17 12:00:30 +00:00
Mike Conley
add2b05551 Bug 1798896 - Test Unified Extension behaviours for CustomizableUI.jsm. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D161843
2022-11-17 02:00:00 +00:00
Mike Conley
e32c1a7d15 Bug 1798896 - Test Unified Extension upgrade and downgrade behavior. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D161842
2022-11-17 01:59:59 +00:00
Mike Conley
6c7bae4c4d Bug 1798896 - Prevent extension buttons from moving to the palette or overflow panel if Unified Extensions is enabled. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D161840
2022-11-17 01:59:58 +00:00
Mike Conley
2ebf72578e Bug 1798896 - Move extension buttons to the addons panel if Unified Extensions is enabled on startup. r=Gijs
This isn't a migration just yet. I'm following the same technique that we seemed to follow
when we first introduced the original overflow menu (see bug 1354117) - I'm going to add
a function to do the migration here, with a mechanism for (somewhat) reversing the
migration if the preference gets flipped back to false at some point.

There is no expectation that this preference will be flipped back to false - it's more of
a safety mechanism. Once we're confident that the routine in the function properly moves
items to right places, we can convert it to a proper migration so that it only runs
once on startup for folks who upgrade.

Differential Revision: https://phabricator.services.mozilla.com/D161839
2022-11-17 01:59:58 +00:00
Mike Conley
d4d3af9877 Bug 1782203 - Add context menu items for pinning and unpinning addon buttons to the toolbar. r=willdurand,extension-reviewers,Itiel
Differential Revision: https://phabricator.services.mozilla.com/D161200
2022-11-15 16:37:23 +00:00
Stanca Serban
7abed322ee Backed out 3 changesets (bug 1782203) for causing lint failures on browser_unified_extensions_overflowable_toolbar.js. CLOSED TREE
Backed out changeset 50e57afebed3 (bug 1782203)
Backed out changeset d17ea376ed45 (bug 1782203)
Backed out changeset e91d51f1ce90 (bug 1782203)
2022-11-15 17:42:22 +02:00
Mike Conley
55af77e9ed Bug 1782203 - Add context menu items for pinning and unpinning addon buttons to the toolbar. r=willdurand,extension-reviewers,Itiel
Differential Revision: https://phabricator.services.mozilla.com/D161200
2022-11-15 15:02:08 +00:00
Csoregi Natalia
1ce4bb73a7 Backed out 4 changesets (bug 1782203, bug 1777484) for failures on browser_unified_extensions_overflowable_toolbar.js. CLOSED TREE
Backed out changeset ae47d92443a7 (bug 1782203)
Backed out changeset 0c90b1d40e9f (bug 1782203)
Backed out changeset 4b4cae098ea0 (bug 1782203)
Backed out changeset 75eba3b7a626 (bug 1777484)
2022-11-15 03:06:21 +02:00
Mike Conley
70738f0144 Bug 1782203 - Add context menu items for pinning and unpinning addon buttons to the toolbar. r=willdurand,extension-reviewers,Itiel
Differential Revision: https://phabricator.services.mozilla.com/D161200
2022-11-14 22:41:09 +00:00
Emilio Cobos Álvarez
07c539563d Bug 1799580 - Remove display: -moz-popup. r=TYLin
We already rely on it applying only to XULPopupElement's. Make it
explicit and remove the CSS value.

Differential Revision: https://phabricator.services.mozilla.com/D161552
2022-11-09 20:38:04 +00:00
Csoregi Natalia
4e859d7b1a Backed out 3 changesets (bug 1799343, bug 1799580) for causing failures on /browser_history_after_appMenu.js. CLOSED TREE
Backed out changeset 63c270ba91ad (bug 1799343)
Backed out changeset 713e6f0fbd20 (bug 1799580)
Backed out changeset 42d1b8742662 (bug 1799343)
2022-11-09 21:26:06 +02:00
William Durand
3ff97c57e6 Bug 1799842 - Move all the lists inside the same container in the unified extensions panel. r=mconley
Differential Revision: https://phabricator.services.mozilla.com/D161668
2022-11-09 16:32:45 +00:00
Emilio Cobos Álvarez
80aaaacfe0 Bug 1799580 - Remove display: -moz-popup. r=TYLin
We already rely on it applying only to XULPopupElement's. Make it
explicit and remove the CSS value.

Differential Revision: https://phabricator.services.mozilla.com/D161552
2022-11-09 14:19:22 +00:00
Cristian Tuns
0e3ee79a08 Backed out 2 changesets (bug 1799580, bug 1799343) for causing mochitest failures on win7 CLOSED TREE
Backed out changeset fb0df93a4719 (bug 1799580)
Backed out changeset 493c9ca00c91 (bug 1799343)
2022-11-09 07:15:51 -05:00
Emilio Cobos Álvarez
f496edbc02 Bug 1799580 - Remove display: -moz-popup. r=TYLin
We already rely on it applying only to XULPopupElement's. Make it
explicit and remove the CSS value.

Differential Revision: https://phabricator.services.mozilla.com/D161552
2022-11-09 09:17:22 +00:00
William Durand
093aba99c8 Bug 1799497 - Only register 'add-ons-button' widget when the unified extensions pref is disabled. r=Gijs,rpl
Differential Revision: https://phabricator.services.mozilla.com/D161569
2022-11-08 19:54:47 +00:00
Mike Conley
c712b0d4e1 Bug 1798814 - Prevent non-extension buttons from entering the AREA_ADDONS area. r=cmkm
Differential Revision: https://phabricator.services.mozilla.com/D161096
2022-11-08 14:51:41 +00:00
Mike Conley
e04f7d728c Bug 1797836 - Part 3: Add a new AREA_ADDONS for the Unified Extensions panel. r=Gijs
This area doesn't have any special rules applied yet, nor can it have items moved to
it except programmatically. All of that will come later, including tests.

Differential Revision: https://phabricator.services.mozilla.com/D161079
2022-11-08 14:51:40 +00:00
Mike Conley
c759904dae Bug 1797836 - Part 2: Update CUI to have a general TYPE_PANEL instead of TYPE_MENU_PANEL. r=desktop-theme-reviewers,dao,sclements
Long ago, the menu panel in was a customizable area that users could drag things into.

That changed back around 2017 in bug 1354117 when the Photon redesign was built. The
menu panel become a static menu, but we also made it possible to permanently move things
to the overflow panel of the nav-bar.

It looks like we never updated the area type constant from referring to the old menu panel
though, so it's "TYPE_MENU_PANEL", and registering a node for it happens with
registerMenuPanel. This patch changes to constant to TYPE_PANEL and updates the registration
method to registerPanelNode.

I a check around the codebase as well as GitHub looking to see if there were any
system add-ons or experimental WebExtensions that rely on TYPE_MENU_PANEL / registerMenuPanel,
but I couldn't find any.

Differential Revision: https://phabricator.services.mozilla.com/D161078
2022-11-08 14:51:40 +00:00
Shane Caraveo
e6535d678c Bug 1784946 support views in custom CUI widgets and remove button-and-view widget type r=desktop-theme-reviewers,mconley,dao
Depends on D160802

Differential Revision: https://phabricator.services.mozilla.com/D154471
2022-11-03 09:30:21 +00:00
Mike Conley
ce84c284ed Bug 1797838 - Add a webExtension property to CustomizableUI widgets for browserAction buttons. r=dao,willdurand
This property, along with the CustomizableUI.isWebExtensionWidget, will make it possible
to distinguish WebExtension-provided widgets without sniffing CSS classes, which is what
we currently do.

In the event that the widget has been destroyed or hasn't yet been created, this will
fallback to looking for the `-browser-action` suffix on the ID. This is mainly for use during
migrations which happen early during CustomizableUI startup, when it's unlikely that the
extensions have finished initializing themselves and creating their widgets yet.

Differential Revision: https://phabricator.services.mozilla.com/D160802
2022-11-02 16:52:59 +00:00
Mike Conley
bd0a2d6a38 Bug 1797155 - Part 2: Make it possible to redirect browser action widgets to the Unified Extension panel on overflow. r=sclements,willdurand
When Unified Extensions is enabled, we want to make it so that any WebExtension browser_actions
overflow into the Unified Extensions panel instead of the default overflow panel.

Depends on D160292

Differential Revision: https://phabricator.services.mozilla.com/D160293
2022-11-01 21:50:56 +00:00
Mike Conley
ae5fff4d56 Bug 1797155 - Part 1: Don't walk the #list children directly in OverflowableToolbar.#moveItemsBackToTheirOrigin. r=sclements
This patch makes it so that OverflowableToolbar.#moveItemsBackToTheirOrigin
is not coupled to the existing overflowed item list, and instead takes
advantage of the insert-order provided when calling #overflowedInfo.entries()
and queries the DOM for the overflowed item IDs directly.

A later patch in this series is going to conditionally move overflowed
items into different panels based on whether or not they're provided
by WebExtensions, and so this change means that #moveItemsBackToTheirOrigin
is not going to care which panel the overflowed items are in, it should
behave the same.

Differential Revision: https://phabricator.services.mozilla.com/D160292
2022-11-01 21:50:55 +00:00
Butkovits Atila
517ae6c72a Backed out 3 changesets (bug 1797155) for causing failures at browser_unified_extensions_overflowable_toolbar.js. CLOSED TREE
Backed out changeset 67f5e4af25b6 (bug 1797155)
Backed out changeset b8a8bd646606 (bug 1797155)
Backed out changeset ec7cdd68c414 (bug 1797155)
2022-11-01 19:33:25 +02:00
Mike Conley
7ba904bf88 Bug 1797155 - Part 2: Make it possible to redirect browser action widgets to the Unified Extension panel on overflow. r=sclements,willdurand
When Unified Extensions is enabled, we want to make it so that any WebExtension browser_actions
overflow into the Unified Extensions panel instead of the default overflow panel.

Differential Revision: https://phabricator.services.mozilla.com/D160293
2022-11-01 16:44:33 +00:00
Mike Conley
b4b15ab1ac Bug 1797155 - Part 1: Don't walk the #list children directly in OverflowableToolbar.#moveItemsBackToTheirOrigin. r=sclements
This patch makes it so that OverflowableToolbar.#moveItemsBackToTheirOrigin
is not coupled to the existing overflowed item list, and instead takes
advantage of the insert-order provided when calling #overflowedInfo.entries()
and queries the DOM for the overflowed item IDs directly.

A later patch in this series is going to conditionally move overflowed
items into different panels based on whether or not they're provided
by WebExtensions, and so this change means that #moveItemsBackToTheirOrigin
is not going to care which panel the overflowed items are in, it should
behave the same.

Differential Revision: https://phabricator.services.mozilla.com/D160292
2022-11-01 16:44:32 +00:00
Marian-Vasile Laza
e32d202d39 Backed out 3 changesets (bug 1797155) for causing bc failures on browser_unified_extensions_overflowable_toolbar.js. CLOSED TREE
Backed out changeset ee3f27f43bc5 (bug 1797155)
Backed out changeset 863603ed770a (bug 1797155)
Backed out changeset 3fbfc3d94e5a (bug 1797155)
2022-10-31 21:29:22 +02:00
Mike Conley
fc80458832 Bug 1797155 - Part 2: Make it possible to redirect browser action widgets to the Unified Extension panel on overflow. r=sclements,willdurand
When Unified Extensions is enabled, we want to make it so that any WebExtension browser_actions
overflow into the Unified Extensions panel instead of the default overflow panel.

Differential Revision: https://phabricator.services.mozilla.com/D160293
2022-10-31 18:05:20 +00:00
Mike Conley
55e8ce7ccc Bug 1797155 - Part 1: Don't walk the #list children directly in OverflowableToolbar.#moveItemsBackToTheirOrigin. r=sclements
This patch makes it so that OverflowableToolbar.#moveItemsBackToTheirOrigin
is not coupled to the existing overflowed item list, and instead takes
advantage of the insert-order provided when calling #overflowedInfo.entries()
and queries the DOM for the overflowed item IDs directly.

A later patch in this series is going to conditionally move overflowed
items into different panels based on whether or not they're provided
by WebExtensions, and so this change means that #moveItemsBackToTheirOrigin
is not going to care which panel the overflowed items are in, it should
behave the same.

Differential Revision: https://phabricator.services.mozilla.com/D160292
2022-10-31 18:05:19 +00:00
Mike Conley
8452e411e0 Bug 1797548 - Move Unified Extensions panelview into its own dedicated lazily created panel. r=cmkm,willdurand
Differential Revision: https://phabricator.services.mozilla.com/D160403
2022-10-27 17:13:43 +00:00
Emilio Cobos Álvarez
49a2acb9ce Bug 1797156 - Fix browser_976792_insertNodeInWindow, and fix a couple minor typos.
MANUAL PUSH: Trivial fix CLOSED TREE
2022-10-26 20:07:30 +02:00
Mike Conley
9eca47fb30 Bug 1797156 - Refactor OverflowableToolbar and add documentation. r=sclements,cmkm
This patch does not aim to change the behaviour of OverflowableToolbar
at all. Instead, it:

1. Migrates off of old-school prototype class to a modern ES6 class
2. Uses actual private members and methods rather than underscore
   pseudo-private members and methods.
3. Tries to group the methods of OverflowableToolbar into groups like
   public methods, private methods, private event handlers, CUI widget
   listener methods and finally XPCOM interface implementations.
4. Tries to add JSDoc-style documentation where possible.

Differential Revision: https://phabricator.services.mozilla.com/D160106
2022-10-26 14:40:49 +00:00
Mike Conley
dd68e9ca7e Bug 1797156 - Add a tag to make it easier to run OverflowableToolbar tests on their own. r=sclements,cmkm
Differential Revision: https://phabricator.services.mozilla.com/D160105
2022-10-26 14:40:48 +00:00
Emilio Cobos Álvarez
0cfce56635 Bug 1796231 - Fix _collapsed map calculations. r=Gijs
The bug fix is in the line:

    this._collapsed.set(child.id, targetContentWidth);

we used to set this._target.clientWidth, which doesn't account for the
potentially-overflowing children of this._target. Propagate that from
the _checkOverflow function instead.

I'm not sure what's the best way to write a test for this. Any ideas?

Differential Revision: https://phabricator.services.mozilla.com/D159773
2022-10-24 18:32:08 +00:00
Emilio Cobos Álvarez
8ab75b80ef Bug 1797052 - Improve behavior of customize mode in small windows. r=Gijs
There was only a min-height: 0 missing. I also cleaned-up a bit because
flex: 1 is the same as flex: 1 1 auto, and flex attribute (which only
sets -moz-box-flex) is not doing anything because it was inside flex
layout (so legacy properties aren't looked at).

Differential Revision: https://phabricator.services.mozilla.com/D160094
2022-10-24 18:26:26 +00:00
Cosmin Sabou
6c2dad886b Bug 1682752 - Disable browser_876926_customize_mode_wrapping.js on linux opt for frequent failures. r=intermittent-reviewers,MasterWayZ DONTBUILD
Differential Revision: https://phabricator.services.mozilla.com/D159981
2022-10-23 23:34:16 +00:00
Emilio Cobos Álvarez
f1aec2f463 Bug 1796735 - Remove XULPopupElement.autoPosition. r=dao
This was used to prevent reflows due to popuppositioned events during
view transitions.

The previous patch should've prevented the popuppositioned events to
begin with, plus we no longer use arrows that need positioning etc,
which means we shouldn't be triggering the reflows anyways.

Since this is the only consumer of autoPosition = true/false, we can
remove the code supporting it. It's a bit bogus as per the commit
message of the previous patch and, while fixable, it doesn't seem worth
fixing if we can just get rid of it.

Depends on D159936

Differential Revision: https://phabricator.services.mozilla.com/D159937
2022-10-21 13:13:54 +00:00
Emilio Cobos Álvarez
ca1a37b75f Bug 1796735 - Use getBoundsWithoutFlushing rather than getOuterScreenRect to lock the size of the panel. r=dao
getOuterScreenRect doesn't flush layout, so not flushing here should be
fine.

We only care about the CSS width / height, not about the screen
positioning, so this is more accurate.

The flickering in comment 8 (the hover effect in the "restore previous
session" button) happens because the following set of events:

 * We try to lock the size of the panel.
 * The size returned by getOuterScreenRect() is fractionally different
   to the actual size.
 * We get to [1], realize we've changed size (even though fractionally),
   set the origin at 0, 0, and then call SetPopupPosition to fix that
   up.
 * But we've disabled autopositioning[1], so the layout position of the
   panel remains at 0, 0.

This prevents the flickering by using the actual layout size
(getBoundsWithoutFlushing / getBoundingClientRect) rather than the
potentially-rounded getOuterScreenRect, to prevent the resize.

We could fix autoPosition = false, but I don't think it's needed
anymore, so I'm going to try removing it instead. However this change
should still avoid work, so seems worth landing regardless.

[1]: https://searchfox.org/mozilla-central/rev/c5c002f81f08a73e04868e0c2bf0eb113f200b03/layout/xul/nsMenuPopupFrame.cpp#621-626
[2]: https://searchfox.org/mozilla-central/rev/c5c002f81f08a73e04868e0c2bf0eb113f200b03/browser/components/customizableui/PanelMultiView.jsm#668

Depends on D159935

Differential Revision: https://phabricator.services.mozilla.com/D159936
2022-10-21 13:02:06 +00:00
Emilio Cobos Álvarez
5d9735877d Bug 1796735 - Don't use width/height attributes for panel sizing. r=dao
While these work now because I haven't ported popups to modern flexbox,
let's remove usage of these attributes so I don't have to later. This
doesn't change behavior.

Depends on D159934

Differential Revision: https://phabricator.services.mozilla.com/D159935
2022-10-21 13:01:51 +00:00
Emilio Cobos Álvarez
121f6962a3 Bug 1793359 - Simplify bookmarks popup placement. r=Itiel,dao,mak
By using delegatesanchor="true", we delegate the anchor node to the
first in-flow box (that is the icon), simplifying a lot of the
hard-coded margins in the CSS.

Do that, plus make menupopup[type="arrow"] work consistently, to
simplify the styling of the bookmarks popup a bit.

Differential Revision: https://phabricator.services.mozilla.com/D158569
2022-10-20 15:50:23 +00:00
Emilio Cobos Álvarez
a354c85b02 Bug 1796199 - Remove script access to XUL layout attributes. r=Gijs
These don't work on emulated flexbox. We only have a couple of uses.

See D159726 for the diagnostic patch I used to catch these.

Differential Revision: https://phabricator.services.mozilla.com/D159727
2022-10-20 08:36:00 +00:00
Butkovits Atila
82536ebfc5 Backed out changeset 39f39360ae48 (bug 1796199) for causing failures at test_panel.xhtml. CLOSED TREE 2022-10-20 00:39:56 +03:00
Emilio Cobos Álvarez
5d4865adb2 Bug 1796199 - Remove script access to XUL layout attributes. r=Gijs
These don't work on emulated flexbox. We only have a couple of uses.

See D159726 for the diagnostic patch I used to catch these.

Differential Revision: https://phabricator.services.mozilla.com/D159727
2022-10-19 19:18:04 +00:00