Reported by jteh on 2008-03-18 23:15
It is possible to have a link with no content, like so:
This is pretty silly, but it is nevertheless possible and you can actually tab to such a link.
Unfortunately, the gecko_ia2 backend does not render these empty link objects into the text at all; i.e. they have a length of 0 characters. This causes two problems:
- The user cannot access the link by cursoring in the virtual buffer, but pressing k before the link will jump to the supposed start location of the link and say "blank".
- If the last rendered element in a document is an empty link, links list will cause a crash in Firefox and a lockup in NVDA.
- This is because the start offset is actually one past the end of the buffer. When the iterator tries to check for a further link, it passes this invalid offset to the buffer and causes a crash.
- The iterator could perform bounds checking to ensure this doesn't happen, but I'm wondering whether this should be done in storage to prevent similar crashes.
Proposed Solutions
- The gecko_ia2 backend could expose empty links as a single space character, similar to the way other empty elements such as graphics and checkboxes are exposed. I think this is the preferred solution.
- The NVDA code to jump to links and the node iterator could ignore 0 length nodes. This would also require the bounds checking described above, either in NVDA or storage.
Test Cases
Reported by jteh on 2008-03-18 23:15
It is possible to have a link with no content, like so:
This is pretty silly, but it is nevertheless possible and you can actually tab to such a link.
Unfortunately, the gecko_ia2 backend does not render these empty link objects into the text at all; i.e. they have a length of 0 characters. This causes two problems:
Proposed Solutions
Test Cases