On MacOS, particularly large allocations within the platform limits
(1.2G+) will fail and crash. This adds a specific size check for that
when working around driver bugs (default).
While there, added a generic size_t limited size check for the
platform, and reporting OOM if too large.
Some drivers on Linux are not supportive of very large allocation sizes
(esp. applicable to Linux x86 builds of UXP applications) and could
cause issues. Treat this the same way we already do on Mac/Darwin.
This is fallout from Bug 1167235 - Use a fast method of double buffering for canvas.
It is possible for the CanvasRenderingContext2D to be destroyed while we're in the
middle of the call to nsObserverService::NotifyObservers() for shutdown.
This leaves the shutdown observer with a dangling pointer to the canvas, so this
patch explicitly clears the pointer when the context goes away.
This creates a number of stubs and leaves some surrounding code that may be irrelevant (eg. recorded time stamps, status variables).
Stub resolution/removal should be a follow-up to this.
- Checks for restricted or encrypted content
- Dispatching 'encrypted' events
- Dispatching 'key needed' events
- HTML Media Element media keys system
- EME telemetry
- HTML Media Element EME API
This is the main bulk for #26, isolating EME-specific code.