Fixed character/word navigation inside links.
This commit is contained in:
1 parent
396efbd7c5
commit
ab14244404
12 files changed
+213
-12
No files matched your search
@@ -60,6 +60,12 @@ func TestNativeBrowserNamedLinks(t *testing.T) {
|
||||
text string
|
||||
}{
|
||||
{review.CaretNextLine, "Example Game 2 copies"},
|
||||
{review.CaretNextCharacter, "x"},
|
||||
{review.CaretPreviousCharacter, "E"},
|
||||
{review.CaretNextWord, "Example"},
|
||||
{review.CaretNextWord, "Game"},
|
||||
{review.CaretLineEnd, "s"},
|
||||
{review.CaretLineStart, "E"},
|
||||
{review.CaretNextLine, "Ordinary multiline link"},
|
||||
{review.CaretNextCharacter, "r"},
|
||||
{review.CaretNextWord, "Ordinary"},
|
||||
@@ -101,7 +107,12 @@ func TestNativeBrowserNamedLinks(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var username, emoji atspi.ObjectReference
|
||||
var labelOnly atspi.ObjectReference
|
||||
for _, node := range document.Nodes {
|
||||
if node.Snapshot.Role == "link" && node.Snapshot.Name == "Example Info Page" {
|
||||
labelOnly = node.Reference
|
||||
t.Logf("label-only native link: explicit=%t count=%d children=%d", node.Snapshot.ExplicitName, node.Snapshot.CharacterCount, len(node.Children))
|
||||
}
|
||||
if node.Snapshot.Role != "static" {
|
||||
continue
|
||||
}
|
||||
@@ -112,6 +123,24 @@ func TestNativeBrowserNamedLinks(t *testing.T) {
|
||||
emoji = node.Reference
|
||||
}
|
||||
}
|
||||
if !labelOnly.Valid() {
|
||||
t.Fatal("label-only link missing")
|
||||
}
|
||||
if _, err := cursor.SyncFocus(ctx, labelOnly.ID()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for _, want := range []rune("xample Info Page.") {
|
||||
move, err := cursor.MoveCaret(ctx, adapter, review.CaretNextCharacter)
|
||||
if err != nil || !move.Moved || move.Text != string(want) {
|
||||
t.Fatalf("label-only character: %+v, %v; want %q", move, err, want)
|
||||
}
|
||||
}
|
||||
for _, want := range []rune("egaP ofnI elpmaxE") {
|
||||
move, err := cursor.MoveCaret(ctx, adapter, review.CaretPreviousCharacter)
|
||||
if err != nil || !move.Moved || move.Text != string(want) {
|
||||
t.Fatalf("reverse label-only character: %+v, %v; want %q", move, err, want)
|
||||
}
|
||||
}
|
||||
if !username.Valid() || !emoji.Valid() {
|
||||
t.Fatal("separate display-name and emoji text objects missing")
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user