Merge "Eliminate side effects of a11y window title." into nyc-dev

am: ab4d5ff

* commit 'ab4d5ffd123433d434a8c4e1f3bf2674d99a5fb3':
  Eliminate side effects of a11y window title.

Change-Id: I388abfd86355bc90df4ee3b788bda0a6cd494f81
This commit is contained in:
Phil Weaver
2016-04-09 00:39:20 +00:00
committed by android-build-merger
3 changed files with 26 additions and 3 deletions

View File

@@ -1701,6 +1701,14 @@ public interface WindowManager extends ViewManager {
*/
public int accessibilityIdOfAnchor = -1;
/**
* The window title isn't kept in sync with what is displayed in the title bar, so we
* separately track the currently shown title to provide to accessibility.
*
* @hide
*/
public CharSequence accessibilityTitle;
public LayoutParams() {
super(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
type = TYPE_APPLICATION;
@@ -1749,6 +1757,7 @@ public interface WindowManager extends ViewManager {
title = "";
mTitle = TextUtils.stringOrSpannedString(title);
accessibilityTitle = mTitle;
}
public final CharSequence getTitle() {
@@ -1808,6 +1817,7 @@ public interface WindowManager extends ViewManager {
out.writeInt(hasManualSurfaceInsets ? 1 : 0);
out.writeInt(needsMenuKey);
out.writeInt(accessibilityIdOfAnchor);
TextUtils.writeToParcel(accessibilityTitle, out, parcelableFlags);
}
public static final Parcelable.Creator<LayoutParams> CREATOR
@@ -1859,6 +1869,7 @@ public interface WindowManager extends ViewManager {
hasManualSurfaceInsets = in.readInt() != 0;
needsMenuKey = in.readInt();
accessibilityIdOfAnchor = in.readInt();
accessibilityTitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
}
@SuppressWarnings({"PointlessBitwiseExpression"})
@@ -1900,6 +1911,8 @@ public interface WindowManager extends ViewManager {
/** {@hide} */
public static final int ACCESSIBILITY_ANCHOR_CHANGED = 1 << 24;
/** {@hide} */
public static final int ACCESSIBILITY_TITLE_CHANGED = 1 << 25;
/** {@hide} */
public static final int EVERYTHING_CHANGED = 0xffffffff;
// internal buffer to backup/restore parameters under compatibility mode.
@@ -2065,6 +2078,13 @@ public interface WindowManager extends ViewManager {
changes |= ACCESSIBILITY_ANCHOR_CHANGED;
}
if (!Objects.equals(accessibilityTitle, o.accessibilityTitle)
&& o.accessibilityTitle != null) {
// NOTE: accessibilityTitle only copied if the originator set one.
accessibilityTitle = o.accessibilityTitle;
changes |= ACCESSIBILITY_TITLE_CHANGED;
}
return changes;
}

View File

@@ -516,8 +516,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
}
mTitle = title;
WindowManager.LayoutParams params = getAttributes();
if (!TextUtils.equals(title, params.getTitle())) {
params.setTitle(title);
if (!TextUtils.equals(title, params.accessibilityTitle)) {
params.accessibilityTitle = TextUtils.stringOrSpannedString(title);
dispatchWindowAttributesChanged(getAttributes());
}
}

View File

@@ -1214,7 +1214,10 @@ final class AccessibilityController {
window.type = windowState.mAttrs.type;
window.layer = windowState.mLayer;
window.token = windowState.mClient.asBinder();
window.title = windowState.mAttrs.getTitle();
window.title = windowState.mAttrs.accessibilityTitle;
if (window.title == null) {
window.title = windowState.mAttrs.getTitle();
}
window.accessibilityIdOfAnchor = windowState.mAttrs.accessibilityIdOfAnchor;
WindowState attachedWindow = windowState.mAttachedWindow;