| Index: chrome/test/data/extensions/api_test/automation/tests/tabs/mixins.js
|
| diff --git a/chrome/test/data/extensions/api_test/automation/tests/tabs/mixins.js b/chrome/test/data/extensions/api_test/automation/tests/tabs/mixins.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b3ae61b1f730fe92191f903677c9cad5beb6ff41
|
| --- /dev/null
|
| +++ b/chrome/test/data/extensions/api_test/automation/tests/tabs/mixins.js
|
| @@ -0,0 +1,246 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +var ActiveDescendantMixin = [ 'activedescendant' ];
|
| +var LinkMixins = [ 'url' ];
|
| +var DocumentMixins = [ 'docUrl',
|
| + 'docTitle',
|
| + 'docLoaded',
|
| + 'docLoadingProgress' ];
|
| +var ScrollableMixins = [ 'scrollX',
|
| + 'scrollXMin',
|
| + 'scrollXMax',
|
| + 'scrollY',
|
| + 'scrollYMin',
|
| + 'scrollYMax' ];
|
| +var EditableTextMixins = [ 'textSelStart',
|
| + 'textSelEnd' ];
|
| +var RangeMixins = [ 'valueForRange',
|
| + 'minValueForRange',
|
| + 'maxValueForRange' ];
|
| +var TableMixins = [ 'tableRowCount',
|
| + 'tableColumnCount' ];
|
| +var TableCellMixins = [ 'tableCellColumnIndex',
|
| + 'tableCellColumnSpan',
|
| + 'tableCellRowIndex',
|
| + 'tableCellRowSpan' ];
|
| +
|
| +var allTests = [
|
| + function testDocumentAndScrollMixins() {
|
| + for (var i = 0; i < DocumentMixins.length; i++) {
|
| + var mixinAttribute = DocumentMixins[i];
|
| + assertTrue(mixinAttribute in rootNode,
|
| + 'rootNode should have a ' + mixinAttribute + ' attribute');
|
| + }
|
| + for (var i = 0; i < ScrollableMixins.length; i++) {
|
| + var mixinAttribute = ScrollableMixins[i];
|
| + assertTrue(mixinAttribute in rootNode,
|
| + 'rootNode should have a ' + mixinAttribute + ' attribute');
|
| + }
|
| +
|
| + assertEq(url, rootNode.docUrl);
|
| + assertEq('Automation Tests - Mixin attributes', rootNode.docTitle);
|
| + assertEq(true, rootNode.docLoaded);
|
| + assertEq(1, rootNode.docLoadingProgress);
|
| + assertEq(0, rootNode.scrollX);
|
| + assertEq(0, rootNode.scrollXMin);
|
| + assertEq(0, rootNode.scrollXMax);
|
| + assertEq(0, rootNode.scrollY);
|
| + assertEq(0, rootNode.scrollYMin);
|
| + assertEq(0, rootNode.scrollYMax);
|
| + chrome.test.succeed();
|
| + },
|
| +
|
| + function testActiveDescendantAndOwns() {
|
| + var combobox = rootNode.find({ role: 'comboBox' });
|
| +
|
| + assertTrue('owns' in combobox, 'combobox should have an owns attribute');
|
| + assertEq(1, combobox.owns.length);
|
| + var listbox = rootNode.find({ role: 'listBox' });
|
| + assertEq(listbox, combobox.owns[0]);
|
| +
|
| + assertTrue('activedescendant' in combobox,
|
| + 'combobox should have an activedescendant attribute');
|
| + var opt6 = listbox.children[5];
|
| + assertEq(opt6, combobox.activedescendant);
|
| + chrome.test.succeed();
|
| + },
|
| +
|
| + function testLinkMixins() {
|
| + var links = rootNode.findAll({ role: 'link' });
|
| + assertEq(2, links.length);
|
| +
|
| + var realLink = links[0];
|
| + assertEq('Real link', realLink.name);
|
| + assertTrue('url' in realLink, 'realLink should have a url attribute');
|
| + assertEq('about://blank', realLink.url);
|
| +
|
| + var ariaLink = links[1];
|
| + assertEq('ARIA link', ariaLink.name);
|
| + assertTrue('url' in ariaLink, 'ariaLink should have a url attribute');
|
| + assertEq('', ariaLink.url);
|
| + chrome.test.succeed();
|
| + },
|
| +
|
| + function testEditableTextMixins() {
|
| + var textFields = rootNode.findAll({ role: 'textField' });
|
| + assertEq(3, textFields.length);
|
| + var EditableTextMixins = [ 'textSelStart', 'textSelEnd' ];
|
| + for (var i = 0; i < textFields.length; i++) {
|
| + var textField = textFields[i];
|
| + var id = textField.attributes.id;
|
| + for (var j = 0; j < EditableTextMixins.length; j++) {
|
| + var mixinAttribute = EditableTextMixins[j];
|
| + assertTrue(mixinAttribute in textField,
|
| + 'textField (' + id + ') should have a ' + mixinAttribute +
|
| + ' attribute');
|
| + }
|
| + }
|
| + var input = textFields[0];
|
| + assertEq('text-input', input.attributes.id);
|
| + assertEq(2, input.textSelStart);
|
| + assertEq(8, input.textSelEnd);
|
| +
|
| + var textArea = textFields[1];
|
| + assertEq('textarea', textArea.attributes.id);
|
| + for (var i = 0; i < EditableTextMixins.length; i++) {
|
| + var mixinAttribute = EditableTextMixins[i];
|
| + assertTrue(mixinAttribute in textArea,
|
| + 'textArea should have a ' + mixinAttribute + ' attribute');
|
| + }
|
| + assertEq(0, textArea.textSelStart);
|
| + assertEq(0, textArea.textSelEnd);
|
| +
|
| + var ariaTextbox = textFields[2];
|
| + assertEq('textbox-role', ariaTextbox.attributes.id);
|
| + assertEq(0, ariaTextbox.textSelStart);
|
| + assertEq(0, ariaTextbox.textSelEnd);
|
| +
|
| + chrome.test.succeed();
|
| + },
|
| +
|
| + function testRangeMixins() {
|
| + var sliders = rootNode.findAll({ role: 'slider' });
|
| + assertEq(2, sliders.length);
|
| + var spinButtons = rootNode.findAll({ role: 'spinButton' });
|
| + assertEq(1, spinButtons.length);
|
| + var progressIndicators = rootNode.findAll({ role: 'progressIndicator' });
|
| + assertEq(1, progressIndicators.length);
|
| + assertEq('progressbar-role', progressIndicators[0].attributes.id);
|
| + var scrollBars = rootNode.findAll({ role: 'scrollBar' });
|
| + assertEq(1, scrollBars.length);
|
| +
|
| + var ranges = sliders.concat(spinButtons, progressIndicators, scrollBars);
|
| + assertEq(5, ranges.length);
|
| +
|
| + for (var i = 0; i < ranges.length; i++) {
|
| + var range = ranges[i];
|
| + for (var j = 0; j < RangeMixins.length; j++) {
|
| + var mixinAttribute = RangeMixins[j];
|
| + assertTrue(mixinAttribute in range,
|
| + range.role + ' (' + range.attributes.id + ') should have a '
|
| + + mixinAttribute + ' attribute');
|
| + }
|
| + }
|
| +
|
| + var inputRange = sliders[0];
|
| + assertEq('range-input', inputRange.attributes.id);
|
| + assertEq(4, inputRange.valueForRange);
|
| + assertEq(0, inputRange.minValueForRange);
|
| + assertEq(5, inputRange.maxValueForRange);
|
| +
|
| + var ariaSlider = sliders[1];
|
| + assertEq('slider-role', ariaSlider.attributes.id);
|
| + assertEq(7, ariaSlider.valueForRange);
|
| + assertEq(1, ariaSlider.minValueForRange);
|
| + assertEq(10, ariaSlider.maxValueForRange);
|
| +
|
| + var spinButton = spinButtons[0];
|
| + assertEq(14, spinButton.valueForRange);
|
| + assertEq(1, spinButton.minValueForRange);
|
| + assertEq(31, spinButton.maxValueForRange);
|
| +
|
| + assertEq('0.9', progressIndicators[0].valueForRange.toPrecision(1));
|
| + assertEq(0, progressIndicators[0].minValueForRange);
|
| + assertEq(1, progressIndicators[0].maxValueForRange);
|
| +
|
| + assertEq(0, scrollBars[0].valueForRange);
|
| + assertEq(0, scrollBars[0].minValueForRange);
|
| + assertEq(1, scrollBars[0].maxValueForRange);
|
| +
|
| + chrome.test.succeed();
|
| + },
|
| +
|
| + function testTableMixins() {
|
| + var table = rootNode.find({ role: 'table' });;
|
| + assertEq(3, table.tableRowCount);
|
| + assertEq(3, table.tableColumnCount);
|
| +
|
| + var row1 = table.firstChild;
|
| + var cell1 = row1.firstChild;
|
| + assertEq(0, cell1.tableCellColumnIndex);
|
| + assertEq(1, cell1.tableCellColumnSpan);
|
| + assertEq(0, cell1.tableCellRowIndex);
|
| + assertEq(1, cell1.tableCellRowSpan);
|
| +
|
| + var cell2 = cell1.nextSibling;
|
| + assertEq(1, cell2.tableCellColumnIndex);
|
| + assertEq(1, cell2.tableCellColumnSpan);
|
| + assertEq(0, cell2.tableCellRowIndex);
|
| + assertEq(1, cell2.tableCellRowSpan);
|
| +
|
| + var cell3 = cell2.nextSibling;
|
| + assertEq(2, cell3.tableCellColumnIndex);
|
| + assertEq(1, cell3.tableCellColumnSpan);
|
| + assertEq(0, cell3.tableCellRowIndex);
|
| + assertEq(1, cell3.tableCellRowSpan);
|
| +
|
| + var row2 = row1.nextSibling;
|
| + var cell4 = row2.firstChild;
|
| + assertEq(0, cell4.tableCellColumnIndex);
|
| + assertEq(2, cell4.tableCellColumnSpan);
|
| + assertEq(1, cell4.tableCellRowIndex);
|
| + assertEq(1, cell4.tableCellRowSpan);
|
| +
|
| + var cell5 = cell4.nextSibling;
|
| + assertEq(2, cell5.tableCellColumnIndex);
|
| + assertEq(1, cell5.tableCellColumnSpan);
|
| + assertEq(1, cell5.tableCellRowIndex);
|
| + assertEq(2, cell5.tableCellRowSpan);
|
| +
|
| + var row3 = row2.nextSibling;
|
| + var cell6 = row3.firstChild;
|
| + assertEq(0, cell6.tableCellColumnIndex);
|
| + assertEq(1, cell6.tableCellColumnSpan);
|
| + assertEq(2, cell6.tableCellRowIndex);
|
| + assertEq(1, cell6.tableCellRowSpan);
|
| +
|
| + var cell7 = cell6.nextSibling;
|
| + assertEq(1, cell7.tableCellColumnIndex);
|
| + assertEq(1, cell7.tableCellColumnSpan);
|
| + assertEq(2, cell7.tableCellRowIndex);
|
| + assertEq(1, cell7.tableCellRowSpan);
|
| +
|
| + chrome.test.succeed();
|
| + },
|
| +
|
| + function testNoMixins() {
|
| + var div = rootNode.find({ attributes: { id: 'main' } });
|
| + assertTrue(div !== undefined);
|
| + var allMixins = [].concat(ActiveDescendantMixin,
|
| + LinkMixins,
|
| + DocumentMixins,
|
| + ScrollableMixins,
|
| + EditableTextMixins,
|
| + RangeMixins,
|
| + TableMixins,
|
| + TableCellMixins);
|
| + for (var mixinAttr in allMixins) {
|
| + assertFalse(mixinAttr in div);
|
| + }
|
| + chrome.test.succeed();
|
| + }
|
| +];
|
| +
|
| +setUpAndRunTests(allTests, 'mixins.html');
|
|
|