Skip to content

Commit 416564d

Browse files
Merge pull request #1003 from jonathanmendez/main-merge_2026060800
Enterprise main merge 2026060800
2 parents 460e882 + 07b02e0 commit 416564d

2,555 files changed

Lines changed: 78544 additions & 287089 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

Lines changed: 17 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,10 @@ hashbrown_0_13 = { package = "hashbrown", path = "build/rust/hashbrown-0.13" }
314314
hashbrown_0_14 = { package = "hashbrown", path = "build/rust/hashbrown-0.14" }
315315

316316
# Patch `hashbrown` 0.15.* to depend on 0.16.*
317-
hashbrown_0_15 = { package = "hashbrown", path = "build/rust/hashbrown" }
317+
hashbrown_0_15 = { package = "hashbrown", path = "build/rust/hashbrown-0.15" }
318+
319+
# Patch `hashbrown` 0.16.* to depend on 0.17.*
320+
hashbrown_0_16 = { package = "hashbrown", path = "build/rust/hashbrown" }
318321

319322
# Patch `hashlink` 0.10.* to 0.11.*
320323
# This technically breaks `hashbrown::DefaultHashBuilder: Copy`, but it's not something we use.

accessible/base/nsAccessibilityService.cpp

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -739,22 +739,32 @@ void nsAccessibilityService::NotifyAnchorPositionedScrollUpdate(
739739

740740
void nsAccessibilityService::NotifyAttrElementWillChange(
741741
mozilla::dom::Element* aElement, nsAtom* aAttr) {
742-
mozilla::dom::Document* doc = aElement->OwnerDoc();
743-
MOZ_ASSERT(doc);
744-
if (DocAccessible* docAcc = GetDocAccessible(doc)) {
742+
if (DocAccessible* docAcc = GetDocAccessible(aElement->GetComposedDoc())) {
745743
docAcc->AttrElementWillChange(aElement, aAttr);
746744
}
747745
}
748746

749747
void nsAccessibilityService::NotifyAttrElementChanged(
750748
mozilla::dom::Element* aElement, nsAtom* aAttr) {
751-
mozilla::dom::Document* doc = aElement->OwnerDoc();
752-
MOZ_ASSERT(doc);
753-
if (DocAccessible* docAcc = GetDocAccessible(doc)) {
749+
if (DocAccessible* docAcc = GetDocAccessible(aElement->GetComposedDoc())) {
754750
docAcc->AttrElementChanged(aElement, aAttr);
755751
}
756752
}
757753

754+
void nsAccessibilityService::NotifyARIAAttributeDefaultWillChange(
755+
mozilla::dom::Element* aElement, nsAtom* aAttribute, AttrModType aModType) {
756+
if (DocAccessible* docAcc = GetDocAccessible(aElement->GetComposedDoc())) {
757+
docAcc->ARIAAttributeDefaultWillChange(aElement, aAttribute, aModType);
758+
}
759+
}
760+
761+
void nsAccessibilityService::NotifyARIAAttributeDefaultChanged(
762+
mozilla::dom::Element* aElement, nsAtom* aAttribute, AttrModType aModType) {
763+
if (DocAccessible* docAcc = GetDocAccessible(aElement->GetComposedDoc())) {
764+
docAcc->ARIAAttributeDefaultChanged(aElement, aAttribute, aModType);
765+
}
766+
}
767+
758768
void nsAccessibilityService::AriaNotify(
759769
nsINode* aNode, const nsAString& aAnnouncement,
760770
const mozilla::dom::AriaNotificationOptions& aOptions) {

accessible/base/nsAccessibilityService.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,17 @@ class nsAccessibilityService final : public mozilla::a11y::DocManager,
313313
*/
314314
void NotifyAttrElementChanged(mozilla::dom::Element* aElement, nsAtom* aAttr);
315315

316+
/**
317+
* Notify accessibility that an ARIA attribute reflected from ElementInternals
318+
* is about to change / has changed. See dom::ElementInternals.
319+
*/
320+
void NotifyARIAAttributeDefaultWillChange(mozilla::dom::Element* aElement,
321+
nsAtom* aAttribute,
322+
AttrModType aModType);
323+
void NotifyARIAAttributeDefaultChanged(mozilla::dom::Element* aElement,
324+
nsAtom* aAttribute,
325+
AttrModType aModType);
326+
316327
void AriaNotify(nsINode* aNode, const nsAString& aAnnouncement,
317328
const mozilla::dom::AriaNotificationOptions& aOptions);
318329

accessible/generic/DocAccessible.cpp

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,6 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(DocAccessible, LocalAccessible)
151151
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
152152

153153
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(DocAccessible)
154-
NS_INTERFACE_MAP_ENTRY(nsIDocumentObserver)
155-
NS_INTERFACE_MAP_ENTRY(nsIMutationObserver)
156154
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
157155
NS_INTERFACE_MAP_END_INHERITING(HyperTextAccessible)
158156

@@ -721,9 +719,6 @@ nsRect DocAccessible::RelativeBounds(nsIFrame** aRelativeFrame) const {
721719
// DocAccessible protected member
722720
nsresult DocAccessible::AddEventListeners() {
723721
SelectionMgr()->AddDocSelectionListener(mPresShell);
724-
725-
// Add document observer.
726-
mDocumentNode->AddObserver(this);
727722
return NS_OK;
728723
}
729724

@@ -732,10 +727,6 @@ nsresult DocAccessible::RemoveEventListeners() {
732727
// Remove listeners associated with content documents
733728
NS_ASSERTION(mDocumentNode, "No document during removal of listeners.");
734729

735-
if (mDocumentNode) {
736-
mDocumentNode->RemoveObserver(this);
737-
}
738-
739730
if (mScrollWatchTimer) {
740731
mScrollWatchTimer->Cancel();
741732
mScrollWatchTimer = nullptr;
@@ -839,12 +830,6 @@ std::pair<nsPoint, nsRect> DocAccessible::ComputeScrollData(
839830
return {scrollPoint, scrollRange};
840831
}
841832

842-
////////////////////////////////////////////////////////////////////////////////
843-
// nsIDocumentObserver
844-
845-
NS_IMPL_NSIDOCUMENTOBSERVER_CORE_STUB(DocAccessible)
846-
NS_IMPL_NSIDOCUMENTOBSERVER_LOAD_STUB(DocAccessible)
847-
848833
// When a reflected element IDL attribute changes, we might get the following
849834
// synchronous calls:
850835
// 1. AttributeWillChange for the element.
@@ -1089,11 +1074,6 @@ void DocAccessible::ARIAActiveDescendantChanged(LocalAccessible* aAccessible) {
10891074
}
10901075
}
10911076

1092-
void DocAccessible::ContentAppended(nsIContent* aFirstNewContent,
1093-
const ContentAppendInfo&) {
1094-
MaybeHandleChangeToHiddenNameOrDescription(aFirstNewContent);
1095-
}
1096-
10971077
void DocAccessible::ElementStateChanged(dom::Document* aDocument,
10981078
dom::Element* aElement,
10991079
dom::ElementState aStateMask) {
@@ -1225,34 +1205,6 @@ void DocAccessible::ElementStateChanged(dom::Document* aDocument,
12251205
}
12261206
}
12271207

1228-
void DocAccessible::CharacterDataWillChange(nsIContent* aContent,
1229-
const CharacterDataChangeInfo&) {}
1230-
1231-
void DocAccessible::CharacterDataChanged(nsIContent* aContent,
1232-
const CharacterDataChangeInfo&) {
1233-
MaybeHandleChangeToHiddenNameOrDescription(aContent);
1234-
}
1235-
1236-
void DocAccessible::ContentInserted(nsIContent* aChild,
1237-
const ContentInsertInfo&) {
1238-
MaybeHandleChangeToHiddenNameOrDescription(aChild);
1239-
}
1240-
1241-
void DocAccessible::ContentWillBeRemoved(nsIContent* aChildNode,
1242-
const ContentRemoveInfo&) {
1243-
#ifdef A11Y_LOG
1244-
if (logging::IsEnabled(logging::eTree)) {
1245-
logging::MsgBegin("TREE", "DOM content removed; doc: %p", this);
1246-
logging::Node("container node", aChildNode->GetParent());
1247-
logging::Node("content node", aChildNode);
1248-
logging::MsgEnd();
1249-
}
1250-
#endif
1251-
ContentRemoved(aChildNode);
1252-
}
1253-
1254-
void DocAccessible::ParentChainChanged(nsIContent* aContent) {}
1255-
12561208
////////////////////////////////////////////////////////////////////////////////
12571209
// LocalAccessible
12581210

accessible/generic/DocAccessible.h

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ class TNotification;
4343
* all use this class to represent the doc they contain.
4444
*/
4545
class DocAccessible : public HyperTextAccessible,
46-
public nsIDocumentObserver,
4746
public nsSupportsWeakReference {
4847
NS_DECL_ISUPPORTS_INHERITED
4948
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DocAccessible, LocalAccessible)
@@ -54,14 +53,11 @@ class DocAccessible : public HyperTextAccessible,
5453
public:
5554
DocAccessible(Document* aDocument, PresShell* aPresShell);
5655

57-
// nsIDocumentObserver
58-
NS_DECL_NSIDOCUMENTOBSERVER
59-
6056
// LocalAccessible
6157
virtual void Init();
62-
virtual void Shutdown() override;
63-
virtual nsIFrame* GetFrame() const override;
64-
virtual nsINode* GetNode() const override;
58+
void Shutdown() override;
59+
nsIFrame* GetFrame() const override;
60+
nsINode* GetNode() const override;
6561
Document* DocumentNode() const { return mDocumentNode; }
6662

6763
virtual mozilla::a11y::ENameValueFlag DirectName(
@@ -442,6 +438,26 @@ class DocAccessible : public HyperTextAccessible,
442438
*/
443439
uint64_t EffectiveCacheDomains() const;
444440

441+
/**
442+
* For hidden subtrees, fire a name/description change event if the subtree
443+
* is a target of aria-labelledby/describedby.
444+
* This does nothing if it is called on a node which is not part of a hidden
445+
* aria-labelledby/describedby target.
446+
*/
447+
void MaybeHandleChangeToHiddenNameOrDescription(nsIContent* aChild);
448+
void AttributeWillChange(dom::Element* aElement, int32_t aNameSpaceID,
449+
nsAtom* aAttribute, AttrModType aModType);
450+
virtual void AttributeChanged(dom::Element* aElement, int32_t aNameSpaceID,
451+
nsAtom* aAttribute, AttrModType aModType,
452+
const nsAttrValue* aOldValue);
453+
void ElementStateChanged(dom::Document* aDocument, dom::Element* aElement,
454+
dom::ElementState aStateMask);
455+
void ARIAAttributeDefaultWillChange(dom::Element* aElement,
456+
nsAtom* aAttribute, AttrModType aModType);
457+
458+
void ARIAAttributeDefaultChanged(dom::Element* aElement, nsAtom* aAttribute,
459+
AttrModType aModType);
460+
445461
protected:
446462
virtual ~DocAccessible();
447463

@@ -860,14 +876,6 @@ class DocAccessible : public HyperTextAccessible,
860876
*/
861877
void TrackMovedAccessible(LocalAccessible* aAcc);
862878

863-
/**
864-
* For hidden subtrees, fire a name/description change event if the subtree
865-
* is a target of aria-labelledby/describedby.
866-
* This does nothing if it is called on a node which is not part of a hidden
867-
* aria-labelledby/describedby target.
868-
*/
869-
void MaybeHandleChangeToHiddenNameOrDescription(nsIContent* aChild);
870-
871879
void MaybeHandleChangeToAriaActions(LocalAccessible* aAcc,
872880
const nsAtom* aAttribute);
873881

accessible/mac/DocAccessibleWrap.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ class DocAccessibleWrap : public DocAccessible {
2222

2323
virtual ~DocAccessibleWrap();
2424

25-
virtual void Shutdown() override;
25+
void Shutdown() override;
2626

27-
virtual void AttributeChanged(dom::Element* aElement, int32_t aNameSpaceID,
28-
nsAtom* aAttribute, AttrModType aModType,
29-
const nsAttrValue* aOldValue) override;
27+
void AttributeChanged(dom::Element* aElement, int32_t aNameSpaceID,
28+
nsAtom* aAttribute, AttrModType aModType,
29+
const nsAttrValue* aOldValue) override;
3030

3131
void QueueNewLiveRegion(LocalAccessible* aAccessible);
3232

accessible/tests/browser/e10s/browser.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ support-files = [
1212
"fonts/Ahem.sjs",
1313
"!/accessible/tests/browser/shared-head.js",
1414
"!/accessible/tests/mochitest/*.js",
15-
"!/accessible/tests/mochitest/events/slow_image.sjs",
15+
"!/accessible/tests/browser/events/slow_doc.sjs",
1616
"!/accessible/tests/mochitest/letters.gif",
1717
"!/accessible/tests/mochitest/moz.png",
1818
]

accessible/tests/browser/e10s/browser_caching_states.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,15 +420,15 @@ addAccessibleTask(
420420
);
421421
await invokeContentTask(browser, [], () => {
422422
content.document.getElementById("iframe").src =
423-
'data:text/html,<img src="http://example.com/a11y/accessible/tests/mochitest/events/slow_image.sjs">';
423+
"https://example.com/browser/accessible/tests/browser/events/slow_doc.sjs?second";
424424
});
425425
const iframeDoc = (await reordered).accessible.firstChild;
426426
testStates(iframeDoc, STATE_BUSY, EXT_STATE_STALE, 0, 0);
427427

428428
info("Finishing load of iframe doc");
429429
let loadCompleted = waitForEvent(EVENT_DOCUMENT_LOAD_COMPLETE, iframeDoc);
430430
await fetch(
431-
"https://example.com/a11y/accessible/tests/mochitest/events/slow_image.sjs?complete"
431+
"https://example.com/browser/accessible/tests/browser/events/slow_doc.sjs?scriptFinish"
432432
);
433433
await loadCompleted;
434434
testStates(iframeDoc, 0, 0, STATE_BUSY, EXT_STATE_STALE);
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<!doctype html>
2+
<style>
3+
*:nth-child(odd) {
4+
display: contents;
5+
inset-block: 41%;
6+
scroll-padding-block: 98% auto;
7+
}
8+
</style>
9+
<script>
10+
document.addEventListener("DOMContentLoaded", () => {
11+
a.selectedIndex = 1;
12+
a.remove(0);
13+
window.__foo = a.options.length;
14+
})
15+
</script>
16+
<datalist tabindex="-1">
17+
</datalist>
18+
<select id="a" size="37">
19+
<optgroup>
20+
<option>

0 commit comments

Comments
 (0)