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. 4 5 #include "content/renderer/accessibility/renderer_accessibility.h" 6 7 #include "base/command_line.h" 8 #include "content/public/common/content_switches.h" 9 #include "content/renderer/render_view_impl.h" 10 #include "third_party/WebKit/public/web/WebAXObject.h" 11 #include "third_party/WebKit/public/web/WebDocument.h" 12 #include "third_party/WebKit/public/web/WebFrame.h" 13 #include "third_party/WebKit/public/web/WebView.h" 14 15 using blink::WebAXObject; 16 using blink::WebDocument; 17 using blink::WebFrame; 18 using blink::WebView; 19 20 namespace content { 21 22 RendererAccessibility::RendererAccessibility( 23 RenderViewImpl* render_view) 24 : RenderViewObserver(render_view), 25 render_view_(render_view), 26 logging_(false) { 27 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 28 if (command_line.HasSwitch(switches::kEnableAccessibilityLogging)) 29 logging_ = true; 30 } 31 32 RendererAccessibility::~RendererAccessibility() { 33 } 34 35 WebDocument RendererAccessibility::GetMainDocument() { 36 WebView* view = render_view()->GetWebView(); 37 WebFrame* main_frame = view ? view->mainFrame() : NULL; 38 39 if (main_frame) 40 return main_frame->document(); 41 42 return WebDocument(); 43 } 44 45 #ifndef NDEBUG 46 const std::string RendererAccessibility::AccessibilityEventToString( 47 blink::WebAXEvent event) { 48 switch (event) { 49 case blink::WebAXEventActiveDescendantChanged: 50 return "active descendant changed"; 51 case blink::WebAXEventAriaAttributeChanged: 52 return "aria attribute changed"; 53 case blink::WebAXEventAutocorrectionOccured: 54 return "autocorrection occurred"; 55 case blink::WebAXEventBlur: 56 return "blur"; 57 case blink::WebAXEventAlert: 58 return "alert"; 59 case blink::WebAXEventCheckedStateChanged: 60 return "check state changed"; 61 case blink::WebAXEventChildrenChanged: 62 return "children changed"; 63 case blink::WebAXEventFocus: 64 return "focus changed"; 65 case blink::WebAXEventInvalidStatusChanged: 66 return "invalid status changed"; 67 case blink::WebAXEventLayoutComplete: 68 return "layout complete"; 69 case blink::WebAXEventLiveRegionChanged: 70 return "live region changed"; 71 case blink::WebAXEventLoadComplete: 72 return "load complete"; 73 case blink::WebAXEventMenuListItemSelected: 74 return "menu list item selected"; 75 case blink::WebAXEventMenuListValueChanged: 76 return "menu list changed"; 77 case blink::WebAXEventShow: 78 return "object show"; 79 case blink::WebAXEventHide: 80 return "object hide"; 81 case blink::WebAXEventRowCountChanged: 82 return "row count changed"; 83 case blink::WebAXEventRowCollapsed: 84 return "row collapsed"; 85 case blink::WebAXEventRowExpanded: 86 return "row expanded"; 87 case blink::WebAXEventScrolledToAnchor: 88 return "scrolled to anchor"; 89 case blink::WebAXEventSelectedChildrenChanged: 90 return "selected children changed"; 91 case blink::WebAXEventSelectedTextChanged: 92 return "selected text changed"; 93 case blink::WebAXEventTextChanged: 94 return "text changed"; 95 case blink::WebAXEventTextInserted: 96 return "text inserted"; 97 case blink::WebAXEventTextRemoved: 98 return "text removed"; 99 case blink::WebAXEventValueChanged: 100 return "value changed"; 101 default: 102 NOTREACHED(); 103 } 104 return ""; 105 } 106 #endif 107 108 } // namespace content 109