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; 189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.os.Build; 2025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganovimport android.os.Bundle; 219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; 22956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganovimport android.support.v4.view.accessibility.AccessibilityNodeProviderCompat; 239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.view.View; 249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.view.ViewGroup; 259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovimport android.view.accessibility.AccessibilityEvent; 269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov/** 280574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * Helper for accessing {@link View.AccessibilityDelegate} introduced after 290574ca37da4619afe4e26753f5a1b4de314b6565Svetoslav Ganov * API level 4 in a backwards compatible fashion. 30db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * <p> 31db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * <strong>Note:</strong> On platform versions prior to 32db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * {@link android.os.Build.VERSION_CODES#M API 23}, delegate methods on 33db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * views in the {@code android.widget.*} package are called <i>before</i> 34db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * host methods. This prevents certain properties such as class name from 35db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * being modified by overriding 36db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * {@link AccessibilityDelegateCompat#onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfoCompat)}, 37db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * as any changes will be overwritten by the host class. 38db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * <p> 39db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * Starting in {@link android.os.Build.VERSION_CODES#M API 23}, delegate 40db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * methods are called <i>after</i> host methods, which all properties to be 41db728e758ef69282dd83685cb96cb02e5064cbc2Alan Viverette * modified without being overwritten by the host class. 429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpublic class AccessibilityDelegateCompat { 449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static interface AccessibilityDelegateImpl { 469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateDefaultImpl(); 479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateBridge(AccessibilityDelegateCompat listener); 489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(Object delegate, View host, 499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event); 509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(Object delegate, View host, 519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event); 52f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(Object delegate, View host, 53f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov AccessibilityNodeInfoCompat info); 549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(Object delegate, View host, 559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event); 569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(Object delegate, ViewGroup host, View child, 579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event); 589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEvent(Object delegate, View host, int eventType); 599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEventUnchecked(Object delegate, View host, 609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event); 61956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(Object delegate, 62956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov View host); 6325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public boolean performAccessibilityAction(Object delegate, View host, int action, 6425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov Bundle args); 659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityDelegateStubImpl implements AccessibilityDelegateImpl { 6815375aa6fd54b036f97f99229aefab2822c8a1c9Aurimas Liutikas @Override 699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateDefaultImpl() { 709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 73956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateBridge(AccessibilityDelegateCompat listener) { 759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 78956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(Object delegate, View host, 809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return false; 829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 84956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(Object delegate, View host, 869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 90956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 91f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(Object delegate, View host, 92f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov AccessibilityNodeInfoCompat info) { 939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 96956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(Object delegate, View host, 989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 102956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 1039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(Object delegate, ViewGroup host, View child, 1049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return true; 1069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 108956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 1099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEvent(Object delegate, View host, int eventType) { 1109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 113956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 1149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEventUnchecked(Object delegate, View host, 1159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 118956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 119956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 120956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(Object delegate, 121956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov View host) { 122956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return null; 123956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 12425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 12525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov @Override 12625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public boolean performAccessibilityAction(Object delegate, View host, int action, 12725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov Bundle args) { 12825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return false; 12925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 1309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityDelegateIcsImpl extends AccessibilityDelegateStubImpl { 1339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateDefaultImpl() { 1359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityDelegateCompatIcs.newAccessibilityDelegateDefaultImpl(); 1369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateBridge(final AccessibilityDelegateCompat compat) { 1409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityDelegateCompatIcs.newAccessibilityDelegateBridge( 1419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov new AccessibilityDelegateCompatIcs.AccessibilityDelegateBridge() { 1429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(View host, 1449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return compat.dispatchPopulateAccessibilityEvent(host, event); 1469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) { 1509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov compat.onInitializeAccessibilityEvent(host, event); 1519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(View host, Object info) { 1559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov compat.onInitializeAccessibilityNodeInfo(host, 1569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov new AccessibilityNodeInfoCompat(info)); 1579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) { 1619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov compat.onPopulateAccessibilityEvent(host, event); 1629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, 1669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return compat.onRequestSendAccessibilityEvent(host, child, event); 1689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEvent(View host, int eventType) { 1729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov compat.sendAccessibilityEvent(host, eventType); 1739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event) { 1779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov compat.sendAccessibilityEventUnchecked(host, event); 1789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov }); 1809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(Object delegate, View host, 1849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityDelegateCompatIcs.dispatchPopulateAccessibilityEvent(delegate, 1869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov host, event); 1879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(Object delegate, View host, 1919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityDelegateCompatIcs.onInitializeAccessibilityEvent(delegate, host, event); 1939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 196f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(Object delegate, View host, 197f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov AccessibilityNodeInfoCompat info) { 198f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov AccessibilityDelegateCompatIcs.onInitializeAccessibilityNodeInfo(delegate, host, 199956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov info.getInfo()); 2009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 2039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(Object delegate, View host, 2049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 2059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityDelegateCompatIcs.onPopulateAccessibilityEvent(delegate, host, event); 2069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 2099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(Object delegate, ViewGroup host, View child, 2109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 2119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityDelegateCompatIcs.onRequestSendAccessibilityEvent(delegate, host, 2129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov child, event); 2139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 2169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEvent(Object delegate, View host, int eventType) { 2179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityDelegateCompatIcs.sendAccessibilityEvent(delegate, host, eventType); 2189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 2219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEventUnchecked(Object delegate, View host, 2229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 2239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityDelegateCompatIcs.sendAccessibilityEventUnchecked(delegate, host, event); 2249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 227956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov static class AccessibilityDelegateJellyBeanImpl extends AccessibilityDelegateIcsImpl { 228956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 229956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public Object newAccessiblityDelegateBridge(final AccessibilityDelegateCompat compat) { 230956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return AccessibilityDelegateCompatJellyBean.newAccessibilityDelegateBridge( 231956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov new AccessibilityDelegateCompatJellyBean 232956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov .AccessibilityDelegateBridgeJellyBean() { 233956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 234956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(View host, 235956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov AccessibilityEvent event) { 236956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return compat.dispatchPopulateAccessibilityEvent(host, event); 237956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 238956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 239956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 240956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) { 241956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov compat.onInitializeAccessibilityEvent(host, event); 242956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 243956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 244956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 245956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(View host, Object info) { 246956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov compat.onInitializeAccessibilityNodeInfo(host, 247956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov new AccessibilityNodeInfoCompat(info)); 248956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 249956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 250956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 251956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) { 252956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov compat.onPopulateAccessibilityEvent(host, event); 253956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 254956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 255956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 256956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, 257956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov AccessibilityEvent event) { 258956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return compat.onRequestSendAccessibilityEvent(host, child, event); 259956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 260956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 261956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 262956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public void sendAccessibilityEvent(View host, int eventType) { 263956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov compat.sendAccessibilityEvent(host, eventType); 264956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 265956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 266956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 267956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event) { 268956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov compat.sendAccessibilityEventUnchecked(host, event); 269956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 270956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 271956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 272956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public Object getAccessibilityNodeProvider(View host) { 27325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov AccessibilityNodeProviderCompat provider = 27425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov compat.getAccessibilityNodeProvider(host); 27525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return (provider != null) ? provider.getProvider() : null; 27625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 27725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 27825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov @Override 27925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public boolean performAccessibilityAction(View host, int action, Bundle args) { 28025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return compat.performAccessibilityAction(host, action, args); 281956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 282956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov }); 283956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 284956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 285956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 286956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(Object delegate, 287956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov View host) { 288956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov Object provider = AccessibilityDelegateCompatJellyBean.getAccessibilityNodeProvider( 289956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov delegate, host); 290956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov if (provider != null) { 291956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return new AccessibilityNodeProviderCompat(provider); 292956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 293956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return null; 294956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 29525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 29625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov @Override 29725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public boolean performAccessibilityAction(Object delegate, View host, int action, 29825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov Bundle args) { 29925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return AccessibilityDelegateCompatJellyBean.performAccessibilityAction(delegate, 30025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov host, action, args); 30125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 302956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 303956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 3049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private static final AccessibilityDelegateImpl IMPL; 3059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private static final Object DEFAULT_DELEGATE; 3069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static { 308f3ed7c56e6c409d27c60f7d74c026906593c21d4Svetoslav Ganov if (Build.VERSION.SDK_INT >= 16) { // JellyBean 309956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov IMPL = new AccessibilityDelegateJellyBeanImpl(); 310956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } else if (Build.VERSION.SDK_INT >= 14) { // ICS 3119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityDelegateIcsImpl(); 3129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } else { 3139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityDelegateStubImpl(); 3149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov DEFAULT_DELEGATE = IMPL.newAccessiblityDelegateDefaultImpl(); 3169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov final Object mBridge; 3199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Creates a new instance. 3229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public AccessibilityDelegateCompat() { 3249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov mBridge = IMPL.newAccessiblityDelegateBridge(this); 3259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The wrapped bridge implementation. 3299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov Object getBridge() { 3319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return mBridge; 3329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Sends an accessibility event of the given type. If accessibility is not 3369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * enabled this method has no effect. 3379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 3389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as {@link View#sendAccessibilityEvent(int) 3399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * View#sendAccessibilityEvent(int)} for the case of no accessibility delegate 3409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * been set. 3419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 3429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 3449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param eventType The type of the event to send. 3459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see View#sendAccessibilityEvent(int) View#sendAccessibilityEvent(int) 3479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEvent(View host, int eventType) { 3499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.sendAccessibilityEvent(DEFAULT_DELEGATE, host, eventType); 3509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Sends an accessibility event. This method behaves exactly as 3549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link #sendAccessibilityEvent(View, int)} but takes as an argument an 3559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * empty {@link AccessibilityEvent} and does not perform a check whether 3569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * accessibility is enabled. 3579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 3589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 3599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link View#sendAccessibilityEventUnchecked(AccessibilityEvent) 3609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * View#sendAccessibilityEventUnchecked(AccessibilityEvent)} for 3619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 3629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 3639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 3659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param event The event to send. 3669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see View#sendAccessibilityEventUnchecked(AccessibilityEvent) 3689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * View#sendAccessibilityEventUnchecked(AccessibilityEvent) 3699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event) { 3719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.sendAccessibilityEventUnchecked(DEFAULT_DELEGATE, host, event); 3729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Dispatches an {@link AccessibilityEvent} to the host {@link View} first and then 3769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * to its children for adding their text content to the event. 3779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 3789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 3799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link View#dispatchPopulateAccessibilityEvent(AccessibilityEvent) 3809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * View#dispatchPopulateAccessibilityEvent(AccessibilityEvent)} for 3819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 3829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 3839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 3859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param event The event. 3869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return True if the event population was completed. 3879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see View#dispatchPopulateAccessibilityEvent(AccessibilityEvent) 3899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * View#dispatchPopulateAccessibilityEvent(AccessibilityEvent) 3909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(View host, AccessibilityEvent event) { 3929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.dispatchPopulateAccessibilityEvent(DEFAULT_DELEGATE, host, event); 3939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Gives a chance to the host View to populate the accessibility event with its 3979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * text content. 3989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 3999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 4009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link ViewCompat#onPopulateAccessibilityEvent(View, AccessibilityEvent) 4019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onPopulateAccessibilityEvent(AccessibilityEvent)} for 4029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 4039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 4049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 4069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param event The accessibility event which to populate. 4079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see ViewCompat#onPopulateAccessibilityEvent(View ,AccessibilityEvent) 4099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onPopulateAccessibilityEvent(View, AccessibilityEvent) 4109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 4119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) { 4129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.onPopulateAccessibilityEvent(DEFAULT_DELEGATE, host, event); 4139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 4149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 4159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 4169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Initializes an {@link AccessibilityEvent} with information about the 4179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the host View which is the event source. 4189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 4199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 4209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link ViewCompat#onInitializeAccessibilityEvent(View v, AccessibilityEvent event) 4219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onInitalizeAccessibilityEvent(View v, AccessibilityEvent event)} for 4229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 4239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 4249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 4269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param event The event to initialize. 4279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see ViewCompat#onInitializeAccessibilityEvent(View, AccessibilityEvent) 4299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onInitializeAccessibilityEvent(View, AccessibilityEvent) 4309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 4319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) { 4329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.onInitializeAccessibilityEvent(DEFAULT_DELEGATE, host, event); 4339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 4349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 4359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 4369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Initializes an {@link AccessibilityNodeInfoCompat} with information about the host view. 4379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 4389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 4399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link ViewCompat#onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfoCompat) 4409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfoCompat)} for 4419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 4429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 4439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 4459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param info The instance to initialize. 4469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see ViewCompat#onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfoCompat) 4489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfoCompat) 4499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 4509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) { 4519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.onInitializeAccessibilityNodeInfo(DEFAULT_DELEGATE, host, info); 4529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 4539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 4549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 4559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Called when a child of the host View has requested sending an 4569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link AccessibilityEvent} and gives an opportunity to the parent (the host) 4579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * to augment the event. 4589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 4599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 4609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link ViewGroupCompat#onRequestSendAccessibilityEvent(ViewGroup, View, AccessibilityEvent) 4619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewGroupCompat#onRequestSendAccessibilityEvent(ViewGroup, View, AccessibilityEvent)} for 4629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 4639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 4649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 4669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param child The child which requests sending the event. 4679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param event The event to be sent. 4689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return True if the event should be sent 4699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see ViewGroupCompat#onRequestSendAccessibilityEvent(ViewGroup, View, AccessibilityEvent) 4719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewGroupCompat#onRequestSendAccessibilityEvent(ViewGroup, View, AccessibilityEvent) 4729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 4739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, 4749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 4759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.onRequestSendAccessibilityEvent(DEFAULT_DELEGATE, host, child, event); 4769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 477956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 478956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov /** 479956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * Gets the provider for managing a virtual view hierarchy rooted at this View 480956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * and reported to {@link android.accessibilityservice.AccessibilityService}s 481956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * that explore the window content. 482956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * <p> 483956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * The default implementation behaves as 484989cd2fb6badb029b74cf4c88bbf74b1d912bdcaSvetoslav Ganov * {@link ViewCompat#getAccessibilityNodeProvider(View) ViewCompat#getAccessibilityNodeProvider(View)} 48525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * for the case of no accessibility delegate been set. 486956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * </p> 487956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * 488956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * @return The provider. 489956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * 490956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * @see AccessibilityNodeProviderCompat 491956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov */ 492956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(View host) { 493956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return IMPL.getAccessibilityNodeProvider(DEFAULT_DELEGATE, host); 494956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 49525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 49625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov /** 49725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * Performs the specified accessibility action on the view. For 49825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * possible accessibility actions look at {@link AccessibilityNodeInfoCompat}. 49925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * <p> 50025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * The default implementation behaves as 50125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * {@link View#performAccessibilityAction(int, Bundle) 50225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * View#performAccessibilityAction(int, Bundle)} for the case of 50325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * no accessibility delegate been set. 50425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * </p> 50525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * 50625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @param action The action to perform. 50725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @return Whether the action was performed. 50825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * 50925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @see View#performAccessibilityAction(int, Bundle) 51025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * View#performAccessibilityAction(int, Bundle) 51125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov */ 51225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public boolean performAccessibilityAction(View host, int action, Bundle args) { 51325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return IMPL.performAccessibilityAction(DEFAULT_DELEGATE, host, action, args); 51425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 5159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov} 516