Fixed
Status Update
Comments
sc...@gmail.com <sc...@gmail.com> #2
Project: platform/frameworks/support
Branch: androidx-main
Author: Louis Pullen-Freilich <
Link:
Adds OverscrollEffect#withoutDrawing and OverscrollEffect#withoutEventHandling
Expand for full commit details
Adds OverscrollEffect#withoutDrawing and OverscrollEffect#withoutEventHandling
These APIs allow overscroll to have events dispatched to it by one component, and rendered in a separate component.
Fixes: b/266550551
Fixes: b/204650733
Fixes: b/255554340
Fixes: b/229537244
Test: OverscrollTest
Relnote: "Adds OverscrollEffect#withoutDrawing and OverscrollEffect#withoutEventHandling APIs - these APIs create a wrapped instance of the provided overscroll effect that doesn't draw / handle events respectively, which allows for rendering overscroll in a separate component from the component that is dispatching events. For example, disabling drawing the overscroll inside a lazy list, and then drawing the overscroll separately on top / elsewhere."
Change-Id: Idbb3d91546b49c1987a041f959bce4b2b09a9f61
Files:
- M
compose/foundation/foundation/api/current.txt
- M
compose/foundation/foundation/api/restricted_current.txt
- M
compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/OverscrollDemo.kt
- M
compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/OverscrollSample.kt
- M
compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/OverscrollTest.kt
- M
compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/Overscroll.kt
Hash: f64e25b7a473c757d080521e7dd97b3f6670f60d
Date: Fri Nov 01 18:43:56 2024
ib...@google.com <ib...@google.com> #3
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.compose.foundation:foundation:1.8.0-alpha06
androidx.compose.foundation:foundation-android:1.8.0-alpha06
androidx.compose.foundation:foundation-jvmstubs:1.8.0-alpha06
androidx.compose.foundation:foundation-linuxx64stubs:1.8.0-alpha06
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
commit 3d6c1ad6b9d8b10710ccfe08c0268aec5458dcb9
Author: Ian Baker <ibaker@google.com>
Date: Wed Feb 22 16:46:34 2023
Continue parsing after trying to follow an invalid IFD offset
This means we're now able to parse the GPS info out of
jpeg_with_exif_invalid_offset.jpg, because we just skip the invalid
ExifIFD offset instead of stopping parsing completely due to following
the offset and encountering an EOFException.
Test: ./gradlew :exifinterface:exifinterface:connectedAndroidTest
Bug: 264729367
Change-Id: I715a4de9ae14e2fd6576b025a36e16763d6960a6
M exifinterface/exifinterface/src/androidTest/java/androidx/exifinterface/media/ExifInterfaceTest.java
M exifinterface/exifinterface/src/androidTest/res/values/arrays.xml
M exifinterface/exifinterface/src/main/java/androidx/exifinterface/media/ExifInterface.java
https://android-review.googlesource.com/2460713
Branch: androidx-main
commit 3d6c1ad6b9d8b10710ccfe08c0268aec5458dcb9
Author: Ian Baker <ibaker@google.com>
Date: Wed Feb 22 16:46:34 2023
Continue parsing after trying to follow an invalid IFD offset
This means we're now able to parse the GPS info out of
jpeg_with_exif_invalid_offset.jpg, because we just skip the invalid
ExifIFD offset instead of stopping parsing completely due to following
the offset and encountering an EOFException.
Test: ./gradlew :exifinterface:exifinterface:connectedAndroidTest
Bug: 264729367
Change-Id: I715a4de9ae14e2fd6576b025a36e16763d6960a6
M exifinterface/exifinterface/src/androidTest/java/androidx/exifinterface/media/ExifInterfaceTest.java
M exifinterface/exifinterface/src/androidTest/res/values/arrays.xml
M exifinterface/exifinterface/src/main/java/androidx/exifinterface/media/ExifInterface.java
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit ff398f939baaa4e6fec4eaefbe2b27767c056028
Author: Ian Baker <ibaker@google.com>
Date: Thu Feb 23 14:43:05 2023
Add test for invalid IFD offset in ExifInterface
jpeg_with_exif_invalid_offset.jpg was created by modifying the offset
of the ExifIFD from 0x00000008 to 0x00abcd08 (i.e. well outside the
exif block of the jpeg file).
The current behaviour of ExifInterface stops parsing the file
completely at this point, and thus never parses the `GpsInfo` (which
is the next tag after the ExifIFD pointer). An upcoming change will
make ExifInterface skip the invalid offset, but continue parsing later
tags, and therefore the GPS info will be successfully parsed from this
broken file.
Broken/invalid IFD offsets are noted to be a common failure mode in exif
data (see top bullet ofhttps://en.wikipedia.org/wiki/Exif#Technical_2 ).
exiftool complains about the invalid offset but is able to parse the
GPS data:
$ exiftool -v4 jpeg_with_exif_invalid_offset.jpg
<snip>
| 6) ExifOffset (SubDirectory) -->
| - Tag 0x8769 (4 bytes, int32u[1]):
| 01e6: 00 ab cd 08 [....]
| Warning = Bad ExifOffset SubDirectory start (directory end is 11259148 but EXIF size is only 790)
| 7) GPSInfo (SubDirectory) -->
| - Tag 0x8825 (4 bytes, int32u[1]):
| 01f2: 00 00 01 16 [....]
| + [GPS directory with 9 entries]
| | 0) GPSLatitudeRef = N
| | - Tag 0x0001 (2 bytes, string[2]):
| | 012c: 4e 00 [N.]
<snip>
Test: ./gradlew :exifinterface:exifinterface:connectedAndroidTest
Bug: 264729367
Change-Id: I1782d5bef9d91caa2fd97508bdf6c3924a7d7963
M exifinterface/exifinterface/src/androidTest/java/androidx/exifinterface/media/ExifInterfaceTest.java
A exifinterface/exifinterface/src/androidTest/res/raw/jpeg_with_exif_invalid_offset.jpg
M exifinterface/exifinterface/src/androidTest/res/values/arrays.xml
https://android-review.googlesource.com/2460712
Branch: androidx-main
commit ff398f939baaa4e6fec4eaefbe2b27767c056028
Author: Ian Baker <ibaker@google.com>
Date: Thu Feb 23 14:43:05 2023
Add test for invalid IFD offset in ExifInterface
jpeg_with_exif_invalid_offset.jpg was created by modifying the offset
of the ExifIFD from 0x00000008 to 0x00abcd08 (i.e. well outside the
exif block of the jpeg file).
The current behaviour of ExifInterface stops parsing the file
completely at this point, and thus never parses the `GpsInfo` (which
is the next tag after the ExifIFD pointer). An upcoming change will
make ExifInterface skip the invalid offset, but continue parsing later
tags, and therefore the GPS info will be successfully parsed from this
broken file.
Broken/invalid IFD offsets are noted to be a common failure mode in exif
data (see top bullet of
exiftool complains about the invalid offset but is able to parse the
GPS data:
$ exiftool -v4 jpeg_with_exif_invalid_offset.jpg
<snip>
| 6) ExifOffset (SubDirectory) -->
| - Tag 0x8769 (4 bytes, int32u[1]):
| 01e6: 00 ab cd 08 [....]
| Warning = Bad ExifOffset SubDirectory start (directory end is 11259148 but EXIF size is only 790)
| 7) GPSInfo (SubDirectory) -->
| - Tag 0x8825 (4 bytes, int32u[1]):
| 01f2: 00 00 01 16 [....]
| + [GPS directory with 9 entries]
| | 0) GPSLatitudeRef = N
| | - Tag 0x0001 (2 bytes, string[2]):
| | 012c: 4e 00 [N.]
<snip>
Test: ./gradlew :exifinterface:exifinterface:connectedAndroidTest
Bug: 264729367
Change-Id: I1782d5bef9d91caa2fd97508bdf6c3924a7d7963
M exifinterface/exifinterface/src/androidTest/java/androidx/exifinterface/media/ExifInterfaceTest.java
A exifinterface/exifinterface/src/androidTest/res/raw/jpeg_with_exif_invalid_offset.jpg
M exifinterface/exifinterface/src/androidTest/res/values/arrays.xml
ib...@google.com <ib...@google.com>
na...@google.com <na...@google.com> #6
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.exifinterface:exifinterface:1.3.7
na...@google.com <na...@google.com> #7
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.exifinterface:exifinterface:1.4.0-alpha01
Description
Version used: 1.3.5
Devices/Android versions reproduced on: Android Emulator API30
When using ExifIntreface on the attached picture, an exifinterface instance is returned, but further reading EXIF attributes yield wrong result, like getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 0) returns 160, getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, 0) returns 120, and ExifIntreface.dateTimeOriginal returns null.