Merge "Set screenrecord a11y live region mode" into rvc-dev am: ce6e7ba108

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11876504

Change-Id: Iea529c92c2a4a336e29c396d3d7163a28ed75605
This commit is contained in:
TreeHugger Robot
2020-06-18 17:41:47 +00:00
committed by Automerger Merge Worker
4 changed files with 37 additions and 0 deletions

View File

@@ -38,6 +38,7 @@ import android.service.notification.ZenModeConfig;
import android.telecom.TelecomManager;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.View;
import androidx.lifecycle.Observer;
@@ -677,12 +678,18 @@ public class PhoneStatusBarPolicy
}
mIconController.setIcon(mSlotScreenRecord, resourceId, description);
mIconController.setIconVisibility(mSlotScreenRecord, true);
// Set as assertive so talkback will announce the countdown
mIconController.setIconAccessibilityLiveRegion(mSlotScreenRecord,
View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE);
}
@Override
public void onCountdownEnd() {
if (DEBUG) Log.d(TAG, "screenrecord: hiding icon during countdown");
mHandler.post(() -> mIconController.setIconVisibility(mSlotScreenRecord, false));
// Reset talkback priority
mIconController.setIconAccessibilityLiveRegion(mSlotScreenRecord,
View.ACCESSIBILITY_LIVE_REGION_NONE);
}
@Override

View File

@@ -67,6 +67,15 @@ public interface StatusBarIconController {
public void setSignalIcon(String slot, WifiIconState state);
public void setMobileIcons(String slot, List<MobileIconState> states);
public void setIconVisibility(String slot, boolean b);
/**
* Sets the live region mode for the icon
* @see android.view.View#setAccessibilityLiveRegion(int)
* @param slot Icon slot to set region for
* @param accessibilityLiveRegion live region mode for the icon
*/
void setIconAccessibilityLiveRegion(String slot, int accessibilityLiveRegion);
/**
* If you don't know what to pass for `tag`, either remove all icons for slot, or use
* TAG_PRIMARY to refer to the first icon at a given slot.

View File

@@ -265,6 +265,22 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu
handleSet(index, holder);
}
@Override
public void setIconAccessibilityLiveRegion(String slotName, int accessibilityLiveRegion) {
Slot slot = getSlot(slotName);
if (!slot.hasIconsInSlot()) {
return;
}
int slotIndex = getSlotIndex(slotName);
List<StatusBarIconHolder> iconsToUpdate = slot.getHolderListInViewOrder();
for (StatusBarIconHolder holder : iconsToUpdate) {
int viewIndex = getViewIndex(slotIndex, holder.getTag());
mIconGroups.forEach(l -> l.mGroup.getChildAt(viewIndex)
.setAccessibilityLiveRegion(accessibilityLiveRegion));
}
}
public void removeIcon(String slot) {
removeAllIconsForSlot(slot);
}

View File

@@ -21,6 +21,7 @@ import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarIconController.IconManager;
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState;
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState;
import java.util.List;
public class FakeStatusBarIconController extends BaseLeakChecker<IconManager>
@@ -75,4 +76,8 @@ public class FakeStatusBarIconController extends BaseLeakChecker<IconManager>
public void removeAllIconsForSlot(String slot) {
}
@Override
public void setIconAccessibilityLiveRegion(String slot, int mode) {
}
}