• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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_ACCESSIBILITY_AX_NODE_DATA_H_
6 #define UI_ACCESSIBILITY_AX_NODE_DATA_H_
7 
8 #include <map>
9 #include <string>
10 #include <vector>
11 
12 #include "base/strings/string16.h"
13 #include "base/strings/string_split.h"
14 #include "ui/accessibility/ax_enums.h"
15 #include "ui/accessibility/ax_export.h"
16 #include "ui/gfx/rect.h"
17 
18 namespace ui {
19 
20 // A compact representation of the accessibility information for a
21 // single web object, in a form that can be serialized and sent from
22 // one process to another.
23 struct AX_EXPORT AXNodeData {
24   AXNodeData();
25   virtual ~AXNodeData();
26 
27   void AddStringAttribute(AXStringAttribute attribute,
28                           const std::string& value);
29   void AddIntAttribute(AXIntAttribute attribute, int value);
30   void AddFloatAttribute(AXFloatAttribute attribute, float value);
31   void AddBoolAttribute(AXBoolAttribute attribute, bool value);
32   void AddIntListAttribute(AXIntListAttribute attribute,
33                            const std::vector<int32>& value);
34 
35   // Convenience functions, mainly for writing unit tests.
36   // Equivalent to AddStringAttribute(ATTR_NAME, name).
37   void SetName(std::string name);
38   // Equivalent to AddStringAttribute(ATTR_VALUE, value).
39   void SetValue(std::string value);
40 
41   // Return a string representation of this data, for debugging.
42   std::string ToString() const;
43 
44   // This is a simple serializable struct. All member variables should be
45   // public and copyable.
46   int32 id;
47   AXRole role;
48   uint32 state;
49   gfx::Rect location;
50   std::vector<std::pair<AXStringAttribute, std::string> > string_attributes;
51   std::vector<std::pair<AXIntAttribute, int32> > int_attributes;
52   std::vector<std::pair<AXFloatAttribute, float> > float_attributes;
53   std::vector<std::pair<AXBoolAttribute, bool> > bool_attributes;
54   std::vector<std::pair<AXIntListAttribute, std::vector<int32> > >
55       intlist_attributes;
56   base::StringPairs html_attributes;
57   std::vector<int32> child_ids;
58 };
59 
60 }  // namespace ui
61 
62 #endif  // UI_ACCESSIBILITY_AX_NODE_DATA_H_
63