Fixed
Status Update
Comments
sc...@gmail.com <sc...@gmail.com> #2
Easy repro: Tap back key during gesture selection.
ib...@google.com <ib...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-master-dev
commit dc37dddeefb6910a229d81612a60374678e615b4
Author: Steve McKay <smckay@google.com>
Date: Wed Aug 14 23:48:25 2019
Add support for resetting library state in response to CANCEL events and clearing of selection.
Sepcifically:
- BandSelectionHelper#reset
- GestureSelectionHelper#reset
- Clearing Selection in tracker.
- Reset the OperationMonitor.
- Connect explicit clearSelection (as clients call from back button) to reset.
GestureDetector is already listening for CANCEL events, cleans up its own state internally.
Related cleanups:
- Add onSelectionCleared support to SelectionObserver class.
- Guard all runtime state checking behind DEBUG bit (mis-configuration still throws).
- Deprecate support for setting gesture/pointer tooltypes.
- Define more events in TestEvents.
- Cleanup naming and consoliate some tests in BandSelectionHelperTest.
- Remove support POINTER_UP in BandSelectionHelper...POINTER_UP is for secondary pointer
devices only, which is outside of the domain of BandSelectionHelper.
BUG: 137460699
Test: Passing, added new test related to reset behavior.
Change-Id: Ie7127571dfa95f571ac754b3ae58e03bb153cbe8
M recyclerview/recyclerview-selection/api/1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/current.txt
M recyclerview/recyclerview-selection/api/public_plus_experimental_1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/public_plus_experimental_current.txt
M recyclerview/recyclerview-selection/api/restricted_1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/restricted_current.txt
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/BandSelectionHelperTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/DefaultSelectionTrackerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/DefaultSelectionTracker_SingleSelectTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/GestureSelectionHelperTest.java
A recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/ResetMangerTest.java
A recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/SelectionTrackerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/TouchInputHandlerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestEvents.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestRunnable.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestSelectionObserver.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/BandSelectionHelper.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/GestureDetectorOnItemTouchListenerAdapter.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/GestureSelectionHelper.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/MotionEvents.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/MouseInputHandler.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/OperationMonitor.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/Range.java
A recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/ResetManager.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/SelectionTracker.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/TouchInputHandler.java
https://android-review.googlesource.com/1103351
Branch: androidx-master-dev
commit dc37dddeefb6910a229d81612a60374678e615b4
Author: Steve McKay <smckay@google.com>
Date: Wed Aug 14 23:48:25 2019
Add support for resetting library state in response to CANCEL events and clearing of selection.
Sepcifically:
- BandSelectionHelper#reset
- GestureSelectionHelper#reset
- Clearing Selection in tracker.
- Reset the OperationMonitor.
- Connect explicit clearSelection (as clients call from back button) to reset.
GestureDetector is already listening for CANCEL events, cleans up its own state internally.
Related cleanups:
- Add onSelectionCleared support to SelectionObserver class.
- Guard all runtime state checking behind DEBUG bit (mis-configuration still throws).
- Deprecate support for setting gesture/pointer tooltypes.
- Define more events in TestEvents.
- Cleanup naming and consoliate some tests in BandSelectionHelperTest.
- Remove support POINTER_UP in BandSelectionHelper...POINTER_UP is for secondary pointer
devices only, which is outside of the domain of BandSelectionHelper.
BUG: 137460699
Test: Passing, added new test related to reset behavior.
Change-Id: Ie7127571dfa95f571ac754b3ae58e03bb153cbe8
M recyclerview/recyclerview-selection/api/1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/current.txt
M recyclerview/recyclerview-selection/api/public_plus_experimental_1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/public_plus_experimental_current.txt
M recyclerview/recyclerview-selection/api/restricted_1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/restricted_current.txt
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/BandSelectionHelperTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/DefaultSelectionTrackerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/DefaultSelectionTracker_SingleSelectTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/GestureSelectionHelperTest.java
A recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/ResetMangerTest.java
A recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/SelectionTrackerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/TouchInputHandlerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestEvents.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestRunnable.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestSelectionObserver.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/BandSelectionHelper.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/GestureDetectorOnItemTouchListenerAdapter.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/GestureSelectionHelper.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/MotionEvents.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/MouseInputHandler.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/OperationMonitor.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/Range.java
A recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/ResetManager.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/SelectionTracker.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/TouchInputHandler.java
ap...@google.com <ap...@google.com> #4
Aiming to have a 1.1 beta release out soon including this fix.
All defensive check stability issues should be resolved with this CL.
All defensive check stability issues should be resolved with this CL.
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.