Loading api/16.txt +0 −1 Original line number Diff line number Diff line Loading @@ -25344,7 +25344,6 @@ package android.view.accessibility { public abstract class AccessibilityNodeProvider { ctor public AccessibilityNodeProvider(); method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int); method public android.view.accessibility.AccessibilityNodeInfo findAccessibilityFocus(int); method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String, int); method public boolean performAction(int, int, android.os.Bundle); } api/current.txt +0 −1 Original line number Diff line number Diff line Loading @@ -25353,7 +25353,6 @@ package android.view.accessibility { public abstract class AccessibilityNodeProvider { ctor public AccessibilityNodeProvider(); method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int); method public android.view.accessibility.AccessibilityNodeInfo findAccessibilityFocus(int); method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String, int); method public boolean performAction(int, int, android.os.Bundle); } core/java/android/view/AccessibilityInteractionController.java +4 −2 Original line number Diff line number Diff line Loading @@ -480,7 +480,10 @@ final class AccessibilityInteractionController { // focus instead fetching all provider nodes to do the search here. AccessibilityNodeProvider provider = host.getAccessibilityNodeProvider(); if (provider != null) { focused = provider.findAccessibilityFocus(virtualDescendantId); if (mViewRootImpl.mAccessibilityFocusedVirtualView != null) { focused = AccessibilityNodeInfo.obtain( mViewRootImpl.mAccessibilityFocusedVirtualView); } } else if (virtualDescendantId == View.NO_ID) { focused = host.createAccessibilityNodeInfo(); } Loading Loading @@ -804,7 +807,6 @@ final class AccessibilityInteractionController { if (!(root instanceof ViewGroup)) { return; } ViewGroup rootGroup = (ViewGroup) root; HashMap<View, AccessibilityNodeInfo> addedChildren = new HashMap<View, AccessibilityNodeInfo>(); ArrayList<View> children = mTempViewList; Loading core/java/android/view/View.java +3 −28 Original line number Diff line number Diff line Loading @@ -4558,31 +4558,6 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal if ((event.getEventType() & POPULATING_ACCESSIBILITY_EVENT_TYPES) != 0) { dispatchPopulateAccessibilityEvent(event); } // Intercept accessibility focus events fired by virtual nodes to keep // track of accessibility focus position in such nodes. final int eventType = event.getEventType(); switch (eventType) { case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED: { final long virtualNodeId = AccessibilityNodeInfo.getVirtualDescendantId( event.getSourceNodeId()); if (virtualNodeId != AccessibilityNodeInfo.UNDEFINED) { ViewRootImpl viewRootImpl = getViewRootImpl(); if (viewRootImpl != null) { viewRootImpl.setAccessibilityFocusedHost(this); } } } break; case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED: { final long virtualNodeId = AccessibilityNodeInfo.getVirtualDescendantId( event.getSourceNodeId()); if (virtualNodeId != AccessibilityNodeInfo.UNDEFINED) { ViewRootImpl viewRootImpl = getViewRootImpl(); if (viewRootImpl != null) { viewRootImpl.setAccessibilityFocusedHost(null); } } } break; } // In the beginning we called #isShown(), so we know that getParent() is not null. getParent().requestSendAccessibilityEvent(this, event); } Loading Loading @@ -6311,7 +6286,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal mPrivateFlags2 |= ACCESSIBILITY_FOCUSED; ViewRootImpl viewRootImpl = getViewRootImpl(); if (viewRootImpl != null) { viewRootImpl.setAccessibilityFocusedHost(this); viewRootImpl.setAccessibilityFocus(this, null); } invalidate(); sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); Loading Loading @@ -6342,7 +6317,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal if (viewRootImpl != null) { View focusHost = viewRootImpl.getAccessibilityFocusedHost(); if (focusHost != null && ViewRootImpl.isViewDescendantOf(focusHost, this)) { viewRootImpl.setAccessibilityFocusedHost(null); viewRootImpl.setAccessibilityFocus(null, null); } } } Loading Loading @@ -7953,7 +7928,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal // If the window does not have input focus we take away accessibility // focus as soon as the user stop hovering over the view. if (mAttachInfo != null && !mAttachInfo.mHasWindowFocus) { getViewRootImpl().setAccessibilityFocusedHost(null); getViewRootImpl().setAccessibilityFocus(null, null); } } } Loading core/java/android/view/ViewRootImpl.java +33 −38 Original line number Diff line number Diff line Loading @@ -489,7 +489,7 @@ public final class ViewRootImpl implements ViewParent, // Keep track of the actual window flags supplied by the client. mClientWindowLayoutFlags = attrs.flags; setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); if (view instanceof RootViewSurfaceTaker) { mSurfaceHolderCallback = Loading Loading @@ -558,7 +558,7 @@ public final class ViewRootImpl implements ViewParent, mInputChannel = null; mFallbackEventHandler.setView(null); unscheduleTraversals(); setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); throw new RuntimeException("Adding window failed", e); } finally { if (restore) { Loading @@ -578,7 +578,7 @@ public final class ViewRootImpl implements ViewParent, mAdded = false; mFallbackEventHandler.setView(null); unscheduleTraversals(); setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); switch (res) { case WindowManagerImpl.ADD_BAD_APP_TOKEN: case WindowManagerImpl.ADD_BAD_SUBWINDOW_TOKEN: Loading Loading @@ -2319,9 +2319,6 @@ public final class ViewRootImpl implements ViewParent, viewGroup.offsetDescendantRectToMyCoords(mAccessibilityFocusedHost, bounds); } } else { if (mAccessibilityFocusedVirtualView == null) { mAccessibilityFocusedVirtualView = provider.findAccessibilityFocus(View.NO_ID); } if (mAccessibilityFocusedVirtualView == null) { return; } Loading Loading @@ -2498,7 +2495,7 @@ public final class ViewRootImpl implements ViewParent, return mAccessibilityFocusedVirtualView; } void setAccessibilityFocusedHost(View host) { void setAccessibilityFocus(View view, AccessibilityNodeInfo node) { // If we have a virtual view with accessibility focus we need // to clear the focus and invalidate the virtual view bounds. if (mAccessibilityFocusedVirtualView != null) { Loading Loading @@ -2526,24 +2523,16 @@ public final class ViewRootImpl implements ViewParent, provider.performAction(virtualNodeId, AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null); } focusNode.recycle(); } if (mAccessibilityFocusedHost != null) { // Clear accessibility focus in the view. mAccessibilityFocusedHost.clearAccessibilityFocusNoCallbacks(); } // Set the new focus host. mAccessibilityFocusedHost = host; // If the host has a provide find the virtual descendant that has focus. if (mAccessibilityFocusedHost != null) { AccessibilityNodeProvider provider = mAccessibilityFocusedHost.getAccessibilityNodeProvider(); if (provider != null) { mAccessibilityFocusedVirtualView = provider.findAccessibilityFocus(View.NO_ID); return; } } // Set the new focus host and node. mAccessibilityFocusedHost = view; mAccessibilityFocusedVirtualView = node; } public void requestChildFocus(View child, View focused) { Loading Loading @@ -2629,7 +2618,7 @@ public final class ViewRootImpl implements ViewParent, destroyHardwareRenderer(); setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); mView = null; mAttachInfo.mRootView = null; Loading Loading @@ -2910,7 +2899,7 @@ public final class ViewRootImpl implements ViewParent, mHasHadWindowFocus = true; } setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); if (mView != null && mAccessibilityManager.isEnabled()) { if (hasWindowFocus) { Loading Loading @@ -2982,7 +2971,7 @@ public final class ViewRootImpl implements ViewParent, invalidateDisplayLists(); } break; case MSG_CLEAR_ACCESSIBILITY_FOCUS_HOST: { setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); } break; case MSG_DISPATCH_DONE_ANIMATING: { handleDispatchDoneAnimating(); Loading Loading @@ -4538,29 +4527,35 @@ public final class ViewRootImpl implements ViewParent, if (mView == null) { return false; } // Watch for accessibility focus change events from virtual nodes // to keep track of accessibility focus being on a virtual node. // Intercept accessibility focus events fired by virtual nodes to keep // track of accessibility focus position in such nodes. final int eventType = event.getEventType(); switch (eventType) { case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED: { final long sourceId = event.getSourceNodeId(); // If the event is not from a virtual node we are not interested. final int virtualViewId = AccessibilityNodeInfo.getVirtualDescendantId(sourceId); if (virtualViewId == AccessibilityNodeInfo.UNDEFINED) { break; final long sourceNodeId = event.getSourceNodeId(); final int accessibilityViewId = AccessibilityNodeInfo.getAccessibilityViewId( sourceNodeId); View source = mView.findViewByAccessibilityId(accessibilityViewId); if (source != null) { AccessibilityNodeProvider provider = source.getAccessibilityNodeProvider(); if (provider != null) { AccessibilityNodeInfo node = provider.createAccessibilityNodeInfo( AccessibilityNodeInfo.getVirtualDescendantId(sourceNodeId)); setAccessibilityFocus(source, node); } } final int realViewId = AccessibilityNodeInfo.getAccessibilityViewId(sourceId); View focusHost = mView.findViewByAccessibilityId(realViewId); setAccessibilityFocusedHost(focusHost); } break; case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED: { final long sourceId = event.getSourceNodeId(); // If the event is not from a virtual node we are not interested. final int virtualViewId = AccessibilityNodeInfo.getVirtualDescendantId(sourceId); if (virtualViewId == AccessibilityNodeInfo.UNDEFINED) { break; final long sourceNodeId = event.getSourceNodeId(); final int accessibilityViewId = AccessibilityNodeInfo.getAccessibilityViewId( sourceNodeId); View source = mView.findViewByAccessibilityId(accessibilityViewId); if (source != null) { AccessibilityNodeProvider provider = source.getAccessibilityNodeProvider(); if (provider != null) { setAccessibilityFocus(null, null); } } setAccessibilityFocusedHost(null); } break; } mAccessibilityManager.sendAccessibilityEvent(event); Loading Loading
api/16.txt +0 −1 Original line number Diff line number Diff line Loading @@ -25344,7 +25344,6 @@ package android.view.accessibility { public abstract class AccessibilityNodeProvider { ctor public AccessibilityNodeProvider(); method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int); method public android.view.accessibility.AccessibilityNodeInfo findAccessibilityFocus(int); method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String, int); method public boolean performAction(int, int, android.os.Bundle); }
api/current.txt +0 −1 Original line number Diff line number Diff line Loading @@ -25353,7 +25353,6 @@ package android.view.accessibility { public abstract class AccessibilityNodeProvider { ctor public AccessibilityNodeProvider(); method public android.view.accessibility.AccessibilityNodeInfo createAccessibilityNodeInfo(int); method public android.view.accessibility.AccessibilityNodeInfo findAccessibilityFocus(int); method public java.util.List<android.view.accessibility.AccessibilityNodeInfo> findAccessibilityNodeInfosByText(java.lang.String, int); method public boolean performAction(int, int, android.os.Bundle); }
core/java/android/view/AccessibilityInteractionController.java +4 −2 Original line number Diff line number Diff line Loading @@ -480,7 +480,10 @@ final class AccessibilityInteractionController { // focus instead fetching all provider nodes to do the search here. AccessibilityNodeProvider provider = host.getAccessibilityNodeProvider(); if (provider != null) { focused = provider.findAccessibilityFocus(virtualDescendantId); if (mViewRootImpl.mAccessibilityFocusedVirtualView != null) { focused = AccessibilityNodeInfo.obtain( mViewRootImpl.mAccessibilityFocusedVirtualView); } } else if (virtualDescendantId == View.NO_ID) { focused = host.createAccessibilityNodeInfo(); } Loading Loading @@ -804,7 +807,6 @@ final class AccessibilityInteractionController { if (!(root instanceof ViewGroup)) { return; } ViewGroup rootGroup = (ViewGroup) root; HashMap<View, AccessibilityNodeInfo> addedChildren = new HashMap<View, AccessibilityNodeInfo>(); ArrayList<View> children = mTempViewList; Loading
core/java/android/view/View.java +3 −28 Original line number Diff line number Diff line Loading @@ -4558,31 +4558,6 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal if ((event.getEventType() & POPULATING_ACCESSIBILITY_EVENT_TYPES) != 0) { dispatchPopulateAccessibilityEvent(event); } // Intercept accessibility focus events fired by virtual nodes to keep // track of accessibility focus position in such nodes. final int eventType = event.getEventType(); switch (eventType) { case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED: { final long virtualNodeId = AccessibilityNodeInfo.getVirtualDescendantId( event.getSourceNodeId()); if (virtualNodeId != AccessibilityNodeInfo.UNDEFINED) { ViewRootImpl viewRootImpl = getViewRootImpl(); if (viewRootImpl != null) { viewRootImpl.setAccessibilityFocusedHost(this); } } } break; case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED: { final long virtualNodeId = AccessibilityNodeInfo.getVirtualDescendantId( event.getSourceNodeId()); if (virtualNodeId != AccessibilityNodeInfo.UNDEFINED) { ViewRootImpl viewRootImpl = getViewRootImpl(); if (viewRootImpl != null) { viewRootImpl.setAccessibilityFocusedHost(null); } } } break; } // In the beginning we called #isShown(), so we know that getParent() is not null. getParent().requestSendAccessibilityEvent(this, event); } Loading Loading @@ -6311,7 +6286,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal mPrivateFlags2 |= ACCESSIBILITY_FOCUSED; ViewRootImpl viewRootImpl = getViewRootImpl(); if (viewRootImpl != null) { viewRootImpl.setAccessibilityFocusedHost(this); viewRootImpl.setAccessibilityFocus(this, null); } invalidate(); sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); Loading Loading @@ -6342,7 +6317,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal if (viewRootImpl != null) { View focusHost = viewRootImpl.getAccessibilityFocusedHost(); if (focusHost != null && ViewRootImpl.isViewDescendantOf(focusHost, this)) { viewRootImpl.setAccessibilityFocusedHost(null); viewRootImpl.setAccessibilityFocus(null, null); } } } Loading Loading @@ -7953,7 +7928,7 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal // If the window does not have input focus we take away accessibility // focus as soon as the user stop hovering over the view. if (mAttachInfo != null && !mAttachInfo.mHasWindowFocus) { getViewRootImpl().setAccessibilityFocusedHost(null); getViewRootImpl().setAccessibilityFocus(null, null); } } } Loading
core/java/android/view/ViewRootImpl.java +33 −38 Original line number Diff line number Diff line Loading @@ -489,7 +489,7 @@ public final class ViewRootImpl implements ViewParent, // Keep track of the actual window flags supplied by the client. mClientWindowLayoutFlags = attrs.flags; setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); if (view instanceof RootViewSurfaceTaker) { mSurfaceHolderCallback = Loading Loading @@ -558,7 +558,7 @@ public final class ViewRootImpl implements ViewParent, mInputChannel = null; mFallbackEventHandler.setView(null); unscheduleTraversals(); setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); throw new RuntimeException("Adding window failed", e); } finally { if (restore) { Loading @@ -578,7 +578,7 @@ public final class ViewRootImpl implements ViewParent, mAdded = false; mFallbackEventHandler.setView(null); unscheduleTraversals(); setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); switch (res) { case WindowManagerImpl.ADD_BAD_APP_TOKEN: case WindowManagerImpl.ADD_BAD_SUBWINDOW_TOKEN: Loading Loading @@ -2319,9 +2319,6 @@ public final class ViewRootImpl implements ViewParent, viewGroup.offsetDescendantRectToMyCoords(mAccessibilityFocusedHost, bounds); } } else { if (mAccessibilityFocusedVirtualView == null) { mAccessibilityFocusedVirtualView = provider.findAccessibilityFocus(View.NO_ID); } if (mAccessibilityFocusedVirtualView == null) { return; } Loading Loading @@ -2498,7 +2495,7 @@ public final class ViewRootImpl implements ViewParent, return mAccessibilityFocusedVirtualView; } void setAccessibilityFocusedHost(View host) { void setAccessibilityFocus(View view, AccessibilityNodeInfo node) { // If we have a virtual view with accessibility focus we need // to clear the focus and invalidate the virtual view bounds. if (mAccessibilityFocusedVirtualView != null) { Loading Loading @@ -2526,24 +2523,16 @@ public final class ViewRootImpl implements ViewParent, provider.performAction(virtualNodeId, AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null); } focusNode.recycle(); } if (mAccessibilityFocusedHost != null) { // Clear accessibility focus in the view. mAccessibilityFocusedHost.clearAccessibilityFocusNoCallbacks(); } // Set the new focus host. mAccessibilityFocusedHost = host; // If the host has a provide find the virtual descendant that has focus. if (mAccessibilityFocusedHost != null) { AccessibilityNodeProvider provider = mAccessibilityFocusedHost.getAccessibilityNodeProvider(); if (provider != null) { mAccessibilityFocusedVirtualView = provider.findAccessibilityFocus(View.NO_ID); return; } } // Set the new focus host and node. mAccessibilityFocusedHost = view; mAccessibilityFocusedVirtualView = node; } public void requestChildFocus(View child, View focused) { Loading Loading @@ -2629,7 +2618,7 @@ public final class ViewRootImpl implements ViewParent, destroyHardwareRenderer(); setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); mView = null; mAttachInfo.mRootView = null; Loading Loading @@ -2910,7 +2899,7 @@ public final class ViewRootImpl implements ViewParent, mHasHadWindowFocus = true; } setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); if (mView != null && mAccessibilityManager.isEnabled()) { if (hasWindowFocus) { Loading Loading @@ -2982,7 +2971,7 @@ public final class ViewRootImpl implements ViewParent, invalidateDisplayLists(); } break; case MSG_CLEAR_ACCESSIBILITY_FOCUS_HOST: { setAccessibilityFocusedHost(null); setAccessibilityFocus(null, null); } break; case MSG_DISPATCH_DONE_ANIMATING: { handleDispatchDoneAnimating(); Loading Loading @@ -4538,29 +4527,35 @@ public final class ViewRootImpl implements ViewParent, if (mView == null) { return false; } // Watch for accessibility focus change events from virtual nodes // to keep track of accessibility focus being on a virtual node. // Intercept accessibility focus events fired by virtual nodes to keep // track of accessibility focus position in such nodes. final int eventType = event.getEventType(); switch (eventType) { case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED: { final long sourceId = event.getSourceNodeId(); // If the event is not from a virtual node we are not interested. final int virtualViewId = AccessibilityNodeInfo.getVirtualDescendantId(sourceId); if (virtualViewId == AccessibilityNodeInfo.UNDEFINED) { break; final long sourceNodeId = event.getSourceNodeId(); final int accessibilityViewId = AccessibilityNodeInfo.getAccessibilityViewId( sourceNodeId); View source = mView.findViewByAccessibilityId(accessibilityViewId); if (source != null) { AccessibilityNodeProvider provider = source.getAccessibilityNodeProvider(); if (provider != null) { AccessibilityNodeInfo node = provider.createAccessibilityNodeInfo( AccessibilityNodeInfo.getVirtualDescendantId(sourceNodeId)); setAccessibilityFocus(source, node); } } final int realViewId = AccessibilityNodeInfo.getAccessibilityViewId(sourceId); View focusHost = mView.findViewByAccessibilityId(realViewId); setAccessibilityFocusedHost(focusHost); } break; case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED: { final long sourceId = event.getSourceNodeId(); // If the event is not from a virtual node we are not interested. final int virtualViewId = AccessibilityNodeInfo.getVirtualDescendantId(sourceId); if (virtualViewId == AccessibilityNodeInfo.UNDEFINED) { break; final long sourceNodeId = event.getSourceNodeId(); final int accessibilityViewId = AccessibilityNodeInfo.getAccessibilityViewId( sourceNodeId); View source = mView.findViewByAccessibilityId(accessibilityViewId); if (source != null) { AccessibilityNodeProvider provider = source.getAccessibilityNodeProvider(); if (provider != null) { setAccessibilityFocus(null, null); } } setAccessibilityFocusedHost(null); } break; } mAccessibilityManager.sendAccessibilityEvent(event); Loading