Test that a synthesized mouse event is restricted to the origin that handled its underlying touch event.

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


Clicks are dispatched to a frame in the same origin as the touch event handler.
PASS () => frameWasClicked is true
PASS () => alternateWasClicked is false

Clicks are dispatched to a frame in a different origin when the touch event target frame has no touch event handlers.
PASS () => frameWasClicked is true
PASS () => alternateWasClicked is false

Clicks are not dispatched to a frame in a different origin than the touch event handler.
PASS () => frameWasClicked is false
PASS () => alternateWasClicked is true

PASS successfullyParsed is true

TEST COMPLETE

