Well, I got loom videos working for myself yesterday, but I didn't quite do this in a proper way... I basically just noticed that the almost all the changes to HTMLMediaElement.cpp and HTMLMediaElement.h seemed to be self-contained within those two files. All I had to do was take the Firefox 53 copy of them, reapply all UXP changes since the Firefox 52 fork, and revert every instance of something like this:
Code: Select all
Back to this:
It compiled and worked for loom, though I am not sure if I broke anything else in the process. Now, the bad news is, even though this worked for me and was very self-contained... this test patch I did contained way too many weird changes to be in a form usable for the project.
The good news is, I found a slightly earlier version of the patch that seemed to only really have the DocShell changes and an incomplete version of the Audio wrapper thing I could still understand: the version they submitted for review originally that got delayed to Firefox 53. Using what I learned from above, I applied this earlier version to the existing UXP code. I was able to undo the DocShell changes in the patch again, and confirmed my intuition about how NotifyAboutPlaying would work without the weird audio wrapper.
Anyway, in case anyone finds my work helpful in understanding roughly what it would take and what needs to be reviewed in order to backport this to UXP properly
(which I don't quite have the skill to do yet), here you go:
Test patch that backports all UXP changes to HTMLMediaElement.* to Firefox 53's version:
https://github.com/athenian200/UXP/comm ... 25c03bc53c
Beta backport of an earlier version of the promise-based playback patch to the existing UXP HTMLMediaElement.* files:
https://github.com/athenian200/UXP/comm ... f2bfc78b59
The vast majority of potentially confusing incompatibilities and quirks between Firefox 52 and 53 are in these bugs...
Audio channel wrapper nonsense:
OwnerDoc/DocShell (causes compile failures!):
There's a few smaller changes sprinkled in as well, but those don't really touch the implementation of what we're looking at nearly as much. Those are the big ones you have to worry about, because they slightly change how things that were not yet implemented, got implemented later.
Not currently planning to submit a PR for this, may do so later if I can develop a better understanding of what's going on here, figure out what if anything is missing/broken here, and break up my gargantuan patch into smaller chunks. Doing this quickly like I just did (but don't recommend to others) can be done in a day or two, but doing it correctly with full understanding and documentation might take a week or more.