blob: 94b295919b5e4b4402bf2ad417fdeb73b42a550c [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// 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_CHECKS_H_
#define UI_ACCESSIBILITY_AX_TREE_CHECKS_H_
#include <stddef.h>
#include "ui/accessibility/ax_base_export.h"
namespace ui {
// Data for AXTree checks that run when DHECKs are on.
// TODO(accessibility) Use the mojo struct directly in C++ code to avoid having
// to typemap it.
struct AX_BASE_EXPORT AXTreeChecks final {
AXTreeChecks() = default;
~AXTreeChecks() = default;
// If non-zero, provides the expected number of nodes in the tree after the
// update is processed. This can be used to help check for mismatched trees.
// Because a compromised renderer can lie about the number of nodes in the
// tree, this should only be used for debugging, not validation that's trusted
// on the browser side. Therefore, this should not be used with a CHECK, where
// a compromised renderer could bring down the browser.
// TODO(accessibility) To catch more errors than a DCHECK would, another
// option is to use DumpWithoutCrashing when the counts don't match. This
// could also be paired with mojo::ReportBadMessage to kill the renderer (or
// perhaps resetting accessibility would be preferable).
size_t node_count = 0;
};
} // namespace ui
#endif // UI_ACCESSIBILITY_AX_TREE_CHECKS_H_