Commit Graph
3114 Commits
Author SHA1 Message Date
Emilio Cobos Álvarez f0909e022f Bug 1897827 - Remove FrameChildListID::Popup. r=dholbert
It's no longer used. I made popups regular absolutely-positioned frames
a long time ago.

Differential Revision: https://phabricator.services.mozilla.com/D210949
2024-05-20 22:00:08 +00:00
Ting-Yu Lin b4a0842882 Bug 1824877 Part 3 - Change ScrollContainerFrame's type from Scroll to ScrollContainer. r=dholbert
This effectively changes the `IsScrollFrame()` helper to
`IsScrollContainerFrame()`.

Differential Revision: https://phabricator.services.mozilla.com/D210357
2024-05-15 17:50:49 +00:00
Ting-Yu Lin 27bb908f13 Bug 1824877 Part 2 - Rename nsHTMLScrollFrame to mozilla::ScrollContainerFrame. r=dholbert
Also, change the ScrollContainerFrame::GetFrameName() to return
"ScrollContainer" instead of "HTMLScroll".

Differential Revision: https://phabricator.services.mozilla.com/D210233
2024-05-15 17:50:48 +00:00
Daniel Holbert af69b59aae Bug 1896711 part 3: Use MakeRefPtr/MakeAndAddRef to reduce boilerplate, in layout/base. r=TYLin
Also remove some unnecessary null-checks for objects that we're allocating
infallibly.

Differential Revision: https://phabricator.services.mozilla.com/D210389
2024-05-15 07:29:20 +00:00
Daniel Holbert 5e29f9c32f Bug 1896745: Avoid unnecessary refcount traffic when appending DOMRect & PaintRequest to array-of-RefPtrs. r=mccr8
For these objects, we have an `Append(Foo*)` method which is just a
wrapper-function that appends to a `nsTArray<RefPtr<Foo>>`.  As it happens,
every callsite is passing in a local `RefPtr` variable that's no longer needed
after the call to `Append`.

It's slightly more performant to use move-semantics to directly transfer
ownership of the existing reference from the local variable to the array,
rather than having the reference count take one step forward and then one step
back, as we were doing before this patch.

Differential Revision: https://phabricator.services.mozilla.com/D210364
2024-05-14 22:12:30 +00:00
Tamas Szentpeteri 4147c1b62d Backed out changeset da2ce8506b46 (bug 1787790) for causing build bustages related to nsLayoutUtils.cpp. CLOSED TREE 2024-05-13 12:48:08 +03:00
Pier Angelo Vendrame 02918f1a32 Bug 1787790: Normalize system fonts with RFP on. r=emilio
System fonts can leak any user customization of system fonts, or user's
locale (e.g., en-US and ja Windows have different system fonts).
Also, Linux distributions/desktop environments set default fonts in
different ways.

Customization can be detected either with font metrics, the font allowed
list is not enabled or the font is included in it, or with
getComputedStyle, that leaks the name of the font that Firefox tries to
apply.

This patch try to prevent these leaks by using a generic "sans-serif"
for all system fonts, except on macOS, where it uses "-apple-system",
and on Android, where these fonts always use Roboto.

Differential Revision: https://phabricator.services.mozilla.com/D163576
2024-05-13 09:15:16 +00:00
Emilio Cobos Álvarez 28bdfc0fba Bug 1281158 - Parse alternative text for the content property. r=dshin
This doesn't yet expose it to a11y but that will be done by the a11y
folks, since this blocks some of the a11y interop test-cases.

Modify the tests to not hit the network, and make -moz-alt-content not
exposed to content (we only need it for UA stylesheets).

Differential Revision: https://phabricator.services.mozilla.com/D209690
2024-05-08 16:06:47 +00:00
Emilio Cobos Álvarez 5bda148d59 Bug 1895561 - Password appearance should be suppressed by author borders / backgrounds, just like textfield is. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D209753
2024-05-07 21:26:27 +00:00
Ting-Yu Lin 23d5641a3d Bug 1488080 Part 2 - Use margin-box with 'auto' margin resolved as zero when computing the sticky limits. r=dholbert
In block or flex layout, an 'auto' margin can be used to align the element by
consuming rest of the space of a particular side in its container [1]. However,
if we used the resolved 'auto' margin as part of the element's margin-box, it
won't stick within its scroll container if the margin is larger than the scroll
container's size in that dimension. Bug 1488080 comment 15 has more explanation.

The spec requires all 'auto' margin on the box are treated as zero when
computing Static-Position Rectangle [2] (See the requirement at the end of this
section).

[1] https://drafts.csswg.org/css-flexbox-1/#auto-margins
[2] https://drafts.csswg.org/css-position/#staticpos-rect

Differential Revision: https://phabricator.services.mozilla.com/D209097
2024-05-03 18:42:41 +00:00
Ting-Yu Lin 5604d30ede Bug 1488080 Part 1 - Convert GetAllInFlowRects flags to EnumSet. r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D209096
2024-05-03 18:42:41 +00:00
Ting-Yu Lin cf7be78eb0 Bug 1892778 Part 2 - Convert InlineDir and BlockDir to enum classes. r=dholbert
Also, rewrite GetInlineDir() and GetBlockDir() to remove bit operations for
computing the InlineDir and BlockDir enum variants.

Differential Revision: https://phabricator.services.mozilla.com/D208176
2024-04-23 03:56:42 +00:00
Ting-Yu Lin ecc8d53a54 Bug 1891173 - Convert PhysicalAxis to an enum class. r=layout-reviewers,emilio
Differential Revision: https://phabricator.services.mozilla.com/D207332
2024-04-15 22:17:25 +00:00
Ting-Yu Lin 319fc12b73 Bug 1888535 Part 4 - Remove DISPLAY_PREF_INLINE_SIZE and DISPLAY_MIN_INLINE_SIZE. r=layout-reviewers,emilio
The two macros are used in `GetPrefISize()` and `GetMinISize()` implementations.
After removing them, we could further simplify some implementations because we
don't need a `result` variable in many cases.

This patch doesn't change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D206316
2024-04-02 19:03:04 +00:00
Emilio Cobos Álvarez dadf0fbdef Bug 1888242 - Simplify viewport handling in RDM. r=bradwerth,devtools-reviewers,ochameau
In particular:

 * Always handle meta viewport in RDM. This fixes bug 1625999 too by
   making touch simulation enabled and disabled consistent.

 * Restore the resolution to 1 when toggling RDM. This is just simpler,
   and we're not keeping around the visual viewport offsets anyways
   so...

 * Deal with the change more easily, at the same point we switch
   scrollbars etc.

Differential Revision: https://phabricator.services.mozilla.com/D206266
2024-04-02 15:21:04 +00:00
sid 568f27d168 Bug 1825386 - Converted LogicalAxis to enum class and type casted where necessary. r=TYLin
LogicalAxis is one of the Logical* enums. Converting it from enum to
enum class increases type safety. To run with the pre-existing code,
type casting was added when needed. Comments have been edited where
needed.

Differential Revision: https://phabricator.services.mozilla.com/D206108
2024-03-30 16:20:37 +00:00
sotaro b1a624365a Bug 1887818 - Prevent to call GPUVideoImage::GetAsSourceSurface() in CanvasRenderingContext2D::DrawImage() for RemoteDecoderVideoSubDescriptor::Tnull_t if CanvasTranslator is used r=gfx-reviewers,lsalzman
GPUVideoImage::GetAsSourceSurface() is heavy weight. It seems better to prevent to call it if possible.

The change handles only a case that CanvasTranslator is used, SurfaceDescriptor is RemoteDecoderVideoSubDescriptor::Tnull_t and OptimizeShadow is not used.

DrawTargetRecording::DrawSurfaceDescriptor() also holds layers::Image of SurfaceDescriptor. It is necessary to keep the Image alive in CanvasDrawEventRecorder until end of its usage in CanvasTranslator.

Differential Revision: https://phabricator.services.mozilla.com/D205677
2024-03-28 06:24:41 +00:00
Boris Chiou 2058fd2c6b Bug 1870200 - Break the cyclic dependency if any of the desendants uses non-scaling-stroke. r=emilio
While we are computing the transform-box:stroke-box, for CSS Transforms or
Motion path Transforms, we have to avoid the cyclic dependency not only
for the SVG geometry frame itself, but also for the desendants of
the SVG container frame. Therefore, we just compute its fill-box (i.e.
make |getStroke| be false).

https://github.com/w3c/csswg-drafts/issues/9640

Differential Revision: https://phabricator.services.mozilla.com/D203184
2024-03-04 20:46:05 +00:00
Emilio Cobos Álvarez 1df8c0453d Bug 1879579 - Clean up CompareTreePosition and related code. r=smaug
Make TreeOrderedArray support what the form controls stuff needs, and
use it instead of custom nsContentUtils stuff.

Differential Revision: https://phabricator.services.mozilla.com/D201261
2024-02-12 20:01:36 +00:00
Noemi Erli 1637a997a2 Backed out changeset 1acc95286189 (bug 1879579) for causing mass failures CLOSED TREE 2024-02-12 17:25:21 +02:00
Emilio Cobos Álvarez 97dc4d46da Bug 1879579 - Clean up CompareTreePosition and related code. r=smaug
Make TreeOrderedArray support what the form controls stuff needs, and
use it instead of custom nsContentUtils stuff.

Differential Revision: https://phabricator.services.mozilla.com/D201261
2024-02-12 00:01:23 +00:00
Andrew Osmond e944dfb299 Bug 1872956 - Avoid copying document URI in nsLayoutUtils::PaintFrame unless logging. r=layout-reviewers,tnikkel
Most of the time, we don't need to call Document::GetDocumentURI in
nsLayoutUtils::PaintFrame, as it is only used when we are logging or
dumping to the console. We should avoid calling it because this might be
quite large in the case of data URIs and result in OOM crashes. This is
most commonly observed with rasterizing SVG images.

Differential Revision: https://phabricator.services.mozilla.com/D197637
2024-01-04 02:54:49 +00:00
Timothy Nikkel 051c4763e1 Bug 1872443. Fix nsLayoutUtils::GetReferenceFrame to match nsDisplayListBuilder::FindReferenceFrameFor. r=layout-reviewers,emilio
https://hg.mozilla.org/integration/mozilla-inbound/rev/621ab19e86db (bug 1097464) is where the IsPreserve3DLeaf call was added. At that time FindReferenceFrame did exist and did not call IsPreserve3DLeaf.

FindReferenceFrame is used in more places and all the places that one would expect to cause breakage. I searched and I do not see any evidence that preserve3d leaves should be reference frames.

The only case where a frame would be IsPreserve3DLeaf but not transformed is when it has backface hidden. I see no reason by backface hidden would cause a reference frame.

I believe that the way that we handle preserve3d has changed significantly since that patch landed, so if it was correct then, likely to not be correct now.

Differential Revision: https://phabricator.services.mozilla.com/D197439
2023-12-31 09:38:07 +00:00
Timothy Nikkel 2f7b74918d Bug 1871751. Avoid AsyncPanZoomEnabled call in MaybeCreateDisplayPortInFirstScrollFrameEncountered. r=layout-reviewers,emilio
The return value of nsLayoutUtils::AsyncPanZoomEnabled only changes if we descend into a frame whose display root widget is different. But that is not possible, we do not descend into any frames that are in different widgets.

Differential Revision: https://phabricator.services.mozilla.com/D197237
2023-12-30 10:23:09 +00:00
Robert Longson 329105f605 Bug 1872241 - Remove svgFloatSize and use gfx::Size instead r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D197371
2023-12-28 12:59:10 +00:00
Emilio Cobos Álvarez e39a7a3109 Bug 1871412 - Fix scroll container checks for automatic minimum size and grid stretching checks. r=dholbert
The spec says scroll container, so overflow: visible and clip shouldn't
be different.

Note that the spec here is pending some edits from
https://github.com/w3c/csswg-drafts/issues/7714 tho.

Differential Revision: https://phabricator.services.mozilla.com/D197052
2023-12-26 20:49:16 +00:00
Butkovits Atila cefb512cd6 Backed out changeset 2feca7f78d58 (bug 1871751) for causing failures at DisplayPortUtils.cpp. CLOSED TREE 2023-12-26 14:12:45 +02:00
Timothy Nikkel 2660450368 Bug 1871751. Avoid AsyncPanZoomEnabled call in MaybeCreateDisplayPortInFirstScrollFrameEncountered. r=layout-reviewers,emilio
The return value of nsLayoutUtils::AsyncPanZoomEnabled only changes if we descend into a frame whose display root widget is different. But that is not possible, we do not descend into any frames that are in different widgets.

Differential Revision: https://phabricator.services.mozilla.com/D197237
2023-12-26 11:39:54 +00:00
Zach HoffmanandFrederic Wang 1e7649831a Bug 1846516 - [css-properties-values-api] Introduce AnimatedPropertyID/AnimatedPropertIDSet. r=firefox-animation-reviewers,firefox-style-system-reviewers,layout-reviewers,emilio,hiro
This will make possible to animate custom properties on Gecko side. For now, the
animation code keeps only dealing with nsCSSPropertyID, so behavior is unchanged.

Co-authored-by: Frederic Wang <[email protected]>

Depends on D190816

Differential Revision: https://phabricator.services.mozilla.com/D191059
2023-12-18 09:24:08 +00:00
Emilio Cobos Álvarez c27730d3df Bug 1364813 - Remove IsFrameOfType, use non-virtual checks. r=jwatt
Extend the per-frame-class bit we have to devirtualize IsLeaf to also
devirtualize IsFrameOfType. That is, move this data to FrameClasses.py.

This was done by going through all the frame classes, trying to preserve
behavior.

The only quirky thing is that I had to add two more trivial frame
classes, `nsAudioFrame` for audio elements, and
`nsFloatingFirstLetterFrame`. That's because these frame classes were
returning different answers at runtime, but they do this only on
conditions that trigger frame reconstruction (floating, and being an
audio element, respectively).

Differential Revision: https://phabricator.services.mozilla.com/D194703
2023-11-26 22:17:28 +00:00
Jonathan Watt 61ff6ba12e Bug 1866011 p2. Rename nsIDocShell.contentViewer. r=emilio,credential-management-reviewers,devtools-reviewers,sgalich
Differential Revision: https://phabricator.services.mozilla.com/D194370
2023-11-24 09:10:52 +00:00
Jonathan Watt aa67eb0d46 Bug 1865995 p5. Rename GetContentViewerSize to match nsIDocumentViewer's new name. r=emilio,geckoview-reviewers,owlish
Includes the methods on:
 - nsIDOMWindowUtils
 - nsLayoutUtils
 - MVMContext

Differential Revision: https://phabricator.services.mozilla.com/D194339
2023-11-23 21:35:20 +00:00
Jonathan Watt efb5a74fbc Bug 1865480. Rename nsIContentViewer to nsIDocumentViewer. r=layout-reviewers,emilio
Differential Revision: https://phabricator.services.mozilla.com/D193987
2023-11-21 12:45:59 +00:00
Boris Chiou 148393c7ad Bug 1852323 - Part 2: Fix the mapping of StyleGeometryBox for mask-clip. r=emilio
Also, drop `nsLayoutUtils::ComputeGeometryBox()` and avoid doing mapping
in `ComputeHTMLReferenceRect()` and `ComputeSVGReferenceRect()`. The
caller should handle it properly because each property uses its own mapping
between CSS box and SVG box.

Note:
1. mask-clip-3.html is copied from mask-clip-1.html but just replace
   css boxes with svg boxes.
2. mask-clip-4.html is copied from mask-clip-2.html but just replace
   svg boxed with css boxes.

Differential Revision: https://phabricator.services.mozilla.com/D188316
2023-10-10 22:00:32 +00:00
Boris Chiou b7276f80ae Bug 1852323 - Part 1: Update the mapping of geometry box for clip-path. r=emilio
It seems mask-origin/mask-clip/clip-path use different mapping for
geometry-box. We should specialize each one. In this patch, we focus on
clip-path.

Differential Revision: https://phabricator.services.mozilla.com/D188146
2023-10-10 22:00:32 +00:00
Boris Chiou c685059bd0 Bug 1856471 - Ignore min-x and min-y when computing view-box (so we return origin box). r=dholbert
Per https://github.com/web-platform-tests/interop/issues/509, we update
the coordinate to match the spec, i.e. When the viewBox includes non-zero min-x
or min-y offsets, this origin box does not actually correspond to the visible
region rectangle defined by the viewBox.
https://drafts.csswg.org/css-box-3/#valdef-box-view-box

Also simplify mask-clip-2.html and mask-origin-3.html so that their
viewBox is anchored at the origin so it is the same as the origin box.

Differential Revision: https://phabricator.services.mozilla.com/D190325
2023-10-10 06:26:51 +00:00
Dan Robertson 4f6ca208b9 Bug 700533 - Use a fallback size for canvas drawImage if the given image has no intrinsic size (e.g. certain SVG images). r=dholbert
When computing the size of an image for CanvasRenderingContext2D.drawImage(),
use the fallback size of 300 x 150 if the image contains no width or
height. This may occur if the SVG contained no width or height attribute.

Depends on D182487

Differential Revision: https://phabricator.services.mozilla.com/D182488
2023-09-25 16:01:34 +00:00
Andrew Osmond 72168e436c Bug 1854431 - Extract surface format from GPUVideoImage for VideoFrame. r=media-playback-reviewers,chunmin
This patch allows us to extract a VideoPixelFormat for a VideoFrame when
backed by a GPUVideoImage. This in turn is used by SurfaceFromVideoFrame
for canvas drawing. With a concrete surface format, we can avoid
readbacks with WebGL in particular and dramatically improve performance
in existing demos.

Differential Revision: https://phabricator.services.mozilla.com/D188853
2023-09-21 23:45:16 +00:00
Emilio Cobos Álvarez d4808f0407 Bug 1853392 - Simplify font-size-adjust: from-font handling. r=jfkthame
Differential Revision: https://phabricator.services.mozilla.com/D188355
2023-09-15 22:17:25 +00:00
Markus Stange a4e2816d54 Bug 1843484 - Use EventTarget* instead of nsISupports* for the event target parameter of the EventDispatcher::Dispatch methods. r=smaug
This saves a few QueryInterface calls on the hot path.

Differential Revision: https://phabricator.services.mozilla.com/D186977
2023-08-28 23:38:43 +00:00
Robert Longson e295748154 Bug 1849130 - clip-path on SVG content should default to using the stroke-box r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D186475
2023-08-20 07:04:23 +00:00
Andrew Osmond d392139494 Bug 1645555 - Ensure we return surfaces with the proper size with canvas and ImageBitmap. r=gfx-reviewers,lsalzman
In general the canvas size and the surface size should match. However if
we are in the process of updating an OffscreenCanvas's size, it is
possible we may return a surface with a different size if an ImageBitmap
is created, or we draw using, the placeholder HTMLCanvasElement. In that
case we should ensure the surface we yield is the same size as the
current intrinsic size of the HTMLCanvasElement.

Differential Revision: https://phabricator.services.mozilla.com/D186376
2023-08-16 21:01:34 +00:00
Emilio Cobos Álvarez 12547c0c1c Bug 1847929 - Don't throttle zero-size in-viewport OOP iframes. r=smaug
Use edge-inclusive intersection like IntersectionObserver, to make
zero-size iframes that are in the viewport considered visible. This is
consistent with how we treat zero-sized in-process iframes.

Differential Revision: https://phabricator.services.mozilla.com/D185808
2023-08-10 09:30:02 +00:00
Jonathan Kew 63dfa6055c Bug 1708240 - Implement the from-font keyword for CSS font-size-adjust. r=emilio,devtools-reviewers
Depends on D182450

Differential Revision: https://phabricator.services.mozilla.com/D182451
2023-08-01 12:40:31 +00:00
Noemi Erli 0e6cc995d9 Backed out 5 changesets (bug 1708240) for causing failures in test_css-properties-db.js CLOSED TREE
Backed out changeset 695203c0ff61 (bug 1708240)
Backed out changeset e686e061b8b5 (bug 1708240)
Backed out changeset eac4b88ab28d (bug 1708240)
Backed out changeset e766d2a9180e (bug 1708240)
Backed out changeset 79c808970af5 (bug 1708240)
2023-08-01 15:12:46 +03:00
Jonathan Kew 130797ed14 Bug 1708240 - Implement the from-font keyword for CSS font-size-adjust. r=emilio
Depends on D182450

Differential Revision: https://phabricator.services.mozilla.com/D182451
2023-08-01 10:49:58 +00:00
Jan-Niklas Jaeschke 4134763b27 Bug 1838262, part 2: Implemented getComputedStyle() for custom highlight api. r=emilio
This patch introduces functional pseudo parameters, i.e. `::highlight(foo)`,
for `getComputedStyle()`. This required adapting the parse algorithm (`nsCSSPseudoElements::ParsePseudoElement()`) and forwarding the functional pseudo parameter into the style engine.

Differential Revision: https://phabricator.services.mozilla.com/D183773
2023-07-31 13:47:54 +00:00
Emilio Cobos Álvarez 5524090db0 Bug 1844241 - Remove now-dead graphics glass code. r=tnikkel,devtools-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D183942
2023-07-19 12:44:34 +00:00
Razvan Cojocaru 272df8f2b0 Bug 1841478 - Use strongly-typed coordinates in the BaseSize constructor. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D182654
2023-07-10 02:59:01 +00:00
Andrew Osmond db122dc77c Bug 1781527 - Part 3. Implement support for surfaces requiring scaling/crop rects with canvas. r=lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D182208
2023-07-10 00:26:47 +00:00