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