Commit Graph
1323 Commits
Author SHA1 Message Date
Emilio Cobos Álvarez dc700db724 Bug 1886745 - Ignore containment for object-fit computation. r=dholbert,layout-reviewers
We were already doing the right thing for canvas/video.

Differential Revision: https://phabricator.services.mozilla.com/D210825
2024-05-17 17:03:19 +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
Ting-Yu Lin 7b4e1c313a Bug 1892307 Part 2 - Remove LogicalSideBits. r=layout-reviewers,jfkthame
We can replace `mBits` with `EnumSet<LogicalSide>` in `LogicalSides` so that
`LogicalSideBits` is not relavent.

Differential Revision: https://phabricator.services.mozilla.com/D207906
2024-04-19 22:16:03 +00:00
Ting-Yu Lin 8a77ebbb16 Bug 1888535 Part 5 - Remove DISPLAY_REFLOW. r=layout-reviewers,emilio
It is used in `Reflow()` implementations.

Differential Revision: https://phabricator.services.mozilla.com/D206317
2024-04-02 19:03:05 +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 c39cabe97e Bug 1560702 - Improve hit boxes of titlebar buttons. r=stransky,desktop-theme-reviewers,dao
In order to do it, expose the button padding to CSS via env(), and make
the buttons just use the regular drawing.

This slightly changes the padding to the end of the titlebar to match
one half of the inter-button spacing, rather that however much padding
the headerbar has.

We could improve on this slightly by also exposing the headerbar padding
and applying that to the last button, but that's not terribly easy to do
due to us supporting re-ordering of the titlebar buttons, and reversing
their placement, so it'd involve some rather hacky CSS. Not impossible,
but not trivial, and this looks good enough IMO.

Differential Revision: https://phabricator.services.mozilla.com/D202616
2024-02-27 10:28:56 +00:00
Frédéric Wang ae0b7271b8 Bug 1872657 - Add fetchpriority support for <link rel=preload as=image>. r=valentin,smaug,manuel
This patch adds fetchpriority support for `<link rel=preload as=image>`
and equivalent HTTP Link header. The fetchpriority value is passed from
where the link is parsed down to `NewImageChannel` where the priority
is initially set. Currently, the default equals PRIORITY_LOW, but is
decreased a bit if LOAD_BACKGROUND flag is set (this is always the case
for link preload images, see `imgLoader::LoadImage`). Later, the
priority can be increased again depending on the category (see
`imgRequest::BoostPriority`).

In order to minimize the changes, the new calculation is to keep the
initial setting to PRIORITY_LOW, adjust it using a new
`network.fetchpriority.adjustments.*` preference depending on the
fetchpriority attributes, and then preserve further adjustments for
LOAD_BACKGROUND and `BoostPriority`.

For the default value `fetchpriority=auto`, there is no adjustment
i.e. we continue to start with PRIORITY_LOW. `fetchpriority=low/high`
are respectively mapped to PRIORITY_LOW/PRIORITY_HIGH which is simple
and consistent with the "Image" cases from Google's web.dev article
https://web.dev/articles/fetch-priority. These values could of course
be revised in the future after more experiments.

This change is covered by the following tests below. The expectations
is modified to match what is described above (i.e. map to PRIORITY_LOW
or PRIORITY_HIGH with adjustment due to LOAD_BACKGROUND):
- `link-initial-preload-image.h2.html`
- `link-dynamic-preload-image.h2.html`
- `kPipeHeaderPreloadImageLinks`

Based on a patch by Mirko Brodesser ([email protected])

Differential Revision: https://phabricator.services.mozilla.com/D197493
2024-02-27 06:33:48 +00:00
Stanca Serban 08a6b4e21b Backed out changeset 621c8480cd35 (bug 1872657) for causing FetchPriority related bp-nu bustages in IconLoader.cpp. CLOSED TREE 2024-02-26 18:15:18 +02:00
Frédéric Wang b4d37da144 Bug 1872657 - Add fetchpriority support for <link rel=preload as=image>. r=valentin,smaug,manuel
This patch adds fetchpriority support for `<link rel=preload as=image>`
and equivalent HTTP Link header. The fetchpriority value is passed from
where the link is parsed down to `NewImageChannel` where the priority
is initially set. Currently, the default equals PRIORITY_LOW, but is
decreased a bit if LOAD_BACKGROUND flag is set (this is always the case
for link preload images, see `imgLoader::LoadImage`). Later, the
priority can be increased again depending on the category (see
`imgRequest::BoostPriority`).

In order to minimize the changes, the new calculation is to keep the
initial setting to PRIORITY_LOW, adjust it using a new
`network.fetchpriority.adjustments.*` preference depending on the
fetchpriority attributes, and then preserve further adjustments for
LOAD_BACKGROUND and `BoostPriority`.

For the default value `fetchpriority=auto`, there is no adjustment
i.e. we continue to start with PRIORITY_LOW. `fetchpriority=low/high`
are respectively mapped to PRIORITY_LOW/PRIORITY_HIGH which is simple
and consistent with the "Image" cases from Google's web.dev article
https://web.dev/articles/fetch-priority. These values could of course
be revised in the future after more experiments.

This change is covered by the following tests below. The expectations
is modified to match what is described above (i.e. map to PRIORITY_LOW
or PRIORITY_HIGH with adjustment due to LOAD_BACKGROUND):
- `link-initial-preload-image.h2.html`
- `link-dynamic-preload-image.h2.html`
- `kPipeHeaderPreloadImageLinks`

Based on a patch by Mirko Brodesser ([email protected])

Differential Revision: https://phabricator.services.mozilla.com/D197493
2024-02-26 15:03:58 +00:00
Edgar Chen 7c3453d032 Bug 1878976 - Remove plugin-related code in EventStateManager; r=emilio
`nsIFrame::GetCursor()` can never return `Nothing()` after bug 1687239, which
removes `nsPluginFrame`. Therefore `mLastFrameConsumedSetCursor` in
`EventStateManager` can never be true.

Differential Revision: https://phabricator.services.mozilla.com/D200890
2024-02-07 12:35:27 +00:00
Emilio Cobos Álvarez b3779858c8 Bug 1876541 - Factor out the common-to-all-elements intrinsic size steps to nsIFrame::FinishIntrinsicSize. r=TYLin
No behavior change.

Differential Revision: https://phabricator.services.mozilla.com/D199989
2024-02-07 09:39:33 +00:00
Ting-Yu Lin 4f26895e18 Bug 1877850 Part 1 - Convert callers of ReflowInput physical size accessors to use logical ones. r=dholbert
ReflowInput's computed sizes and border&padding are stored in logical
coordinates, so accessing the physical version is slower [1]. This patch
converts as many callers as possible to use logical coordinates.

This patch doesn't change behavior.

[1] For example, accessing `ComputedWidth()` and `ComputedHeight()` needs two
`IsVertical()` check, but `GetPhysicalSize()` only needs one.

Differential Revision: https://phabricator.services.mozilla.com/D200237
2024-02-01 22:02:00 +00:00
Ting-Yu Lin e9151ca0ee Bug 1875600 - Use nsIFrame::PresShell() to simply some callers. r=layout-reviewers,emilio
Those callers who using the pointer immediately after getting from
`GetPresShell()` can be replaced with `PresShell()`.

This patch doesn't change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D199164
2024-01-23 00:30:53 +00:00
Emilio Cobos Álvarez e370799f9c Bug 1861726 - Make StyleImage::GetResolution account for CSS zoom. r=layout-reviewers,jfkthame
This fixes rendering of background-image when CSS zoom is in effect.

Note that we want to scale the resolution by the _inverse_ of the
zoom, since having a higher image resolution means that the CSS
size gets shrunk and viceversa.

Differential Revision: https://phabricator.services.mozilla.com/D192130
2023-11-06 10:24:53 +00:00
Sean Feng 2d6e584e05 Bug 1722322 - Implement LargestContentfulPaint r=emilio
Spec: https://w3c.github.io/largest-contentful-paint

Differential Revision: https://phabricator.services.mozilla.com/D151079
2023-11-02 20:53:36 +00:00
Sandor Molnar d23e2827b7 Backed out 7 changesets (bug 1722322) for causing bp-nu bustages
Backed out changeset 0ebd32e273b8 (bug 1722322)
Backed out changeset 7a75717f127c (bug 1722322)
Backed out changeset c2a6440a83d7 (bug 1722322)
Backed out changeset 9955756855bd (bug 1722322)
Backed out changeset 37fccb407777 (bug 1722322)
Backed out changeset f52b1f28f753 (bug 1722322)
Backed out changeset 0121c8cf5d2f (bug 1722322)
2023-11-02 21:27:24 +02:00
Sean Feng cacfa492a8 Bug 1722322 - Implement LargestContentfulPaint r=emilio
Spec: https://w3c.github.io/largest-contentful-paint

Differential Revision: https://phabricator.services.mozilla.com/D151079
2023-11-02 17:04:47 +00:00
Timothy Nikkel ed32a00061 Bug 1857503. Avoid QI and addref when checking if an img has an imagemap. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D190286
2023-10-07 04:46:14 +00:00
Emilio Cobos Álvarez 6c324c6d1b Bug 1851868 - Refactor nsIFrame::Destroy to pass a single DestroyContext parameter. r=dholbert
This shouldn't change behavior, but it packs the two arguments to
DestroyFrom into a single thing, and makes nsIFrame::Destroy not so easy
to call without a previous context.

This is a prerequisite to pass aDestroyContext to various things that
right now just mint one, which can cause badness, see bug 1851787 and
related bugs.

It's also a bit nicer to add things there if we need to in the future.

Differential Revision: https://phabricator.services.mozilla.com/D187578
2023-09-07 11:46:30 +00:00
Narcis Beleuzu 33592fec5e Backed out changeset 55052ae7d067 (bug 1851868) for reftest failure on 1153695.html . CLOSED TREE 2023-09-07 02:42:25 +03:00
Emilio Cobos Álvarez 0698c96bd1 Bug 1851868 - Refactor nsIFrame::Destroy to pass a single DestroyContext parameter. r=dholbert
This shouldn't change behavior, but it packs the two arguments to
DestroyFrom into a single thing, and makes nsIFrame::Destroy not so easy
to call without a previous context.

This is a prerequisite to pass aDestroyContext to various things that
right now just mint one, which can cause badness, see bug 1851787 and
related bugs.

It's also a bit nicer to add things there if we need to in the future.

Differential Revision: https://phabricator.services.mozilla.com/D187578
2023-09-06 22:34:35 +00:00
Tiaan Louw 0ba40096d8 Bug 1847509 - Remove colors with static initializers r=emilio
This fixes a regression where the size of the binaries were increased.

Differential Revision: https://phabricator.services.mozilla.com/D185849
2023-08-10 05:57:17 +00:00
Tiaan Louw c348332df6 Bug 1846249 - Change color functions to constants r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D184929
2023-08-01 13:14:32 +00:00
Cristian Tuns bc7bd95212 Backed out changeset 9763c9244933 (bug 1846249) for causing build bustages in StyleColorInlines.h CLOSED TREE 2023-08-01 07:16:19 -04:00
Tiaan Louw 46ea0f49d0 Bug 1846249 - Change color functions to constants r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D184929
2023-08-01 10:35:38 +00:00
Iulian Moraru bd7ad5d94e Backed out changeset 2c6e9abd5c86 (bug 1846249) for causing build bustages on ServoStyleConsts.h. CLOSED TREE 2023-07-31 22:06:34 +03:00
Tiaan Louw de1966298f Bug 1846249 - Change color functions to constants r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D184929
2023-07-31 18:22:46 +00:00
Emilio Cobos Álvarez 07cbcafd82 Bug 1844832 - Share document-independent struct allocations. r=boris
In bug 1844755, a bunch of the time is spent allocating initial values.

There used to be more document-dependent initial values before
bug 1834487, but now that's only about default-font and direction.

This improves the situation by sharing initial structs that don't depend
on the document.

Differential Revision: https://phabricator.services.mozilla.com/D184256
2023-07-26 09:16:26 +00:00
Cristina Horotan 5c0a0ba1a1 Backed out changeset ade350a1d864 (bug 1818141) for causing multiple failures at RestyleManager.cpp 2023-05-18 01:49:46 +03:00
Emilio Cobos Álvarez c1330a0991 Bug 1818141 - Clean up a bit image updates. r=tnikkel
This shouldn't change behavior but reduces the amount of code paths
where we update the internal image state.

Depends on D170594

Differential Revision: https://phabricator.services.mozilla.com/D170595
2023-05-17 21:13:07 +00:00
Emilio Cobos Álvarez 02bed897c9 Bug 1831850 - Remove force_inline_alttext pref. r=karlt
It's not really web compatible nor turned on by default anywhere.

Differential Revision: https://phabricator.services.mozilla.com/D177373
2023-05-08 21:38:33 +00:00
Timothy Nikkel a3f478867e Bug 1827318. Restore hunk from bug 1820709 that accidentally got rebased away in bug 1817360. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D175086
2023-04-11 01:03:41 +00:00
Emilio Cobos Álvarez be5f3d7254 Bug 1817360 - Lazily load broken image icon. r=tnikkel
With the patches of bug 1815229, these errors appear:

browser/base/content/test/performance/browser_startup_images.js | Loaded image resource://gre-resources/loading-image.png should have been shown

It's a real issue, where we eagerly load the broken image icon and so on
even though we don't use them.

This fixes it by lazily-loading the icon once, only when needed.

Differential Revision: https://phabricator.services.mozilla.com/D170159
2023-03-24 14:56:34 +00:00
Emilio Cobos Álvarez 8dabbf6590 Bug 1823686 - Share URLExtraData between SVG attribute mapping and style attribute. r=smaug
I don't think there's ever a way these should differ.

Got some include hell from removing ReferrerInfo.h from Document.h but
hopefully should be straight-forward to review.

Depends on D173154

Differential Revision: https://phabricator.services.mozilla.com/D173155
2023-03-22 14:54:43 +00:00
Emilio Cobos Álvarez 4511290c2a Bug 1823764 - Use HasNonEmptyAttr to choose between XUL src and list-style-image. r=tnikkel,layout-reviewers
This preserves the previous behavior more exactly and fixes the display
of the icons, which have src="" but expect list-style-image to take
effect.

Depends on D173265

Differential Revision: https://phabricator.services.mozilla.com/D173266
2023-03-22 11:50:06 +00:00
Emilio Cobos Álvarez 3bbeaf0241 Bug 1684958 - Support rendering content: <gradient> images. r=dholbert,devtools-reviewers
We implemented support for list-style-image anyways.

Differential Revision: https://phabricator.services.mozilla.com/D172343
2023-03-14 12:11:34 +00:00
Emilio Cobos Álvarez 293d6ce17a Bug 1817219 - Remove ContentUrlOnImageContent telemetry. r=layout-reviewers,tnikkel
Bug 1484928 is fixed, we should've removed this then.

Differential Revision: https://phabricator.services.mozilla.com/D172106
2023-03-09 11:43:41 +00:00
Timothy Nikkel a48bd874ff Bug 1820709. Make nsImageFrame use nsDisplayListBuilder::GetImageDecodeFlags. r=emilio
This will mean we always pass FLAG_SYNC_DECODE_IF_FAST (unless we are already passing the sync decode flag). The fact that we weren't doing this already is an oversight, we want to do this for all images we paint on the normal painting path. However what makes this more important is that we folded nsImageBoxFrame into nsImageFrame recently (bug 1815229), and nsImageBoxFrame eagerly decodes all its images and keeps them decoded, and also uses FLAG_SYNC_DECODE_IF_FAST (because with multiple sized decodes eager decodes don't cover everything). So this should help us avoid regressing visually with xul images.

Differential Revision: https://phabricator.services.mozilla.com/D171828
2023-03-07 10:16:46 +00:00
Timothy Nikkel 4b057ee794 Bug 1820709. Make nsDisplayAltFeedback::CreateWebRenderCommands sync decode just like nsDisplayAltFeedback::Paint. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D171827
2023-03-07 10:16:02 +00:00
Emilio Cobos Álvarez 1782a23c1a Bug 1818432 - Provide intrinsic size from theme for xul images that are themed but don't have any images. r=tnikkel,layout-reviewers
This restores previous behavior of <xul:image>.

Differential Revision: https://phabricator.services.mozilla.com/D170743
2023-02-23 12:49:12 +00:00
Emilio Cobos Álvarez 1215d4d48d Bug 1818141 - Update image when going from non-null to null XUL image request. r=tnikkel
Otherwise we end up with a stale intrinsic size.

Differential Revision: https://phabricator.services.mozilla.com/D170594
2023-02-22 12:50:23 +00:00
Emilio Cobos Álvarez 2cc340aa0a Bug 1815229 - Remove nsImageBoxFrame. r=tnikkel,layout-reviewers
nsImageFrame has support for displaying style URIs / an owned image
request, so use it.

The main behavior difference is that we don't fire `load` / `error`
events for those images anymore, but I don't see any event listener for
those around, so I think they can go.

Differential Revision: https://phabricator.services.mozilla.com/D168958
2023-02-21 17:36:11 +00:00
Jonathan Kew e2c069db1f Bug 1815404 - Replace most uses of gfxContext::CreateOrNull with stack-allocated contexts. r=gfx-reviewers,lsalzman
Depends on D170370

Differential Revision: https://phabricator.services.mozilla.com/D170371
2023-02-21 07:28:25 +00:00
Jonathan Kew e998377ebb Bug 1815404 - Remove refcounting from gfxContext. r=gfx-reviewers,lsalzman
Depends on D170367

Differential Revision: https://phabricator.services.mozilla.com/D170369
2023-02-21 07:28:24 +00:00
Emilio Cobos Álvarez 1aa775c8d4 Bug 1817360 - Remove browser.display.show_loading_image_placeholder. r=tnikkel
This pref has been false since forever, completely untested, and I see
no references to it anywhere. I'm pretty sure having a loading image
placeholder wouldn't be web compatible, particularly in the current days
with all the lazy-loading shenanigans etc.

I propose just removing this code, and simplifying surrounding code for
clarity.

Differential Revision: https://phabricator.services.mozilla.com/D170158
2023-02-17 09:25:20 +00:00
Emilio Cobos Álvarez d20111ab0a Bug 1817360 - Clean-up image icon loading code. r=tnikkel
* Use static prefs.
 * Move IconLoad to the cpp file since it's only used in one translation
   unit.

This is in preparation to make the image loads lazy.

Differential Revision: https://phabricator.services.mozilla.com/D170157
2023-02-17 09:25:19 +00:00
Emilio Cobos Álvarez 7e52d51001 Bug 1815229 - Factor out owned request clean-up into its own method. r=tnikkel,layout-reviewers
We're about to use it a bit more.

Switch to CancelAndForgetObserver, since we will call it in the future from
other places that aren't frame destruction. This doesn't change behavior of the
existing caller because we call mListener->SetFrame(nullptr), which effectively
no-ops the listener

Differential Revision: https://phabricator.services.mozilla.com/D169985
2023-02-17 01:53:24 +00:00
Emilio Cobos Álvarez ed82ad57ad Bug 1815229 - Use member initializers a bit more in nsImageFrame. r=tnikkel,layout-reviewers
Depends on D169985

Differential Revision: https://phabricator.services.mozilla.com/D169986
2023-02-16 22:40:46 +00:00
Emilio Cobos Álvarez 4bf2bdc2da Bug 1815229 - Factor out a few PresContext() calls in nsImageFrame::Init. r=tnikkel,layout-reviewers
Depends on D169983

Differential Revision: https://phabricator.services.mozilla.com/D169984
2023-02-16 12:10:09 +00:00
Emilio Cobos Álvarez 8890df8558 Bug 1815229 - Implement nsImageFrame::GetImageFromStyle with a switch statement. r=tnikkel,layout-reviewers
We're about to add a new Kind, so this makes it a bit easier to follow
once that's done, IMO. Also prevents people from forgetting to update
that method in the future.

Depends on D169982

Differential Revision: https://phabricator.services.mozilla.com/D169983
2023-02-16 12:10:09 +00:00