Home | History | Annotate | Download | only in accessibility
      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 
     17 namespace 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.
     22 struct 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