15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/views/accessibility/ax_widget_obj_wrapper.h" 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/accessibility/ax_node_data.h" 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/views/accessibility/ax_aura_obj_cache.h" 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/views/accessibility/ax_aura_obj_wrapper.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/views/widget/widget.h" 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace views { 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuAXWidgetObjWrapper::AXWidgetObjWrapper(Widget* widget) : widget_(widget) { 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu widget->AddObserver(this); 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu widget->AddRemovalsObserver(this); 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuAXWidgetObjWrapper::~AXWidgetObjWrapper() { 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu widget_->RemoveObserver(this); 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu widget_->RemoveRemovalsObserver(this); 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu widget_ = NULL; 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuAXAuraObjWrapper* AXWidgetObjWrapper::GetParent() { 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return AXAuraObjCache::GetInstance()->GetOrCreate(widget_->GetNativeView()); 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid AXWidgetObjWrapper::GetChildren( 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::vector<AXAuraObjWrapper*>* out_children) { 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu out_children->push_back( 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu AXAuraObjCache::GetInstance()->GetOrCreate(widget_->GetRootView())); 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid AXWidgetObjWrapper::Serialize(ui::AXNodeData* out_node_data) { 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu out_node_data->id = GetID(); 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu out_node_data->role = ui::AX_ROLE_CLIENT; 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu out_node_data->location = widget_->GetWindowBoundsInScreen(); 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // TODO(dtseng): Set better states. 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu out_node_data->state = 0; 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuint32 AXWidgetObjWrapper::GetID() { 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return AXAuraObjCache::GetInstance()->GetID(widget_); 455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid AXWidgetObjWrapper::OnWidgetDestroying(Widget* widget) { 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu AXAuraObjCache::GetInstance()->Remove(widget); 495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid AXWidgetObjWrapper::OnWillRemoveView(Widget* widget, View* view) { 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu AXAuraObjCache::GetInstance()->Remove(view); 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace views 56