blob: ae809942e65f521e3c2a73aa28e7ff1a8c3428ce [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_ACCESSIBILITY_AX_VALIDATION_MESSAGE_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_ACCESSIBILITY_AX_VALIDATION_MESSAGE_H_
#include "third_party/blink/renderer/modules/accessibility/ax_mock_object.h"
namespace blink {
class AXObjectCacheImpl;
class ListedElement;
// The AXValidationMessage is a mock object that exposes an alert for a native
// error message popup for an invalid HTML control, aka a validation message.
// The alert is exposed with a name containing the text of the popup..
class AXValidationMessage final : public AXMockObject {
public:
explicit AXValidationMessage(AXObjectCacheImpl&);
AXValidationMessage(const AXValidationMessage&) = delete;
AXValidationMessage& operator=(const AXValidationMessage&) = delete;
~AXValidationMessage() override;
private:
// AXObject:
// Always a leaf.
bool CanHaveChildren() const override { return false; }
void AddChildren() override {}
bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const override;
void GetRelativeBounds(AXObject** out_container,
gfx::RectF& out_bounds_in_container,
gfx::Transform& out_container_transform,
bool* clips_children) const override;
const AtomicString& LiveRegionStatus() const override;
const AtomicString& LiveRegionRelevant() const override;
bool IsOffScreen() const override;
bool IsValidationMessage() const override { return true; }
bool IsVisible() const override;
String TextAlternative(bool recursive,
const AXObject* aria_label_or_description_root,
AXObjectSet& visited,
ax::mojom::NameFrom&,
AXRelatedObjectVector*,
NameSources*) const override;
ax::mojom::blink::Role NativeRoleIgnoringAria() const override;
ListedElement* RelatedFormControlIfVisible() const;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_ACCESSIBILITY_AX_VALIDATION_MESSAGE_H_