48 lines
1.4 KiB
C++
48 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
|