AccessibilityNodeInfoCompat.java revision 0fc5bd7644f7563f7b59bd1017df9c938857e794
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;
239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.view.View;
249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
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
359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static interface AccessibilityNodeInfoImpl {
369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain();
379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source);
389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info);
3970e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId);
409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source);
413a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId);
4270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus);
4370e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction);
449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info);
459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info);
4670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index);
479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child);
483a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId);
499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info);
509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action);
519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action);
5270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments);
5370e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities);
5470e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info);
559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text);
5670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info);
5770e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId);
589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent);
599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds);
609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds);
619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds);
629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds);
639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info);
649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable);
659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info);
669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked);
679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info);
689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable);
699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info);
709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused);
7170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info);
7270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser);
7370e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info);
7470e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused);
759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info);
769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected);
779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info);
789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable);
799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info);
809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable);
819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info);
829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled);
839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info);
849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password);
859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info);
869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable);
879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info);
889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName);
899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info);
909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className);
919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info);
929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text);
939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info);
949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription);
959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info);
960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        public CharSequence getViewIdResourceName(Object info);
970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        public void setViewIdResourceName(Object info, CharSequence viewId);
989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static class AccessibilityNodeInfoStubImpl implements AccessibilityNodeInfoImpl {
10170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain() {
1039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
10670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source) {
1089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
11270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId) {
11370e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
11470e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
11570e96ebf69f91da84681a6263b3862c63d53ab11alanv
11670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info) {
1189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action) {
1239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child) {
1289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1323a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId) {
1333a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
1343a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
1353a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
13670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text) {
138f9c2277244722eca88c784b9cfdcc78df7f94781Svetoslav Ganov            return Collections.emptyList();
1399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info) {
1439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
1449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds) {
1489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds) {
1539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
15770e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index) {
1589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info) {
1639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
1649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info) {
1689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info) {
1739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info) {
1789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
18270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info) {
1839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info) {
1889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info) {
1939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
1949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info) {
1989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
1999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info) {
2039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info) {
2089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
21170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info) {
2139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
21670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info) {
2189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info) {
2239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
22770e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info) {
22870e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
22970e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
23070e96ebf69f91da84681a6263b3862c63d53ab11alanv
23170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
23270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info) {
23370e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
23470e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
23570e96ebf69f91da84681a6263b3862c63d53ab11alanv
23670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info) {
2389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
24170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info) {
2439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
24670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info) {
2489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
25170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info) {
2539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
25670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action) {
2589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
26170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
26270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments) {
26370e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
26470e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
26570e96ebf69f91da84681a6263b3862c63d53ab11alanv
26670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
26770e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities) {
26870e96ebf69f91da84681a6263b3862c63d53ab11alanv
26970e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
27070e96ebf69f91da84681a6263b3862c63d53ab11alanv
27170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
27270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info) {
27370e96ebf69f91da84681a6263b3862c63d53ab11alanv            return 0;
27470e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
27570e96ebf69f91da84681a6263b3862c63d53ab11alanv
27670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds) {
2789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
28170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds) {
2839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
28670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable) {
2889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
29170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked) {
2939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
29670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className) {
2989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
30170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable) {
3039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
30670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription) {
3089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
31170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled) {
3139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
31670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable) {
3189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
32170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused) {
3239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
32670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
32770e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser) {
32870e96ebf69f91da84681a6263b3862c63d53ab11alanv
32970e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
33070e96ebf69f91da84681a6263b3862c63d53ab11alanv
33170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
33270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused) {
33370e96ebf69f91da84681a6263b3862c63d53ab11alanv
33470e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
33570e96ebf69f91da84681a6263b3862c63d53ab11alanv
33670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable) {
3389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
34170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName) {
3439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
34670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent) {
3489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
35170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password) {
3539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
35670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable) {
3589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
36170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected) {
3639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
36670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source) {
3689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
37170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3723a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId) {
3733a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
3743a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
3753a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
37670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
37770e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus) {
37870e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
37970e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
38070e96ebf69f91da84681a6263b3862c63d53ab11alanv
38170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
38270e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction) {
38370e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
38470e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
38570e96ebf69f91da84681a6263b3862c63d53ab11alanv
38670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text) {
3889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
39170e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info) {
3939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
39570e96ebf69f91da84681a6263b3862c63d53ab11alanv
39670e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
39770e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId) {
39870e96ebf69f91da84681a6263b3862c63d53ab11alanv
39970e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
4000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
4010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
4020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        public CharSequence getViewIdResourceName(Object info) {
4030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            return null;
4040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
4050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
4060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
4070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        public void setViewIdResourceName(Object info, CharSequence viewId) {
4080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
4090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
4109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
4119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static class AccessibilityNodeInfoIcsImpl extends AccessibilityNodeInfoStubImpl {
4139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain() {
4159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain();
4169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source) {
4209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain(source);
4219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info) {
4259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain(info);
4269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action) {
4309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.addAction(info, action);
4319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child) {
4359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.addChild(info, child);
4369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text) {
4409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.findAccessibilityNodeInfosByText(info, text);
4419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info) {
4459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getActions(info);
4469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds) {
4509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.getBoundsInParent(info, outBounds);
4519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds) {
4559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.getBoundsInScreen(info, outBounds);
4569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
45970e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index) {
46070e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatIcs.getChild(info, index);
4619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info) {
4659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getChildCount(info);
4669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info) {
4709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getClassName(info);
4719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info) {
4759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getContentDescription(info);
4769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info) {
4809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getPackageName(info);
4819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
48470e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info) {
48570e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatIcs.getParent(info);
4869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info) {
4909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getText(info);
4919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info) {
4959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getWindowId(info);
4969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info) {
5009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isCheckable(info);
5019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info) {
5059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isChecked(info);
5069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info) {
5109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isClickable(info);
5119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info) {
5159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isEnabled(info);
5169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info) {
5209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isFocusable(info);
5219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info) {
5259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isFocused(info);
5269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info) {
5309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isLongClickable(info);
5319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info) {
5359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isPassword(info);
5369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info) {
5409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isScrollable(info);
5419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info) {
5459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isSelected(info);
5469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action) {
5509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.performAction(info, action);
5519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds) {
5559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setBoundsInParent(info, bounds);
5569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds) {
5609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setBoundsInScreen(info, bounds);
5619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable) {
5659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setCheckable(info, checkable);
5669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked) {
5709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setChecked(info, checked);
5719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className) {
5759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setClassName(info, className);
5769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable) {
5809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setClickable(info, clickable);
5819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription) {
5859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setContentDescription(info, contentDescription);
5869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled) {
5909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setEnabled(info, enabled);
5919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable) {
5959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setFocusable(info, focusable);
5969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused) {
6009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setFocused(info, focused);
6019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable) {
6059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setLongClickable(info, longClickable);
6069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName) {
6109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setPackageName(info, packageName);
6119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent) {
6159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setParent(info, parent);
6169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password) {
6209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setPassword(info, password);
6219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable) {
6259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setScrollable(info, scrollable);
6269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected) {
6309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setSelected(info, selected);
6319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source) {
6359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setSource(info, source);
6369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text) {
6409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setText(info, text);
6419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info) {
6459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.recycle(info);
6469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
6489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6493a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    static class AccessibilityNodeInfoJellybeanImpl extends AccessibilityNodeInfoIcsImpl {
6503a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        @Override
65170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId) {
65270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.obtain(root, virtualDescendantId);
65370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
65470e96ebf69f91da84681a6263b3862c63d53ab11alanv
65570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
65670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus) {
65770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.findFocus(info, focus);
65870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
65970e96ebf69f91da84681a6263b3862c63d53ab11alanv
66070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
66170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction) {
66270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.focusSearch(info, direction);
66370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
66470e96ebf69f91da84681a6263b3862c63d53ab11alanv
66570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
6663a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId) {
6673a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            AccessibilityNodeInfoCompatJellyBean.addChild(info, child, virtualDescendantId);
6683a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
6693a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
6703a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        @Override
6713a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId) {
6723a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            AccessibilityNodeInfoCompatJellyBean.setSource(info, root, virtualDescendantId);
6733a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
67470e96ebf69f91da84681a6263b3862c63d53ab11alanv
67570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
67670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info) {
67770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.isVisibleToUser(info);
67870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
67970e96ebf69f91da84681a6263b3862c63d53ab11alanv
68070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
68170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser) {
68270e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setVisibleToUser(info, visibleToUser);
68370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
68470e96ebf69f91da84681a6263b3862c63d53ab11alanv
68570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
68670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info) {
68770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.isAccessibilityFocused(info);
68870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
68970e96ebf69f91da84681a6263b3862c63d53ab11alanv
69070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
69170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused) {
69270e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setAccesibilityFocused(info, focused);
69370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
69470e96ebf69f91da84681a6263b3862c63d53ab11alanv
69570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
69670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments) {
69770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.performAction(info, action, arguments);
69870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
69970e96ebf69f91da84681a6263b3862c63d53ab11alanv
70070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
70170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities) {
70270e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setMovementGranularities(info, granularities);
70370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
70470e96ebf69f91da84681a6263b3862c63d53ab11alanv
70570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
70670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info) {
70770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.getMovementGranularities(info);
70870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
70970e96ebf69f91da84681a6263b3862c63d53ab11alanv
71070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
71170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId) {
71270e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setParent(info, root, virtualDescendantId);
71370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
7143a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
7153a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
7160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    static class AccessibilityNodeInfoJellybeanMr2Impl extends AccessibilityNodeInfoJellybeanImpl {
7170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
7180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
7190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        public CharSequence getViewIdResourceName(Object info) {
7200fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            return AccessibilityNodeInfoCompatJellybeanMr2.getViewIdResourceName(info);
7210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
7220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
7230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
7240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        public void setViewIdResourceName(Object info, CharSequence viewId) {
7250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            AccessibilityNodeInfoCompatJellybeanMr2.setViewIdResourceName(info, viewId);
7260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
7270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
7280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
7299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static {
7300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        // TODO: Use SDK_INT when it is finalized, tracked by bug:8133596
7310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        if ("JellyBeanMR2".equals(Build.VERSION.CODENAME)) { // JellyBean MR2
7320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            IMPL = new AccessibilityNodeInfoJellybeanMr2Impl();
7330fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        } else if (Build.VERSION.SDK_INT >= 16) { // JellyBean
7343a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            IMPL = new AccessibilityNodeInfoJellybeanImpl();
7353a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        } else if (Build.VERSION.SDK_INT >= 14) { // ICS
7369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            IMPL = new AccessibilityNodeInfoIcsImpl();
7379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        } else {
7389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            IMPL = new AccessibilityNodeInfoStubImpl();
7399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
7419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    private static final AccessibilityNodeInfoImpl IMPL;
7439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    private final Object mInfo;
7459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7460fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in IceCreamSandwich
7479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
7499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that focuses the node.
7509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
7519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_FOCUS = 0x00000001;
7529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
7549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that unfocuses the node.
7559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
7569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_CLEAR_FOCUS = 0x00000002;
7579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
7599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that selects the node.
7609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
7619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_SELECT = 0x00000004;
7629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
7649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that unselects the node.
7659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
7669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_CLEAR_SELECTION = 0x00000008;
7679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
768c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    /**
76970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that clicks on the node info.
77070e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
77170e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_CLICK = 0x00000010;
77270e96ebf69f91da84681a6263b3862c63d53ab11alanv
77370e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
77470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that long clicks on the node.
77570e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
77670e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_LONG_CLICK = 0x00000020;
77770e96ebf69f91da84681a6263b3862c63d53ab11alanv
7780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in JellyBean
7790fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
78070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
78170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that gives accessibility focus to the node.
78270e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
78370e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_ACCESSIBILITY_FOCUS = 0x00000040;
78470e96ebf69f91da84681a6263b3862c63d53ab11alanv
78570e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
78670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that clears accessibility focus of the node.
78770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
78870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 0x00000080;
78970e96ebf69f91da84681a6263b3862c63d53ab11alanv
79070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
79170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that requests to go to the next entity in this node's text
79270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * at a given movement granularity. For example, move to the next character,
79370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * word, etc.
79470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
7950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT}<,
7960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN}<br>
7970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong> Move to the previous character and do not extend selection.
79870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
79970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
80070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
80170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER);
8020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
8030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *           false);
80470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY, arguments);
80570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
80670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
80770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
8080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT
8090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN
8100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
81170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setMovementGranularities(int)
81270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #getMovementGranularities()
81370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
81470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_CHARACTER
81570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_WORD
81670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_LINE
81770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PARAGRAPH
81870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PAGE
81970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
82070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 0x00000100;
82170e96ebf69f91da84681a6263b3862c63d53ab11alanv
82270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
82370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that requests to go to the previous entity in this node's text
82470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * at a given movement granularity. For example, move to the next character,
82570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * word, etc.
82670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
8270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT}<,
8280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN}<br>
8290fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong> Move to the next character and do not extend selection.
83070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
83170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
83270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
83370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER);
8340fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
8350fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *           false);
83670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
83770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           arguments);
83870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
83970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
84070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
8410fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT
8420fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN
8430fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
84470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setMovementGranularities(int)
84570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #getMovementGranularities()
84670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
84770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_CHARACTER
84870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_WORD
84970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_LINE
85070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PARAGRAPH
85170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PAGE
85270e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
85370e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 0x00000200;
85470e96ebf69f91da84681a6263b3862c63d53ab11alanv
85570e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
85670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to move to the next HTML element of a given type. For example, move
85770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * to the BUTTON, INPUT, TABLE, etc.
85870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
85970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_HTML_ELEMENT_STRING}<br>
86070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Example:</strong>
86170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
86270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
86370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING, "BUTTON");
86470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT, arguments);
86570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
86670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
86770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
86870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_NEXT_HTML_ELEMENT = 0x00000400;
86970e96ebf69f91da84681a6263b3862c63d53ab11alanv
87070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
87170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to move to the previous HTML element of a given type. For example, move
87270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * to the BUTTON, INPUT, TABLE, etc.
87370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
87470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_HTML_ELEMENT_STRING}<br>
87570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Example:</strong>
87670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
87770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
87870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING, "BUTTON");
87970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT, arguments);
88070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
88170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
88270e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
88370e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_PREVIOUS_HTML_ELEMENT = 0x00000800;
88470e96ebf69f91da84681a6263b3862c63d53ab11alanv
88570e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
88670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to scroll the node content forward.
88770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
88870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_SCROLL_FORWARD = 0x00001000;
88970e96ebf69f91da84681a6263b3862c63d53ab11alanv
89070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
89170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to scroll the node content backward.
89270e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
89370e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_SCROLL_BACKWARD = 0x00002000;
89470e96ebf69f91da84681a6263b3862c63d53ab11alanv
8950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in JellyBeanMr2
8960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
8970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
8980fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to copy the current selection to the clipboard.
8990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_COPY = 0x00004000;
9010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
9030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to paste the current clipboard content.
9040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_PASTE = 0x00008000;
9060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
9080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to cut the current selection and place it to the clipboard.
9090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_CUT = 0x00010000;
9110fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
9130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to set the selection. Performing this action with no arguments
9140fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * clears the selection.
9150fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
9160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_SELECTION_START_INT},
9170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_SELECTION_END_INT}<br>
9180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong>
9190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <code><pre><p>
9200fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   Bundle arguments = new Bundle();
9210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 1);
9220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, 2);
9230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   info.performAction(AccessibilityNodeInfo.ACTION_SET_SELECTION, arguments);
9240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </code></pre></p>
9250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
9260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
9270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_SELECTION_START_INT
9280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_SELECTION_END_INT
9290fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_SET_SELECTION = 0x00020000;
9310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Action arguments
9330fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
93470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
93570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Argument for which movement granularity to be used when traversing the node text.
93670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
93770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Type:</strong> int<br>
93870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Actions:</strong> {@link #ACTION_NEXT_AT_MOVEMENT_GRANULARITY},
93970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * {@link #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY}
94070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
94170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
94270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT =
94370e96ebf69f91da84681a6263b3862c63d53ab11alanv        "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
94470e96ebf69f91da84681a6263b3862c63d53ab11alanv
94570e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
94670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Argument for which HTML element to get moving to the next/previous HTML element.
94770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
94870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Type:</strong> String<br>
94970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Actions:</strong> {@link #ACTION_NEXT_HTML_ELEMENT},
95070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *         {@link #ACTION_PREVIOUS_HTML_ELEMENT}
95170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
95270e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
95370e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING =
95470e96ebf69f91da84681a6263b3862c63d53ab11alanv        "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
95570e96ebf69f91da84681a6263b3862c63d53ab11alanv
95670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
9570fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for whether when moving at granularity to extend the selection
9580fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * or to move it otherwise.
9590fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
9600fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> boolean<br>
9610fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_NEXT_AT_MOVEMENT_GRANULARITY},
9620fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY}
9630fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
9640fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
9650fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_NEXT_AT_MOVEMENT_GRANULARITY
9660fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY
9670fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9680fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN =
9690fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
9700fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9710fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
9720fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for specifying the selection start.
9730fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
9740fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> int<br>
9750fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_SET_SELECTION}
9760fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
9770fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
9780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_SET_SELECTION
9790fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9800fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_SELECTION_START_INT =
9810fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_SELECTION_START_INT";
9820fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9830fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
9840fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for specifying the selection end.
9850fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
9860fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> int<br>
9870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_SET_SELECTION}
9880fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
9890fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
9900fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_SET_SELECTION
9910fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_SELECTION_END_INT =
9930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_SELECTION_END_INT";
9940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Focus types
9960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
99870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * The input focus.
99970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
100070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int FOCUS_INPUT = 1;
100170e96ebf69f91da84681a6263b3862c63d53ab11alanv
100270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
100370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * The accessibility focus.
100470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
100570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int FOCUS_ACCESSIBILITY = 2;
100670e96ebf69f91da84681a6263b3862c63d53ab11alanv
100770e96ebf69f91da84681a6263b3862c63d53ab11alanv    // Movement granularities
100870e96ebf69f91da84681a6263b3862c63d53ab11alanv
100970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
101070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by character.
101170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
101270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_CHARACTER = 0x00000001;
101370e96ebf69f91da84681a6263b3862c63d53ab11alanv
101470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
101570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by word.
101670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
101770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_WORD = 0x00000002;
101870e96ebf69f91da84681a6263b3862c63d53ab11alanv
101970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
102070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by line.
102170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
102270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_LINE = 0x00000004;
102370e96ebf69f91da84681a6263b3862c63d53ab11alanv
102470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
102570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by paragraph.
102670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
102770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 0x00000008;
102870e96ebf69f91da84681a6263b3862c63d53ab11alanv
102970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
103070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by page.
103170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
103270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_PAGE = 0x00000010;
103370e96ebf69f91da84681a6263b3862c63d53ab11alanv
103470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
1035c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * Creates a wrapper for info implementation.
1036c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     *
1037c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * @param object The info to wrap.
1038c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * @return A wrapper for if the object is not null, null otherwise.
1039c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     */
1040c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    static AccessibilityNodeInfoCompat wrapNonNullInstance(Object object) {
1041c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        if (object != null) {
1042c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov            return new AccessibilityNodeInfoCompat(object);
1043c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        }
1044c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        return null;
1045c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    }
1046c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov
1047956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    /**
1048956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * Creates a new instance wrapping an
1049956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * {@link android.view.accessibility.AccessibilityNodeInfo}.
1050956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     *
1051956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * @param info The info.
10529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
10539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat(Object info) {
10549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        mInfo = info;
10559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
10569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
10579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
1058956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * @return The wrapped {@link android.view.accessibility.AccessibilityNodeInfo}.
10599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
1060956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    public Object getInfo() {
10619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return mInfo;
10629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
10639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
10649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
10659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available otherwise a new one and
10669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * sets the source.
10679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
10689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
10699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see #setSource(View)
10709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
10719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain(View source) {
107270e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain(source));
107370e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
107470e96ebf69f91da84681a6263b3862c63d53ab11alanv
107570e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
107670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Returns a cached instance if such is available otherwise a new one
107770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * and sets the source.
107870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
107970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param root The root of the virtual subtree.
108070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param virtualDescendantId The id of the virtual descendant.
108170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return An instance.
108270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
108370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setSource(View, int)
108470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
108570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static AccessibilityNodeInfoCompat obtain(View root, int virtualDescendantId) {
108670e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(
108770e96ebf69f91da84681a6263b3862c63d53ab11alanv                IMPL.obtain(root, virtualDescendantId));
10889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
10899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
10909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
10919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available otherwise a new one.
10929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
10939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
10949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
10959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain() {
109670e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain());
10979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
10989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
10999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
11009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available or a new one is create.
11019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * The returned instance is initialized from the given <code>info</code>.
11029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
11039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param info The other info.
11049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
11059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
11069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain(AccessibilityNodeInfoCompat info) {
110770e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain(info.mInfo));
11089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
11099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
11119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the source.
11129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
11139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param source The info source.
11149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
11159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setSource(View source) {
11169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setSource(mInfo, source);
11179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
11189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
11203a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * Sets the source to be a virtual descendant of the given <code>root</code>.
11213a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * If <code>virtualDescendantId</code> is {@link View#NO_ID} the root
11223a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * is set as the source.
11233a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
11243a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * A virtual descendant is an imaginary View that is reported as a part of the view
11253a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * hierarchy for accessibility purposes. This enables custom views that draw complex
11263a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * content to report themselves as a tree of virtual views, thus conveying their
11273a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * logical structure.
11283a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
11293a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
11303a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   <strong>Note:</strong> Cannot be called from an
11313a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   {@link android.accessibilityservice.AccessibilityService}.
11323a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   This class is made immutable before being delivered to an AccessibilityService.
11333a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
11343a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *
11353a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param root The root of the virtual subtree.
11363a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param virtualDescendantId The id of the virtual descendant.
11373a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     */
11383a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    public void setSource(View root, int virtualDescendantId) {
11393a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.setSource(mInfo, root, virtualDescendantId);
11403a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
11413a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
11423a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    /**
114370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Find the view that has the specified focus type. The search starts from
114470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * the view represented by this node info.
114570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
114670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param focus The focus to find. One of {@link #FOCUS_INPUT} or
114770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *         {@link #FOCUS_ACCESSIBILITY}.
114870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The node info of the focused view or null.
114970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
115070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #FOCUS_INPUT
115170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #FOCUS_ACCESSIBILITY
115270e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
115370e96ebf69f91da84681a6263b3862c63d53ab11alanv    public AccessibilityNodeInfoCompat findFocus(int focus) {
115470e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.findFocus(mInfo, focus));
115570e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
115670e96ebf69f91da84681a6263b3862c63d53ab11alanv
115770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
115870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Searches for the nearest view in the specified direction that can take
115976ca3a4abf437c04003bacff72491409f8898a18Svetoslav Ganov     * input focus.
116070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
116170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param direction The direction. Can be one of:
116270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_DOWN},
116370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_UP},
116470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_LEFT},
116570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_RIGHT},
116670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_FORWARD},
116776ca3a4abf437c04003bacff72491409f8898a18Svetoslav Ganov     *     {@link View#FOCUS_BACKWARD}.
116870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
116970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The node info for the view that can take accessibility focus.
117070e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
117170e96ebf69f91da84681a6263b3862c63d53ab11alanv    public AccessibilityNodeInfoCompat focusSearch(int direction) {
117270e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.focusSearch(mInfo, direction));
117370e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
117470e96ebf69f91da84681a6263b3862c63d53ab11alanv
117570e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
11769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the id of the window from which the info comes from.
11779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
11789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The window id.
11799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
11809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getWindowId() {
11819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getWindowId(mInfo);
11829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
11839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
11859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the number of children.
11869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
11879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The child count.
11889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
11899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getChildCount() {
11909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getChildCount(mInfo);
11919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
11929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
11949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Get the child at given index.
11959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
11969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
11979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link AccessibilityNodeInfoCompat#recycle()} to
11989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * avoid creating of multiple instances.
11999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
12009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param index The child index.
12029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The child node.
12039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called outside of an
12049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *             AccessibilityService.
12059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat getChild(int index) {
120770e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.getChild(mInfo, index));
12089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Adds a child.
12129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
12139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
12149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
12159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
12169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
12179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param child The child.
12199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
12209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void addChild(View child) {
12229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.addChild(mInfo, child);
12239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12263a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * Adds a virtual child which is a descendant of the given <code>root</code>.
12273a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * If <code>virtualDescendantId</code> is {@link View#NO_ID} the root
12283a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * is added as a child.
12293a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
12303a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * A virtual descendant is an imaginary View that is reported as a part of the view
12313a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * hierarchy for accessibility purposes. This enables custom views that draw complex
12323a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * content to report them selves as a tree of virtual views, thus conveying their
12333a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * logical structure.
12343a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
12353a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *
12363a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param root The root of the virtual subtree.
12373a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param virtualDescendantId The id of the virtual child.
12383a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     */
12393a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    public void addChild(View root, int virtualDescendantId) {
12403a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.addChild(mInfo, root, virtualDescendantId);
12413a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
12423a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
12433a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    /**
12449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the actions that can be performed on the node.
12459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The bit mask of with actions.
12479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_FOCUS
12489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_CLEAR_FOCUS
12499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_SELECT
12509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_CLEAR_SELECTION
12519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getActions() {
12539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getActions(mInfo);
12549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Adds an action that can be performed on the node.
12589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
12599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
12609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
12619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
12629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
12639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param action The action.
12659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
12669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void addAction(int action) {
12689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.addAction(mInfo, action);
12699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Performs an action on the node.
12739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
12749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> An action can be performed only if the request is
12759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made from an {@link android.accessibilityservice.AccessibilityService}.
12769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
12779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param action The action to perform.
12799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the action was performed.
12809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called outside of an
12819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *             AccessibilityService.
12829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean performAction(int action) {
12849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.performAction(mInfo, action);
12859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
128870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Performs an action on the node.
128970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
129070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> An action can be performed only if the request is made
129170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   from an {@link android.accessibilityservice.AccessibilityService}.
129270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
129370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
129470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param action The action to perform.
129570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param arguments A bundle with additional arguments.
129670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return True if the action was performed.
129770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
129870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called outside of an AccessibilityService.
129970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
130070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean performAction(int action, Bundle arguments) {
130170e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.performAction(mInfo, action, arguments);
130270e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
130370e96ebf69f91da84681a6263b3862c63d53ab11alanv
130470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
130570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets the movement granularities for traversing the text of this node.
130670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
130770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
130870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
130970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
131070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
131170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
131270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param granularities The bit mask with granularities.
131370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
131470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
131570e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
131670e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setMovementGranularities(int granularities) {
131770e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setMovementGranularities(mInfo, granularities);
131870e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
131970e96ebf69f91da84681a6263b3862c63d53ab11alanv
132070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
132170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Gets the movement granularities for traversing the text of this node.
132270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
132370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The bit mask with granularities.
132470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
132570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public int getMovementGranularities() {
132670e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.getMovementGranularities(mInfo);
132770e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
132870e96ebf69f91da84681a6263b3862c63d53ab11alanv
132970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
13309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Finds {@link android.view.accessibility.AccessibilityNodeInfo}s by text. The match
13319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * is case insensitive containment. The search is relative to this info i.e. this
13329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * info is the root of the traversed tree.
13339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
13349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
13359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link android.view.accessibility.AccessibilityNodeInfo#recycle()}
13369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * to avoid creating of multiple instances.
13379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
13389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
13399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param text The searched text.
13409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return A list of node info.
13419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
13429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public List<AccessibilityNodeInfoCompat> findAccessibilityNodeInfosByText(String text) {
13439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        List<AccessibilityNodeInfoCompat> result = new ArrayList<AccessibilityNodeInfoCompat>();
13449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        List<Object> infos = IMPL.findAccessibilityNodeInfosByText(mInfo, text);
13459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        final int infoCount = infos.size();
13469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        for (int i = 0; i < infoCount; i++) {
13479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            Object info = infos.get(i);
13489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            result.add(new AccessibilityNodeInfoCompat(info));
13499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
13509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return result;
13519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
13529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
13549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the parent.
13559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
13569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
13579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link android.view.accessibility.AccessibilityNodeInfo#recycle()}
13589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * to avoid creating of multiple instances.
13599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
13609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
13619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The parent.
13629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
13639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat getParent() {
136470e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.getParent(mInfo));
13659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
13669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
13689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the parent.
13699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
13709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
13719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
13729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
13739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
13749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
13759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param parent The parent.
13769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
13779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
13789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setParent(View parent) {
13799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setParent(mInfo, parent);
13809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
13819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
138370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets the parent to be a virtual descendant of the given <code>root</code>.
138470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * If <code>virtualDescendantId</code> equals to {@link View#NO_ID} the root
138570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * is set as the parent.
138670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
138770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * A virtual descendant is an imaginary View that is reported as a part of the view
138870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * hierarchy for accessibility purposes. This enables custom views that draw complex
138970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * content to report them selves as a tree of virtual views, thus conveying their
139070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * logical structure.
139170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
139270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
139370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
139470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
139570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
139670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
139770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
139870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param root The root of the virtual subtree.
139970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param virtualDescendantId The id of the virtual descendant.
140070e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
140170e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setParent(View root, int virtualDescendantId) {
140270e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setParent(mInfo, root, virtualDescendantId);
140370e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
140470e96ebf69f91da84681a6263b3862c63d53ab11alanv
140570e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
14069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the node bounds in parent coordinates.
14079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param outBounds The output node bounds.
14099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void getBoundsInParent(Rect outBounds) {
14119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.getBoundsInParent(mInfo, outBounds);
14129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the node bounds in parent coordinates.
14169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
14189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
14199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
14209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param bounds The node bounds.
14239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *@throws IllegalStateException If called from an AccessibilityService.
14249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setBoundsInParent(Rect bounds) {
14269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setBoundsInParent(mInfo, bounds);
14279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the node bounds in screen coordinates.
14319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param outBounds The output node bounds.
14339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void getBoundsInScreen(Rect outBounds) {
14359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.getBoundsInScreen(mInfo, outBounds);
14369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the node bounds in screen coordinates.
14409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
14429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
14439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
14449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param bounds The node bounds.
14479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
14489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setBoundsInScreen(Rect bounds) {
14503a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.setBoundsInScreen(mInfo, bounds);
14519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is checkable.
14559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is checkable.
14579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isCheckable() {
14599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isCheckable(mInfo);
14609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is checkable.
14649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
14669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
14679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
14689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param checkable True if the node is checkable.
14719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
14729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setCheckable(boolean checkable) {
14749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setCheckable(mInfo, checkable);
14759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is checked.
14799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is checked.
14819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isChecked() {
14839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isChecked(mInfo);
14849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is checked.
14889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
14909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
14919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
14929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param checked True if the node is checked.
14959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
14969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setChecked(boolean checked) {
14989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setChecked(mInfo, checked);
14999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is focusable.
15039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is focusable.
15059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isFocusable() {
15079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isFocusable(mInfo);
15089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is focusable.
15129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
15139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
15149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
15159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
15169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
15179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param focusable True if the node is focusable.
15199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
15209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setFocusable(boolean focusable) {
15229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setFocusable(mInfo, focusable);
15239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is focused.
15279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is focused.
15299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isFocused() {
15319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isFocused(mInfo);
15329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is focused.
15369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
15379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
15389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
15399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
15409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
15419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param focused True if the node is focused.
15439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
15449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setFocused(boolean focused) {
15469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setFocused(mInfo, focused);
15479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
155070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is visible to the user.
155170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
155270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return Whether the node is visible to the user.
155370e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
155470e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean isVisibleToUser() {
155570e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.isVisibleToUser(mInfo);
155670e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
155770e96ebf69f91da84681a6263b3862c63d53ab11alanv
155870e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
155970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is visible to the user.
156070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
156170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
156270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
156370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
156470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
156570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
156670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param visibleToUser Whether the node is visible to the user.
156770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
156870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
156970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
157070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setVisibleToUser(boolean visibleToUser) {
157170e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setVisibleToUser(mInfo, visibleToUser);
157270e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
157370e96ebf69f91da84681a6263b3862c63d53ab11alanv
157470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
157570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Gets whether this node is accessibility focused.
157670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
157770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return True if the node is accessibility focused.
157870e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
157970e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean isAccessibilityFocused() {
158070e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.isAccessibilityFocused(mInfo);
158170e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
158270e96ebf69f91da84681a6263b3862c63d53ab11alanv
158370e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
158470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is accessibility focused.
158570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
158670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
158770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
158870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
158970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
159070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
159170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param focused True if the node is accessibility focused.
159270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
159370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
159470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
159570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setAccessibilityFocused(boolean focused) {
159670e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setAccessibilityFocused(mInfo, focused);
159770e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
159870e96ebf69f91da84681a6263b3862c63d53ab11alanv
159970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
16009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is selected.
16019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is selected.
16039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isSelected() {
16059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isSelected(mInfo);
16069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is selected.
16109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
16119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
16129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
16139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
16149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
16159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param selected True if the node is selected.
16179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
16189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setSelected(boolean selected) {
16209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setSelected(mInfo, selected);
16219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is clickable.
16259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is clickable.
16279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isClickable() {
16299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isClickable(mInfo);
16309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is clickable.
16349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
16359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
16369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
16379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
16389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
16399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param clickable True if the node is clickable.
16419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
16429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setClickable(boolean clickable) {
16449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setClickable(mInfo, clickable);
16459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is long clickable.
16499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is long clickable.
16519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isLongClickable() {
16539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isLongClickable(mInfo);
16549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is long clickable.
16589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
16599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
16609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
16619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
16629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
16639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param longClickable True if the node is long clickable.
16659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
16669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setLongClickable(boolean longClickable) {
16689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setLongClickable(mInfo, longClickable);
16699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is enabled.
16739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is enabled.
16759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isEnabled() {
16779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isEnabled(mInfo);
16789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is enabled.
16829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
16839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
16849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
16859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
16869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
16879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param enabled True if the node is enabled.
16899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
16909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setEnabled(boolean enabled) {
16929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setEnabled(mInfo, enabled);
16939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is a password.
16979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is a password.
16999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isPassword() {
17019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isPassword(mInfo);
17029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is a password.
17069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param password True if the node is a password.
17139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setPassword(boolean password) {
17169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setPassword(mInfo, password);
17179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets if the node is scrollable.
17219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is scrollable, false otherwise.
17239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isScrollable() {
17259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isScrollable(mInfo);
17269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets if the node is scrollable.
17309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param scrollable True if the node is scrollable, false otherwise.
17379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setScrollable(boolean scrollable) {
17409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setScrollable(mInfo, scrollable);
17419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the package this node comes from.
17459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The package name.
17479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getPackageName() {
17499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getPackageName(mInfo);
17509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the package this node comes from.
17549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param packageName The package name.
17619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setPackageName(CharSequence packageName) {
17649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setPackageName(mInfo, packageName);
17659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the class this node comes from.
17699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The class name.
17719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getClassName() {
17739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getClassName(mInfo);
17749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the class this node comes from.
17789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param className The class name.
17859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setClassName(CharSequence className) {
17889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setClassName(mInfo, className);
17899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the text of this node.
17939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The text.
17959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getText() {
17979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getText(mInfo);
17989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the text of this node.
18029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
18049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
18059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
18069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param text The text.
18099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
18109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setText(CharSequence text) {
18129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setText(mInfo, text);
18139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the content description of this node.
18179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The content description.
18199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getContentDescription() {
18219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getContentDescription(mInfo);
18229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the content description of this node.
18269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
18289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
18299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
18309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param contentDescription The content description.
18339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
18349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setContentDescription(CharSequence contentDescription) {
18369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setContentDescription(mInfo, contentDescription);
18379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Return an instance back to be reused.
18419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> You must not touch the object after calling this function.
18439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If the info is already recycled.
18459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void recycle() {
18479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.recycle(mInfo);
18489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18500fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
18510fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Sets the fully qualified resource name of the source view's id.
18520fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
18530fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
18540fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   <strong>Note:</strong> Cannot be called from an
18550fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   {@link android.accessibilityservice.AccessibilityService}.
18560fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   This class is made immutable before being delivered to an AccessibilityService.
18570fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
18580fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
18590fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @param viewId The id resource name.
18600fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
18610fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public void setViewIdResourceName(CharSequence viewId) {
18620fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        IMPL.setViewIdResourceName(mInfo, viewId);
18630fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
18640fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
18650fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
18660fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Gets the fully qualified resource name of the source view's id.
18670fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
18680fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
18690fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   <strong>Note:</strong> The primary usage of this API is for UI test automation
18700fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   and in order to report the source view id of an {@link AccessibilityNodeInfoCompat}
18710fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   the client has to set the {@link AccessibilityServiceInfoCompat#FLAG_REPORT_VIEW_IDS}
18720fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   flag when configuring his {@link android.accessibilityservice.AccessibilityService}.
18730fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
18740fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
18750fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @return The id resource name.
18760fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
18770fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public CharSequence getViewIdResourceName() {
18780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        return IMPL.getViewIdResourceName(mInfo);
18790fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
18800fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
18819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    @Override
18829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int hashCode() {
18839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return (mInfo == null) ? 0 : mInfo.hashCode();
18849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    @Override
18879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean equals(Object obj) {
18889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (this == obj) {
18899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return true;
18909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
18919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (obj == null) {
18929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
18939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
18949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (getClass() != obj.getClass()) {
18959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
18969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
18979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        AccessibilityNodeInfoCompat other = (AccessibilityNodeInfoCompat) obj;
18989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (mInfo == null) {
18999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            if (other.mInfo != null) {
19009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov                return false;
19019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            }
19029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        } else if (!mInfo.equals(other.mInfo)) {
19039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
19049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
19059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return true;
19069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    @Override
19090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public String toString() {
19100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        StringBuilder builder = new StringBuilder();
19110fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append(super.toString());
19120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        Rect bounds = new Rect();
19140fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19150fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        getBoundsInParent(bounds);
19160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; boundsInParent: " + bounds);
19170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        getBoundsInScreen(bounds);
19190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; boundsInScreen: " + bounds);
19200fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; packageName: ").append(getPackageName());
19220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; className: ").append(getClassName());
19230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; text: ").append(getText());
19240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; contentDescription: ").append(getContentDescription());
19250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; viewId: ").append(getViewIdResourceName());
19260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; checkable: ").append(isCheckable());
19280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; checked: ").append(isChecked());
19290fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; focusable: ").append(isFocusable());
19300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; focused: ").append(isFocused());
19310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; selected: ").append(isSelected());
19320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; clickable: ").append(isClickable());
19330fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; longClickable: ").append(isLongClickable());
19340fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; enabled: ").append(isEnabled());
19350fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; password: ").append(isPassword());
19360fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; scrollable: " + isScrollable());
19370fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19380fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; [");
19390fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        for (int actionBits = getActions(); actionBits != 0;) {
19400fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            final int action = 1 << Integer.numberOfTrailingZeros(actionBits);
19410fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            actionBits &= ~action;
19420fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            builder.append(getActionSymbolicName(action));
19430fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            if (actionBits != 0) {
19440fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                builder.append(", ");
19450fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            }
19460fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
19470fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("]");
19480fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19490fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        return builder.toString();
19500fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
19510fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19520fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    private static String getActionSymbolicName(int action) {
19530fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        switch (action) {
19540fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_FOCUS:
19550fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_FOCUS";
19560fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_FOCUS:
19570fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_FOCUS";
19580fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SELECT:
19590fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SELECT";
19600fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_SELECTION:
19610fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_SELECTION";
19620fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLICK:
19630fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLICK";
19640fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_LONG_CLICK:
19650fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_LONG_CLICK";
19660fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_ACCESSIBILITY_FOCUS:
19670fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_ACCESSIBILITY_FOCUS";
19680fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_ACCESSIBILITY_FOCUS:
19690fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_ACCESSIBILITY_FOCUS";
19700fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
19710fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_NEXT_AT_MOVEMENT_GRANULARITY";
19720fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY:
19730fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY";
19740fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_NEXT_HTML_ELEMENT:
19750fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_NEXT_HTML_ELEMENT";
19760fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PREVIOUS_HTML_ELEMENT:
19770fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PREVIOUS_HTML_ELEMENT";
19780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SCROLL_FORWARD:
19790fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SCROLL_FORWARD";
19800fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SCROLL_BACKWARD:
19810fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SCROLL_BACKWARD";
19820fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CUT:
19830fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CUT";
19840fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_COPY:
19850fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_COPY";
19860fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PASTE:
19870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PASTE";
19880fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SET_SELECTION:
19890fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SET_SELECTION";
19900fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            default:
19910fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return"ACTION_UNKNOWN";
19920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
19930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
19949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov}
1995