Skip to content

Commit 2f14f7a

Browse files
committed
Revert "Bug 1707584: apply code formatting via Lando" for causing Crashtest failures on Assertions.h
This reverts commit 9cd813f. Revert "Bug 1707584 - part5 : implement :volume-locked pseudo class. r=firefox-style-system-reviewers,emilio" This reverts commit 911b73e. Revert "Bug 1707584 - part4 : implement :muted pseudo class. r=media-playback-reviewers,firefox-style-system-reviewers,emilio,chunmin" This reverts commit cc9c51c. Revert "Bug 1707584 - part3 : implement :buffering and :stalled pseudo classes. r=media-playback-reviewers,firefox-style-system-reviewers,emilio,chunmin" This reverts commit 606b5bc. Revert "Bug 1707584 - part2 : implement :seeking pseudo class. r=media-playback-reviewers,firefox-style-system-reviewers,emilio,chunmin" This reverts commit adc2545. Revert "Bug 1707584 - part1 : implement :playing and :paused pseudo classes. r=media-playback-reviewers,firefox-style-system-reviewers,emilio,chunmin" This reverts commit 4c7319e.
1 parent c262421 commit 2f14f7a

File tree

16 files changed

+51
-131
lines changed

16 files changed

+51
-131
lines changed

dom/base/rust/lib.rs

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use bitflags::bitflags;
88
use malloc_size_of::malloc_size_of_is_0;
99

10-
pub const HEADING_LEVEL_OFFSET: usize = 57;
10+
pub const HEADING_LEVEL_OFFSET: usize = 52;
1111

1212
bitflags! {
1313
/// Event-based element states.
@@ -144,16 +144,6 @@ bitflags! {
144144
const ACTIVE_VIEW_TRANSITION = 1u64 << 50;
145145
/// For :-moz-suppress-for-print-selection.
146146
const SUPPRESS_FOR_PRINT_SELECTION = 1u64 << 51;
147-
/// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-paused
148-
const PAUSED = 1u64 << 52;
149-
/// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-seeking
150-
const SEEKING = 1u64 << 53;
151-
/// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-buffering
152-
const BUFFERING = 1u64 << 54;
153-
/// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-stalled
154-
const STALLED = 1u64 << 55;
155-
/// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-muted
156-
const MUTED = 1u64 << 56;
157147
/// https://drafts.csswg.org/selectors-5/#headings
158148
/// These 4 bits are used to pack the elements heading level into the element state
159149
/// Heading levels can be from 1-9 so 4 bits allows us to express the full range.

dom/media/mediaelement/HTMLMediaElement.cpp

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2474,11 +2474,6 @@ void HTMLMediaElement::AbortExistingLoads() {
24742474

24752475
if (mDecoder) {
24762476
fireTimeUpdate = mDecoder->GetCurrentTime() != 0.0;
2477-
// When aborting during seeking, remove the seeking state since the decoder
2478-
// won't call SeekCompleted() or SeekAborted() after being shut down.
2479-
if (Seeking()) {
2480-
RemoveStates(ElementState::SEEKING);
2481-
}
24822477
ShutdownDecoder();
24832478
}
24842479
if (mSrcStream) {
@@ -2531,7 +2526,6 @@ void HTMLMediaElement::AbortExistingLoads() {
25312526
// indirectly which depends on mPaused. So we need to update mPaused first.
25322527
if (!mPaused) {
25332528
mPaused = true;
2534-
UpdatePlaybackPseudoClasses();
25352529
PlayPromise::RejectPromises(TakePendingPlayPromises(),
25362530
NS_ERROR_DOM_MEDIA_ABORT_ERR);
25372531
}
@@ -3560,7 +3554,6 @@ void HTMLMediaElement::Seek(double aTime, SeekTarget::Type aSeekType,
35603554
// The media backend is responsible for dispatching the timeupdate
35613555
// event if it changes the playback position as a result of the seek.
35623556
LOG(LogLevel::Debug, ("%p SetCurrentTime(%f) starting seek", this, aTime));
3563-
AddStates(ElementState::SEEKING);
35643557
mDecoder->Seek(aTime, aSeekType);
35653558

35663559
// We changed whether we're seeking so we need to AddRemoveSelfReference.
@@ -3633,7 +3626,6 @@ void HTMLMediaElement::PauseInternal() {
36333626
}
36343627
bool oldPaused = mPaused;
36353628
mPaused = true;
3636-
UpdatePlaybackPseudoClasses();
36373629
// Step 1,
36383630
// https://html.spec.whatwg.org/multipage/media.html#internal-pause-steps
36393631
mCanAutoplayFlag = false;
@@ -3718,8 +3710,6 @@ void HTMLMediaElement::SetMutedInternal(uint32_t aMuted) {
37183710
return;
37193711
}
37203712

3721-
// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-muted
3722-
SetStates(ElementState::MUTED, mMuted & MUTED_BY_CONTENT);
37233713
SetVolumeInternal();
37243714
}
37253715

@@ -4741,8 +4731,6 @@ void HTMLMediaElement::Init() {
47414731
mWatchManager.Watch(mTracksCaptured,
47424732
&HTMLMediaElement::UpdateOutputTrackSources);
47434733
mWatchManager.Watch(mReadyState, &HTMLMediaElement::UpdateOutputTrackSources);
4744-
mWatchManager.Watch(mReadyState,
4745-
&HTMLMediaElement::UpdatePlaybackPseudoClasses);
47464734

47474735
mWatchManager.Watch(mDownloadSuspendedByCache,
47484736
&HTMLMediaElement::UpdateReadyStateInternal);
@@ -4773,7 +4761,6 @@ void HTMLMediaElement::Init() {
47734761

47744762
OwnerDoc()->SetDocTreeHadMedia();
47754763
mShutdownObserver->Subscribe(this);
4776-
UpdatePlaybackPseudoClasses();
47774764
mInitialized = true;
47784765
}
47794766

@@ -5021,7 +5008,6 @@ void HTMLMediaElement::PlayInternal(bool aHandlingUserInput) {
50215008

50225009
const bool oldPaused = mPaused;
50235010
mPaused = false;
5024-
UpdatePlaybackPseudoClasses();
50255011
// Step 5,
50265012
// https://html.spec.whatwg.org/multipage/media.html#internal-play-steps
50275013
mCanAutoplayFlag = false;
@@ -5114,33 +5100,6 @@ void HTMLMediaElement::UpdateWakeLock() {
51145100
}
51155101
}
51165102

5117-
void HTMLMediaElement::UpdatePlaybackPseudoClasses() {
5118-
MOZ_ASSERT(NS_IsMainThread());
5119-
LOG(LogLevel::Debug,
5120-
("%p UpdatePlaybackPseudoClasses: mPaused=%d, mNetworkState=%d, "
5121-
"mReadyState=%d, mIsCurrentlyStalled=%d",
5122-
this, mPaused.Ref(), mNetworkState, mReadyState.Ref(),
5123-
mIsCurrentlyStalled));
5124-
AutoStateChangeNotifier notifier(*this, /*aNotify=*/true);
5125-
RemoveStatesSilently(ElementState::PAUSED | ElementState::BUFFERING |
5126-
ElementState::STALLED);
5127-
// We don’t need to update the playing state because these states are
5128-
// exclusive, and the `:playing` pseudo-class is determined by checking
5129-
// the element's PAUSED state.
5130-
if (mPaused) {
5131-
AddStatesSilently(ElementState::PAUSED);
5132-
return;
5133-
}
5134-
// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-buffering
5135-
if (mNetworkState == NETWORK_LOADING && mReadyState <= HAVE_CURRENT_DATA) {
5136-
AddStatesSilently(ElementState::BUFFERING);
5137-
// https://html.spec.whatwg.org/multipage/semantics-other.html#selector-stalled
5138-
if (mIsCurrentlyStalled) {
5139-
AddStatesSilently(ElementState::STALLED);
5140-
}
5141-
}
5142-
}
5143-
51445103
void HTMLMediaElement::CreateAudioWakeLockIfNeeded() {
51455104
MOZ_ASSERT(NS_IsMainThread());
51465105
if (AppShutdown::IsInOrBeyond(ShutdownPhase::AppShutdownConfirmed)) {
@@ -6207,7 +6166,6 @@ void HTMLMediaElement::SeekCompleted() {
62076166
// (Step 16)
62086167
// TODO (bug 1688131): run these steps in a stable state.
62096168
FireTimeUpdate(TimeupdateType::eMandatory);
6210-
RemoveStates(ElementState::SEEKING);
62116169
QueueEvent(u"seeked"_ns);
62126170
// We changed whether we're seeking so we need to AddRemoveSelfReference
62136171
AddRemoveSelfReference();
@@ -6225,7 +6183,6 @@ void HTMLMediaElement::SeekCompleted() {
62256183
}
62266184

62276185
void HTMLMediaElement::SeekAborted() {
6228-
RemoveStates(ElementState::SEEKING);
62296186
if (mSeekDOMPromise) {
62306187
AbstractMainThread()->Dispatch(NS_NewRunnableFunction(
62316188
__func__, [promise = std::move(mSeekDOMPromise)] {
@@ -6243,8 +6200,6 @@ void HTMLMediaElement::NotifySuspendedByCache(bool aSuspendedByCache) {
62436200

62446201
void HTMLMediaElement::DownloadSuspended() {
62456202
if (mNetworkState == NETWORK_LOADING) {
6246-
mIsCurrentlyStalled = false;
6247-
UpdatePlaybackPseudoClasses();
62486203
QueueEvent(u"progress"_ns);
62496204
}
62506205
ChangeNetworkState(NETWORK_IDLE);
@@ -6275,8 +6230,6 @@ void HTMLMediaElement::CheckProgress(bool aHaveNewProgress) {
62756230
: (now - mProgressTime >=
62766231
TimeDuration::FromMilliseconds(PROGRESS_MS) &&
62776232
mDataTime > mProgressTime)) {
6278-
mIsCurrentlyStalled = false;
6279-
UpdatePlaybackPseudoClasses();
62806233
QueueEvent(u"progress"_ns);
62816234
// Going back 1ms ensures that future data will have now > mProgressTime,
62826235
// and so will trigger another event. mDataTime is not reset because it
@@ -6302,8 +6255,6 @@ void HTMLMediaElement::CheckProgress(bool aHaveNewProgress) {
63026255

63036256
if (now - mDataTime >= TimeDuration::FromMilliseconds(STALL_MS)) {
63046257
if (!mMediaSource) {
6305-
mIsCurrentlyStalled = true;
6306-
UpdatePlaybackPseudoClasses();
63076258
QueueEvent(u"stalled"_ns);
63086259
} else {
63096260
ChangeDelayLoadStatus(false);
@@ -6656,7 +6607,6 @@ void HTMLMediaElement::ChangeNetworkState(nsMediaNetworkState aState) {
66566607

66576608
nsMediaNetworkState oldState = mNetworkState;
66586609
mNetworkState = aState;
6659-
UpdatePlaybackPseudoClasses();
66606610
LOG(LogLevel::Debug,
66616611
("%p Network state changed to %s", this, gNetworkStateToString[aState]));
66626612
DDLOG(DDLogCategory::Property, "network_state",
@@ -6775,8 +6725,6 @@ void HTMLMediaElement::CheckAutoplayDataReady() {
67756725
void HTMLMediaElement::RunAutoplay() {
67766726
mAllowedToPlayPromise.ResolveIfExists(true, __func__);
67776727
mPaused = false;
6778-
UpdatePlaybackPseudoClasses();
6779-
67806728
// We changed mPaused which can affect AddRemoveSelfReference
67816729
AddRemoveSelfReference();
67826730
UpdateSrcMediaStreamPlaying();
@@ -8120,7 +8068,6 @@ void HTMLMediaElement::AsyncResolvePendingPlayPromises() {
81208068
void HTMLMediaElement::AsyncRejectPendingPlayPromises(nsresult aError) {
81218069
if (!mPaused) {
81228070
mPaused = true;
8123-
UpdatePlaybackPseudoClasses();
81248071
QueueEvent(u"pause"_ns);
81258072
}
81268073

dom/media/mediaelement/HTMLMediaElement.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -915,11 +915,6 @@ class HTMLMediaElement : public nsGenericHTMLElement,
915915
virtual void WakeLockRelease();
916916
virtual void UpdateWakeLock();
917917

918-
// This must be called immediately after monitor attributes change, and cannot
919-
// wait for the Watchable notification, because some pseudo-classes are
920-
// required to be applied immediately after the change.
921-
void UpdatePlaybackPseudoClasses();
922-
923918
void CreateAudioWakeLockIfNeeded();
924919
void ReleaseAudioWakeLockIfExists();
925920
void ReleaseAudioWakeLockInternal();
@@ -1895,9 +1890,6 @@ class HTMLMediaElement : public nsGenericHTMLElement,
18951890
// For use by mochitests. Enabling pref "media.test.video-suspend"
18961891
bool mForcedHidden = false;
18971892

1898-
// https://html.spec.whatwg.org/multipage/media.html#is-currently-stalled
1899-
bool mIsCurrentlyStalled = false;
1900-
19011893
Visibility mVisibilityState = Visibility::Untracked;
19021894

19031895
UniquePtr<ErrorSink> mErrorSink;

modules/libpref/init/StaticPrefList.yaml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3630,13 +3630,6 @@
36303630
value: true
36313631
mirror: always
36323632

3633-
# Media element pseudo-classes
3634-
- name: dom.media.pseudo-classes.enabled
3635-
type: RelaxedAtomicBool
3636-
value: false
3637-
mirror: always
3638-
rust: true
3639-
36403633
# WebCodecs API
36413634
- name: dom.media.webcodecs.enabled
36423635
type: RelaxedAtomicBool

servo/components/style/gecko/non_ts_pseudo_class_list.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -92,16 +92,6 @@ macro_rules! apply_non_ts_list {
9292
("-moz-native-anonymous", MozNativeAnonymous, _, PSEUDO_CLASS_ENABLED_IN_UA_SHEETS),
9393
("-moz-placeholder", MozPlaceholder, _, _),
9494

95-
// Media element pseudo classes
96-
("paused", Paused, PAUSED, _),
97-
("playing", Playing, PAUSED, _),
98-
("seeking", Seeking, SEEKING, _),
99-
("buffering", Buffering, BUFFERING, _),
100-
("stalled", Stalled, STALLED, _),
101-
("muted", Muted, MUTED, _),
102-
("volume-locked", VolumeLocked, _, _),
103-
104-
10595
// NOTE(emilio): Pseudo-classes below only depend on document state, and thus
10696
// conceptually they should probably be media queries instead.
10797
//

servo/components/style/gecko/selector_parser.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -227,12 +227,6 @@ impl NonTSPseudoClass {
227227
if matches!(*self, Self::Heading(..)) {
228228
return static_prefs::pref!("layout.css.heading-selector.enabled");
229229
}
230-
if matches!(
231-
*self,
232-
Self::Playing | Self::Paused | Self::Seeking | Self::Buffering | Self::Stalled | Self::Muted | Self::VolumeLocked
233-
) {
234-
return static_prefs::pref!("dom.media.pseudo-classes.enabled");
235-
}
236230
!self.has_any_flag(NonTSPseudoClassFlag::PSEUDO_CLASS_ENABLED_IN_UA_SHEETS_AND_CHROME)
237231
}
238232

servo/components/style/gecko/wrapper.rs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -932,14 +932,6 @@ impl<'le> GeckoElement<'le> {
932932
pub fn slow_selector_flags(&self) -> ElementSelectorFlags {
933933
slow_selector_flags_from_node_selector_flags(self.as_node().selector_flags())
934934
}
935-
936-
/// Returns whether this element is an HTML <video> or <audio> element.
937-
#[inline]
938-
pub fn is_html_media_element(&self) -> bool {
939-
self.is_html_element()
940-
&& (self.local_name().as_ptr() == local_name!("video").as_ptr()
941-
|| self.local_name().as_ptr() == local_name!("audio").as_ptr())
942-
}
943935
}
944936

945937
/// Convert slow selector flags from the raw `NodeSelectorFlags`.
@@ -2085,16 +2077,9 @@ impl<'le> ::selectors::Element for GeckoElement<'le> {
20852077
| NonTSPseudoClass::MozRevealed
20862078
| NonTSPseudoClass::ActiveViewTransition
20872079
| NonTSPseudoClass::MozValueEmpty
2088-
| NonTSPseudoClass::MozSuppressForPrintSelection
2089-
| NonTSPseudoClass::Seeking
2090-
| NonTSPseudoClass::Buffering
2091-
| NonTSPseudoClass::Stalled
2092-
| NonTSPseudoClass::Muted => {
2080+
| NonTSPseudoClass::MozSuppressForPrintSelection => {
20932081
self.state().intersects(pseudo_class.state_flag())
20942082
},
2095-
NonTSPseudoClass::Paused => self.is_html_media_element() && self.state().intersects(ElementState::PAUSED),
2096-
NonTSPseudoClass::Playing => self.is_html_media_element() && !self.state().intersects(ElementState::PAUSED),
2097-
NonTSPseudoClass::VolumeLocked => false, // Bug 2013371
20982083
NonTSPseudoClass::Dir(ref dir) => self.state().intersects(dir.element_state()),
20992084
NonTSPseudoClass::ActiveViewTransitionType(ref types) => {
21002085
self.state().intersects(pseudo_class.state_flag())
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
[pseudo-classes-after-part.html]
2-
prefs: [dom.media.pseudo-classes.enabled:true]
32
["::part(mypart):future" should be a valid selector]
43
expected: FAIL
54

65
["::part(mypart):past" should be a valid selector]
76
expected: FAIL
87

8+
["::part(mypart):paused" should be a valid selector]
9+
expected: FAIL
10+
911
["::part(mypart):picture-in-picture" should be a valid selector]
1012
expected: FAIL
1113

14+
["::part(mypart):playing" should be a valid selector]
15+
expected: FAIL
16+
1217
["::part(mypart):xr-overlay" should be a valid selector]
1318
expected: FAIL
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,9 @@
11
[media-pseudo-classes-in-has.html]
2-
prefs: [dom.media.pseudo-classes.enabled:true]
2+
[Test :seeking pseudo-class]
3+
expected: FAIL
4+
5+
[Test :muted pseudo-class]
6+
expected: FAIL
7+
8+
[Test :playing pseudo-class]
9+
expected: FAIL

testing/web-platform/meta/css/selectors/media/__dir__.ini

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)