diff options
5 files changed, 28 insertions, 3 deletions
diff --git a/core/java/android/inputmethodservice/ExtractEditLayout.java b/core/java/android/inputmethodservice/ExtractEditLayout.java index 25c0c996a6e5..220214bb894b 100644 --- a/core/java/android/inputmethodservice/ExtractEditLayout.java +++ b/core/java/android/inputmethodservice/ExtractEditLayout.java @@ -16,6 +16,9 @@ package android.inputmethodservice; +import com.android.internal.view.menu.MenuBuilder; +import com.android.internal.view.menu.MenuPopupHelper; + import android.content.Context; import android.util.AttributeSet; import android.view.ActionMode; @@ -23,12 +26,10 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.view.accessibility.AccessibilityEvent; import android.widget.Button; import android.widget.LinearLayout; -import com.android.internal.view.menu.MenuBuilder; -import com.android.internal.view.menu.MenuPopupHelper; - /** * ExtractEditLayout provides an ActionMode presentation for the * limited screen real estate in extract mode. @@ -56,6 +57,7 @@ public class ExtractEditLayout extends LinearLayout { mExtractActionButton.setVisibility(INVISIBLE); mEditButton.setVisibility(VISIBLE); mActionMode = mode; + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); return mode; } return null; @@ -158,6 +160,8 @@ public class ExtractEditLayout extends LinearLayout { mExtractActionButton.setVisibility(VISIBLE); mEditButton.setVisibility(INVISIBLE); + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); + mActionMode = null; } diff --git a/core/java/com/android/internal/app/ActionBarImpl.java b/core/java/com/android/internal/app/ActionBarImpl.java index ccca22ef2d13..afb5bf148484 100644 --- a/core/java/com/android/internal/app/ActionBarImpl.java +++ b/core/java/com/android/internal/app/ActionBarImpl.java @@ -48,6 +48,7 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.Window; +import android.view.accessibility.AccessibilityEvent; import android.widget.SpinnerAdapter; import java.lang.ref.WeakReference; @@ -397,6 +398,7 @@ public class ActionBarImpl extends ActionBar { // TODO animate this mSplitView.setVisibility(View.VISIBLE); } + mContextView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); mActionMode = mode; return mode; } @@ -681,6 +683,7 @@ public class ActionBarImpl extends ActionBar { // Clear out the context mode views after the animation finishes mContextView.closeMode(); + mActionView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); mActionMode = null; diff --git a/core/java/com/android/internal/view/StandaloneActionMode.java b/core/java/com/android/internal/view/StandaloneActionMode.java index b54daba3b96d..ecda47e11134 100644 --- a/core/java/com/android/internal/view/StandaloneActionMode.java +++ b/core/java/com/android/internal/view/StandaloneActionMode.java @@ -26,6 +26,7 @@ import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.view.accessibility.AccessibilityEvent; import java.lang.ref.WeakReference; @@ -86,6 +87,7 @@ public class StandaloneActionMode extends ActionMode implements MenuBuilder.Call } mFinished = true; + mContextView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); mCallback.onDestroyActionMode(this); } diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java index a6313805f08a..7bc33c73baab 100644 --- a/core/java/com/android/internal/widget/ActionBarContextView.java +++ b/core/java/com/android/internal/widget/ActionBarContextView.java @@ -34,6 +34,7 @@ import android.view.ActionMode; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityEvent; import android.view.animation.DecelerateInterpolator; import android.widget.LinearLayout; import android.widget.TextView; @@ -455,4 +456,17 @@ public class ActionBarContextView extends AbsActionBarView implements AnimatorLi public boolean shouldDelayChildPressedState() { return false; } + + @Override + public void onInitializeAccessibilityEvent(AccessibilityEvent event) { + if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) { + // Action mode started + event.setSource(this); + event.setClassName(getClass().getName()); + event.setPackageName(getContext().getPackageName()); + event.setContentDescription(mTitle); + } else { + super.onInitializeAccessibilityEvent(event); + } + } } diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index 20088b1125a8..903b405218af 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -2171,6 +2171,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { if (mActionModePopup != null) { post(mShowActionModePopup); } + mActionModeView.sendAccessibilityEvent( + AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } else { mActionMode = null; } |