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