1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @fileoverview A class for walking "groups". Groups, intuitively, are logical
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * collections of dom elements. See AbstractNodeWalker and the
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * stopNodeDescent() method here for how groups are defined.
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.provide('cvox.GroupWalker');
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.AbstractNodeWalker');
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.BrailleUtil');
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.CursorSelection');
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.DescriptionUtil');
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.DomUtil');
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.require('cvox.GroupUtil');
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @constructor
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @extends {cvox.AbstractNodeWalker}
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.GroupWalker = function() {
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  cvox.AbstractNodeWalker.call(this);
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)goog.inherits(cvox.GroupWalker, cvox.AbstractNodeWalker);
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @override
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.GroupWalker.prototype.getDescription = function(prevSel, sel) {
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return cvox.DescriptionUtil.getCollectionDescription(prevSel, sel);
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @override
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.GroupWalker.prototype.getBraille = function(prevSel, sel) {
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  throw 'getBraille is unsupported';
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @override
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.GroupWalker.prototype.getGranularityMsg = function() {
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return cvox.ChromeVox.msgs.getMsg('group_strategy');
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/**
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @override
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)cvox.GroupWalker.prototype.stopNodeDescent = function(node) {
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return cvox.GroupUtil.isLeafNode(node);
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
60