summaryrefslogtreecommitdiff
path: root/core/java/android/view/ViewRootImpl.java
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2013-09-12 17:16:09 -0700
committerAlan Viverette <alanv@google.com>2013-09-12 17:16:09 -0700
commit77e9a28e2faa36f127231b842476d47f9823a83a (patch)
tree5637fce8e0565cc1fdd5f0367f38097a472ca6d6 /core/java/android/view/ViewRootImpl.java
parent14e55996722db1e74996b837c136a6e188143718 (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.java17
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();