gecko-dev/image/moz.build
Andrew Osmond 874ce61a83 Bug 1901078 - Implement promise based anonymous image decoder. r=tnikkel
This bypasses any caching used on the display pipeline and is
intended to be used by layers that want asynchronous decoding
that fits well into the MozPromise style.

This also fixes an issue with the frame count metadata decoder in the
GIF decoder. The code only began being used with this patch, and the WPT
exposed an overflow bug caused by not clearing nsGIFDecoder2::mColormap
and nsGIFDecoder2::mColormapSize.

Differential Revision: https://phabricator.services.mozilla.com/D212833
2024-07-24 03:16:16 +00:00

144 lines
3.5 KiB
Python

# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DIRS += ["build", "decoders", "encoders"]
if CONFIG["ENABLE_TESTS"]:
DIRS += ["test/gtest"]
if CONFIG["FUZZING_INTERFACES"]:
DIRS += ["test/fuzzing"]
with Files("**"):
BUG_COMPONENT = ("Core", "Graphics: ImageLib")
BROWSER_CHROME_MANIFESTS += [
"test/browser/browser.toml",
"test/browser/browser_sandbox_headless.toml",
]
MOCHITEST_MANIFESTS += ["test/mochitest/mochitest.toml"]
MOCHITEST_CHROME_MANIFESTS += ["test/mochitest/chrome.toml"]
XPCSHELL_TESTS_MANIFESTS += ["test/unit/xpcshell.toml"]
XPIDL_SOURCES += [
"imgICache.idl",
"imgIContainer.idl",
"imgIContainerDebug.idl",
"imgIEncoder.idl",
"imgILoader.idl",
"imgINotificationObserver.idl",
"imgIRequest.idl",
"imgIScriptedNotificationObserver.idl",
"imgITools.idl",
"nsIIconURI.idl",
]
XPIDL_MODULE = "imglib2"
EXPORTS += [
"FrameTimeout.h",
"ImageBlocker.h",
"ImageCacheKey.h",
"ImageLogging.h",
"ImageMetadata.h",
"ImageOps.h",
"ImageRegion.h",
"ImgDrawResult.h",
"imgLoader.h",
"imgRequest.h",
"imgRequestProxy.h",
"IProgressObserver.h",
"Orientation.h",
"SurfaceCacheUtils.h",
]
EXPORTS.mozilla.image += [
"encoders/bmp/nsBMPEncoder.h",
"encoders/ico/nsICOEncoder.h",
"encoders/jpeg/nsJPEGEncoder.h",
"encoders/png/nsPNGEncoder.h",
"ICOFileHeaders.h",
"ImageMemoryReporter.h",
"ImageUtils.h",
"Resolution.h",
"SourceBuffer.h",
"SurfaceFlags.h",
"WebRenderImageProvider.h",
]
UNIFIED_SOURCES += [
"AnimationFrameBuffer.cpp",
"AnimationSurfaceProvider.cpp",
"BlobSurfaceProvider.cpp",
"ClippedImage.cpp",
"DecodedSurfaceProvider.cpp",
"Decoder.cpp",
"DecoderFactory.cpp",
"DynamicImage.cpp",
"FrameAnimator.cpp",
"FrozenImage.cpp",
"IDecodingTask.cpp",
"Image.cpp",
"ImageBlocker.cpp",
"ImageCacheKey.cpp",
"ImageFactory.cpp",
"ImageMemoryReporter.cpp",
"ImageOps.cpp",
"ImageUtils.cpp",
"ImageWrapper.cpp",
"imgFrame.cpp",
"imgLoader.cpp",
"imgRequest.cpp",
"imgRequestProxy.cpp",
"imgTools.cpp",
"MultipartImage.cpp",
"OrientedImage.cpp",
"ProgressTracker.cpp",
"RasterImage.cpp",
"ScriptedNotificationObserver.cpp",
"ShutdownTracker.cpp",
"SourceBuffer.cpp",
"SurfaceCache.cpp",
"SurfaceCacheUtils.cpp",
"SurfacePipe.cpp",
"SVGDocumentWrapper.cpp",
"VectorImage.cpp",
]
UNIFIED_SOURCES += ["Downscaler.cpp"]
if CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
SOURCES += ["DecodePool.cpp"]
else:
UNIFIED_SOURCES += ["DecodePool.cpp"]
include("/ipc/chromium/chromium-config.mozbuild")
FINAL_LIBRARY = "xul"
LOCAL_INCLUDES += [
# Because SVGDocumentWrapper.cpp includes "mozilla/dom/SVGSVGElement.h"
"/dom/base",
"/dom/svg",
# Because imgFrame.cpp includes "cairo.h"
"/gfx/cairo/cairo/src",
# We need to instantiate the decoders
"/image/decoders",
# For URI-related functionality
"/netwerk/base",
# For nsHttpChannel.h
"/netwerk/protocol/http",
# DecodePool uses thread-related facilities.
"/xpcom/threads",
]
LOCAL_INCLUDES += CONFIG["SKIA_INCLUDES"]
# Add libFuzzer configuration directives
include("/tools/fuzzing/libfuzzer-config.mozbuild")