1// Copyright 2014 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#ifndef UI_VIEWS_ACCESSIBILITY_AX_AURA_OBJ_WRAPPER_H_
6#define UI_VIEWS_ACCESSIBILITY_AX_AURA_OBJ_WRAPPER_H_
7
8#include <vector>
9
10#include "base/basictypes.h"
11#include "base/compiler_specific.h"
12#include "base/macros.h"
13#include "ui/views/views_export.h"
14
15namespace ui {
16struct AXNodeData;
17}  // namespace ui
18
19namespace views {
20
21// An interface abstraction for Aura views that exposes the view-tree formed
22// by the implementing view types.
23class VIEWS_EXPORT AXAuraObjWrapper {
24 public:
25  virtual ~AXAuraObjWrapper() {}
26
27  // Traversal and serialization.
28  virtual AXAuraObjWrapper* GetParent() = 0;
29  virtual void GetChildren(
30      std::vector<AXAuraObjWrapper*>* out_children) = 0;
31  virtual void Serialize(ui::AXNodeData* out_node_data) = 0;
32  virtual int32 GetID() = 0;
33
34  // Actions.
35  virtual void DoDefault() {}
36  virtual void Focus() {}
37  virtual void MakeVisible() {}
38  virtual void SetSelection(int32 start, int32 end) {}
39};
40
41}  // namespace views
42
43#endif  // UI_VIEWS_ACCESSIBILITY_AX_AURA_OBJ_WRAPPER_H_
44