1/* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.support.v4.view.accessibility; 18 19import android.os.Bundle; 20import android.view.accessibility.AccessibilityNodeInfo; 21 22/** 23 * KitKat-specific AccessibilityNodeInfo API implementation. 24 */ 25class AccessibilityNodeInfoCompatKitKat { 26 private static final String ROLE_DESCRIPTION_KEY = 27 "AccessibilityNodeInfo.roleDescription"; 28 29 static int getLiveRegion(Object info) { 30 return ((AccessibilityNodeInfo) info).getLiveRegion(); 31 } 32 33 static void setLiveRegion(Object info, int mode) { 34 ((AccessibilityNodeInfo) info).setLiveRegion(mode); 35 } 36 37 static Object getCollectionInfo(Object info) { 38 return ((AccessibilityNodeInfo) info).getCollectionInfo(); 39 } 40 41 static Object getCollectionItemInfo(Object info) { 42 return ((AccessibilityNodeInfo) info).getCollectionItemInfo(); 43 } 44 45 public static void setCollectionInfo(Object info, Object collectionInfo) { 46 ((AccessibilityNodeInfo) info).setCollectionInfo( 47 (AccessibilityNodeInfo.CollectionInfo)collectionInfo); 48 } 49 50 public static void setCollectionItemInfo(Object info, Object collectionItemInfo) { 51 ((AccessibilityNodeInfo) info).setCollectionItemInfo( 52 (AccessibilityNodeInfo.CollectionItemInfo) collectionItemInfo); 53 } 54 55 static Object getRangeInfo(Object info) { 56 return ((AccessibilityNodeInfo) info).getRangeInfo(); 57 } 58 59 public static void setRangeInfo(Object info, Object rangeInfo) { 60 ((AccessibilityNodeInfo) info).setRangeInfo((AccessibilityNodeInfo.RangeInfo) rangeInfo); 61 } 62 63 public static Object obtainCollectionInfo(int rowCount, int columnCount, 64 boolean hierarchical, int selectionMode) { 65 return AccessibilityNodeInfo.CollectionInfo.obtain(rowCount, columnCount, hierarchical); 66 } 67 68 public static Object obtainCollectionItemInfo(int rowIndex, int rowSpan, int columnIndex, 69 int columnSpan, boolean heading) { 70 return AccessibilityNodeInfo.CollectionItemInfo.obtain(rowIndex, rowSpan, columnIndex, 71 columnSpan, heading); 72 } 73 74 public static void setContentInvalid(Object info, boolean contentInvalid) { 75 ((AccessibilityNodeInfo) info).setContentInvalid(contentInvalid); 76 } 77 78 public static boolean isContentInvalid(Object info) { 79 return ((AccessibilityNodeInfo) info).isContentInvalid(); 80 } 81 82 public static boolean canOpenPopup(Object info) { 83 return ((AccessibilityNodeInfo) info).canOpenPopup(); 84 } 85 86 public static void setCanOpenPopup(Object info, boolean opensPopup) { 87 ((AccessibilityNodeInfo) info).setCanOpenPopup(opensPopup); 88 } 89 90 public static Bundle getExtras(Object info) { 91 return ((AccessibilityNodeInfo) info).getExtras(); 92 } 93 94 public static int getInputType(Object info) { 95 return ((AccessibilityNodeInfo) info).getInputType(); 96 } 97 98 public static void setInputType(Object info, int inputType) { 99 ((AccessibilityNodeInfo) info).setInputType(inputType); 100 } 101 102 public static boolean isDismissable(Object info) { 103 return ((AccessibilityNodeInfo) info).isDismissable(); 104 } 105 106 public static void setDismissable(Object info, boolean dismissable) { 107 ((AccessibilityNodeInfo) info).setDismissable(dismissable); 108 } 109 110 public static boolean isMultiLine(Object info) { 111 return ((AccessibilityNodeInfo) info).isMultiLine(); 112 } 113 114 public static void setMultiLine(Object info, boolean multiLine) { 115 ((AccessibilityNodeInfo) info).setMultiLine(multiLine); 116 } 117 118 public static CharSequence getRoleDescription(Object info) { 119 Bundle extras = getExtras(info); 120 return extras.getCharSequence(ROLE_DESCRIPTION_KEY); 121 } 122 123 public static void setRoleDescription(Object info, CharSequence roleDescription) { 124 Bundle extras = getExtras(info); 125 extras.putCharSequence(ROLE_DESCRIPTION_KEY, roleDescription); 126 } 127 128 static class CollectionInfo { 129 static int getColumnCount(Object info) { 130 return ((AccessibilityNodeInfo.CollectionInfo) info).getColumnCount(); 131 } 132 133 static int getRowCount(Object info) { 134 return ((AccessibilityNodeInfo.CollectionInfo) info).getRowCount(); 135 } 136 137 static boolean isHierarchical(Object info) { 138 return ((AccessibilityNodeInfo.CollectionInfo) info).isHierarchical(); 139 } 140 } 141 142 static class CollectionItemInfo { 143 static int getColumnIndex(Object info) { 144 return ((AccessibilityNodeInfo.CollectionItemInfo) info).getColumnIndex(); 145 } 146 147 static int getColumnSpan(Object info) { 148 return ((AccessibilityNodeInfo.CollectionItemInfo) info).getColumnSpan(); 149 } 150 151 static int getRowIndex(Object info) { 152 return ((AccessibilityNodeInfo.CollectionItemInfo) info).getRowIndex(); 153 } 154 155 static int getRowSpan(Object info) { 156 return ((AccessibilityNodeInfo.CollectionItemInfo) info).getRowSpan(); 157 } 158 159 static boolean isHeading(Object info) { 160 return ((AccessibilityNodeInfo.CollectionItemInfo) info).isHeading(); 161 } 162 } 163 164 static class RangeInfo { 165 static float getCurrent(Object info) { 166 return ((AccessibilityNodeInfo.RangeInfo) info).getCurrent(); 167 } 168 169 static float getMax(Object info) { 170 return ((AccessibilityNodeInfo.RangeInfo) info).getMax(); 171 } 172 173 static float getMin(Object info) { 174 return ((AccessibilityNodeInfo.RangeInfo) info).getMin(); 175 } 176 177 static int getType(Object info) { 178 return ((AccessibilityNodeInfo.RangeInfo) info).getType(); 179 } 180 } 181} 182