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. 309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganovpublic class AccessibilityDelegateCompat { 329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static interface AccessibilityDelegateImpl { 349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateDefaultImpl(); 359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateBridge(AccessibilityDelegateCompat listener); 369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(Object delegate, View host, 379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event); 389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(Object delegate, View host, 399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event); 40f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(Object delegate, View host, 41f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov AccessibilityNodeInfoCompat info); 429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(Object delegate, View host, 439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event); 449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(Object delegate, ViewGroup host, View child, 459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event); 469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEvent(Object delegate, View host, int eventType); 479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEventUnchecked(Object delegate, View host, 489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event); 49956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(Object delegate, 50956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov View host); 5125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public boolean performAccessibilityAction(Object delegate, View host, int action, 5225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov Bundle args); 539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityDelegateStubImpl implements AccessibilityDelegateImpl { 569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateDefaultImpl() { 579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 60956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateBridge(AccessibilityDelegateCompat listener) { 629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return null; 639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 65956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(Object delegate, View host, 679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return false; 699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 71956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(Object delegate, View host, 739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 77956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 78f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(Object delegate, View host, 79f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov AccessibilityNodeInfoCompat info) { 809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 83956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(Object delegate, View host, 859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 89956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(Object delegate, ViewGroup host, View child, 919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return true; 939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 95956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEvent(Object delegate, View host, int eventType) { 979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 100956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 1019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEventUnchecked(Object delegate, View host, 1029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 105956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 106956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 107956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(Object delegate, 108956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov View host) { 109956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return null; 110956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 11125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 11225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov @Override 11325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public boolean performAccessibilityAction(Object delegate, View host, int action, 11425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov Bundle args) { 11525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return false; 11625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 1179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static class AccessibilityDelegateIcsImpl extends AccessibilityDelegateStubImpl { 1209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateDefaultImpl() { 1229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityDelegateCompatIcs.newAccessibilityDelegateDefaultImpl(); 1239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public Object newAccessiblityDelegateBridge(final AccessibilityDelegateCompat compat) { 1279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityDelegateCompatIcs.newAccessibilityDelegateBridge( 1289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov new AccessibilityDelegateCompatIcs.AccessibilityDelegateBridge() { 1299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(View host, 1319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return compat.dispatchPopulateAccessibilityEvent(host, event); 1339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) { 1379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov compat.onInitializeAccessibilityEvent(host, event); 1389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(View host, Object info) { 1429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov compat.onInitializeAccessibilityNodeInfo(host, 1439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov new AccessibilityNodeInfoCompat(info)); 1449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) { 1489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov compat.onPopulateAccessibilityEvent(host, event); 1499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, 1539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return compat.onRequestSendAccessibilityEvent(host, child, event); 1559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEvent(View host, int eventType) { 1599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov compat.sendAccessibilityEvent(host, eventType); 1609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event) { 1649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov compat.sendAccessibilityEventUnchecked(host, event); 1659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov }); 1679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(Object delegate, View host, 1719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityDelegateCompatIcs.dispatchPopulateAccessibilityEvent(delegate, 1739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov host, event); 1749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(Object delegate, View host, 1789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityDelegateCompatIcs.onInitializeAccessibilityEvent(delegate, host, event); 1809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 183f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(Object delegate, View host, 184f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov AccessibilityNodeInfoCompat info) { 185f59ea22d4af49aaebf9a712d39e756f77d9d7790Svetoslav Ganov AccessibilityDelegateCompatIcs.onInitializeAccessibilityNodeInfo(delegate, host, 186956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov info.getInfo()); 1879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(Object delegate, View host, 1919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityDelegateCompatIcs.onPopulateAccessibilityEvent(delegate, host, event); 1939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 1949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 1959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 1969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(Object delegate, ViewGroup host, View child, 1979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 1989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return AccessibilityDelegateCompatIcs.onRequestSendAccessibilityEvent(delegate, host, 1999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov child, event); 2009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 2039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEvent(Object delegate, View host, int eventType) { 2049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityDelegateCompatIcs.sendAccessibilityEvent(delegate, host, eventType); 2059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov @Override 2089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEventUnchecked(Object delegate, View host, 2099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 2109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityDelegateCompatIcs.sendAccessibilityEventUnchecked(delegate, host, event); 2119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 2139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 214956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov static class AccessibilityDelegateJellyBeanImpl extends AccessibilityDelegateIcsImpl { 215956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 216956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public Object newAccessiblityDelegateBridge(final AccessibilityDelegateCompat compat) { 217956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return AccessibilityDelegateCompatJellyBean.newAccessibilityDelegateBridge( 218956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov new AccessibilityDelegateCompatJellyBean 219956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov .AccessibilityDelegateBridgeJellyBean() { 220956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 221956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(View host, 222956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov AccessibilityEvent event) { 223956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return compat.dispatchPopulateAccessibilityEvent(host, event); 224956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 225956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 226956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 227956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) { 228956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov compat.onInitializeAccessibilityEvent(host, event); 229956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 230956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 231956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 232956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(View host, Object info) { 233956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov compat.onInitializeAccessibilityNodeInfo(host, 234956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov new AccessibilityNodeInfoCompat(info)); 235956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 236956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 237956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 238956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) { 239956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov compat.onPopulateAccessibilityEvent(host, event); 240956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 241956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 242956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 243956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, 244956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov AccessibilityEvent event) { 245956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return compat.onRequestSendAccessibilityEvent(host, child, event); 246956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 247956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 248956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 249956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public void sendAccessibilityEvent(View host, int eventType) { 250956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov compat.sendAccessibilityEvent(host, eventType); 251956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 252956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 253956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 254956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event) { 255956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov compat.sendAccessibilityEventUnchecked(host, event); 256956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 257956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 258956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 259956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public Object getAccessibilityNodeProvider(View host) { 26025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov AccessibilityNodeProviderCompat provider = 26125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov compat.getAccessibilityNodeProvider(host); 26225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return (provider != null) ? provider.getProvider() : null; 26325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 26425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 26525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov @Override 26625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public boolean performAccessibilityAction(View host, int action, Bundle args) { 26725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return compat.performAccessibilityAction(host, action, args); 268956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 269956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov }); 270956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 271956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 272956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov @Override 273956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(Object delegate, 274956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov View host) { 275956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov Object provider = AccessibilityDelegateCompatJellyBean.getAccessibilityNodeProvider( 276956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov delegate, host); 277956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov if (provider != null) { 278956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return new AccessibilityNodeProviderCompat(provider); 279956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 280956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return null; 281956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 28225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 28325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov @Override 28425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public boolean performAccessibilityAction(Object delegate, View host, int action, 28525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov Bundle args) { 28625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return AccessibilityDelegateCompatJellyBean.performAccessibilityAction(delegate, 28725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov host, action, args); 28825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 289956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 290956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 2919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private static final AccessibilityDelegateImpl IMPL; 2929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov private static final Object DEFAULT_DELEGATE; 2939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 2949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov static { 295f3ed7c56e6c409d27c60f7d74c026906593c21d4Svetoslav Ganov if (Build.VERSION.SDK_INT >= 16) { // JellyBean 296956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov IMPL = new AccessibilityDelegateJellyBeanImpl(); 297956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } else if (Build.VERSION.SDK_INT >= 14) { // ICS 2989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityDelegateIcsImpl(); 2999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } else { 3009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL = new AccessibilityDelegateStubImpl(); 3019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov DEFAULT_DELEGATE = IMPL.newAccessiblityDelegateDefaultImpl(); 3039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov final Object mBridge; 3069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Creates a new instance. 3099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public AccessibilityDelegateCompat() { 3119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov mBridge = IMPL.newAccessiblityDelegateBridge(this); 3129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return The wrapped bridge implementation. 3169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov Object getBridge() { 3189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return mBridge; 3199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Sends an accessibility event of the given type. If accessibility is not 3239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * enabled this method has no effect. 3249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 3259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as {@link View#sendAccessibilityEvent(int) 3269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * View#sendAccessibilityEvent(int)} for the case of no accessibility delegate 3279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * been set. 3289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 3299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 3319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param eventType The type of the event to send. 3329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see View#sendAccessibilityEvent(int) View#sendAccessibilityEvent(int) 3349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEvent(View host, int eventType) { 3369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.sendAccessibilityEvent(DEFAULT_DELEGATE, host, eventType); 3379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Sends an accessibility event. This method behaves exactly as 3419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link #sendAccessibilityEvent(View, int)} but takes as an argument an 3429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * empty {@link AccessibilityEvent} and does not perform a check whether 3439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * accessibility is enabled. 3449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 3459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 3469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link View#sendAccessibilityEventUnchecked(AccessibilityEvent) 3479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * View#sendAccessibilityEventUnchecked(AccessibilityEvent)} for 3489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 3499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 3509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 3529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param event The event to send. 3539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see View#sendAccessibilityEventUnchecked(AccessibilityEvent) 3559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * View#sendAccessibilityEventUnchecked(AccessibilityEvent) 3569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event) { 3589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.sendAccessibilityEventUnchecked(DEFAULT_DELEGATE, host, event); 3599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Dispatches an {@link AccessibilityEvent} to the host {@link View} first and then 3639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * to its children for adding their text content to the event. 3649648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 3659648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 3669648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link View#dispatchPopulateAccessibilityEvent(AccessibilityEvent) 3679648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * View#dispatchPopulateAccessibilityEvent(AccessibilityEvent)} for 3689648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 3699648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 3709648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3719648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 3729648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param event The event. 3739648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return True if the event population was completed. 3749648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3759648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see View#dispatchPopulateAccessibilityEvent(AccessibilityEvent) 3769648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * View#dispatchPopulateAccessibilityEvent(AccessibilityEvent) 3779648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3789648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean dispatchPopulateAccessibilityEvent(View host, AccessibilityEvent event) { 3799648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.dispatchPopulateAccessibilityEvent(DEFAULT_DELEGATE, host, event); 3809648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 3819648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 3829648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 3839648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Gives a chance to the host View to populate the accessibility event with its 3849648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * text content. 3859648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 3869648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 3879648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link ViewCompat#onPopulateAccessibilityEvent(View, AccessibilityEvent) 3889648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onPopulateAccessibilityEvent(AccessibilityEvent)} for 3899648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 3909648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 3919648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3929648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 3939648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param event The accessibility event which to populate. 3949648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 3959648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see ViewCompat#onPopulateAccessibilityEvent(View ,AccessibilityEvent) 3969648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onPopulateAccessibilityEvent(View, AccessibilityEvent) 3979648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 3989648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) { 3999648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.onPopulateAccessibilityEvent(DEFAULT_DELEGATE, host, event); 4009648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 4019648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 4029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 4039648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Initializes an {@link AccessibilityEvent} with information about the 4049648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the host View which is the event source. 4059648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 4069648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 4079648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link ViewCompat#onInitializeAccessibilityEvent(View v, AccessibilityEvent event) 4089648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onInitalizeAccessibilityEvent(View v, AccessibilityEvent event)} for 4099648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 4109648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 4119648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4129648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 4139648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param event The event to initialize. 4149648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4159648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see ViewCompat#onInitializeAccessibilityEvent(View, AccessibilityEvent) 4169648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onInitializeAccessibilityEvent(View, AccessibilityEvent) 4179648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 4189648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) { 4199648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.onInitializeAccessibilityEvent(DEFAULT_DELEGATE, host, event); 4209648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 4219648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 4229648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 4239648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Initializes an {@link AccessibilityNodeInfoCompat} with information about the host view. 4249648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 4259648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 4269648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link ViewCompat#onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfoCompat) 4279648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfoCompat)} for 4289648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 4299648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 4309648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4319648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 4329648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param info The instance to initialize. 4339648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4349648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see ViewCompat#onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfoCompat) 4359648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewCompat#onInitializeAccessibilityNodeInfo(View, AccessibilityNodeInfoCompat) 4369648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 4379648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) { 4389648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov IMPL.onInitializeAccessibilityNodeInfo(DEFAULT_DELEGATE, host, info); 4399648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 4409648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov 4419648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov /** 4429648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * Called when a child of the host View has requested sending an 4439648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link AccessibilityEvent} and gives an opportunity to the parent (the host) 4449648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * to augment the event. 4459648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * <p> 4469648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * The default implementation behaves as 4479648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * {@link ViewGroupCompat#onRequestSendAccessibilityEvent(ViewGroup, View, AccessibilityEvent) 4489648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewGroupCompat#onRequestSendAccessibilityEvent(ViewGroup, View, AccessibilityEvent)} for 4499648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * the case of no accessibility delegate been set. 4509648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * </p> 4519648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4529648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param host The View hosting the delegate. 4539648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param child The child which requests sending the event. 4549648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @param event The event to be sent. 4559648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @return True if the event should be sent 4569648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * 4579648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * @see ViewGroupCompat#onRequestSendAccessibilityEvent(ViewGroup, View, AccessibilityEvent) 4589648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov * ViewGroupCompat#onRequestSendAccessibilityEvent(ViewGroup, View, AccessibilityEvent) 4599648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov */ 4609648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, 4619648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov AccessibilityEvent event) { 4629648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov return IMPL.onRequestSendAccessibilityEvent(DEFAULT_DELEGATE, host, child, event); 4639648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov } 464956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov 465956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov /** 466956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * Gets the provider for managing a virtual view hierarchy rooted at this View 467956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * and reported to {@link android.accessibilityservice.AccessibilityService}s 468956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * that explore the window content. 469956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * <p> 470956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * The default implementation behaves as 471989cd2fb6badb029b74cf4c88bbf74b1d912bdcaSvetoslav Ganov * {@link ViewCompat#getAccessibilityNodeProvider(View) ViewCompat#getAccessibilityNodeProvider(View)} 47225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * for the case of no accessibility delegate been set. 473956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * </p> 474956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * 475956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * @return The provider. 476956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * 477956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * @see AccessibilityNodeProviderCompat 478956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov */ 479956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov public AccessibilityNodeProviderCompat getAccessibilityNodeProvider(View host) { 480956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov return IMPL.getAccessibilityNodeProvider(DEFAULT_DELEGATE, host); 481956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov } 48225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov 48325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov /** 48425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * Performs the specified accessibility action on the view. For 48525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * possible accessibility actions look at {@link AccessibilityNodeInfoCompat}. 48625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * <p> 48725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * The default implementation behaves as 48825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * {@link View#performAccessibilityAction(int, Bundle) 48925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * View#performAccessibilityAction(int, Bundle)} for the case of 49025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * no accessibility delegate been set. 49125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * </p> 49225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * 49325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @param action The action to perform. 49425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @return Whether the action was performed. 49525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * 49625121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * @see View#performAccessibilityAction(int, Bundle) 49725121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov * View#performAccessibilityAction(int, Bundle) 49825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov */ 49925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov public boolean performAccessibilityAction(View host, int action, Bundle args) { 50025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov return IMPL.performAccessibilityAction(DEFAULT_DELEGATE, host, action, args); 50125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov } 5029648c538bac4f04145c118cc41168d1d7a536312Svetoslav Ganov} 503