19648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/*
29648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Copyright (C) 2011 The Android Open Source Project
39648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov *
49648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License");
59648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * you may not use this file except in compliance with the License.
69648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * You may obtain a copy of the License at
79648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov *
89648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov *      http://www.apache.org/licenses/LICENSE-2.0
99648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov *
109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Unless required by applicable law or agreed to in writing, software
119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS,
129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * See the License for the specific language governing permissions and
149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * limitations under the License.
159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */
169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpackage android.support.v4.view.accessibility;
189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.graphics.Rect;
209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.os.Build;
2170e96ebf69f91da84681a6263b3862c63d53ab11alanvimport android.os.Bundle;
220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslavimport android.support.v4.accessibilityservice.AccessibilityServiceInfoCompat;
23086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viveretteimport android.support.v4.view.ViewCompat;
249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.view.View;
25086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viveretteimport android.view.accessibility.AccessibilityEvent;
269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport java.util.ArrayList;
28f9c2277244722eca88c784b9cfdcc78df7f94781Svetoslav Ganovimport java.util.Collections;
299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport java.util.List;
309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/**
320574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing {@link android.view.accessibility.AccessibilityNodeInfo}
330574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * introduced after API level 4 in a backwards compatible fashion.
349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */
359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpublic class AccessibilityNodeInfoCompat {
369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static interface AccessibilityNodeInfoImpl {
389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain();
399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source);
409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info);
4170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId);
429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source);
433a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId);
4470e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus);
4570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction);
469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info);
479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info);
4870e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index);
499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child);
503a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId);
519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info);
529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action);
539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action);
5470e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments);
5570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities);
5670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info);
579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text);
5870e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info);
5970e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId);
609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent);
619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds);
629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds);
639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds);
649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds);
659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info);
669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable);
679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info);
689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked);
699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info);
709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable);
719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info);
729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused);
7370e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info);
7470e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser);
7570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info);
7670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused);
779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info);
789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected);
799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info);
809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable);
819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info);
829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable);
839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info);
849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled);
859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info);
869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password);
879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info);
889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable);
899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info);
909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName);
919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info);
929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className);
939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info);
949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text);
959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info);
969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription);
979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info);
98071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public String getViewIdResourceName(Object info);
99071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public void setViewIdResourceName(Object info, String viewId);
100086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public int getLiveRegion(Object info);
101086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public void setLiveRegion(Object info, int mode);
1029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
1039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static class AccessibilityNodeInfoStubImpl implements AccessibilityNodeInfoImpl {
10570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain() {
1079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source) {
1129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
11670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId) {
11770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
11870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
11970e96ebf69f91da84681a6263b3862c63d53ab11alanv
12070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info) {
1229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action) {
1279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child) {
1329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1363a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId) {
1373a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
1383a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
1393a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
14070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text) {
142f9c2277244722eca88c784b9cfdcc78df7f94781Svetoslav Ganov            return Collections.emptyList();
1439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info) {
1479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
1489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds) {
1529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds) {
1579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
1589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
16170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index) {
1629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info) {
1679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
1689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info) {
1729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info) {
1779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info) {
1829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
18670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info) {
1879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info) {
1929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return null;
1939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
1969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info) {
1979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return 0;
1989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
1999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info) {
2029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
20570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info) {
2079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
21070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info) {
2129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
21570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info) {
2179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info) {
2229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
22570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info) {
2279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
23070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
23170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info) {
23270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
23370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
23470e96ebf69f91da84681a6263b3862c63d53ab11alanv
23570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
23670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info) {
23770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
23870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
23970e96ebf69f91da84681a6263b3862c63d53ab11alanv
24070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info) {
2429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
24570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info) {
2479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
25070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info) {
2529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
25570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info) {
2579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
26070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action) {
2629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
2639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
26570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
26670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments) {
26770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return false;
26870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
26970e96ebf69f91da84681a6263b3862c63d53ab11alanv
27070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
27170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities) {
27270e96ebf69f91da84681a6263b3862c63d53ab11alanv
27370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
27470e96ebf69f91da84681a6263b3862c63d53ab11alanv
27570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
27670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info) {
27770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return 0;
27870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
27970e96ebf69f91da84681a6263b3862c63d53ab11alanv
28070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds) {
2829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
28570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds) {
2879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
29070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable) {
2929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
29570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
2969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked) {
2979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
2989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
2999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
30070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className) {
3029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
30570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable) {
3079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
31070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription) {
3129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
31570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled) {
3179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
32070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable) {
3229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
32570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused) {
3279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
33070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
33170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser) {
33270e96ebf69f91da84681a6263b3862c63d53ab11alanv
33370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
33470e96ebf69f91da84681a6263b3862c63d53ab11alanv
33570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
33670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused) {
33770e96ebf69f91da84681a6263b3862c63d53ab11alanv
33870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
33970e96ebf69f91da84681a6263b3862c63d53ab11alanv
34070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable) {
3429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
34570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName) {
3479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
35070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent) {
3529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
35570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password) {
3579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
36070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable) {
3629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
36570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected) {
3679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
37070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source) {
3729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
37570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3763a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId) {
3773a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
3783a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
3793a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
38070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
38170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus) {
38270e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
38370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
38470e96ebf69f91da84681a6263b3862c63d53ab11alanv
38570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
38670e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction) {
38770e96ebf69f91da84681a6263b3862c63d53ab11alanv            return null;
38870e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
38970e96ebf69f91da84681a6263b3862c63d53ab11alanv
39070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text) {
3929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
3949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
39570e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
3969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info) {
3979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
3989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
39970e96ebf69f91da84681a6263b3862c63d53ab11alanv
40070e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
40170e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId) {
40270e96ebf69f91da84681a6263b3862c63d53ab11alanv
40370e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
4040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
4050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
406071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public String getViewIdResourceName(Object info) {
4070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            return null;
4080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
4090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
4100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
411071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public void setViewIdResourceName(Object info, String viewId) {
4120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
4130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
414086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
415086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
416086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public int getLiveRegion(Object info) {
417086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            return ViewCompat.ACCESSIBILITY_LIVE_REGION_NONE;
418086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
419086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
420086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
421086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public void setLiveRegion(Object info, int mode) {
422086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            // No-op
423086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
4249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
4259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static class AccessibilityNodeInfoIcsImpl extends AccessibilityNodeInfoStubImpl {
4279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain() {
4299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain();
4309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(View source) {
4349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain(source);
4359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public Object obtain(Object info) {
4399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.obtain(info);
4409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addAction(Object info, int action) {
4449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.addAction(info, action);
4459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void addChild(Object info, View child) {
4499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.addChild(info, child);
4509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public List<Object> findAccessibilityNodeInfosByText(Object info, String text) {
4549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.findAccessibilityNodeInfosByText(info, text);
4559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getActions(Object info) {
4599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getActions(info);
4609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInParent(Object info, Rect outBounds) {
4649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.getBoundsInParent(info, outBounds);
4659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void getBoundsInScreen(Object info, Rect outBounds) {
4699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.getBoundsInScreen(info, outBounds);
4709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
47370e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getChild(Object info, int index) {
47470e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatIcs.getChild(info, index);
4759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getChildCount(Object info) {
4799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getChildCount(info);
4809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getClassName(Object info) {
4849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getClassName(info);
4859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getContentDescription(Object info) {
4899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getContentDescription(info);
4909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
4939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getPackageName(Object info) {
4949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getPackageName(info);
4959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
4969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
4979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
49870e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object getParent(Object info) {
49970e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatIcs.getParent(info);
5009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public CharSequence getText(Object info) {
5049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getText(info);
5059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public int getWindowId(Object info) {
5099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.getWindowId(info);
5109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isCheckable(Object info) {
5149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isCheckable(info);
5159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isChecked(Object info) {
5199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isChecked(info);
5209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isClickable(Object info) {
5249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isClickable(info);
5259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isEnabled(Object info) {
5299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isEnabled(info);
5309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocusable(Object info) {
5349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isFocusable(info);
5359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isFocused(Object info) {
5399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isFocused(info);
5409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isLongClickable(Object info) {
5449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isLongClickable(info);
5459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isPassword(Object info) {
5499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isPassword(info);
5509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isScrollable(Object info) {
5549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isScrollable(info);
5559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean isSelected(Object info) {
5599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.isSelected(info);
5609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public boolean performAction(Object info, int action) {
5649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return AccessibilityNodeInfoCompatIcs.performAction(info, action);
5659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInParent(Object info, Rect bounds) {
5699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setBoundsInParent(info, bounds);
5709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setBoundsInScreen(Object info, Rect bounds) {
5749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setBoundsInScreen(info, bounds);
5759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setCheckable(Object info, boolean checkable) {
5799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setCheckable(info, checkable);
5809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setChecked(Object info, boolean checked) {
5849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setChecked(info, checked);
5859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClassName(Object info, CharSequence className) {
5899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setClassName(info, className);
5909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setClickable(Object info, boolean clickable) {
5949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setClickable(info, clickable);
5959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
5969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
5979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
5989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setContentDescription(Object info, CharSequence contentDescription) {
5999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setContentDescription(info, contentDescription);
6009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setEnabled(Object info, boolean enabled) {
6049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setEnabled(info, enabled);
6059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocusable(Object info, boolean focusable) {
6099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setFocusable(info, focusable);
6109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setFocused(Object info, boolean focused) {
6149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setFocused(info, focused);
6159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setLongClickable(Object info, boolean longClickable) {
6199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setLongClickable(info, longClickable);
6209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPackageName(Object info, CharSequence packageName) {
6249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setPackageName(info, packageName);
6259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setParent(Object info, View parent) {
6299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setParent(info, parent);
6309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setPassword(Object info, boolean password) {
6349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setPassword(info, password);
6359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setScrollable(Object info, boolean scrollable) {
6399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setScrollable(info, scrollable);
6409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSelected(Object info, boolean selected) {
6449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setSelected(info, selected);
6459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setSource(Object info, View source) {
6499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setSource(info, source);
6509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void setText(Object info, CharSequence text) {
6549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.setText(info, text);
6559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        @Override
6589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        public void recycle(Object info) {
6599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            AccessibilityNodeInfoCompatIcs.recycle(info);
6609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
6619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
6629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
6633a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    static class AccessibilityNodeInfoJellybeanImpl extends AccessibilityNodeInfoIcsImpl {
6643a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        @Override
66570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object obtain(View root, int virtualDescendantId) {
66670e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.obtain(root, virtualDescendantId);
66770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
66870e96ebf69f91da84681a6263b3862c63d53ab11alanv
66970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
67070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object findFocus(Object info, int focus) {
67170e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.findFocus(info, focus);
67270e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
67370e96ebf69f91da84681a6263b3862c63d53ab11alanv
67470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
67570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public Object focusSearch(Object info, int direction) {
67670e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.focusSearch(info, direction);
67770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
67870e96ebf69f91da84681a6263b3862c63d53ab11alanv
67970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
6803a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void addChild(Object info, View child, int virtualDescendantId) {
6813a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            AccessibilityNodeInfoCompatJellyBean.addChild(info, child, virtualDescendantId);
6823a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
6833a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
6843a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        @Override
6853a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        public void setSource(Object info, View root, int virtualDescendantId) {
6863a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            AccessibilityNodeInfoCompatJellyBean.setSource(info, root, virtualDescendantId);
6873a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        }
68870e96ebf69f91da84681a6263b3862c63d53ab11alanv
68970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
69070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isVisibleToUser(Object info) {
69170e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.isVisibleToUser(info);
69270e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
69370e96ebf69f91da84681a6263b3862c63d53ab11alanv
69470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
69570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setVisibleToUser(Object info, boolean visibleToUser) {
69670e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setVisibleToUser(info, visibleToUser);
69770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
69870e96ebf69f91da84681a6263b3862c63d53ab11alanv
69970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
70070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean isAccessibilityFocused(Object info) {
70170e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.isAccessibilityFocused(info);
70270e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
70370e96ebf69f91da84681a6263b3862c63d53ab11alanv
70470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
70570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setAccessibilityFocused(Object info, boolean focused) {
70670e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setAccesibilityFocused(info, focused);
70770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
70870e96ebf69f91da84681a6263b3862c63d53ab11alanv
70970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
71070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public boolean performAction(Object info, int action, Bundle arguments) {
71170e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.performAction(info, action, arguments);
71270e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
71370e96ebf69f91da84681a6263b3862c63d53ab11alanv
71470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
71570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setMovementGranularities(Object info, int granularities) {
71670e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setMovementGranularities(info, granularities);
71770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
71870e96ebf69f91da84681a6263b3862c63d53ab11alanv
71970e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
72070e96ebf69f91da84681a6263b3862c63d53ab11alanv        public int getMovementGranularities(Object info) {
72170e96ebf69f91da84681a6263b3862c63d53ab11alanv            return AccessibilityNodeInfoCompatJellyBean.getMovementGranularities(info);
72270e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
72370e96ebf69f91da84681a6263b3862c63d53ab11alanv
72470e96ebf69f91da84681a6263b3862c63d53ab11alanv        @Override
72570e96ebf69f91da84681a6263b3862c63d53ab11alanv        public void setParent(Object info, View root, int virtualDescendantId) {
72670e96ebf69f91da84681a6263b3862c63d53ab11alanv            AccessibilityNodeInfoCompatJellyBean.setParent(info, root, virtualDescendantId);
72770e96ebf69f91da84681a6263b3862c63d53ab11alanv        }
7283a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
7293a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
7300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    static class AccessibilityNodeInfoJellybeanMr2Impl extends AccessibilityNodeInfoJellybeanImpl {
7310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
7320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
733071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public String getViewIdResourceName(Object info) {
7340fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            return AccessibilityNodeInfoCompatJellybeanMr2.getViewIdResourceName(info);
7350fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
7360fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
7370fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        @Override
738071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav        public void setViewIdResourceName(Object info, String viewId) {
7390fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            AccessibilityNodeInfoCompatJellybeanMr2.setViewIdResourceName(info, viewId);
7400fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
7410fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
7420fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
743086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    static class AccessibilityNodeInfoKitKatImpl extends AccessibilityNodeInfoJellybeanMr2Impl {
744086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
745086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public int getLiveRegion(Object info) {
746086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            return AccessibilityNodeInfoCompatKitKat.getLiveRegion(info);
747086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
748086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
749086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        @Override
750086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        public void setLiveRegion(Object info, int mode) {
751086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            AccessibilityNodeInfoCompatKitKat.setLiveRegion(info, mode);
752086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        }
753086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
754086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
7559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    static {
756086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        if (Build.VERSION.SDK_INT >= 19) { // KitKat
757086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette            IMPL = new AccessibilityNodeInfoKitKatImpl();
758086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        } else if (Build.VERSION.SDK_INT >= 18) { // JellyBean MR2
7590fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            IMPL = new AccessibilityNodeInfoJellybeanMr2Impl();
7600fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        } else if (Build.VERSION.SDK_INT >= 16) { // JellyBean
7613a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov            IMPL = new AccessibilityNodeInfoJellybeanImpl();
7623a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        } else if (Build.VERSION.SDK_INT >= 14) { // ICS
7639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            IMPL = new AccessibilityNodeInfoIcsImpl();
7649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        } else {
7659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            IMPL = new AccessibilityNodeInfoStubImpl();
7669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
7679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
7689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    private static final AccessibilityNodeInfoImpl IMPL;
7709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    private final Object mInfo;
7729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7730fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in IceCreamSandwich
7749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
7769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that focuses the node.
7779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
7789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_FOCUS = 0x00000001;
7799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
7819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that unfocuses the node.
7829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
7839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_CLEAR_FOCUS = 0x00000002;
7849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
7869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that selects the node.
7879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
7889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_SELECT = 0x00000004;
7899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
7909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
7919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Action that unselects the node.
7929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
7939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static final int ACTION_CLEAR_SELECTION = 0x00000008;
7949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
795c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    /**
79670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that clicks on the node info.
79770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
79870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_CLICK = 0x00000010;
79970e96ebf69f91da84681a6263b3862c63d53ab11alanv
80070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
80170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that long clicks on the node.
80270e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
80370e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_LONG_CLICK = 0x00000020;
80470e96ebf69f91da84681a6263b3862c63d53ab11alanv
8050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in JellyBean
8060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
80770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
80870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that gives accessibility focus to the node.
80970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
81070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_ACCESSIBILITY_FOCUS = 0x00000040;
81170e96ebf69f91da84681a6263b3862c63d53ab11alanv
81270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
81370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that clears accessibility focus of the node.
81470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
81570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 0x00000080;
81670e96ebf69f91da84681a6263b3862c63d53ab11alanv
81770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
81870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that requests to go to the next entity in this node's text
81970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * at a given movement granularity. For example, move to the next character,
82070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * word, etc.
82170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
8220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT}<,
8230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN}<br>
8240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong> Move to the previous character and do not extend selection.
82570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
82670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
82770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
82870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER);
8290fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
8300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *           false);
83170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY, arguments);
83270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
83370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
83470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
8350fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT
8360fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN
8370fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
83870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setMovementGranularities(int)
83970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #getMovementGranularities()
84070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
84170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_CHARACTER
84270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_WORD
84370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_LINE
84470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PARAGRAPH
84570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PAGE
84670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
84770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 0x00000100;
84870e96ebf69f91da84681a6263b3862c63d53ab11alanv
84970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
85070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action that requests to go to the previous entity in this node's text
85170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * at a given movement granularity. For example, move to the next character,
85270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * word, etc.
85370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
8540fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT}<,
8550fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN}<br>
8560fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong> Move to the next character and do not extend selection.
85770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
85870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
85970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT,
86070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER);
8610fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putBoolean(AccessibilityNodeInfo.ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN,
8620fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *           false);
86370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY,
86470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *           arguments);
86570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
86670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
86770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
8680fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT
8690fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN
8700fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
87170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setMovementGranularities(int)
87270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #getMovementGranularities()
87370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
87470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_CHARACTER
87570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_WORD
87670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_LINE
87770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PARAGRAPH
87870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #MOVEMENT_GRANULARITY_PAGE
87970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
88070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 0x00000200;
88170e96ebf69f91da84681a6263b3862c63d53ab11alanv
88270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
88370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to move to the next HTML element of a given type. For example, move
88470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * to the BUTTON, INPUT, TABLE, etc.
88570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
88670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_HTML_ELEMENT_STRING}<br>
88770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Example:</strong>
88870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
88970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
89070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING, "BUTTON");
89170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_NEXT_HTML_ELEMENT, arguments);
89270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
89370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
89470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
89570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_NEXT_HTML_ELEMENT = 0x00000400;
89670e96ebf69f91da84681a6263b3862c63d53ab11alanv
89770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
89870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to move to the previous HTML element of a given type. For example, move
89970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * to the BUTTON, INPUT, TABLE, etc.
90070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
90170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_HTML_ELEMENT_STRING}<br>
90270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Example:</strong>
90370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <code><pre><p>
90470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   Bundle arguments = new Bundle();
90570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   arguments.putString(AccessibilityNodeInfo.ACTION_ARGUMENT_HTML_ELEMENT_STRING, "BUTTON");
90670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   info.performAction(AccessibilityNodeInfo.ACTION_PREVIOUS_HTML_ELEMENT, arguments);
90770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </code></pre></p>
90870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
90970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
91070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_PREVIOUS_HTML_ELEMENT = 0x00000800;
91170e96ebf69f91da84681a6263b3862c63d53ab11alanv
91270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
91370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to scroll the node content forward.
91470e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
91570e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_SCROLL_FORWARD = 0x00001000;
91670e96ebf69f91da84681a6263b3862c63d53ab11alanv
91770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
91870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Action to scroll the node content backward.
91970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
92070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int ACTION_SCROLL_BACKWARD = 0x00002000;
92170e96ebf69f91da84681a6263b3862c63d53ab11alanv
9220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Actions introduced in JellyBeanMr2
9230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
9250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to copy the current selection to the clipboard.
9260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_COPY = 0x00004000;
9280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9290fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
9300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to paste the current clipboard content.
9310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_PASTE = 0x00008000;
9330fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9340fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
9350fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to cut the current selection and place it to the clipboard.
9360fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9370fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_CUT = 0x00010000;
9380fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9390fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
9400fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Action to set the selection. Performing this action with no arguments
9410fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * clears the selection.
9420fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
9430fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Arguments:</strong> {@link #ACTION_ARGUMENT_SELECTION_START_INT},
9440fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_ARGUMENT_SELECTION_END_INT}<br>
9450fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Example:</strong>
9460fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <code><pre><p>
9470fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   Bundle arguments = new Bundle();
9480fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_START_INT, 1);
9490fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   arguments.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_SELECTION_END_INT, 2);
9500fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   info.performAction(AccessibilityNodeInfo.ACTION_SET_SELECTION, arguments);
9510fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </code></pre></p>
9520fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
9530fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
9540fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_SELECTION_START_INT
9550fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_ARGUMENT_SELECTION_END_INT
9560fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9570fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final int ACTION_SET_SELECTION = 0x00020000;
9580fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9590fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Action arguments
9600fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
96170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
96270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Argument for which movement granularity to be used when traversing the node text.
96370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
96470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Type:</strong> int<br>
96570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Actions:</strong> {@link #ACTION_NEXT_AT_MOVEMENT_GRANULARITY},
96670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * {@link #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY}
96770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
96870e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
96970e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT =
97070e96ebf69f91da84681a6263b3862c63d53ab11alanv        "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
97170e96ebf69f91da84681a6263b3862c63d53ab11alanv
97270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
97370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Argument for which HTML element to get moving to the next/previous HTML element.
97470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
97570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Type:</strong> String<br>
97670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <strong>Actions:</strong> {@link #ACTION_NEXT_HTML_ELEMENT},
97770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *         {@link #ACTION_PREVIOUS_HTML_ELEMENT}
97870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
97970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
98070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING =
98170e96ebf69f91da84681a6263b3862c63d53ab11alanv        "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
98270e96ebf69f91da84681a6263b3862c63d53ab11alanv
98370e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
9840fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for whether when moving at granularity to extend the selection
9850fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * or to move it otherwise.
9860fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
9870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> boolean<br>
9880fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_NEXT_AT_MOVEMENT_GRANULARITY},
9890fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * {@link #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY}
9900fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
9910fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
9920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_NEXT_AT_MOVEMENT_GRANULARITY
9930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY
9940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
9950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN =
9960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
9970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
9980fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
9990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for specifying the selection start.
10000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
10010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> int<br>
10020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_SET_SELECTION}
10030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
10040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
10050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_SET_SELECTION
10060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
10070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_SELECTION_START_INT =
10080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_SELECTION_START_INT";
10090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
10100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
10110fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Argument for specifying the selection end.
10120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
10130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Type:</strong> int<br>
10140fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <strong>Actions:</strong> {@link #ACTION_SET_SELECTION}
10150fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
10160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
10170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @see #ACTION_SET_SELECTION
10180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
10190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public static final String ACTION_ARGUMENT_SELECTION_END_INT =
10200fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            "ACTION_ARGUMENT_SELECTION_END_INT";
10210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
10220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    // Focus types
10230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
10240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
102570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * The input focus.
102670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
102770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int FOCUS_INPUT = 1;
102870e96ebf69f91da84681a6263b3862c63d53ab11alanv
102970e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
103070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * The accessibility focus.
103170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
103270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int FOCUS_ACCESSIBILITY = 2;
103370e96ebf69f91da84681a6263b3862c63d53ab11alanv
103470e96ebf69f91da84681a6263b3862c63d53ab11alanv    // Movement granularities
103570e96ebf69f91da84681a6263b3862c63d53ab11alanv
103670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
103770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by character.
103870e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
103970e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_CHARACTER = 0x00000001;
104070e96ebf69f91da84681a6263b3862c63d53ab11alanv
104170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
104270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by word.
104370e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
104470e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_WORD = 0x00000002;
104570e96ebf69f91da84681a6263b3862c63d53ab11alanv
104670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
104770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by line.
104870e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
104970e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_LINE = 0x00000004;
105070e96ebf69f91da84681a6263b3862c63d53ab11alanv
105170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
105270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by paragraph.
105370e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
105470e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 0x00000008;
105570e96ebf69f91da84681a6263b3862c63d53ab11alanv
105670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
105770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Movement granularity bit for traversing the text of a node by page.
105870e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
105970e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static final int MOVEMENT_GRANULARITY_PAGE = 0x00000010;
106070e96ebf69f91da84681a6263b3862c63d53ab11alanv
106170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
1062c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * Creates a wrapper for info implementation.
1063c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     *
1064c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * @param object The info to wrap.
1065c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     * @return A wrapper for if the object is not null, null otherwise.
1066c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov     */
1067c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    static AccessibilityNodeInfoCompat wrapNonNullInstance(Object object) {
1068c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        if (object != null) {
1069c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov            return new AccessibilityNodeInfoCompat(object);
1070c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        }
1071c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov        return null;
1072c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov    }
1073c64858f808c159a8b144d22e3168459074cdc181Svetoslav Ganov
1074956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    /**
1075956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * Creates a new instance wrapping an
1076956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * {@link android.view.accessibility.AccessibilityNodeInfo}.
1077956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     *
1078956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * @param info The info.
10799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
10809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat(Object info) {
10819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        mInfo = info;
10829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
10839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
10849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
1085956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov     * @return The wrapped {@link android.view.accessibility.AccessibilityNodeInfo}.
10869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
1087956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    public Object getInfo() {
10889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return mInfo;
10899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
10909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
10919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
10929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available otherwise a new one and
10939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * sets the source.
10949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
10959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
10969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see #setSource(View)
10979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
10989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain(View source) {
109970e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain(source));
110070e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
110170e96ebf69f91da84681a6263b3862c63d53ab11alanv
110270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
110370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Returns a cached instance if such is available otherwise a new one
110470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * and sets the source.
110570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
110670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param root The root of the virtual subtree.
110770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param virtualDescendantId The id of the virtual descendant.
110870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return An instance.
110970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
111070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #setSource(View, int)
111170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
111270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public static AccessibilityNodeInfoCompat obtain(View root, int virtualDescendantId) {
111370e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(
111470e96ebf69f91da84681a6263b3862c63d53ab11alanv                IMPL.obtain(root, virtualDescendantId));
11159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
11169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
11189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available otherwise a new one.
11199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
11209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
11219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
11229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain() {
112370e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain());
11249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
11259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
11279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Returns a cached instance if such is available or a new one is create.
11289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * The returned instance is initialized from the given <code>info</code>.
11299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
11309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param info The other info.
11319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return An instance.
11329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
11339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public static AccessibilityNodeInfoCompat obtain(AccessibilityNodeInfoCompat info) {
113470e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.obtain(info.mInfo));
11359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
11369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
11389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the source.
11399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
11409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param source The info source.
11419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
11429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setSource(View source) {
11439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setSource(mInfo, source);
11449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
11459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
11469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
11473a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * Sets the source to be a virtual descendant of the given <code>root</code>.
11483a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * If <code>virtualDescendantId</code> is {@link View#NO_ID} the root
11493a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * is set as the source.
11503a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
11513a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * A virtual descendant is an imaginary View that is reported as a part of the view
11523a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * hierarchy for accessibility purposes. This enables custom views that draw complex
11533a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * content to report themselves as a tree of virtual views, thus conveying their
11543a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * logical structure.
11553a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
11563a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
11573a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   <strong>Note:</strong> Cannot be called from an
11583a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   {@link android.accessibilityservice.AccessibilityService}.
11593a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *   This class is made immutable before being delivered to an AccessibilityService.
11603a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
11613a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *
11623a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param root The root of the virtual subtree.
11633a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param virtualDescendantId The id of the virtual descendant.
11643a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     */
11653a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    public void setSource(View root, int virtualDescendantId) {
11663a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.setSource(mInfo, root, virtualDescendantId);
11673a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
11683a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
11693a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    /**
117070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Find the view that has the specified focus type. The search starts from
117170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * the view represented by this node info.
117270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
117370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param focus The focus to find. One of {@link #FOCUS_INPUT} or
117470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *         {@link #FOCUS_ACCESSIBILITY}.
117570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The node info of the focused view or null.
117670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
117770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #FOCUS_INPUT
117870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @see #FOCUS_ACCESSIBILITY
117970e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
118070e96ebf69f91da84681a6263b3862c63d53ab11alanv    public AccessibilityNodeInfoCompat findFocus(int focus) {
118170e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.findFocus(mInfo, focus));
118270e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
118370e96ebf69f91da84681a6263b3862c63d53ab11alanv
118470e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
118570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Searches for the nearest view in the specified direction that can take
118676ca3a4abf437c04003bacff72491409f8898a18Svetoslav Ganov     * input focus.
118770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
118870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param direction The direction. Can be one of:
118970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_DOWN},
119070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_UP},
119170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_LEFT},
119270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_RIGHT},
119370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *     {@link View#FOCUS_FORWARD},
119476ca3a4abf437c04003bacff72491409f8898a18Svetoslav Ganov     *     {@link View#FOCUS_BACKWARD}.
119570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
119670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The node info for the view that can take accessibility focus.
119770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
119870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public AccessibilityNodeInfoCompat focusSearch(int direction) {
119970e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.focusSearch(mInfo, direction));
120070e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
120170e96ebf69f91da84681a6263b3862c63d53ab11alanv
120270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
12039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the id of the window from which the info comes from.
12049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The window id.
12069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getWindowId() {
12089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getWindowId(mInfo);
12099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the number of children.
12139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The child count.
12159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getChildCount() {
12179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getChildCount(mInfo);
12189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Get the child at given index.
12229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
12239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
12249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link AccessibilityNodeInfoCompat#recycle()} to
12259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * avoid creating of multiple instances.
12269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
12279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param index The child index.
12299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The child node.
12309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called outside of an
12319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *             AccessibilityService.
12329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat getChild(int index) {
123470e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.getChild(mInfo, index));
12359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Adds a child.
12399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
12409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
12419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
12429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
12439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
12449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param child The child.
12469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
12479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void addChild(View child) {
12499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.addChild(mInfo, child);
12509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12533a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * Adds a virtual child which is a descendant of the given <code>root</code>.
12543a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * If <code>virtualDescendantId</code> is {@link View#NO_ID} the root
12553a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * is added as a child.
12563a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * <p>
12573a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * A virtual descendant is an imaginary View that is reported as a part of the view
12583a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * hierarchy for accessibility purposes. This enables custom views that draw complex
12593a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * content to report them selves as a tree of virtual views, thus conveying their
12603a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * logical structure.
12613a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * </p>
12623a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     *
12633a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param root The root of the virtual subtree.
12643a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     * @param virtualDescendantId The id of the virtual child.
12653a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov     */
12663a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    public void addChild(View root, int virtualDescendantId) {
12673a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.addChild(mInfo, root, virtualDescendantId);
12683a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    }
12693a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov
12703a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov    /**
12719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the actions that can be performed on the node.
12729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The bit mask of with actions.
12749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_FOCUS
12759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_CLEAR_FOCUS
12769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_SELECT
12779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @see android.view.accessibility.AccessibilityNodeInfo#ACTION_CLEAR_SELECTION
12789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int getActions() {
12809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getActions(mInfo);
12819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Adds an action that can be performed on the node.
12859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
12869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
12879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
12889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
12899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
12909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
12919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param action The action.
12929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
12939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
12949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void addAction(int action) {
12959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.addAction(mInfo, action);
12969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
12979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
12989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
12999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Performs an action on the node.
13009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
13019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> An action can be performed only if the request is
13029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made from an {@link android.accessibilityservice.AccessibilityService}.
13039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
13049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
13059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param action The action to perform.
13069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the action was performed.
13079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called outside of an
13089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *             AccessibilityService.
13099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
13109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean performAction(int action) {
13119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.performAction(mInfo, action);
13129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
13139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
131570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Performs an action on the node.
131670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
131770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> An action can be performed only if the request is made
131870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   from an {@link android.accessibilityservice.AccessibilityService}.
131970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
132070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
132170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param action The action to perform.
132270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param arguments A bundle with additional arguments.
132370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return True if the action was performed.
132470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
132570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called outside of an AccessibilityService.
132670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
132770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean performAction(int action, Bundle arguments) {
132870e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.performAction(mInfo, action, arguments);
132970e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
133070e96ebf69f91da84681a6263b3862c63d53ab11alanv
133170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
133270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets the movement granularities for traversing the text of this node.
133370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
133470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
133570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
133670e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
133770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
133870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
133970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param granularities The bit mask with granularities.
134070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
134170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
134270e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
134370e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setMovementGranularities(int granularities) {
134470e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setMovementGranularities(mInfo, granularities);
134570e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
134670e96ebf69f91da84681a6263b3862c63d53ab11alanv
134770e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
134870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Gets the movement granularities for traversing the text of this node.
134970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
135070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return The bit mask with granularities.
135170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
135270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public int getMovementGranularities() {
135370e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.getMovementGranularities(mInfo);
135470e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
135570e96ebf69f91da84681a6263b3862c63d53ab11alanv
135670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
13579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Finds {@link android.view.accessibility.AccessibilityNodeInfo}s by text. The match
13589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * is case insensitive containment. The search is relative to this info i.e. this
13599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * info is the root of the traversed tree.
13609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
13619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
13629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link android.view.accessibility.AccessibilityNodeInfo#recycle()}
13639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * to avoid creating of multiple instances.
13649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
13659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
13669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param text The searched text.
13679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return A list of node info.
13689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
13699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public List<AccessibilityNodeInfoCompat> findAccessibilityNodeInfosByText(String text) {
13709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        List<AccessibilityNodeInfoCompat> result = new ArrayList<AccessibilityNodeInfoCompat>();
13719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        List<Object> infos = IMPL.findAccessibilityNodeInfosByText(mInfo, text);
13729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        final int infoCount = infos.size();
13739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        for (int i = 0; i < infoCount; i++) {
13749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            Object info = infos.get(i);
13759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            result.add(new AccessibilityNodeInfoCompat(info));
13769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
13779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return result;
13789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
13799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
13819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the parent.
13829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
13839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> It is a client responsibility to recycle the
13849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * received info by calling {@link android.view.accessibility.AccessibilityNodeInfo#recycle()}
13859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * to avoid creating of multiple instances.
13869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
13879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
13889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The parent.
13899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
13909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public AccessibilityNodeInfoCompat getParent() {
139170e96ebf69f91da84681a6263b3862c63d53ab11alanv        return AccessibilityNodeInfoCompat.wrapNonNullInstance(IMPL.getParent(mInfo));
13929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
13939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
13949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
13959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the parent.
13969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
13979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
13989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
13999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
14009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param parent The parent.
14039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
14049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setParent(View parent) {
14069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setParent(mInfo, parent);
14079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
141070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets the parent to be a virtual descendant of the given <code>root</code>.
141170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * If <code>virtualDescendantId</code> equals to {@link View#NO_ID} the root
141270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * is set as the parent.
141370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
141470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * A virtual descendant is an imaginary View that is reported as a part of the view
141570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * hierarchy for accessibility purposes. This enables custom views that draw complex
141670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * content to report them selves as a tree of virtual views, thus conveying their
141770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * logical structure.
141870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
141970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
142070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
142170e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
142270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
142370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
142470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
142570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param root The root of the virtual subtree.
142670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param virtualDescendantId The id of the virtual descendant.
142770e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
142870e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setParent(View root, int virtualDescendantId) {
142970e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setParent(mInfo, root, virtualDescendantId);
143070e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
143170e96ebf69f91da84681a6263b3862c63d53ab11alanv
143270e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
14339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the node bounds in parent coordinates.
14349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param outBounds The output node bounds.
14369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void getBoundsInParent(Rect outBounds) {
14389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.getBoundsInParent(mInfo, outBounds);
14399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the node bounds in parent coordinates.
14439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
14459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
14469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
14479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param bounds The node bounds.
14509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *@throws IllegalStateException If called from an AccessibilityService.
14519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setBoundsInParent(Rect bounds) {
14539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setBoundsInParent(mInfo, bounds);
14549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the node bounds in screen coordinates.
14589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param outBounds The output node bounds.
14609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void getBoundsInScreen(Rect outBounds) {
14629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.getBoundsInScreen(mInfo, outBounds);
14639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the node bounds in screen coordinates.
14679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
14699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
14709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
14719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param bounds The node bounds.
14749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
14759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setBoundsInScreen(Rect bounds) {
14773a137cd495b313a047b5e800d02a925dea707fa0Svetoslav Ganov        IMPL.setBoundsInScreen(mInfo, bounds);
14789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is checkable.
14829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is checkable.
14849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
14859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isCheckable() {
14869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isCheckable(mInfo);
14879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
14889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
14899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
14909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is checkable.
14919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
14929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
14939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
14949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
14959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
14969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
14979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param checkable True if the node is checkable.
14989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
14999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setCheckable(boolean checkable) {
15019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setCheckable(mInfo, checkable);
15029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is checked.
15069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is checked.
15089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isChecked() {
15109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isChecked(mInfo);
15119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is checked.
15159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
15169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
15179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
15189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
15199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
15209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param checked True if the node is checked.
15229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
15239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setChecked(boolean checked) {
15259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setChecked(mInfo, checked);
15269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is focusable.
15309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is focusable.
15329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isFocusable() {
15349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isFocusable(mInfo);
15359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is focusable.
15399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
15409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
15419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
15429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
15439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
15449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param focusable True if the node is focusable.
15469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
15479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setFocusable(boolean focusable) {
15499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setFocusable(mInfo, focusable);
15509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is focused.
15549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is focused.
15569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isFocused() {
15589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isFocused(mInfo);
15599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
15629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is focused.
15639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
15649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
15659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
15669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
15679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
15689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
15699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param focused True if the node is focused.
15709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
15719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
15729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setFocused(boolean focused) {
15739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setFocused(mInfo, focused);
15749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
15759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
15769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
157770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is visible to the user.
157870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
157970e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return Whether the node is visible to the user.
158070e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
158170e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean isVisibleToUser() {
158270e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.isVisibleToUser(mInfo);
158370e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
158470e96ebf69f91da84681a6263b3862c63d53ab11alanv
158570e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
158670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is visible to the user.
158770e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
158870e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
158970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
159070e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
159170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
159270e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
159370e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param visibleToUser Whether the node is visible to the user.
159470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
159570e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
159670e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
159770e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setVisibleToUser(boolean visibleToUser) {
159870e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setVisibleToUser(mInfo, visibleToUser);
159970e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
160070e96ebf69f91da84681a6263b3862c63d53ab11alanv
160170e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
160270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Gets whether this node is accessibility focused.
160370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
160470e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @return True if the node is accessibility focused.
160570e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
160670e96ebf69f91da84681a6263b3862c63d53ab11alanv    public boolean isAccessibilityFocused() {
160770e96ebf69f91da84681a6263b3862c63d53ab11alanv        return IMPL.isAccessibilityFocused(mInfo);
160870e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
160970e96ebf69f91da84681a6263b3862c63d53ab11alanv
161070e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
161170e96ebf69f91da84681a6263b3862c63d53ab11alanv     * Sets whether this node is accessibility focused.
161270e96ebf69f91da84681a6263b3862c63d53ab11alanv     * <p>
161370e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   <strong>Note:</strong> Cannot be called from an
161470e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   {@link android.accessibilityservice.AccessibilityService}.
161570e96ebf69f91da84681a6263b3862c63d53ab11alanv     *   This class is made immutable before being delivered to an AccessibilityService.
161670e96ebf69f91da84681a6263b3862c63d53ab11alanv     * </p>
161770e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
161870e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @param focused True if the node is accessibility focused.
161970e96ebf69f91da84681a6263b3862c63d53ab11alanv     *
162070e96ebf69f91da84681a6263b3862c63d53ab11alanv     * @throws IllegalStateException If called from an AccessibilityService.
162170e96ebf69f91da84681a6263b3862c63d53ab11alanv     */
162270e96ebf69f91da84681a6263b3862c63d53ab11alanv    public void setAccessibilityFocused(boolean focused) {
162370e96ebf69f91da84681a6263b3862c63d53ab11alanv        IMPL.setAccessibilityFocused(mInfo, focused);
162470e96ebf69f91da84681a6263b3862c63d53ab11alanv    }
162570e96ebf69f91da84681a6263b3862c63d53ab11alanv
162670e96ebf69f91da84681a6263b3862c63d53ab11alanv    /**
16279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is selected.
16289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is selected.
16309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isSelected() {
16329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isSelected(mInfo);
16339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is selected.
16379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
16389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
16399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
16409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
16419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
16429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param selected True if the node is selected.
16449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
16459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setSelected(boolean selected) {
16479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setSelected(mInfo, selected);
16489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is clickable.
16529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is clickable.
16549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isClickable() {
16569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isClickable(mInfo);
16579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is clickable.
16619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
16629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
16639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
16649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
16659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
16669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param clickable True if the node is clickable.
16689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
16699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setClickable(boolean clickable) {
16719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setClickable(mInfo, clickable);
16729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is long clickable.
16769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is long clickable.
16789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isLongClickable() {
16809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isLongClickable(mInfo);
16819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is long clickable.
16859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
16869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
16879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
16889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
16899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
16909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
16919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param longClickable True if the node is long clickable.
16929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
16939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
16949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setLongClickable(boolean longClickable) {
16959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setLongClickable(mInfo, longClickable);
16969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
16979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
16989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
16999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is enabled.
17009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is enabled.
17029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isEnabled() {
17049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isEnabled(mInfo);
17059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is enabled.
17099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param enabled True if the node is enabled.
17169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setEnabled(boolean enabled) {
17199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setEnabled(mInfo, enabled);
17209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets whether this node is a password.
17249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is a password.
17269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isPassword() {
17289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isPassword(mInfo);
17299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets whether this node is a password.
17339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param password True if the node is a password.
17409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setPassword(boolean password) {
17439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setPassword(mInfo, password);
17449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets if the node is scrollable.
17489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return True if the node is scrollable, false otherwise.
17509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean isScrollable() {
17529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.isScrollable(mInfo);
17539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets if the node is scrollable.
17579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param scrollable True if the node is scrollable, false otherwise.
17649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setScrollable(boolean scrollable) {
17679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setScrollable(mInfo, scrollable);
17689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the package this node comes from.
17729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The package name.
17749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getPackageName() {
17769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getPackageName(mInfo);
17779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the package this node comes from.
17819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
17829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
17839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
17849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
17859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
17869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param packageName The package name.
17889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
17899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setPackageName(CharSequence packageName) {
17919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setPackageName(mInfo, packageName);
17929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
17939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
17949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
17959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the class this node comes from.
17969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
17979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The class name.
17989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
17999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getClassName() {
18009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getClassName(mInfo);
18019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the class this node comes from.
18059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
18079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
18089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
18099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param className The class name.
18129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
18139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setClassName(CharSequence className) {
18159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setClassName(mInfo, className);
18169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the text of this node.
18209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The text.
18229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getText() {
18249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getText(mInfo);
18259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the text of this node.
18299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
18319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
18329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
18339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param text The text.
18369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
18379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setText(CharSequence text) {
18399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setText(mInfo, text);
18409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Gets the content description of this node.
18449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @return The content description.
18469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public CharSequence getContentDescription() {
18489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return IMPL.getContentDescription(mInfo);
18499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Sets the content description of this node.
18539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> Cannot be called from an
18559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * {@link android.accessibilityservice.AccessibilityService}. This class is
18569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * made immutable before being delivered to an AccessibilityService.
18579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * </p>
18589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @param contentDescription The content description.
18609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If called from an AccessibilityService.
18619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void setContentDescription(CharSequence contentDescription) {
18639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.setContentDescription(mInfo, contentDescription);
18649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    /**
18679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * Return an instance back to be reused.
18689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <p>
18699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * <strong>Note:</strong> You must not touch the object after calling this function.
18709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     *
18719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     * @throws IllegalStateException If the info is already recycled.
18729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov     */
18739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public void recycle() {
18749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        IMPL.recycle(mInfo);
18759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
18769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
18770fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
18780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Sets the fully qualified resource name of the source view's id.
18790fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
18800fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
18810fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   <strong>Note:</strong> Cannot be called from an
18820fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   {@link android.accessibilityservice.AccessibilityService}.
18830fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   This class is made immutable before being delivered to an AccessibilityService.
18840fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
18850fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
18860fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @param viewId The id resource name.
18870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
1888071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav    public void setViewIdResourceName(String viewId) {
18890fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        IMPL.setViewIdResourceName(mInfo, viewId);
18900fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
18910fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
18920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    /**
18930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * Gets the fully qualified resource name of the source view's id.
18940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
18950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * <p>
18960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   <strong>Note:</strong> The primary usage of this API is for UI test automation
18970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   and in order to report the source view id of an {@link AccessibilityNodeInfoCompat}
18980fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   the client has to set the {@link AccessibilityServiceInfoCompat#FLAG_REPORT_VIEW_IDS}
18990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *   flag when configuring his {@link android.accessibilityservice.AccessibilityService}.
19000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * </p>
19010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     *
19020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     * @return The id resource name.
19030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav     */
1904071eca0f490d88fc51cea8f739780c7c92b920c3Svetoslav    public String getViewIdResourceName() {
19050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        return IMPL.getViewIdResourceName(mInfo);
19060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
19070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
1908086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    /**
1909086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * Gets the node's live region mode.
1910086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <p>
1911086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * A live region is a node that contains information that is important for
1912086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * the user and when it changes the user should be notified. For example,
1913086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * in a login screen with a TextView that displays an "incorrect password"
1914086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * notification, that view should be marked as a live region with mode
1915086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * {@link ViewCompat#ACCESSIBILITY_LIVE_REGION_POLITE}.
1916086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <p>
1917086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * It is the responsibility of the accessibility service to monitor
1918086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * {@link AccessibilityEventCompat#TYPE_WINDOW_CONTENT_CHANGED} events
1919086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * indicating changes to live region nodes and their children.
1920086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *
1921086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @return The live region mode, or
1922086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *         {@link ViewCompat#ACCESSIBILITY_LIVE_REGION_NONE} if the view is
1923086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *         not a live region.
1924086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @see ViewCompat#getAccessibilityLiveRegion(View)
1925086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     */
1926086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    public int getLiveRegion() {
1927086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        return IMPL.getLiveRegion(mInfo);
1928086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
1929086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
1930086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    /**
1931086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * Sets the node's live region mode.
1932086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <p>
1933086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * <strong>Note:</strong> Cannot be called from an
1934086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * {@link android.accessibilityservice.AccessibilityService}. This class is
1935086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * made immutable before being delivered to an AccessibilityService.
1936086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *
1937086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @param mode The live region mode, or
1938086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *        {@link ViewCompat#ACCESSIBILITY_LIVE_REGION_NONE} if the view is
1939086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     *        not a live region.
1940086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     * @see ViewCompat#setAccessibilityLiveRegion(View, int)
1941086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette     */
1942086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    public void setLiveRegion(int mode) {
1943086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        IMPL.setLiveRegion(mInfo, mode);
1944086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
1945086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
19469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    @Override
19479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public int hashCode() {
19489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return (mInfo == null) ? 0 : mInfo.hashCode();
19499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov
19519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    @Override
19529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    public boolean equals(Object obj) {
19539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (this == obj) {
19549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return true;
19559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
19569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (obj == null) {
19579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
19589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
19599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (getClass() != obj.getClass()) {
19609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
19619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
19629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        AccessibilityNodeInfoCompat other = (AccessibilityNodeInfoCompat) obj;
19639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        if (mInfo == null) {
19649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            if (other.mInfo != null) {
19659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov                return false;
19669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            }
19679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        } else if (!mInfo.equals(other.mInfo)) {
19689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov            return false;
19699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        }
19709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov        return true;
19719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov    }
19720fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19730fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    @Override
19740fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    public String toString() {
19750fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        StringBuilder builder = new StringBuilder();
19760fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append(super.toString());
19770fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19780fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        Rect bounds = new Rect();
19790fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19800fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        getBoundsInParent(bounds);
19810fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; boundsInParent: " + bounds);
19820fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19830fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        getBoundsInScreen(bounds);
19840fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; boundsInScreen: " + bounds);
19850fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19860fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; packageName: ").append(getPackageName());
19870fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; className: ").append(getClassName());
19880fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; text: ").append(getText());
19890fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; contentDescription: ").append(getContentDescription());
19900fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; viewId: ").append(getViewIdResourceName());
19910fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
19920fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; checkable: ").append(isCheckable());
19930fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; checked: ").append(isChecked());
19940fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; focusable: ").append(isFocusable());
19950fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; focused: ").append(isFocused());
19960fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; selected: ").append(isSelected());
19970fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; clickable: ").append(isClickable());
19980fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; longClickable: ").append(isLongClickable());
19990fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; enabled: ").append(isEnabled());
20000fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; password: ").append(isPassword());
20010fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; scrollable: " + isScrollable());
20020fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
20030fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("; [");
20040fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        for (int actionBits = getActions(); actionBits != 0;) {
20050fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            final int action = 1 << Integer.numberOfTrailingZeros(actionBits);
20060fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            actionBits &= ~action;
20070fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            builder.append(getActionSymbolicName(action));
20080fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            if (actionBits != 0) {
20090fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                builder.append(", ");
20100fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            }
20110fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
20120fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        builder.append("]");
20130fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
20140fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        return builder.toString();
20150fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
20160fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav
20170fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    private static String getActionSymbolicName(int action) {
20180fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        switch (action) {
20190fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_FOCUS:
20200fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_FOCUS";
20210fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_FOCUS:
20220fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_FOCUS";
20230fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SELECT:
20240fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SELECT";
20250fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_SELECTION:
20260fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_SELECTION";
20270fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLICK:
20280fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLICK";
20290fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_LONG_CLICK:
20300fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_LONG_CLICK";
20310fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_ACCESSIBILITY_FOCUS:
20320fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_ACCESSIBILITY_FOCUS";
20330fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CLEAR_ACCESSIBILITY_FOCUS:
20340fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CLEAR_ACCESSIBILITY_FOCUS";
20350fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_NEXT_AT_MOVEMENT_GRANULARITY:
20360fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_NEXT_AT_MOVEMENT_GRANULARITY";
20370fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY:
20380fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY";
20390fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_NEXT_HTML_ELEMENT:
20400fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_NEXT_HTML_ELEMENT";
20410fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PREVIOUS_HTML_ELEMENT:
20420fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PREVIOUS_HTML_ELEMENT";
20430fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SCROLL_FORWARD:
20440fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SCROLL_FORWARD";
20450fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SCROLL_BACKWARD:
20460fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SCROLL_BACKWARD";
20470fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_CUT:
20480fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_CUT";
20490fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_COPY:
20500fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_COPY";
20510fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_PASTE:
20520fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_PASTE";
20530fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            case ACTION_SET_SELECTION:
20540fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return "ACTION_SET_SELECTION";
20550fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav            default:
20560fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav                return"ACTION_UNKNOWN";
20570fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav        }
20580fc5bd7644f7563f7b59bd1017df9c938857e794Svetoslav    }
20599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov}
2060