gecko-dev/image
Frédéric Wang b005b82248 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 (mbrodesser@igalia.com)

Differential Revision: https://phabricator.services.mozilla.com/D197493
2024-02-27 06:33:48 +00:00
..
build Bug 1866010 p2. Update UpdateContentViewerRegistration to reflect nsIDocumentViewer's new name. r=emilio 2023-11-24 09:10:48 +00:00
decoders Bug 1873422. Ignore "invalid chunk type" errors in pngs if we have enough data to display something when encountered. r=aosmond 2024-02-24 01:00:10 +00:00
encoders Bug 1872536 - Use MakeUniqueFallible for large buffers in image decoders/encoders. r=gfx-reviewers,lsalzman 2023-12-31 22:16:46 +00:00
test Bug 1873422. Ignore "invalid chunk type" errors in pngs if we have enough data to display something when encountered. r=aosmond 2024-02-24 01:00:10 +00:00
AnimationFrameBuffer.cpp
AnimationFrameBuffer.h
AnimationParams.h
AnimationSurfaceProvider.cpp
AnimationSurfaceProvider.h
AutoRestoreSVGState.h
BlobSurfaceProvider.cpp Bug 1871613 - Ensure CanvasDrawEventRecorder releases external surface dependencies. r=gfx-reviewers,lsalzman 2023-12-23 01:34:31 +00:00
BlobSurfaceProvider.h Bug 1871613 - Ensure CanvasDrawEventRecorder releases external surface dependencies. r=gfx-reviewers,lsalzman 2023-12-23 01:34:31 +00:00
BMPHeaders.h
ClippedImage.cpp
ClippedImage.h
CopyOnWrite.h
DecodedSurfaceProvider.cpp
DecodedSurfaceProvider.h
DecodePool.cpp Bug 1846407 - Use enum class for Task::Run return value. r=bas,win-reviewers,rkraesig 2023-10-18 15:23:29 +00:00
DecodePool.h Bug 1826206 - Require nsISerialEventTarget for RetargetDeliveryTo, r=necko-reviewers,valentin 2023-06-07 14:48:38 +00:00
Decoder.cpp
Decoder.h
DecoderFactory.cpp Bug 1641389 - Remove image.webp.enabled pref, always on by default. r=necko-reviewers,tnikkel,valentin 2023-09-15 19:36:34 +00:00
DecoderFactory.h
DecoderFlags.h
Downscaler.cpp Bug 1857746 - Remove std max in downscaler. r=sylvestre DONTBUILD 2023-10-30 08:12:41 +00:00
Downscaler.h
DownscalingFilter.h
DynamicImage.cpp
DynamicImage.h
FrameAnimator.cpp
FrameAnimator.h
FrameTimeout.h
FrozenImage.cpp
FrozenImage.h
ICOFileHeaders.h
IDecodingTask.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
IDecodingTask.h Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
Image.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
Image.h
ImageBlocker.cpp Bug 1873474 - Use ImageBlocker directly instead of nsIContentPolicy::ShouldProcess in ImageDocument. r=smaug 2024-01-17 09:49:32 +00:00
ImageBlocker.h Bug 1873474 - Use ImageBlocker directly instead of nsIContentPolicy::ShouldProcess in ImageDocument. r=smaug 2024-01-17 09:49:32 +00:00
ImageCacheKey.cpp Bug 1873490, part 1 - Refactor the only external call to StorageDisabledByAntiTracking - r=anti-tracking-reviewers,timhuang 2024-01-12 17:03:20 +00:00
ImageCacheKey.h Bug 1832528 - Make cors mode part of the image cache key. r=tnikkel 2023-05-25 22:25:31 +00:00
ImageFactory.cpp Bug 1624819 - Remove TaskCategory and other quantum dom remnants. r=smaug,media-playback-reviewers,credential-management-reviewers,cookie-reviewers,places-reviewers,win-reviewers,valentin,mhowell,sgalich,alwu 2023-10-10 08:51:12 +00:00
ImageFactory.h
ImageLogging.h
ImageMemoryReporter.cpp
ImageMemoryReporter.h
ImageMetadata.h
ImageOps.cpp
ImageOps.h
ImageRegion.h
ImageWrapper.cpp
ImageWrapper.h
ImgDrawResult.h
imgFrame.cpp
imgFrame.h Bug 1856795 - ride along: use = default; on some recently modified files r=emilio 2023-10-15 15:29:03 +00:00
imgICache.idl
imgIContainer.idl
imgIContainerDebug.idl
imgIEncoder.idl
imgILoader.idl
imgINotificationObserver.idl
imgIRequest.idl
imgIScriptedNotificationObserver.idl
imgITools.idl
imgLoader.cpp Bug 1872657 - Add fetchpriority support for <link rel=preload as=image>. r=valentin,smaug,manuel 2024-02-27 06:33:48 +00:00
imgLoader.h Bug 1872657 - Add fetchpriority support for <link rel=preload as=image>. r=valentin,smaug,manuel 2024-02-27 06:33:48 +00:00
imgRequest.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
imgRequest.h Bug 1722322 - Implement LargestContentfulPaint r=emilio 2023-11-02 20:53:36 +00:00
imgRequestProxy.cpp Bug 1624819 - Remove TaskCategory and other quantum dom remnants. r=smaug,media-playback-reviewers,credential-management-reviewers,cookie-reviewers,places-reviewers,win-reviewers,valentin,mhowell,sgalich,alwu 2023-10-10 08:51:12 +00:00
imgRequestProxy.h Bug 1722322 - Implement LargestContentfulPaint r=emilio 2023-11-02 20:53:36 +00:00
imgTools.cpp
imgTools.h
IProgressObserver.h Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
ISurfaceProvider.h
LookupResult.h
moz.build Bug 1859893 - batch 15 - migrate xpcshell.ini -> .toml. r=aryx,geckoview-reviewers,extension-reviewers,valentin,cookie-reviewers,pbz,owlish,robwu 2023-11-24 14:41:35 +00:00
MultipartImage.cpp Bug 1862059. Handle edge cases of svg images in multipart images. r=aosmond,gfx-reviewers 2024-01-02 07:13:01 +00:00
MultipartImage.h
nsIIconURI.idl
Orientation.h
OrientedImage.cpp
OrientedImage.h
PlaybackType.h
ProgressTracker.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
ProgressTracker.h Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
RasterImage.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
RasterImage.h
Resolution.h
ScriptedNotificationObserver.cpp
ScriptedNotificationObserver.h
ShutdownTracker.cpp
ShutdownTracker.h
SourceBuffer.cpp Bug 1273714: Remove an imagelib warning that's more spammy than useful at this point. r=tnikkel DONTBUILD 2023-09-27 23:27:13 +00:00
SourceBuffer.h
StreamingLexer.h
SurfaceCache.cpp Bug 1864550. Allow pref image.mem.max_legal_imgframe_size_kb to be live. r=gfx-reviewers,gw 2024-02-02 04:42:17 +00:00
SurfaceCache.h
SurfaceCacheUtils.cpp
SurfaceCacheUtils.h
SurfaceFilters.h
SurfaceFlags.h
SurfacePipe.cpp
SurfacePipe.h
SurfacePipeFactory.h
SVGDocumentWrapper.cpp Bug 1865480. Rename nsIContentViewer to nsIDocumentViewer. r=layout-reviewers,emilio 2023-11-21 12:45:59 +00:00
SVGDocumentWrapper.h Bug 1865480. Rename nsIContentViewer to nsIDocumentViewer. r=layout-reviewers,emilio 2023-11-21 12:45:59 +00:00
SVGDrawingCallback.h
SVGDrawingParameters.h
VectorImage.cpp Bug 1880054. Simplify some imagelib event target code. r=gfx-reviewers,lsalzman 2024-02-25 04:54:33 +00:00
VectorImage.h
WebRenderImageProvider.h