1/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.support.v4.view;
18
19import android.view.View;
20import android.view.View.AccessibilityDelegate;
21import android.view.ViewGroup;
22import android.view.accessibility.AccessibilityEvent;
23import android.view.accessibility.AccessibilityNodeInfo;
24
25/**
26 * ICS specific AccessibilityDelegate API implementation.
27 */
28class AccessibilityDelegateCompatIcs {
29
30    public interface AccessibilityDelegateBridge {
31        public boolean dispatchPopulateAccessibilityEvent(View host, AccessibilityEvent event);
32        public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event);
33        public void onInitializeAccessibilityNodeInfo(View host, Object info);
34        public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event);
35        public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
36            AccessibilityEvent event);
37        public void sendAccessibilityEvent(View host, int eventType);
38        public void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event);
39    }
40
41    public static Object newAccessibilityDelegateDefaultImpl() {
42        return new AccessibilityDelegate();
43    }
44
45    public static Object newAccessibilityDelegateBridge(final AccessibilityDelegateBridge bridge) {
46        return new AccessibilityDelegate() {
47            @Override
48            public boolean dispatchPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
49                return bridge.dispatchPopulateAccessibilityEvent(host, event);
50            }
51
52            @Override
53            public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
54                bridge.onInitializeAccessibilityEvent(host, event);
55            }
56
57            @Override
58            public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
59                bridge.onInitializeAccessibilityNodeInfo(host, info);
60            }
61
62            @Override
63            public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
64                bridge.onPopulateAccessibilityEvent(host, event);
65            }
66
67            @Override
68            public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child,
69                    AccessibilityEvent event) {
70                return bridge.onRequestSendAccessibilityEvent(host, child, event);
71            }
72
73            @Override
74            public void sendAccessibilityEvent(View host, int eventType) {
75                bridge.sendAccessibilityEvent(host, eventType);
76            }
77
78            @Override
79            public void sendAccessibilityEventUnchecked(View host, AccessibilityEvent event) {
80                bridge.sendAccessibilityEventUnchecked(host, event);
81            }
82        };
83    }
84
85    public static boolean dispatchPopulateAccessibilityEvent(Object delegate, View host,
86            AccessibilityEvent event) {
87        return ((AccessibilityDelegate) delegate).dispatchPopulateAccessibilityEvent(host, event);
88    }
89
90    public static void onInitializeAccessibilityEvent(Object delegate, View host,
91            AccessibilityEvent event) {
92        ((AccessibilityDelegate) delegate).onInitializeAccessibilityEvent(host, event);
93    }
94
95    public static void onInitializeAccessibilityNodeInfo(Object delegate, View host, Object info) {
96        ((AccessibilityDelegate) delegate).onInitializeAccessibilityNodeInfo(host,
97                (AccessibilityNodeInfo) info);
98    }
99
100    public static void onPopulateAccessibilityEvent(Object delegate, View host,
101            AccessibilityEvent event) {
102        ((AccessibilityDelegate) delegate).onPopulateAccessibilityEvent(host, event);
103    }
104
105    public static boolean onRequestSendAccessibilityEvent(Object delegate, ViewGroup host,
106            View child, AccessibilityEvent event) {
107        return ((AccessibilityDelegate) delegate).onRequestSendAccessibilityEvent(host, child,
108                event);
109    }
110
111    public static void sendAccessibilityEvent(Object delegate, View host, int eventType) {
112        ((AccessibilityDelegate) delegate).sendAccessibilityEvent(host, eventType);
113    }
114
115    public static void sendAccessibilityEventUnchecked(Object delegate, View host,
116            AccessibilityEvent event) {
117        ((AccessibilityDelegate) delegate).sendAccessibilityEventUnchecked(host, event);
118    }
119}
120