12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef UI_VIEWS_ACCESSIBILITY_NATIVE_VIEW_ACCESSIBILITY_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define UI_VIEWS_ACCESSIBILITY_NATIVE_VIEW_ACCESSIBILITY_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/accessibility/ax_node_data.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/accessibility/platform/ax_platform_node.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/accessibility/platform/ax_platform_node_delegate.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/native_widget_types.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/views/views_export.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace views { 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class View; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class VIEWS_EXPORT NativeViewAccessibility : public ui::AXPlatformNodeDelegate { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static NativeViewAccessibility* Create(View* view); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual gfx::NativeViewAccessible GetNativeObject(); 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Call Destroy rather than deleting this, because the subclass may 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // use reference counting. 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void Destroy(); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // WebViews need to be registered because they implement their own 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // tree of accessibility objects, and we need to check them when 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // mapping a child id to a NativeViewAccessible. 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) static void RegisterWebView(View* web_view); 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) static void UnregisterWebView(View* web_view); 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // ui::AXPlatformNodeDelegate 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual ui::AXNodeData* GetData() OVERRIDE; 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual int GetChildCount() OVERRIDE; 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual gfx::NativeViewAccessible ChildAtIndex(int index) OVERRIDE; 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual gfx::NativeViewAccessible GetParent() OVERRIDE; 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual gfx::Vector2d GetGlobalCoordinateOffset() OVERRIDE; 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void NotifyAccessibilityEvent(ui::AXEvent event_type) OVERRIDE; 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NativeViewAccessibility(); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~NativeViewAccessibility(); 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void set_view(views::View* view) { view_ = view; } 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const View* view() const { return view_; } 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) View* view_; // Weak. Owns this. 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // We own this, but it is reference-counted on some platforms so we can't use 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // a scoped_ptr. It is dereferenced in the destructor. 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::AXPlatformNode* ax_node_; 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::AXNodeData data_; 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NativeViewAccessibility); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace views 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // UI_VIEWS_ACCESSIBILITY_NATIVE_VIEW_ACCESSIBILITY_H_ 64