Remove PlatformFile from profile_browsertest
[chromium-blink-merge.git] / content / browser / accessibility / browser_accessibility_manager_mac.mm
blob834799cfbff77227c7bb641a5502def3c48969a4
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
3 // found in the LICENSE file.
5 #include "content/browser/accessibility/browser_accessibility_manager_mac.h"
7 #import "base/logging.h"
8 #import "content/browser/accessibility/browser_accessibility_cocoa.h"
9 #include "content/common/accessibility_messages.h"
11 namespace content {
13 // static
14 BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
15     const ui::AXNodeData& src,
16     BrowserAccessibilityDelegate* delegate,
17     BrowserAccessibilityFactory* factory) {
18   return new BrowserAccessibilityManagerMac(NULL, src, delegate, factory);
21 BrowserAccessibilityManagerMac::BrowserAccessibilityManagerMac(
22     NSView* parent_view,
23     const ui::AXNodeData& src,
24     BrowserAccessibilityDelegate* delegate,
25     BrowserAccessibilityFactory* factory)
26     : BrowserAccessibilityManager(src, delegate, factory),
27       parent_view_(parent_view) {
30 // static
31 ui::AXNodeData BrowserAccessibilityManagerMac::GetEmptyDocument() {
32   ui::AXNodeData empty_document;
33   empty_document.id = 0;
34   empty_document.role = ui::AX_ROLE_ROOT_WEB_AREA;
35   empty_document.state =
36       1 << ui::AX_STATE_READ_ONLY;
37   return empty_document;
40 void BrowserAccessibilityManagerMac::NotifyAccessibilityEvent(
41     ui::AXEvent event_type,
42     BrowserAccessibility* node) {
43   if (!node->IsNative())
44     return;
46   // Refer to AXObjectCache.mm (webkit).
47   NSString* event_id = @"";
48   switch (event_type) {
49     case ui::AX_EVENT_ACTIVEDESCENDANTCHANGED:
50       if (node->role() == ui::AX_ROLE_TREE)
51         event_id = NSAccessibilitySelectedRowsChangedNotification;
52       else
53         event_id = NSAccessibilityFocusedUIElementChangedNotification;
54       break;
55     case ui::AX_EVENT_ALERT:
56       // Not used on Mac.
57       return;
58     case ui::AX_EVENT_BLUR:
59       // A no-op on Mac.
60       return;
61     case ui::AX_EVENT_CHECKED_STATE_CHANGED:
62       // Not used on Mac.
63       return;
64     case ui::AX_EVENT_CHILDREN_CHANGED:
65       // TODO(dtseng): no clear equivalent on Mac.
66       return;
67     case ui::AX_EVENT_FOCUS:
68       event_id = NSAccessibilityFocusedUIElementChangedNotification;
69       break;
70     case ui::AX_EVENT_LAYOUT_COMPLETE:
71       event_id = @"AXLayoutComplete";
72       break;
73     case ui::AX_EVENT_LIVE_REGION_CHANGED:
74       event_id = @"AXLiveRegionChanged";
75       break;
76     case ui::AX_EVENT_LOAD_COMPLETE:
77       event_id = @"AXLoadComplete";
78       break;
79     case ui::AX_EVENT_MENU_LIST_VALUE_CHANGED:
80       // Not used on Mac.
81       return;
82     case ui::AX_EVENT_SHOW:
83       // Not used on Mac.
84       return;
85     case ui::AX_EVENT_HIDE:
86       // Not used on Mac.
87       return;
88     case ui::AX_EVENT_ROW_COUNT_CHANGED:
89       event_id = NSAccessibilityRowCountChangedNotification;
90       break;
91     case ui::AX_EVENT_ROW_COLLAPSED:
92       event_id = @"AXRowCollapsed";
93       break;
94     case ui::AX_EVENT_ROW_EXPANDED:
95       event_id = @"AXRowExpanded";
96       break;
97     case ui::AX_EVENT_SCROLLED_TO_ANCHOR:
98       // Not used on Mac.
99       return;
100     case ui::AX_EVENT_SELECTED_CHILDREN_CHANGED:
101       event_id = NSAccessibilitySelectedChildrenChangedNotification;
102       break;
103     case ui::AX_EVENT_SELECTED_TEXT_CHANGED:
104       event_id = NSAccessibilitySelectedTextChangedNotification;
105       break;
106     case ui::AX_EVENT_TEXT_INSERTED:
107       // Not used on Mac.
108       return;
109     case ui::AX_EVENT_TEXT_REMOVED:
110       // Not used on Mac.
111       return;
112     case ui::AX_EVENT_VALUE_CHANGED:
113       event_id = NSAccessibilityValueChangedNotification;
114       break;
115     case ui::AX_EVENT_ARIA_ATTRIBUTE_CHANGED:
116       // Not used on Mac.
117       return;
118     case ui::AX_EVENT_AUTOCORRECTION_OCCURED:
119       // Not used on Mac.
120       return;
121     case ui::AX_EVENT_INVALID_STATUS_CHANGED:
122       // Not used on Mac.
123       return;
124     case ui::AX_EVENT_LOCATION_CHANGED:
125       // Not used on Mac.
126       return;
127     case ui::AX_EVENT_MENU_LIST_ITEM_SELECTED:
128       // Not used on Mac.
129       return;
130     case ui::AX_EVENT_TEXT_CHANGED:
131       // Not used on Mac.
132       return;
133     default:
134       LOG(WARNING) << "Unknown accessibility event: " << event_type;
135       return;
136   }
137   BrowserAccessibilityCocoa* native_node = node->ToBrowserAccessibilityCocoa();
138   DCHECK(native_node);
139   NSAccessibilityPostNotification(native_node, event_id);
142 }  // namespace content