Skip to content

Commit 144965a

Browse files
mgurgelgithub-actions[bot]
authored andcommitted
Release build 10.4.0 [ci release]
1 parent e513c26 commit 144965a

File tree

8 files changed

+152
-2
lines changed

8 files changed

+152
-2
lines changed

CHANGELOG.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
- NTP: Scaffold Omnibar widget and message types (#1778)
1+
- Duck Player Native: Mute all elements (#1779)

Sources/ContentScopeScripts/dist/contentScope.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5316,6 +5316,26 @@
53165316
}
53175317
};
53185318
}
5319+
var MUTE_ELEMENTS_QUERY = "audio, video";
5320+
function muteAllElements() {
5321+
const int = setInterval(() => {
5322+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
5323+
elements.forEach((element) => {
5324+
if (element?.isConnected) {
5325+
element.muted = true;
5326+
}
5327+
});
5328+
}, 10);
5329+
return () => {
5330+
clearInterval(int);
5331+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
5332+
elements.forEach((element) => {
5333+
if (element?.isConnected) {
5334+
element.muted = false;
5335+
}
5336+
});
5337+
};
5338+
}
53195339

53205340
// src/features/duckplayer-native/overlays/thumbnail-overlay.js
53215341
init_define_import_meta_trackerLookup();
@@ -5632,6 +5652,7 @@
56325652
this.paused = pause;
56335653
if (pause) {
56345654
this.sideEffects.add("stopping video from playing", () => stopVideoFromPlaying(videoElement));
5655+
this.sideEffects.add("muting all elements", () => muteAllElements());
56355656
this.sideEffects.add("appending thumbnail", () => {
56365657
const clickHandler = () => {
56375658
this.messages.notifyOverlayDismissed();
@@ -5646,6 +5667,7 @@
56465667
});
56475668
} else {
56485669
this.sideEffects.destroy("stopping video from playing");
5670+
this.sideEffects.destroy("muting all elements");
56495671
this.sideEffects.destroy("appending thumbnail");
56505672
}
56515673
}

Sources/ContentScopeScripts/dist/contentScopeIsolated.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7251,6 +7251,26 @@
72517251
}
72527252
};
72537253
}
7254+
var MUTE_ELEMENTS_QUERY = "audio, video";
7255+
function muteAllElements() {
7256+
const int = setInterval(() => {
7257+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
7258+
elements.forEach((element) => {
7259+
if (element?.isConnected) {
7260+
element.muted = true;
7261+
}
7262+
});
7263+
}, 10);
7264+
return () => {
7265+
clearInterval(int);
7266+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
7267+
elements.forEach((element) => {
7268+
if (element?.isConnected) {
7269+
element.muted = false;
7270+
}
7271+
});
7272+
};
7273+
}
72547274

72557275
// src/features/duckplayer-native/overlays/thumbnail-overlay.js
72567276
init_define_import_meta_trackerLookup();
@@ -7507,6 +7527,7 @@
75077527
this.paused = pause;
75087528
if (pause) {
75097529
this.sideEffects.add("stopping video from playing", () => stopVideoFromPlaying(videoElement));
7530+
this.sideEffects.add("muting all elements", () => muteAllElements());
75107531
this.sideEffects.add("appending thumbnail", () => {
75117532
const clickHandler = () => {
75127533
this.messages.notifyOverlayDismissed();
@@ -7521,6 +7542,7 @@
75217542
});
75227543
} else {
75237544
this.sideEffects.destroy("stopping video from playing");
7545+
this.sideEffects.destroy("muting all elements");
75247546
this.sideEffects.destroy("appending thumbnail");
75257547
}
75267548
}

build/integration/contentScope.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13138,6 +13138,26 @@
1313813138
}
1313913139
};
1314013140
}
13141+
var MUTE_ELEMENTS_QUERY = "audio, video";
13142+
function muteAllElements() {
13143+
const int = setInterval(() => {
13144+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
13145+
elements.forEach((element) => {
13146+
if (element?.isConnected) {
13147+
element.muted = true;
13148+
}
13149+
});
13150+
}, 10);
13151+
return () => {
13152+
clearInterval(int);
13153+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
13154+
elements.forEach((element) => {
13155+
if (element?.isConnected) {
13156+
element.muted = false;
13157+
}
13158+
});
13159+
};
13160+
}
1314113161

1314213162
// src/features/duckplayer-native/overlays/thumbnail-overlay.js
1314313163
init_define_import_meta_trackerLookup();
@@ -13394,6 +13414,7 @@
1339413414
this.paused = pause;
1339513415
if (pause) {
1339613416
this.sideEffects.add("stopping video from playing", () => stopVideoFromPlaying(videoElement));
13417+
this.sideEffects.add("muting all elements", () => muteAllElements());
1339713418
this.sideEffects.add("appending thumbnail", () => {
1339813419
const clickHandler = () => {
1339913420
this.messages.notifyOverlayDismissed();
@@ -13408,6 +13429,7 @@
1340813429
});
1340913430
} else {
1341013431
this.sideEffects.destroy("stopping video from playing");
13432+
this.sideEffects.destroy("muting all elements");
1341113433
this.sideEffects.destroy("appending thumbnail");
1341213434
}
1341313435
}

injected/integration-test/extension/contentScope.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13138,6 +13138,26 @@
1313813138
}
1313913139
};
1314013140
}
13141+
var MUTE_ELEMENTS_QUERY = "audio, video";
13142+
function muteAllElements() {
13143+
const int = setInterval(() => {
13144+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
13145+
elements.forEach((element) => {
13146+
if (element?.isConnected) {
13147+
element.muted = true;
13148+
}
13149+
});
13150+
}, 10);
13151+
return () => {
13152+
clearInterval(int);
13153+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
13154+
elements.forEach((element) => {
13155+
if (element?.isConnected) {
13156+
element.muted = false;
13157+
}
13158+
});
13159+
};
13160+
}
1314113161

1314213162
// src/features/duckplayer-native/overlays/thumbnail-overlay.js
1314313163
init_define_import_meta_trackerLookup();
@@ -13394,6 +13414,7 @@
1339413414
this.paused = pause;
1339513415
if (pause) {
1339613416
this.sideEffects.add("stopping video from playing", () => stopVideoFromPlaying(videoElement));
13417+
this.sideEffects.add("muting all elements", () => muteAllElements());
1339713418
this.sideEffects.add("appending thumbnail", () => {
1339813419
const clickHandler = () => {
1339913420
this.messages.notifyOverlayDismissed();
@@ -13408,6 +13429,7 @@
1340813429
});
1340913430
} else {
1341013431
this.sideEffects.destroy("stopping video from playing");
13432+
this.sideEffects.destroy("muting all elements");
1341113433
this.sideEffects.destroy("appending thumbnail");
1341213434
}
1341313435
}

injected/integration-test/test-pages/build/contentScope.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13138,6 +13138,26 @@
1313813138
}
1313913139
};
1314013140
}
13141+
var MUTE_ELEMENTS_QUERY = "audio, video";
13142+
function muteAllElements() {
13143+
const int = setInterval(() => {
13144+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
13145+
elements.forEach((element) => {
13146+
if (element?.isConnected) {
13147+
element.muted = true;
13148+
}
13149+
});
13150+
}, 10);
13151+
return () => {
13152+
clearInterval(int);
13153+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
13154+
elements.forEach((element) => {
13155+
if (element?.isConnected) {
13156+
element.muted = false;
13157+
}
13158+
});
13159+
};
13160+
}
1314113161

1314213162
// src/features/duckplayer-native/overlays/thumbnail-overlay.js
1314313163
init_define_import_meta_trackerLookup();
@@ -13394,6 +13414,7 @@
1339413414
this.paused = pause;
1339513415
if (pause) {
1339613416
this.sideEffects.add("stopping video from playing", () => stopVideoFromPlaying(videoElement));
13417+
this.sideEffects.add("muting all elements", () => muteAllElements());
1339713418
this.sideEffects.add("appending thumbnail", () => {
1339813419
const clickHandler = () => {
1339913420
this.messages.notifyOverlayDismissed();
@@ -13408,6 +13429,7 @@
1340813429
});
1340913430
} else {
1341013431
this.sideEffects.destroy("stopping video from playing");
13432+
this.sideEffects.destroy("muting all elements");
1341113433
this.sideEffects.destroy("appending thumbnail");
1341213434
}
1341313435
}

injected/src/features/duckplayer-native/pause-video.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,41 @@ export function stopVideoFromPlaying(videoSelector) {
2929
}
3030
};
3131
}
32+
33+
const MUTE_ELEMENTS_QUERY = 'audio, video';
34+
35+
/**
36+
* Mute all audio and video elements
37+
*
38+
* @returns {() => void} A function that allows the elements to be unmuted
39+
*/
40+
export function muteAllElements() {
41+
/**
42+
* Set up the interval
43+
*/
44+
const int = setInterval(() => {
45+
/** @type {(HTMLAudioElement | HTMLVideoElement)[]} */
46+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
47+
elements.forEach((element) => {
48+
if (element?.isConnected) {
49+
element.muted = true;
50+
}
51+
});
52+
}, 10);
53+
54+
/**
55+
* To clean up, we need to stop the interval
56+
* and then call .play() on the original element, if it's still connected
57+
*/
58+
return () => {
59+
clearInterval(int);
60+
61+
/** @type {(HTMLAudioElement | HTMLVideoElement)[]} */
62+
const elements = Array.from(document.querySelectorAll(MUTE_ELEMENTS_QUERY));
63+
elements.forEach((element) => {
64+
if (element?.isConnected) {
65+
element.muted = false;
66+
}
67+
});
68+
};
69+
}

injected/src/features/duckplayer-native/sub-features/duck-player-native-youtube.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Logger, SideEffects } from '../../duckplayer/util.js';
22
import { muteAudio } from '../mute-audio.js';
33
import { pollTimestamp } from '../get-current-timestamp.js';
4-
import { stopVideoFromPlaying } from '../pause-video.js';
4+
import { stopVideoFromPlaying, muteAllElements } from '../pause-video.js';
55
import { showThumbnailOverlay } from '../overlays/thumbnail-overlay.js';
66

77
/**
@@ -86,6 +86,7 @@ export class DuckPlayerNativeYoutube {
8686

8787
if (pause) {
8888
this.sideEffects.add('stopping video from playing', () => stopVideoFromPlaying(videoElement));
89+
this.sideEffects.add('muting all elements', () => muteAllElements());
8990
this.sideEffects.add('appending thumbnail', () => {
9091
const clickHandler = () => {
9192
this.messages.notifyOverlayDismissed();
@@ -95,6 +96,7 @@ export class DuckPlayerNativeYoutube {
9596
});
9697
} else {
9798
this.sideEffects.destroy('stopping video from playing');
99+
this.sideEffects.destroy('muting all elements');
98100
this.sideEffects.destroy('appending thumbnail');
99101
}
100102
}

0 commit comments

Comments
 (0)