Commit graph

526 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
52927ddd54 Bug 1787127 - Use used color-scheme (not preferred) to determine canvas background adjustments. r=tnikkel
As per spec, see https://drafts.csswg.org/css-color-adjust/#color-scheme-effect:

> In order to preserve expected color contrasts, in the case of embedded
> documents typically rendered over a transparent canvas (such as
> provided via an HTML iframe element), if the used color scheme of the
> element and the used color scheme of the embedded document’s root
> element do not match, then the UA must use an opaque canvas of the
> Canvas color appropriate to the embedded document’s used color scheme
> instead of a transparent canvas.

After bug 1782596 we were using the preferred rather than used
color-scheme, which is the right thing to do for prefers-color-scheme,
but not for the canvas background.

Differential Revision: https://phabricator.services.mozilla.com/D155831
2022-09-04 23:16:32 +00:00
Emilio Cobos Álvarez
9df7e6bca8 Bug 1782596 - Propagate preferred color-scheme to non-top frames. r=jwatt
The ColorSchemeMode::Preferred change doesn't make a difference (that
is, always use the preferred one), since when we only propagate from
top's embedder the embedder is chrome, which always has the preferred
color-scheme.

Differential Revision: https://phabricator.services.mozilla.com/D154931
2022-08-22 14:23:09 +00:00
Andreas Farre
4b493b6a30 Bug 1595491 - Part 1: Make <embed> and <object> behave more like <iframe>. r=smaug,emilio
By making image loading in <embed> and <object> behave more like when
an <iframe> loads an image, we can make sure that the synthetic
document generated is process switched if the image is cross
origin. This is done by making image loading in nsObjectLoadingContent
follow the document loading path.

We also make sure that we pass the image size back to the embedder
element to not get stuck with the intrinsic size.

To avoid named targeting being able to target these synthetic
documents, as well as showing up in `Window.frames` and being counted
in `Window.length`, we keep a filtered list of non-synthetic browsing
contexts for that use-case.

This feature is controlled by two prefs:

* browser.opaqueResponseBlocking.syntheticBrowsingContext

  This triggers the creation of synthetic documents for images loaded
  in <object> or embed.

* browser.opaqueResponseBlocking.syntheticBrowsingContext.filter

  This turns on the filtering of synthetic browsing contexts in named
  targeting, `Window.length` and `Window.frames`.

Differential Revision: https://phabricator.services.mozilla.com/D148117
2022-08-16 16:42:58 +00:00
Oriol Brufau
aa992883c5 Bug 1782673 - Obey contain-intrinsic-size in iframes. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D153446
2022-08-02 14:11:15 +00:00
Ting-Yu Lin
f101e2077d Bug 1464761 Part 4 - Remove nsReflowStatus::mTruncated bit. r=dholbert
In the description of the mTruncated bit, its purpose is the same as calling
SetInlineLineBreakBeforeAndReset(). We've removed all its usages in previous
patches, so the bit is no longer needed.

Differential Revision: https://phabricator.services.mozilla.com/D151461
2022-07-27 21:55:18 +00:00
Oriol Brufau
6ae79ec065 Bug 1780475 - Obey contain-intrinsic-size in ContainSizeAxes. r=emilio
ContainSizeAxes::ContainSize and ContainSizeAxes::ContainIntrinsicSize
were just using 0 for the axes with size containment, now they will take
contain-intrinsic-width and contain-intrinsic-height into account.

The WritingMode parameter is replaced with a nsIFrame from which the
properties are retrieved.

There are various places that aren't currently using these functions, so
the effect of this patch is rather minimal, but some cases of the new
test are now passing.

Differential Revision: https://phabricator.services.mozilla.com/D152355
2022-07-22 14:35:10 +00:00
Miko Mynttinen
b72bc79cff Bug 1766650 - Store modified frames in display root frame RetainedDisplayListBuilder r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D144889
2022-05-30 14:20:58 +00:00
Emilio Cobos Álvarez
7184afff2f Bug 1738380 - Draw backgrounds of iframes with mismatched embedder color schemes. r=jwatt
In the future we might want to (also?) propagate the
prefers-color-scheme on the iframe like we do for the content/chrome
boundary / top browsing contexts, see:

 * https://github.com/w3c/csswg-drafts/issues/4772
 * https://github.com/w3c/csswg-drafts/issues/7213

Differential Revision: https://phabricator.services.mozilla.com/D146162
2022-05-20 15:20:34 +00:00
Razvan Cojocaru
ae67e4906d Bug 1767121 - Change the type of StackingContextHelper::mScale to MatrixScales. r=botond
Fix a minor typo while at it: "Inherrited" -> "Inherited".

Differential Revision: https://phabricator.services.mozilla.com/D146298
2022-05-19 01:45:52 +00:00
Daniel Holbert
bb5d1b73f6 Bug 1767131: run clang-format on the layout/ directory. r=emilio DONTBUILD
This patch does not impact behavior; it's just formatting changes.

This patch was automatically generated by the following command:
    ./mach clang-format -p layout

Differential Revision: https://phabricator.services.mozilla.com/D145163
2022-04-30 15:25:29 +00:00
Razvan Cojocaru
9788952c5a Bug 1733313 - Change EffectsInfo::mScaleX/Y into a Scale2D and rename to mRasterScale. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D144274
2022-04-26 03:12:38 +00:00
Emilio Cobos Álvarez
8de3540b68 Bug 1765331 - Account for dest rect correctly in nsDisplayRemote painting. r=tnikkel
The in-process code does this here:

  https://searchfox.org/mozilla-central/rev/4b3039b48c3cb67774270ebcc2a7d8624d888092/layout/generic/nsSubDocumentFrame.cpp#729-742

This doesn't do much for regular iframes because they have no meaningful
intrinsic ratio, but this will matter for bug 1595491.

Differential Revision: https://phabricator.services.mozilla.com/D144000
2022-04-20 11:00:58 +00:00
David Shin
ec93876623 Bug 1755565 - Implement contain: inline-size. r=emilio,dholbert
Differential Revision: https://phabricator.services.mozilla.com/D143501
2022-04-19 17:44:16 +00:00
Cosmin Sabou
7b5d2f5901 Backed out changeset 5d53e0ca638d (bug 1765331) for causing reftest assertion failures on APZCTreeManager.cpp. CLOSED TREE 2022-04-19 19:50:18 +03:00
Emilio Cobos Álvarez
b1750b3184 Bug 1765331 - Account for dest rect correctly in nsDisplayRemote painting. r=tnikkel
The in-process code does this here:

  https://searchfox.org/mozilla-central/rev/4b3039b48c3cb67774270ebcc2a7d8624d888092/layout/generic/nsSubDocumentFrame.cpp#729-742

This doesn't do much for regular iframes because they have no meaningful
intrinsic ratio, but this will matter for bug 1595491.

Differential Revision: https://phabricator.services.mozilla.com/D144000
2022-04-19 13:46:02 +00:00
Emilio Cobos Álvarez
21c7930924 Bug 1751961 - Account for cross-process paint scale in nsSubDocumentFrame::Paint. r=tnikkel
This is the real fix.

Depends on D142908

Differential Revision: https://phabricator.services.mozilla.com/D142909
2022-04-13 11:32:55 +00:00
Martin Robinson
b24fd95192 Bug 1761995 - Skip content-visibility: hidden content in display lists r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D142341
2022-04-05 09:10:42 +00:00
Emilio Cobos Álvarez
a18fdda05d Bug 1762298 - GCC build bustage and reftest fixes.
MANUAL PUSH: Orange fix CLOSED TREE
2022-04-04 22:14:24 +02:00
Emilio Cobos Álvarez
6553f27967 Bug 1762298 - Inherit used color-scheme from embedder <browser> elements. r=nika,dao,Gijs
This allows popups and sidebars to use the chrome preferred
color-scheme.

This moves the responsibility of setting the content-preferred color
scheme to the appropriate browsers to the front-end (via tabs.css).

We still return the PreferredColorSchemeForContent() when there's no
pres context (e.g., for display:none in-process iframes). We could
potentially move a bunch of the pres-context data to the document
instead, but that should be acceptable IMO as for general web content
there's no behavior change in any case.

Differential Revision: https://phabricator.services.mozilla.com/D142578
2022-04-04 18:22:04 +00:00
Miko Mynttinen
017d02d0ff Bug 1714584 - Part 2: Remove nsDisplayList::RemoveBottom() r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D138153
2022-02-22 23:42:18 +00:00
Miko Mynttinen
ddec6eef59 Bug 1714584 - Part 1: Decouple nsDisplayList internal list from nsDisplayItems r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D138152
2022-02-22 23:42:18 +00:00
Norisz Fay
2121660ce9 Backed out 2 changesets (bug 1714584) per devs request for causing crashes a=backout
Backed out changeset 3baead3e079b (bug 1714584)
Backed out changeset a2da895a58ce (bug 1714584)
2022-02-22 16:41:57 +02:00
Miko Mynttinen
0bd7fc8c56 Bug 1714584 - Part 2: Remove nsDisplayList::RemoveBottom() r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D138153
2022-02-22 00:44:25 +00:00
Miko Mynttinen
28474c7ad2 Bug 1714584 - Part 1: Decouple nsDisplayList internal list from nsDisplayItems r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D138152
2022-02-22 00:44:25 +00:00
Miko Mynttinen
ad4c9a454d Bug 1722346 - Only append to the end/top of the display list r=mstange
Differential Revision: https://phabricator.services.mozilla.com/D137894
2022-02-21 16:50:22 +00:00
Timothy Nikkel
9e235485ec Bug 1749286. Remove redundant calls marking remote browsers as hidden. r=miko
Remote browsers are fully hidden by default. The only place we mark them as visible is in nsDisplayRemote::CreateWebRenderCommands

https://searchfox.org/mozilla-central/rev/b3933df6e119bd6caf5d9e5868670348ec26dee3/layout/generic/nsSubDocumentFrame.cpp#1363

and we create a WebRenderUserData item there that marks the remote browser hidden in its destructor

https://searchfox.org/mozilla-central/rev/b3933df6e119bd6caf5d9e5868670348ec26dee3/gfx/layers/wr/WebRenderUserData.cpp#426

So that will mark it hidden when it's no longer visible. And in fact we destroy the WebRenderUserData table for the frame at both call sites that we are removing in this patch. So there shouldn't be any change with this patch.


I think the way this redundancy came about was because the code was first added for the layers backend in

https://hg.mozilla.org/integration/mozilla-inbound/rev/b81cf35a573e

and that of course doesn't user WebRenderUserdata so it needed to mark remote browsers hidden in its own way.

And then for webrender in

https://hg.mozilla.org/integration/mozilla-inbound/rev/ac0ad5d8e9a5

And then when FrameLayerBuilder was removed they got put together directly

https://hg.mozilla.org/mozilla-central/rev/a95f6a0cd9eb


The reason this is important is for bug 1737503. In that bug we destroy and recreate a remote iframe to handle a style change. If we mark a remote browser as hidden we will draw it as blank for one frame. So instead we want to delay this until the end of the next frame so we don't do that.

Differential Revision: https://phabricator.services.mozilla.com/D135575
2022-01-14 08:47:52 +00:00
Emilio Cobos Álvarez
9fbc18ca4c Bug 1733384 - Make inert not modify the computed style. r=sefeng,layout-reviewers,jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D127422
2021-10-07 17:00:36 +00:00
Butkovits Atila
4d927c1fb4 Backed out 4 changesets (bug 1733384) for causing failures at browser_windowPrompt.js. CLOSED TREE
Backed out changeset fa609fadac26 (bug 1733384)
Backed out changeset dd1936d9fe17 (bug 1733384)
Backed out changeset 1a073e40ab1a (bug 1733384)
Backed out changeset 65708a4c708f (bug 1733384)
2021-10-07 17:52:51 +03:00
Emilio Cobos Álvarez
bfdd0fcc77 Bug 1733384 - Make inert not modify the computed style. r=sefeng,layout-reviewers,jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D127422
2021-10-07 11:47:34 +00:00
Timothy Nikkel
708b53f06a Bug 1732600. Pass down transform to ancestor scale to child processes. r=botond
In bug 1731929 we added this value, here we give it the value we want for child processes. I think the code comments should explain it.

Differential Revision: https://phabricator.services.mozilla.com/D126629
2021-10-05 09:28:57 +00:00
Timothy Nikkel
23e5fd11c1 Bug 1730131. HitTestingTreeNode::GetRemoteDocumentScreenRect() double applies the resolution. r=hiro
Differential Revision: https://phabricator.services.mozilla.com/D125484
2021-09-14 02:33:36 +00:00
Timothy Nikkel
72553046c2 Bug 1728693. Use IsRootContentDocumentCrossProcess in nsSubDocumentFrame::BuildDisplayList. r=mattwoodrow
Not sure we even need this anymore but just doing this so I can finish the fission audit.

Added way back in bug 588407.

This shouldn't actually be any behaviour change: anything that is IsRootContentDocumentInProcess but not IsRootContentDocumentCrossProcess should be a oop if with fission (unless I'm missing a case), so we will never hit this code path, we'll hit the remote iframe path above.

Differential Revision: https://phabricator.services.mozilla.com/D124277
2021-09-03 02:22:11 +00:00
Matt Woodrow
7755c29fd8 Bug 1727423 - Remove BasicLayerManager. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D123555
2021-08-25 07:35:17 +00:00
criss
58591696b7 Backed out 2 changesets (bug 1727423) for causing build bustages
Backed out changeset 9b2ca95a6527 (bug 1727423)
Backed out changeset 1f01fcbd46a8 (bug 1727423)
2021-08-25 04:41:35 +03:00
Matt Woodrow
59e71b6c78 Bug 1727423 - Remove BasicLayerManager. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D123555
2021-08-25 01:04:26 +00:00
Matt Woodrow
0ee96e3fa5 Bug 1726291 - Remove FrameLayerBuilder. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D122930
2021-08-23 03:07:31 +00:00
Cosmin Sabou
b53abb88e7 Backed out changeset e111894317cc (bug 1726291) for causing assertion failures on WebRenderCommandBuilder.cpp. CLOSED TREE 2021-08-20 06:22:40 +03:00
Matt Woodrow
94015526e1 Bug 1726291 - Remove FrameLayerBuilder. r=miko
Differential Revision: https://phabricator.services.mozilla.com/D122930
2021-08-20 02:20:39 +00:00
Timothy Nikkel
33ea672136 Bug 1724904. Send resolution to oopifs with webrender. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D122212
2021-08-10 23:42:43 +00:00
Matt Woodrow
ec9b5dd838 Bug 1720152 - Recurse into replay for dependencies, rather than using a temp surface. r=jrmuizel,bobowen,emilio
Differential Revision: https://phabricator.services.mozilla.com/D120050
2021-08-09 22:07:36 +00:00
Emilio Cobos Álvarez
f2a7c7e14e Bug 1677324 - Add the ability for subdocuments to keep painting another remote subdoc. r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D121197
2021-08-01 21:45:56 +00:00
Miko Mynttinen
76c9644105 Bug 1720804 - Part 1: Move majority of the display list code inside mozilla namespace r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D120041
2021-07-19 11:28:20 +00:00
Alexandru Michis
fbd939b860 Backed out 2 changesets (bug 1720804) for causing bustages.
CLOSED TREE

Backed out changeset 5278e88c6d34 (bug 1720804)
Backed out changeset 1acb4ed79b6b (bug 1720804)
2021-07-16 18:10:11 +03:00
Miko Mynttinen
ffc501ddc9 Bug 1720804 - Part 1: Move majority of the display list code inside mozilla namespace r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D120041
2021-07-16 14:36:34 +00:00
Miko Mynttinen
f1d35170a6 Bug 1720803 - Merge nsDisplayItemBase and nsDisplayItem r=mattwoodrow
Differential Revision: https://phabricator.services.mozilla.com/D120039
2021-07-16 13:11:40 +00:00
Emilio Cobos Álvarez
0193e0b8c1 Bug 1716537 - Allow updating viewport dimensions on paginated subdocuments. r=mattwoodrow
As those don't have the same incremental reflow issues as root paginated
documents, and we do need this for remote iframes to update their
viewport.

Differential Revision: https://phabricator.services.mozilla.com/D119104
2021-07-08 13:21:50 +00:00
Timothy Nikkel
a29d03dbc6 Bug 1715187. Factor out the resolution from the transform we set on the WebRenderLayerScrollData in nsDisplayRemote::UpdateScrollData. r=botond,hiro
The resolutio needs to be applied on top of any other transforms on that WebRenderLayerScrollData.

Differential Revision: https://phabricator.services.mozilla.com/D118326
2021-07-08 09:48:20 +00:00
Narcis Beleuzu
935ff18b48 Backed out 2 changesets (bug 1716537) for WP failures on iframe-cross-origin-print.sub.html
Backed out changeset aa3e3f80bd68 (bug 1716537)
Backed out changeset 3226bc23c713 (bug 1716537)
2021-07-07 23:20:47 +03:00
Emilio Cobos Álvarez
4ac9da4216 Bug 1716537 - Allow updating viewport dimensions on paginated subdocuments. r=mattwoodrow
As those don't have the same incremental reflow issues as root paginated
documents, and we do need this for remote iframes to update their
viewport.

Differential Revision: https://phabricator.services.mozilla.com/D119104
2021-07-07 18:40:11 +00:00
Edgar Chen
47e66cd7d9 Bug 1716762 - Don't allow focus to move to remote iframe which is display: none; r=emilio
Make it behave the same as in-process iframe.

Differential Revision: https://phabricator.services.mozilla.com/D118002
2021-07-07 12:08:18 +00:00