summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorSvetoslav <svetoslavganov@google.com>2013-06-10 12:51:09 -0700
committerSvetoslav <svetoslavganov@google.com>2013-06-10 12:51:14 -0700
commit00dbe81fea7be57ee2ff8a97844faf1bc15a427f (patch)
treec2113ec9d2a16aa2cbf52ce2817e7584b97deb7e /core/java/android
parentbe4e6aaa0252dd7da28b7aa85beba982538efa46 (diff)
Notification for changed subtree in accessibility mode not fired properly.
We fire notifications that the a view subtree changed for accessibility. In some cases the notifications were fired if accessibility is not enabled. This is now fixed. Also the runnable for making the recurring subtree change was not dequeued if it was pending but we received a request which we decided to run immediately. bug:9337912 Change-Id: I27401b3d11f81c653e8761a704ee530263b08c3a
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/view/View.java3
-rw-r--r--core/java/android/view/ViewGroup.java4
-rw-r--r--core/java/android/view/ViewRootImpl.java11
-rw-r--r--core/java/android/widget/AdapterView.java2
4 files changed, 10 insertions, 10 deletions
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 55a8f747b5b2..05c82ae6afa1 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -7024,7 +7024,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*
* @hide
*/
- private void notifySubtreeAccessibilityStateChangedIfNeeded() {
+ public void notifySubtreeAccessibilityStateChangedIfNeeded() {
if (!AccessibilityManager.getInstance(mContext).isEnabled()) {
return;
}
@@ -18867,6 +18867,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
final long minEventIntevalMillis =
ViewConfiguration.getSendRecurringAccessibilityEventsInterval();
if (timeSinceLastMillis >= minEventIntevalMillis) {
+ removeCallbacks(this);
run();
} else {
postDelayed(this, minEventIntevalMillis - timeSinceLastMillis);
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index caed4a27d495..29b2e4bea80c 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -3595,7 +3595,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
}
if (child.isImportantForAccessibility() && child.getVisibility() != View.GONE) {
- childAccessibilityStateChanged(child);
+ notifySubtreeAccessibilityStateChangedIfNeeded();
}
}
@@ -3838,7 +3838,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
onViewRemoved(view);
if (view.isImportantForAccessibility() && view.getVisibility() != View.GONE) {
- childAccessibilityStateChanged(view);
+ notifySubtreeAccessibilityStateChangedIfNeeded();
}
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index a5f92de09294..bf1f07b9d9c2 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -6397,12 +6397,10 @@ public final class ViewRootImpl implements ViewParent,
public void run() {
mLastEventTimeMillis = SystemClock.uptimeMillis();
- if (AccessibilityManager.getInstance(mContext).isEnabled()) {
- AccessibilityEvent event = AccessibilityEvent.obtain();
- event.setEventType(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
- event.setContentChangeType(AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
- mSource.sendAccessibilityEventUnchecked(event);
- }
+ AccessibilityEvent event = AccessibilityEvent.obtain();
+ event.setEventType(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
+ event.setContentChangeType(AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
+ mSource.sendAccessibilityEventUnchecked(event);
mSource.resetSubtreeAccessibilityStateChanged();
mSource = null;
}
@@ -6417,6 +6415,7 @@ public final class ViewRootImpl implements ViewParent,
final long minEventIntevalMillis =
ViewConfiguration.getSendRecurringAccessibilityEventsInterval();
if (timeSinceLastMillis >= minEventIntevalMillis) {
+ mSource.removeCallbacks(this);
run();
} else {
mSource.postDelayed(this, minEventIntevalMillis - timeSinceLastMillis);
diff --git a/core/java/android/widget/AdapterView.java b/core/java/android/widget/AdapterView.java
index 4a2df58c5415..31ab0afa4334 100644
--- a/core/java/android/widget/AdapterView.java
+++ b/core/java/android/widget/AdapterView.java
@@ -1033,7 +1033,7 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
checkSelectionChanged();
}
- childAccessibilityStateChanged(this);
+ notifySubtreeAccessibilityStateChangedIfNeeded();
}
void checkSelectionChanged() {