diff options
| author | Alan Viverette <alanv@google.com> | 2013-09-12 17:16:09 -0700 |
|---|---|---|
| committer | Alan Viverette <alanv@google.com> | 2013-09-12 17:16:09 -0700 |
| commit | 77e9a28e2faa36f127231b842476d47f9823a83a (patch) | |
| tree | 5637fce8e0565cc1fdd5f0367f38097a472ca6d6 /core/java/android/view/ViewRootImpl.java | |
| parent | 14e55996722db1e74996b837c136a6e188143718 (diff) | |
Add live region politeness to View, AccessibilityNodeInfo
Alters the content change API to contain a bit mask of types of
changes represented by the event. Live regions send CONTENT_CHANGED
events immediately. Removes unused APIs for EXPANDABLE/EXPANDED.
BUG: 10527284
Change-Id: I21523e85e47df23706976dc0a8bf615f83072c04
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 50d5d4598824..38f28ae20354 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -5807,12 +5807,12 @@ public final class ViewRootImpl implements ViewParent, * This event is send at most once every * {@link ViewConfiguration#getSendRecurringAccessibilityEventsInterval()}. */ - private void postSendWindowContentChangedCallback(View source) { + private void postSendWindowContentChangedCallback(View source, int changeType) { if (mSendWindowContentChangedAccessibilityEvent == null) { mSendWindowContentChangedAccessibilityEvent = new SendWindowContentChangedAccessibilityEvent(); } - mSendWindowContentChangedAccessibilityEvent.runOrPost(source); + mSendWindowContentChangedAccessibilityEvent.runOrPost(source, changeType); } /** @@ -5884,8 +5884,8 @@ public final class ViewRootImpl implements ViewParent, } @Override - public void childAccessibilityStateChanged(View child) { - postSendWindowContentChangedCallback(child); + public void notifySubtreeAccessibilityStateChanged(View child, View source, int changeType) { + postSendWindowContentChangedCallback(source, changeType); } @Override @@ -6538,6 +6538,8 @@ public final class ViewRootImpl implements ViewParent, } private class SendWindowContentChangedAccessibilityEvent implements Runnable { + private int mChangeTypes = 0; + public View mSource; public long mLastEventTimeMillis; @@ -6548,7 +6550,7 @@ public final class ViewRootImpl implements ViewParent, mLastEventTimeMillis = SystemClock.uptimeMillis(); AccessibilityEvent event = AccessibilityEvent.obtain(); event.setEventType(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); - event.setContentChangeType(AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE); + event.setContentChangeTypes(mChangeTypes); mSource.sendAccessibilityEventUnchecked(event); } else { mLastEventTimeMillis = 0; @@ -6556,17 +6558,20 @@ public final class ViewRootImpl implements ViewParent, // In any case reset to initial state. mSource.resetSubtreeAccessibilityStateChanged(); mSource = null; + mChangeTypes = 0; } - public void runOrPost(View source) { + public void runOrPost(View source, int changeType) { if (mSource != null) { // If there is no common predecessor, then mSource points to // a removed view, hence in this case always prefer the source. View predecessor = getCommonPredecessor(mSource, source); mSource = (predecessor != null) ? predecessor : source; + mChangeTypes |= changeType; return; } mSource = source; + mChangeTypes = changeType; final long timeSinceLastMillis = SystemClock.uptimeMillis() - mLastEventTimeMillis; final long minEventIntevalMillis = ViewConfiguration.getSendRecurringAccessibilityEventsInterval(); |
