| Index: chrome/browser/resources/chromeos/chromevox/chromevox/injected/live_regions_deprecated.js
|
| diff --git a/chrome/browser/resources/chromeos/chromevox/chromevox/injected/live_regions_deprecated.js b/chrome/browser/resources/chromeos/chromevox/chromevox/injected/live_regions_deprecated.js
|
| deleted file mode 100644
|
| index 034be6a39ef6f2d3ed5dbf46c0557f47b0e03667..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/resources/chromeos/chromevox/chromevox/injected/live_regions_deprecated.js
|
| +++ /dev/null
|
| @@ -1,244 +0,0 @@
|
| -// 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.
|
| -
|
| -/**
|
| - * @fileoverview Keeps track of live regions on the page and speaks updates
|
| - * when they change.
|
| - *
|
| - */
|
| -
|
| -goog.provide('cvox.LiveRegionsDeprecated');
|
| -
|
| -goog.require('cvox.AriaUtil');
|
| -goog.require('cvox.ChromeVox');
|
| -goog.require('cvox.DescriptionUtil');
|
| -goog.require('cvox.DomUtil');
|
| -goog.require('cvox.NavDescription');
|
| -
|
| -/**
|
| - * @constructor
|
| - */
|
| -cvox.LiveRegionsDeprecated = function() {
|
| -};
|
| -
|
| -/**
|
| - * An array of all of the elements on the page that are live regions.
|
| - * @type {Array.<Element>}
|
| - */
|
| -cvox.LiveRegionsDeprecated.trackedRegions = [];
|
| -
|
| -/**
|
| - * A parallel array to trackedRegions that stores the previous value of
|
| - * each live region, represented as an array of NavDescriptions.
|
| - * @type {Array.<Array.<cvox.NavDescription> >}
|
| - */
|
| -cvox.LiveRegionsDeprecated.previousRegionValue = [];
|
| -
|
| -/**
|
| - * @type {Date}
|
| - */
|
| -cvox.LiveRegionsDeprecated.pageLoadTime = null;
|
| -
|
| -/**
|
| - * Time in milliseconds after initial page load to ignore live region
|
| - * updates, to avoid announcing regions as they're initially created.
|
| - * The exception is alerts, they're announced when a page is loaded.
|
| - * @type {number}
|
| - * @const
|
| - */
|
| -cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS = 2000;
|
| -
|
| -/**
|
| - * @param {Date} pageLoadTime The time the page was loaded. Live region
|
| - * updates within the first INITIAL_SILENCE_MS milliseconds are ignored.
|
| - * @param {number} queueMode Interrupt or flush. Polite live region
|
| - * changes always queue.
|
| - * @param {boolean} disableSpeak true if change announcement should be disabled.
|
| - * @return {boolean} true if any regions announced.
|
| - */
|
| -cvox.LiveRegionsDeprecated.init = function(pageLoadTime, queueMode, disableSpeak) {
|
| - if (queueMode == undefined) {
|
| - queueMode = cvox.AbstractTts.QUEUE_MODE_FLUSH;
|
| - }
|
| -
|
| - cvox.LiveRegionsDeprecated.pageLoadTime = pageLoadTime;
|
| -
|
| - var anyRegionsAnnounced = false;
|
| - var regions = cvox.AriaUtil.getLiveRegions(document.body);
|
| - for (var i = 0; i < regions.length; i++) {
|
| - if (cvox.LiveRegionsDeprecated.updateLiveRegion(regions[i], queueMode,
|
| - disableSpeak)) {
|
| - anyRegionsAnnounced = true;
|
| - queueMode = cvox.AbstractTts.QUEUE_MODE_QUEUE;
|
| - }
|
| - }
|
| -
|
| - return anyRegionsAnnounced;
|
| -};
|
| -
|
| -/**
|
| - * Speak relevant changes to a live region.
|
| - *
|
| - * @param {Node} region The live region node that changed.
|
| - * @param {number} queueMode Interrupt or queue. Polite live region
|
| - * changes always queue.
|
| - * @param {boolean} disableSpeak true if change announcement should be disabled.
|
| - * @return {boolean} true if the region announced a change.
|
| - */
|
| -cvox.LiveRegionsDeprecated.updateLiveRegion = function(region, queueMode, disableSpeak) {
|
| - if (cvox.AriaUtil.getAriaBusy(region)) {
|
| - return false;
|
| - }
|
| -
|
| - // Make sure it's visible.
|
| - if (!cvox.DomUtil.isVisible(region)) {
|
| - return false;
|
| - }
|
| -
|
| - // Retrieve the previous value of this region if we've tracked it
|
| - // before, otherwise start tracking it.
|
| - var regionIndex = cvox.LiveRegionsDeprecated.trackedRegions.indexOf(region);
|
| - var previousValue;
|
| - if (regionIndex >= 0) {
|
| - previousValue = cvox.LiveRegionsDeprecated.previousRegionValue[regionIndex];
|
| - } else {
|
| - regionIndex = cvox.LiveRegionsDeprecated.trackedRegions.length;
|
| - previousValue = [];
|
| - cvox.LiveRegionsDeprecated.trackedRegions.push(region);
|
| - cvox.LiveRegionsDeprecated.previousRegionValue.push([]);
|
| - }
|
| -
|
| - // Get the new value.
|
| - var currentValue = cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue(region);
|
| -
|
| - // If the page just loaded and this is any region type other than 'alert',
|
| - // keep track of the new value but don't announce anything. Alerts are
|
| - // the exception, they're announced on page load.
|
| - var deltaTime = new Date() - cvox.LiveRegionsDeprecated.pageLoadTime;
|
| - if (cvox.AriaUtil.getRoleAttribute(region) != 'alert' &&
|
| - deltaTime < cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS) {
|
| - cvox.LiveRegionsDeprecated.previousRegionValue[regionIndex] = currentValue;
|
| - return false;
|
| - }
|
| -
|
| - // Don't announce alerts on page load if their text and values consist of
|
| - // just whitespace.
|
| - if (cvox.AriaUtil.getRoleAttribute(region) == 'alert' &&
|
| - deltaTime < cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS) {
|
| - var regionText = '';
|
| - for (var i = 0; i < currentValue.length; i++) {
|
| - regionText += currentValue[i].text;
|
| - regionText += currentValue[i].userValue;
|
| - }
|
| - if (cvox.DomUtil.collapseWhitespace(regionText) == '') {
|
| - cvox.LiveRegionsDeprecated.previousRegionValue[regionIndex] = currentValue;
|
| - return false;
|
| - }
|
| - }
|
| -
|
| - // Create maps of values in the live region for fast hash lookup.
|
| - var previousValueMap = {};
|
| - for (var i = 0; i < previousValue.length; i++) {
|
| - previousValueMap[previousValue[i].toString()] = true;
|
| - }
|
| - var currentValueMap = {};
|
| - for (i = 0; i < currentValue.length; i++) {
|
| - currentValueMap[currentValue[i].toString()] = true;
|
| - }
|
| -
|
| - // Figure out the additions and removals.
|
| - var additions = [];
|
| - if (cvox.AriaUtil.getAriaRelevant(region, 'additions')) {
|
| - for (i = 0; i < currentValue.length; i++) {
|
| - if (!previousValueMap[currentValue[i].toString()]) {
|
| - additions.push(currentValue[i]);
|
| - }
|
| - }
|
| - }
|
| - var removals = [];
|
| - if (cvox.AriaUtil.getAriaRelevant(region, 'removals')) {
|
| - for (i = 0; i < previousValue.length; i++) {
|
| - if (!currentValueMap[previousValue[i].toString()]) {
|
| - removals.push(previousValue[i]);
|
| - }
|
| - }
|
| - }
|
| -
|
| - // Only speak removals if they're the only change. Otherwise, when one or
|
| - // more removals and additions happen concurrently, treat it as a change
|
| - // and just speak any additions (which includes changed nodes).
|
| - var messages = [];
|
| - if (additions.length == 0 && removals.length > 0) {
|
| - messages = [new cvox.NavDescription({
|
| - context: cvox.ChromeVox.msgs.getMsg('live_regions_removed'), text: ''
|
| - })].concat(removals);
|
| - } else {
|
| - messages = additions;
|
| - }
|
| -
|
| - // Store the new value of the live region.
|
| - cvox.LiveRegionsDeprecated.previousRegionValue[regionIndex] = currentValue;
|
| -
|
| - // Return if speak is disabled or there's nothing to announce.
|
| - if (disableSpeak || messages.length == 0) {
|
| - return false;
|
| - }
|
| -
|
| - // Announce the changes with the appropriate politeness level.
|
| - var live = cvox.AriaUtil.getAriaLive(region);
|
| - if (live == 'polite') {
|
| - queueMode = cvox.AbstractTts.QUEUE_MODE_QUEUE;
|
| - }
|
| - for (i = 0; i < messages.length; i++) {
|
| - messages[i].speak(queueMode);
|
| - queueMode = cvox.AbstractTts.QUEUE_MODE_QUEUE;
|
| - }
|
| -
|
| - return true;
|
| -};
|
| -
|
| -/**
|
| - * Recursively build up the value of a live region and return it as
|
| - * an array of NavDescriptions. Each atomic portion of the region gets a
|
| - * single string, otherwise each leaf node gets its own string. When a region
|
| - * changes, the sets of strings before and after are searched to determine
|
| - * which have changed.
|
| - *
|
| - * @param {Node} node The root node.
|
| - * @return {Array.<cvox.NavDescription>} An array of NavDescriptions
|
| - * describing atomic nodes or leaf nodes in the subtree rooted
|
| - * at this node.
|
| - */
|
| -cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue = function(node) {
|
| - if (cvox.AriaUtil.getAriaAtomic(node) ||
|
| - cvox.DomUtil.isLeafNode(node)) {
|
| - var description = cvox.DescriptionUtil.getDescriptionFromAncestors(
|
| - [node], true, cvox.ChromeVox.verbosity);
|
| - if (!description.isEmpty()) {
|
| - return [description];
|
| - } else {
|
| - return [];
|
| - }
|
| - }
|
| -
|
| - var result = [];
|
| -
|
| - // Start with the description of this node.
|
| - var description = cvox.DescriptionUtil.getDescriptionFromAncestors(
|
| - [node], false, cvox.ChromeVox.verbosity);
|
| - if (!description.isEmpty()) {
|
| - result.push(description);
|
| - }
|
| -
|
| - // Recursively add descriptions of child nodes.
|
| - for (var i = 0; i < node.childNodes.length; i++) {
|
| - var child = node.childNodes[i];
|
| - if (cvox.DomUtil.isVisible(child, {checkAncestors: false}) &&
|
| - !cvox.AriaUtil.isHidden(child)) {
|
| - var recursiveArray = cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue(child);
|
| - result = result.concat(recursiveArray);
|
| - }
|
| - }
|
| - return result;
|
| -};
|
|
|