19648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/*
29648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Copyright (C) 2011 The Android Open Source Project
39648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov *
49648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License");
59648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * you may not use this file except in compliance with the License.
69648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * You may obtain a copy of the License at
79648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov *
89648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov *      http://www.apache.org/licenses/LICENSE-2.0
99648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov *
109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Unless required by applicable law or agreed to in writing, software
119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS,
129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * See the License for the specific language governing permissions and
149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * limitations under the License.
159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */
169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpackage android.support.v4.view.accessibility;
189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.graphics.Rect;
209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.os.Build;
2170e96ebf69f91da84681a6263b3862c63d53ab11alanvimport android.os.Bundle;
220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslavimport android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat;
23086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viveretteimport android.support.v4.view.ViewCompat;
249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.view.View;
25a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport java.util.ArrayList;
27f9c2277244722eca88c784b9cfdcc78df7f94781Svetoslav Ganovimport java.util.Collections;
289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport java.util.List;
299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/**
310574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing {@link android.view.accessibility.AccessibilityNodeInfo}
320574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion.
339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */
349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpublic class AccessibilityNodeInfoCompat {
359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
36389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    public static class AccessibilityActionCompat {
37389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        private final Object mAction;
38389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
3984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        /**
4084ef4490e42b960ea375630f9cc37246af9c571bSvetoslav         * Creates a new instance.
4184ef4490e42b960ea375630f9cc37246af9c571bSvetoslav         *
4284ef4490e42b960ea375630f9cc37246af9c571bSvetoslav         * @param actionId The action id.
4384ef4490e42b960ea375630f9cc37246af9c571bSvetoslav         * @param label The action label.
4484ef4490e42b960ea375630f9cc37246af9c571bSvetoslav         */
4584ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public AccessibilityActionCompat(int actionId, CharSequence label) {
4684ef4490e42b960ea375630f9cc37246af9c571bSvetoslav            this(IMPL.newAccessibilityAction(actionId, label));
4784ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        }
4884ef4490e42b960ea375630f9cc37246af9c571bSvetoslav
49389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        private AccessibilityActionCompat(Object action) {
50389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            mAction = action;
51389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
52389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
53389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        /**
54389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         * Gets the id for this action.
55389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         *
56389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         * @return The action id.
57389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         */
58389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public int getId() {
5984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav            return IMPL.getAccessibilityActionId(mAction);
60389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
61389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
62389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        /**
63389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         * Gets the label for this action. Its purpose is to describe the
64389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         * action to user.
65389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         *
66389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         * @return The label.
67389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         */
68389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public CharSequence getLabel() {
6984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav            return IMPL.getAccessibilityActionLabel(mAction);
70389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
71389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    }
72389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
73fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public static class CollectionInfoCompat {
74a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        /** Selection mode where items are not selectable. */
75a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public static final int SELECTION_MODE_NONE = 0;
76a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
77a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        /** Selection mode where a single item may be selected. */
78a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public static final int SELECTION_MODE_SINGLE = 1;
79a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
80a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        /** Selection mode where multiple items may be selected. */
81a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public static final int SELECTION_MODE_MULTIPLE = 2;
82a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
83a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        final Object mInfo;
84a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
85a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        /**
86a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar         * Returns a cached instance if such is available otherwise a new one.
87a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar         *
88a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar         * @return An instance.
89a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar         */
90a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public static CollectionInfoCompat obtain(int rowCount, int columnCount,
91a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                boolean hierarchical, int selectionMode) {
92a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return new CollectionInfoCompat(IMPL.obtainCollectionInfo(rowCount, columnCount,
93a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                    hierarchical, selectionMode));
94a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
95fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
96fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private CollectionInfoCompat(Object info) {
97fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            mInfo = info;
98fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
99fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
100fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getColumnCount() {
101a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return IMPL.getCollectionInfoColumnCount(mInfo);
102fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
103fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
104fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getRowCount() {
105a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return IMPL.getCollectionInfoRowCount(mInfo);
106fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
107fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
108fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public boolean isHierarchical() {
109a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return IMPL.isCollectionInfoHierarchical(mInfo);
110fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
111fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
112fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
113fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public static class CollectionItemInfoCompat {
114a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
115fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private final Object mInfo;
116fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
117a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        /**
118a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar         * Returns a cached instance if such is available otherwise a new one.
119a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar         *
120a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar         * @return An instance.
121a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar         */
122a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public static CollectionItemInfoCompat obtain(int rowIndex, int rowSpan,
123a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                int columnIndex, int columnSpan, boolean heading, boolean selected) {
124a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return new CollectionItemInfoCompat(IMPL.obtainCollectionItemInfo(rowIndex, rowSpan,
125a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                    columnIndex, columnSpan, heading, selected));
126a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
127a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
128fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private CollectionItemInfoCompat(Object info) {
129fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            mInfo = info;
130fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
131fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
132fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getColumnIndex() {
133a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return IMPL.getCollectionItemColumnIndex(mInfo);
134fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
135fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
136fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getColumnSpan() {
137a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return IMPL.getCollectionItemColumnSpan(mInfo);
138fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
139fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
140fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getRowIndex() {
141a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return IMPL.getCollectionItemRowIndex(mInfo);
142fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
143fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
144fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getRowSpan() {
145a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return IMPL.getCollectionItemRowSpan(mInfo);
146fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
147fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
148fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public boolean isHeading() {
149a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return IMPL.isCollectionItemHeading(mInfo);
150a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
151a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
152a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public boolean isSelected() {
153a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return IMPL.isCollectionItemSelected(mInfo);
154fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
155fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
156fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
157fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public static class RangeInfoCompat {
158fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        /** Range type: integer. */
159fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public static final int RANGE_TYPE_INT = 0;
160fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        /** Range type: float. */
161fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public static final int RANGE_TYPE_FLOAT = 1;
162fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        /** Range type: percent with values from zero to one.*/
163fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public static final int RANGE_TYPE_PERCENT = 2;
164fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
165fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private final Object mInfo;
166fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
167fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private RangeInfoCompat(Object info) {
168fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            mInfo = info;
169fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
170fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
171fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public float getCurrent() {
172fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.RangeInfo.getCurrent(mInfo);
173fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
174fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
175fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public float getMax() {
176fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.RangeInfo.getMax(mInfo);
177fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
178fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
179fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public float getMin() {
180fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.RangeInfo.getMin(mInfo);
181fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
182fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
183fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getType() {
184fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.RangeInfo.getType(mInfo);
185fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
186fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
187fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
1889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static interface AccessibilityNodeInfoImpl {
18984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public Object newAccessibilityAction(int actionId, CharSequence label);
1909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain();
1919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source);
1929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info);
19370e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId);
1949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source);
1953a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId);
19670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus);
19770e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction);
1989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info);
1999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info);
20070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index);
2019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child);
2023a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId);
2039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info);
2049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action);
20584ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public void addAction(Object info, Object action);
20684ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public int getAccessibilityActionId(Object action);
20784ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public CharSequence getAccessibilityActionLabel(Object action);
2089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action);
20970e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments);
21070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities);
21170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info);
2129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text);
21370e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info);
21470e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId);
2159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent);
2169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds);
2179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds);
2189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds);
2199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds);
2209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info);
2219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable);
2229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info);
2239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked);
2249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info);
2259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable);
2269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info);
2279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused);
22870e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info);
22970e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser);
23070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info);
23170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused);
2329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info);
2339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected);
2349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info);
2359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable);
2369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info);
2379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable);
2389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info);
2399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled);
2409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info);
2419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password);
2429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info);
2439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable);
2449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info);
2459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName);
2469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info);
2479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className);
2489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info);
2499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text);
2509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info);
2519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription);
2529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info);
253071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public String getViewIdResourceName(Object info);
254071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public void setViewIdResourceName(Object info, String viewId);
255086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public int getLiveRegion(Object info);
256086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public void setLiveRegion(Object info, int mode);
257fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionInfo(Object info);
258a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public void setCollectionInfo(Object info, Object collectionInfo);
259fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionItemInfo(Object info);
260a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public void setCollectionItemInfo(Object info, Object collectionItemInfo);
261fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getRangeInfo(Object info);
262389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public List<Object> getActionList(Object info);
263a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public Object obtainCollectionInfo(int rowCount, int columnCount, boolean hierarchical,
264a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                int selectionMode);
265a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionInfoColumnCount(Object info);
266a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionInfoRowCount(Object info);
267a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public boolean isCollectionInfoHierarchical(Object info);
268a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public Object obtainCollectionItemInfo(int rowIndex, int rowSpan, int columnIndex,
269a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                int columnSpan, boolean heading, boolean selected);
270a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemColumnIndex(Object info);
271a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemColumnSpan(Object info);
272a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemRowIndex(Object info);
273a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemRowSpan(Object info);
274a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public boolean isCollectionItemHeading(Object info);
275a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public boolean isCollectionItemSelected(Object info);
276acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public AccessibilityNodeInfoCompat getTraversalBefore(Object info);
277acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalBefore(Object info, View view);
278acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalBefore(Object info, View root, int virtualDescendantId);
279acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public AccessibilityNodeInfoCompat getTraversalAfter(Object info);
280acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalAfter(Object info, View view);
281acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalAfter(Object info, View root, int virtualDescendantId);
2829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
2839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static class AccessibilityNodeInfoStubImpl implements AccessibilityNodeInfoImpl {
28570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
28684ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public Object newAccessibilityAction(int actionId, CharSequence label) {
28784ef4490e42b960ea375630f9cc37246af9c571bSvetoslav            return null;
28884ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        }
28984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav
29084ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        @Override
2919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain() {
2929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
2939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
29570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source) {
2979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
2989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
30070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
30170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId) {
30270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
30370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
30470e96ebf69f91da84681a6263b3862c63d53ab11alanv
30570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info) {
3079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
3089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
31070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action) {
3129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
31570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
31684ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public void addAction(Object info, Object action) {
31784ef4490e42b960ea375630f9cc37246af9c571bSvetoslav
31884ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        }
31984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav
32084ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        @Override
32184ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public int getAccessibilityActionId(Object action) {
32284ef4490e42b960ea375630f9cc37246af9c571bSvetoslav            return 0;
32384ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        }
32484ef4490e42b960ea375630f9cc37246af9c571bSvetoslav
32584ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        @Override
32684ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public CharSequence getAccessibilityActionLabel(Object action) {
32784ef4490e42b960ea375630f9cc37246af9c571bSvetoslav            return null;
32884ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        }
32984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav
33084ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        @Override
3319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child) {
3329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
33570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3363a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId) {
3373a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
3383a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
3393a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
34070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text) {
342f9c2277244722eca88c784b9cfdcc78df7f94781Svetoslav Ganov            return Collections.emptyList();
3439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
34570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info) {
3479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
3489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
35070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds) {
3529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
35570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds) {
3579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
36070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
36170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index) {
3629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
3639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
36570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info) {
3679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
3689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
37070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info) {
3729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
3739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
37570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info) {
3779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
3789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
38070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info) {
3829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
3839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
38570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
38670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info) {
3879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
3889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
39070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info) {
3929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
3939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
39570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info) {
3979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
3989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
40070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info) {
4029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
40570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info) {
4079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
41070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info) {
4129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
41570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info) {
4179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
42070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info) {
4229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
42570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info) {
4279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
43070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
43170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info) {
43270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
43370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
43470e96ebf69f91da84681a6263b3862c63d53ab11alanv
43570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
43670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info) {
43770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
43870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
43970e96ebf69f91da84681a6263b3862c63d53ab11alanv
44070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info) {
4429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
44570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info) {
4479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
45070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info) {
4529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
45570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info) {
4579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
46070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action) {
4629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
4639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
46570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
46670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments) {
46770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
46870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
46970e96ebf69f91da84681a6263b3862c63d53ab11alanv
47070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
47170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities) {
47270e96ebf69f91da84681a6263b3862c63d53ab11alanv
47370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
47470e96ebf69f91da84681a6263b3862c63d53ab11alanv
47570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
47670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info) {
47770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return 0;
47870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
47970e96ebf69f91da84681a6263b3862c63d53ab11alanv
48070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds) {
4829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
48570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds) {
4879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
49070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable) {
4929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
49570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked) {
4979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
50070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className) {
5029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
50570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable) {
5079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
51070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription) {
5129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
51570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled) {
5179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
52070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable) {
5229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
52570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused) {
5279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
53070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
53170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser) {
53270e96ebf69f91da84681a6263b3862c63d53ab11alanv
53370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
53470e96ebf69f91da84681a6263b3862c63d53ab11alanv
53570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
53670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused) {
53770e96ebf69f91da84681a6263b3862c63d53ab11alanv
53870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
53970e96ebf69f91da84681a6263b3862c63d53ab11alanv
54070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable) {
5429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
54570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName) {
5479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
55070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent) {
5529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
55570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password) {
5579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
56070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable) {
5629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
56570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected) {
5679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
57070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source) {
5729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
57570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5763a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId) {
5773a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
5783a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
5793a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
58070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
58170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus) {
58270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
58370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
58470e96ebf69f91da84681a6263b3862c63d53ab11alanv
58570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
58670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction) {
58770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
58870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
58970e96ebf69f91da84681a6263b3862c63d53ab11alanv
59070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text) {
5929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
59570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info) {
5979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
59970e96ebf69f91da84681a6263b3862c63d53ab11alanv
60070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
60170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId) {
60270e96ebf69f91da84681a6263b3862c63d53ab11alanv
60370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
6040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
6050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
606071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public String getViewIdResourceName(Object info) {
6070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            return null;
6080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
6090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
6100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
611071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public void setViewIdResourceName(Object info, String viewId) {
6120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
6130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
614086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
615086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
616086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public int getLiveRegion(Object info) {
617086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            return ViewCompat.ACCESSIBILITY_LIVE_REGION_NONE;
618086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
619086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
620086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
621086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public void setLiveRegion(Object info, int mode) {
622086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            // No-op
623086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
624fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
625fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
626fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionInfo(Object info) {
627fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return null;
628fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
629fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
630fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
631a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public void setCollectionInfo(Object info, Object collectionInfo) {
632a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
633a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
634a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
635fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionItemInfo(Object info) {
636fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return null;
637fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
638fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
639fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
640a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public void setCollectionItemInfo(Object info, Object collectionItemInfo) {
641a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
642a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
643a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
644fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getRangeInfo(Object info) {
645fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return null;
646fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
647389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
648389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        @Override
649389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public List<Object> getActionList(Object info) {
650389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            return null;
651389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
652389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
653389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        @Override
654a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public Object obtainCollectionInfo(int rowCount, int columnCount, boolean hierarchical,
655a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                int selectionMode) {
656a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return null;
657a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
658a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
659a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
660a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionInfoColumnCount(Object info) {
661a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return 0;
662a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
663a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
664a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
665a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionInfoRowCount(Object info) {
666a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return 0;
667a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
668a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
669a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
670a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public boolean isCollectionInfoHierarchical(Object info) {
671a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return false;
672a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
673a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
674a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
675a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public Object obtainCollectionItemInfo(int rowIndex, int rowSpan, int columnIndex,
676a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                int columnSpan, boolean heading, boolean selected) {
677a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return null;
678a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
679a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
680a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
681a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemColumnIndex(Object info) {
682a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return 0;
683a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
684a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
685a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
686a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemColumnSpan(Object info) {
687a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return 0;
688a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
689a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
690a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
691a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemRowIndex(Object info) {
692a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return 0;
693a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
694a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
695a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
696a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemRowSpan(Object info) {
697a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return 0;
698a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
699a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
700a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
701a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public boolean isCollectionItemHeading(Object info) {
702a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return false;
703a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
704a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
705a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
706a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public boolean isCollectionItemSelected(Object info) {
707a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return false;
708a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
709acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
710acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
711acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public AccessibilityNodeInfoCompat getTraversalBefore(Object info) {
712acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            return null;
713acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
714acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
715acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
716acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalBefore(Object info, View view) {
717acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
718acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
719acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
720acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalBefore(Object info, View root, int virtualDescendantId) {
721acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
722acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
723acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
724acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public AccessibilityNodeInfoCompat getTraversalAfter(Object info) {
725acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            return null;
726acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
727acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
728acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
729acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalAfter(Object info, View view) {
730acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
731acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
732acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
733acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalAfter(Object info, View root, int virtualDescendantId) {
734acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
7359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
7369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static class AccessibilityNodeInfoIcsImpl extends AccessibilityNodeInfoStubImpl {
7389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain() {
7409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain();
7419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source) {
7459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain(source);
7469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info) {
7509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain(info);
7519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action) {
7559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.addAction(info, action);
7569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child) {
7609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.addChild(info, child);
7619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text) {
7659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.findAccessibilityNodeInfosByText(info, text);
7669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info) {
7709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getActions(info);
7719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds) {
7759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.getBoundsInParent(info, outBounds);
7769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds) {
7809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.getBoundsInScreen(info, outBounds);
7819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
78470e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index) {
78570e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatIcs.getChild(info, index);
7869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info) {
7909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getChildCount(info);
7919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info) {
7959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getClassName(info);
7969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info) {
8009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getContentDescription(info);
8019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info) {
8059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getPackageName(info);
8069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
80970e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info) {
81070e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatIcs.getParent(info);
8119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info) {
8159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getText(info);
8169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info) {
8209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getWindowId(info);
8219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info) {
8259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isCheckable(info);
8269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info) {
8309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isChecked(info);
8319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info) {
8359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isClickable(info);
8369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info) {
8409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isEnabled(info);
8419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info) {
8459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isFocusable(info);
8469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info) {
8509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isFocused(info);
8519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info) {
8559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isLongClickable(info);
8569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info) {
8609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isPassword(info);
8619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info) {
8659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isScrollable(info);
8669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info) {
8709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isSelected(info);
8719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action) {
8759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.performAction(info, action);
8769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds) {
8809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setBoundsInParent(info, bounds);
8819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds) {
8859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setBoundsInScreen(info, bounds);
8869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable) {
8909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setCheckable(info, checkable);
8919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked) {
8959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setChecked(info, checked);
8969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
8979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
8999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className) {
9009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setClassName(info, className);
9019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable) {
9059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setClickable(info, clickable);
9069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription) {
9109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setContentDescription(info, contentDescription);
9119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled) {
9159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setEnabled(info, enabled);
9169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable) {
9209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setFocusable(info, focusable);
9219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused) {
9259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setFocused(info, focused);
9269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable) {
9309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setLongClickable(info, longClickable);
9319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName) {
9359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setPackageName(info, packageName);
9369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent) {
9409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setParent(info, parent);
9419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password) {
9459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setPassword(info, password);
9469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable) {
9509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setScrollable(info, scrollable);
9519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected) {
9559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setSelected(info, selected);
9569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source) {
9609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setSource(info, source);
9619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text) {
9659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setText(info, text);
9669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
9699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info) {
9709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.recycle(info);
9719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
9739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9743a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    static class AccessibilityNodeInfoJellybeanImpl extends AccessibilityNodeInfoIcsImpl {
9753a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        @Override
97670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId) {
97770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.obtain(root, virtualDescendantId);
97870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
97970e96ebf69f91da84681a6263b3862c63d53ab11alanv
98070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
98170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus) {
98270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.findFocus(info, focus);
98370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
98470e96ebf69f91da84681a6263b3862c63d53ab11alanv
98570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
98670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction) {
98770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.focusSearch(info, direction);
98870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
98970e96ebf69f91da84681a6263b3862c63d53ab11alanv
99070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
9913a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId) {
9923a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            AccessibilityNodeInfoCompatJellyBean.addChild(info, child, virtualDescendantId);
9933a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
9943a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
9953a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        @Override
9963a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId) {
9973a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            AccessibilityNodeInfoCompatJellyBean.setSource(info, root, virtualDescendantId);
9983a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
99970e96ebf69f91da84681a6263b3862c63d53ab11alanv
100070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
100170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info) {
100270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.isVisibleToUser(info);
100370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
100470e96ebf69f91da84681a6263b3862c63d53ab11alanv
100570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
100670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser) {
100770e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setVisibleToUser(info, visibleToUser);
100870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
100970e96ebf69f91da84681a6263b3862c63d53ab11alanv
101070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
101170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info) {
101270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.isAccessibilityFocused(info);
101370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
101470e96ebf69f91da84681a6263b3862c63d53ab11alanv
101570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
101670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused) {
101770e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setAccesibilityFocused(info, focused);
101870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
101970e96ebf69f91da84681a6263b3862c63d53ab11alanv
102070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
102170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments) {
102270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.performAction(info, action, arguments);
102370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
102470e96ebf69f91da84681a6263b3862c63d53ab11alanv
102570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
102670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities) {
102770e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setMovementGranularities(info, granularities);
102870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
102970e96ebf69f91da84681a6263b3862c63d53ab11alanv
103070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
103170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info) {
103270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.getMovementGranularities(info);
103370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
103470e96ebf69f91da84681a6263b3862c63d53ab11alanv
103570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
103670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId) {
103770e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setParent(info, root, virtualDescendantId);
103870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
10393a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
10403a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
10410fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    static class AccessibilityNodeInfoJellybeanMr2Impl extends AccessibilityNodeInfoJellybeanImpl {
10420fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
10430fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
1044071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public String getViewIdResourceName(Object info) {
10450fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            return AccessibilityNodeInfoCompatJellybeanMr2.getViewIdResourceName(info);
10460fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
10470fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
10480fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
1049071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public void setViewIdResourceName(Object info, String viewId) {
10500fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            AccessibilityNodeInfoCompatJellybeanMr2.setViewIdResourceName(info, viewId);
10510fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
10520fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
10530fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
1054086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    static class AccessibilityNodeInfoKitKatImpl extends AccessibilityNodeInfoJellybeanMr2Impl {
1055086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
1056086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public int getLiveRegion(Object info) {
1057086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            return AccessibilityNodeInfoCompatKitKat.getLiveRegion(info);
1058086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
1059086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
1060086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
1061086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public void setLiveRegion(Object info, int mode) {
1062086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            AccessibilityNodeInfoCompatKitKat.setLiveRegion(info, mode);
1063086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
1064fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
1065fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
1066fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionInfo(Object info) {
1067fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.getCollectionInfo(info);
1068fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
1069fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
1070fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
1071a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public void setCollectionInfo(Object info, Object collectionInfo) {
1072a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            AccessibilityNodeInfoCompatKitKat.setCollectionInfo(info, collectionInfo);
1073a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1074a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1075a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1076a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public Object obtainCollectionInfo(int rowCount, int columnCount,
1077a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                boolean hierarchical, int selectionMode) {
1078a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatKitKat.obtainCollectionInfo(rowCount, columnCount,
1079a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                    hierarchical, selectionMode);
1080a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1081a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1082a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1083a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public Object obtainCollectionItemInfo(int rowIndex, int rowSpan, int columnIndex,
1084a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                int columnSpan, boolean heading, boolean selected) {
1085a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatKitKat
1086a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                    .obtainCollectionItemInfo(rowIndex, rowSpan, columnIndex, columnSpan, heading);
1087a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1088a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1089a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1090a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionInfoColumnCount(Object info) {
1091a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatKitKat.CollectionInfo.getColumnCount(info);
1092a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1093a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1094a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1095a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionInfoRowCount(Object info) {
1096a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatKitKat.CollectionInfo.getRowCount(info);
1097a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1098a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1099a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1100a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public boolean isCollectionInfoHierarchical(Object info) {
1101a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatKitKat.CollectionInfo.isHierarchical(info);
1102a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1103a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1104a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1105fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionItemInfo(Object info) {
1106fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.getCollectionItemInfo(info);
1107fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
1108fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
1109fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
1110fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getRangeInfo(Object info) {
1111fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.getRangeInfo(info);
1112fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
1113a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1114a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1115a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemColumnIndex(Object info) {
1116a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatKitKat.CollectionItemInfo.getColumnIndex(info);
1117a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1118a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1119a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1120a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemColumnSpan(Object info) {
1121a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatKitKat.CollectionItemInfo.getColumnSpan(info);
1122a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1123a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1124a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1125a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemRowIndex(Object info) {
1126a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatKitKat.CollectionItemInfo.getRowIndex(info);
1127a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1128a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1129a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1130a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public int getCollectionItemRowSpan(Object info) {
1131a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatKitKat.CollectionItemInfo.getRowSpan(info);
1132a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1133a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1134a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1135a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public boolean isCollectionItemHeading(Object info) {
1136a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatKitKat.CollectionItemInfo.isHeading(info);
1137a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1138a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1139a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1140a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public void setCollectionItemInfo(Object info, Object collectionItemInfo) {
1141a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            AccessibilityNodeInfoCompatKitKat.setCollectionItemInfo(info, collectionItemInfo);
1142a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1143086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
1144086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
1145389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    static class AccessibilityNodeInfoApi21Impl extends AccessibilityNodeInfoKitKatImpl {
1146389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        @Override
114784ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public Object newAccessibilityAction(int actionId, CharSequence label) {
114884ef4490e42b960ea375630f9cc37246af9c571bSvetoslav            return AccessibilityNodeInfoCompatApi21.newAccessibilityAction(actionId, label);
114984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        }
115084ef4490e42b960ea375630f9cc37246af9c571bSvetoslav
115184ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        @Override
1152389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public List<Object> getActionList(Object info) {
1153389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            return AccessibilityNodeInfoCompatApi21.getActionList(info);
1154389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
1155389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
1156389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        @Override
1157a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public Object obtainCollectionInfo(int rowCount, int columnCount, boolean hierarchical,
1158a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                int selectionMode) {
1159a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatApi21.obtainCollectionInfo(rowCount, columnCount,
1160a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                    hierarchical, selectionMode);
1161a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1162a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1163a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
116484ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public void addAction(Object info, Object action) {
116584ef4490e42b960ea375630f9cc37246af9c571bSvetoslav            AccessibilityNodeInfoCompatApi21.addAction(info, action);
116684ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        }
116784ef4490e42b960ea375630f9cc37246af9c571bSvetoslav
116884ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        @Override
116984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public int getAccessibilityActionId(Object action) {
117084ef4490e42b960ea375630f9cc37246af9c571bSvetoslav            return AccessibilityNodeInfoCompatApi21.getAccessibilityActionId(action);
117184ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        }
117284ef4490e42b960ea375630f9cc37246af9c571bSvetoslav
117384ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        @Override
117484ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        public CharSequence getAccessibilityActionLabel(Object action) {
117584ef4490e42b960ea375630f9cc37246af9c571bSvetoslav            return AccessibilityNodeInfoCompatApi21.getAccessibilityActionLabel(action);
1176389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
1177a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1178a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1179a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public Object obtainCollectionItemInfo(int rowIndex, int rowSpan, int columnIndex,
1180a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                int columnSpan, boolean heading, boolean selected) {
1181a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatApi21.obtainCollectionItemInfo(rowIndex, rowSpan,
1182a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                    columnIndex, columnSpan, heading, selected);
1183a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1184a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
1185a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        @Override
1186a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        public boolean isCollectionItemSelected(Object info) {
1187a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            return AccessibilityNodeInfoCompatApi21.CollectionItemInfo.isSelected(info);
1188a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        }
1189389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    }
1190389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
1191acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov    static class AccessibilityNodeInfoApi22Impl extends AccessibilityNodeInfoApi21Impl {
1192acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
1193acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public AccessibilityNodeInfoCompat getTraversalBefore(Object info) {
1194acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            Object nodeInfo = AccessibilityNodeInfoCompatApi22.getTraversalBefore(info);
1195acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            if (nodeInfo == null) {
1196acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov                return null;
1197acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            }
1198acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
1199acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            return new AccessibilityNodeInfoCompat(nodeInfo);
1200acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
1201acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
1202acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
1203acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalBefore(Object info, View view) {
1204acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            AccessibilityNodeInfoCompatApi22.setTraversalBefore(info, view);
1205acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
1206acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
1207acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
1208acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalBefore(Object info, View root, int virtualDescendantId) {
1209acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            AccessibilityNodeInfoCompatApi22.setTraversalBefore(info, root, virtualDescendantId);
1210acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
1211acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
1212acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
1213acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public AccessibilityNodeInfoCompat getTraversalAfter(Object info) {
1214acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            Object nodeInfo = AccessibilityNodeInfoCompatApi22.getTraversalAfter(info);
1215acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            if (nodeInfo == null) {
1216acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov                return null;
1217acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            }
1218acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
1219acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            return new AccessibilityNodeInfoCompat(nodeInfo);
1220acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
1221acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
1222acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
1223acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalAfter(Object info, View view) {
1224acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            AccessibilityNodeInfoCompatApi22.setTraversalAfter(info, view);
1225acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
1226acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
1227acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        @Override
1228acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        public void setTraversalAfter(Object info, View root, int virtualDescendantId) {
1229acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            AccessibilityNodeInfoCompatApi22.setTraversalAfter(info, root, virtualDescendantId);
1230acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        }
1231acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov    }
1232acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov
12339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static {
1234acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        if (Build.VERSION.SDK_INT >= 22) {
1235acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov            IMPL = new AccessibilityNodeInfoApi22Impl();
1236acbc0ab18c9acc81e311fbeb31d9849153d54e3cMaxim Bogatov        } else if (Build.VERSION.SDK_INT >= 21) {
1237389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            IMPL = new AccessibilityNodeInfoApi21Impl();
1238389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        } else if (Build.VERSION.SDK_INT >= 19) { // KitKat
1239086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            IMPL = new AccessibilityNodeInfoKitKatImpl();
1240086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        } else if (Build.VERSION.SDK_INT >= 18) { // JellyBean MR2
12410fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            IMPL = new AccessibilityNodeInfoJellybeanMr2Impl();
12420fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        } else if (Build.VERSION.SDK_INT >= 16) { // JellyBean
12433a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            IMPL = new AccessibilityNodeInfoJellybeanImpl();
12443a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        } else if (Build.VERSION.SDK_INT >= 14) { // ICS
12459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            IMPL = new AccessibilityNodeInfoIcsImpl();
12469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        } else {
12479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            IMPL = new AccessibilityNodeInfoStubImpl();
12489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
12499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    private static final AccessibilityNodeInfoImpl IMPL;
12529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    private final Object mInfo;
12549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12550fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in IceCreamSandwich
12569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that focuses the node.
12599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_FOCUS = 0x00000001;
12619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that unfocuses the node.
12649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_CLEAR_FOCUS = 0x00000002;
12669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that selects the node.
12699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_SELECT = 0x00000004;
12719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that unselects the node.
12749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_CLEAR_SELECTION = 0x00000008;
12769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1277c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    /**
127870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that clicks on the node info.
127970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
128070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_CLICK = 0x00000010;
128170e96ebf69f91da84681a6263b3862c63d53ab11alanv
128270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
128370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that long clicks on the node.
128470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
128570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_LONG_CLICK = 0x00000020;
128670e96ebf69f91da84681a6263b3862c63d53ab11alanv
12870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in JellyBean
12880fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
128970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
129070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that gives accessibility focus to the node.
129170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
129270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_ACCESSIBILITY_FOCUS = 0x00000040;
129370e96ebf69f91da84681a6263b3862c63d53ab11alanv
129470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
129570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that clears accessibility focus of the node.
129670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
129770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 0x00000080;
129870e96ebf69f91da84681a6263b3862c63d53ab11alanv
129970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
130070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that requests to go to the next entity in this node's text
130170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * at a given movement granularity. For example, move to the next character,
130270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * word, etc.
130370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
13040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT}<,
13050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN}<br>
13060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong> Move to the previous character and do not extend selection.
130770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
130870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
130970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
131070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER);
13110fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
13120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *           false);
131370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY, arguments);
131470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
131570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
131670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
13170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT
13180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN
13190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
132070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setMovementGranularities(int)
132170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #getMovementGranularities()
132270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
132370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_CHARACTER
132470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_WORD
132570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_LINE
132670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PARAGRAPH
132770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PAGE
132870e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
132970e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 0x00000100;
133070e96ebf69f91da84681a6263b3862c63d53ab11alanv
133170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
133270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that requests to go to the previous entity in this node's text
133370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * at a given movement granularity. For example, move to the next character,
133470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * word, etc.
133570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
13360fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT}<,
13370fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN}<br>
13380fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong> Move to the next character and do not extend selection.
133970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
134070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
134170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
134270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER);
13430fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
13440fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *           false);
134570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
134670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           arguments);
134770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
134870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
134970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
13500fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT
13510fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN
13520fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
135370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setMovementGranularities(int)
135470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #getMovementGranularities()
135570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
135670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_CHARACTER
135770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_WORD
135870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_LINE
135970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PARAGRAPH
136070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PAGE
136170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
136270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 0x00000200;
136370e96ebf69f91da84681a6263b3862c63d53ab11alanv
136470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
136570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to move to the next HTML element of a given type. For example, move
136670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * to the BUTTON, INPUT, TABLE, etc.
136770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
136870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_HTML_ELEMENT_STRING}<br>
136970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Example:</strong>
137070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
137170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
137270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING, "BUTTON");
137370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT, arguments);
137470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
137570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
137670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
137770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_NEXT_HTML_ELEMENT = 0x00000400;
137870e96ebf69f91da84681a6263b3862c63d53ab11alanv
137970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
138070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to move to the previous HTML element of a given type. For example, move
138170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * to the BUTTON, INPUT, TABLE, etc.
138270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
138370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_HTML_ELEMENT_STRING}<br>
138470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Example:</strong>
138570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
138670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
138770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING, "BUTTON");
138870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT, arguments);
138970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
139070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
139170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
139270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_PREVIOUS_HTML_ELEMENT = 0x00000800;
139370e96ebf69f91da84681a6263b3862c63d53ab11alanv
139470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
139570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to scroll the node content forward.
139670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
139770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_SCROLL_FORWARD = 0x00001000;
139870e96ebf69f91da84681a6263b3862c63d53ab11alanv
139970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
140070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to scroll the node content backward.
140170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
140270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_SCROLL_BACKWARD = 0x00002000;
140370e96ebf69f91da84681a6263b3862c63d53ab11alanv
14040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in JellyBeanMr2
14050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
14060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
14070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to copy the current selection to the clipboard.
14080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
14090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_COPY = 0x00004000;
14100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
14110fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
14120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to paste the current clipboard content.
14130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
14140fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_PASTE = 0x00008000;
14150fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
14160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
14170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to cut the current selection and place it to the clipboard.
14180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
14190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_CUT = 0x00010000;
14200fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
14210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
14220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to set the selection. Performing this action with no arguments
14230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * clears the selection.
14240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
14250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_SELECTION_START_INT},
14260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_SELECTION_END_INT}<br>
14270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong>
14280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <code><pre><p>
14290fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   Bundle arguments = new Bundle();
14300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 1);
14310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, 2);
14320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   info.performAction(AccessibilityNodeInfo.ACTION_SET_SELECTION, arguments);
14330fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </code></pre></p>
14340fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
14350fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
14360fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_SELECTION_START_INT
14370fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_SELECTION_END_INT
14380fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
14390fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_SET_SELECTION = 0x00020000;
14400fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
14418d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu    /**
14428d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * Action that sets the text of the node. Performing the action without argument, using <code>
14438d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * null</code> or empty {@link CharSequence} will clear the text. This action will also put the
14448d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * cursor at the end of text.
14458d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <p>
14468d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE}<br>
14478d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <strong>Example:</strong>
14488d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <code><pre><p>
14498d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     *   Bundle arguments = new Bundle();
14508d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     *   arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,
14518d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     *       "android");
14528d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     *   info.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);
14538d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * </code></pre></p>
14548d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     */
14558d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu    public static final int ACTION_SET_TEXT = 0x00200000;
14568d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu
14570fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Action arguments
14580fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
145970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
146070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Argument for which movement granularity to be used when traversing the node text.
146170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
146270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Type:</strong> int<br>
146370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Actions:</strong> {@link #ACTION_NEXT_AT_MOVEMENT_GRANULARITY},
146470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * {@link #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY}
146570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
146670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
146770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT =
146870e96ebf69f91da84681a6263b3862c63d53ab11alanv        "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
146970e96ebf69f91da84681a6263b3862c63d53ab11alanv
147070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
147170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Argument for which HTML element to get moving to the next/previous HTML element.
147270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
147370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Type:</strong> String<br>
147470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Actions:</strong> {@link #ACTION_NEXT_HTML_ELEMENT},
147570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *         {@link #ACTION_PREVIOUS_HTML_ELEMENT}
147670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
147770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
147870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING =
147970e96ebf69f91da84681a6263b3862c63d53ab11alanv        "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
148070e96ebf69f91da84681a6263b3862c63d53ab11alanv
148170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
14820fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for whether when moving at granularity to extend the selection
14830fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * or to move it otherwise.
14840fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
14850fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> boolean<br>
14860fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_NEXT_AT_MOVEMENT_GRANULARITY},
14870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY}
14880fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
14890fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
14900fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_NEXT_AT_MOVEMENT_GRANULARITY
14910fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY
14920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
14930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN =
14940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
14950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
14960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
14970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for specifying the selection start.
14980fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
14990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> int<br>
15000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_SET_SELECTION}
15010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
15020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
15030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_SET_SELECTION
15040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
15050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_SELECTION_START_INT =
15060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_SELECTION_START_INT";
15070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
15080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
15090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for specifying the selection end.
15100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
15110fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> int<br>
15120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_SET_SELECTION}
15130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
15140fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
15150fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_SET_SELECTION
15160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
15170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_SELECTION_END_INT =
15180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_SELECTION_END_INT";
15190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
15208d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu    /**
15218d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * Argument for specifying the text content to set
15228d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <p>
15238d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <strong>Type:</strong> CharSequence<br>
15248d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <strong>Actions:</strong> {@link #ACTION_SET_TEXT}
15258d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * </p>
15268d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     *
15278d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * @see #ACTION_SET_TEXT
15288d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     */
15298d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu    public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE =
15308d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu            "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
15318d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu
15320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Focus types
15330fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
15340fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
153570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * The input focus.
153670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
153770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int FOCUS_INPUT = 1;
153870e96ebf69f91da84681a6263b3862c63d53ab11alanv
153970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
154070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * The accessibility focus.
154170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
154270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int FOCUS_ACCESSIBILITY = 2;
154370e96ebf69f91da84681a6263b3862c63d53ab11alanv
154470e96ebf69f91da84681a6263b3862c63d53ab11alanv    // Movement granularities
154570e96ebf69f91da84681a6263b3862c63d53ab11alanv
154670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
154770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by character.
154870e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
154970e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_CHARACTER = 0x00000001;
155070e96ebf69f91da84681a6263b3862c63d53ab11alanv
155170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
155270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by word.
155370e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
155470e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_WORD = 0x00000002;
155570e96ebf69f91da84681a6263b3862c63d53ab11alanv
155670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
155770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by line.
155870e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
155970e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_LINE = 0x00000004;
156070e96ebf69f91da84681a6263b3862c63d53ab11alanv
156170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
156270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by paragraph.
156370e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
156470e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 0x00000008;
156570e96ebf69f91da84681a6263b3862c63d53ab11alanv
156670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
156770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by page.
156870e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
156970e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_PAGE = 0x00000010;
157070e96ebf69f91da84681a6263b3862c63d53ab11alanv
157170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
1572c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * Creates a wrapper for info implementation.
1573c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     *
1574c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * @param object The info to wrap.
1575c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * @return A wrapper for if the object is not null, null otherwise.
1576c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     */
1577c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    static AccessibilityNodeInfoCompat wrapNonNullInstance(Object object) {
1578c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        if (object != null) {
1579c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov            return new AccessibilityNodeInfoCompat(object);
1580c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        }
1581c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        return null;
1582c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    }
1583c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov
1584956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    /**
1585956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * Creates a new instance wrapping an
1586956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * {@link android.view.accessibility.AccessibilityNodeInfo}.
1587956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     *
1588956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * @param info The info.
15899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat(Object info) {
15919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        mInfo = info;
15929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
1595956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * @return The wrapped {@link android.view.accessibility.AccessibilityNodeInfo}.
15969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
1597956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    public Object getInfo() {
15989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return mInfo;
15999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available otherwise a new one and
16039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * sets the source.
16049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
16069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see #setSource(View)
16079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain(View source) {
160970e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain(source));
161070e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
161170e96ebf69f91da84681a6263b3862c63d53ab11alanv
161270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
161370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Returns a cached instance if such is available otherwise a new one
161470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * and sets the source.
161570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
161670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param root The root of the virtual subtree.
161770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param virtualDescendantId The id of the virtual descendant.
161870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return An instance.
161970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
162070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setSource(View, int)
162170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
162270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static AccessibilityNodeInfoCompat obtain(View root, int virtualDescendantId) {
162370e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(
162470e96ebf69f91da84681a6263b3862c63d53ab11alanv                IMPL.obtain(root, virtualDescendantId));
16259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available otherwise a new one.
16299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
16319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain() {
163370e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain());
16349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available or a new one is create.
16389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * The returned instance is initialized from the given <code>info</code>.
16399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param info The other info.
16419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
16429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain(AccessibilityNodeInfoCompat info) {
164470e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain(info.mInfo));
16459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the source.
16499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param source The info source.
16519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setSource(View source) {
16539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setSource(mInfo, source);
16549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16573a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * Sets the source to be a virtual descendant of the given <code>root</code>.
16583a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * If <code>virtualDescendantId</code> is {@link View#NO_ID} the root
16593a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * is set as the source.
16603a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
16613a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * A virtual descendant is an imaginary View that is reported as a part of the view
16623a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * hierarchy for accessibility purposes. This enables custom views that draw complex
16633a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * content to report themselves as a tree of virtual views, thus conveying their
16643a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * logical structure.
16653a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
16663a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
16673a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   <strong>Note:</strong> Cannot be called from an
16683a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   {@link android.accessibilityservice.AccessibilityService}.
16693a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   This class is made immutable before being delivered to an AccessibilityService.
16703a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
16713a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *
16723a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param root The root of the virtual subtree.
16733a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param virtualDescendantId The id of the virtual descendant.
16743a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     */
16753a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    public void setSource(View root, int virtualDescendantId) {
16763a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.setSource(mInfo, root, virtualDescendantId);
16773a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
16783a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
16793a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    /**
168070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Find the view that has the specified focus type. The search starts from
168170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * the view represented by this node info.
168270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
168370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param focus The focus to find. One of {@link #FOCUS_INPUT} or
168470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *         {@link #FOCUS_ACCESSIBILITY}.
168570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The node info of the focused view or null.
168670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
168770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #FOCUS_INPUT
168870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #FOCUS_ACCESSIBILITY
168970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
169070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public AccessibilityNodeInfoCompat findFocus(int focus) {
169170e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.findFocus(mInfo, focus));
169270e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
169370e96ebf69f91da84681a6263b3862c63d53ab11alanv
169470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
169570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Searches for the nearest view in the specified direction that can take
169676ca3a4abf437c04003bacff72491409f8898a18Svetoslav Ganov     * input focus.
169770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
169870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param direction The direction. Can be one of:
169970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_DOWN},
170070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_UP},
170170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_LEFT},
170270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_RIGHT},
170370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_FORWARD},
170476ca3a4abf437c04003bacff72491409f8898a18Svetoslav Ganov     *     {@link View#FOCUS_BACKWARD}.
170570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
170670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The node info for the view that can take accessibility focus.
170770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
170870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public AccessibilityNodeInfoCompat focusSearch(int direction) {
170970e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.focusSearch(mInfo, direction));
171070e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
171170e96ebf69f91da84681a6263b3862c63d53ab11alanv
171270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
17139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the id of the window from which the info comes from.
17149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The window id.
17169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getWindowId() {
17189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getWindowId(mInfo);
17199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the number of children.
17239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The child count.
17259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getChildCount() {
17279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getChildCount(mInfo);
17289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Get the child at given index.
17329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
17349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link AccessibilityNodeInfoCompat#recycle()} to
17359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * avoid creating of multiple instances.
17369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param index The child index.
17399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The child node.
17409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called outside of an
17419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *             AccessibilityService.
17429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat getChild(int index) {
174470e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.getChild(mInfo, index));
17459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Adds a child.
17499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param child The child.
17569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void addChild(View child) {
17599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.addChild(mInfo, child);
17609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17633a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * Adds a virtual child which is a descendant of the given <code>root</code>.
17643a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * If <code>virtualDescendantId</code> is {@link View#NO_ID} the root
17653a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * is added as a child.
17663a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
17673a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * A virtual descendant is an imaginary View that is reported as a part of the view
17683a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * hierarchy for accessibility purposes. This enables custom views that draw complex
17693a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * content to report them selves as a tree of virtual views, thus conveying their
17703a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * logical structure.
17713a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
17723a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *
17733a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param root The root of the virtual subtree.
17743a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param virtualDescendantId The id of the virtual child.
17753a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     */
17763a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    public void addChild(View root, int virtualDescendantId) {
17773a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.addChild(mInfo, root, virtualDescendantId);
17783a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
17793a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
17803a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    /**
17819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the actions that can be performed on the node.
17829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The bit mask of with actions.
17849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_FOCUS
17859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_CLEAR_FOCUS
17869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_SELECT
17879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_CLEAR_SELECTION
17889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getActions() {
17909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getActions(mInfo);
17919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Adds an action that can be performed on the node.
17959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param action The action.
18029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
18039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void addAction(int action) {
18059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.addAction(mInfo, action);
18069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
180984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav     * Adds an action that can be performed on the node.
181084ef4490e42b960ea375630f9cc37246af9c571bSvetoslav     * <p>
181184ef4490e42b960ea375630f9cc37246af9c571bSvetoslav     * <strong>Note:</strong> Cannot be called from an
181284ef4490e42b960ea375630f9cc37246af9c571bSvetoslav     * {@link android.accessibilityservice.AccessibilityService}. This class is
181384ef4490e42b960ea375630f9cc37246af9c571bSvetoslav     * made immutable before being delivered to an AccessibilityService.
181484ef4490e42b960ea375630f9cc37246af9c571bSvetoslav     * </p>
181584ef4490e42b960ea375630f9cc37246af9c571bSvetoslav     *
181684ef4490e42b960ea375630f9cc37246af9c571bSvetoslav     * @param action The action.
181784ef4490e42b960ea375630f9cc37246af9c571bSvetoslav     * @throws IllegalStateException If called from an AccessibilityService.
181884ef4490e42b960ea375630f9cc37246af9c571bSvetoslav     */
181984ef4490e42b960ea375630f9cc37246af9c571bSvetoslav    public void addAction(AccessibilityActionCompat action) {
182084ef4490e42b960ea375630f9cc37246af9c571bSvetoslav        IMPL.addAction(mInfo, action.mAction);
182184ef4490e42b960ea375630f9cc37246af9c571bSvetoslav    }
182284ef4490e42b960ea375630f9cc37246af9c571bSvetoslav
182384ef4490e42b960ea375630f9cc37246af9c571bSvetoslav    /**
18249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Performs an action on the node.
18259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> An action can be performed only if the request is
18279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made from an {@link android.accessibilityservice.AccessibilityService}.
18289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param action The action to perform.
18319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the action was performed.
18329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called outside of an
18339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *             AccessibilityService.
18349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean performAction(int action) {
18369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.performAction(mInfo, action);
18379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
184070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Performs an action on the node.
184170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
184270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> An action can be performed only if the request is made
184370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   from an {@link android.accessibilityservice.AccessibilityService}.
184470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
184570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
184670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param action The action to perform.
184770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param arguments A bundle with additional arguments.
184870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return True if the action was performed.
184970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
185070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called outside of an AccessibilityService.
185170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
185270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean performAction(int action, Bundle arguments) {
185370e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.performAction(mInfo, action, arguments);
185470e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
185570e96ebf69f91da84681a6263b3862c63d53ab11alanv
185670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
185770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets the movement granularities for traversing the text of this node.
185870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
185970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
186070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
186170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
186270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
186370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
186470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param granularities The bit mask with granularities.
186570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
186670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
186770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
186870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setMovementGranularities(int granularities) {
186970e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setMovementGranularities(mInfo, granularities);
187070e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
187170e96ebf69f91da84681a6263b3862c63d53ab11alanv
187270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
187370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Gets the movement granularities for traversing the text of this node.
187470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
187570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The bit mask with granularities.
187670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
187770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public int getMovementGranularities() {
187870e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.getMovementGranularities(mInfo);
187970e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
188070e96ebf69f91da84681a6263b3862c63d53ab11alanv
188170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
18829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Finds {@link android.view.accessibility.AccessibilityNodeInfo}s by text. The match
18839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * is case insensitive containment. The search is relative to this info i.e. this
18849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * info is the root of the traversed tree.
18859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
18879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link android.view.accessibility.AccessibilityNodeInfo#recycle()}
18889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * to avoid creating of multiple instances.
18899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param text The searched text.
18929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return A list of node info.
18939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public List<AccessibilityNodeInfoCompat> findAccessibilityNodeInfosByText(String text) {
18959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        List<AccessibilityNodeInfoCompat> result = new ArrayList<AccessibilityNodeInfoCompat>();
18969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        List<Object> infos = IMPL.findAccessibilityNodeInfosByText(mInfo, text);
18979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        final int infoCount = infos.size();
18989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        for (int i = 0; i < infoCount; i++) {
18999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            Object info = infos.get(i);
19009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            result.add(new AccessibilityNodeInfoCompat(info));
19019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
19029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return result;
19039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the parent.
19079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
19089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
19099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link android.view.accessibility.AccessibilityNodeInfo#recycle()}
19109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * to avoid creating of multiple instances.
19119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
19129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The parent.
19149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat getParent() {
191670e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.getParent(mInfo));
19179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the parent.
19219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
19229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
19239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
19249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
19259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
19269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param parent The parent.
19289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
19299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setParent(View parent) {
19319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setParent(mInfo, parent);
19329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
193570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets the parent to be a virtual descendant of the given <code>root</code>.
193670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * If <code>virtualDescendantId</code> equals to {@link View#NO_ID} the root
193770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * is set as the parent.
193870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
193970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * A virtual descendant is an imaginary View that is reported as a part of the view
194070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * hierarchy for accessibility purposes. This enables custom views that draw complex
194170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * content to report them selves as a tree of virtual views, thus conveying their
194270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * logical structure.
194370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
194470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
194570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
194670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
194770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
194870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
194970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
195070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param root The root of the virtual subtree.
195170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param virtualDescendantId The id of the virtual descendant.
195270e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
195370e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setParent(View root, int virtualDescendantId) {
195470e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setParent(mInfo, root, virtualDescendantId);
195570e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
195670e96ebf69f91da84681a6263b3862c63d53ab11alanv
195770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
19589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the node bounds in parent coordinates.
19599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param outBounds The output node bounds.
19619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void getBoundsInParent(Rect outBounds) {
19639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.getBoundsInParent(mInfo, outBounds);
19649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the node bounds in parent coordinates.
19689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
19699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
19709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
19719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
19729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
19739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param bounds The node bounds.
19759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *@throws IllegalStateException If called from an AccessibilityService.
19769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setBoundsInParent(Rect bounds) {
19789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setBoundsInParent(mInfo, bounds);
19799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the node bounds in screen coordinates.
19839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param outBounds The output node bounds.
19859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void getBoundsInScreen(Rect outBounds) {
19879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.getBoundsInScreen(mInfo, outBounds);
19889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the node bounds in screen coordinates.
19929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
19939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
19949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
19959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
19969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
19979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param bounds The node bounds.
19999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
20009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setBoundsInScreen(Rect bounds) {
20023a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.setBoundsInScreen(mInfo, bounds);
20039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is checkable.
20079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is checkable.
20099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isCheckable() {
20119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isCheckable(mInfo);
20129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is checkable.
20169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
20179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
20189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
20199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
20209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
20219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param checkable True if the node is checkable.
20239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
20249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setCheckable(boolean checkable) {
20269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setCheckable(mInfo, checkable);
20279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is checked.
20319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is checked.
20339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isChecked() {
20359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isChecked(mInfo);
20369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is checked.
20409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
20419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
20429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
20439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
20449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
20459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param checked True if the node is checked.
20479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
20489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setChecked(boolean checked) {
20509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setChecked(mInfo, checked);
20519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is focusable.
20559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is focusable.
20579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isFocusable() {
20599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isFocusable(mInfo);
20609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is focusable.
20649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
20659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
20669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
20679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
20689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
20699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param focusable True if the node is focusable.
20719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
20729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setFocusable(boolean focusable) {
20749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setFocusable(mInfo, focusable);
20759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is focused.
20799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is focused.
20819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isFocused() {
20839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isFocused(mInfo);
20849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is focused.
20889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
20899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
20909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
20919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
20929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
20939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param focused True if the node is focused.
20959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
20969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setFocused(boolean focused) {
20989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setFocused(mInfo, focused);
20999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
21009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
21019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
210270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is visible to the user.
210370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
210470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return Whether the node is visible to the user.
210570e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
210670e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean isVisibleToUser() {
210770e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.isVisibleToUser(mInfo);
210870e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
210970e96ebf69f91da84681a6263b3862c63d53ab11alanv
211070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
211170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is visible to the user.
211270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
211370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
211470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
211570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
211670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
211770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
211870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param visibleToUser Whether the node is visible to the user.
211970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
212070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
212170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
212270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setVisibleToUser(boolean visibleToUser) {
212370e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setVisibleToUser(mInfo, visibleToUser);
212470e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
212570e96ebf69f91da84681a6263b3862c63d53ab11alanv
212670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
212770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Gets whether this node is accessibility focused.
212870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
212970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return True if the node is accessibility focused.
213070e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
213170e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean isAccessibilityFocused() {
213270e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.isAccessibilityFocused(mInfo);
213370e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
213470e96ebf69f91da84681a6263b3862c63d53ab11alanv
213570e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
213670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is accessibility focused.
213770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
213870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
213970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
214070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
214170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
214270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
214370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param focused True if the node is accessibility focused.
214470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
214570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
214670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
214770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setAccessibilityFocused(boolean focused) {
214870e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setAccessibilityFocused(mInfo, focused);
214970e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
215070e96ebf69f91da84681a6263b3862c63d53ab11alanv
215170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
21529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is selected.
21539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
21549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is selected.
21559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
21569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isSelected() {
21579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isSelected(mInfo);
21589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
21599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
21609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
21619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is selected.
21629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
21639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
21649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
21659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
21669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
21679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
21689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param selected True if the node is selected.
21699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
21709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
21719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setSelected(boolean selected) {
21729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setSelected(mInfo, selected);
21739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
21749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
21759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
21769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is clickable.
21779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
21789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is clickable.
21799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
21809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isClickable() {
21819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isClickable(mInfo);
21829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
21839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
21849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
21859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is clickable.
21869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
21879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
21889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
21899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
21909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
21919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
21929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param clickable True if the node is clickable.
21939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
21949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
21959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setClickable(boolean clickable) {
21969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setClickable(mInfo, clickable);
21979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
21989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
21999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
22009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is long clickable.
22019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
22029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is long clickable.
22039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
22049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isLongClickable() {
22059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isLongClickable(mInfo);
22069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
22079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
22099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is long clickable.
22109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
22119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
22129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
22139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
22149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
22159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
22169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param longClickable True if the node is long clickable.
22179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
22189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
22199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setLongClickable(boolean longClickable) {
22209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setLongClickable(mInfo, longClickable);
22219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
22229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
22249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is enabled.
22259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
22269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is enabled.
22279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
22289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isEnabled() {
22299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isEnabled(mInfo);
22309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
22319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
22339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is enabled.
22349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
22359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
22369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
22379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
22389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
22399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
22409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param enabled True if the node is enabled.
22419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
22429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
22439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setEnabled(boolean enabled) {
22449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setEnabled(mInfo, enabled);
22459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
22469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
22489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is a password.
22499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
22509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is a password.
22519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
22529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isPassword() {
22539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isPassword(mInfo);
22549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
22559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
22579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is a password.
22589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
22599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
22609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
22619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
22629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
22639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
22649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param password True if the node is a password.
22659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
22669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
22679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setPassword(boolean password) {
22689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setPassword(mInfo, password);
22699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
22709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
22729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets if the node is scrollable.
22739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
22749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is scrollable, false otherwise.
22759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
22769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isScrollable() {
22779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isScrollable(mInfo);
22789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
22799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
22819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets if the node is scrollable.
22829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
22839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
22849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
22859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
22869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
22879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
22889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param scrollable True if the node is scrollable, false otherwise.
22899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
22909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
22919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setScrollable(boolean scrollable) {
22929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setScrollable(mInfo, scrollable);
22939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
22949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
22969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the package this node comes from.
22979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
22989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The package name.
22999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
23009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getPackageName() {
23019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getPackageName(mInfo);
23029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
23039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
23059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the package this node comes from.
23069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
23079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
23089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
23099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
23109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
23119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
23129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param packageName The package name.
23139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
23149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
23159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setPackageName(CharSequence packageName) {
23169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setPackageName(mInfo, packageName);
23179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
23189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
23209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the class this node comes from.
23219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
23229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The class name.
23239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
23249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getClassName() {
23259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getClassName(mInfo);
23269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
23279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
23299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the class this node comes from.
23309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
23319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
23329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
23339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
23349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
23359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
23369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param className The class name.
23379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
23389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
23399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setClassName(CharSequence className) {
23409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setClassName(mInfo, className);
23419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
23429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
23449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the text of this node.
23459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
23469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The text.
23479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
23489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getText() {
23499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getText(mInfo);
23509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
23519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
23539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the text of this node.
23549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
23559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
23569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
23579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
23589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
23599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
23609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param text The text.
23619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
23629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
23639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setText(CharSequence text) {
23649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setText(mInfo, text);
23659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
23669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
23689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the content description of this node.
23699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
23709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The content description.
23719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
23729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getContentDescription() {
23739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getContentDescription(mInfo);
23749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
23759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
23779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the content description of this node.
23789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
23799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
23809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
23819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
23829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
23839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
23849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param contentDescription The content description.
23859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
23869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
23879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setContentDescription(CharSequence contentDescription) {
23889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setContentDescription(mInfo, contentDescription);
23899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
23909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
23929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Return an instance back to be reused.
23939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
23949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> You must not touch the object after calling this function.
23959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
23969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If the info is already recycled.
23979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
23989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void recycle() {
23999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.recycle(mInfo);
24009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
24019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
24020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
24030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Sets the fully qualified resource name of the source view's id.
24040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
24050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
24060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   <strong>Note:</strong> Cannot be called from an
24070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   {@link android.accessibilityservice.AccessibilityService}.
24080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   This class is made immutable before being delivered to an AccessibilityService.
24090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
24100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
24110fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @param viewId The id resource name.
24120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
2413071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav    public void setViewIdResourceName(String viewId) {
24140fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        IMPL.setViewIdResourceName(mInfo, viewId);
24150fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
24160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
24170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
24180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Gets the fully qualified resource name of the source view's id.
24190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
24200fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
24210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   <strong>Note:</strong> The primary usage of this API is for UI test automation
24220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   and in order to report the source view id of an {@link AccessibilityNodeInfoCompat}
24230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   the client has to set the {@link AccessibilityServiceInfoCompat#FLAG_REPORT_VIEW_IDS}
24240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   flag when configuring his {@link android.accessibilityservice.AccessibilityService}.
24250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
24260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
24270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @return The id resource name.
24280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
2429071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav    public String getViewIdResourceName() {
24300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        return IMPL.getViewIdResourceName(mInfo);
24310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
24320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
2433086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    /**
2434086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * Gets the node's live region mode.
2435086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <p>
2436086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * A live region is a node that contains information that is important for
2437086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * the user and when it changes the user should be notified. For example,
2438086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * in a login screen with a TextView that displays an "incorrect password"
2439086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * notification, that view should be marked as a live region with mode
2440086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * {@link ViewCompat#ACCESSIBILITY_LIVE_REGION_POLITE}.
2441086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <p>
2442086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * It is the responsibility of the accessibility service to monitor
2443086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * {@link AccessibilityEventCompat#TYPE_WINDOW_CONTENT_CHANGED} events
2444086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * indicating changes to live region nodes and their children.
2445086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *
2446086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @return The live region mode, or
2447086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *         {@link ViewCompat#ACCESSIBILITY_LIVE_REGION_NONE} if the view is
2448086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *         not a live region.
2449086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @see ViewCompat#getAccessibilityLiveRegion(View)
2450086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     */
2451086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    public int getLiveRegion() {
2452086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        return IMPL.getLiveRegion(mInfo);
2453086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
2454086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
2455086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    /**
2456086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * Sets the node's live region mode.
2457086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <p>
2458086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <strong>Note:</strong> Cannot be called from an
2459086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * {@link android.accessibilityservice.AccessibilityService}. This class is
2460086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * made immutable before being delivered to an AccessibilityService.
2461086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *
2462086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @param mode The live region mode, or
2463086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *        {@link ViewCompat#ACCESSIBILITY_LIVE_REGION_NONE} if the view is
2464086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *        not a live region.
2465086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @see ViewCompat#setAccessibilityLiveRegion(View, int)
2466086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     */
2467086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    public void setLiveRegion(int mode) {
2468086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        IMPL.setLiveRegion(mInfo, mode);
2469086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
2470086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
2471fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    /**
2472fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * Gets the collection info if the node is a collection. A collection
2473fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * child is always a collection item.
2474fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     *
2475fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * @return The collection info.
2476fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     */
2477fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public CollectionInfoCompat getCollectionInfo() {
2478fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        Object info = IMPL.getCollectionInfo(mInfo);
2479fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        if (info == null) return null;
2480fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        return new CollectionInfoCompat(info);
2481fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
2482fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
2483a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    public void setCollectionInfo(Object collectionInfo) {
2484a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        IMPL.setCollectionInfo(mInfo, ((CollectionInfoCompat) collectionInfo).mInfo);
2485a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    }
2486a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
2487a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    public void setCollectionItemInfo(Object collectionItemInfo) {
2488a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        IMPL.setCollectionItemInfo(mInfo, ((CollectionItemInfoCompat) collectionItemInfo).mInfo);
2489a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    }
2490a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
2491fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    /**
2492fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * Gets the collection item info if the node is a collection item. A collection
2493fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * item is always a child of a collection.
2494fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     *
2495fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * @return The collection item info.
2496fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     */
2497fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public CollectionItemInfoCompat getCollectionItemInfo() {
2498fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        Object info = IMPL.getCollectionItemInfo(mInfo);
2499fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        if (info == null) return null;
2500fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        return new CollectionItemInfoCompat(info);
2501fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
2502fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
2503fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    /**
2504fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * Gets the range info if this node is a range.
2505fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     *
2506fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * @return The range.
2507fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     */
2508fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public RangeInfoCompat getRangeInfo() {
2509fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        Object info = IMPL.getRangeInfo(mInfo);
2510fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        if (info == null) return null;
2511fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        return new RangeInfoCompat(info);
2512fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
2513fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
2514389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    /**
2515389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen     * Gets the actions that can be performed on the node.
2516389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen     *
2517389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen     * @return A list of AccessibilityActions.
2518389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen     */
2519389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    public List<AccessibilityActionCompat> getActionList() {
2520389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        List<Object> actions = IMPL.getActionList(mInfo);
2521cd85b06ae9fe64f4fc360b97a9af8896c193c403Kristian Monsen        if (actions != null) {
2522cd85b06ae9fe64f4fc360b97a9af8896c193c403Kristian Monsen            List<AccessibilityActionCompat> result = new ArrayList<AccessibilityActionCompat>();
2523cd85b06ae9fe64f4fc360b97a9af8896c193c403Kristian Monsen            final int actionCount = actions.size();
2524cd85b06ae9fe64f4fc360b97a9af8896c193c403Kristian Monsen            for (int i = 0; i < actionCount; i++) {
2525cd85b06ae9fe64f4fc360b97a9af8896c193c403Kristian Monsen                Object action = actions.get(i);
2526cd85b06ae9fe64f4fc360b97a9af8896c193c403Kristian Monsen                result.add(new AccessibilityActionCompat(action));
2527cd85b06ae9fe64f4fc360b97a9af8896c193c403Kristian Monsen            }
2528cd85b06ae9fe64f4fc360b97a9af8896c193c403Kristian Monsen            return result;
2529cd85b06ae9fe64f4fc360b97a9af8896c193c403Kristian Monsen        } else {
2530cd85b06ae9fe64f4fc360b97a9af8896c193c403Kristian Monsen            return Collections.<AccessibilityActionCompat>emptyList();
2531389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
2532389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    }
2533389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
2534389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
25359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    @Override
25369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int hashCode() {
25379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return (mInfo == null) ? 0 : mInfo.hashCode();
25389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
25399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
25409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    @Override
25419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean equals(Object obj) {
25429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (this == obj) {
25439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return true;
25449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
25459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (obj == null) {
25469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
25479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
25489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (getClass() != obj.getClass()) {
25499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
25509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
25519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        AccessibilityNodeInfoCompat other = (AccessibilityNodeInfoCompat) obj;
25529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (mInfo == null) {
25539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            if (other.mInfo != null) {
25549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov                return false;
25559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            }
25569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        } else if (!mInfo.equals(other.mInfo)) {
25579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
25589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
25599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return true;
25609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
25610fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
25620fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    @Override
25630fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public String toString() {
25640fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        StringBuilder builder = new StringBuilder();
25650fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append(super.toString());
25660fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
25670fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        Rect bounds = new Rect();
25680fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
25690fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        getBoundsInParent(bounds);
25700fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; boundsInParent: " + bounds);
25710fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
25720fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        getBoundsInScreen(bounds);
25730fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; boundsInScreen: " + bounds);
25740fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
25750fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; packageName: ").append(getPackageName());
25760fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; className: ").append(getClassName());
25770fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; text: ").append(getText());
25780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; contentDescription: ").append(getContentDescription());
25790fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; viewId: ").append(getViewIdResourceName());
25800fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
25810fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; checkable: ").append(isCheckable());
25820fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; checked: ").append(isChecked());
25830fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; focusable: ").append(isFocusable());
25840fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; focused: ").append(isFocused());
25850fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; selected: ").append(isSelected());
25860fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; clickable: ").append(isClickable());
25870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; longClickable: ").append(isLongClickable());
25880fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; enabled: ").append(isEnabled());
25890fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; password: ").append(isPassword());
25900fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; scrollable: " + isScrollable());
25910fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
25920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; [");
25930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        for (int actionBits = getActions(); actionBits != 0;) {
25940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            final int action = 1 << Integer.numberOfTrailingZeros(actionBits);
25950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            actionBits &= ~action;
25960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            builder.append(getActionSymbolicName(action));
25970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            if (actionBits != 0) {
25980fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                builder.append(", ");
25990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            }
26000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
26010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("]");
26020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
26030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        return builder.toString();
26040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
26050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
26060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    private static String getActionSymbolicName(int action) {
26070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        switch (action) {
26080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_FOCUS:
26090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_FOCUS";
26100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_FOCUS:
26110fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_FOCUS";
26120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SELECT:
26130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SELECT";
26140fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_SELECTION:
26150fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_SELECTION";
26160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLICK:
26170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLICK";
26180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_LONG_CLICK:
26190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_LONG_CLICK";
26200fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_ACCESSIBILITY_FOCUS:
26210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_ACCESSIBILITY_FOCUS";
26220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_ACCESSIBILITY_FOCUS:
26230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_ACCESSIBILITY_FOCUS";
26240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
26250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_NEXT_AT_MOVEMENT_GRANULARITY";
26260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY:
26270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY";
26280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_NEXT_HTML_ELEMENT:
26290fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_NEXT_HTML_ELEMENT";
26300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PREVIOUS_HTML_ELEMENT:
26310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PREVIOUS_HTML_ELEMENT";
26320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SCROLL_FORWARD:
26330fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SCROLL_FORWARD";
26340fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SCROLL_BACKWARD:
26350fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SCROLL_BACKWARD";
26360fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CUT:
26370fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CUT";
26380fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_COPY:
26390fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_COPY";
26400fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PASTE:
26410fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PASTE";
26420fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SET_SELECTION:
26430fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SET_SELECTION";
26440fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            default:
26450fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return"ACTION_UNKNOWN";
26460fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
26470fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
26489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov}
2649