gecko-dev/accessible/base/CssAltContent.h
James Teh b2b99f4e80 Bug 1896047 part 6: Support the CSS attr() function in CssAltContent. r=eeejay
As well as plain strings, alt text items can get their text from an attribute on the Element.
We need to include the values of those attributes when we compute alt text.
In addition, we must watch for changes to these attributes and update the accessibility tree or fire events as necessary.

Differential Revision: https://phabricator.services.mozilla.com/D210018
2024-05-17 00:24:16 +00:00

49 lines
1.4 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef CssAltContent_h_
#define CssAltContent_h_
#include "nsStyleStruct.h"
namespace mozilla::a11y {
/**
* Queries alternative text specified in the CSS content property.
*/
class MOZ_STACK_CLASS CssAltContent {
public:
explicit CssAltContent(nsIContent* aContent);
/**
* Checks whether any CSS alt text has been specified. For example:
* if (CssAltContent(someContentNode)) ...
*/
explicit operator bool() const { return !mItems.IsEmpty(); }
/**
* Append all CSS alt text to a string.
*/
void AppendToString(nsAString& aOut);
/**
* Update accessibility if there is CSS alt content on the given element or a
* descendant pseudo-element which references the given attribute.
*/
static bool HandleAttributeChange(nsIContent* aContent, int32_t aNameSpaceID,
nsAtom* aAttribute);
private:
bool HandleAttributeChange(int32_t aNameSpaceID, nsAtom* aAttribute);
dom::Element* mRealElement = nullptr;
dom::Element* mPseudoElement = nullptr;
mozilla::Span<const mozilla::StyleContentItem> mItems;
};
} // namespace mozilla::a11y
#endif