Commit Graph
299 Commits
Author SHA1 Message Date
Valentin Gosu 524d0b5cd5 Bug 2036929 - Hold strong ref while calling nsIStreamListener methods r=necko-reviewers,geckoview-reviewers,extension-reviewers,media-playback-reviewers,firefox-style-system-reviewers,emilio,padenot,robwu,nalexander,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D302601
2026-05-30 20:41:08 +00:00
Daniel Holbert a70a6fc1d0 Bug 2038802: Use MakeRefPtr to do allocation for local RefPtr variables, in image/. r=tnikkel
(And remove one unnecessary null-check for 'progressproxy' which is
infallibly-allocated.)

Differential Revision: https://phabricator.services.mozilla.com/D299853
2026-05-12 19:54:00 +00:00
Daniel Holbert edd61684e6 Bug 2037700: Use MakeRefPtr and MakeAndAddRef instead of 'new' to allocate gfxDrawable instances. r=media-playback-reviewers,layout-reviewers,emilio,padenot
I'm using MakeRefPtr nearly everywhere, except when the old code was
immediately returning foo.forget() - in those spots, I'm using MakeAndAddRef
for brevity (since that function does the forget() internally).

Differential Revision: https://phabricator.services.mozilla.com/D299013
2026-05-11 19:15:07 +00:00
Timothy Nikkel 0912be77cf Bug 2024357. r=gfx-reviewers,bradwerth
Differential Revision: https://phabricator.services.mozilla.com/D288752
2026-03-20 07:47:20 +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
longsonr b4dfb889c7 Bug 2009173 Part 2 - Improve some SVGObserverUtils code r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D278515
2026-01-13 01:19:11 +00:00
longsonr c69cfb0f08 Bug 2005612 - More consistent naming and usage of GetSVGRootElement r=emilio,layout-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D276064
2025-12-11 20:08:41 +00:00
Lee Salzman 5caa1ec202 Bug 1996124 - Remove DrawTargetD2D. r=aosmond
DrawTargetD2D is only needed when Direct2D is enabled. We no longer support Direct2D.

Differential Revision: https://phabricator.services.mozilla.com/D269879
2025-10-27 02:57:54 +00:00
Tom Schuster bf5b1f91a7 Bug 1988124 - Add a FetchDecodedImage utility. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D264550
2025-10-06 09:38:02 +00:00
Tom Schuster 3dd127b2f5 Bug 1989967 - Warn when VectorImage::GetFrame fails due to a missing width/height. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D265629
2025-09-23 07:23:46 +00:00
Gabriel Astorgano 0159f31441 Bug 1977179 Remove [[check_unused]] annotations r=canaltinova
Differential Revision: https://phabricator.services.mozilla.com/D256374
2025-07-16 12:44:04 +00:00
Timothy Nikkel 0ffc419541 Bug 1975118. Use refptr in VectorImage::SizeOfSourceWithComputedFallback. r=gfx-reviewers,nical
Differential Revision: https://phabricator.services.mozilla.com/D255746
2025-07-02 09:46:23 +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 dda6b1197c Bug 1965114 part 1: Refactor out a static helper from VectorImage::GetWidth/GetHeight. r=tnikkel
This patch doesn't change behavior; it just refactors out some commont logic
into a helper (so that we can add another call to this same helper in a later
patch in this series).

Differential Revision: https://phabricator.services.mozilla.com/D248525
2025-05-09 03:37:29 +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
Daniel Holbert c1e56ab969 Bug 1965115: Reorder the imgIContainer portion of VectorImage.cpp to match declaration order in imgIContainer.idl. r=tnikkel
This patch doesn't change behavior; it's just reordering function definitions
to match the order in imgIContainer.idl.

Differential Revision: https://phabricator.services.mozilla.com/D248365
2025-05-08 05:52:52 +00:00
Daniel Holbert fa009b4fc1 Bug 1964813: Clamp VectorImage::GetWidth and GetHeight return value to be non-negative. r=layout-reviewers,tnikkel
An SVG image document might declare a negative value for `width` and/or
`height` on the root <svg> node, but we clamp that to be nonnegative for actual
layout purposes, and we should similarly clamp it in the imagelib size getters.
Otherwise we potentially expose bogus values via the web-exposed naturalWidth
and naturalHeight APIs.

Differential Revision: https://phabricator.services.mozilla.com/D248149
2025-05-08 05:52:48 +00:00
Daniel Holbert 8b4107e59f Bug 1929147: Make VectorImage::GetWidth/GetHeight gracefully fail (rather than crashing) if internal doc's root element is nullptr. r=tnikkel
Based on intermittent crashes in automation, it seems like during shutdown, two
things may happen independently:
(A) we gather a memory report that asks our SVG images for their width/height.
(B) we tear down the internal SVG document for our SVG images.

If they happen in that order (A before B), then everything's fine; but if B
happens *before* A, then the width/height queries in A will find an SVG
document with a null pointer for the root element. So we need to handle that
case gracefully.

Differential Revision: https://phabricator.services.mozilla.com/D231825
2024-12-12 08:38:32 +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
Timothy Nikkel 71cd20867b Bug 1805599. Fix handling of invalidations in non-animated vector images that use the webrender imageprovider path. r=aosmond
When not using blob recordings for vector images we use simple surface providers. When we get an invalidation we will call SurfaceCache::InvalidateImage which will set a dirty bit on all blob recordings and remove all other surfaces from the surface cache. And if it finds a blob recording we will call ResumeHonoringInvalidations. This is not enough to invalidate in the case of a non-animated vector image using the webrender GetImageProvider path. Even though the surface isn't in the surface cache anymore it is still cached on the frame and when we tell it about the invalidation it will just has the image provider to update its key. That will call this code

https://searchfox.org/mozilla-central/rev/cdddec7fd690700efa4d6b48532cf70155e0386b/image/DecodedSurfaceProvider.cpp#222

which will just share the same surface as before the invalidation happened again. That will let us handle one invalidation but it still won't fix the bug, we need to call ResumeHonoringInvalidations so that we handle further invalidations.

When not using the image provider path, we don't save an image provider on the frame, that alone would avoid this problem. But we also call ResumeHonoringInvalidations for every successful call of VectorImage::Draw.

* * *
imported patch asvfref

Differential Revision: https://phabricator.services.mozilla.com/D174450
2024-05-02 01:45:32 +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
Emilio Cobos Álvarez 9fb7a17630 Bug 1864425 - Remove PendingAnimationTracker. r=birtles
Instead of starting transitions and animations as a result of a paint,
use the refresh driver tick to do this.

This sets the transition-ready time to the current time during the next
refresh driver tick that it was started on (see mSawTickWhilePending).

This is similar to what's described in the bugs comments, and seems to
work nicely in practice.

We could easily change that (current time) by a paint-based time if
needed (when available), which would be more similar to what we were
doing. But I'd rather do the simple thing for now, and land this shortly
after the soft freeze is over so that we have time to watch out for
regressions.

There's one regression on a test that birtles wrote (using an XHR doc
and switching the timeline to a rendered doc's timeline).

We use the timeline's document rather than the target document to
determine whether to trigger animations now. That's one of the cases
where we'd keep vsync perma-running without this patch, and Chrome also
fails that test. Maybe the test should be removed / the spec should be
tweaked to allow this behavior?

This causes some progression in some CSS transitions tests too, and I
added an extra test for the vsync behavior.

Over-all this is much simpler to reason about and I think we should try
to do this.

Differential Revision: https://phabricator.services.mozilla.com/D193583
2023-11-20 09:31:41 +00:00
Sylvestre Ledru b0fe72dee5 Bug 1856795 - Remove redundant member init r=emilio
Done with:
./mach static-analysis check --checks="-*, readability-redundant-member-init" --fix .

https://clang.llvm.org/extra/clang-tidy/checks/readability/redundant-member-init.html

Differential Revision: https://phabricator.services.mozilla.com/D190002
2023-10-15 15:29:02 +00:00
Cristina Horotan 7388749830 Backed out 2 changesets (bug 1856795) for causing build bustage at BasicEvents.h CLOSED TREE
Backed out changeset 1d98b028923a (bug 1856795)
Backed out changeset eae2ac93e17c (bug 1856795)
2023-10-14 21:42:14 +03:00
Sylvestre Ledru 4a97019e39 Bug 1856795 - Remove redundant member init r=emilio
Done with:
./mach static-analysis check --checks="-*, readability-redundant-member-init" --fix .

https://clang.llvm.org/extra/clang-tidy/checks/readability/redundant-member-init.html

Differential Revision: https://phabricator.services.mozilla.com/D190002
2023-10-14 17:34:26 +00:00
Dan Robertson 7abaa6b373 Bug 1853991 - Refactor SVGSVGElement intrinsic size APIs to return LengthPercentage. r=dholbert
- Use LengthPercentage as the return type for GetIntrinsicHeight and
   GetIntrinsicWidth. This allows the caller to handle percent values.
   No callers have additional logic to handle percent values as of now,
   but this may change in the future, for compat; see last paragraph of
   bug 700533 comment 69.

 - Refactor intrinsic size function definitions.

Differential Revision: https://phabricator.services.mozilla.com/D176974
2023-09-26 20:28:06 +00:00
Timothy Nikkel a353b860cc Bug 1831457. Call MaybeRestrictSVGContext in VectorImage::GetImageProvider. r=aosmond
The main part of MaybeRestrictSVGContext blocks context paint where is it not allowed. The css style that enables it is already restricted to chrome, see https://searchfox.org/mozilla-central/source/servo/components/style/properties/longhands/inherited_svg.mako.rs#208 so this isn't a big deal.

We've had a test that context paint isn't enabled in content for a long time

https://searchfox.org/mozilla-central/rev/85b4f7363292b272eb9b606e00de2c37a6be73f0/layout/reftests/svg/as-image/reftest.list#59

So this never regressed. So this just makes it consistent and blocks it further and executes the preserve aspect ratio code.

Differential Revision: https://phabricator.services.mozilla.com/D177216
2023-07-06 11:59:34 +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
Nicolas Silva c923b8ebfb Bug 1814878 - Use the rasterSize to decide whether to fall back. r=jrmuizel,tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D168808
2023-02-04 01:28:42 +00:00
Timothy Nikkel e869dce9f2 Bug 1814878. Use fallback rendering if rasterizing a vector image will use too big of a surface. r=gfx-reviewers,jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D168784
2023-02-03 13:46:58 +00:00
Andrew Osmond f8f1c8a774 Bug 1794722 - Part 2. Remove all uses of gfxVars::UseWebRender(). r=jrmuizel,media-playback-reviewers,alwu
This is always true.

Differential Revision: https://phabricator.services.mozilla.com/D160121
2022-10-28 12:36:06 +00:00
Cristian Tuns 7e753f9368 Backed out 3 changesets (bug 1794722) for causing multiple failures on RemoteProcessMonitor CLOSED TREE
Backed out changeset 0217af5b1aa6 (bug 1794722)
Backed out changeset d7805be9dfb3 (bug 1794722)
Backed out changeset 0093f071f1a5 (bug 1794722)
2022-10-27 20:52:36 -04:00
Andrew Osmond e2f7d11017 Bug 1794722 - Part 2. Remove all uses of gfxVars::UseWebRender(). r=jrmuizel,media-playback-reviewers,alwu
This is always true.

Differential Revision: https://phabricator.services.mozilla.com/D160121
2022-10-28 00:08:03 +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
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
Jeff Muizelaar 1438a94066 Bug 1755975 - Pass rect or path directly to Clip() instead of manually creating a path. r=gfx-reviewers,mstange
Differential Revision: https://phabricator.services.mozilla.com/D139038
2022-02-24 14:42:35 +00:00
Norisz Fay f59a7e5b2e Backed out changeset f06972b41abe (bug 1755975) for causing multiple reftest failures CLOSED TREE 2022-02-18 04:04:47 +02:00
Jeff Muizelaar 04e00617b6 Bug 1755975 - Pass rect or path directly to Clip() instead of manually creating a path. r=gfx-reviewers,mstange
Differential Revision: https://phabricator.services.mozilla.com/D139038
2022-02-17 20:24:38 +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 1c4b268f39 Bug 1704876 - Fix a shutdown crash when we race to update an animated vector image. r=tnikkel
If we are shutting down, the document for a VectorImage may be cleared.
If a refresh tick raced with the shutdown, we might try to deref the
null document.

Differential Revision: https://phabricator.services.mozilla.com/D132953
2021-12-07 03:10:10 +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 bf53e3de8c Bug 1711061 - Part 11. Implement VectorImage::GetImageProvider. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D126604
2021-11-27 11:47:40 +00:00