1956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov/*
2956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * Copyright (C) 2012 The Android Open Source Project
3956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov *
4956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License");
5956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * you may not use this file except in compliance with the License.
6956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * You may obtain a copy of the License at
7956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov *
8956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov *      http://www.apache.org/licenses/LICENSE-2.0
9956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov *
10956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * Unless required by applicable law or agreed to in writing, software
11956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS,
12956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * See the License for the specific language governing permissions and
14956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * limitations under the License.
15956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov */
16956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
17956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganovpackage android.support.v4.view;
18956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
1925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganovimport android.os.Bundle;
20956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganovimport android.view.View;
21956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganovimport android.view.View.AccessibilityDelegate;
22956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganovimport android.view.ViewGroup;
23956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganovimport android.view.accessibility.AccessibilityEvent;
24956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganovimport android.view.accessibility.AccessibilityNodeInfo;
25956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganovimport android.view.accessibility.AccessibilityNodeProvider;
26956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
27956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov/**
28956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov * JellyBean specific AccessibilityDelegate API implementation.
29956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov */
30956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganovclass AccessibilityDelegateCompatJellyBean {
31956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
32956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    public interface AccessibilityDelegateBridgeJellyBean {
33956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        public boolean dispatchPopulateAccessibilityEvent(View host, AccessibilityEvent event);
34956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event);
35956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        public void onInitializeAccessibilityNodeInfo(View host, Object info);
36956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event);
37956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
38956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            AccessibilityEvent event);
39956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        public void sendAccessibilityEvent(View host, int eventType);
40956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        public void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event);
41956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        public Object getAccessibilityNodeProvider(View host);
4225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov        public boolean performAccessibilityAction(View host, int action, Bundle args);
43956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    }
44956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
45956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    public static Object newAccessibilityDelegateBridge(
46956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            final AccessibilityDelegateBridgeJellyBean bridge) {
47956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        return new AccessibilityDelegate() {
4825121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov
49956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            @Override
50956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            public boolean dispatchPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
51956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov                return bridge.dispatchPopulateAccessibilityEvent(host, event);
52956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            }
53956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
54956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            @Override
55956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
56956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov                bridge.onInitializeAccessibilityEvent(host, event);
57956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            }
58956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
59956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            @Override
60956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
61956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov                bridge.onInitializeAccessibilityNodeInfo(host, info);
62956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            }
63956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
64956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            @Override
65956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
66956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov                bridge.onPopulateAccessibilityEvent(host, event);
67956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            }
68956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
69956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            @Override
70956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
71956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov                    AccessibilityEvent event) {
72956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov                return bridge.onRequestSendAccessibilityEvent(host, child, event);
73956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            }
74956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
75956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            @Override
76956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            public void sendAccessibilityEvent(View host, int eventType) {
77956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov                bridge.sendAccessibilityEvent(host, eventType);
78956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            }
79956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
80956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            @Override
81956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            public void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event) {
82956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov                bridge.sendAccessibilityEventUnchecked(host, event);
83956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            }
84956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
85956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            @Override
86956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            public AccessibilityNodeProvider getAccessibilityNodeProvider(View host) {
87956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov                return (AccessibilityNodeProvider) bridge.getAccessibilityNodeProvider(host);
88956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            }
8925121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov
9025121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov            @Override
9125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov            public boolean performAccessibilityAction(View host, int action, Bundle args) {
9225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov                return bridge.performAccessibilityAction(host, action, args);
9325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov            }
94956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        };
95956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    }
96956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov
97956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    public static Object getAccessibilityNodeProvider(Object delegate,
98956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov            View host) {
99956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov        return ((AccessibilityDelegate) delegate).getAccessibilityNodeProvider(host);
100956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov    }
10125121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov
10225121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov    public static boolean performAccessibilityAction(Object delegate, View host, int action,
10325121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov            Bundle args) {
10425121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov        return ((AccessibilityDelegate) delegate).performAccessibilityAction(host, action, args);
10525121559b53b9f6c7ef7159203d42e11b9aee281Svetoslav Ganov    }
106956b013dfda37760b0232ed6d448900a546d2903Svetoslav Ganov}
107