Commit Graph

914 Commits

Author SHA1 Message Date
Timothy Nikkel
7994dd5c2d Bug 1634839. Call UpdateState on the animation state in RasterImage::NotifyProgress. r=aosmond
Since AnimationState::UpdateState now depends on a specific frame of the animation being in the surface cache we need to call UpdateState whenever we add a new frame.

Depends on D73583

Differential Revision: https://phabricator.services.mozilla.com/D73584
2020-05-04 18:49:13 +00:00
Timothy Nikkel
2534a47d4f Bug 1634839. Fix img.decode for animated images that aren't in the document. r=aosmond
The img.decode promise for animated images that aren't in the document might not resolve in common cases. Specifically for animated images that have been decoded and then discarded, so that mCompositedFrameInvalid is true.

mCompositedFrameInvalid is cleared by either:
  1) the image is fully decoded and NotifyDecodeComplete is called.
  2) RequestRefresh is able to advance to the current frame.

We don't call RequestRefresh on animated images that aren't in the document and we only decode a certain number of frames ahead of the current frame (even for fully retained animation buffers), so neither of these will happen with long enough animated images.

So we need to make sure that mCompositedFrameInvalid eventually gets cleared any time a decode is requested (which the FrameAnimator gets notified about via GetCompositedFrame). We do that be calling UpdateState in GetCompositedFrame whenever mCompositedFrameInvalid is true and the image is in the surface cache.

This runs into a second problem: UpdateState uses |mIsCurrentlyDecoded = aResult.Surface().IsFullyDecoded()| to determine when to clear mCompositedFrameInvalid. As mentioned above, we don't fully decode animated images. Further, for animated images that are large enough we use a discarding animation buffer that never keeps around all the frames and so IsFullyDecoded always returns false. So we replace that with a check that we can seek to the current animated frame index.

Differential Revision: https://phabricator.services.mozilla.com/D73564
2020-05-04 18:43:32 +00:00
Ian Moody
011b59d595 Bug 1536556 - Replace raw thrown Cr.ERRORs with Components.Exception. r=mossop,remote-protocol-reviewers,marionette-reviewers,whimboo,necko-reviewers,geckoview-reviewers,valentin,agi
Raw Cr.ERROR don't get stack information, same as throwing JS literals instead
of `new Error()`s.

This was done automatically with a new eslint rule that will be introduced in
the next commit.  One instance of a raw Cr.ERROR was not replaced since it is
used in a test that specifically checks the preservation of raw Cr values in
XPCJS.  The rule will be disabled for that instance.

Differential Revision: https://phabricator.services.mozilla.com/D28073
2020-05-05 17:41:36 +00:00
Andrew Osmond
02334060e0 Bug 1631615 - Don't color manage PNG/JPG/WebP if not tagged. r=tnikkel
It appears some websites assume we will not color manage untagged images
and encode metadata in the image's surface data. Chrome matches this
behaviour. We should probably do the same for webcompat.

Differential Revision: https://phabricator.services.mozilla.com/D73737
2020-05-04 21:51:25 +00:00
Mihai Alexandru Michis
5d7a5b9d83 Bug 1630125 - Update fuzziness for rgb24prof2.bmp r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D73547
2020-05-02 20:33:21 +00:00
Jon Bauman
2db43533f3 Bug 1625363 - AVIF (AV1 Image File Format): experimental support. r=aosmond,necko-reviewers,valentin
There are many limitations currently, but this prototype should successfully
render most basic AVIF images. Known limitations:

- No support for any derived image items (crop, rotate, etc.)
- No support for alpha planes
- No support for ICC profiles (bug 1634741)
- The primary image item must be an av01 (no grid support)
- HDR images aren't tone-mapped

Differential Revision: https://phabricator.services.mozilla.com/D68498
2020-05-01 22:56:04 +00:00
Razvan Maries
668381a470 Backed out changeset 8cb47e0e268d (bug 1625363) for causing gtest failures at ImageDecoders.AVIFSingleChunk. CLOSED TREE 2020-04-30 08:26:53 +03:00
Jon Bauman
601b2f5365 Bug 1625363 - AVIF (AV1 Image File Format): experimental support. r=aosmond,necko-reviewers,valentin
There are many limitations currently, but this prototype should successfully
render most basic AVIF images. Known limitations:

- No support for any derived image items (crop, rotate, etc.)
- No support for alpha planes
- The primary image item must be an av01 (no grid support)
- HDR images aren't tone-mapped

Differential Revision: https://phabricator.services.mozilla.com/D68498
2020-04-30 01:31:17 +00:00
Bogdan Tara
606f9e2e6c Backed out changeset 9804951497f9 (bug 1625363) for bustages complaining about nsAVIFDecoder.cpp CLOSED TREE 2020-04-29 19:46:12 +03:00
Jon Bauman
1c60246bba Bug 1625363 - AVIF (AV1 Image File Format): experimental support. r=aosmond,necko-reviewers,valentin
There are many limitations currently, but this prototype should successfully
render most basic AVIF images. Known limitations:

- No support for any derived image items (crop, rotate, etc.)
- No support for alpha planes
- The primary image item must be an av01 (no grid support)
- HDR images aren't tone-mapped

Differential Revision: https://phabricator.services.mozilla.com/D68498
2020-04-29 16:30:54 +00:00
Timothy Nikkel
0eb02fa8dd Bug 1633121. Add crashtest for bug 1262549 and bug 1277397.
Differential Revision: https://phabricator.services.mozilla.com/D72524
2020-04-25 09:10:25 +00:00
Narcis Beleuzu
b1072dc7ad Bug 1619847 - update reftest annotation for pal8v4.bmp for 899 pixel difference. r=jmaher
Differential Revision: https://phabricator.services.mozilla.com/D71733
2020-04-21 10:16:49 +00:00
Timothy Nikkel
3d235e9172 Bug 1631365. img.decode never fulfills or rejects if the image is too big to fit into the surface cache. r=aosmond
Since we don't support downscaling animated images we'll need something like this even we were to try to request a smaller sized decode.

Differential Revision: https://phabricator.services.mozilla.com/D71523
2020-04-20 21:04:45 +00:00
Andreea Pavel
86d843e1cc Bug 1619847 - update reftest annotation for pal8v4.bmp r=jmaher
Differential Revision: https://phabricator.services.mozilla.com/D71550
2020-04-20 13:59:59 +00:00
Timothy Nikkel
6fe6b37c32 Bug 1629490. Add a crashtest and a mochitest. r=aosmond
The mochitest caught the issue of the second patch here so there is value in both it seems.

Differential Revision: https://phabricator.services.mozilla.com/D71484
2020-04-20 03:38:57 +00:00
Daniel Varga
0d3538392f Backed out 3 changesets (bug 1629490) fo causing reftest failures at layout/reftests/image/img-invalidation-local-transform-1.html
Backed out changeset de2ced51599d (bug 1629490)
Backed out changeset f997fe14a6a5 (bug 1629490)
Backed out changeset ba69034f5207 (bug 1629490)
2020-04-20 06:03:35 +03:00
Timothy Nikkel
d265f352ce Bug 1629490. Add a crashtest and a mochitest. r=aosmond
The mochitest caught the issue of the second patch here so there is value in both it seems.

Differential Revision: https://phabricator.services.mozilla.com/D71484
2020-04-19 23:02:34 +00:00
Timothy Nikkel
5ac7021bc5 Bug 1630964. Increase fuzz a small amount of newly added test. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D71414
2020-04-17 23:47:59 +00:00
Cameron McCormack
e91f99f8e1 Bug 1616411 - Part 7: Tests. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D70277
2020-04-17 02:57:49 +00:00
Csoregi Natalia
ea673441ce Backed out 8 changesets (bug 1616411) for webgl failures on test_2_conformance__textures__misc__texture-upload-size.html. CLOSED TREE
Backed out changeset 03dd88d53439 (bug 1616411)
Backed out changeset cfee2ce9405d (bug 1616411)
Backed out changeset 0a323c33506f (bug 1616411)
Backed out changeset 1a25353a07b0 (bug 1616411)
Backed out changeset dc64af52b5f8 (bug 1616411)
Backed out changeset 0f54b1b12105 (bug 1616411)
Backed out changeset 4dee3e753e8e (bug 1616411)
Backed out changeset 034a30a6b088 (bug 1616411)
2020-04-16 05:43:16 +03:00
Cameron McCormack
1c996b2686 Bug 1616411 - Part 7: Tests. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D70277

--HG--
extra : moz-landing-system : lando
2020-04-16 00:34:46 +00:00
Emilio Cobos Álvarez
6fa211e927 Bug 1627585 - Add a test for animated CSS images. r=tnikkel
This tests this bug and the "canvas propagated to background" one.

Differential Revision: https://phabricator.services.mozilla.com/D70651

--HG--
extra : moz-landing-system : lando
2020-04-14 12:36:04 +00:00
Andrew Osmond
c4a761420a Bug 1620522 - Increase fuzz on BMP color managed reftest.
Differential Revision: https://phabricator.services.mozilla.com/D70677

--HG--
extra : moz-landing-system : lando
2020-04-13 12:25:10 +00:00
Andrew Osmond
da72652618 Bug 1620600 - Add flags to allow image decoders to produce sRGB output. r=tnikkel
Currently we can only use the gfx.color_management.force_srgb pref to
force all images to sRGB, or just accept device space. It would be nice
to be able to test device space in our tests, as well as sRGB. This
patch adds a surface flag which allows us to selectively output sRGB.

This will also be useful for clipboard and re-encoding purposes, since
they want a neutral output. In an ideal world we would just output the
color profile and the pixel data in the original color space, but for
now this is a relatively simple approach that works on all platforms and
interops well with all applications.

Differential Revision: https://phabricator.services.mozilla.com/D65734

--HG--
extra : moz-landing-system : lando
2020-04-10 16:26:33 +00:00
Timothy Nikkel
c3b100108c Bug 1470350. Enable delaytest.html tests again. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D70105

--HG--
extra : moz-landing-system : lando
2020-04-09 08:36:40 +00:00
Timothy Nikkel
0d0ddcd3e5 Bug 1470350. Wait for MozReftestInvalidate event in delaytest.html and then wait for the animated image to complete. r=emilio
Just waiting for the load event of the image doesn't even mean the image has been painted at all yet, but by the time MozReftestInvalidate fires the first frame should be guaranteed to have been painted.

Also, switch to using new img.decode api. img.decode will decode an animated version of the img, whereas drawing to a canvas will kick off a first frame only decode which the page can't use.

Differential Revision: https://phabricator.services.mozilla.com/D70104

--HG--
extra : moz-landing-system : lando
2020-04-09 08:36:33 +00:00
Timothy Nikkel
6ed7c3056e Bug 1470350. Fix delaytest.html tests to compare to an html document instead of just an image. r=emilio
Loading just the image results in "theatre mode" display of the image (centered, dark background). But the test needs to be in an html document. We either changed how top level images were displayed or stopped using a style sheet in reftests that displayed images like this since the tests were last enabled.

Differential Revision: https://phabricator.services.mozilla.com/D70103

--HG--
extra : moz-landing-system : lando
2020-04-09 08:36:20 +00:00
Stefan Hindli
e2003e251b Backed out 3 changesets (bug 1470350) for reftest failures in image/test/crashtests/delaytest.html?523528-1.gif CLOSED TREE
Backed out changeset 78dfbdcb7eea (bug 1470350)
Backed out changeset 01aae64a6b4b (bug 1470350)
Backed out changeset 8fa4c531ab77 (bug 1470350)
2020-04-08 04:08:59 +03:00
Timothy Nikkel
772d2f3c88 Bug 1470350. Enable delaytest.html tests again. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D70105

--HG--
extra : moz-landing-system : lando
2020-04-08 00:20:39 +00:00
Timothy Nikkel
d9027714b1 Bug 1470350. Wait for MozReftestInvalidate event in delaytest.html and then wait for the animated image to complete. r=emilio
Just waiting for the load event of the image doesn't even mean the image has been painted at all yet, but by the time MozReftestInvalidate fires the first frame should be guaranteed to have been painted.

Also, switch to using new img.decode api. img.decode will decode an animated version of the img, whereas drawing to a canvas will kick off a first frame only decode which the page can't use.

Differential Revision: https://phabricator.services.mozilla.com/D70104

--HG--
extra : moz-landing-system : lando
2020-04-08 00:23:59 +00:00
Timothy Nikkel
076552a89f Bug 1470350. Fix delaytest.html tests to compare to an html document instead of just an image. r=emilio
Loading just the image results in "theatre mode" display of the image (centered, dark background). But the test needs to be in an html document. We either changed how top level images were displayed or stopped using a style sheet in reftests that displayed images like this since the tests were last enabled.

Differential Revision: https://phabricator.services.mozilla.com/D70103

--HG--
extra : moz-landing-system : lando
2020-04-08 00:20:16 +00:00
Cameron McCormack
de27b9bf00 Bug 1625797 - Replace RasterImage nsIProperties impl with accessors for hotspot coordinate. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D68737

--HG--
extra : moz-landing-system : lando
2020-03-31 21:16:39 +00:00
Honza Bambas
052f8ccd60 Bug 1625770 - Qualify image::Decoder in image gtests, r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D68722

--HG--
extra : moz-landing-system : lando
2020-03-30 13:09:51 +00:00
Oana Pop Rus
cb4fa960a7 Backed out changeset 903f141a89b9 (bug 1625797) for build bustages in Image.h on a CLOSED TREE
--HG--
extra : amend_source : 0d6a6cf13c97b91c263188df07e6975c341f7f81
2020-03-30 07:44:01 +03:00
Cameron McCormack
1487c292cc Bug 1625797 - Replace RasterImage nsIProperties impl with accessors for hotspot coordinate. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D68737

--HG--
extra : moz-landing-system : lando
2020-03-30 02:29:27 +00:00
Arthur Iakab
6990ddf5e2 Backed out changeset e6e5816403d9 (bug 1620600) for causing Gtest failures.
CLOSED TREE
2020-03-12 04:44:59 +02:00
Andrew Osmond
5c7e1dd283 Bug 1620600 - Add flags to allow image decoders to produce sRGB output. r=tnikkel
Currently we can only use the gfx.color_management.force_srgb pref to
force all images to sRGB, or just accept device space. It would be nice
to be able to test device space in our tests, as well as sRGB. This
patch adds a surface flag which allows us to selectively output sRGB.

This will also be useful for clipboard and re-encoding purposes, since
they want a neutral output. In an ideal world we would just output the
color profile and the pixel data in the original color space, but for
now this is a relatively simple approach that works on all platforms and
interops well with all applications.

Differential Revision: https://phabricator.services.mozilla.com/D65734

--HG--
extra : moz-landing-system : lando
2020-03-12 00:37:53 +00:00
Andrew Osmond
91b071ed14 Bug 1618345 - Enforce proper color management by splitting gfx::Color into sRGBColor and DeviceColor types. r=jrmuizel
gfx::Color is currently misused in many places. The DrawTargets expect
the color space to be in device space, e.g. what we are actually going
to draw using. Everything sitting above generally deals with sRGB, as
specified in CSS. Sometimes we missed the conversion from sRGB to device
space when issuing draw calls, and similarly sometimes we converted the
color to device space twice.

This patch splits the type in two. sRGBColor and DeviceColor now
represent sRGB and device color spaces respectively. DrawTarget only
accepts DeviceColor, and one can get a DeviceColor from an sRGBColor via
the ToDeviceColor helper API. The reftests now pass with color
management enabled for everything (e.g. CSS) instead of just tagged
raster images.

There will be a follow up patch to enable color management everywhere by
default on all supported platforms.

Differential Revision: https://phabricator.services.mozilla.com/D64771

--HG--
extra : moz-landing-system : lando
2020-03-09 14:16:17 +00:00
Mark Banner
15cfe23b88 Bug 1620542 - Automatically fix ESLint errors in .eslintrc.js files. r=mossop
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D65703

--HG--
extra : moz-landing-system : lando
2020-03-07 10:09:44 +00:00
Andrew Osmond
be28b4e1e5 Bug 1619249 - Upgrade to BMPSuite 2.6. r=tnikkel
Differential Revision: https://phabricator.services.mozilla.com/D64973

--HG--
rename : image/test/reftest/bmp/bmpsuite/q/rgba32.bmp => image/test/reftest/bmp/bmpsuite/q/rgba32-2.bmp
extra : moz-landing-system : lando
2020-03-02 19:17:19 +00:00
Andrew Osmond
5ee82cb26c Bug 1615394 - Add color management support to the BMP decoder. r=tnikkel
This patch adds support for color management in BMPs added in
BITMAPV4HEADER and BITMAPV5HEADER. While display of BMPs is relatively
rare this comes in handy when interacting with the Windows clipboard.

Differential Revision: https://phabricator.services.mozilla.com/D64880

--HG--
extra : moz-landing-system : lando
2020-03-03 14:16:00 +00:00
Dorel Luca
284433eb29 Backed out changeset 388ac5609ceb (bug 1615394) for MinGW build bustage. CLOSED TREE
--HG--
extra : amend_source : cf3cec59ae1efd99b9de0d19b7a09c135138daf5
2020-03-03 13:02:04 +02:00
Andrew Osmond
97a2bca5b9 Bug 1615394 - Add color management support to the BMP decoder. r=tnikkel
This patch adds support for color management in BMPs added in
BITMAPV4HEADER and BITMAPV5HEADER. While display of BMPs is relatively
rare this comes in handy when interacting with the Windows clipboard.

Differential Revision: https://phabricator.services.mozilla.com/D64880

--HG--
extra : moz-landing-system : lando
2020-03-02 23:49:37 +00:00
Emilio Cobos Álvarez
326534f0c8 Bug 1619245 - Associate image to display item at paint time rather than at construction time. r=tnikkel
On some RDL situations we may create the new item, then destroy the old one
afterwards.

When this is the order of operations, the image would end up unregistered, and
thus not invalidating the canvas frame.

Differential Revision: https://phabricator.services.mozilla.com/D64995

--HG--
extra : moz-landing-system : lando
2020-03-03 02:19:59 +00:00
Andrew Osmond
127fcd7b52 Bug 1255105 - Use SurfacePipe in the BMP decoder. r=tnikkel
This patch converts the BMP decoder to use SurfacePipe instead of using
AllocateFrame and Downscaler directly. As a result, it now uses the
accelerated premultiplication path, honours the
SurfaceFlags::NO_PREMULTIPLY_ALPHA flag, and allows for a path forward
to support color management and clipboard better.

Differential Revision: https://phabricator.services.mozilla.com/D64866

--HG--
extra : moz-landing-system : lando
2020-03-02 23:24:12 +00:00
Andrew Halberstadt
4d752c4ca7 Bug 1616368 - [reftest] Replace 'default-preferences' with 'defaults' r=dbaron
With the new 'defaults' key being added, 'default-preferences' is now
redundant. This commit converts all existing uses of 'default-preferences' to
use 'defaults' instead.

Differential Revision: https://phabricator.services.mozilla.com/D63247

--HG--
extra : moz-landing-system : lando
2020-02-20 18:47:54 +00:00
Kristen Wright
cc862d2d30 Bug 1539944 - Get rid of NS_NewThread r=froydnj
Gets rid of `NS_NewThread`. Where it was used in testing, I gave the new named threads names relevant to their tests.

Differential Revision: https://phabricator.services.mozilla.com/D62475

--HG--
extra : source : 541b98270c9985c5bd3569ff3ff8bc6c3d3c650a
2020-02-11 21:01:56 +00:00
Ciure Andrei
0ddf5384e0 Backed out changeset 541b98270c99 (bug 1539944) for causing bc leaks CLOSED TREE 2020-02-12 03:23:15 +02:00
Kristen Wright
e40c296db4 Bug 1539944 - Get rid of NS_NewThread r=froydnj
Gets rid of `NS_NewThread`. Where it was used in testing, I gave the new named threads names relevant to their tests.

Differential Revision: https://phabricator.services.mozilla.com/D62475

--HG--
extra : moz-landing-system : lando
2020-02-11 21:01:56 +00:00
Ehsan Akhgari
3f9530ed27 Bug 1588980 - Part 1: Hide HTMLCanvasElement.mozGetAsFile behind a preference; r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D60283

--HG--
extra : moz-landing-system : lando
2020-01-20 22:03:13 +00:00