Closed Bug 1761343 Opened 2 years ago Closed 2 years ago

Instagram videos aren't being played

Categories

(Core :: DOM: Streams, defect, P3)

Desktop
All
defect

Tracking

()

VERIFIED FIXED
Tracking Status
firefox-esr91 --- unaffected
firefox98 --- unaffected
firefox99 --- unaffected
firefox100 --- verified

People

(Reporter: danibodea, Unassigned)

References

(Regression)

Details

(Keywords: regression)

Note

  • When the user logs into Instagram, scrolls down and reaches a video post, he will notice that the video won't play.

Affected versions

  • Nightly v100.0a1

Affected platforms

  • Ubuntu 20/22 wayland/xwayland
  • Windows 10

Steps to reproduce

  1. Launch browser.
  2. Log into Instagram
  3. Scroll to watch a video post

Expected result

  • The video plays.

Actual result

  • The video does NOT play.

Regression range

Additional notes

Severity: -- → S2
Regressed by: 1759597

Oh, so they expect pipeThrough too, even when they don't use TransformStream. Interesting, I thought those two would be paired together, but it seems the real world use disagrees.

Matthew, are we confident enough to ship pipeThrough together with WritableStream? Their feature detection is seemingly like this (why omit pipeThrough there, grrr):

__d(
  function (g, r, i, a, m, e, d) {
    "use strict";
    m.exports = () =>
      null == window.WritableStream ||
      null == window.ReadableStream ||
      null == window.ReadableStream.prototype.pipeTo;
  },
  3342382,
  []
);

(My personal answer: maybe we are okay with it? The pipeThrough tests are passing anyway, I just wish that enabling pipeThrough won't break another set of websites...)
(Another way would be to ping them and fix their feature detection.)

Flags: needinfo?(mgaudet)

I can verify that if we set dom.streams.pipeTo.enabled=false, video playback behaviour on Instagram seems to be restored.

We've got a variety of possibilities:

  • Reach out to instagram, and see if they can also feature test for pipeThrough
  • Ship WritableStream, but not pipeTo
  • Do a site-specific intervention to hide the pipeTo property until we ship pipeThrough
  • Unship WritableStream and pipeTo and hold them until TransformStream and pipeThrough are available; likely Firefox 101/102 time frame.
  • Try shipping pipeThrough early; I verified the videos also play using dom.streams.transform_streams.enabled=true, which reveals pipeThrough.

My current preference would be that we start reaching out to Instagram as choice 1, and look into an intervention as choice 2; Of course, this does depend a bit on how pervasive this is. I'm not sure if that media player component is OSS and used elsewhere, or if is purely instagram.

Flags: needinfo?(mgaudet)

(I hadn't realized how decoupled pipeThrough is from TransformStream... maybe we could get away with shipping that earlier (under a different pref name)... but not my first choice really)

Component: Audio/Video → DOM: Streams

Unfortunate, but I am not surprised that there is code in the real-world that either expects all of streams to work or only ReadableStream. I am afraid when we start shipping pipeThrough sites are going to start requiring TransformStream as well.

From my point of view there are two realistic options:

  1. Only ship the complete package WritableStream, pipe & TransformStream
  2. Test the water with adding pipeThrough as well.

I would think it should be possible to finish TransformStream in two days or so, no?

TransformStream would need some time to be fuzzer tested even if it finishes soon enough. (I think the only remaining parts are callback implementations unless I'm missing something, so yeah, expect it to be finished soon.)

For now I'd like to first see how many websites break without pipeThrough, and if it's only Instagram then maybe we can just ping them or do site intervention, as Matthew mentioned.

Has Regression Range: --- → yes

So: I have reached out via the Mozilla/Facebook coordination email list to see if they can fix this at their end.

I don't think we want to rush into shipping pipeThrough or TransformStreams.

I think current best option, if we see more similar breakage or Instagram can't fix, is to unship pipeTo, given that it seems likely we'll be able to hit 101 with TransformStreams, pipeThrough, and then we can re-ship pipeTo at the same time.

We can make a call closer to the end of the cycle; I'd like to see if there's any other impacts in the mean time, and give Meta some time to fix.

See Also: → 1761930

At this point there's an intervention for this developed in Bug 1761930, so I expect unless we see more pipeTo fallout, we'll continue as planned to let it ride the 100 train.

Depends on: 1761930

Given we're going to have an intervention for this, dropping Severity and Priority here.

Severity: S2 → S3
Priority: -- → P3

This was fixed by Instagram.

Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
See Also: → 1763100
Flags: qe-verify+

Reproducible on a 2022-03-24 Nightly build on Win10 64-bits; Verified as fixed on Firefox 100.0(20220428192727) and Nightly 101.0a1(20220428214715) on Win10 64-bits and Ubuntu 20.04.

Status: RESOLVED → VERIFIED
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.