// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ui/views/accessibility/native_view_accessibility.h" #include "ui/accessibility/ax_view_state.h" #include "ui/views/view.h" #include "ui/views/widget/widget.h" namespace views { #if !defined(OS_WIN) // static NativeViewAccessibility* NativeViewAccessibility::Create(View* view) { DCHECK(view); NativeViewAccessibility* instance = new NativeViewAccessibility(); instance->set_view(view); return instance; } #endif NativeViewAccessibility::NativeViewAccessibility() : view_(NULL), ax_node_(ui::AXPlatformNode::Create(this)) { } NativeViewAccessibility::~NativeViewAccessibility() { if (ax_node_) ax_node_->Destroy(); } gfx::NativeViewAccessible NativeViewAccessibility::GetNativeObject() { return ax_node_ ? ax_node_->GetNativeViewAccessible() : NULL; } void NativeViewAccessibility::Destroy() { delete this; } #if !defined(OS_WIN) // static void NativeViewAccessibility::RegisterWebView(View* web_view) { } // static void NativeViewAccessibility::UnregisterWebView(View* web_view) { } #endif // ui::AXPlatformNodeDelegate ui::AXNodeData* NativeViewAccessibility::GetData() { ui::AXViewState state; view_->GetAccessibleState(&state); data_.role = state.role; data_.location = view_->GetBoundsInScreen(); return &data_; } int NativeViewAccessibility::GetChildCount() { return view_->child_count(); } gfx::NativeViewAccessible NativeViewAccessibility::ChildAtIndex(int index) { if (index < 0 || index >= view_->child_count()) return NULL; return view_->child_at(index)->GetNativeViewAccessible(); } gfx::NativeViewAccessible NativeViewAccessibility::GetParent() { if (view_->parent()) return view_->parent()->GetNativeViewAccessible(); #if defined(OS_MACOSX) if (view_->GetWidget()) return view_->GetWidget()->GetNativeView(); #endif return NULL; } gfx::Vector2d NativeViewAccessibility::GetGlobalCoordinateOffset() { return gfx::Vector2d(0, 0); // location is already in screen coordinates. } void NativeViewAccessibility::NotifyAccessibilityEvent(ui::AXEvent event_type) { } } // namespace views