Thank you for the recording, Jason.
The scenario seems to be
1. `registerProcessor("audio_worklet_processor_0")`.
2. Enter nested event loop via XMLHttpRequest
3. shutdown/freeze window, via navigation.
4. Return from nested event loop.
5. `new AudioWorkletNode("audio_worklet_processor_0")`.
At 3, `WorkletImpl::mGlobalScope` is cleared.
After 5, a mGlobalScope is replaced with a new scope, which does not have the processor registered.
At the time of the AudioWorkletNode constructor call, `aAudioContext->mParentObject` is null.
I wonder whether the appropriate behavior in the constructor is to throw, or to no-op and pretend all is fine.
Bug 1634200 Comment 7 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
Thank you for the recording, Jason.
The scenario seems to be
1. `registerProcessor("audio_worklet_processor_0")`.
2. Enter nested event loop via XMLHttpRequest
3. shutdown/freeze window, via navigation.
4. Return from nested event loop.
5. `new AudioWorkletNode("audio_worklet_processor_0")`.
At 3, `WorkletImpl::mGlobalScope` is cleared.
After 5, `mGlobalScope` is replaced with a new scope, which does not have the processor registered.
At the time of the `AudioWorkletNode` constructor call, `aAudioContext->mParentObject` is null.
I wonder whether the appropriate behavior in the constructor is to throw, or to no-op and pretend all is fine.