Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Unified Diff: content/browser/accessibility/browser_accessibility_manager_mac.mm

Issue 1706353002: Added the selected text marker range to the dictionary for the selection change notification (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Now works the first time you start the browser. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/accessibility/browser_accessibility_manager_mac.mm
diff --git a/content/browser/accessibility/browser_accessibility_manager_mac.mm b/content/browser/accessibility/browser_accessibility_manager_mac.mm
index 0edf58462263566159a3d559878d465bf3d0764e..a20578b0393985619e22e9cc3026f7c1516eaf6d 100644
--- a/content/browser/accessibility/browser_accessibility_manager_mac.mm
+++ b/content/browser/accessibility/browser_accessibility_manager_mac.mm
@@ -58,6 +58,8 @@ NSString* const NSAccessibilityLiveRegionChangedNotification =
@"AXLiveRegionChanged";
NSString* const NSAccessibilityMenuItemSelectedNotification =
@"AXMenuItemSelected";
+
+// Attributes used for NSAccessibilitySelectedTextChangedNotification.
NSString* const NSAccessibilityTextStateChangeTypeKey =
@"AXTextStateChangeType";
NSString* const NSAccessibilityTextStateSyncKey = @"AXTextStateSync";
@@ -67,8 +69,9 @@ NSString* const NSAccessibilityTextSelectionGranularity =
@"AXTextSelectionGranularity";
NSString* const NSAccessibilityTextSelectionChangedFocus =
@"AXTextSelectionChangedFocus";
-NSString* const NSAccessibilityTextChangeElement =
- @"AXAccessibilityTextChangeElement";
+NSString* const NSAccessibilitySelectedTextMarkerRangeAttribute =
+ @"AXSelectedTextMarkerRange";
+NSString* const NSAccessibilityTextChangeElement = @"AXTextChangeElement";
} // namespace
@@ -187,10 +190,21 @@ void BrowserAccessibilityManagerMac::NotifyAccessibilityEvent(
// 10.11 or later to notify Voiceover about text selection changes. This
// API has been present on versions of OS X since 10.7 but doesn't
// appear to be needed by Voiceover before version 10.11.
+ // WebKit fires a notification both on the focused object and the root.
NSDictionary* user_info =
GetUserInfoForSelectedTextChangedNotification();
+
+ BrowserAccessibility* focus = GetFocus();
+ if (!focus)
+ return;
NSAccessibilityPostNotificationWithUserInfo(
- native_node, mac_notification, user_info);
+ focus->ToBrowserAccessibilityCocoa(), mac_notification, user_info);
+
+ BrowserAccessibility* root = GetRoot();
+ if (!root)
+ return;
+ NSAccessibilityPostNotificationWithUserInfo(
+ root->ToBrowserAccessibilityCocoa(), mac_notification, user_info);
return;
}
break;
@@ -282,8 +296,8 @@ void BrowserAccessibilityManagerMac::OnAtomicUpdateFinished(
}
// Returns an autoreleased object.
-NSDictionary* BrowserAccessibilityManagerMac::
- GetUserInfoForSelectedTextChangedNotification() {
+NSDictionary*
+BrowserAccessibilityManagerMac::GetUserInfoForSelectedTextChangedNotification() {
NSMutableDictionary* user_info = [[[NSMutableDictionary alloc] init]
autorelease];
[user_info setObject:[NSNumber numberWithBool:YES]
@@ -298,16 +312,19 @@ NSDictionary* BrowserAccessibilityManagerMac::
forKey:NSAccessibilityTextSelectionGranularity];
[user_info setObject:[NSNumber numberWithBool:YES]
forKey:NSAccessibilityTextSelectionChangedFocus];
- // TODO(nektar): Set selected text marker range.
int32_t focus_id = GetTreeData().sel_focus_object_id;
BrowserAccessibility* focus_object = GetFromID(focus_id);
if (focus_object) {
focus_object = focus_object->GetClosestPlatformObject();
auto native_focus_object = focus_object->ToBrowserAccessibilityCocoa();
- if (native_focus_object)
+ if (native_focus_object) {
+ LOG(ERROR) << "Marker range " << ([native_focus_object selectedTextMarkerRange] == nil) << " " << [[native_focus_object role] UTF8String];
Mark Mentovai 2016/02/19 00:33:29 Remove this LOG.
+ [user_info setObject:[native_focus_object selectedTextMarkerRange]
+ forKey:NSAccessibilitySelectedTextMarkerRangeAttribute];
[user_info setObject:native_focus_object
forKey:NSAccessibilityTextChangeElement];
+ }
}
return user_info;

Powered by Google App Engine
This is Rietveld 408576698