Exemplo n.º 1
0
    /**
     * Trigger a keydown/keyup pair. The keyup is triggered with a timeout
     * @param {HTMLElement} element
     * @param {number} keyCode
     */
    triggerKeyDownUpEvents( element, keyCode ) {

      if ( !Display.keyStateTracker.isKeyDown( keyCode ) ) {
        sceneryLog && sceneryLog.KeyboardFuzzer && sceneryLog.KeyboardFuzzer( 'trigger keydown/up: ' + keyCode );
        sceneryLog && sceneryLog.KeyboardFuzzer && sceneryLog.push();


        // TODO: screen readers normally take our keydown events, but may not here, is the descrpency ok?
        this.triggerDOMEvent( KEY_DOWN, element, keyCode );

        this.keyupListeners.push( timer.setTimeout( () => {
            this.triggerDOMEvent( KEY_UP, element, keyCode );

        }, this.random.nextInt( MAX_MS_KEY_HOLD_DOWN ) ) );

        sceneryLog && sceneryLog.KeyboardFuzzer && sceneryLog.pop();
      }
    }
Exemplo n.º 2
0
  QUnit.test( 'Global KeyStateTracker tests', assert => {

    const rootNode = new Node( { tagName: 'div' } );
    const display = new Display( rootNode ); // eslint-disable-line
    beforeTest( display );

    const a = new Node( { tagName:'button' } );
    const b = new Node( { tagName:'button' } );
    const c = new Node( { tagName:'button' } );
    const d = new Node( { tagName:'button' } );

    a.addChild( b );
    b.addChild( c );
    c.addChild( d );
    rootNode.addChild( a );

    const dPrimarySibling = d.accessibleInstances[ 0 ].peer.primarySibling;
    triggerDOMEvent( 'keydown', dPrimarySibling, KeyboardUtil.KEY_RIGHT_ARROW );

    assert.ok( Display.keyStateTracker.isKeyDown( KeyboardUtil.KEY_RIGHT_ARROW ), 'global keyStateTracker should be updated with right arrow key down' );

    afterTest( display );
  } );