This test ensures WebGL implementations follow proper same-origin restrictions.

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

PASS Playable video format found
PASS img was loaded

check that an attempt to upload an image from another origin throws an exception.
PASS texImage2D with cross-origin image should throw exception.
PASS texSubImage2D with cross-origin image should throw exception.
check that readPixels and toDataURL continue to work against this canvas.
PASS readPixels should never throw exception -- not possible to dirty origin of WebGL canvas.
PASS should not throw exception by toDataURL for WebGL canvas, which should stay origin clean.
check that an attempt to upload a tainted canvas throws an exception.
PASS should throw exception by toDataURL for NON origin clean canvas.
PASS texImage2D with NON origin clean canvas should throw exception.
PASS texSubImage2D with NON origin clean canvas should throw exception.
check that readPixels and toDataURL continue to work against this canvas.
PASS readPixels should never throw exception -- not possible to dirty origin of WebGL canvas.
PASS should not throw exception by toDataURL for WebGL canvas, which should stay origin clean.
check that an attempt to upload a video from another origin throws an exception.
PASS texImage2D with cross-origin video should throw exception.
PASS texSubImage2D with cross-origin video should throw exception.
check that readPixels and toDataURL continue to work against this canvas.
PASS readPixels should never throw exception -- not possible to dirty origin of WebGL canvas.
PASS should not throw exception by toDataURL for WebGL canvas, which should stay origin clean.

TEST COMPLETE
 
