Commit Graph

1369 Commits

Author SHA1 Message Date
Matt Woodrow
a54a35efbb Bug 1724848 - Make sure we unconditionally invalidate the widget and request a composite when the refresh driver tries to paint a fallback renderer. r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D122391
2021-08-11 23:45:32 +00:00
Jan Henning
4c48b9e07a Bug 1685756 - Part 3: Take default scale into account when disabling font inflation. r=hiro
Font inflation isn't required for pages whose viewport is narrow enough that we
don't have to zoom *out* when doing zoom-to-fit.

As the viewport scale is given as a CSSToScreenScale, this means that what we're
actually doing at the moment, though, is comparing the width of the viewport in
CSS pixels to the width of the screen in physical pixels, *without* taking the
default scale on a high-DPI device into account.

This issue affects neither pages using a "width=device-width" viewport (the
IsAutoSizeEnabled() check handles those), nor pages without an explicitly
specified viewport at all (the viewport info returns the minimum zoom level in
that case, i.e. 25 %, which would therefore require a device scale of > 4 in
order for us to erroneously turn off font inflation - even modern phones don't
seem to quite reach *that* sort of pixel density, e.g. a Pixel 5 only reports a
default scale of ~2.73.

For pages with an explicitly sized viewport this can however mean that we turn
off font inflation too early: Slashdot e.g. uses "width=1000", which means that
on a phone with a 720 px screen font inflation is correctly enabled, but on a
different phone squeezing 1080 px into the same physical screen width (i.e.
higher DPI, but *not* a physically larger screen), font inflation is suddenly
and incorrectly turned off.

Differential Revision: https://phabricator.services.mozilla.com/D122059
2021-08-10 19:36:24 +00:00
Jan Henning
624f1a989c Bug 1685756 - Part 1: Use content viewer size for determining font inflation state. r=hiro
For pages with an explicitly sized viewport, whether or not we enable font
inflation depends on whether the viewport is larger than content viewer size (so
it will be displayed zoomed out) or not.

For historical reasons, so far we've used the screen size as a proxy for the
content viewer size. On a phone this is a reasonable approximation (albeit a bit
less so now that Android also offers split-screen and picture-in-picture modes),
but when testing/debugging on a desktop computer, this means that the results
will depend on the screen size of the machine in question, which makes it rather
hard writing sensible test cases for that scenario.

Therefore, we're finally following up with that TODO comment in the existing
code and start using the content viewer size of the top-level document instead.
Fission means that approach won't easily work for cross-process iframes, but
given that the current calculations don't make much sense for frames anyway, we
just accept that limitation, since a proper solution as per bug 1724311 would
obsolete any work done here anyway.

Differential Revision: https://phabricator.services.mozilla.com/D122057
2021-08-10 19:36:23 +00:00
Boris Chiou
d77bcd6eee Bug 1689099 - Schedule resize observers for the whole browsing context tree. r=emilio
It's possible to observe an element in the iframe while the
ResizeObserver object lives in the outer document, so we have to make
sure we also schedule the observer for all documents in the same
BrowsingContext tree.

Differential Revision: https://phabricator.services.mozilla.com/D119843
2021-08-09 19:48:13 +00:00
Kagami Sascha Rosylight
b3b95f04ab Bug 1635018 - Part 1: Limit dragexit event to chrome on Nightly r=edgar,masayuki
Differential Revision: https://phabricator.services.mozilla.com/D121189
2021-08-05 14:33:38 +00:00
Matt Woodrow
7daf855177 Bug 1722258 - Add FallbackRenderer to replace BasicLayerManager usage. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D120921
2021-08-05 06:48:34 +00:00
Matt Woodrow
d4e496f271 Bug 1722258 - Convert more LayerManager usage to use WindowRenderer. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D120920
2021-08-05 06:48:34 +00:00
Matt Woodrow
144a6ed620 Bug 1722258 - Split out fallible composite-only path of PresShell::Paint. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D120919
2021-08-05 06:48:33 +00:00
Hiroyuki Ikezoe
323db6cb76 Bug 1718012 - Call UpdateSizesBeforeReflow only for resize reflow cases and set MobileViewportManager::mMobileViewportSize even if mDisplaySize hasn't been changed in UpdateSizesBeforeReflow. r=tnikkel
In the case of reflowing caused by full zoom changes, the mDisplaySize isn't
changed, whereas mMobileViewportSize should be changed.

Differential Revision: https://phabricator.services.mozilla.com/D120190
2021-08-02 21:27:19 +00:00
Alexandru Michis
66946d6275 Backed out changeset e41bfdf79fb8 (bug 1665476) for causing windows mochitest failures in test_windowminmaxsize.xhtml
CLOSED TREE
2021-08-02 02:14:52 +03:00
Emilio Cobos Álvarez
32235b7418 Bug 1665476 - Remove nsRootBoxFrame to unify background propagation between XUL and non-XUL documents. r=layout-reviewers,mats
It's unused on mozilla-central, and Thunderbird can just use the canvas
frame as regular (X)HTML documents, so just use a canvas frame instead
of an nsRootBoxFrame for XUL as well.

nsRootBoxFrame was needed because of various XUL-specific things like
tooltips and so on lived there. But with the move away from XUL, that
functionality has been added to nsCanvasFrame already, behind a
principal check instead.

This also allows simplifying our background propagation setup, which was
only half-working for XUL documents (this bug is a consequence of that).

With this, most of the callers of nsCSSRendering::IsCanvasFrame can go.
They're only two of the frames that would return true for that that
actually paint backgrounds (nsCanvasFrame and nsRootBoxFrame), so the
codepaths in display list building and painting can just check
frame->IsCanvasFrame() instead.

The remaining caller to that function is
nsContainerFrame::SyncWindowProperties, and the change is also legit, in
the sense that the only thing SyncWindowProperties() really cares about
is propagating the max/min-width constraints from the root element's
style to the view/widget, and the only frame that would return true from
IsCanvasFrame and have a view is the viewport frame which is the root of
the frame tree.

Differential Revision: https://phabricator.services.mozilla.com/D90846
2021-08-01 21:57:28 +00:00
Emilio Cobos Álvarez
5ff1183265 Bug 1677324 - Keep painting the of the old remote frame when going into the bfcache until the child unsuppresses painting. r=nika
This should pretty much match our non-fission behavior. I found the
original approach of keeping the frameloader from nsSubDocumentFrame
quite hard to get green on try unfortunately, because among other
things, the new frameloader wouldn't get the right viewport sizes /
position / etc.

Differential Revision: https://phabricator.services.mozilla.com/D121198
2021-08-01 21:45:56 +00:00
Csoregi Natalia
4bee9e525f Backed out 3 changesets (bug 1722258) for causing Bug 1722935. a=backout
Backed out changeset cf8a1175abd1 (bug 1722258)
Backed out changeset 41176d476eb7 (bug 1722258)
Backed out changeset 4149d596d03d (bug 1722258)
2021-07-29 20:19:48 +03:00
Dorel Luca
e89c7aab2c Backed out changeset 21ac9225dd4b (bug 1718012) for WPT failures in css/css-values/viewport-units-css2-001.html. CLOSED TREE 2021-07-29 01:00:39 +03:00
Hiroyuki Ikezoe
bc40ee3416 Bug 1718012 - Call UpdateSizesBeforeReflow only for resize reflow cases and set MobileViewportManager::mMobileViewportSize even if mDisplaySize hasn't been changed in UpdateSizesBeforeReflow. r=tnikkel
In the case of reflowing caused by full zoom changes, the mDisplaySize isn't
changed, whereas mMobileViewportSize should be changed.

Differential Revision: https://phabricator.services.mozilla.com/D120190
2021-07-28 21:04:31 +00:00
Matt Woodrow
74161cf286 Bug 1722258 - Add FallbackRenderer to replace BasicLayerManager usage. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D120921
2021-07-28 20:58:23 +00:00
Matt Woodrow
5436ad0e68 Bug 1722258 - Convert more LayerManager usage to use WindowRenderer. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D120920
2021-07-28 20:58:22 +00:00
Matt Woodrow
2ad605e75d Bug 1722258 - Split out fallible composite-only path of PresShell::Paint. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D120919
2021-07-28 20:58:22 +00:00
Sandor Molnar
22fc22bcc2 Backed out changeset 1b29d7a6d15c (bug 1718012) for causing crashtest failures. CLOSED TREE 2021-07-28 09:24:58 +03:00
Hiroyuki Ikezoe
dfb3366c36 Bug 1718012 - Call UpdateSizesBeforeReflow only for resize reflow cases and set MobileViewportManager::mMobileViewportSize even if mDisplaySize hasn't been changed in UpdateSizesBeforeReflow. r=tnikkel
In the case of reflowing caused by full zoom changes, the mDisplaySize isn't
changed, whereas mMobileViewportSize should be changed.

Differential Revision: https://phabricator.services.mozilla.com/D120190
2021-07-28 05:02:30 +00:00
Aaron Klotz
3a72d62ac3 Bug 1690296: Add callback to notify app to fully display its dynamic toolbar; r=agi,owlish,hiro
* Per advice from Emilio on Matrix, I consolidated overflow checks into `ScrollFrameHelper::GetOverflowState()`.
* In `ScrollFrameHelper::ReflowFinished` we detect the condition requring the app to expand the toolbar.
  (Hiro, I know that you suggested a second place to detect this. If you feel that it is important enough to add that,
   we'd prefer filing a follow-up bug in Layout for that case that your team can follow up on.)
* We then propagate the notification through `PresShell`, up through `PBrowser`, through the `nsWindow`, then into the `GeckoSession`
* We invoke a new method on the `ContentDelegate`. This seemed like the reasonable delegate to use given other existing
  callbacks in the similar vein (such as going fullscreen), but let me know if this should go elsewhere.
* We update GVE and JUnit tests to test this.

Differential Revision: https://phabricator.services.mozilla.com/D120499
2021-07-27 21:50:03 +00:00
Matt Woodrow
8964031845 Bug 1721537 - Split out WindowRenderer base class from LayerManager. r=miko
Depends on D120439

Differential Revision: https://phabricator.services.mozilla.com/D120440
2021-07-22 22:58:57 +00:00
Miko Mynttinen
e08ed6616a Bug 1720711 - Remove most nsDisplayItem::GetAbove() calls r=mattwoodrow
Replaces direct linked list traversals with iterators.

Differential Revision: https://phabricator.services.mozilla.com/D119985
2021-07-16 10:55:03 +00:00
Botond Ballo
1df704c06c Bug 1712400 - Account for the resolution in the enclosing document when positioning and sizing the drag preview image when dragging content in a nested content process. r=hiro
Differential Revision: https://phabricator.services.mozilla.com/D119358
2021-07-10 17:23:20 +00:00
Timothy Nikkel
918dfc7169 Bug 1681692. In FindViewContaining we are only crossingZoomBoundary if we start in visual coordinates. r=botond
In the most common case the first call to FindViewContaining has aRelativeToView = aView = the root view of the root content document, and we start in visual coords. Then we convert to layout coords and call FindViewContaining recusively with aRelativeToView = the root view again, aView = a child of the root view and working in layout coords. And we still satisfy the conditions to set crossingZoomBoundary to true, which is incorrect because we already crossed. We need to check that we are also in visual coords.

Differential Revision: https://phabricator.services.mozilla.com/D105438
2021-07-09 10:06:00 +00:00
Emilio Cobos Álvarez
f1fe1437c8 Bug 1719375 - Consider documents used-as-an-image always active. r=tnikkel
These are ticked when painted, so it is fine and it's effectively what
happened before bug 1717983 (because we didn't get into this condition:
https://hg.mozilla.org/mozilla-central/rev/cb704553fc64#l3.73).

Differential Revision: https://phabricator.services.mozilla.com/D119314
2021-07-08 12:54:48 +00:00
Emilio Cobos Álvarez
7a168682f9 Bug 1719571 - Don't use null as a fallback when there's no doc uri.
Differential Revision: https://phabricator.services.mozilla.com/D119387
2021-07-08 11:14:57 +00:00
Emilio Cobos Álvarez
fa98aa4301 Bug 1719440 - Add some logging for PresShell activeness. r=hiro
Differential Revision: https://phabricator.services.mozilla.com/D119262
2021-07-07 10:30:11 +00:00
Hiroyuki Ikezoe
c0b9f5e72f Bug 1700245 - Use IsAncestorFrameCrossDocInProcess in PresShell::ClearMouseCapture(nsIFrame*). r=tnikkel
Since bug 1717726 we've disallowed having remote <browser> or remote <iframe>
inside nsDeckFrame which means `captureingFrame` in ClearMouseCapture(nsIFrame*)
function will never be called in an out-of-process thus we can use
IsAncestorFrameCrossDocInProcess there.

Also add an assertions that the function gets called only with a child frame of
nsDeckFrame since this function is used only inside nsDeckFrame.

Depends on D119068

Differential Revision: https://phabricator.services.mozilla.com/D119069
2021-07-06 08:58:56 +00:00
Hiroyuki Ikezoe
3fb868fce9 Bug 1700245 - Split PresShell::ClearMouseCapture into two functions, one takes nsIFrame, the other takes no argument. r=tnikkel
Depends on D119067

Differential Revision: https://phabricator.services.mozilla.com/D119068
2021-07-06 08:58:55 +00:00
Emilio Cobos Álvarez
f17f9753e7 Bug 1717983 - Don't consider a browser active if the tab is inactive but we're preserving layers. r=nika
GeckoView always calls preserveLayers(true) on all <browser> elements,
which causes the puppet widget to always be considered visible.

Given how the code worked before, aBrowsingContext.isActive = false
after that call would deactivate the pres shell, but after my patch it
stops doing so.

We don't really want to un-throttle the refresh driver etc just because
we're preserving layers, so propagate the state to the child process and
account for that in the logic to determine PresShell activeness.

Depends on D118703

Differential Revision: https://phabricator.services.mozilla.com/D118884
2021-07-05 17:31:49 +00:00
Emilio Cobos Álvarez
1af5e8922e Bug 1717983 - Improve PresShell active flag handling. r=nika
This moves the logic of whether a pres shell should be active to a
single place to make it sane to reason about, and fixes the
subdocument propagation when a BrowserChild becomes visible.

Differential Revision: https://phabricator.services.mozilla.com/D118703
2021-07-05 17:31:48 +00:00
Florian Quèze
bad6178c51 Bug 1717991 - Remove ifdefs around code that adds profiler markers with custom marker schemas, r=gerald.
Differential Revision: https://phabricator.services.mozilla.com/D118680
2021-06-25 13:28:01 +00:00
Sandor Molnar
a7f0c731ec Backed out changeset b46a490223a1 (bug 1717983) for causing android failures. CLOSED TREE 2021-06-25 03:29:08 +03:00
Emilio Cobos Álvarez
889fc1efd2 Bug 1717983 - Improve PresShell active flag handling. r=nika
This moves the logic of whether a pres shell should be active to a
single place to make it sane to reason about, and fixes the
subdocument propagation when a BrowserChild becomes visible.

Differential Revision: https://phabricator.services.mozilla.com/D118703
2021-06-24 20:50:10 +00:00
Botond Ballo
c778e3dbbb Bug 1698693 - Convert audited calls to GetCrossDocParentFrame() to GetCrossDocParentFrameInProcess(). r=tnikkel
See bug 1698693 comment 6 and subsequent comments for the audit.

Depends on D117388

Differential Revision: https://phabricator.services.mozilla.com/D117389
2021-06-23 22:05:31 +00:00
Botond Ballo
48d964a989 Bug 1698693 - Make the GetNearestScrollableFrame() call in GetCurrentItemAndPositionForElement() stop at the root scroll frame. r=tnikkel
See rationale in bug 1698693 comment 9.

The added flags ensure we stop at the RSF even if it's overflow:hidden,
or if the starting frame is in fixed content.

Depends on D117387

Differential Revision: https://phabricator.services.mozilla.com/D117388
2021-06-23 22:05:31 +00:00
Florian Quèze
76d92a054e Bug 1715257 - Remove Task Tracer code from the profiler, r=gerald,necko-reviewers.
Differential Revision: https://phabricator.services.mozilla.com/D117996
2021-06-17 09:33:00 +00:00
Iulian Moraru
4b5e996bef Backed out changeset 617a466d0cce (bug 1715257) for causing build bustages. CLOSED TREE 2021-06-17 10:58:16 +03:00
Florian Quèze
2b195470a1 Bug 1715257 - Remove Task Tracer code from the profiler, r=gerald,necko-reviewers.
Differential Revision: https://phabricator.services.mozilla.com/D117996
2021-06-17 06:12:10 +00:00
Emilio Cobos Álvarez
af2c2bcb4a Bug 1649367 - Fix some usage of IsRootContentDocument in PresShell. r=tnikkel
This doesn't change behavior, and is consistent with the changes made in
bug 1554832 to this code.

Differential Revision: https://phabricator.services.mozilla.com/D98473
2021-06-13 09:31:17 +00:00
Kagami Sascha Rosylight
cc180203f9 Bug 1713491 - Return std::pair from nsIFrame::GetOffsets r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D117520
2021-06-11 23:54:06 +00:00
Butkovits Atila
645878eef7 Backed out changeset aa6c7477c4d2 (bug 1713491) for causing build bustages on nsIFrame.cpp. CLOSED TREE 2021-06-12 00:12:06 +03:00
Kagami Sascha Rosylight
c15b9875ad Bug 1713491 - Return std::pair from nsIFrame::GetOffsets r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D117520
2021-06-11 18:53:28 +00:00
Dorel Luca
1406700f5f Backed out changeset 17e7b969b830 (bug 1713491) for Linux build bustage in gecko/dom/events/ContentEventHandler.cpp. CLOSED TREE 2021-06-11 17:52:10 +03:00
Kagami Sascha Rosylight
9b322e9f67 Bug 1713491 - Return std::pair from nsIFrame::GetOffsets r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D117520
2021-06-11 11:37:11 +00:00
Kartikaya Gupta
7c375a1189 Bug 1694847 - Remove the expired SCROLL_INPUT_METHODS telemetry probe. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D116320
2021-05-31 21:36:35 +00:00
Timothy Nikkel
11d35970ed Bug 1710052. Allow repaint requests to update the resolution if the last resolution change origin was apz in addition to when the old resolution matches. r=botond
During double tap animations we can be in a situation where we get two repaint requests from every layers update. The first one comes from NotifyLayersUpdated and scroll offset update type is eNone, the second from the zoom animation ticking has scroll offset update type eUserAction and there was a layout scroll position update. Both can have some amount of aync zoom (not necessarily equal), and have the same content pres shell resolution.

We handle the eNone one first, and update the content pres shell resolution. Then for the eUserAction we check the content presshell resolution and it no longer matches, so we drop the request entirely thinking its out of date (including the scroll position update). It's not out of date of course, content hasn't done any updates, so apz has the latest info (even if it might not have a fully up to date value of the content pres shell resolution, it's value of zoom is the most up to date of anywhere).

Differential Revision: https://phabricator.services.mozilla.com/D114587
2021-05-19 02:50:52 +00:00
Emilio Cobos Álvarez
e2535fd8fb Bug 1710643 - Fix encoding of the theme change kind so it doesn't crash when getting converted to JS if non-zero.
MANUAL PUSH: Fixes orange in some tests that do restricted theme
changes CLOSED TREE.
2021-05-13 01:53:38 +02:00
Emilio Cobos Álvarez
79b783704d Bug 1708303 - Fix scroll-margin implementation. r=hiro
So that margin is not included in the rect for visibility calculations,
and padding and margin are accounted properly on them.

Differential Revision: https://phabricator.services.mozilla.com/D113853
2021-05-06 00:54:14 +00:00