AccessibilityNodeInfoCompatKitKat.java revision f0d984600125413628899bfc849bab102bc2228e
1086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette/*
2086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Copyright (C) 2012 The Android Open Source Project
3086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette *
4086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Licensed under the Apache License, Version 2.0 (the "License");
5086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * you may not use this file except in compliance with the License.
6086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * You may obtain a copy of the License at
7086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette *
8086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette *      http://www.apache.org/licenses/LICENSE-2.0
9086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette *
10086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * Unless required by applicable law or agreed to in writing, software
11086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * distributed under the License is distributed on an "AS IS" BASIS,
12086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * See the License for the specific language governing permissions and
14086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * limitations under the License.
15086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette */
16086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
17086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverettepackage android.support.v4.view.accessibility;
18086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
198aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatovimport android.os.Bundle;
20086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viveretteimport android.view.accessibility.AccessibilityNodeInfo;
21086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
22086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette/**
23086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette * KitKat-specific AccessibilityNodeInfo API implementation.
24086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette */
25086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viveretteclass AccessibilityNodeInfoCompatKitKat {
26f0d984600125413628899bfc849bab102bc2228eSteven Dao    private static final String ROLE_DESCRIPTION_KEY =
27f0d984600125413628899bfc849bab102bc2228eSteven Dao            "AccessibilityNodeInfo.roleDescription";
28f0d984600125413628899bfc849bab102bc2228eSteven Dao
29fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    static int getLiveRegion(Object info) {
30086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        return ((AccessibilityNodeInfo) info).getLiveRegion();
31086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
32086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette
33fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    static void setLiveRegion(Object info, int mode) {
34086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette        ((AccessibilityNodeInfo) info).setLiveRegion(mode);
35086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette    }
36fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
37fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    static Object getCollectionInfo(Object info) {
38fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        return ((AccessibilityNodeInfo) info).getCollectionInfo();
39fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
40fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
41fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    static Object getCollectionItemInfo(Object info) {
42fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        return ((AccessibilityNodeInfo) info).getCollectionItemInfo();
43fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
44fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
45a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    public static void setCollectionInfo(Object info, Object collectionInfo) {
46a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        ((AccessibilityNodeInfo) info).setCollectionInfo(
47a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                (AccessibilityNodeInfo.CollectionInfo)collectionInfo);
48a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    }
49a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
50a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    public static void setCollectionItemInfo(Object info, Object collectionItemInfo) {
51a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        ((AccessibilityNodeInfo) info).setCollectionItemInfo(
52a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                (AccessibilityNodeInfo.CollectionItemInfo) collectionItemInfo);
53a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    }
54a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
55fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    static Object getRangeInfo(Object info) {
56fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        return ((AccessibilityNodeInfo) info).getRangeInfo();
57fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
58fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
598aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    public static void setRangeInfo(Object info, Object rangeInfo) {
608aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov        ((AccessibilityNodeInfo) info).setRangeInfo((AccessibilityNodeInfo.RangeInfo) rangeInfo);
618aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    }
628aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov
63a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    public static Object obtainCollectionInfo(int rowCount, int columnCount,
64a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            boolean hierarchical, int selectionMode) {
65a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        return AccessibilityNodeInfo.CollectionInfo.obtain(rowCount, columnCount, hierarchical);
66a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    }
67a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
68a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    public static Object obtainCollectionItemInfo(int rowIndex, int rowSpan, int columnIndex,
69a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar            int columnSpan, boolean heading) {
70a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar        return AccessibilityNodeInfo.CollectionItemInfo.obtain(rowIndex, rowSpan, columnIndex,
71a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar                columnSpan, heading);
72a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar    }
73a910619e83d0052e1d81aa5fe532821a2f99d76cYigit Boyar
74c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes    public static void setContentInvalid(Object info, boolean contentInvalid) {
75c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes        ((AccessibilityNodeInfo) info).setContentInvalid(contentInvalid);
76c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes    }
77c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes
78c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes    public static boolean isContentInvalid(Object info) {
79c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes        return ((AccessibilityNodeInfo) info).isContentInvalid();
80c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes    }
81c5b63021dfda1dd155775a0b4845c5ca3c70b1b0Chris Banes
828aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    public static boolean canOpenPopup(Object info) {
838aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov        return ((AccessibilityNodeInfo) info).canOpenPopup();
848aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    }
858aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov
868aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    public static void setCanOpenPopup(Object info, boolean opensPopup) {
878aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov        ((AccessibilityNodeInfo) info).setCanOpenPopup(opensPopup);
888aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    }
898aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov
908aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    public static Bundle getExtras(Object info) {
918aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov        return ((AccessibilityNodeInfo) info).getExtras();
928aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    }
938aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov
948aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    public static int getInputType(Object info) {
958aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov        return ((AccessibilityNodeInfo) info).getInputType();
968aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    }
978aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov
988aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    public static void setInputType(Object info, int inputType) {
998aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov        ((AccessibilityNodeInfo) info).setInputType(inputType);
1008aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    }
1018aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov
1028aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    public static boolean isDismissable(Object info) {
1038aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov        return ((AccessibilityNodeInfo) info).isDismissable();
1048aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    }
1058aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov
1068aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    public static void setDismissable(Object info, boolean dismissable) {
1078aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov        ((AccessibilityNodeInfo) info).setDismissable(dismissable);
1088aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    }
1098aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov
1108aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    public static boolean isMultiLine(Object info) {
1118aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov        return ((AccessibilityNodeInfo) info).isMultiLine();
1128aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    }
1138aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov
1148aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    public static void setMultiLine(Object info, boolean multiLine) {
1158aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov        ((AccessibilityNodeInfo) info).setMultiLine(multiLine);
1168aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov    }
1178aaf50bd7d713dafc358e6215111e7b0a43ecc82Maxim Bogatov
118f0d984600125413628899bfc849bab102bc2228eSteven Dao    public static CharSequence getRoleDescription(Object info) {
119f0d984600125413628899bfc849bab102bc2228eSteven Dao        Bundle extras = getExtras(info);
120f0d984600125413628899bfc849bab102bc2228eSteven Dao        return extras.getCharSequence(ROLE_DESCRIPTION_KEY);
121f0d984600125413628899bfc849bab102bc2228eSteven Dao    }
122f0d984600125413628899bfc849bab102bc2228eSteven Dao
123f0d984600125413628899bfc849bab102bc2228eSteven Dao    public static void setRoleDescription(Object info, CharSequence roleDescription) {
124f0d984600125413628899bfc849bab102bc2228eSteven Dao        Bundle extras = getExtras(info);
125f0d984600125413628899bfc849bab102bc2228eSteven Dao        extras.putCharSequence(ROLE_DESCRIPTION_KEY, roleDescription);
126f0d984600125413628899bfc849bab102bc2228eSteven Dao    }
127f0d984600125413628899bfc849bab102bc2228eSteven Dao
128fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    static class CollectionInfo {
129fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static int getColumnCount(Object info) {
130fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.CollectionInfo) info).getColumnCount();
131fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
132fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
133fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static int getRowCount(Object info) {
134fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.CollectionInfo) info).getRowCount();
135fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
136fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
137fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static boolean isHierarchical(Object info) {
138fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.CollectionInfo) info).isHierarchical();
139fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
140fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
141fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
142fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    static class CollectionItemInfo {
143fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static int getColumnIndex(Object info) {
144fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.CollectionItemInfo) info).getColumnIndex();
145fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
146fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
147fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static int getColumnSpan(Object info) {
148fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.CollectionItemInfo) info).getColumnSpan();
149fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
150fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
151fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static int getRowIndex(Object info) {
152fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.CollectionItemInfo) info).getRowIndex();
153fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
154fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
155fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static int getRowSpan(Object info) {
156fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.CollectionItemInfo) info).getRowSpan();
157fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
158fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
159fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static boolean isHeading(Object info) {
160fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.CollectionItemInfo) info).isHeading();
161fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
162fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
163fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
164fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    static class RangeInfo {
165fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static float getCurrent(Object info) {
166fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.RangeInfo) info).getCurrent();
167fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
168fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
169fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static float getMax(Object info) {
170fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.RangeInfo) info).getMax();
171fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
172fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
173fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static float getMin(Object info) {
174fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.RangeInfo) info).getMin();
175fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
176fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen
177fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        static int getType(Object info) {
178fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen            return ((AccessibilityNodeInfo.RangeInfo) info).getType();
179fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen        }
180fbfefc40581dd94616359c796b4cc03969b22a10Kristian Monsen    }
181086e7db1ab6ef49b4b7974c471b70f81b2d13aefAlan Viverette}
182