| Index: chrome/browser/resources/access_chromevox/common/focus_util.js
|
| ===================================================================
|
| --- chrome/browser/resources/access_chromevox/common/focus_util.js (revision 0)
|
| +++ chrome/browser/resources/access_chromevox/common/focus_util.js (revision 0)
|
| @@ -0,0 +1,87 @@
|
| +// Copyright (c) 2011 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 A collection of JavaScript utilities used to manage focus
|
| + * within a document.
|
| + */
|
| +
|
| +
|
| +goog.provide('cvox.FocusUtil');
|
| +
|
| +
|
| +/**
|
| + * Utilities for managing focus.
|
| + * @constructor
|
| + */
|
| +cvox.FocusUtil = function() {
|
| +};
|
| +
|
| +/**
|
| + * Maps whether an input element of specified type accepts text selection or
|
| + * not. True if the element does accept text selection, false if it does not.
|
| + * This can be used to determine whether a visitor to that element should
|
| + * provide interactive text editing to the user.
|
| + * From the W3C table of possible type keywords:
|
| + * http://www.w3.org/TR/html5/the-input-element.html#attr-input-type
|
| + * @type {Object}
|
| + */
|
| +cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE = {
|
| + 'hidden' : false,
|
| + 'text' : true,
|
| + 'search' : true,
|
| + 'tel' : true,
|
| + 'url' : true,
|
| + 'email' : true,
|
| + 'password' : true,
|
| + 'datetime' : false,
|
| + 'date' : false,
|
| + 'month' : false,
|
| + 'week' : false,
|
| + 'time' : false,
|
| + 'datetime-local' : false,
|
| + 'number' : false,
|
| + 'range' : false,
|
| + 'color' : false,
|
| + 'checkbox' : false,
|
| + 'radio' : false,
|
| + 'file' : false,
|
| + 'submit' : false,
|
| + 'image' : false,
|
| + 'reset' : false,
|
| + 'button' : false
|
| +};
|
| +
|
| +/**
|
| + * Checks if the currently focused element is a field that accepts text input
|
| + * (This can include text fields and selectors)
|
| + *
|
| + * @return {boolean} True if the currently focused element accepts text input.
|
| + */
|
| +cvox.FocusUtil.isFocusInTextInputField = function() {
|
| + // TODO(rshearer): Check all editable text fields here, including
|
| + // aria role=textbox.
|
| +
|
| + var activeElement = document.activeElement;
|
| +
|
| + if (activeElement.isContentEditable) {
|
| + return true;
|
| + }
|
| +
|
| + if ((activeElement.tagName === 'INPUT') ||
|
| + (activeElement.tagName === 'TEXTAREA') ||
|
| + (activeElement.tagName === 'SELECT')) {
|
| +
|
| + if (activeElement.getAttribute('readOnly') == 'true') {
|
| + return false;
|
| + } else if (! activeElement.hasAttribute('type')) {
|
| + return true;
|
| + } else {
|
| + var activeType = activeElement.getAttribute('type').toLowerCase();
|
| +
|
| + return cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE[activeType];
|
| + }
|
| + }
|
| + return false;
|
| +};
|
|
|
| Property changes on: chrome/browser/resources/access_chromevox/common/focus_util.js
|
| ___________________________________________________________________
|
| Added: svn:executable
|
| + *
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|