AccessibilityNodeInfoCompat.java revision 389a2e54dda92632fc0004c17323ae4e5a249277
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;
259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport java.util.ArrayList;
26f9c2277244722eca88c784b9cfdcc78df7f94781Svetoslav Ganovimport java.util.Collections;
279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport java.util.List;
289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/**
300574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing {@link android.view.accessibility.AccessibilityNodeInfo}
310574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion.
329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */
339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpublic class AccessibilityNodeInfoCompat {
349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
35389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    public static class AccessibilityActionCompat {
36389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        private final Object mAction;
37389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
38389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        private AccessibilityActionCompat(Object action) {
39389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            mAction = action;
40389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
41389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
42389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        /**
43389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         * Gets the id for this action.
44389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         *
45389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         * @return The action id.
46389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         */
47389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public int getId() {
48389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            return AccessibilityNodeInfoCompatApi21.AccessibilityAction.getId(mAction);
49389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
50389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
51389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        /**
52389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         * Gets the label for this action. Its purpose is to describe the
53389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         * action to user.
54389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         *
55389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         * @return The label.
56389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen         */
57389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public CharSequence getLabel() {
58389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            return AccessibilityNodeInfoCompatApi21.AccessibilityAction.getLabel(mAction);
59389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
60389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    }
61389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
62fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public static class CollectionInfoCompat {
63fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private final Object mInfo;
64fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
65fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private CollectionInfoCompat(Object info) {
66fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            mInfo = info;
67fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
68fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
69fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getColumnCount() {
70fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.CollectionInfo.getColumnCount(mInfo);
71fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
72fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
73fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getRowCount() {
74fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.CollectionInfo.getRowCount(mInfo);
75fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
76fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
77fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public boolean isHierarchical() {
78fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.CollectionInfo.isHierarchical(mInfo);
79fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
80fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
81fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
82fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public static class CollectionItemInfoCompat {
83fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private final Object mInfo;
84fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
85fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private CollectionItemInfoCompat(Object info) {
86fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            mInfo = info;
87fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
88fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
89fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getColumnIndex() {
90fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.CollectionItemInfo.getColumnIndex(mInfo);
91fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
92fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
93fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getColumnSpan() {
94fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.CollectionItemInfo.getColumnSpan(mInfo);
95fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
96fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
97fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getRowIndex() {
98fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.CollectionItemInfo.getRowIndex(mInfo);
99fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
100fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
101fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getRowSpan() {
102fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.CollectionItemInfo.getRowSpan(mInfo);
103fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
104fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
105fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public boolean isHeading() {
106fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.CollectionItemInfo.isHeading(mInfo);
107fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
108fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
109fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
110fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public static class RangeInfoCompat {
111fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        /** Range type: integer. */
112fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public static final int RANGE_TYPE_INT = 0;
113fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        /** Range type: float. */
114fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public static final int RANGE_TYPE_FLOAT = 1;
115fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        /** Range type: percent with values from zero to one.*/
116fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public static final int RANGE_TYPE_PERCENT = 2;
117fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
118fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private final Object mInfo;
119fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
120fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        private RangeInfoCompat(Object info) {
121fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            mInfo = info;
122fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
123fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
124fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public float getCurrent() {
125fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.RangeInfo.getCurrent(mInfo);
126fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
127fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
128fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public float getMax() {
129fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.RangeInfo.getMax(mInfo);
130fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
131fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
132fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public float getMin() {
133fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.RangeInfo.getMin(mInfo);
134fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
135fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
136fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public int getType() {
137fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.RangeInfo.getType(mInfo);
138fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
139fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
140fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
1419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static interface AccessibilityNodeInfoImpl {
1429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain();
1439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source);
1449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info);
14570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId);
1469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source);
1473a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId);
14870e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus);
14970e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction);
1509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info);
1519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info);
15270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index);
1539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child);
1543a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId);
1559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info);
1569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action);
1579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action);
15870e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments);
15970e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities);
16070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info);
1619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text);
16270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info);
16370e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId);
1649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent);
1659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds);
1669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds);
1679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds);
1689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds);
1699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info);
1709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable);
1719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info);
1729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked);
1739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info);
1749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable);
1759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info);
1769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused);
17770e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info);
17870e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser);
17970e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info);
18070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused);
1819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info);
1829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected);
1839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info);
1849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable);
1859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info);
1869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable);
1879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info);
1889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled);
1899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info);
1909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password);
1919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info);
1929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable);
1939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info);
1949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName);
1959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info);
1969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className);
1979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info);
1989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text);
1999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info);
2009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription);
2019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info);
202071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public String getViewIdResourceName(Object info);
203071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public void setViewIdResourceName(Object info, String viewId);
204086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public int getLiveRegion(Object info);
205086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public void setLiveRegion(Object info, int mode);
206fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionInfo(Object info);
207fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionItemInfo(Object info);
208fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getRangeInfo(Object info);
209389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public List<Object> getActionList(Object info);
210389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public void addAction(Object info, int id, CharSequence label);
2119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
2129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static class AccessibilityNodeInfoStubImpl implements AccessibilityNodeInfoImpl {
21470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain() {
2169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
2179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
21970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source) {
2219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
2229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
22570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId) {
22670e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
22770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
22870e96ebf69f91da84681a6263b3862c63d53ab11alanv
22970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info) {
2319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
2329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action) {
2369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child) {
2419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
24470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2453a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId) {
2463a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
2473a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
2483a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
24970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text) {
251f9c2277244722eca88c784b9cfdcc78df7f94781Svetoslav Ganov            return Collections.emptyList();
2529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
25470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info) {
2569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
2579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
25970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds) {
2619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
26470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds) {
2669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
26970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
27070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index) {
2719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
2729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
27470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info) {
2769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
2779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
27970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info) {
2819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
2829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
28470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info) {
2869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
2879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
28970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info) {
2919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
2929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
29470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
29570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info) {
2969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
2979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
29970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info) {
3019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
3029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
30470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info) {
3069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
3079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
30970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info) {
3119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
31470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info) {
3169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
31970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info) {
3219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
32470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info) {
3269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
32970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info) {
3319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
33470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info) {
3369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
33970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
34070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info) {
34170e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
34270e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
34370e96ebf69f91da84681a6263b3862c63d53ab11alanv
34470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
34570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info) {
34670e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
34770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
34870e96ebf69f91da84681a6263b3862c63d53ab11alanv
34970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info) {
3519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
35470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info) {
3569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
35970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info) {
3619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
36470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info) {
3669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
36970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action) {
3719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
3729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
37470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
37570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments) {
37670e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
37770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
37870e96ebf69f91da84681a6263b3862c63d53ab11alanv
37970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
38070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities) {
38170e96ebf69f91da84681a6263b3862c63d53ab11alanv
38270e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
38370e96ebf69f91da84681a6263b3862c63d53ab11alanv
38470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
38570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info) {
38670e96ebf69f91da84681a6263b3862c63d53ab11alanv            return 0;
38770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
38870e96ebf69f91da84681a6263b3862c63d53ab11alanv
38970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds) {
3919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
39470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds) {
3969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
39970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable) {
4019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
40470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked) {
4069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
40970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className) {
4119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
41470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable) {
4169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
41970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription) {
4219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
42470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled) {
4269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
42970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable) {
4319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
43470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused) {
4369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
43970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
44070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser) {
44170e96ebf69f91da84681a6263b3862c63d53ab11alanv
44270e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
44370e96ebf69f91da84681a6263b3862c63d53ab11alanv
44470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
44570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused) {
44670e96ebf69f91da84681a6263b3862c63d53ab11alanv
44770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
44870e96ebf69f91da84681a6263b3862c63d53ab11alanv
44970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable) {
4519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
45470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName) {
4569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
45970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent) {
4619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
46470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password) {
4669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
46970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable) {
4719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
47470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected) {
4769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
47970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source) {
4819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
48470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
4853a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId) {
4863a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
4873a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
4883a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
48970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
49070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus) {
49170e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
49270e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
49370e96ebf69f91da84681a6263b3862c63d53ab11alanv
49470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
49570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction) {
49670e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
49770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
49870e96ebf69f91da84681a6263b3862c63d53ab11alanv
49970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text) {
5019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
50470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
5059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info) {
5069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
50870e96ebf69f91da84681a6263b3862c63d53ab11alanv
50970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
51070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId) {
51170e96ebf69f91da84681a6263b3862c63d53ab11alanv
51270e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
5130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
5140fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
515071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public String getViewIdResourceName(Object info) {
5160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            return null;
5170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
5180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
5190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
520071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public void setViewIdResourceName(Object info, String viewId) {
5210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
5220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
523086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
524086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
525086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public int getLiveRegion(Object info) {
526086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            return ViewCompat.ACCESSIBILITY_LIVE_REGION_NONE;
527086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
528086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
529086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
530086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public void setLiveRegion(Object info, int mode) {
531086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            // No-op
532086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
533fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
534fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
535fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionInfo(Object info) {
536fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return null;
537fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
538fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
539fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
540fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionItemInfo(Object info) {
541fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return null;
542fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
543fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
544fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
545fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getRangeInfo(Object info) {
546fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return null;
547fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
548389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
549389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        @Override
550389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public List<Object> getActionList(Object info) {
551389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            return null;
552389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
553389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
554389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        @Override
555389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public void addAction(Object info, int id, CharSequence label) {
556389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
557389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
5589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
5599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static class AccessibilityNodeInfoIcsImpl extends AccessibilityNodeInfoStubImpl {
5619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain() {
5639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain();
5649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source) {
5689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain(source);
5699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info) {
5739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain(info);
5749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action) {
5789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.addAction(info, action);
5799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child) {
5839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.addChild(info, child);
5849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text) {
5889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.findAccessibilityNodeInfosByText(info, text);
5899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info) {
5939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getActions(info);
5949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds) {
5989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.getBoundsInParent(info, outBounds);
5999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds) {
6039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.getBoundsInScreen(info, outBounds);
6049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
60770e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index) {
60870e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatIcs.getChild(info, index);
6099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info) {
6139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getChildCount(info);
6149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info) {
6189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getClassName(info);
6199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info) {
6239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getContentDescription(info);
6249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info) {
6289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getPackageName(info);
6299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
63270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info) {
63370e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatIcs.getParent(info);
6349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info) {
6389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getText(info);
6399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info) {
6439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getWindowId(info);
6449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info) {
6489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isCheckable(info);
6499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info) {
6539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isChecked(info);
6549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info) {
6589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isClickable(info);
6599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info) {
6639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isEnabled(info);
6649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info) {
6689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isFocusable(info);
6699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info) {
6739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isFocused(info);
6749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info) {
6789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isLongClickable(info);
6799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info) {
6839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isPassword(info);
6849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info) {
6889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isScrollable(info);
6899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info) {
6939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isSelected(info);
6949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action) {
6989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.performAction(info, action);
6999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds) {
7039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setBoundsInParent(info, bounds);
7049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds) {
7089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setBoundsInScreen(info, bounds);
7099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable) {
7139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setCheckable(info, checkable);
7149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked) {
7189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setChecked(info, checked);
7199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className) {
7239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setClassName(info, className);
7249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable) {
7289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setClickable(info, clickable);
7299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription) {
7339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setContentDescription(info, contentDescription);
7349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled) {
7389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setEnabled(info, enabled);
7399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable) {
7439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setFocusable(info, focusable);
7449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused) {
7489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setFocused(info, focused);
7499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable) {
7539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setLongClickable(info, longClickable);
7549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName) {
7589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setPackageName(info, packageName);
7599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent) {
7639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setParent(info, parent);
7649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password) {
7689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setPassword(info, password);
7699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable) {
7739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setScrollable(info, scrollable);
7749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected) {
7789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setSelected(info, selected);
7799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source) {
7839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setSource(info, source);
7849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text) {
7889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setText(info, text);
7899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
7929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info) {
7939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.recycle(info);
7949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
795389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
796389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        @Override
797389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public void addAction(Object info, int id, CharSequence label) {
798389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            if (Integer.bitCount(id) == 1) {
799389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen                addAction(info, id);
800389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            }
801389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
8029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
8039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
8043a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    static class AccessibilityNodeInfoJellybeanImpl extends AccessibilityNodeInfoIcsImpl {
8053a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        @Override
80670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId) {
80770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.obtain(root, virtualDescendantId);
80870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
80970e96ebf69f91da84681a6263b3862c63d53ab11alanv
81070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
81170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus) {
81270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.findFocus(info, focus);
81370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
81470e96ebf69f91da84681a6263b3862c63d53ab11alanv
81570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
81670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction) {
81770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.focusSearch(info, direction);
81870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
81970e96ebf69f91da84681a6263b3862c63d53ab11alanv
82070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
8213a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId) {
8223a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            AccessibilityNodeInfoCompatJellyBean.addChild(info, child, virtualDescendantId);
8233a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
8243a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
8253a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        @Override
8263a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId) {
8273a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            AccessibilityNodeInfoCompatJellyBean.setSource(info, root, virtualDescendantId);
8283a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
82970e96ebf69f91da84681a6263b3862c63d53ab11alanv
83070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
83170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info) {
83270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.isVisibleToUser(info);
83370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
83470e96ebf69f91da84681a6263b3862c63d53ab11alanv
83570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
83670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser) {
83770e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setVisibleToUser(info, visibleToUser);
83870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
83970e96ebf69f91da84681a6263b3862c63d53ab11alanv
84070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
84170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info) {
84270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.isAccessibilityFocused(info);
84370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
84470e96ebf69f91da84681a6263b3862c63d53ab11alanv
84570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
84670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused) {
84770e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setAccesibilityFocused(info, focused);
84870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
84970e96ebf69f91da84681a6263b3862c63d53ab11alanv
85070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
85170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments) {
85270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.performAction(info, action, arguments);
85370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
85470e96ebf69f91da84681a6263b3862c63d53ab11alanv
85570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
85670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities) {
85770e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setMovementGranularities(info, granularities);
85870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
85970e96ebf69f91da84681a6263b3862c63d53ab11alanv
86070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
86170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info) {
86270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.getMovementGranularities(info);
86370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
86470e96ebf69f91da84681a6263b3862c63d53ab11alanv
86570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
86670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId) {
86770e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setParent(info, root, virtualDescendantId);
86870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
8693a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
8703a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
8710fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    static class AccessibilityNodeInfoJellybeanMr2Impl extends AccessibilityNodeInfoJellybeanImpl {
8720fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
8730fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
874071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public String getViewIdResourceName(Object info) {
8750fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            return AccessibilityNodeInfoCompatJellybeanMr2.getViewIdResourceName(info);
8760fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
8770fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
8780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
879071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public void setViewIdResourceName(Object info, String viewId) {
8800fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            AccessibilityNodeInfoCompatJellybeanMr2.setViewIdResourceName(info, viewId);
8810fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
8820fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
8830fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
884086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    static class AccessibilityNodeInfoKitKatImpl extends AccessibilityNodeInfoJellybeanMr2Impl {
885086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
886086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public int getLiveRegion(Object info) {
887086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            return AccessibilityNodeInfoCompatKitKat.getLiveRegion(info);
888086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
889086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
890086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
891086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public void setLiveRegion(Object info, int mode) {
892086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            AccessibilityNodeInfoCompatKitKat.setLiveRegion(info, mode);
893086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
894fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
895fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
896fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionInfo(Object info) {
897fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.getCollectionInfo(info);
898fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
899fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
900fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
901fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getCollectionItemInfo(Object info) {
902fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.getCollectionItemInfo(info);
903fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
904fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
905fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        @Override
906fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        public Object getRangeInfo(Object info) {
907fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return AccessibilityNodeInfoCompatKitKat.getRangeInfo(info);
908fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
909086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
910086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
911389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    static class AccessibilityNodeInfoApi21Impl extends AccessibilityNodeInfoKitKatImpl {
912389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        @Override
913389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public List<Object> getActionList(Object info) {
914389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            return AccessibilityNodeInfoCompatApi21.getActionList(info);
915389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
916389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
917389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        @Override
918389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        public void addAction(Object info, int id, CharSequence label) {
919389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            AccessibilityNodeInfoCompatApi21.addAction(info, id, label);
920389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
921389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    }
922389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
9239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static {
924389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        if (Build.VERSION.CODENAME.equals("L")) { // b/15469684 filed to change to API 21
925389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            IMPL = new AccessibilityNodeInfoApi21Impl();
926389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        } else if (Build.VERSION.SDK_INT >= 19) { // KitKat
927086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            IMPL = new AccessibilityNodeInfoKitKatImpl();
928086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        } else if (Build.VERSION.SDK_INT >= 18) { // JellyBean MR2
9290fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            IMPL = new AccessibilityNodeInfoJellybeanMr2Impl();
9300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        } else if (Build.VERSION.SDK_INT >= 16) { // JellyBean
9313a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            IMPL = new AccessibilityNodeInfoJellybeanImpl();
9323a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        } else if (Build.VERSION.SDK_INT >= 14) { // ICS
9339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            IMPL = new AccessibilityNodeInfoIcsImpl();
9349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        } else {
9359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            IMPL = new AccessibilityNodeInfoStubImpl();
9369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
9379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
9389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    private static final AccessibilityNodeInfoImpl IMPL;
9409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    private final Object mInfo;
9429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9430fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in IceCreamSandwich
9449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
9469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that focuses the node.
9479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
9489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_FOCUS = 0x00000001;
9499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
9519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that unfocuses the node.
9529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
9539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_CLEAR_FOCUS = 0x00000002;
9549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
9569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that selects the node.
9579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
9589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_SELECT = 0x00000004;
9599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
9609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
9619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that unselects the node.
9629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
9639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_CLEAR_SELECTION = 0x00000008;
9649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
965c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    /**
96670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that clicks on the node info.
96770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
96870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_CLICK = 0x00000010;
96970e96ebf69f91da84681a6263b3862c63d53ab11alanv
97070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
97170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that long clicks on the node.
97270e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
97370e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_LONG_CLICK = 0x00000020;
97470e96ebf69f91da84681a6263b3862c63d53ab11alanv
9750fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in JellyBean
9760fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
97770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
97870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that gives accessibility focus to the node.
97970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
98070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_ACCESSIBILITY_FOCUS = 0x00000040;
98170e96ebf69f91da84681a6263b3862c63d53ab11alanv
98270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
98370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that clears accessibility focus of the node.
98470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
98570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 0x00000080;
98670e96ebf69f91da84681a6263b3862c63d53ab11alanv
98770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
98870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that requests to go to the next entity in this node's text
98970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * at a given movement granularity. For example, move to the next character,
99070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * word, etc.
99170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
9920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT}<,
9930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN}<br>
9940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong> Move to the previous character and do not extend selection.
99570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
99670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
99770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
99870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER);
9990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
10000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *           false);
100170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY, arguments);
100270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
100370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
100470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
10050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT
10060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN
10070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
100870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setMovementGranularities(int)
100970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #getMovementGranularities()
101070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
101170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_CHARACTER
101270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_WORD
101370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_LINE
101470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PARAGRAPH
101570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PAGE
101670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
101770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 0x00000100;
101870e96ebf69f91da84681a6263b3862c63d53ab11alanv
101970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
102070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that requests to go to the previous entity in this node's text
102170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * at a given movement granularity. For example, move to the next character,
102270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * word, etc.
102370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
10240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT}<,
10250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN}<br>
10260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong> Move to the next character and do not extend selection.
102770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
102870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
102970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
103070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER);
10310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
10320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *           false);
103370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
103470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           arguments);
103570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
103670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
103770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
10380fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT
10390fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN
10400fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
104170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setMovementGranularities(int)
104270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #getMovementGranularities()
104370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
104470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_CHARACTER
104570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_WORD
104670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_LINE
104770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PARAGRAPH
104870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PAGE
104970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
105070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 0x00000200;
105170e96ebf69f91da84681a6263b3862c63d53ab11alanv
105270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
105370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to move to the next HTML element of a given type. For example, move
105470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * to the BUTTON, INPUT, TABLE, etc.
105570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
105670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_HTML_ELEMENT_STRING}<br>
105770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Example:</strong>
105870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
105970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
106070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING, "BUTTON");
106170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT, arguments);
106270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
106370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
106470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
106570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_NEXT_HTML_ELEMENT = 0x00000400;
106670e96ebf69f91da84681a6263b3862c63d53ab11alanv
106770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
106870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to move to the previous HTML element of a given type. For example, move
106970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * to the BUTTON, INPUT, TABLE, etc.
107070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
107170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_HTML_ELEMENT_STRING}<br>
107270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Example:</strong>
107370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
107470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
107570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING, "BUTTON");
107670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT, arguments);
107770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
107870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
107970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
108070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_PREVIOUS_HTML_ELEMENT = 0x00000800;
108170e96ebf69f91da84681a6263b3862c63d53ab11alanv
108270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
108370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to scroll the node content forward.
108470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
108570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_SCROLL_FORWARD = 0x00001000;
108670e96ebf69f91da84681a6263b3862c63d53ab11alanv
108770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
108870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to scroll the node content backward.
108970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
109070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_SCROLL_BACKWARD = 0x00002000;
109170e96ebf69f91da84681a6263b3862c63d53ab11alanv
10920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in JellyBeanMr2
10930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
10940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
10950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to copy the current selection to the clipboard.
10960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
10970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_COPY = 0x00004000;
10980fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
10990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
11000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to paste the current clipboard content.
11010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
11020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_PASTE = 0x00008000;
11030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
11040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
11050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to cut the current selection and place it to the clipboard.
11060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
11070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_CUT = 0x00010000;
11080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
11090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
11100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to set the selection. Performing this action with no arguments
11110fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * clears the selection.
11120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
11130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_SELECTION_START_INT},
11140fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_SELECTION_END_INT}<br>
11150fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong>
11160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <code><pre><p>
11170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   Bundle arguments = new Bundle();
11180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 1);
11190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, 2);
11200fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   info.performAction(AccessibilityNodeInfo.ACTION_SET_SELECTION, arguments);
11210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </code></pre></p>
11220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
11230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
11240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_SELECTION_START_INT
11250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_SELECTION_END_INT
11260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
11270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_SET_SELECTION = 0x00020000;
11280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
11298d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu    /**
11308d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * Action that sets the text of the node. Performing the action without argument, using <code>
11318d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * null</code> or empty {@link CharSequence} will clear the text. This action will also put the
11328d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * cursor at the end of text.
11338d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <p>
11348d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE}<br>
11358d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <strong>Example:</strong>
11368d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <code><pre><p>
11378d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     *   Bundle arguments = new Bundle();
11388d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     *   arguments.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE,
11398d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     *       "android");
11408d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     *   info.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, arguments);
11418d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * </code></pre></p>
11428d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     */
11438d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu    public static final int ACTION_SET_TEXT = 0x00200000;
11448d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu
11450fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Action arguments
11460fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
114770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
114870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Argument for which movement granularity to be used when traversing the node text.
114970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
115070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Type:</strong> int<br>
115170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Actions:</strong> {@link #ACTION_NEXT_AT_MOVEMENT_GRANULARITY},
115270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * {@link #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY}
115370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
115470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
115570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT =
115670e96ebf69f91da84681a6263b3862c63d53ab11alanv        "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
115770e96ebf69f91da84681a6263b3862c63d53ab11alanv
115870e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
115970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Argument for which HTML element to get moving to the next/previous HTML element.
116070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
116170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Type:</strong> String<br>
116270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Actions:</strong> {@link #ACTION_NEXT_HTML_ELEMENT},
116370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *         {@link #ACTION_PREVIOUS_HTML_ELEMENT}
116470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
116570e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
116670e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING =
116770e96ebf69f91da84681a6263b3862c63d53ab11alanv        "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
116870e96ebf69f91da84681a6263b3862c63d53ab11alanv
116970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
11700fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for whether when moving at granularity to extend the selection
11710fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * or to move it otherwise.
11720fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
11730fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> boolean<br>
11740fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_NEXT_AT_MOVEMENT_GRANULARITY},
11750fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY}
11760fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
11770fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
11780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_NEXT_AT_MOVEMENT_GRANULARITY
11790fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY
11800fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
11810fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN =
11820fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
11830fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
11840fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
11850fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for specifying the selection start.
11860fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
11870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> int<br>
11880fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_SET_SELECTION}
11890fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
11900fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
11910fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_SET_SELECTION
11920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
11930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_SELECTION_START_INT =
11940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_SELECTION_START_INT";
11950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
11960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
11970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for specifying the selection end.
11980fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
11990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> int<br>
12000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_SET_SELECTION}
12010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
12020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
12030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_SET_SELECTION
12040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
12050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_SELECTION_END_INT =
12060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_SELECTION_END_INT";
12070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
12088d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu    /**
12098d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * Argument for specifying the text content to set
12108d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <p>
12118d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <strong>Type:</strong> CharSequence<br>
12128d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * <strong>Actions:</strong> {@link #ACTION_SET_TEXT}
12138d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * </p>
12148d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     *
12158d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     * @see #ACTION_SET_TEXT
12168d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu     */
12178d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu    public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE =
12188d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu            "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
12198d8799de4d4f9eb4877e5724673271662e97a3cbGuang Zhu
12200fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Focus types
12210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
12220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
122370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * The input focus.
122470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
122570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int FOCUS_INPUT = 1;
122670e96ebf69f91da84681a6263b3862c63d53ab11alanv
122770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
122870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * The accessibility focus.
122970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
123070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int FOCUS_ACCESSIBILITY = 2;
123170e96ebf69f91da84681a6263b3862c63d53ab11alanv
123270e96ebf69f91da84681a6263b3862c63d53ab11alanv    // Movement granularities
123370e96ebf69f91da84681a6263b3862c63d53ab11alanv
123470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
123570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by character.
123670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
123770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_CHARACTER = 0x00000001;
123870e96ebf69f91da84681a6263b3862c63d53ab11alanv
123970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
124070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by word.
124170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
124270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_WORD = 0x00000002;
124370e96ebf69f91da84681a6263b3862c63d53ab11alanv
124470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
124570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by line.
124670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
124770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_LINE = 0x00000004;
124870e96ebf69f91da84681a6263b3862c63d53ab11alanv
124970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
125070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by paragraph.
125170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
125270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 0x00000008;
125370e96ebf69f91da84681a6263b3862c63d53ab11alanv
125470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
125570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by page.
125670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
125770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_PAGE = 0x00000010;
125870e96ebf69f91da84681a6263b3862c63d53ab11alanv
125970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
1260c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * Creates a wrapper for info implementation.
1261c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     *
1262c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * @param object The info to wrap.
1263c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * @return A wrapper for if the object is not null, null otherwise.
1264c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     */
1265c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    static AccessibilityNodeInfoCompat wrapNonNullInstance(Object object) {
1266c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        if (object != null) {
1267c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov            return new AccessibilityNodeInfoCompat(object);
1268c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        }
1269c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        return null;
1270c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    }
1271c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov
1272956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    /**
1273956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * Creates a new instance wrapping an
1274956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * {@link android.view.accessibility.AccessibilityNodeInfo}.
1275956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     *
1276956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * @param info The info.
12779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat(Object info) {
12799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        mInfo = info;
12809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
1283956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * @return The wrapped {@link android.view.accessibility.AccessibilityNodeInfo}.
12849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
1285956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    public Object getInfo() {
12869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return mInfo;
12879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available otherwise a new one and
12919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * sets the source.
12929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
12949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see #setSource(View)
12959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain(View source) {
129770e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain(source));
129870e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
129970e96ebf69f91da84681a6263b3862c63d53ab11alanv
130070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
130170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Returns a cached instance if such is available otherwise a new one
130270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * and sets the source.
130370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
130470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param root The root of the virtual subtree.
130570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param virtualDescendantId The id of the virtual descendant.
130670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return An instance.
130770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
130870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setSource(View, int)
130970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
131070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static AccessibilityNodeInfoCompat obtain(View root, int virtualDescendantId) {
131170e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(
131270e96ebf69f91da84681a6263b3862c63d53ab11alanv                IMPL.obtain(root, virtualDescendantId));
13139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
13149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
13169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available otherwise a new one.
13179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
13189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
13199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
13209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain() {
132170e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain());
13229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
13239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
13259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available or a new one is create.
13269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * The returned instance is initialized from the given <code>info</code>.
13279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
13289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param info The other info.
13299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
13309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
13319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain(AccessibilityNodeInfoCompat info) {
133270e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain(info.mInfo));
13339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
13349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
13369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the source.
13379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
13389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param source The info source.
13399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
13409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setSource(View source) {
13419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setSource(mInfo, source);
13429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
13439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
13453a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * Sets the source to be a virtual descendant of the given <code>root</code>.
13463a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * If <code>virtualDescendantId</code> is {@link View#NO_ID} the root
13473a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * is set as the source.
13483a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
13493a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * A virtual descendant is an imaginary View that is reported as a part of the view
13503a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * hierarchy for accessibility purposes. This enables custom views that draw complex
13513a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * content to report themselves as a tree of virtual views, thus conveying their
13523a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * logical structure.
13533a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
13543a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
13553a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   <strong>Note:</strong> Cannot be called from an
13563a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   {@link android.accessibilityservice.AccessibilityService}.
13573a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   This class is made immutable before being delivered to an AccessibilityService.
13583a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
13593a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *
13603a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param root The root of the virtual subtree.
13613a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param virtualDescendantId The id of the virtual descendant.
13623a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     */
13633a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    public void setSource(View root, int virtualDescendantId) {
13643a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.setSource(mInfo, root, virtualDescendantId);
13653a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
13663a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
13673a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    /**
136870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Find the view that has the specified focus type. The search starts from
136970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * the view represented by this node info.
137070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
137170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param focus The focus to find. One of {@link #FOCUS_INPUT} or
137270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *         {@link #FOCUS_ACCESSIBILITY}.
137370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The node info of the focused view or null.
137470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
137570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #FOCUS_INPUT
137670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #FOCUS_ACCESSIBILITY
137770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
137870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public AccessibilityNodeInfoCompat findFocus(int focus) {
137970e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.findFocus(mInfo, focus));
138070e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
138170e96ebf69f91da84681a6263b3862c63d53ab11alanv
138270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
138370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Searches for the nearest view in the specified direction that can take
138476ca3a4abf437c04003bacff72491409f8898a18Svetoslav Ganov     * input focus.
138570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
138670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param direction The direction. Can be one of:
138770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_DOWN},
138870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_UP},
138970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_LEFT},
139070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_RIGHT},
139170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_FORWARD},
139276ca3a4abf437c04003bacff72491409f8898a18Svetoslav Ganov     *     {@link View#FOCUS_BACKWARD}.
139370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
139470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The node info for the view that can take accessibility focus.
139570e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
139670e96ebf69f91da84681a6263b3862c63d53ab11alanv    public AccessibilityNodeInfoCompat focusSearch(int direction) {
139770e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.focusSearch(mInfo, direction));
139870e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
139970e96ebf69f91da84681a6263b3862c63d53ab11alanv
140070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
14019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the id of the window from which the info comes from.
14029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The window id.
14049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getWindowId() {
14069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getWindowId(mInfo);
14079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the number of children.
14119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The child count.
14139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getChildCount() {
14159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getChildCount(mInfo);
14169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Get the child at given index.
14209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
14229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link AccessibilityNodeInfoCompat#recycle()} to
14239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * avoid creating of multiple instances.
14249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param index The child index.
14279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The child node.
14289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called outside of an
14299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *             AccessibilityService.
14309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat getChild(int index) {
143270e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.getChild(mInfo, index));
14339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Adds a child.
14379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
14399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
14409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
14419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param child The child.
14449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
14459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void addChild(View child) {
14479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.addChild(mInfo, child);
14489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14513a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * Adds a virtual child which is a descendant of the given <code>root</code>.
14523a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * If <code>virtualDescendantId</code> is {@link View#NO_ID} the root
14533a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * is added as a child.
14543a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
14553a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * A virtual descendant is an imaginary View that is reported as a part of the view
14563a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * hierarchy for accessibility purposes. This enables custom views that draw complex
14573a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * content to report them selves as a tree of virtual views, thus conveying their
14583a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * logical structure.
14593a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
14603a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *
14613a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param root The root of the virtual subtree.
14623a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param virtualDescendantId The id of the virtual child.
14633a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     */
14643a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    public void addChild(View root, int virtualDescendantId) {
14653a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.addChild(mInfo, root, virtualDescendantId);
14663a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
14673a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
14683a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    /**
14699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the actions that can be performed on the node.
14709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The bit mask of with actions.
14729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_FOCUS
14739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_CLEAR_FOCUS
14749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_SELECT
14759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_CLEAR_SELECTION
14769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getActions() {
14789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getActions(mInfo);
14799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Adds an action that can be performed on the node.
14839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
14859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
14869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
14879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param action The action.
14909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
14919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void addAction(int action) {
14939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.addAction(mInfo, action);
14949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Performs an action on the node.
14989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> An action can be performed only if the request is
15009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made from an {@link android.accessibilityservice.AccessibilityService}.
15019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
15029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param action The action to perform.
15049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the action was performed.
15059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called outside of an
15069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *             AccessibilityService.
15079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean performAction(int action) {
15099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.performAction(mInfo, action);
15109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
151370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Performs an action on the node.
151470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
151570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> An action can be performed only if the request is made
151670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   from an {@link android.accessibilityservice.AccessibilityService}.
151770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
151870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
151970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param action The action to perform.
152070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param arguments A bundle with additional arguments.
152170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return True if the action was performed.
152270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
152370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called outside of an AccessibilityService.
152470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
152570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean performAction(int action, Bundle arguments) {
152670e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.performAction(mInfo, action, arguments);
152770e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
152870e96ebf69f91da84681a6263b3862c63d53ab11alanv
152970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
153070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets the movement granularities for traversing the text of this node.
153170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
153270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
153370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
153470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
153570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
153670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
153770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param granularities The bit mask with granularities.
153870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
153970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
154070e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
154170e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setMovementGranularities(int granularities) {
154270e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setMovementGranularities(mInfo, granularities);
154370e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
154470e96ebf69f91da84681a6263b3862c63d53ab11alanv
154570e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
154670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Gets the movement granularities for traversing the text of this node.
154770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
154870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The bit mask with granularities.
154970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
155070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public int getMovementGranularities() {
155170e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.getMovementGranularities(mInfo);
155270e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
155370e96ebf69f91da84681a6263b3862c63d53ab11alanv
155470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
15559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Finds {@link android.view.accessibility.AccessibilityNodeInfo}s by text. The match
15569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * is case insensitive containment. The search is relative to this info i.e. this
15579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * info is the root of the traversed tree.
15589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
15599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
15609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link android.view.accessibility.AccessibilityNodeInfo#recycle()}
15619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * to avoid creating of multiple instances.
15629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
15639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param text The searched text.
15659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return A list of node info.
15669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public List<AccessibilityNodeInfoCompat> findAccessibilityNodeInfosByText(String text) {
15689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        List<AccessibilityNodeInfoCompat> result = new ArrayList<AccessibilityNodeInfoCompat>();
15699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        List<Object> infos = IMPL.findAccessibilityNodeInfosByText(mInfo, text);
15709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        final int infoCount = infos.size();
15719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        for (int i = 0; i < infoCount; i++) {
15729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            Object info = infos.get(i);
15739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            result.add(new AccessibilityNodeInfoCompat(info));
15749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
15759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return result;
15769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the parent.
15809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
15819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
15829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link android.view.accessibility.AccessibilityNodeInfo#recycle()}
15839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * to avoid creating of multiple instances.
15849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
15859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The parent.
15879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat getParent() {
158970e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.getParent(mInfo));
15909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the parent.
15949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
15959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
15969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
15979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
15989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
15999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param parent The parent.
16019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
16029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setParent(View parent) {
16049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setParent(mInfo, parent);
16059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
160870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets the parent to be a virtual descendant of the given <code>root</code>.
160970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * If <code>virtualDescendantId</code> equals to {@link View#NO_ID} the root
161070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * is set as the parent.
161170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
161270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * A virtual descendant is an imaginary View that is reported as a part of the view
161370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * hierarchy for accessibility purposes. This enables custom views that draw complex
161470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * content to report them selves as a tree of virtual views, thus conveying their
161570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * logical structure.
161670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
161770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
161870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
161970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
162070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
162170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
162270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
162370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param root The root of the virtual subtree.
162470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param virtualDescendantId The id of the virtual descendant.
162570e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
162670e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setParent(View root, int virtualDescendantId) {
162770e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setParent(mInfo, root, virtualDescendantId);
162870e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
162970e96ebf69f91da84681a6263b3862c63d53ab11alanv
163070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
16319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the node bounds in parent coordinates.
16329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param outBounds The output node bounds.
16349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void getBoundsInParent(Rect outBounds) {
16369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.getBoundsInParent(mInfo, outBounds);
16379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the node bounds in parent coordinates.
16419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
16429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
16439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
16449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
16459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
16469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param bounds The node bounds.
16489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *@throws IllegalStateException If called from an AccessibilityService.
16499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setBoundsInParent(Rect bounds) {
16519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setBoundsInParent(mInfo, bounds);
16529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the node bounds in screen coordinates.
16569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param outBounds The output node bounds.
16589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void getBoundsInScreen(Rect outBounds) {
16609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.getBoundsInScreen(mInfo, outBounds);
16619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the node bounds in screen coordinates.
16659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
16669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
16679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
16689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
16699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
16709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param bounds The node bounds.
16729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
16739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setBoundsInScreen(Rect bounds) {
16753a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.setBoundsInScreen(mInfo, bounds);
16769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is checkable.
16809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is checkable.
16829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isCheckable() {
16849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isCheckable(mInfo);
16859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is checkable.
16899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
16909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
16919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
16929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
16939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
16949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param checkable True if the node is checkable.
16969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
16979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setCheckable(boolean checkable) {
16999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setCheckable(mInfo, checkable);
17009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is checked.
17049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is checked.
17069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isChecked() {
17089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isChecked(mInfo);
17099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is checked.
17139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param checked True if the node is checked.
17209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setChecked(boolean checked) {
17239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setChecked(mInfo, checked);
17249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is focusable.
17289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is focusable.
17309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isFocusable() {
17329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isFocusable(mInfo);
17339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is focusable.
17379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param focusable True if the node is focusable.
17449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setFocusable(boolean focusable) {
17479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setFocusable(mInfo, focusable);
17489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is focused.
17529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is focused.
17549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isFocused() {
17569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isFocused(mInfo);
17579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is focused.
17619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param focused True if the node is focused.
17689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setFocused(boolean focused) {
17719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setFocused(mInfo, focused);
17729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
177570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is visible to the user.
177670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
177770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return Whether the node is visible to the user.
177870e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
177970e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean isVisibleToUser() {
178070e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.isVisibleToUser(mInfo);
178170e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
178270e96ebf69f91da84681a6263b3862c63d53ab11alanv
178370e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
178470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is visible to the user.
178570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
178670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
178770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
178870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
178970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
179070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
179170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param visibleToUser Whether the node is visible to the user.
179270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
179370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
179470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
179570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setVisibleToUser(boolean visibleToUser) {
179670e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setVisibleToUser(mInfo, visibleToUser);
179770e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
179870e96ebf69f91da84681a6263b3862c63d53ab11alanv
179970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
180070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Gets whether this node is accessibility focused.
180170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
180270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return True if the node is accessibility focused.
180370e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
180470e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean isAccessibilityFocused() {
180570e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.isAccessibilityFocused(mInfo);
180670e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
180770e96ebf69f91da84681a6263b3862c63d53ab11alanv
180870e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
180970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is accessibility focused.
181070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
181170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
181270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
181370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
181470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
181570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
181670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param focused True if the node is accessibility focused.
181770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
181870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
181970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
182070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setAccessibilityFocused(boolean focused) {
182170e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setAccessibilityFocused(mInfo, focused);
182270e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
182370e96ebf69f91da84681a6263b3862c63d53ab11alanv
182470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
18259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is selected.
18269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is selected.
18289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isSelected() {
18309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isSelected(mInfo);
18319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is selected.
18359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
18379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
18389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
18399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param selected True if the node is selected.
18429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
18439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setSelected(boolean selected) {
18459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setSelected(mInfo, selected);
18469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is clickable.
18509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is clickable.
18529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isClickable() {
18549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isClickable(mInfo);
18559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is clickable.
18599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
18619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
18629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
18639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param clickable True if the node is clickable.
18669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
18679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setClickable(boolean clickable) {
18699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setClickable(mInfo, clickable);
18709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is long clickable.
18749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is long clickable.
18769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isLongClickable() {
18789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isLongClickable(mInfo);
18799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is long clickable.
18839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
18859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
18869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
18879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param longClickable True if the node is long clickable.
18909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
18919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setLongClickable(boolean longClickable) {
18939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setLongClickable(mInfo, longClickable);
18949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is enabled.
18989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is enabled.
19009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isEnabled() {
19029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isEnabled(mInfo);
19039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is enabled.
19079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
19089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
19099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
19109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
19119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
19129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param enabled True if the node is enabled.
19149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
19159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setEnabled(boolean enabled) {
19179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setEnabled(mInfo, enabled);
19189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is a password.
19229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is a password.
19249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isPassword() {
19269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isPassword(mInfo);
19279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is a password.
19319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
19329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
19339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
19349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
19359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
19369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param password True if the node is a password.
19389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
19399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setPassword(boolean password) {
19419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setPassword(mInfo, password);
19429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets if the node is scrollable.
19469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is scrollable, false otherwise.
19489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isScrollable() {
19509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isScrollable(mInfo);
19519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets if the node is scrollable.
19559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
19569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
19579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
19589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
19599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
19609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param scrollable True if the node is scrollable, false otherwise.
19629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
19639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setScrollable(boolean scrollable) {
19659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setScrollable(mInfo, scrollable);
19669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the package this node comes from.
19709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The package name.
19729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getPackageName() {
19749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getPackageName(mInfo);
19759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the package this node comes from.
19799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
19809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
19819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
19829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
19839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
19849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param packageName The package name.
19869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
19879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setPackageName(CharSequence packageName) {
19899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setPackageName(mInfo, packageName);
19909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
19939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the class this node comes from.
19949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
19959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The class name.
19969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
19979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getClassName() {
19989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getClassName(mInfo);
19999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the class this node comes from.
20039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
20049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
20059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
20069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
20079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
20089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param className The class name.
20109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
20119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setClassName(CharSequence className) {
20139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setClassName(mInfo, className);
20149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the text of this node.
20189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The text.
20209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getText() {
20229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getText(mInfo);
20239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the text of this node.
20279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
20289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
20299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
20309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
20319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
20329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param text The text.
20349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
20359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setText(CharSequence text) {
20379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setText(mInfo, text);
20389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the content description of this node.
20429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The content description.
20449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getContentDescription() {
20469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getContentDescription(mInfo);
20479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the content description of this node.
20519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
20529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
20539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
20549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
20559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
20569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param contentDescription The content description.
20589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
20599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setContentDescription(CharSequence contentDescription) {
20619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setContentDescription(mInfo, contentDescription);
20629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
20659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Return an instance back to be reused.
20669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
20679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> You must not touch the object after calling this function.
20689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
20699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If the info is already recycled.
20709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
20719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void recycle() {
20729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.recycle(mInfo);
20739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
20749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20750fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
20760fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Sets the fully qualified resource name of the source view's id.
20770fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
20780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
20790fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   <strong>Note:</strong> Cannot be called from an
20800fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   {@link android.accessibilityservice.AccessibilityService}.
20810fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   This class is made immutable before being delivered to an AccessibilityService.
20820fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
20830fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
20840fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @param viewId The id resource name.
20850fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
2086071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav    public void setViewIdResourceName(String viewId) {
20870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        IMPL.setViewIdResourceName(mInfo, viewId);
20880fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
20890fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
20900fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
20910fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Gets the fully qualified resource name of the source view's id.
20920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
20930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
20940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   <strong>Note:</strong> The primary usage of this API is for UI test automation
20950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   and in order to report the source view id of an {@link AccessibilityNodeInfoCompat}
20960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   the client has to set the {@link AccessibilityServiceInfoCompat#FLAG_REPORT_VIEW_IDS}
20970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   flag when configuring his {@link android.accessibilityservice.AccessibilityService}.
20980fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
20990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
21000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @return The id resource name.
21010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
2102071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav    public String getViewIdResourceName() {
21030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        return IMPL.getViewIdResourceName(mInfo);
21040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
21050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
2106086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    /**
2107086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * Gets the node's live region mode.
2108086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <p>
2109086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * A live region is a node that contains information that is important for
2110086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * the user and when it changes the user should be notified. For example,
2111086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * in a login screen with a TextView that displays an "incorrect password"
2112086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * notification, that view should be marked as a live region with mode
2113086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * {@link ViewCompat#ACCESSIBILITY_LIVE_REGION_POLITE}.
2114086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <p>
2115086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * It is the responsibility of the accessibility service to monitor
2116086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * {@link AccessibilityEventCompat#TYPE_WINDOW_CONTENT_CHANGED} events
2117086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * indicating changes to live region nodes and their children.
2118086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *
2119086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @return The live region mode, or
2120086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *         {@link ViewCompat#ACCESSIBILITY_LIVE_REGION_NONE} if the view is
2121086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *         not a live region.
2122086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @see ViewCompat#getAccessibilityLiveRegion(View)
2123086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     */
2124086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    public int getLiveRegion() {
2125086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        return IMPL.getLiveRegion(mInfo);
2126086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
2127086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
2128086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    /**
2129086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * Sets the node's live region mode.
2130086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <p>
2131086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <strong>Note:</strong> Cannot be called from an
2132086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * {@link android.accessibilityservice.AccessibilityService}. This class is
2133086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * made immutable before being delivered to an AccessibilityService.
2134086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *
2135086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @param mode The live region mode, or
2136086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *        {@link ViewCompat#ACCESSIBILITY_LIVE_REGION_NONE} if the view is
2137086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *        not a live region.
2138086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @see ViewCompat#setAccessibilityLiveRegion(View, int)
2139086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     */
2140086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    public void setLiveRegion(int mode) {
2141086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        IMPL.setLiveRegion(mInfo, mode);
2142086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
2143086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
2144fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    /**
2145fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * Gets the collection info if the node is a collection. A collection
2146fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * child is always a collection item.
2147fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     *
2148fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * @return The collection info.
2149fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     */
2150fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public CollectionInfoCompat getCollectionInfo() {
2151fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        Object info = IMPL.getCollectionInfo(mInfo);
2152fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        if (info == null) return null;
2153fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        return new CollectionInfoCompat(info);
2154fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
2155fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
2156fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    /**
2157fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * Gets the collection item info if the node is a collection item. A collection
2158fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * item is always a child of a collection.
2159fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     *
2160fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * @return The collection item info.
2161fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     */
2162fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public CollectionItemInfoCompat getCollectionItemInfo() {
2163fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        Object info = IMPL.getCollectionItemInfo(mInfo);
2164fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        if (info == null) return null;
2165fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        return new CollectionItemInfoCompat(info);
2166fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
2167fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
2168fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    /**
2169fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * Gets the range info if this node is a range.
2170fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     *
2171fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     * @return The range.
2172fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen     */
2173fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    public RangeInfoCompat getRangeInfo() {
2174fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        Object info = IMPL.getRangeInfo(mInfo);
2175fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        if (info == null) return null;
2176fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        return new RangeInfoCompat(info);
2177fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
2178fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
2179389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    /**
2180389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen     * Gets the actions that can be performed on the node.
2181389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen     *
2182389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen     * @return A list of AccessibilityActions.
2183389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen     */
2184389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    public List<AccessibilityActionCompat> getActionList() {
2185389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        List<AccessibilityActionCompat> result = new ArrayList<AccessibilityActionCompat>();
2186389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        List<Object> actions = IMPL.getActionList(mInfo);
2187389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        final int actionCount = actions.size();
2188389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        for (int i = 0; i < actionCount; i++) {
2189389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            Object action = actions.get(i);
2190389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen            result.add(new AccessibilityActionCompat(action));
2191389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        }
2192389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen        return result;
2193389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen    }
2194389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
2195389a2e54dda92632fc0004c17323ae4e5a249277Kristian Monsen
21969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    @Override
21979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int hashCode() {
21989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return (mInfo == null) ? 0 : mInfo.hashCode();
21999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
22009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    @Override
22029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean equals(Object obj) {
22039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (this == obj) {
22049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return true;
22059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
22069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (obj == null) {
22079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
22089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
22099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (getClass() != obj.getClass()) {
22109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
22119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
22129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        AccessibilityNodeInfoCompat other = (AccessibilityNodeInfoCompat) obj;
22139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (mInfo == null) {
22149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            if (other.mInfo != null) {
22159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov                return false;
22169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            }
22179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        } else if (!mInfo.equals(other.mInfo)) {
22189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
22199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
22209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return true;
22219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
22220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
22230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    @Override
22240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public String toString() {
22250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        StringBuilder builder = new StringBuilder();
22260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append(super.toString());
22270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
22280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        Rect bounds = new Rect();
22290fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
22300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        getBoundsInParent(bounds);
22310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; boundsInParent: " + bounds);
22320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
22330fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        getBoundsInScreen(bounds);
22340fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; boundsInScreen: " + bounds);
22350fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
22360fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; packageName: ").append(getPackageName());
22370fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; className: ").append(getClassName());
22380fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; text: ").append(getText());
22390fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; contentDescription: ").append(getContentDescription());
22400fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; viewId: ").append(getViewIdResourceName());
22410fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
22420fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; checkable: ").append(isCheckable());
22430fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; checked: ").append(isChecked());
22440fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; focusable: ").append(isFocusable());
22450fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; focused: ").append(isFocused());
22460fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; selected: ").append(isSelected());
22470fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; clickable: ").append(isClickable());
22480fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; longClickable: ").append(isLongClickable());
22490fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; enabled: ").append(isEnabled());
22500fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; password: ").append(isPassword());
22510fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; scrollable: " + isScrollable());
22520fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
22530fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; [");
22540fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        for (int actionBits = getActions(); actionBits != 0;) {
22550fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            final int action = 1 << Integer.numberOfTrailingZeros(actionBits);
22560fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            actionBits &= ~action;
22570fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            builder.append(getActionSymbolicName(action));
22580fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            if (actionBits != 0) {
22590fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                builder.append(", ");
22600fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            }
22610fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
22620fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("]");
22630fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
22640fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        return builder.toString();
22650fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
22660fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
22670fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    private static String getActionSymbolicName(int action) {
22680fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        switch (action) {
22690fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_FOCUS:
22700fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_FOCUS";
22710fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_FOCUS:
22720fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_FOCUS";
22730fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SELECT:
22740fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SELECT";
22750fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_SELECTION:
22760fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_SELECTION";
22770fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLICK:
22780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLICK";
22790fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_LONG_CLICK:
22800fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_LONG_CLICK";
22810fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_ACCESSIBILITY_FOCUS:
22820fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_ACCESSIBILITY_FOCUS";
22830fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_ACCESSIBILITY_FOCUS:
22840fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_ACCESSIBILITY_FOCUS";
22850fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
22860fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_NEXT_AT_MOVEMENT_GRANULARITY";
22870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY:
22880fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY";
22890fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_NEXT_HTML_ELEMENT:
22900fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_NEXT_HTML_ELEMENT";
22910fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PREVIOUS_HTML_ELEMENT:
22920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PREVIOUS_HTML_ELEMENT";
22930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SCROLL_FORWARD:
22940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SCROLL_FORWARD";
22950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SCROLL_BACKWARD:
22960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SCROLL_BACKWARD";
22970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CUT:
22980fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CUT";
22990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_COPY:
23000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_COPY";
23010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PASTE:
23020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PASTE";
23030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SET_SELECTION:
23040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SET_SELECTION";
23050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            default:
23060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return"ACTION_UNKNOWN";
23070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
23080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
23099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov}
2310