Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
8eb5f40
Bug 2012721 [wpt PR 57357] - Add 'none' keyword for upper/lower bound…
tursunova Feb 2, 2026
4d4f9f2
Bug 2012721 [wpt PR 57357] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 27, 2026
8128886
Bug 2012612 [wpt PR 57346] - HTML: style load event not fired for DOM…
zcorpan Feb 2, 2026
d7f770f
Bug 2012831 [wpt PR 57365] - Throw TypeError for incompatible types i…
zeesuyeon Feb 2, 2026
47b959d
Bug 2012831 [wpt PR 57365] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
06bdc62
Bug 2012688 [wpt PR 57356] - url: more drive letter quirk coverage, a…
nektro Feb 2, 2026
c4a6d0f
Bug 2012688 [wpt PR 57356] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
5bd591f
Bug 2012748 [wpt PR 57361] - [soft navigations] Set up paint tracking…
shaseley Feb 2, 2026
1f00da9
Bug 2012839 [wpt PR 57369] - Add fuzz annotation to WPT fragmented-at…
dholbert Feb 2, 2026
46498d3
Bug 2012945 [wpt PR 57358] - When link rel=stylesheet media attribute…
noamr Feb 2, 2026
6a46723
Bug 2012945 [wpt PR 57358] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
b0c74a9
Bug 2012772 [wpt PR 57362] - Fix focus navigation for popover that is…
perryuwang Feb 2, 2026
cdefa29
Bug 2012851 [wpt PR 57370] - Add missing WPT coverage for CustomEleme…
soosungp33 Feb 2, 2026
189c32e
Bug 2012851 [wpt PR 57370] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
70f1cca
Bug 2012777 [wpt PR 57363] - Fix missing upgrade when custom elements…
soosungp33 Feb 2, 2026
dbef9d3
Bug 2012777 [wpt PR 57363] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
41a9d41
Bug 2012867 [wpt PR 57371] - Implement the CSS image-animation proper…
DevSDK Feb 2, 2026
41a48bc
Bug 2012867 [wpt PR 57371] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
a30e72d
Bug 2012871 [wpt PR 57372] - Use t.step_timeout in fetch-frame-resour…
yoshisatoyanagisawa Feb 2, 2026
c2cfaee
Bug 2006383 [wpt PR 56778] - Map `overflow-clip`, `overflow-clip-marg…
stalgiag Feb 2, 2026
fe70120
Bug 2012941 [wpt PR 57373] - Revert "Implement the CSS image-animatio…
tasak Feb 2, 2026
5de9673
Bug 2012837 [wpt PR 57368] - Column balancing: Include ruby text in s…
mstensho Feb 2, 2026
dd7d07f
Bug 2012837 [wpt PR 57368] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
5b6555f
Bug 2012944 [wpt PR 57374] - Drop 'portrait' from size descriptor whe…
lilles Feb 2, 2026
bfd8c53
Bug 2012944 [wpt PR 57374] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
c95e6ca
Bug 2012836 [wpt PR 57367] - Column balancing: Propagate unbreakable …
mstensho Feb 2, 2026
7468e58
Bug 2012954 [wpt PR 57375] - layout: Suppress soft wrap opportunities…
RichardTjokroutomo Feb 2, 2026
1a13155
Bug 2012972 [wpt PR 57376] - [WPT] Fix connect-src-webtransport CSP t…
antosart Feb 2, 2026
48fedf3
Bug 2012972 [wpt PR 57376] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
c276d11
Bug 2012834 [wpt PR 57366] - Column balancing: Account for float marg…
mstensho Feb 2, 2026
042d3eb
Bug 2012834 [wpt PR 57366] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
ed64112
Bug 2012983 [wpt PR 57378] - Sync interfaces/ with @webref/idl 3.72.0…
github-actions[bot] Feb 2, 2026
d237746
Bug 2013030 [wpt PR 57382] - Remove Bidding and Auction Serialization…
brusshamilton Feb 2, 2026
d5b3abb
Bug 2013024 [wpt PR 57380] - Freeze scope snapshot size and offset., …
skobes-chromium Feb 2, 2026
03497c7
Bug 2013024 [wpt PR 57380] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
b5ed904
Bug 2013034 [wpt PR 57384] - Only support range syntax for range type…
lilles Feb 2, 2026
779f8e4
Bug 2013067 [wpt PR 57388] - Implement shadow painting for border-sha…
danielsakhapov Feb 2, 2026
ed5ad91
Bug 2013067 [wpt PR 57388] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
fed170e
Bug 2013064 [wpt PR 57387] - [Gap Decorations]: Implement `rule-visib…
Feb 2, 2026
079c681
Bug 2013064 [wpt PR 57387] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
49223f4
Bug 2007625 [wpt PR 56912] - layout: Support `content: <image>` on no…
andreubotella Feb 2, 2026
049eb55
Bug 2007625 [wpt PR 56912] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
a329930
Bug 2013032 [wpt PR 57383] - Blink: Align var() keyframe easing fallb…
Feb 2, 2026
bd703f3
Bug 2013027 [wpt PR 57381] - Don't let floats/OOFs affect orphans / w…
mstensho Feb 2, 2026
888c459
Bug 2013027 [wpt PR 57381] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
cad9fd9
Bug 2013083 [wpt PR 57391] - Make SnapAfterLayout respect scroll-beha…
DavMila Feb 2, 2026
914aca9
Bug 2013083 [wpt PR 57391] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
cdb61d9
Bug 2013089 [wpt PR 57392] - [PEPC] Fix crash when a PermissionElemen…
Feb 2, 2026
bec2238
Bug 2013098 [wpt PR 57393] - Remove content from blank.html, a=testonly
josepharhar Feb 2, 2026
126ce21
Bug 2013128 [wpt PR 57397] - Drop tentative tag from scroll snap test…
DavMila Feb 2, 2026
41142af
Bug 2013128 [wpt PR 57397] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 28, 2026
bd03caf
Bug 2013131 [wpt PR 57398] - Fix relatedtarget shadow leak in drag ev…
mfreed7 Feb 2, 2026
ac4d10b
Bug 2013131 [wpt PR 57398] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 29, 2026
3971f18
Bug 2013140 [wpt PR 57399] - [iframe] Add the `frame-sizing` property…
kojiishi Feb 2, 2026
5a1f68c
Bug 2013140 [wpt PR 57399] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 29, 2026
5059d36
Bug 2013148 [wpt PR 57400] - Prep user-select tests for potential Int…
dandclark Feb 2, 2026
600cd5f
Bug 2013148 [wpt PR 57400] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 29, 2026
a5cec7e
Bug 2013180 [wpt PR 57404] - script: Ensure UA shadow DOM is initiali…
stevennovaryo Feb 2, 2026
5ab97ff
Bug 2013049 [wpt PR 57386] - ContainerTiming: decouple web platform t…
jdapena Feb 2, 2026
bc30ea7
Bug 2013231 [wpt PR 57407] - Fix shape-outside-computed test, a=testonly
noamr Feb 2, 2026
5005d96
Bug 2013228 [wpt PR 57406] - Initial: Deferred cross-document commit,…
noamr Feb 2, 2026
f73857f
Bug 2013228 [wpt PR 57406] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 29, 2026
c500447
Bug 2013255 [wpt PR 57408] - base: When normalizing `RopeIndex` ensur…
mrobinson Feb 2, 2026
250079c
Bug 2013266 [wpt PR 57411] - Initial support for trusted types with s…
noamr Feb 2, 2026
18523d0
Bug 2013276 [wpt PR 57412] - Reapply "Implement the CSS image-animati…
DevSDK Feb 2, 2026
1c9edb6
Bug 2013276 [wpt PR 57412] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 29, 2026
4f38da8
Bug 2013285 [wpt PR 57413] - Deflake new defer-back test, a=testonly
noamr Feb 2, 2026
ea3b3ce
Bug 2013112 [wpt PR 57394] - [Connection-Allowlist] Local dedicated w…
shivanigithub Feb 2, 2026
4d6a5af
Bug 2013332 [wpt PR 57417] - Improve select restoration with no match…
josepharhar Feb 2, 2026
df7c44c
Bug 2009842 [wpt PR 57132] - Fix #52989: add requests as a requiremen…
gsnedders Feb 2, 2026
45661aa
Bug 2013353 [wpt PR 57420] - Update CODEOWNERS, a=testonly
wpt-pr-bot Feb 2, 2026
ae3af14
Bug 2013225 [wpt PR 57405] - script: Clear layout data on shadow root…
mrobinson Feb 2, 2026
e69ae56
Bug 2013356 [wpt PR 57421] - Ignore outgoing forced breaks from table…
mstensho Feb 2, 2026
fb4a1d2
Bug 2013356 [wpt PR 57421] - Update wpt metadata, a=testonly
moz-wptsync-bot Jan 29, 2026
beb9b3a
Bug 2013824 - [wpt-sync] Update web-platform-tests to 7bd9a8e7195e104…
moz-wptsync-bot Feb 2, 2026
7fa95dd
Bug 1984095 - [devtools] Don't disable properties in Rule#_updateText…
nchevobbe Feb 3, 2026
e29e1a7
Bug 2012350 [Wayland] When titlebar state is changed, register VSync …
stransky Feb 3, 2026
b5ea60e
Bug 2013143 - Let overlay of WebGL/WebGPU by using IDCompositionTextu…
Feb 3, 2026
e297392
Bug 2013839 - Part 1: Removed unused fields in the `onboarding` confi…
t-p-white Feb 3, 2026
cd7dd1a
Bug 2013839 - Part 2: Reformat `OnboardingScreenRedesign` (result of …
t-p-white Feb 3, 2026
4cb5565
Bug 2013839 - Part 3: Remove the `main image` Composables that were r…
t-p-white Feb 3, 2026
219d39c
Bug 2014040 - Update android nightly application-services version bum…
updatebot-ci Feb 3, 2026
1644c82
Bug 2011508 - Don't autoplay media with ForceMediaDocument (i.e. in p…
evilpie Feb 3, 2026
e3ac9b7
Bug 2011508 - Test that we don't autoplay media with ForceMediaDocume…
evilpie Feb 3, 2026
527482f
Bug 2013551 - Fix range check for GC storeBufferScaling parameter r=s…
jonco3 Feb 3, 2026
bb450e8
Bug 2013599 - Throw for unexpected module status during evaluation r=…
jonco3 Feb 3, 2026
f2d5cbf
Revert "Bug 2011508 - Test that we don't autoplay media with ForceMed…
amarc-mozilla Feb 3, 2026
4e8102f
Bug 2013427 - Normalize degenerate ratios harder. r=jwatt
emilio Feb 3, 2026
6ffb169
Bug 2013824 - update test expectations for image-animation-img-runnin…
Feb 3, 2026
8e222d8
Bug 2013824 - update test expectations for image-animation-img-runnin…
amarc-mozilla Feb 3, 2026
4021464
Bug 2011709 - Make combobox select use a shadow tree for its contents…
emilio Feb 3, 2026
753d657
Bug 2013458 - Implement style system support for 'text-box' property.…
kbhomes Feb 3, 2026
6ff3401
Bug 2009945 - Ensure about:opentabs tab is replaced in split view if …
kcochrane-mozilla Feb 3, 2026
35aea82
Bug 2011673 - Fix beta perma fail in browser_aboutNetError.js. r=jbrown
Feb 3, 2026
64c4fbf
Bug 2011705 - Fix beta perma fail in browser_bug680727.js. r=jbrown,m…
Feb 3, 2026
e8cc72f
Revert "Bug 2011705 - Fix beta perma fail in browser_bug680727.js. r=…
amarc-mozilla Feb 3, 2026
2fd12f8
Bug 2011726: Tab notes validates partial and malformed canonical URLs…
jswinarton Feb 3, 2026
f0727f2
Bug 2013273 - Make nsStretchDirection an enum class. r=emilio,layout-…
fred-wang Feb 3, 2026
4dc270c
Bug 2013273 - Make nsMencloseNotation an enum class. r=layout-reviewe…
fred-wang Feb 3, 2026
fb10e5c
Bug 2013273 - Make mtable eAlign an enum class. r=layout-reviewers,dshin
fred-wang Feb 3, 2026
88aaf03
Bug 2013273 - Convert MathML stretch flags to mozilla::EnumSet. r=lay…
fred-wang Feb 3, 2026
d5bd710
Bug 2013273 - Ensure underlying types for MathMLFrameType and Drawing…
fred-wang Feb 3, 2026
4453f45
Bug 2013273 - Modernize implementation of nsOperatorFlags. r=layout-r…
fred-wang Feb 3, 2026
96ed486
Bug 2013273 - Make GetPreferredStretchSize calculation mode an enum c…
fred-wang Feb 3, 2026
fdb65c5
Bug 1867743 - Part 7: Implement popover=hint r=dom-core,smaug
keithamus Feb 3, 2026
b72f9fa
Bug 1867743 - Part 8: Implement accessible relations for hint popover…
keithamus Feb 3, 2026
2ce2a94
Bug 2014019 - Fix RTL text on textPath r=jwatt
longsonr Feb 3, 2026
003cc29
Bug 2014150 - Fix UI tests affected by compose snapshot state being o…
AndiAJ Feb 3, 2026
60c5c52
Bug 1882452 - disable browser_popupNotification_security_delay.js on …
Feb 3, 2026
c485574
Bug 2013436 - [Feature] Land new user TOU onboarding modal for Window…
Feb 3, 2026
50fcb7b
Bug 2012464 - Refactor `PlacesStorage` and associated tests to use st…
mcarare Feb 3, 2026
c822f6c
Bug 2012847 - Add splitview onboarding strings r=fluent-reviewers,omc…
nikk15 Feb 3, 2026
0def8c1
Bug 2014159 - Fix wrongful revert of psutil dep on mach site from bug…
Feb 3, 2026
8d80641
Bug 2013824 - Update metadata for preload/preload-referrer-policy-sub…
lutien Feb 3, 2026
2b1f985
Bug 2013824 - Fix indent error
amarc-mozilla Feb 3, 2026
2c5b07f
Bug 2012866 - remove unused functions nr_reg_compute_type and nr_stre…
mfromanmoz Feb 3, 2026
e789a3a
Bug 2012866 - cast all the void* cb_arg assignments. r=dbaker
mfromanmoz Feb 3, 2026
a60d980
Bug 2012866 - const char* fixes for nr_reg_type_name and nr_reg_actio…
mfromanmoz Feb 3, 2026
fb00f85
Bug 2012866 - const char* fixes for nrappkit's r_errors.* r=bwc
mfromanmoz Feb 3, 2026
002f945
Bug 2012866 - const char* fixes in nrappkit's util directory. r=dbaker
mfromanmoz Feb 3, 2026
1679ba0
Bug 2012866 - const char* fixes in nrappkit's log and registry direct…
mfromanmoz Feb 3, 2026
7ef2996
Bug 2012866 - make passing NR_registry pointers const char* r=bwc
mfromanmoz Feb 3, 2026
a044ecd
Bug 2012866 - const char* fixes in nICEr. r=dbaker
mfromanmoz Feb 3, 2026
b1c50f2
Bug 2012866 - casting fixes in nrappkit and nICEr. r=dbaker
mfromanmoz Feb 3, 2026
a545bd5
Bug 2013339 - improve RCALLOC ergonomics by adding type casting where…
mfromanmoz Feb 3, 2026
5d5c4b6
Bug 2013368 - add fallthrough annotations to nICEr. r=dbaker
mfromanmoz Feb 3, 2026
7606f45
Bug 2013368 - make sure all vars are initialized before potential ABO…
mfromanmoz Feb 3, 2026
7b8c4e1
Bug 2013368 - don't use 'class' for variable name. r=dbaker
mfromanmoz Feb 3, 2026
169b182
Bug 2013368 - fixes to satisfy stringop-truncation warnings. r=bwc
mfromanmoz Feb 3, 2026
543035d
Bug 1979957 - Add validation stage to video analysis startup tests. r…
Andrej1198 Feb 3, 2026
579db36
Bug 2012613 - Disable test_ext_urlclassifier.js in artifact mode r=baku
chutten Feb 3, 2026
3e42831
Bug 2012565 - Track source location while iterating bytecode ops in B…
mstange Feb 3, 2026
30c4cfc
Bug 2006571 - Use separate constructors for root and content WebRende…
jamienicol Feb 3, 2026
850e4d4
Bug 2006571 - Finish root WebRenderBridgeParent initialisation after …
jamienicol Feb 3, 2026
70bccaa
Bug 2006571 - Dispatch WebRenderAPI creation asynchronously to Render…
jamienicol Feb 3, 2026
569082f
Bug 2006571 - Remove invalid assertion from UiCompositorControllerChi…
jamienicol Feb 3, 2026
f429375
Bug 2006571 - Make BrowserChild::SendEnsureLayersConnected fallible. …
jamienicol Feb 3, 2026
7880df5
Bug 2014012 - Remove MOZ_CRASH_UNSAFE_FMT, r=glandium,gsvelto,sergesa…
mystor Feb 3, 2026
363d42c
Bug 2003764 - Handle drag and drop of splitview containers when part …
nikk15 Feb 3, 2026
9e06699
Revert "Bug 1867743 - Part 8: Implement accessible relations for hint…
Feb 3, 2026
387cbab
Bug 2011853 - Make the "Show less frequently" option of addon suggest…
0c0w3 Feb 3, 2026
81a31dd
Bug 2012741 - Add strings for AI Window Firefox ToU modal r=omc-revie…
sarahhjchung Feb 3, 2026
cffcc7b
Bug 2011471 - [marionette] Simplify logic for commands manipulating t…
whimboo Feb 3, 2026
8f3163a
Bug 2013889 - [ci] Add 'head_ref' to standard index routes for Git-ba…
ahal Feb 3, 2026
cd6583e
Bug 2013405 - Part 5: Remove unused Pocket consumer key from BuildCon…
gabrielluong Feb 3, 2026
901826b
Bug 2011508 - Don't autoplay media with ForceMediaDocument (i.e. in p…
evilpie Feb 3, 2026
918831d
Bug 2011508 - Test that we don't autoplay media with ForceMediaDocume…
evilpie Feb 3, 2026
b526335
Bug 2013023 - Add click telemetry to breifing card r=Dre,home-newtab-…
nathan-barrett Feb 3, 2026
962a5db
Bug 2013023 - Add impression telemetry to briefing card r=home-newtab…
Feb 3, 2026
12231d6
Bug 2010353 - Remove overly restrictive assertion in ColumnSetWrapper…
aethanyc Feb 3, 2026
c572b5d
Revert "Bug 2011902 - Set `MOZ_DISTRIBUTION_ID` default back to `org.…
Feb 3, 2026
36aa9d1
Revert "Bug 2011902 - Only set `--with-distribution-id=mozilla-offici…
Feb 3, 2026
ffac182
Revert "Bug 2010200 - Use `MOZ_DISTRIBUTION_ID` as `distribution.id` …
Feb 3, 2026
6360cc4
Revert "Bug 2011471 - [marionette] Simplify logic for commands manipu…
Feb 3, 2026
f4ca828
Revert "Bug 2013368 - fixes to satisfy stringop-truncation warnings. …
Feb 3, 2026
111610b
Revert "Bug 2013339 - improve RCALLOC ergonomics by adding type casti…
Feb 3, 2026
bcf858d
Revert "Bug 2012866 - casting fixes in nrappkit and nICEr. r=dbaker" …
Feb 3, 2026
b30ccfb
No Bug - Bumping Firefox l10n changesets r=release a=l10n-bump DONTBU…
Feb 3, 2026
0640b1f
No Bug - Bumping Mobile l10n changesets r=release a=l10n-bump DONTBUI…
Feb 3, 2026
a638db7
Revert "Bug 2013405 - Part 5: Remove unused Pocket consumer key from …
Feb 3, 2026
ab8a904
Bug 2013891 - Remove useless const qualifier in LocalStorageCache and…
ArnaudBienner Feb 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 13 additions & 0 deletions accessible/base/nsAccessibilityService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -884,6 +884,19 @@ void nsAccessibilityService::TableLayoutGuessMaybeChanged(
}
}

void nsAccessibilityService::ComboboxValueChanged(nsIContent* aSelect) {
DocAccessible* document =
GetDocAccessible(aSelect->OwnerDoc()->GetPresShell());
if (!document) {
return;
}
if (LocalAccessible* accessible = document->GetAccessible(aSelect)) {
MOZ_ASSERT(accessible->IsCombobox());
document->FireDelayedEvent(nsIAccessibleEvent::EVENT_TEXT_VALUE_CHANGE,
accessible);
}
}

void nsAccessibilityService::ComboboxOptionMaybeChanged(
PresShell* aPresShell, nsIContent* aMutatingNode) {
DocAccessible* document = GetDocAccessible(aPresShell);
Expand Down
4 changes: 3 additions & 1 deletion accessible/base/nsAccessibilityService.h
Original file line number Diff line number Diff line change
Expand Up @@ -203,10 +203,12 @@ class nsAccessibilityService final : public mozilla::a11y::DocManager,
nsIContent* aContent);

/**
* Notifies when a combobox <option> text or label changes.
* Notifies when a combobox's <option> text or label changes.
*/
void ComboboxOptionMaybeChanged(mozilla::PresShell*,
nsIContent* aMutatingNode);
// Notifies when a combobox's selected index changes.
void ComboboxValueChanged(nsIContent*);

void UpdateText(mozilla::PresShell* aPresShell, nsIContent* aContent);

Expand Down
30 changes: 20 additions & 10 deletions accessible/base/nsCoreUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
#include "mozilla/MouseEvents.h"
#include "mozilla/PresShell.h"
#include "mozilla/ScrollContainerFrame.h"
#include "mozilla/StaticPrefs_dom.h"
#include "mozilla/TouchEvents.h"
#include "nsGkAtoms.h"

Expand All @@ -36,6 +35,10 @@
#include "nsTreeColumns.h"
#include "mozilla/dom/DocumentInlines.h"
#include "mozilla/dom/Element.h"
#include "mozilla/dom/HTMLOptGroupElement.h"
#include "mozilla/dom/HTMLOptionElement.h"
#include "mozilla/dom/HTMLSelectElement.h"
#include "mozilla/dom/AncestorIterator.h"
#include "mozilla/dom/ElementInternals.h"
#include "mozilla/dom/HTMLLabelElement.h"
#include "mozilla/dom/MouseEventBinding.h"
Expand Down Expand Up @@ -584,26 +587,33 @@ bool nsCoreUtils::CanCreateAccessibleWithoutFrame(nsIContent* aContent) {
if (!element) {
return false;
}
if (!element->HasServoData() || Servo_Element_IsDisplayNone(element)) {
// Out of the flat tree or in a display: none subtree.
return false;
// <option> and <optgroup> can create an accessible for comboboxes, if our
// select can also create an accessible (even if they're display: none)
if (auto* option = dom::HTMLOptionElement::FromNode(element)) {
if (auto* select = option->GetSelect(); select && select->IsCombobox()) {
element = select;
}
} else if (auto* optgroup = dom::HTMLOptGroupElement::FromNode(element)) {
if (auto* select = optgroup->GetSelect(); select && select->IsCombobox()) {
element = select;
}
}

// If we aren't display: contents or option/optgroup we can't create an
// accessible without frame. Our select combobox code relies on the latter.
if (!element->IsDisplayContents() &&
!element->IsAnyOfHTMLElements(nsGkAtoms::option, nsGkAtoms::optgroup)) {
// Note that we need to check primary frame explicitly for the <select> case
// above.
if (!element->GetPrimaryFrame() && !element->IsDisplayContents()) {
return false;
}

// Even if we're display: contents or optgroups, we might not be able to
// create an accessible if we're in a content-visibility: hidden subtree.
//
// To check that, find the closest ancestor element with a frame.
for (nsINode* ancestor = element->GetFlattenedTreeParentNode();
ancestor && ancestor->IsContent();
ancestor = ancestor->GetFlattenedTreeParentNode()) {
if (nsIFrame* f = ancestor->AsContent()->GetPrimaryFrame()) {
for (nsIContent* c :
element->InclusiveFlatTreeAncestorsOfType<nsIContent>()) {
if (nsIFrame* f = c->GetPrimaryFrame()) {
if (f->HidesContent(nsIFrame::IncludeContentVisibility::Hidden) ||
f->IsHiddenByContentVisibilityOnAnyAncestor(
nsIFrame::IncludeContentVisibility::Hidden)) {
Expand Down
2 changes: 1 addition & 1 deletion accessible/generic/RootAccessible.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ const char* const kEventTypes[] = {
#endif
// Fired when list or tree selection changes.
"select",
// Fired when value changes immediately, wether or not focused changed.
// Fired when value changes immediately, whether or not focused changed.
"ValueChange", "AlertActive", "TreeRowCountChanged", "TreeInvalidated",
// add ourself as a OpenStateChange listener (custom event fired in
// tree.xml)
Expand Down
111 changes: 70 additions & 41 deletions browser/base/content/test/about/browser_aboutNetError.js
Original file line number Diff line number Diff line change
Expand Up @@ -292,47 +292,76 @@ add_task(async function onlyAllow3DESWithDeprecatedTLS() {
}
);

// 3DES can be disabled separately.
Services.prefs.setBoolPref(DES_PREF, false);
await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:blank" },
async browser => {
BrowserTestUtils.startLoadingURIString(browser, TRIPLEDES_PAGE);
await BrowserTestUtils.waitForErrorPage(browser);
let prefWasReset = TestUtils.waitForPrefChange(DES_PREF);
await SpecialPowers.spawn(browser, [], async function () {
const doc = content.document;
const netErrorCard =
doc.querySelector("net-error-card")?.wrappedJSObject;
Assert.ok(netErrorCard, "netErrorCard is rendered.");

netErrorCard.advancedButton.scrollIntoView();
EventUtils.synthesizeMouseAtCenter(
netErrorCard.advancedButton,
{},
content
);
await ContentTaskUtils.waitForCondition(
() => ContentTaskUtils.isVisible(netErrorCard.advancedContainer),
"Advanced container is visible"
);

const prefResetButton = netErrorCard.prefResetButton;
Assert.ok(prefResetButton, "prefResetButton exists in the DOM.");
netErrorCard.prefResetButton.scrollIntoView();
await ContentTaskUtils.waitForCondition(
() => ContentTaskUtils.isVisible(netErrorCard.prefResetButton),
"Pref reset button is visible"
);
ok(
ContentTaskUtils.isVisible(prefResetButton),
"prefResetButton is visible"
);
prefResetButton.click();
});
await prefWasReset;
}
);
for (let feltPrivacy of [true, false]) {
// 3DES can be disabled separately.
Services.prefs.setBoolPref(DES_PREF, false);
await SpecialPowers.pushPrefEnv({
set: [["security.certerrors.felt-privacy-v1", feltPrivacy]],
});

await BrowserTestUtils.withNewTab(
{ gBrowser, url: "about:blank" },
async browser => {
BrowserTestUtils.startLoadingURIString(browser, TRIPLEDES_PAGE);
await BrowserTestUtils.waitForErrorPage(browser);
let prefWasReset = TestUtils.waitForPrefChange(DES_PREF);

if (feltPrivacy) {
await SpecialPowers.spawn(browser, [], async function () {
const doc = content.document;
const netErrorCard =
doc.querySelector("net-error-card")?.wrappedJSObject;
Assert.ok(netErrorCard, "netErrorCard is rendered.");

netErrorCard.advancedButton.scrollIntoView();
EventUtils.synthesizeMouseAtCenter(
netErrorCard.advancedButton,
{},
content
);
await ContentTaskUtils.waitForCondition(
() => ContentTaskUtils.isVisible(netErrorCard.advancedContainer),
"Advanced container is visible"
);

const prefResetButton = netErrorCard.prefResetButton;
Assert.ok(prefResetButton, "prefResetButton exists in the DOM.");
netErrorCard.prefResetButton.scrollIntoView();
await ContentTaskUtils.waitForCondition(
() => ContentTaskUtils.isVisible(netErrorCard.prefResetButton),
"Pref reset button is visible"
);
ok(
ContentTaskUtils.isVisible(prefResetButton),
"prefResetButton is visible"
);

prefResetButton.click();
});
} else {
await SpecialPowers.spawn(browser, [], async function () {
const doc = content.document;

const prefResetButton = doc.getElementById("prefResetButton");
Assert.ok(prefResetButton, "prefResetButton exists in the DOM.");

await ContentTaskUtils.waitForCondition(
() => ContentTaskUtils.isVisible(prefResetButton),
"Pref reset button is visible"
);
ok(
ContentTaskUtils.isVisible(prefResetButton),
"prefResetButton is visible"
);

prefResetButton.click();
});
}

await prefWasReset;
}
);
}

resetPrefs();
});
3 changes: 3 additions & 0 deletions browser/base/content/test/popupNotifications/browser.toml
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@ skip-if = [
]

["browser_popupNotification_security_delay.js"]
skip-if = [
"os == 'win' && arch == 'x86'", # Bug 1882452
]

["browser_popupNotification_selection_required.js"]
skip-if = [
Expand Down
18 changes: 11 additions & 7 deletions browser/components/aboutwelcome/content-src/aboutwelcome.scss
Original file line number Diff line number Diff line change
Expand Up @@ -2265,6 +2265,14 @@ html {
background: url('chrome://global/skin/icons/arrow-down.svg') center center / 100% no-repeat;
}

.external-link-icon {
width: 1.2em;
height: 1.3em;
-moz-context-properties: fill;
fill: currentColor;
background: url('chrome://global/skin/icons/open-in-new.svg') center center / 100% no-repeat;
}

&[aria-expanded='true'] {
border-end-start-radius: 0;
border-end-end-radius: 0;
Expand Down Expand Up @@ -2330,7 +2338,8 @@ html {
}

&:has(+ .content-tile.has-header) {
button.tile-header[aria-expanded='false'] {
button.tile-header[aria-expanded='false'],
button.tile-header[role='link'] {
border-bottom: none;
}
}
Expand All @@ -2349,12 +2358,7 @@ html {
display: flex;
flex-direction: column;

.header-title {
font-weight: var(--heading-font-weight);
line-height: 1.5;
}

.header-subtitle {
.header-title, .header-subtitle {
font-weight: normal;
line-height: 1.5;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,20 @@ export const ContentTiles = props => {

const toggleTile = (index, tile) => {
const tileId = `${tile.type}${tile.id ? "_" : ""}${tile.id ?? ""}_header`;
setExpandedTileIndex(prevIndex => (prevIndex === index ? null : index));
AboutWelcomeUtils.sendActionTelemetry(props.messageId, tileId);

if (tile.type === "link" && tile.action) {
props.handleAction(
{
currentTarget: {
value: tileId,
},
},
tile.action
);
} else {
setExpandedTileIndex(prevIndex => (prevIndex === index ? null : index));
}
};

const toggleTiles = () => {
Expand All @@ -194,6 +206,14 @@ export const ContentTiles = props => {
const isExpanded = expandedTileIndex === index;
const { header, title, subtitle } = tile;

const tileHeaderProps =
tile.type === "link"
? { role: "link" }
: {
"aria-expanded": isExpanded,
"aria-controls": `tile-content-${index}`,
};

return (
<div
key={index}
Expand All @@ -204,8 +224,7 @@ export const ContentTiles = props => {
<button
className="tile-header secondary"
onClick={() => toggleTile(index, tile)}
aria-expanded={isExpanded}
aria-controls={`tile-content-${index}`}
{...tileHeaderProps}
style={AboutWelcomeUtils.getValidStyle(header.style, HEADER_STYLES)}
>
<div className="header-text-container">
Expand All @@ -218,7 +237,11 @@ export const ContentTiles = props => {
</Localized>
)}
</div>
<div className="arrow-icon"></div>
<div
className={
tile.type === "link" ? "external-link-icon" : "arrow-icon"
}
></div>
</button>
)}
{(title || subtitle) && (
Expand All @@ -241,7 +264,7 @@ export const ContentTiles = props => {
)}
</div>
)}
{isExpanded || !header ? (
{tile.type !== "link" && (isExpanded || !header) ? (
<div className="tile-content" id={`tile-content-${index}`}>
{tile.type === "addons-picker" && tile.data && (
<AddonsPicker
Expand Down
Loading
Loading