diff options
9 files changed, 157 insertions, 35 deletions
diff --git a/packages/SystemUI/res/drawable/dream_overlay_camera_off.xml b/packages/SystemUI/res/drawable/dream_overlay_camera_off.xml new file mode 100644 index 000000000000..159655e39d24 --- /dev/null +++ b/packages/SystemUI/res/drawable/dream_overlay_camera_off.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2022 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="56dp" + android:height="24dp" + android:viewportWidth="56" + android:viewportHeight="24"> + <path + android:pathData="M12,0L44,0A12,12 0,0 1,56 12L56,12A12,12 0,0 1,44 24L12,24A12,12 0,0 1,0 12L0,12A12,12 0,0 1,12 0z" + android:fillColor="#5F6368"/> + <path + android:pathData="M21.872,5.873L20.926,6.813L21.492,7.38C21.392,7.566 21.332,7.773 21.332,8V16C21.332,16.733 21.932,17.333 22.666,17.333H30.666C30.892,17.333 31.099,17.273 31.286,17.173L33.186,19.073L34.126,18.133L31.999,16L21.872,5.873ZM31.999,10.986V8C31.999,7.266 31.399,6.666 30.666,6.666H24.552L25.886,8H30.666V12.78L31.999,14.113V13.013L34.666,15.666V8.333L31.999,10.986ZM22.666,8.553V16H30.112L22.666,8.553Z" + android:fillColor="#ffffff" + android:fillType="evenOdd"/> +</vector> diff --git a/packages/SystemUI/res/drawable/dream_overlay_mic_and_camera_off.xml b/packages/SystemUI/res/drawable/dream_overlay_mic_and_camera_off.xml new file mode 100644 index 000000000000..087dde78833f --- /dev/null +++ b/packages/SystemUI/res/drawable/dream_overlay_mic_and_camera_off.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2022 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="56dp" + android:height="24dp" + android:viewportWidth="56" + android:viewportHeight="24"> + <path + android:pathData="M12,0L44,0A12,12 0,0 1,56 12L56,12A12,12 0,0 1,44 24L12,24A12,12 0,0 1,0 12L0,12A12,12 0,0 1,12 0z" + android:fillColor="#5F6368"/> + <path + android:pathData="M15.332,7.333C15.332,6.966 15.632,6.666 15.999,6.666C16.366,6.666 16.666,6.966 16.666,7.333V10.78L17.879,11.993C17.952,11.786 17.999,11.566 17.999,11.333V7.333C17.999,6.226 17.106,5.333 15.999,5.333C14.892,5.333 13.999,6.226 13.999,7.333V8.113L15.332,9.446V7.333ZM9.872,5.873L8.926,6.813L16.692,14.58C16.472,14.633 16.239,14.666 15.999,14.666C14.159,14.666 12.666,13.173 12.666,11.333H11.332C11.332,13.686 13.072,15.62 15.332,15.946V18H16.666V15.946C17.046,15.893 17.412,15.786 17.759,15.64L21.186,19.066L22.126,18.126L9.872,5.873ZM19.332,11.333H20.666C20.666,12.313 20.359,13.213 19.846,13.96L18.872,12.986C19.159,12.5 19.332,11.94 19.332,11.333Z" + android:fillColor="#ffffff" + android:fillType="evenOdd"/> + <path + android:pathData="M33.872,5.873L32.926,6.813L33.492,7.38C33.392,7.566 33.332,7.773 33.332,8V16C33.332,16.733 33.932,17.333 34.666,17.333H42.666C42.892,17.333 43.099,17.273 43.286,17.173L45.186,19.073L46.126,18.133L43.999,16L33.872,5.873ZM43.999,10.986V8C43.999,7.266 43.399,6.666 42.666,6.666H36.552L37.886,8H42.666V12.78L43.999,14.113V13.013L46.666,15.666V8.333L43.999,10.986ZM34.666,8.553V16H42.112L34.666,8.553Z" + android:fillColor="#ffffff" + android:fillType="evenOdd"/> +</vector> diff --git a/packages/SystemUI/res/drawable/dream_overlay_mic_off.xml b/packages/SystemUI/res/drawable/dream_overlay_mic_off.xml new file mode 100644 index 000000000000..693250d39f95 --- /dev/null +++ b/packages/SystemUI/res/drawable/dream_overlay_mic_off.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2022 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License + --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="56dp" + android:height="24dp" + android:viewportWidth="56" + android:viewportHeight="24"> + <path + android:pathData="M12,0L44,0A12,12 0,0 1,56 12L56,12A12,12 0,0 1,44 24L12,24A12,12 0,0 1,0 12L0,12A12,12 0,0 1,12 0z" + android:fillColor="#5F6368"/> + <path + android:pathData="M27.807,7.133C27.807,6.767 28.107,6.467 28.473,6.467C28.84,6.467 29.14,6.767 29.14,7.133V10.58L30.353,11.793C30.427,11.587 30.473,11.367 30.473,11.133V7.133C30.473,6.027 29.58,5.133 28.473,5.133C27.367,5.133 26.473,6.027 26.473,7.133V7.913L27.807,9.247V7.133ZM22.347,5.673L21.4,6.613L29.167,14.38C28.947,14.433 28.713,14.467 28.473,14.467C26.633,14.467 25.14,12.973 25.14,11.133H23.807C23.807,13.487 25.547,15.42 27.807,15.747V17.8H29.14V15.747C29.52,15.693 29.887,15.587 30.233,15.44L33.66,18.867L34.6,17.927L22.347,5.673ZM31.807,11.133H33.14C33.14,12.113 32.833,13.013 32.32,13.76L31.347,12.787C31.633,12.3 31.807,11.74 31.807,11.133Z" + android:fillColor="#ffffff" + android:fillType="evenOdd"/> +</vector> diff --git a/packages/SystemUI/res/layout/dream_overlay_status_bar_view.xml b/packages/SystemUI/res/layout/dream_overlay_status_bar_view.xml index d0f4903a3421..70a770912c7f 100644 --- a/packages/SystemUI/res/layout/dream_overlay_status_bar_view.xml +++ b/packages/SystemUI/res/layout/dream_overlay_status_bar_view.xml @@ -70,15 +70,32 @@ android:visibility="gone" android:contentDescription="@string/dream_overlay_status_bar_wifi_off" /> - <com.android.systemui.dreams.DreamOverlayDotImageView + <ImageView + android:id="@+id/dream_overlay_mic_off" + android:layout_width="@dimen/dream_overlay_grey_chip_width" + android:layout_height="match_parent" + android:layout_marginEnd="@dimen/dream_overlay_status_icon_margin" + android:src="@drawable/dream_overlay_mic_off" + android:visibility="gone" + android:contentDescription="@string/dream_overlay_status_bar_mic_off" /> + + <ImageView + android:id="@+id/dream_overlay_camera_off" + android:layout_width="@dimen/dream_overlay_grey_chip_width" + android:layout_height="match_parent" + android:layout_marginEnd="@dimen/dream_overlay_status_icon_margin" + android:src="@drawable/dream_overlay_camera_off" + android:visibility="gone" + android:contentDescription="@string/dream_overlay_status_bar_camera_off" /> + + <ImageView android:id="@+id/dream_overlay_camera_mic_off" - android:layout_width="@dimen/dream_overlay_camera_mic_off_indicator_size" - android:layout_height="@dimen/dream_overlay_camera_mic_off_indicator_size" - android:layout_gravity="center_vertical" + android:layout_width="@dimen/dream_overlay_grey_chip_width" + android:layout_height="match_parent" android:layout_marginEnd="@dimen/dream_overlay_status_icon_margin" + android:src="@drawable/dream_overlay_mic_and_camera_off" android:visibility="gone" - android:contentDescription="@string/dream_overlay_status_bar_camera_mic_off" - app:dotColor="@color/dream_overlay_camera_mic_off_dot_color" /> + android:contentDescription="@string/dream_overlay_status_bar_camera_mic_off" /> </LinearLayout> </com.android.systemui.dreams.DreamOverlayStatusBarView> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 13250c879d5d..ec69d720413f 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -1443,6 +1443,7 @@ @*android:dimen/status_bar_system_icon_size</dimen> <dimen name="dream_overlay_camera_mic_off_indicator_size">8dp</dimen> <dimen name="dream_overlay_notification_indicator_size">6dp</dimen> + <dimen name="dream_overlay_grey_chip_width">56dp</dimen> <!-- Dream overlay complications related dimensions --> <dimen name="dream_overlay_complication_clock_time_text_size">100sp</dimen> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 01b919490f90..9c2542cbd05f 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -2555,6 +2555,10 @@ <string name="dream_overlay_status_bar_priority_mode">Priority mode</string> <!-- Content description for the alarm set icon in the dream overlay status bar [CHAR LIMIT=NONE] --> <string name="dream_overlay_status_bar_alarm_set">Alarm set</string> + <!-- Content description for the camera off icon in the dream overlay status bar [CHAR LIMIT=NONE] --> + <string name="dream_overlay_status_bar_camera_off">Camera is off</string> + <!-- Content description for the mic off icon in the dream overlay status bar [CHAR LIMIT=NONE] --> + <string name="dream_overlay_status_bar_mic_off">Mic is off</string> <!-- Content description for the camera and mic off icon in the dream overlay status bar [CHAR LIMIT=NONE] --> <string name="dream_overlay_status_bar_camera_mic_off">Camera and mic are off</string> <!-- Content description for the notifications indicator icon in the dream overlay status bar [CHAR LIMIT=NONE] --> diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarView.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarView.java index 59a17bad5069..a25257d6cf42 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarView.java @@ -43,6 +43,8 @@ public class DreamOverlayStatusBarView extends ConstraintLayout { STATUS_ICON_NOTIFICATIONS, STATUS_ICON_WIFI_UNAVAILABLE, STATUS_ICON_ALARM_SET, + STATUS_ICON_CAMERA_DISABLED, + STATUS_ICON_MIC_DISABLED, STATUS_ICON_MIC_CAMERA_DISABLED, STATUS_ICON_PRIORITY_MODE_ON }) @@ -50,8 +52,10 @@ public class DreamOverlayStatusBarView extends ConstraintLayout { public static final int STATUS_ICON_NOTIFICATIONS = 0; public static final int STATUS_ICON_WIFI_UNAVAILABLE = 1; public static final int STATUS_ICON_ALARM_SET = 2; - public static final int STATUS_ICON_MIC_CAMERA_DISABLED = 3; - public static final int STATUS_ICON_PRIORITY_MODE_ON = 4; + public static final int STATUS_ICON_CAMERA_DISABLED = 3; + public static final int STATUS_ICON_MIC_DISABLED = 4; + public static final int STATUS_ICON_MIC_CAMERA_DISABLED = 5; + public static final int STATUS_ICON_PRIORITY_MODE_ON = 6; private final Map<Integer, View> mStatusIcons = new HashMap<>(); @@ -80,6 +84,10 @@ public class DreamOverlayStatusBarView extends ConstraintLayout { fetchStatusIconForResId(R.id.dream_overlay_wifi_status)); mStatusIcons.put(STATUS_ICON_ALARM_SET, fetchStatusIconForResId(R.id.dream_overlay_alarm_set)); + mStatusIcons.put(STATUS_ICON_CAMERA_DISABLED, + fetchStatusIconForResId(R.id.dream_overlay_camera_off)); + mStatusIcons.put(STATUS_ICON_MIC_DISABLED, + fetchStatusIconForResId(R.id.dream_overlay_mic_off)); mStatusIcons.put(STATUS_ICON_MIC_CAMERA_DISABLED, fetchStatusIconForResId(R.id.dream_overlay_camera_mic_off)); mStatusIcons.put(STATUS_ICON_NOTIFICATIONS, diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java index 250313d0aae8..de7bf28c01d6 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java @@ -214,9 +214,17 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve .isSensorBlocked(SensorPrivacyManager.Sensors.MICROPHONE); final boolean cameraBlocked = mSensorPrivacyController .isSensorBlocked(SensorPrivacyManager.Sensors.CAMERA); - showIcon( - DreamOverlayStatusBarView.STATUS_ICON_MIC_CAMERA_DISABLED, - micBlocked && cameraBlocked); + @DreamOverlayStatusBarView.StatusIconType int iconType = Resources.ID_NULL; + if (micBlocked && cameraBlocked) { + iconType = DreamOverlayStatusBarView.STATUS_ICON_MIC_CAMERA_DISABLED; + } else if (!micBlocked && cameraBlocked) { + iconType = DreamOverlayStatusBarView.STATUS_ICON_CAMERA_DISABLED; + } else if (micBlocked && !cameraBlocked) { + iconType = DreamOverlayStatusBarView.STATUS_ICON_MIC_DISABLED; + } + if (iconType != Resources.ID_NULL) { + showIcon(iconType, true); + } } private String buildNotificationsContentDescription(int notificationCount) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java index d334694805fe..60e5a9423c61 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java @@ -184,25 +184,36 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase { } @Test - public void testOnViewAttachedShowsMicCameraIconWhenDisabled() { + public void testOnViewAttachedShowsMicIconWhenDisabled() { when(mSensorPrivacyController.isSensorBlocked(SensorPrivacyManager.Sensors.MICROPHONE)) .thenReturn(true); when(mSensorPrivacyController.isSensorBlocked(SensorPrivacyManager.Sensors.CAMERA)) - .thenReturn(true); + .thenReturn(false); mController.onViewAttached(); verify(mView).showIcon( - DreamOverlayStatusBarView.STATUS_ICON_MIC_CAMERA_DISABLED, true, null); + DreamOverlayStatusBarView.STATUS_ICON_MIC_DISABLED, true, null); } @Test - public void testOnViewAttachedHidesMicCameraIconWhenEnabled() { + public void testOnViewAttachedShowsCameraIconWhenDisabled() { when(mSensorPrivacyController.isSensorBlocked(SensorPrivacyManager.Sensors.MICROPHONE)) .thenReturn(false); when(mSensorPrivacyController.isSensorBlocked(SensorPrivacyManager.Sensors.CAMERA)) - .thenReturn(false); + .thenReturn(true); + mController.onViewAttached(); + verify(mView).showIcon( + DreamOverlayStatusBarView.STATUS_ICON_CAMERA_DISABLED, true, null); + } + + @Test + public void testOnViewAttachedShowsMicCameraIconWhenDisabled() { + when(mSensorPrivacyController.isSensorBlocked(SensorPrivacyManager.Sensors.MICROPHONE)) + .thenReturn(true); + when(mSensorPrivacyController.isSensorBlocked(SensorPrivacyManager.Sensors.CAMERA)) + .thenReturn(true); mController.onViewAttached(); verify(mView).showIcon( - DreamOverlayStatusBarView.STATUS_ICON_MIC_CAMERA_DISABLED, false, null); + DreamOverlayStatusBarView.STATUS_ICON_MIC_CAMERA_DISABLED, true, null); } @Test @@ -386,24 +397,6 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase { } @Test - public void testMicCameraIconHiddenWhenSensorsNotBlocked() { - when(mSensorPrivacyController.isSensorBlocked(SensorPrivacyManager.Sensors.MICROPHONE)) - .thenReturn(true).thenReturn(false); - when(mSensorPrivacyController.isSensorBlocked(SensorPrivacyManager.Sensors.CAMERA)) - .thenReturn(true).thenReturn(false); - mController.onViewAttached(); - - final ArgumentCaptor<IndividualSensorPrivacyController.Callback> callbackCapture = - ArgumentCaptor.forClass(IndividualSensorPrivacyController.Callback.class); - verify(mSensorPrivacyController).addCallback(callbackCapture.capture()); - callbackCapture.getValue().onSensorBlockedChanged( - SensorPrivacyManager.Sensors.MICROPHONE, false); - - verify(mView).showIcon( - DreamOverlayStatusBarView.STATUS_ICON_MIC_CAMERA_DISABLED, false, null); - } - - @Test public void testPriorityModeIconShownWhenZenModeEnabled() { mController.onViewAttached(); |