Test removing an iframe containing a locked element 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 iframe & immediately lock target2. (main document handler)
     Remove iframe & immediately lock target2. (iframe handler)
PASS document.pointerLockElement is null
PASS onpointerlockchange received after: Remove iframe & immediately lock target2. (main document handler)
PASS successfullyParsed is true

TEST COMPLETE

