Commit Graph
366 Commits
Author SHA1 Message Date
Emilio Cobos Álvarez fb61e154ec Bug 2034897 - Fix aspect-ratio handling in ComputeSizeWithIntrinsicDimensions. r=boris,firefox-style-system-reviewers,layout-reviewers,firefox-svg-reviewers,longsonr
Prefer aspect-ratio to the tentative BSize if we have both tentative
ISize and BSize.

Also make auto aspect-ratio handling a bit more explicit.

To prevent some regressions, we need to:

 * Fix size-containment aspect ratio for <embed> (nsSubDocumentFrame).
 * Fix RasterImage::GetIntrinsicRatio with uneven ratios.
 * Avoid SVG root from using the aspect ratio from the viewbox, see
   bug 2035918.

Differential Revision: https://phabricator.services.mozilla.com/D296982
2026-04-29 22:03:12 +00:00
Timothy Nikkel 22f8201f8b Bug 2029472. r=gfx-reviewers,lsalzman
Differential Revision: https://phabricator.services.mozilla.com/D293412
2026-04-11 03:46:02 +00:00
Sylvestre Ledru 8f90026828 Bug 2023419 - Remove Emacs/Vim modelines from image/ r=emilio
replaced by .editorconfig
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D287848
2026-03-17 07:58:04 +00:00
Timothy Nikkel 1a247e9586 Bug 2014329. Make animated avif related prefs only mirrored on startup. r=gfx-reviewers,lsalzman
These prefs were made toggle-able dynamically so that we could test the feature in CI before the feature was enabled by default, but now that the feature has been enabled for a long time we are not likely to disable these prefs in the codebase so that is no longer important. We have a lot of code to handle these prefs being dynamic and it results in bugs where not all callers are passing these flags meaning animated avif images can get disabled in those call sites.

Differential Revision: https://phabricator.services.mozilla.com/D281712
2026-02-04 10:18:11 +00:00
Cristian Tuns 108e548d76 Revert "Bug 2014329. Make animated avif related prefs only mirrored on startup. r=gfx-reviewers,lsalzman" for causing build bustages in Common.cpp
This reverts commit 092d6f8d19.
2026-02-04 09:22:44 +00:00
Timothy Nikkel 092d6f8d19 Bug 2014329. Make animated avif related prefs only mirrored on startup. r=gfx-reviewers,lsalzman
These prefs were made toggle-able dynamically so that we could test the feature in CI before the feature was enabled by default, but now that the feature has been enabled for a long time we are not likely to disable these prefs in the codebase so that is no longer important. We have a lot of code to handle these prefs being dynamic and it results in bugs where not all callers are passing these flags meaning animated avif images can get disabled in those call sites.

Differential Revision: https://phabricator.services.mozilla.com/D281712
2026-02-04 04:58:48 +00:00
serge-sans-paille 5507f1c19a Bug 1995522 - Cleanup remaining unused mfbt includes r=emilio,necko-reviewers,media-playback-reviewers,webrtc-reviewers,profiler-reviewers,toolkit-telemetry-reviewers,firefox-style-system-reviewers,layout-reviewers,dom-worker-reviewers,emz,mstange,TYLin,alwu,pehrsons,dom-storage-reviewers,valentin,jari,jwatt,hsingh,edenchuang,janv
Those are the remaining parts required before we land the new mhbt
header inclusion linter

Differential Revision: https://phabricator.services.mozilla.com/D270812
2025-11-16 10:27:57 +00:00
Cristina Horotan 17287b2ae8 Revert "Bug 1995522 - Cleanup remaining unused mfbt includes r=emilio,necko-reviewers,media-playback-reviewers,webrtc-reviewers,profiler-reviewers,toolkit-telemetry-reviewers,firefox-style-system-reviewers,layout-reviewers,dom-worker-reviewers,emz,mstange,TYLin,alwu,pehrsons,dom-storage-reviewers,valentin,jari,jwatt,hsingh,edenchuang,janv" for causing conflict on reverting Bug 1998267
This reverts commit d0eaaff18d.
2025-11-15 17:02:19 +00:00
serge-sans-paille d0eaaff18d Bug 1995522 - Cleanup remaining unused mfbt includes r=emilio,necko-reviewers,media-playback-reviewers,webrtc-reviewers,profiler-reviewers,toolkit-telemetry-reviewers,firefox-style-system-reviewers,layout-reviewers,dom-worker-reviewers,emz,mstange,TYLin,alwu,pehrsons,dom-storage-reviewers,valentin,jari,jwatt,hsingh,edenchuang,janv
Those are the remaining parts required before we land the new mhbt
header inclusion linter

Differential Revision: https://phabricator.services.mozilla.com/D270812
2025-11-14 12:08:52 +00:00
serge-sans-paille 4c193a8594 Bug 1996600 - Remove unused mfbt inclusion in image/** r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D270200
2025-10-27 15:31:02 +00:00
serge-sans-paille 2680f1aa2a Bug 1995938 - Remove unused inclusion of DebugOnly.h r=emilio,necko-reviewers,application-update-reviewers,media-playback-reviewers,profiler-reviewers,win-reviewers,toolkit-telemetry-reviewers,firefox-svg-reviewers,layout-reviewers,dom-worker-reviewers,bytesized,gstoll,mstange,TYLin,chunmin,jesup,asuth
Differential Revision: https://phabricator.services.mozilla.com/D269780
2025-10-27 10:48:42 +00:00
Cristian Tuns 6f66cdf3c7 Revert "Bug 1995938 - Remove unused inclusion of DebugOnly.h r=emilio,necko-reviewers,application-update-reviewers,media-playback-reviewers,profiler-reviewers,win-reviewers,toolkit-telemetry-reviewers,firefox-svg-reviewers,layout-reviewers,dom-worker-reviewers,bytesized,gstoll,mstange,TYLin,chunmin,jesup,asuth" for causing build bustages in TargetFunction.h
This reverts commit 10e5184168.
2025-10-27 08:58:03 +00:00
serge-sans-paille 10e5184168 Bug 1995938 - Remove unused inclusion of DebugOnly.h r=emilio,necko-reviewers,application-update-reviewers,media-playback-reviewers,profiler-reviewers,win-reviewers,toolkit-telemetry-reviewers,firefox-svg-reviewers,layout-reviewers,dom-worker-reviewers,bytesized,gstoll,mstange,TYLin,chunmin,jesup,asuth
Differential Revision: https://phabricator.services.mozilla.com/D269780
2025-10-27 08:00:43 +00:00
Timothy Nikkel f0f9dd8b09 Bug 1990391. If a metadata decode fails to decode a size we should send out a FRAME_UPDATE notification so consumers get some sort of notification of the failure. r=gfx-reviewers,nical
If a consumer has an imgIContainer it's possible that they could call RequestDecodeWithResult before a metadata decode has completed, so it returns DECODE_REQUESTED, but then the metadata decode fails and we'll call RasterImage::DoError

https://searchfox.org/firefox-main/rev/ad97131360471d36dfd9cf85695dde35914843bc/image/RasterImage.cpp#1549

and we'll call NotifyProgress(NoProgress, dirtyRect) where dirtyRect is mSize, and mSize is empty, so that will send no notifications out (the rect being non-empty is the condition to send a FRAME_UPDATE notification). So the consumer will get no notification and it will still be waiting for the decode it was told was requested.

Differential Revision: https://phabricator.services.mozilla.com/D265919
2025-10-04 00:42:27 +00:00
Daniel Holbert a1b0d56c0a Bug 1965114 part 2: Add a new imgIContainer.intrinsicSize attr as a shorthand for getting width & height. r=tnikkel
This is mostly just a convenience shorthand to avoid running the same
boilerplate/error-checking code in the implementation of the 'width' and
'height' attributes, for the benefit of callers that need both sizes.  But,
beyond that convenience: this also lets us elegantly express the case where an
image simply lacks an intrinsic width and/or height (not due to any error, but
simply because it's e.g. an SVG that has no preferred size in either or both of
its axes).  This is a state we'll need to be able to detect and give special
treatment to in a forthcoming patch for bug 1935269.

Differential Revision: https://phabricator.services.mozilla.com/D248526
2025-05-09 03:37:32 +00:00
Daniel Holbert 47b8f999ed Bug 1965282: Rename imgIContainer::intrinsicSize to intrinsicSizeInAppUnits. r=tnikkel
This patch doesn't change behavior; it's just a rename.

Without this, it's easy to get confused and assume that img.intrinsicSize would
just be a shorthand for img.width and img.height -- but it's not. (It has
different units from the 'width' and 'height' attributes, and in some cases --
e.g. the VectorImage implementation -- it queries for its answer in a different
way from how 'width' and 'height' do.

(I'm doing this partly because I'll soon be adding a new attribute that *does*
just represent img.width and img.height, and that new attribute will also be
named something like "intrinsicSize"; and I want to minimize confusion between
that new attribute and this existing one.)

Differential Revision: https://phabricator.services.mozilla.com/D248492
2025-05-09 03:37:25 +00:00
Florian Quèze 9885783942 Bug 1956726 - remove leftover Telemetry.h includes in .cpp files, r=chutten,geckoview-reviewers,cookie-reviewers,win-reviewers,dom-storage-reviewers,gstoll,valentin,m_kato,janv.
Differential Revision: https://phabricator.services.mozilla.com/D244351
2025-04-08 13:03:02 +00:00
Florian Quèze d568f60b00 Bug 1935420 - Migrate histograms to use Glean APIs for IMAGE_DECODE_*, r=chutten.
Differential Revision: https://phabricator.services.mozilla.com/D234112
2025-01-29 15:58:50 +00:00
serge-sans-paille 75a4a1ac26 Bug 1929268 - Use std::clamp instead of min/max chain in image/ r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D227979
2024-11-07 09:36:03 +00:00
Emilio Cobos Álvarez d601856426 Bug 1922208 - Don't use Maybe<> to represent no ratio in images. r=dholbert
AspectRatio already has a way of representing a null / invalid ratio,
and there are some cases (broken sizes or invalid SVGOuterSVGFrame
ratio) where we might get Some(AspectRatio()).

It's not a meaningfully different state, and IMO we shouldn't treat it
differently.

Differential Revision: https://phabricator.services.mozilla.com/D224212
2024-10-04 07:59:28 +00:00
Stanca Serban 242553ef4b Backed out changeset 450c9dfc8858 (bug 1922208) for causing multiple failures. 2024-10-02 15:55:26 +03:00
Emilio Cobos Álvarez db36a00c3e Bug 1922208 - Don't use Maybe<> to represent no ratio in images. r=dholbert
AspectRatio already has a way of representing a null / invalid ratio,
and there are some cases (broken sizes or invalid SVGOuterSVGFrame
ratio) where we might get Some(AspectRatio()).

It's not a meaningfully different state, and IMO we shouldn't treat it
differently.

Differential Revision: https://phabricator.services.mozilla.com/D224212
2024-10-02 10:33:14 +00:00
Emilio Cobos Álvarez 77c40caac6 Bug 1910698 - Remove nsIScriptError.sourceLine. r=smaug,devtools-reviewers,webdriver-reviewers,necko-reviewers,nchevobbe,kershaw,jdescottes,credential-management-reviewers,dimi
Afaict the source lines are not exposed anywhere in the UI.

Differential Revision: https://phabricator.services.mozilla.com/D218115
2024-08-01 17:12:48 +00:00
Andrew Osmond f3cf5f1208 Bug 1901076 - Part 1. Include animated images loop count in metadata decoding results. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D212830
2024-06-24 22:44:30 +00:00
Sandor Molnar 2df6cff646 Backed out 2 changesets (bug 1901076) for causing assertion failures @ image/RasterImage.cpp CLOSED TREE
Backed out changeset de52938146cd (bug 1901076)
Backed out changeset 79fece25d231 (bug 1901076)
2024-06-24 23:19:52 +03:00
Andrew Osmond 27c6b2cdad Bug 1901076 - Part 1. Include animated images loop count in metadata decoding results. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D212830
2024-06-24 17:59:48 +00:00
Lee Salzman 7fb7eb174e Bug 1890216 - Fix Skia API usage in Gecko for m125 update. r=aosmond
A number of public APIs in Skia have changed since the update to m125,
so various places in Gecko need to be updated to track it.

Differential Revision: https://phabricator.services.mozilla.com/D209821
2024-05-15 01:57:52 +00:00
Iulian Moraru 828f580807 Backed out 4 changesets (bug 1890216) for causing multiple new permafailures. CLOSED TREE
Backed out changeset 31ffc16da37b (bug 1890216)
Backed out changeset 9da95cf34386 (bug 1890216)
Backed out changeset 9e684b8096fc (bug 1890216)
Backed out changeset 9014c3f367eb (bug 1890216)
2024-05-10 19:01:50 +03:00
Lee Salzman eab4d212ce Bug 1890216 - Fix Skia API usage in Gecko for m125 update. r=aosmond
A number of public APIs in Skia have changed since the update to m125,
so various places in Gecko need to be updated to track it.

Differential Revision: https://phabricator.services.mozilla.com/D209821
2024-05-10 03:49:34 +00:00
Timothy Nikkel 6cf9261d16 Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman
This code was added before we decided to do fission, when we wanted to separate out different sites that were in the same process so we could prioritize them better. We are not going down that path so we can simplify this code. There should be no change in functionality with this patch, just simpler code.

Differential Revision: https://phabricator.services.mozilla.com/D201705
2024-02-25 04:54:33 +00:00
Andi-Bogdan Postelnicu 18e90b4312 Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173256
2023-03-27 07:20:25 +00:00
Sandor Molnar a21465caf7 Backed out 2 changesets (bug 1276351) for causing build bustage in image/ClippedImage.cp CLOSED TREE
Backed out changeset e84598eb82c1 (bug 1276351)
Backed out changeset e940b0554484 (bug 1276351)
2023-03-25 14:16:43 +02:00
Andi-Bogdan Postelnicu a53c65154f Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173256
2023-03-25 06:58:52 +00:00
Iulian Moraru 55a9a03f95 Backed out 2 changesets (bug 1276351) for causing multiple failures.
Backed out changeset eeaf4f1e06af (bug 1276351)
Backed out changeset d44cb5704342 (bug 1276351)
2023-03-25 00:08:24 +02:00
Andi-Bogdan Postelnicu 75ea04501c Bug 1276351 - Move away from mozilla::tuple to std::tuple. r=necko-reviewers,sergesanspaille
Differential Revision: https://phabricator.services.mozilla.com/D173256
2023-03-24 18:55:39 +00:00
zaggy1024 7cc4b592b1 Bug 1813466 - Store AVIF prefs as default decoder flags in RasterImage. r=tnikkel
This prevents a crash that would occur if a redecode of an animated AVIF happened after changing the `sequences.enabled` pref from `true` to `false`.

Differential Revision: https://phabricator.services.mozilla.com/D170190
2023-03-17 00:50:07 +00:00
Botond Ballo bcf265578a Bug 1802225 - Remove Layers.{h,cpp}. r=tnikkel,geckoview-reviewers,jgilbert,media-playback-reviewers,padenot,m_kato
Where appropriate, `#include "Layers.h"` is replaced with
more specific inclusions.

Differential Revision: https://phabricator.services.mozilla.com/D162934
2022-11-29 01:52:03 +00:00
Razvan Cojocaru 363946e17f Bug 1060421 - Change the type of [Int]PointTyped::[x|y] back to [Int]CoordTyped. r=botond
[Int]CoordTyped no longer inherits Units because otherwise
instances of [Int]IntPointTyped may get one Base subobject because
it inherits Units, and others because of BasePoint's Coord members,
which end up increasing the [Int]CoordTyped's objects size (since
according to the ISO C++ standard, different Base subobject are
required to have different addresses).

Differential Revision: https://phabricator.services.mozilla.com/D160713
2022-11-04 18:29:35 +00:00
Emilio Cobos Álvarez 893e093b01 Bug 1779598 - Stop passing around Maybe<SVGImageContext>. r=aosmond
All its members are optional, so we can just use it as a plain struct
rather than Maybe<> all around, which simplifies the code and prevents
silly bugs like bug 1779592.

Mostly automatic via:

  rg -l 'SVGImageContext' . | xargs sed -i 's/Maybe<SVGImageContext>/SVGImageContext/g'

With trivial build fixes.

Not intended to change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D151846
2022-07-14 16:03:25 +00:00
Nika Layzell 583cee7bac Bug 1778211 - Reject xpidl CDATA containing 'virtual', r=xpcom-reviewers,necko-reviewers,mccr8,dragana
We'll probably want to do something more accurate in the future with a
custom clang static analysis pass which validates that XPIDL interfaces
have the expected vtable and struct layout, however doing so would be
more involved than the string matching done in this patch.

In addition to checking for extra virtual methods, we'll likely also
want to check for data members on interfaces, and reject them unless the
class is marked as `[builtinclass]` in addition to some other attribute
which we'll need to add to prevent them from being implemented in Rust
(as c++ data members will not be reflected by the rust macro).

There were 2 instances of a comment which contained the word 'virtual'
within a CDATA block. These comments were moved out of the CDATA block
to avoid triggering the error.

Differential Revision: https://phabricator.services.mozilla.com/D151068
2022-07-06 14:53:06 +00:00
Razvan Cojocaru 0626e71398 Bug 1775209 - Change local variables of type gfx::Size, which actually represent scales, to MatrixScales. r=botond
Differential Revision: https://phabricator.services.mozilla.com/D149866
2022-06-24 19:00:38 +00:00
Andrew Osmond eea94469bc Bug 1775495 - Avoid trigger extra async image decodes when sync decodes are requested. r=jrmuizel
When we request a sync decode, if there is an outstanding pending
async decode, but we don't have all the network data, we would end up
triggering an extra async decode. This patch ensures that we only
trigger sync decodes if they will actually execute as sync.

Differential Revision: https://phabricator.services.mozilla.com/D150008
2022-06-22 17:31:28 +00:00
Timothy Nikkel 9d40b6409b Bug 1769939. Avoid a couple of unnecessary image decodes at intrinsic size in some cases. r=aosmond
Differential Revision: https://phabricator.services.mozilla.com/D146687
2022-05-21 06:44:19 +00:00
Timothy Nikkel 7e41f7a742 Bug 1769195. Don't bother to try to do a partial draw of a background image if we haven't decoded any pixels. r=aosmond
The draw will be pointless, and it regresses one perf metric.

Differential Revision: https://phabricator.services.mozilla.com/D146685
2022-05-20 09:02:32 +00:00
Emilio Cobos Álvarez 1bc7a14aa1 Bug 1753453 - Don't send OnUnlockedDraw for non-animated images. r=aosmond
We're checking animation consumers, not locked status. We don't care
about animation consumer count of non-animated images.

Depends on D137765

Differential Revision: https://phabricator.services.mozilla.com/D137766
2022-02-03 17:31:42 +00:00
Andrew Osmond 8113ec1a93 Bug 1743761 - Ensure we invalidate substituted images when the preferred size is ready. r=tnikkel
Previously with ImageContainers, we would put the new preferred surface
into the ImageContainer. When we check if we should invalidate, it would
have a different image key, and hence invalidate the image frame and
schedule a paint.

With ImageProviders, it returns the same key in this case, because the
ImageProvider represents a particular surface. As such, we need to
actually track when we get a substituted ImageProvider, and invalidate
the image frame more aggressively to ensure we get the preferred size.

Differential Revision: https://phabricator.services.mozilla.com/D132583
2021-12-03 03:14:01 +00:00
Andrew Osmond e4154e740e Bug 1711061 - Part 13. Remove the now unused ImageContainer and related code for images. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D126606
2021-11-27 11:47:40 +00:00
Andrew Osmond b0c144788a Bug 1711061 - Part 6. Implement RasterImage::GetImageProvider. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D126599
2021-11-27 11:47:38 +00:00
Andrew Osmond 55d1fbc31b Bug 1711061 - Part 5. Expose an ImageProviderId for tracking surface ownership. r=tnikkel
This will be used by layers as a replacement for ImageContainer's
ContainerProducerID for tracking if the same imgIRequest/imgIContainer
own the cached WebRenderImageProvider.

Differential Revision: https://phabricator.services.mozilla.com/D126598
2021-11-27 11:47:37 +00:00
Andrew Osmond 7b059fa972 Bug 1711061 - Part 2. Add imgIContainer::GetImageProvider skeleton. r=tnikkel
In later parts in this series, GetImageProvider will replace
GetImageContainerAtSize. This will be a more specialized and lower
overhead means to get a wr::ImageKey for a particular surface.

Differential Revision: https://phabricator.services.mozilla.com/D126596
2021-11-27 11:47:36 +00:00