|  | <!DOCTYPE html> | 
|  | <html> | 
|  | <body> | 
|  | <meta name="timeout" content="long"> | 
|  | <script src="/resources/testharness.js"></script> | 
|  | <script src="/resources/testharnessreport.js"></script> | 
|  | <script src="/resources/testdriver.js"></script> | 
|  | <script src="/resources/testdriver-actions.js"></script> | 
|  | <script src="/resources/testdriver-vendor.js"></script> | 
|  | </head> | 
|  | <body> | 
|  | <h2>Description</h2> | 
|  | <p>This test validates that pointer lock does not work without user activation.</p> | 
|  | <hr/> | 
|  |  | 
|  | <div id="target">Target</div> | 
|  |  | 
|  | <script type="text/javascript" > | 
|  | promise_test(async t => { | 
|  | const target = document.getElementById('target'); | 
|  |  | 
|  | document.addEventListener('pointerlockchange', t.unreached_func("Must not acquire pointer lock.")); | 
|  |  | 
|  | // Request pointer lock twice to ensure two failing promises are returned and both are rejected. | 
|  | const p1 = target.requestPointerLock(); | 
|  | const p2 = target.requestPointerLock(); | 
|  |  | 
|  | // ensure that both promises are rejected | 
|  | await promise_rejects_dom(t, "NotAllowedError", p1); | 
|  | await promise_rejects_dom(t, "NotAllowedError", p2); | 
|  | }); | 
|  | </script> | 
|  | </body> | 
|  | </html> |