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

This commit is contained in:
TreeHugger Robot
2020-06-18 17:28:57 +00:00
committed by Android (Google) Code Review
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.telecom.TelecomManager;
import android.text.format.DateFormat; import android.text.format.DateFormat;
import android.util.Log; import android.util.Log;
import android.view.View;
import androidx.lifecycle.Observer; import androidx.lifecycle.Observer;
@@ -677,12 +678,18 @@ public class PhoneStatusBarPolicy
} }
mIconController.setIcon(mSlotScreenRecord, resourceId, description); mIconController.setIcon(mSlotScreenRecord, resourceId, description);
mIconController.setIconVisibility(mSlotScreenRecord, true); mIconController.setIconVisibility(mSlotScreenRecord, true);
// Set as assertive so talkback will announce the countdown
mIconController.setIconAccessibilityLiveRegion(mSlotScreenRecord,
View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE);
} }
@Override @Override
public void onCountdownEnd() { public void onCountdownEnd() {
if (DEBUG) Log.d(TAG, "screenrecord: hiding icon during countdown"); if (DEBUG) Log.d(TAG, "screenrecord: hiding icon during countdown");
mHandler.post(() -> mIconController.setIconVisibility(mSlotScreenRecord, false)); mHandler.post(() -> mIconController.setIconVisibility(mSlotScreenRecord, false));
// Reset talkback priority
mIconController.setIconAccessibilityLiveRegion(mSlotScreenRecord,
View.ACCESSIBILITY_LIVE_REGION_NONE);
} }
@Override @Override

View File

@@ -67,6 +67,15 @@ public interface StatusBarIconController {
public void setSignalIcon(String slot, WifiIconState state); public void setSignalIcon(String slot, WifiIconState state);
public void setMobileIcons(String slot, List<MobileIconState> states); public void setMobileIcons(String slot, List<MobileIconState> states);
public void setIconVisibility(String slot, boolean b); 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 * 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. * 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); 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) { public void removeIcon(String slot) {
removeAllIconsForSlot(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.StatusBarIconController.IconManager;
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState; import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.MobileIconState;
import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState; import com.android.systemui.statusbar.phone.StatusBarSignalPolicy.WifiIconState;
import java.util.List; import java.util.List;
public class FakeStatusBarIconController extends BaseLeakChecker<IconManager> public class FakeStatusBarIconController extends BaseLeakChecker<IconManager>
@@ -75,4 +76,8 @@ public class FakeStatusBarIconController extends BaseLeakChecker<IconManager>
public void removeAllIconsForSlot(String slot) { public void removeAllIconsForSlot(String slot) {
} }
@Override
public void setIconAccessibilityLiveRegion(String slot, int mode) {
}
} }