Merge "Fix bug 5237737 - ActionBar should fire an accessibility event when action mode is turned on/off"

This commit is contained in:
Adam Powell
2011-09-14 17:32:37 -07:00
committed by Android (Google) Code Review
5 changed files with 28 additions and 3 deletions

View File

@@ -16,6 +16,9 @@
package android.inputmethodservice; package android.inputmethodservice;
import com.android.internal.view.menu.MenuBuilder;
import com.android.internal.view.menu.MenuPopupHelper;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.ActionMode; import android.view.ActionMode;
@@ -23,12 +26,10 @@ import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Button; import android.widget.Button;
import android.widget.LinearLayout; 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 * ExtractEditLayout provides an ActionMode presentation for the
* limited screen real estate in extract mode. * limited screen real estate in extract mode.
@@ -56,6 +57,7 @@ public class ExtractEditLayout extends LinearLayout {
mExtractActionButton.setVisibility(INVISIBLE); mExtractActionButton.setVisibility(INVISIBLE);
mEditButton.setVisibility(VISIBLE); mEditButton.setVisibility(VISIBLE);
mActionMode = mode; mActionMode = mode;
sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
return mode; return mode;
} }
return null; return null;
@@ -158,6 +160,8 @@ public class ExtractEditLayout extends LinearLayout {
mExtractActionButton.setVisibility(VISIBLE); mExtractActionButton.setVisibility(VISIBLE);
mEditButton.setVisibility(INVISIBLE); mEditButton.setVisibility(INVISIBLE);
sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
mActionMode = null; mActionMode = null;
} }

View File

@@ -48,6 +48,7 @@ import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.Window; import android.view.Window;
import android.view.accessibility.AccessibilityEvent;
import android.widget.SpinnerAdapter; import android.widget.SpinnerAdapter;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
@@ -397,6 +398,7 @@ public class ActionBarImpl extends ActionBar {
// TODO animate this // TODO animate this
mSplitView.setVisibility(View.VISIBLE); mSplitView.setVisibility(View.VISIBLE);
} }
mContextView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
mActionMode = mode; mActionMode = mode;
return mode; return mode;
} }
@@ -681,6 +683,7 @@ public class ActionBarImpl extends ActionBar {
// Clear out the context mode views after the animation finishes // Clear out the context mode views after the animation finishes
mContextView.closeMode(); mContextView.closeMode();
mActionView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
mActionMode = null; mActionMode = null;

View File

@@ -26,6 +26,7 @@ import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
@@ -86,6 +87,7 @@ public class StandaloneActionMode extends ActionMode implements MenuBuilder.Call
} }
mFinished = true; mFinished = true;
mContextView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
mCallback.onDestroyActionMode(this); mCallback.onDestroyActionMode(this);
} }

View File

@@ -34,6 +34,7 @@ import android.view.ActionMode;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.DecelerateInterpolator; import android.view.animation.DecelerateInterpolator;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
@@ -455,4 +456,17 @@ public class ActionBarContextView extends AbsActionBarView implements AnimatorLi
public boolean shouldDelayChildPressedState() { public boolean shouldDelayChildPressedState() {
return false; 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);
}
}
} }

View File

@@ -2171,6 +2171,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
if (mActionModePopup != null) { if (mActionModePopup != null) {
post(mShowActionModePopup); post(mShowActionModePopup);
} }
mActionModeView.sendAccessibilityEvent(
AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
} else { } else {
mActionMode = null; mActionMode = null;
} }