#ifndef UI_ACCESSIBILITY_AX_TREE_SERIALIZER_H_
#define UI_ACCESSIBILITY_AX_TREE_SERIALIZER_H_
#include <stddef.h>
#include <stdint.h>
#include <ctime>
#include <map>
#include <memory>
#include <ostream>
#include <set>
#include <vector>
#include "base/debug/crash_logging.h"
#include "base/logging.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/raw_ptr_exclusion.h"
#include "base/time/time.h"
#include "base/timer/elapsed_timer.h"
#include "ui/accessibility/ax_common.h"
#include "ui/accessibility/ax_error_types.h"
#include "ui/accessibility/ax_export.h"
#include "ui/accessibility/ax_tree_data.h"
#include "ui/accessibility/ax_tree_source.h"
#include "ui/accessibility/ax_tree_update.h"
namespace ui {
struct ClientTreeNode;
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
class AXTreeSerializer { … };
struct AX_EXPORT ClientTreeNode { … };
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::
AXTreeSerializer(
AXTreeSource<AXSourceNode, AXTreeDataType, AXNodeDataType>* tree,
bool crash_on_error)
: … { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::~AXTreeSerializer() { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
void AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::Reset() { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
void AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::
ChangeTreeSourceForTesting(
AXTreeSource<AXSourceNode, AXTreeDataType, AXNodeDataType>* new_tree) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
size_t AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::ClientTreeNodeCount() const { … }
#if DCHECK_IS_ON()
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
std::vector<AXNodeID> AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::ClientTreeNodeIds()
const { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
AXSourceNode AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::ParentOf(AXNodeID id) { … }
#endif
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
AXSourceNode AXTreeSerializer<
AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::LeastCommonAncestor(AXSourceNode node,
ClientTreeNode* client_node) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
AXSourceNode
AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::LeastCommonAncestor(AXSourceNode node) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
bool AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::ComputeReparentingLCA(AXSourceNode*
lca) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
bool AXTreeSerializer<
AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::AnyDescendantWasReparented(AXSourceNode node,
AXSourceNode* out_lca) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
void AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::CreateClientRoot(AXSourceNode root) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
ClientTreeNode*
AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::ClientTreeNodeById(AXNodeID id) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
ClientTreeNode*
AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::GetClientTreeNodeParent(ClientTreeNode* obj) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
bool AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::
SerializeChanges(AXSourceNode node,
AXTreeUpdateType out_update,
std::set<AXSerializationErrorFlag>* out_error) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
std::vector<AXNodeID> AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::GetIncompleteNodeIds() { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
void AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::MarkNodeDirty(AXNodeID id) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
void AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::MarkSubtreeDirty(AXNodeID id) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
bool AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::IsInClientTree(AXSourceNode node) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
void AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::MarkClientSubtreeDirty(ClientTreeNode*
client_node) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
void AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::DeleteClientSubtree(ClientTreeNode*
client_node) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
void AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::DeleteDescendants(ClientTreeNode*
client_node) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
void AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::DeleteDescendants(AXSourceNode node) { … }
template <typename AXSourceNode,
typename AXSourceNodeVectorType,
typename AXTreeUpdateType,
typename AXTreeDataType,
typename AXNodeDataType>
bool AXTreeSerializer<AXSourceNode,
AXSourceNodeVectorType,
AXTreeUpdateType,
AXTreeDataType,
AXNodeDataType>::
SerializeChangedNodes(AXSourceNode node,
AXTreeUpdateType out_update,
std::set<AXSerializationErrorFlag>* out_error) { … }
}
#endif