Test removing a locked element from a document causes lock to be released.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

     Lock target in iframe. (main document handler).
     Lock target in iframe. (iframe handler)
PASS onpointerlockchange received after: Lock target in iframe. (iframe handler)
PASS targetIframe1.contentDocument.pointerLockElement is targetDiv1
PASS targetDiv1.parentElement.parentElement is targetIframe1.contentDocument.body
     Remove targetDiv1's parent from iframe & immediately lock target2. (main document handler)
     Remove targetDiv1's parent from iframe & immediately lock target2. (iframe handler)
PASS document.pointerLockElement is null
PASS targetDiv1.parentElement.parentElement is null
PASS onpointerlockerror received after: Remove targetDiv1's parent from iframe & immediately lock target2. (main document handler)
PASS onpointerlockchange received after: Remove targetDiv1's parent from iframe & immediately lock target2. (iframe handler)
PASS successfullyParsed is true

TEST COMPLETE

