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