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.

PictureInPictureEvent.reason field checking…
navigator.mediaSession checking…
HTMLVideoElement.requestPictureInPicture checking…
user-initiated
0
auto
0
media-session
0
unknown / pre-142
0
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);
});

see also