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/WebAccessibilityObject.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 15using WebKit::WebAccessibilityNotification; 16using WebKit::WebAccessibilityObject; 17using WebKit::WebDocument; 18using WebKit::WebFrame; 19using WebKit::WebView; 20 21namespace content { 22 23RendererAccessibility::RendererAccessibility( 24 RenderViewImpl* render_view) 25 : RenderViewObserver(render_view), 26 render_view_(render_view), 27 logging_(false) { 28 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 29 if (command_line.HasSwitch(switches::kEnableAccessibilityLogging)) 30 logging_ = true; 31} 32 33RendererAccessibility::~RendererAccessibility() { 34} 35 36WebDocument RendererAccessibility::GetMainDocument() { 37 WebView* view = render_view()->GetWebView(); 38 WebFrame* main_frame = view ? view->mainFrame() : NULL; 39 40 if (main_frame) 41 return main_frame->document(); 42 43 return WebDocument(); 44} 45 46#ifndef NDEBUG 47const std::string RendererAccessibility::AccessibilityNotificationToString( 48 AccessibilityNotification notification) { 49 switch (notification) { 50 case AccessibilityNotificationActiveDescendantChanged: 51 return "active descendant changed"; 52 case AccessibilityNotificationAriaAttributeChanged: 53 return "aria attribute changed"; 54 case AccessibilityNotificationAutocorrectionOccurred: 55 return "autocorrection occurred"; 56 case AccessibilityNotificationBlur: 57 return "blur"; 58 case AccessibilityNotificationAlert: 59 return "alert"; 60 case AccessibilityNotificationCheckStateChanged: 61 return "check state changed"; 62 case AccessibilityNotificationChildrenChanged: 63 return "children changed"; 64 case AccessibilityNotificationFocusChanged: 65 return "focus changed"; 66 case AccessibilityNotificationInvalidStatusChanged: 67 return "invalid status changed"; 68 case AccessibilityNotificationLayoutComplete: 69 return "layout complete"; 70 case AccessibilityNotificationLiveRegionChanged: 71 return "live region changed"; 72 case AccessibilityNotificationLoadComplete: 73 return "load complete"; 74 case AccessibilityNotificationMenuListItemSelected: 75 return "menu list item selected"; 76 case AccessibilityNotificationMenuListValueChanged: 77 return "menu list changed"; 78 case AccessibilityNotificationObjectShow: 79 return "object show"; 80 case AccessibilityNotificationObjectHide: 81 return "object hide"; 82 case AccessibilityNotificationRowCountChanged: 83 return "row count changed"; 84 case AccessibilityNotificationRowCollapsed: 85 return "row collapsed"; 86 case AccessibilityNotificationRowExpanded: 87 return "row expanded"; 88 case AccessibilityNotificationScrolledToAnchor: 89 return "scrolled to anchor"; 90 case AccessibilityNotificationSelectedChildrenChanged: 91 return "selected children changed"; 92 case AccessibilityNotificationSelectedTextChanged: 93 return "selected text changed"; 94 case AccessibilityNotificationTextChanged: 95 return "text changed"; 96 case AccessibilityNotificationTextInserted: 97 return "text inserted"; 98 case AccessibilityNotificationTextRemoved: 99 return "text removed"; 100 case AccessibilityNotificationValueChanged: 101 return "value changed"; 102 default: 103 NOTREACHED(); 104 } 105 return ""; 106} 107#endif 108 109} // namespace content 110