This is a follow up bug-fix to 
[JDK-8284281](https://bugs.openjdk.org/browse/JDK-8284281)

Issue:
When Narrator is running,
Following scenarios with TextField or TextArea cause IllegalArgumentException  
or NPE

1. Move cursor to beginning of line, Press and hold DELETE key
2. Move cursor to beginning of line, Press and hold CTRL + DELETE key
3. Move cursor to end of line, Press and hold BACKSPACE key
4. Move cursor to end of line, Press and hold CTRL + BACKSPACE key

Fix:
Two variable `start` and `end` in  `WinTextRangeProvider` should be validated 
against text length
1. Added a method `validateRange()`, and is called several from methods which 
access text based on `start` and `end` variables
2. Partially reverted fix of 
[JDK-8284281](https://bugs.openjdk.org/browse/JDK-8284281) : 
    - removed 
https://github.com/openjdk/jfx/blob/35675c8d27d54a26059b182614e18152794dbcec/modules/javafx.graphics/src/main/java/com/sun/glass/ui/win/WinTextRangeProvider.java#L180
    - and used `validateRange()` instead to be symmetrical.

Verification:
To observe the issue.

1. Run any program with TextField and/or TextArea
2. Launch Windows Narrator
3. Run the exception causing scenarios several times:

- Move cursor to beginning of line, Press and hold DELETE key
- Move cursor to beginning of line, Press and hold CTRL + DELETE key
- Move cursor to end of line, Press and hold BACKSPACE key
- Move cursor to end of line, Press and hold CTRL + BACKSPACE key

-------------

Commit messages:
 - validateRange before accessing text string

Changes: https://git.openjdk.org/jfx/pull/907/files
 Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=907&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8293795
  Stats: 24 lines in 1 file changed: 16 ins; 4 del; 4 mod
  Patch: https://git.openjdk.org/jfx/pull/907.diff
  Fetch: git fetch https://git.openjdk.org/jfx pull/907/head:pull/907

PR: https://git.openjdk.org/jfx/pull/907

Reply via email to