Tests that an inline stylesheet, in a user agent shadow tree, is allowed to load an image for a cursor when the page has CSP policy: img-src 'none'. This test PASSED if there are no console warning messages.


