12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // Copyright 2018 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef UI_ACCESSIBILITY_AX_TREE_ID_H_
- #define UI_ACCESSIBILITY_AX_TREE_ID_H_
- #include <string>
- #include "base/unguessable_token.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/accessibility/ax_base_export.h"
- #include "ui/accessibility/ax_enums.mojom-forward.h"
- namespace mojo {
- template <typename DataViewType, typename T>
- struct UnionTraits;
- }
- namespace ax {
- namespace mojom {
- class AXTreeIDDataView;
- }
- } // namespace ax
- namespace ui {
- // A unique ID representing an accessibility tree.
- class AX_BASE_EXPORT AXTreeID {
- public:
- // Create an Unknown AXTreeID.
- AXTreeID();
- // Copy constructor.
- AXTreeID(const AXTreeID& other);
- // Create a new unique AXTreeID.
- static AXTreeID CreateNewAXTreeID();
- // Unserialize an AXTreeID from a string. This is used so that tree IDs
- // can be stored compactly as a string attribute in an AXNodeData, and
- // so that AXTreeIDs can be passed to JavaScript bindings in the
- // automation API.
- static AXTreeID FromString(const std::string& string);
- // Convenience method to unserialize an AXTreeID from an UnguessableToken.
- static AXTreeID FromToken(const base::UnguessableToken& token);
- AXTreeID& operator=(const AXTreeID& other);
- std::string ToString() const;
- ax::mojom::AXTreeIDType type() const { return type_; }
- const absl::optional<base::UnguessableToken>& token() const { return token_; }
- bool operator==(const AXTreeID& rhs) const;
- bool operator!=(const AXTreeID& rhs) const;
- bool operator<(const AXTreeID& rhs) const;
- bool operator<=(const AXTreeID& rhs) const;
- bool operator>(const AXTreeID& rhs) const;
- bool operator>=(const AXTreeID& rhs) const;
- private:
- explicit AXTreeID(ax::mojom::AXTreeIDType type);
- explicit AXTreeID(const std::string& string);
- friend struct mojo::UnionTraits<ax::mojom::AXTreeIDDataView, ui::AXTreeID>;
- friend AX_BASE_EXPORT const AXTreeID& AXTreeIDUnknown();
- friend void swap(AXTreeID& first, AXTreeID& second);
- ax::mojom::AXTreeIDType type_;
- absl::optional<base::UnguessableToken> token_ = absl::nullopt;
- };
- // For use in std::unordered_map.
- struct AX_BASE_EXPORT AXTreeIDHash {
- size_t operator()(const ui::AXTreeID& tree_id) const;
- };
- AX_BASE_EXPORT std::ostream& operator<<(std::ostream& stream,
- const AXTreeID& value);
- // The value to use when an AXTreeID is unknown.
- AX_BASE_EXPORT const AXTreeID& AXTreeIDUnknown();
- } // namespace ui
- #endif // UI_ACCESSIBILITY_AX_TREE_ID_H_
|