demo · v142
PiP Reason Logger
Intercept every enterpictureinpicture action with a MediaSession handler, capture the details.reason field, and watch a live log and bar chart build up as you trigger PiP through different paths — user gesture, simulated auto-PiP, and the media-session action route.
feature detection
PictureInPictureEvent.reason field
checking…
navigator.mediaSession
checking…
HTMLVideoElement.requestPictureInPicture
checking…
reason count — bar chart
user-initiated
0
auto
0
media-session
0
unknown / pre-142
0
timestamped event log
—waiting for first PiP event…
relevant API
navigator.mediaSession.setActionHandler("enterpictureinpicture", (details) => {
// details.reason values (Chrome 142+):
// "user-initiated" — user clicked the PiP button
// "auto" — browser auto-triggered (tab hidden, etc.)
// "media-session" — triggered via media session action
const reason = details?.reason ?? "unknown";
console.log("PiP reason:", reason);
});