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