| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/accessibility/browser_accessibility_manager_mac.h" | 5 #include "content/browser/accessibility/browser_accessibility_manager_mac.h" |
| 6 | 6 |
| 7 #import "base/logging.h" | 7 #import "base/logging.h" |
| 8 #import "content/browser/accessibility/browser_accessibility_cocoa.h" | 8 #import "content/browser/accessibility/browser_accessibility_cocoa.h" |
| 9 #include "content/common/accessibility_messages.h" | 9 #include "content/common/accessibility_messages.h" |
| 10 | 10 |
| 11 namespace content { | 11 namespace content { |
| 12 | 12 |
| 13 // static | 13 // static |
| 14 BrowserAccessibilityManager* BrowserAccessibilityManager::Create( | 14 BrowserAccessibilityManager* BrowserAccessibilityManager::Create( |
| 15 const AccessibilityNodeData& src, | 15 const ui::AXNodeData& src, |
| 16 BrowserAccessibilityDelegate* delegate, | 16 BrowserAccessibilityDelegate* delegate, |
| 17 BrowserAccessibilityFactory* factory) { | 17 BrowserAccessibilityFactory* factory) { |
| 18 return new BrowserAccessibilityManagerMac(NULL, src, delegate, factory); | 18 return new BrowserAccessibilityManagerMac(NULL, src, delegate, factory); |
| 19 } | 19 } |
| 20 | 20 |
| 21 BrowserAccessibilityManagerMac::BrowserAccessibilityManagerMac( | 21 BrowserAccessibilityManagerMac::BrowserAccessibilityManagerMac( |
| 22 NSView* parent_view, | 22 NSView* parent_view, |
| 23 const AccessibilityNodeData& src, | 23 const ui::AXNodeData& src, |
| 24 BrowserAccessibilityDelegate* delegate, | 24 BrowserAccessibilityDelegate* delegate, |
| 25 BrowserAccessibilityFactory* factory) | 25 BrowserAccessibilityFactory* factory) |
| 26 : BrowserAccessibilityManager(src, delegate, factory), | 26 : BrowserAccessibilityManager(src, delegate, factory), |
| 27 parent_view_(parent_view) { | 27 parent_view_(parent_view) { |
| 28 } | 28 } |
| 29 | 29 |
| 30 // static | 30 // static |
| 31 AccessibilityNodeData BrowserAccessibilityManagerMac::GetEmptyDocument() { | 31 ui::AXNodeData BrowserAccessibilityManagerMac::GetEmptyDocument() { |
| 32 AccessibilityNodeData empty_document; | 32 ui::AXNodeData empty_document; |
| 33 empty_document.id = 0; | 33 empty_document.id = 0; |
| 34 empty_document.role = blink::WebAXRoleRootWebArea; | 34 empty_document.role = ui::AX_ROLE_ROOT_WEB_AREA; |
| 35 empty_document.state = | 35 empty_document.state = |
| 36 1 << blink::WebAXStateReadonly; | 36 1 << ui::AX_STATE_READONLY; |
| 37 return empty_document; | 37 return empty_document; |
| 38 } | 38 } |
| 39 | 39 |
| 40 void BrowserAccessibilityManagerMac::NotifyAccessibilityEvent( | 40 void BrowserAccessibilityManagerMac::NotifyAccessibilityEvent( |
| 41 blink::WebAXEvent event_type, | 41 ui::AXEvent event_type, |
| 42 BrowserAccessibility* node) { | 42 BrowserAccessibility* node) { |
| 43 if (!node->IsNative()) | 43 if (!node->IsNative()) |
| 44 return; | 44 return; |
| 45 | 45 |
| 46 // Refer to AXObjectCache.mm (webkit). | 46 // Refer to AXObjectCache.mm (webkit). |
| 47 NSString* event_id = @""; | 47 NSString* event_id = @""; |
| 48 switch (event_type) { | 48 switch (event_type) { |
| 49 case blink::WebAXEventActiveDescendantChanged: | 49 case ui::AX_EVENT_ACTIVEDESCENDANTCHANGED: |
| 50 if (node->role() == blink::WebAXRoleTree) | 50 if (node->role() == ui::AX_ROLE_TREE) |
| 51 event_id = NSAccessibilitySelectedRowsChangedNotification; | 51 event_id = NSAccessibilitySelectedRowsChangedNotification; |
| 52 else | 52 else |
| 53 event_id = NSAccessibilityFocusedUIElementChangedNotification; | 53 event_id = NSAccessibilityFocusedUIElementChangedNotification; |
| 54 break; | 54 break; |
| 55 case blink::WebAXEventAlert: | 55 case ui::AX_EVENT_ALERT: |
| 56 // Not used on Mac. | 56 // Not used on Mac. |
| 57 return; | 57 return; |
| 58 case blink::WebAXEventBlur: | 58 case ui::AX_EVENT_BLUR: |
| 59 // A no-op on Mac. | 59 // A no-op on Mac. |
| 60 return; | 60 return; |
| 61 case blink::WebAXEventCheckedStateChanged: | 61 case ui::AX_EVENT_CHECKED_STATE_CHANGED: |
| 62 // Not used on Mac. | 62 // Not used on Mac. |
| 63 return; | 63 return; |
| 64 case blink::WebAXEventChildrenChanged: | 64 case ui::AX_EVENT_CHILDREN_CHANGED: |
| 65 // TODO(dtseng): no clear equivalent on Mac. | 65 // TODO(dtseng): no clear equivalent on Mac. |
| 66 return; | 66 return; |
| 67 case blink::WebAXEventFocus: | 67 case ui::AX_EVENT_FOCUS: |
| 68 event_id = NSAccessibilityFocusedUIElementChangedNotification; | 68 event_id = NSAccessibilityFocusedUIElementChangedNotification; |
| 69 break; | 69 break; |
| 70 case blink::WebAXEventLayoutComplete: | 70 case ui::AX_EVENT_LAYOUT_COMPLETE: |
| 71 event_id = @"AXLayoutComplete"; | 71 event_id = @"AXLayoutComplete"; |
| 72 break; | 72 break; |
| 73 case blink::WebAXEventLiveRegionChanged: | 73 case ui::AX_EVENT_LIVE_REGION_CHANGED: |
| 74 event_id = @"AXLiveRegionChanged"; | 74 event_id = @"AXLiveRegionChanged"; |
| 75 break; | 75 break; |
| 76 case blink::WebAXEventLoadComplete: | 76 case ui::AX_EVENT_LOAD_COMPLETE: |
| 77 event_id = @"AXLoadComplete"; | 77 event_id = @"AXLoadComplete"; |
| 78 break; | 78 break; |
| 79 case blink::WebAXEventMenuListValueChanged: | 79 case ui::AX_EVENT_MENU_LIST_VALUE_CHANGED: |
| 80 // Not used on Mac. | 80 // Not used on Mac. |
| 81 return; | 81 return; |
| 82 case blink::WebAXEventShow: | 82 case ui::AX_EVENT_SHOW: |
| 83 // Not used on Mac. | 83 // Not used on Mac. |
| 84 return; | 84 return; |
| 85 case blink::WebAXEventHide: | 85 case ui::AX_EVENT_HIDE: |
| 86 // Not used on Mac. | 86 // Not used on Mac. |
| 87 return; | 87 return; |
| 88 case blink::WebAXEventRowCountChanged: | 88 case ui::AX_EVENT_ROW_COUNT_CHANGED: |
| 89 event_id = NSAccessibilityRowCountChangedNotification; | 89 event_id = NSAccessibilityRowCountChangedNotification; |
| 90 break; | 90 break; |
| 91 case blink::WebAXEventRowCollapsed: | 91 case ui::AX_EVENT_ROW_COLLAPSED: |
| 92 event_id = @"AXRowCollapsed"; | 92 event_id = @"AXRowCollapsed"; |
| 93 break; | 93 break; |
| 94 case blink::WebAXEventRowExpanded: | 94 case ui::AX_EVENT_ROW_EXPANDED: |
| 95 event_id = @"AXRowExpanded"; | 95 event_id = @"AXRowExpanded"; |
| 96 break; | 96 break; |
| 97 case blink::WebAXEventScrolledToAnchor: | 97 case ui::AX_EVENT_SCROLLED_TO_ANCHOR: |
| 98 // Not used on Mac. | 98 // Not used on Mac. |
| 99 return; | 99 return; |
| 100 case blink::WebAXEventSelectedChildrenChanged: | 100 case ui::AX_EVENT_SELECTED_CHILDREN_CHANGED: |
| 101 event_id = NSAccessibilitySelectedChildrenChangedNotification; | 101 event_id = NSAccessibilitySelectedChildrenChangedNotification; |
| 102 break; | 102 break; |
| 103 case blink::WebAXEventSelectedTextChanged: | 103 case ui::AX_EVENT_SELECTED_TEXT_CHANGED: |
| 104 event_id = NSAccessibilitySelectedTextChangedNotification; | 104 event_id = NSAccessibilitySelectedTextChangedNotification; |
| 105 break; | 105 break; |
| 106 case blink::WebAXEventTextInserted: | 106 case ui::AX_EVENT_TEXT_INSERTED: |
| 107 // Not used on Mac. | 107 // Not used on Mac. |
| 108 return; | 108 return; |
| 109 case blink::WebAXEventTextRemoved: | 109 case ui::AX_EVENT_TEXT_REMOVED: |
| 110 // Not used on Mac. | 110 // Not used on Mac. |
| 111 return; | 111 return; |
| 112 case blink::WebAXEventValueChanged: | 112 case ui::AX_EVENT_VALUE_CHANGED: |
| 113 event_id = NSAccessibilityValueChangedNotification; | 113 event_id = NSAccessibilityValueChangedNotification; |
| 114 break; | 114 break; |
| 115 case blink::WebAXEventAriaAttributeChanged: | 115 case ui::AX_EVENT_ARIA_ATTRIBUTE_CHANGED: |
| 116 // Not used on Mac. | 116 // Not used on Mac. |
| 117 return; | 117 return; |
| 118 case blink::WebAXEventAutocorrectionOccured: | 118 case ui::AX_EVENT_AUTOCORRECTION_OCCURED: |
| 119 // Not used on Mac. | 119 // Not used on Mac. |
| 120 return; | 120 return; |
| 121 case blink::WebAXEventInvalidStatusChanged: | 121 case ui::AX_EVENT_INVALID_STATUS_CHANGED: |
| 122 // Not used on Mac. | 122 // Not used on Mac. |
| 123 return; | 123 return; |
| 124 case blink::WebAXEventLocationChanged: | 124 case ui::AX_EVENT_LOCATION_CHANGED: |
| 125 // Not used on Mac. | 125 // Not used on Mac. |
| 126 return; | 126 return; |
| 127 case blink::WebAXEventMenuListItemSelected: | 127 case ui::AX_EVENT_MENU_LIST_ITEM_SELECTED: |
| 128 // Not used on Mac. | 128 // Not used on Mac. |
| 129 return; | 129 return; |
| 130 case blink::WebAXEventTextChanged: | 130 case ui::AX_EVENT_TEXT_CHANGED: |
| 131 // Not used on Mac. | 131 // Not used on Mac. |
| 132 return; | 132 return; |
| 133 default: | 133 default: |
| 134 LOG(WARNING) << "Unknown accessibility event: " << event_type; | 134 LOG(WARNING) << "Unknown accessibility event: " << event_type; |
| 135 return; | 135 return; |
| 136 } | 136 } |
| 137 BrowserAccessibilityCocoa* native_node = node->ToBrowserAccessibilityCocoa(); | 137 BrowserAccessibilityCocoa* native_node = node->ToBrowserAccessibilityCocoa(); |
| 138 DCHECK(native_node); | 138 DCHECK(native_node); |
| 139 NSAccessibilityPostNotification(native_node, event_id); | 139 NSAccessibilityPostNotification(native_node, event_id); |
| 140 } | 140 } |
| 141 | 141 |
| 142 } // namespace content | 142 } // namespace content |
| OLD | NEW |