browser_accessibility_manager_win.cc revision 72a454cd3513ac24fbdd0e0cb9ad70b86a99b801
1// Copyright (c) 2010 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 "chrome/browser/accessibility/browser_accessibility_manager_win.h" 6 7#include "chrome/browser/accessibility/browser_accessibility_win.h" 8#include "chrome/common/render_messages_params.h" 9 10using webkit_glue::WebAccessibility; 11 12// static 13BrowserAccessibilityManager* BrowserAccessibilityManager::Create( 14 gfx::NativeView parent_view, 15 const WebAccessibility& src, 16 BrowserAccessibilityDelegate* delegate, 17 BrowserAccessibilityFactory* factory) { 18 return new BrowserAccessibilityManagerWin( 19 parent_view, 20 src, 21 delegate, 22 factory); 23} 24 25// Defining this here instead of in the base implementation file to address link 26// errors on the linux shared library build. (linux shlib) 27BrowserAccessibility* BrowserAccessibilityFactory::Create() { 28 return BrowserAccessibility::Create(); 29} 30 31BrowserAccessibilityManagerWin* 32BrowserAccessibilityManager::toBrowserAccessibilityManagerWin() { 33 return static_cast<BrowserAccessibilityManagerWin*>(this); 34} 35 36BrowserAccessibilityManagerWin::BrowserAccessibilityManagerWin( 37 HWND parent_view, 38 const WebAccessibility& src, 39 BrowserAccessibilityDelegate* delegate, 40 BrowserAccessibilityFactory* factory) 41 : BrowserAccessibilityManager(parent_view, src, delegate, factory) { 42 HRESULT hr = ::CreateStdAccessibleObject( 43 parent_view, OBJID_WINDOW, IID_IAccessible, 44 reinterpret_cast<void **>(&window_iaccessible_)); 45 DCHECK(SUCCEEDED(hr)); 46} 47 48BrowserAccessibilityManagerWin::~BrowserAccessibilityManagerWin() { 49} 50 51IAccessible* BrowserAccessibilityManagerWin::GetParentWindowIAccessible() { 52 return window_iaccessible_; 53} 54 55void BrowserAccessibilityManagerWin::NotifyAccessibilityEvent( 56 int type, 57 BrowserAccessibility* node) { 58 LONG event_id; 59 switch (type) { 60 case ViewHostMsg_AccessibilityNotification_Params:: 61 NOTIFICATION_TYPE_CHECK_STATE_CHANGED: 62 event_id = EVENT_OBJECT_STATECHANGE; 63 break; 64 case ViewHostMsg_AccessibilityNotification_Params:: 65 NOTIFICATION_TYPE_CHILDREN_CHANGED: 66 event_id = EVENT_OBJECT_REORDER; 67 break; 68 case ViewHostMsg_AccessibilityNotification_Params:: 69 NOTIFICATION_TYPE_FOCUS_CHANGED: 70 event_id = EVENT_OBJECT_FOCUS; 71 break; 72 case ViewHostMsg_AccessibilityNotification_Params:: 73 NOTIFICATION_TYPE_LOAD_COMPLETE: 74 event_id = IA2_EVENT_DOCUMENT_LOAD_COMPLETE; 75 break; 76 case ViewHostMsg_AccessibilityNotification_Params:: 77 NOTIFICATION_TYPE_VALUE_CHANGED: 78 event_id = EVENT_OBJECT_VALUECHANGE; 79 break; 80 case ViewHostMsg_AccessibilityNotification_Params:: 81 NOTIFICATION_TYPE_SELECTED_TEXT_CHANGED: 82 event_id = IA2_EVENT_TEXT_CARET_MOVED; 83 } 84 85 NotifyWinEvent(event_id, GetParentView(), OBJID_CLIENT, node->child_id()); 86} 87