Skip to content

Commit ed1e36c

Browse files
Doug Russellwebkit-commit-queue
authored andcommitted
AX: setting focus via accessibility object needs to set isSynchronizing in resulting selection intent
https://bugs.webkit.org/show_bug.cgi?id=144489 Patch by Doug Russell <d_russell@apple.com> on 2015-05-04 Reviewed by Chris Fleizach. Resolves infinite looping when navigating rapidly between controls with the search API and then focusing on the returned control. Remove isSynchronizing flag from AXTextStateChangeIntent and put it on AXObjectCache. Move AXTextStateChangeIntent logic in AccessibilityRenderObject into a helper method. Call new AXTextStateChangeIntent helper from AccessibilityRenderObject::setFocus(). Add support for setSelectedVisibleTextRange() in accessibility tests. Source/WebCore: Test: platform/mac/accessibility/selection-sync.html * accessibility/AXObjectCache.cpp: (WebCore::AXObjectCache::showIntent): (WebCore::AXObjectCache::setTextSelectionIntent): (WebCore::AXObjectCache::setIsSynchronizingSelection): (WebCore::AXObjectCache::postTextStateChangeNotification): * accessibility/AXObjectCache.h: * accessibility/AXTextStateChangeIntent.h: (WebCore::AXTextStateChangeIntent::AXTextStateChangeIntent): * accessibility/AccessibilityRenderObject.cpp: (WebCore::setTextSelectionIntent): (WebCore::AccessibilityRenderObject::setSelectedTextRange): (WebCore::AccessibilityRenderObject::setFocused): (WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange): (WebCore::AccessibilityRenderObject::boundsForVisiblePositionRange): Deleted. * accessibility/mac/AXObjectCacheMac.mm: (WebCore::AXObjectCache::postTextStateChangePlatformNotification): Tools: * DumpRenderTree/AccessibilityUIElement.cpp: (setSelectedVisibleTextRangeCallback): (AccessibilityUIElement::setSelectedVisibleTextRange): (AccessibilityUIElement::getJSClass): (AccessibilityUIElement::textMarkerForIndex): Deleted. * DumpRenderTree/AccessibilityUIElement.h: * DumpRenderTree/mac/AccessibilityUIElementMac.mm: (AccessibilityUIElement::setSelectedVisibleTextRange): * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp: (WTR::AccessibilityUIElement::setSelectedVisibleTextRange): (WTR::AccessibilityUIElement::setSelectedTextRange): Deleted. * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h: * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl: * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: (WTR::AccessibilityUIElement::setSelectedVisibleTextRange): * WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm: (WTR::AccessibilityUIElement::setSelectedVisibleTextRange): * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: (WTR::AccessibilityUIElement::setSelectedVisibleTextRange): LayoutTests: * platform/mac/accessibility/selection-sync-expected.txt: Added. * platform/mac/accessibility/selection-sync.html: Added. Canonical link: https://commits.webkit.org/162618@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@183783 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 109673b commit ed1e36c

19 files changed

Lines changed: 283 additions & 22 deletions

LayoutTests/ChangeLog

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
2015-05-04 Doug Russell <d_russell@apple.com>
2+
3+
AX: setting focus via accessibility object needs to set isSynchronizing in resulting selection intent
4+
https://bugs.webkit.org/show_bug.cgi?id=144489
5+
6+
Reviewed by Chris Fleizach.
7+
8+
Resolves infinite looping when navigating rapidly between controls with the search API and then focusing
9+
on the returned control.
10+
Remove isSynchronizing flag from AXTextStateChangeIntent and put it on AXObjectCache.
11+
Move AXTextStateChangeIntent logic in AccessibilityRenderObject into a helper method.
12+
Call new AXTextStateChangeIntent helper from AccessibilityRenderObject::setFocus().
13+
Add support for setSelectedVisibleTextRange() in accessibility tests.
14+
15+
* platform/mac/accessibility/selection-sync-expected.txt: Added.
16+
* platform/mac/accessibility/selection-sync.html: Added.
17+
118
2015-05-04 Chris Dumez <cdumez@apple.com>
219

320
Crash at com.apple.WebKit.WebContent at com.apple.WebCore: WebCore::createWindow + 185
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
one two three. four five six.
2+
3+
This tests that selection changes originating from accessibility API include AXTextStateSync=true.
4+
5+
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
6+
7+
8+
PASS addedNotification is true
9+
PASS successfullyParsed is true
10+
11+
TEST COMPLETE
12+
PASS results[resultIndex]["AXTextStateChangeType"] is AXTextStateChangeTypeSelectionMove
13+
PASS results[resultIndex]["AXTextSelectionDirection"] is AXTextSelectionDirectionDiscontiguous
14+
PASS results[resultIndex]["AXTextStateSync"] is true
15+
PASS results[resultIndex]["AXTextStateChangeType"] is AXTextStateChangeTypeSelectionMove
16+
PASS results[resultIndex]["AXTextSelectionDirection"] is AXTextSelectionDirectionDiscontiguous
17+
PASS results[resultIndex]["AXTextStateSync"] is true
18+
PASS results[resultIndex]["AXTextStateChangeType"] is AXTextStateChangeTypeSelectionExtend
19+
PASS results[resultIndex]["AXTextSelectionDirection"] is AXTextSelectionDirectionDiscontiguous
20+
PASS results[resultIndex]["AXTextStateSync"] is true
21+
PASS results[resultIndex]["AXTextStateChangeType"] is AXTextStateChangeTypeSelectionMove
22+
PASS results[resultIndex]["AXTextSelectionDirection"] is AXTextSelectionDirectionDiscontiguous
23+
PASS results[resultIndex]["AXTextStateSync"] is true
24+
PASS results[resultIndex]["AXTextStateChangeType"] is AXTextStateChangeTypeSelectionExtend
25+
PASS results[resultIndex]["AXTextSelectionDirection"] is AXTextSelectionDirectionDiscontiguous
26+
PASS results[resultIndex]["AXTextStateSync"] is true
27+
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2+
<html>
3+
<head>
4+
<script src="../../../resources/js-test-pre.js"></script>
5+
</head>
6+
<body id="body">
7+
8+
<div role="textbox" tabindex=0 id="textbox" contenteditable=true>
9+
<p>one two three. four five six.</p>
10+
</div>
11+
12+
<p id="description"></p>
13+
<div id="console"></div>
14+
<div id="notifications"></div>
15+
16+
<script>
17+
18+
description("This tests that selection changes originating from accessibility API include AXTextStateSync=true.");
19+
20+
var AXTextStateChangeTypeSelectionMove = 2;
21+
var AXTextStateChangeTypeSelectionExtend = AXTextStateChangeTypeSelectionMove + 1;
22+
23+
var AXTextSelectionDirectionDiscontiguous = 5;
24+
25+
var webArea = 0;
26+
var count = 0;
27+
var results = [];
28+
var resultIndex = 0;
29+
function notificationCallback(notification, userInfo) {
30+
if (notification == "AXSelectedTextChanged") {
31+
count++;
32+
if (userInfo)
33+
results.push(userInfo);
34+
if (count == 5) {
35+
shouldBe("results[resultIndex][\"AXTextStateChangeType\"]", "AXTextStateChangeTypeSelectionMove");
36+
shouldBe("results[resultIndex][\"AXTextSelectionDirection\"]", "AXTextSelectionDirectionDiscontiguous");
37+
shouldBe("results[resultIndex][\"AXTextStateSync\"]", "true");
38+
39+
resultIndex++;
40+
shouldBe("results[resultIndex][\"AXTextStateChangeType\"]", "AXTextStateChangeTypeSelectionMove");
41+
shouldBe("results[resultIndex][\"AXTextSelectionDirection\"]", "AXTextSelectionDirectionDiscontiguous");
42+
shouldBe("results[resultIndex][\"AXTextStateSync\"]", "true");
43+
44+
resultIndex++;
45+
shouldBe("results[resultIndex][\"AXTextStateChangeType\"]", "AXTextStateChangeTypeSelectionExtend");
46+
shouldBe("results[resultIndex][\"AXTextSelectionDirection\"]", "AXTextSelectionDirectionDiscontiguous");
47+
shouldBe("results[resultIndex][\"AXTextStateSync\"]", "true");
48+
49+
resultIndex++;
50+
shouldBe("results[resultIndex][\"AXTextStateChangeType\"]", "AXTextStateChangeTypeSelectionMove");
51+
shouldBe("results[resultIndex][\"AXTextSelectionDirection\"]", "AXTextSelectionDirectionDiscontiguous");
52+
shouldBe("results[resultIndex][\"AXTextStateSync\"]", "true");
53+
54+
resultIndex++;
55+
shouldBe("results[resultIndex][\"AXTextStateChangeType\"]", "AXTextStateChangeTypeSelectionExtend");
56+
shouldBe("results[resultIndex][\"AXTextSelectionDirection\"]", "AXTextSelectionDirectionDiscontiguous");
57+
shouldBe("results[resultIndex][\"AXTextStateSync\"]", "true");
58+
59+
webArea.removeNotificationListener();
60+
window.testRunner.notifyDone();
61+
}
62+
}
63+
}
64+
65+
if (window.accessibilityController) {
66+
window.testRunner.waitUntilDone();
67+
68+
accessibilityController.enableEnhancedAccessibility(true);
69+
70+
webArea = accessibilityController.rootElement.childAtIndex(0);
71+
var addedNotification = webArea.addNotificationListener(notificationCallback);
72+
shouldBe("addedNotification", "true");
73+
74+
textbox = document.getElementById("textbox");
75+
var axTextbox = accessibilityController.accessibleElementById("textbox");
76+
axTextbox.takeFocus();
77+
axTextbox.setSelectedTextRange(4,0);
78+
axTextbox.setSelectedTextRange(0,3);
79+
80+
var markerThree = axTextbox.textMarkerForIndex(3);
81+
var markerFour = axTextbox.textMarkerForIndex(4);
82+
var moveRange = axTextbox.textMarkerRangeForMarkers(markerThree, markerThree);
83+
var extendRange = axTextbox.textMarkerRangeForMarkers(markerThree, markerFour);
84+
webArea.setSelectedVisibleTextRange(moveRange);
85+
webArea.setSelectedVisibleTextRange(extendRange);
86+
}
87+
88+
</script>
89+
90+
<script src="../../../resources/js-test-post.js"></script>
91+
</body>
92+
</html>

Source/WebCore/ChangeLog

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,36 @@
1+
2015-05-04 Doug Russell <d_russell@apple.com>
2+
3+
AX: setting focus via accessibility object needs to set isSynchronizing in resulting selection intent
4+
https://bugs.webkit.org/show_bug.cgi?id=144489
5+
6+
Reviewed by Chris Fleizach.
7+
8+
Resolves infinite looping when navigating rapidly between controls with the search API and then focusing
9+
on the returned control.
10+
Remove isSynchronizing flag from AXTextStateChangeIntent and put it on AXObjectCache.
11+
Move AXTextStateChangeIntent logic in AccessibilityRenderObject into a helper method.
12+
Call new AXTextStateChangeIntent helper from AccessibilityRenderObject::setFocus().
13+
Add support for setSelectedVisibleTextRange() in accessibility tests.
14+
15+
Test: platform/mac/accessibility/selection-sync.html
16+
17+
* accessibility/AXObjectCache.cpp:
18+
(WebCore::AXObjectCache::showIntent):
19+
(WebCore::AXObjectCache::setTextSelectionIntent):
20+
(WebCore::AXObjectCache::setIsSynchronizingSelection):
21+
(WebCore::AXObjectCache::postTextStateChangeNotification):
22+
* accessibility/AXObjectCache.h:
23+
* accessibility/AXTextStateChangeIntent.h:
24+
(WebCore::AXTextStateChangeIntent::AXTextStateChangeIntent):
25+
* accessibility/AccessibilityRenderObject.cpp:
26+
(WebCore::setTextSelectionIntent):
27+
(WebCore::AccessibilityRenderObject::setSelectedTextRange):
28+
(WebCore::AccessibilityRenderObject::setFocused):
29+
(WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange):
30+
(WebCore::AccessibilityRenderObject::boundsForVisiblePositionRange): Deleted.
31+
* accessibility/mac/AXObjectCacheMac.mm:
32+
(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
33+
134
2015-05-04 Eric Carlson <eric.carlson@apple.com>
235

336
[Mac] Audio-only files should not have a device picker

Source/WebCore/accessibility/AXObjectCache.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -984,16 +984,19 @@ void AXObjectCache::showIntent(const AXTextStateChangeIntent &intent)
984984
}
985985
break;
986986
}
987-
if (intent.isSynchronizing)
988-
dataLog("-Sync");
989987
dataLog("\n");
990988
}
991989
#endif
992990

993-
void AXObjectCache::setTextSelectionIntent(AXTextStateChangeIntent intent)
991+
void AXObjectCache::setTextSelectionIntent(const AXTextStateChangeIntent& intent)
994992
{
995993
m_textSelectionIntent = intent;
996994
}
995+
996+
void AXObjectCache::setIsSynchronizingSelection(bool isSynchronizing)
997+
{
998+
m_isSynchronizingSelection = isSynchronizing;
999+
}
9971000

9981001
static bool isPasswordFieldOrContainedByPasswordField(AccessibilityObject* object)
9991002
{
@@ -1015,14 +1018,15 @@ void AXObjectCache::postTextStateChangeNotification(Node* node, const AXTextStat
10151018
object = object->observableObject();
10161019
}
10171020

1018-
postTextStateChangePlatformNotification(object, (intent.type == AXTextStateChangeTypeUnknown) ? m_textSelectionIntent : intent, selection);
1021+
postTextStateChangePlatformNotification(object, (intent.type == AXTextStateChangeTypeUnknown || m_isSynchronizingSelection) ? m_textSelectionIntent : intent, selection);
10191022
#else
10201023
postNotification(node->renderer(), AXObjectCache::AXSelectedTextChanged, TargetObservableParent);
10211024
UNUSED_PARAM(intent);
10221025
UNUSED_PARAM(selection);
10231026
#endif
10241027

10251028
setTextSelectionIntent(AXTextStateChangeIntent());
1029+
setIsSynchronizingSelection(false);
10261030
}
10271031

10281032
void AXObjectCache::postTextStateChangeNotification(Node* node, AXTextEditType type, const String& text, const VisiblePosition& position)

Source/WebCore/accessibility/AXObjectCache.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,8 @@ class AXObjectCache {
199199
void showIntent(const AXTextStateChangeIntent&);
200200
#endif
201201

202-
void setTextSelectionIntent(AXTextStateChangeIntent);
202+
void setTextSelectionIntent(const AXTextStateChangeIntent&);
203+
void setIsSynchronizingSelection(bool);
203204

204205
void postTextStateChangeNotification(Node*, AXTextEditType, const String&, const VisiblePosition&);
205206
void postTextReplacementNotification(Node*, AXTextEditType deletionType, const String& deletedText, AXTextEditType insertionType, const String& insertedText, const VisiblePosition&);
@@ -285,6 +286,7 @@ class AXObjectCache {
285286
ListHashSet<RefPtr<AccessibilityObject>> m_passwordNotificationsToPost;
286287

287288
AXTextStateChangeIntent m_textSelectionIntent;
289+
bool m_isSynchronizingSelection { false };
288290
};
289291

290292
class AXAttributeCacheEnabler

Source/WebCore/accessibility/AXTextStateChangeIntent.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ struct AXTextStateChangeIntent {
7878
AXTextSelection selection;
7979
AXTextEditType change;
8080
};
81-
bool isSynchronizing { false };
8281

8382
AXTextStateChangeIntent(AXTextStateChangeType type = AXTextStateChangeTypeUnknown, AXTextSelection selection = AXTextSelection())
8483
: type(type)
@@ -89,14 +88,6 @@ struct AXTextStateChangeIntent {
8988
: type(AXTextStateChangeTypeEdit)
9089
, change(change)
9190
{ }
92-
93-
AXTextStateChangeIntent(AXTextStateChangeType type, bool isSynchronizing)
94-
: type(type)
95-
, selection()
96-
, isSynchronizing(isSynchronizing)
97-
{
98-
ASSERT(type == AXTextStateChangeTypeSelectionMove || type == AXTextStateChangeTypeSelectionExtend);
99-
}
10091
};
10192

10293
}

Source/WebCore/accessibility/AccessibilityRenderObject.cpp

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1488,20 +1488,29 @@ PlainTextRange AccessibilityRenderObject::selectedTextRange() const
14881488
return documentBasedSelectedTextRange();
14891489
}
14901490

1491+
static void setTextSelectionIntent(const AccessibilityRenderObject& renderObject, AXTextStateChangeType type)
1492+
{
1493+
AXObjectCache* cache = renderObject.axObjectCache();
1494+
if (!cache)
1495+
return;
1496+
AXTextStateChangeIntent intent(type, AXTextSelection { AXTextSelectionDirectionDiscontiguous, AXTextSelectionGranularityUnknown });
1497+
cache->setTextSelectionIntent(intent);
1498+
cache->setIsSynchronizingSelection(true);
1499+
}
1500+
14911501
void AccessibilityRenderObject::setSelectedTextRange(const PlainTextRange& range)
14921502
{
14931503
if (isNativeTextControl()) {
1494-
if (AXObjectCache* cache = axObjectCache())
1495-
cache->setTextSelectionIntent(AXTextStateChangeIntent(range.length ? AXTextStateChangeTypeSelectionExtend : AXTextStateChangeTypeSelectionMove, true));
1504+
setTextSelectionIntent(*this, range.length ? AXTextStateChangeTypeSelectionExtend : AXTextStateChangeTypeSelectionMove);
14961505
HTMLTextFormControlElement& textControl = downcast<RenderTextControl>(*m_renderer).textFormControlElement();
14971506
textControl.setSelectionRange(range.start, range.start + range.length);
14981507
return;
14991508
}
15001509

15011510
Node* node = m_renderer->node();
15021511
VisibleSelection newSelection(Position(node, range.start, Position::PositionIsOffsetInAnchor), Position(node, range.start + range.length, Position::PositionIsOffsetInAnchor), DOWNSTREAM);
1503-
AXTextStateChangeIntent newIntent(range.length ? AXTextStateChangeTypeSelectionExtend : AXTextStateChangeTypeSelectionMove, true);
1504-
m_renderer->frame().selection().setSelection(newSelection, FrameSelection::defaultSetSelectionOptions(), newIntent);
1512+
setTextSelectionIntent(*this, range.length ? AXTextStateChangeTypeSelectionExtend : AXTextStateChangeTypeSelectionMove);
1513+
m_renderer->frame().selection().setSelection(newSelection, FrameSelection::defaultSetSelectionOptions());
15051514
}
15061515

15071516
URL AccessibilityRenderObject::url() const
@@ -1655,6 +1664,7 @@ void AccessibilityRenderObject::setFocused(bool on)
16551664
if (document->focusedElement() == node)
16561665
document->setFocusedElement(nullptr);
16571666

1667+
setTextSelectionIntent(*this, AXTextStateChangeTypeSelectionMove);
16581668
downcast<Element>(*node).focus();
16591669
}
16601670

@@ -1969,13 +1979,13 @@ void AccessibilityRenderObject::setSelectedVisiblePositionRange(const VisiblePos
19691979

19701980
// make selection and tell the document to use it. if it's zero length, then move to that position
19711981
if (range.start == range.end) {
1972-
if (AXObjectCache* cache = axObjectCache())
1973-
cache->setTextSelectionIntent(AXTextStateChangeIntent(AXTextStateChangeTypeSelectionMove, true));
1982+
setTextSelectionIntent(*this, AXTextStateChangeTypeSelectionMove);
19741983
m_renderer->frame().selection().moveTo(range.start, UserTriggered);
19751984
}
19761985
else {
1986+
setTextSelectionIntent(*this, AXTextStateChangeTypeSelectionExtend);
19771987
VisibleSelection newSelection = VisibleSelection(range.start, range.end);
1978-
m_renderer->frame().selection().setSelection(newSelection, FrameSelection::defaultSetSelectionOptions(), AXTextStateChangeIntent(AXTextStateChangeTypeSelectionExtend, true));
1988+
m_renderer->frame().selection().setSelection(newSelection, FrameSelection::defaultSetSelectionOptions());
19791989
}
19801990
}
19811991

Source/WebCore/accessibility/mac/AXObjectCacheMac.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ static void AXPostNotificationWithUserInfo(id object, NSString *notification, id
224224
return;
225225

226226
NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] initWithCapacity:5];
227-
if (intent.isSynchronizing)
227+
if (m_isSynchronizingSelection)
228228
[userInfo setObject:[NSNumber numberWithBool:YES] forKey:NSAccessibilityTextStateSyncKey];
229229
if (intent.type != AXTextStateChangeTypeUnknown) {
230230
[userInfo setObject:[NSNumber numberWithInt:intent.type] forKey:NSAccessibilityTextStateChangeTypeKey];

Tools/ChangeLog

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,37 @@
1+
2015-05-04 Doug Russell <d_russell@apple.com>
2+
3+
AX: setting focus via accessibility object needs to set isSynchronizing in resulting selection intent
4+
https://bugs.webkit.org/show_bug.cgi?id=144489
5+
6+
Reviewed by Chris Fleizach.
7+
8+
Resolves infinite looping when navigating rapidly between controls with the search API and then focusing
9+
on the returned control.
10+
Remove isSynchronizing flag from AXTextStateChangeIntent and put it on AXObjectCache.
11+
Move AXTextStateChangeIntent logic in AccessibilityRenderObject into a helper method.
12+
Call new AXTextStateChangeIntent helper from AccessibilityRenderObject::setFocus().
13+
Add support for setSelectedVisibleTextRange() in accessibility tests.
14+
15+
* DumpRenderTree/AccessibilityUIElement.cpp:
16+
(setSelectedVisibleTextRangeCallback):
17+
(AccessibilityUIElement::setSelectedVisibleTextRange):
18+
(AccessibilityUIElement::getJSClass):
19+
(AccessibilityUIElement::textMarkerForIndex): Deleted.
20+
* DumpRenderTree/AccessibilityUIElement.h:
21+
* DumpRenderTree/mac/AccessibilityUIElementMac.mm:
22+
(AccessibilityUIElement::setSelectedVisibleTextRange):
23+
* WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
24+
(WTR::AccessibilityUIElement::setSelectedVisibleTextRange):
25+
(WTR::AccessibilityUIElement::setSelectedTextRange): Deleted.
26+
* WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
27+
* WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
28+
* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
29+
(WTR::AccessibilityUIElement::setSelectedVisibleTextRange):
30+
* WebKitTestRunner/InjectedBundle/ios/AccessibilityUIElementIOS.mm:
31+
(WTR::AccessibilityUIElement::setSelectedVisibleTextRange):
32+
* WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
33+
(WTR::AccessibilityUIElement::setSelectedVisibleTextRange):
34+
135
2015-05-04 Brent Fulgham <bfulgham@apple.com>
236

337
[Win] Implement the "--show-webview" option for Windows

0 commit comments

Comments
 (0)