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 CHROME_BROWSER_UI_ASH_ACCESSIBILITY_AX_TREE_SOURCE_ASH_H_
6#define CHROME_BROWSER_UI_ASH_ACCESSIBILITY_AX_TREE_SOURCE_ASH_H_
7
8#include <map>
9
10#include "base/basictypes.h"
11#include "base/memory/scoped_ptr.h"
12#include "chrome/browser/ui/ash/accessibility/ax_root_obj_wrapper.h"
13#include "ui/accessibility/ax_tree_source.h"
14
15namespace views {
16class AXAuraObjWrapper;
17}  // namespace views
18
19// This class exposes the views hierarchy as an accessibility tree permitting
20// use with other accessibility classes.
21class AXTreeSourceAsh
22    : public ui::AXTreeSource<views::AXAuraObjWrapper*> {
23 public:
24  AXTreeSourceAsh();
25  virtual ~AXTreeSourceAsh();
26
27  // A set of actions invoked on an Aura view.
28  void DoDefault(int32 id);
29  void Focus(int32 id);
30  void MakeVisible(int32 id);
31  void SetSelection(int32 id, int32 start, int32 end);
32
33  // AXTreeSource implementation.
34  virtual views::AXAuraObjWrapper* GetRoot() const OVERRIDE;
35  virtual views::AXAuraObjWrapper* GetFromId(int32 id) const OVERRIDE;
36  virtual int32 GetId(views::AXAuraObjWrapper* node) const OVERRIDE;
37  virtual void GetChildren(views::AXAuraObjWrapper* node,
38      std::vector<views::AXAuraObjWrapper*>* out_children) const OVERRIDE;
39  virtual views::AXAuraObjWrapper* GetParent(
40      views::AXAuraObjWrapper* node) const OVERRIDE;
41  virtual bool IsValid(views::AXAuraObjWrapper* node) const OVERRIDE;
42  virtual bool IsEqual(views::AXAuraObjWrapper* node1,
43                       views::AXAuraObjWrapper* node2) const OVERRIDE;
44  virtual views::AXAuraObjWrapper* GetNull() const OVERRIDE;
45  virtual void SerializeNode(
46      views::AXAuraObjWrapper* node, ui::AXNodeData* out_data) const OVERRIDE;
47
48  // Useful for debugging.
49  std::string ToString(views::AXAuraObjWrapper* root, std::string prefix);
50
51 private:
52  scoped_ptr<AXRootObjWrapper> root_;
53
54  DISALLOW_COPY_AND_ASSIGN(AXTreeSourceAsh);
55};
56
57#endif  // CHROME_BROWSER_UI_ASH_ACCESSIBILITY_AX_TREE_SOURCE_ASH_H_
58