/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 'use strict'; /* global nsIAccessibleValue, EVENT_VALUE_CHANGE, EVENT_TEXT_VALUE_CHANGE */ loadScripts({ name: 'value.js', dir: MOCHITESTS_DIR }); /** * Test data has the format of: * { * desc {String} description for better logging * id {String} given accessible DOMNode ID * expected {String} expected value for a given accessible * action {?Function*} an optional action that yields a value change * attrs {?Array} an optional list of attributes to update * waitFor {?Number} an optional value change event to wait for * } */ const valueTests = [{ desc: 'Initially value is set to 1st element of select', id: 'select', expected: '1st' }, { desc: 'Value should update to 3rd when 3 is pressed', id: 'select', action: function*(browser) { yield invokeFocus(browser, 'select'); yield BrowserTestUtils.synthesizeKey('3', {}, browser); }, waitFor: EVENT_TEXT_VALUE_CHANGE, expected: '3rd' }, { desc: 'Initially value is set to @aria-valuenow for slider', id: 'slider', expected: ['5', 5, 0, 7, 0] }, { desc: 'Value should change when @aria-valuenow is updated', id: 'slider', attrs: [{ attr: 'aria-valuenow', value: '6' }], waitFor: EVENT_VALUE_CHANGE, expected: ['6', 6, 0, 7, 0] }, { desc: 'Value should change when @aria-valuetext is set', id: 'slider', attrs: [{ attr: 'aria-valuetext', value: 'plain' }], waitFor: EVENT_TEXT_VALUE_CHANGE, expected: ['plain', 6, 0, 7, 0] }, { desc: 'Value should change when @aria-valuetext is updated', id: 'slider', attrs: [{ attr: 'aria-valuetext', value: 'hey!' }], waitFor: EVENT_TEXT_VALUE_CHANGE, expected: ['hey!', 6, 0, 7, 0] }, { desc: 'Value should change to @aria-valuetext when @aria-valuenow is removed', id: 'slider', attrs: [{ attr: 'aria-valuenow' }], expected: ['hey!', 0, 0, 7, 0] }, { desc: 'Initially value is not set for combobox', id: 'combobox', expected: '' }, { desc: 'Value should change when @value attribute is updated', id: 'combobox', attrs: [{ attr: 'value', value: 'hello' }], waitFor: EVENT_TEXT_VALUE_CHANGE, expected: 'hello' }, { desc: 'Initially value corresponds to @value attribute for progress', id: 'progress', expected: '22%' }, { desc: 'Value should change when @value attribute is updated', id: 'progress', attrs: [{ attr: 'value', value: '50' }], waitFor: EVENT_VALUE_CHANGE, expected: '50%' }, { desc: 'Initially value corresponds to @value attribute for range', id: 'range', expected: '6' }, { desc: 'Value should change when slider is moved', id: 'range', action: function*(browser) { yield invokeFocus(browser, 'range'); yield BrowserTestUtils.synthesizeKey('VK_LEFT', {}, browser); }, waitFor: EVENT_VALUE_CHANGE, expected: '5' }]; /** * Test caching of accessible object values */ addAccessibleTask(`