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