| Index: chrome/browser/resources/chromeos/chromevox/cvox2/background/live_regions_test.extjs
|
| diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/live_regions_test.extjs b/chrome/browser/resources/chromeos/chromevox/cvox2/background/live_regions_test.extjs
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3a06754bcfc724b7433df14a22bb3a944aac2bf7
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/live_regions_test.extjs
|
| @@ -0,0 +1,216 @@
|
| +// Copyright 2015 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.
|
| +
|
| +// Include test fixture.
|
| +GEN_INCLUDE(['../../testing/chromevox_next_e2e_test_base.js',
|
| + '../../testing/assert_additions.js']);
|
| +
|
| +GEN_INCLUDE(['../../testing/mock_feedback.js']);
|
| +
|
| +/**
|
| + * Test fixture for Live Regions.
|
| + * @constructor
|
| + * @extends {ChromeVoxNextE2ETest}
|
| + */
|
| +function LiveRegionsTest() {
|
| + ChromeVoxNextE2ETest.call(this);
|
| +}
|
| +
|
| +LiveRegionsTest.prototype = {
|
| + __proto__: ChromeVoxNextE2ETest.prototype,
|
| +
|
| + /** @override */
|
| + setUp: function() {
|
| + global.backgroundObj.forceChromeVoxNextActive();
|
| + window.RoleType = chrome.automation.RoleType;
|
| + },
|
| +
|
| + /**
|
| + * @return {!MockFeedback}
|
| + */
|
| + createMockFeedback: function() {
|
| + var mockFeedback = new MockFeedback(this.newCallback(),
|
| + this.newCallback.bind(this));
|
| + mockFeedback.install();
|
| + return mockFeedback;
|
| + },
|
| +
|
| + /**
|
| + * Create a function which performs the command |cmd|.
|
| + * @param {string} cmd
|
| + * @return {function() : void}
|
| + */
|
| + doCmd: function(cmd) {
|
| + return function() {
|
| + global.backgroundObj.onGotCommand(cmd);
|
| + };
|
| + },
|
| +};
|
| +
|
| +TEST_F('LiveRegionsTest', 'LiveRegionAddElement', function() {
|
| + var mockFeedback = this.createMockFeedback();
|
| + this.runWithLoadedTree(
|
| + function() {/*!
|
| + <h1>Document with live region</h1>
|
| + <p id="live" aria-live="polite"></p>
|
| + <button id="go">Go</button>
|
| + <script>
|
| + document.getElementById('go').addEventListener('click', function() {
|
| + document.getElementById('live').innerHTML = 'Hello, world';
|
| + }, false);
|
| + </script>
|
| + */},
|
| + function(rootNode) {
|
| + var go = rootNode.find({ role: RoleType.button });
|
| + mockFeedback.call(go.doDefault.bind(go))
|
| + .expectCategoryFlushSpeech('Hello, world');
|
| + mockFeedback.replay();
|
| + });
|
| +});
|
| +
|
| +TEST_F('LiveRegionsTest', 'LiveRegionRemoveElement', function() {
|
| + var mockFeedback = this.createMockFeedback();
|
| + this.runWithLoadedTree(
|
| + function() {/*!
|
| + <h1>Document with live region</h1>
|
| + <p id="live" aria-live="polite" aria-relevant="removals">Hello, world</p>
|
| + <button id="go">Go</button>
|
| + <script>
|
| + document.getElementById('go').addEventListener('click', function() {
|
| + document.getElementById('live').innerHTML = '';
|
| + }, false);
|
| + </script>
|
| + */},
|
| + function(rootNode) {
|
| + var go = rootNode.find({ role: RoleType.button });
|
| + go.doDefault();
|
| + mockFeedback.expectCategoryFlushSpeech('removed:')
|
| + .expectQueuedSpeech('Hello, world');
|
| + mockFeedback.replay();
|
| + });
|
| +});
|
| +
|
| +TEST_F('LiveRegionsTest', 'LiveRegionChangeAtomic', function() {
|
| + var mockFeedback = this.createMockFeedback();
|
| + this.runWithLoadedTree(
|
| + function() {/*!
|
| + <div id="live" aria-live="polite" aria-atomic="true">
|
| + <div id="a"></div><div id="b">Bravo</div><div id="c"></div>
|
| + </div>
|
| + <button id="go">Go</button>
|
| + <script>
|
| + document.getElementById('go').addEventListener('click', function() {
|
| + document.getElementById('c').textContent = 'Charlie';
|
| + document.getElementById('a').textContent = 'Alpha';
|
| + }, false);
|
| + </script>
|
| + */},
|
| + function(rootNode) {
|
| + var go = rootNode.find({ role: RoleType.button });
|
| + mockFeedback.call(go.doDefault.bind(go))
|
| + .expectQueuedSpeech('Alpha')
|
| + .expectQueuedSpeech('Bravo')
|
| + .expectQueuedSpeech('Charlie');
|
| + mockFeedback.replay();
|
| + });
|
| +});
|
| +
|
| +TEST_F('LiveRegionsTest', 'LiveRegionChangeImageAlt', function() {
|
| + var mockFeedback = this.createMockFeedback();
|
| + this.runWithLoadedTree(
|
| + function() {/*!
|
| + <div id="live" aria-live="polite">
|
| + <img id="img" src="#" alt="Before">
|
| + </div>
|
| + <button id="go">Go</button>
|
| + <script>
|
| + document.getElementById('go').addEventListener('click', function() {
|
| + document.getElementById('img').setAttribute('alt', 'After');
|
| + }, false);
|
| + </script>
|
| + */},
|
| + function(rootNode) {
|
| + var go = rootNode.find({ role: RoleType.button });
|
| + mockFeedback.call(go.doDefault.bind(go))
|
| + .expectCategoryFlushSpeech('After')
|
| + .expectQueuedSpeech('Image');
|
| + mockFeedback.replay();
|
| + });
|
| +});
|
| +
|
| +TEST_F('LiveRegionsTest', 'LiveRegionThenFocus', function() {
|
| + var mockFeedback = this.createMockFeedback();
|
| + this.runWithLoadedTree(
|
| + function() {/*!
|
| + <div id="live" aria-live="polite"></div>
|
| + <button id="go">Go</button>
|
| + <button id="focus">Focus</button>
|
| + <script>
|
| + document.getElementById('go').addEventListener('click', function() {
|
| + document.getElementById('live').textContent = 'Live';
|
| + window.setTimeout(function() {
|
| + document.getElementById('focus').focus();
|
| + }, 50);
|
| + }, false);
|
| + </script>
|
| + */},
|
| + function(rootNode) {
|
| + var go = rootNode.find({ role: RoleType.button });
|
| + mockFeedback.call(go.doDefault.bind(go))
|
| + .expectCategoryFlushSpeech('Live')
|
| + .expectQueuedSpeech('Focus');
|
| + mockFeedback.replay();
|
| + });
|
| +});
|
| +
|
| +TEST_F('LiveRegionsTest', 'FocusThenLiveRegion', function() {
|
| + var mockFeedback = this.createMockFeedback();
|
| + this.runWithLoadedTree(
|
| + function() {/*!
|
| + <div id="live" aria-live="polite"></div>
|
| + <button id="go">Go</button>
|
| + <button id="focus">Focus</button>
|
| + <script>
|
| + document.getElementById('go').addEventListener('click', function() {
|
| + document.getElementById('focus').focus();
|
| + window.setTimeout(function() {
|
| + document.getElementById('live').textContent = 'Live';
|
| + }, 50);
|
| + }, false);
|
| + </script>
|
| + */},
|
| + function(rootNode) {
|
| + var go = rootNode.find({ role: RoleType.button });
|
| + mockFeedback.call(go.doDefault.bind(go))
|
| + .expectQueuedSpeech('Focus')
|
| + .expectCategoryFlushSpeech('Live');
|
| + mockFeedback.replay();
|
| + });
|
| +});
|
| +
|
| +TEST_F('LiveRegionsTest', 'LiveRegionCategoryFlush', function() {
|
| + var mockFeedback = this.createMockFeedback();
|
| + this.runWithLoadedTree(
|
| + function() {/*!
|
| + <div id="live1" aria-live="polite"></div>
|
| + <div id="live2" aria-live="polite"></div>
|
| + <button id="go">Go</button>
|
| + <button id="focus">Focus</button>
|
| + <script>
|
| + document.getElementById('go').addEventListener('click', function() {
|
| + document.getElementById('live1').textContent = 'Live1';
|
| + window.setTimeout(function() {
|
| + document.getElementById('live2').textContent = 'Live2';
|
| + }, 1000);
|
| + }, false);
|
| + </script>
|
| + */},
|
| + function(rootNode) {
|
| + var go = rootNode.find({ role: RoleType.button });
|
| + mockFeedback.call(go.doDefault.bind(go))
|
| + .expectCategoryFlushSpeech('Live1')
|
| + .expectCategoryFlushSpeech('Live2');
|
| + mockFeedback.replay();
|
| + });
|
| +});
|
|
|