e56774602c
Bug: b/65290323 If a webp file is truncated such that no rows can be decoded, WebPIDecGetRGB does not initialize its "last_y" parameter. We use rowsDecoded (passed as last_y) to determine which remaining rows to fill. Check the return value of WebPIDecGetRGB. If it fails (returns null), or rowsDecoded is <= 0 (matching Chromium's check), return kInvalidInput, since there is nothing to draw. Note that this is a change in behavior for Android. Previously we would decode an empty webp to just a transparent/black rectangle, whereas now we simply fail. I think this is a change for the better. Add a test which truncates a file to have 0 rows available and attempts to decode it. msan verifies that we no longer depend on the uninitialized value. Stop attempting to test decoding subsets from an incomplete webp (in CodecTest.cpp). Unless we have decoded the portion covered by the subset, this will fail. Remove test images inc0.webp (from both dm/ and colorspace/) and inc1.webp. These just decode to transparent rectangles. Replace them with inc2.webp and inc3.webp, which decode part of the image and then have to fill with transparent. Change-Id: I64d40be91c574b45963f9a43d8dd8f4929dd2939 Reviewed-on: https://skia-review.googlesource.com/50303 Commit-Queue: Leon Scroggins <scroggo@google.com> Reviewed-by: James Zern <jzern@google.com> |
||
---|---|---|
.. | ||
android_ndk_darwin | ||
android_ndk_linux | ||
android_ndk_windows | ||
android_sdk | ||
armhf_sysroot | ||
cast_toolchain | ||
chromebook_arm_gles | ||
clang_linux | ||
clang_win | ||
emscripten_sdk | ||
go | ||
linux_vulkan_intel_driver_debug | ||
linux_vulkan_intel_driver_release | ||
linux_vulkan_sdk | ||
protoc | ||
scripts | ||
skimage | ||
skp | ||
svg | ||
valgrind | ||
win_toolchain | ||
win_vulkan_sdk | ||
__init__.py | ||
asset_utils_test.py | ||
asset_utils.py | ||
assets.py | ||
README.md |
Assets
This directory contains tooling for managing assets used by the bots. The primary entry point is assets.py, which allows a user to add, remove, upload, and download assets.
Assets are stored in Google Storage, named for their version number.
Individual Assets
Each asset has its own subdirectory with the following contents:
- VERSION: The current version number of the asset.
- download.py: Convenience script for downloading the current version of the asset.
- upload.py: Convenience script for uploading a new version of the asset.
- [optional] create.py: Script which creates the asset, implemented by the user.
- [optional] create_and_upload.py: Convenience script which combines create.py with upload.py.
Examples
Add a new asset and upload an initial version.
$ infra/bots/assets/assets.py add myasset
Creating asset in infra/bots/assets/myasset
Creating infra/bots/assets/myasset/download.py
Creating infra/bots/assets/myasset/upload.py
Creating infra/bots/assets/myasset/common.py
Add script to automate creation of this asset? (y/n) n
$ infra/bots/assets/myasset/upload.py -t ${MY_ASSET_LOCATION}
$ git commit
Add an asset whose creation can be automated.
$ infra/bots/assets/assets.py add myasset
Add script to automate creation of this asset? (y/n) y
$ vi infra/bots/assets/myasset/create.py
(implement the create_asset function)
$ infra/bots/assets/myasset/create_and_upload.py
$ git commit