Remove the old signature of NotificationManager::closePersistent().
[chromium-blink-merge.git] / chrome / browser / resources / chromeos / chromevox / cvox2 / background / automation_predicate.js
blob3e6fe190fc10822c5f1432f83c733bacbed0718c
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 /**
6  * @fileoverview ChromeVox predicates for the automation extension API.
7  */
9 goog.provide('AutomationPredicate');
10 goog.provide('AutomationPredicate.Binary');
11 goog.provide('AutomationPredicate.Unary');
13 /**
14  * @constructor
15  */
16 AutomationPredicate = function() {};
18 /**
19  * @typedef {function(chrome.automation.AutomationNode) : boolean}
20  */
21 AutomationPredicate.Unary;
23 /**
24  * @typedef {function(chrome.automation.AutomationNode,
25  *                    chrome.automation.AutomationNode) : boolean}
26  */
27 AutomationPredicate.Binary;
29 /**
30  * Constructs a predicate given a role.
31  * @param {chrome.automation.RoleType} role
32  * @return {AutomationPredicate.Unary}
33  */
34 AutomationPredicate.makeRolePredicate = function(role) {
35   return function(node) {
36     return node.role == role;
37   };
40 /** @type {AutomationPredicate.Unary} */
41 AutomationPredicate.heading =
42     AutomationPredicate.makeRolePredicate(
43         chrome.automation.RoleType.heading);
44 /** @type {AutomationPredicate.Unary} */
45 AutomationPredicate.inlineTextBox =
46     AutomationPredicate.makeRolePredicate(
47         chrome.automation.RoleType.inlineTextBox);
48 /** @type {AutomationPredicate.Unary} */
49 AutomationPredicate.link =
50     AutomationPredicate.makeRolePredicate(
51         chrome.automation.RoleType.link);
53 /**
54  * @param {chrome.automation.AutomationNode} node
55  * @return {boolean}
56  */
57 AutomationPredicate.leaf = function(node) {
58   return !node.firstChild ||
59       node.role == chrome.automation.RoleType.button ||
60       node.children.every(function(n) {
61         return n.state.invisible;
62       });
65 /**
66  * @param {chrome.automation.AutomationNode} node
67  * @return {boolean}
68  */
69 AutomationPredicate.leafWithText = function(node) {
70   return AutomationPredicate.leaf(node) &&
71       !!(node.attributes.name || node.attributes.value);
74 /**
75  * @param {chrome.automation.AutomationNode} first
76  * @param {chrome.automation.AutomationNode} second
77  * @return {boolean}
78  */
79 AutomationPredicate.linebreak = function(first, second) {
80   // TODO(dtseng): Use next/previousOnLin once available.
81   var fl = first.location;
82   var sl = second.location;
83   return fl.top != sl.top ||
84       (fl.top + fl.height != sl.top + sl.height);