author | Alexander Surkov <surkov.alexander@gmail.com> |
Tue, 07 May 2013 18:18:37 +0900 | |
changeset 131066 | 1d57bd69b662303febeed79ee24ab047593d4162 |
parent 131065 | 081ebf4e0886a6a24ebaabb8b9fffe7bf5e3682b |
child 131067 | 357af4877abd85e42907dee3b07aedabb0187e62 |
push id | 27672 |
push user | surkov.alexander@gmail.com |
push date | Tue, 07 May 2013 09:17:18 +0000 |
treeherder | mozilla-inbound@1d57bd69b662 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | tbsaunde |
bugs | 860013 |
milestone | 23.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/accessible/src/generic/HyperTextAccessible.cpp +++ b/accessible/src/generic/HyperTextAccessible.cpp @@ -1079,18 +1079,21 @@ HyperTextAccessible::GetTextAtOffset(int NS_OK : NS_ERROR_INVALID_ARG; case BOUNDARY_WORD_START: *aEndOffset = FindWordBoundary(offset, eDirNext, eStartWord); *aStartOffset = FindWordBoundary(*aEndOffset, eDirPrevious, eStartWord); return GetText(*aStartOffset, *aEndOffset, aText); case BOUNDARY_WORD_END: - *aStartOffset = FindWordBoundary(offset, eDirPrevious, eEndWord); - *aEndOffset = FindWordBoundary(*aStartOffset, eDirNext, eEndWord); + // Ignore the spec and follow what WebKitGtk does because Orca expects it, + // i.e. return a next word at word end offset of the current word + // (WebKitGtk behavior) instead the current word (AKT spec). + *aEndOffset = FindWordBoundary(offset, eDirNext, eEndWord); + *aStartOffset = FindWordBoundary(*aEndOffset, eDirPrevious, eEndWord); return GetText(*aStartOffset, *aEndOffset, aText); case BOUNDARY_LINE_START: case BOUNDARY_LINE_END: case BOUNDARY_ATTRIBUTE_RANGE: return GetTextHelper(eGetAt, aBoundaryType, aOffset, aStartOffset, aEndOffset, aText);
--- a/accessible/tests/mochitest/text/test_multiline.html +++ b/accessible/tests/mochitest/text/test_multiline.html @@ -331,29 +331,19 @@ "editable", kOk, kOk, kOk, "editablebr", kTodo, kTodo, kTodo, "textarea", kOk, kOk, kOk); testTextAtOffset(9, BOUNDARY_WORD_START, "two ", 9, 13, IDs); testTextAtOffset(13, BOUNDARY_WORD_START, "words\n", 13, 19, IDs); // BOUNDARY_WORD_END testTextAtOffset(0, BOUNDARY_WORD_END, "oneword", 0, 7, IDs); - testTextAtOffset(8, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, - "div", kOk, kOk, kOk, - "divbr", kTodo, kTodo, kTodo, - "editable", kOk, kOk, kOk, - "editablebr", kTodo, kTodo, kTodo, - "textarea", kOk, kOk, kOk); - testTextAtOffset(9, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, - "div", kOk, kOk, kOk, - "divbr", kTodo, kTodo, kTodo, - "editable", kOk, kOk, kOk, - "editablebr", kTodo, kTodo, kTodo, - "textarea", kOk, kOk, kOk); - testTextAtOffset(12, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, IDs); + testTextAtOffset(8, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, IDs); + testTextAtOffset(9, BOUNDARY_WORD_END, "\n\ntwo", 7, 12, IDs); + testTextAtOffset(12, BOUNDARY_WORD_END, " words", 12, 18, IDs); testTextAtOffset(13, BOUNDARY_WORD_END, " words", 12, 18, "div", kOk, kOk, kOk, "divbr", kOk, kOk, kOk, "editable", kOk, kOk, kOk, "editablebr", kOk, kOk, kOk, "textarea", kOk, kOk, kOk); // BOUNDARY_LINE_START
--- a/accessible/tests/mochitest/text/test_singleline.html +++ b/accessible/tests/mochitest/text/test_singleline.html @@ -310,20 +310,20 @@ testTextAtOffset(9, BOUNDARY_WORD_START, "friend", 9, 15, IDs); testTextAtOffset(10, BOUNDARY_WORD_START, "friend", 9, 15, IDs); testTextAtOffset(14, BOUNDARY_WORD_START, "friend", 9, 15, IDs); testTextAtOffset(15, BOUNDARY_WORD_START, "friend", 9, 15, IDs); // BOUNDARY_WORD_END testTextAtOffset(0, BOUNDARY_WORD_END, "hello", 0, 5, IDs); testTextAtOffset(1, BOUNDARY_WORD_END, "hello", 0, 5, IDs); - testTextAtOffset(5, BOUNDARY_WORD_END, "hello", 0, 5, IDs); + testTextAtOffset(5, BOUNDARY_WORD_END, " my", 5, 8, IDs); testTextAtOffset(6, BOUNDARY_WORD_END, " my", 5, 8, IDs); testTextAtOffset(7, BOUNDARY_WORD_END, " my", 5, 8, IDs); - testTextAtOffset(8, BOUNDARY_WORD_END, " my", 5, 8, IDs); + testTextAtOffset(8, BOUNDARY_WORD_END, " friend", 8, 15, IDs); testTextAtOffset(9, BOUNDARY_WORD_END, " friend", 8, 15, IDs); testTextAtOffset(10, BOUNDARY_WORD_END, " friend", 8, 15, IDs); testTextAtOffset(14, BOUNDARY_WORD_END, " friend", 8, 15, IDs); testTextAtOffset(15, BOUNDARY_WORD_END, " friend", 8, 15, IDs); // BOUNDARY_LINE_START testTextAtOffset(0, BOUNDARY_LINE_START, "hello my friend", 0, 15, "input", kOk, kOk, kOk,
--- a/accessible/tests/mochitest/text/test_whitespaces.html +++ b/accessible/tests/mochitest/text/test_whitespaces.html @@ -337,30 +337,31 @@ "input", kOk, kOk, kOk, "div", kOk, kOk, kOk, "editable", kOk, kOk, kOk, "textarea", kTodo, kOk, kTodo); // BOUNDARY_WORD_END testTextAtOffset(0, BOUNDARY_WORD_END, "Brave", 0, 5, IDs); testTextAtOffset(4, BOUNDARY_WORD_END, "Brave", 0, 5, IDs); - testTextAtOffset(5, BOUNDARY_WORD_END, "Brave", 0, 5, IDs); + testTextAtOffset(5, BOUNDARY_WORD_END, " Sir", 5, 9, IDs); testTextAtOffset(6, BOUNDARY_WORD_END, " Sir", 5, 9, IDs); testTextAtOffset(8, BOUNDARY_WORD_END, " Sir", 5, 9, IDs); - testTextAtOffset(9, BOUNDARY_WORD_END, " Sir", 5, 9, IDs); + testTextAtOffset(9, BOUNDARY_WORD_END, " Robin", 9, 16, IDs); testTextAtOffset(10, BOUNDARY_WORD_END, " Robin", 9, 16, IDs); testTextAtOffset(11, BOUNDARY_WORD_END, " Robin", 9, 16, IDs); testTextAtOffset(15, BOUNDARY_WORD_END, " Robin", 9, 16, IDs); - testTextAtOffset(16, BOUNDARY_WORD_END, " Robin", 9, 16, IDs); + testTextAtOffset(16, BOUNDARY_WORD_END, " ran", 16, 22, IDs); testTextAtOffset(17, BOUNDARY_WORD_END, " ran", 16, 22, IDs); testTextAtOffset(18, BOUNDARY_WORD_END, " ran", 16, 22, IDs); testTextAtOffset(19, BOUNDARY_WORD_END, " ran", 16, 22, IDs); testTextAtOffset(20, BOUNDARY_WORD_END, " ran", 16, 22, IDs); testTextAtOffset(21, BOUNDARY_WORD_END, " ran", 16, 22, IDs); - testTextAtOffset(22, BOUNDARY_WORD_END, " ran", 16, 22, IDs); + testTextAtOffset(22, BOUNDARY_WORD_END, " ran", 16, 22, ["input", "div", "editable"]); + testTextAtOffset(22, BOUNDARY_WORD_END, " ran\n", 16, 23, [ "textarea" ]); SimpleTest.finish(); } SimpleTest.waitForExplicitFinish(); addA11yLoadEvent(doTest); </script> </head>