summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/test-current.txt9
-rw-r--r--cmds/statsd/src/external/PowerStatsPuller.cpp2
-rw-r--r--core/java/android/app/ActivityView.java11
-rw-r--r--core/java/android/app/ITaskStackListener.aidl8
-rw-r--r--core/java/android/app/StatusBarManager.java64
-rw-r--r--core/java/android/app/TaskStackListener.java4
-rw-r--r--core/java/android/view/AccessibilityInteractionController.java28
-rw-r--r--core/java/android/view/IWindow.aidl7
-rw-r--r--core/java/android/view/SurfaceView.java42
-rw-r--r--core/java/android/view/View.java565
-rw-r--r--core/java/android/view/ViewGroup.java60
-rw-r--r--core/java/android/view/ViewRootImpl.java189
-rw-r--r--core/java/android/view/WindowManager.java10
-rw-r--r--core/java/android/webkit/WebView.java9
-rw-r--r--core/java/android/widget/AdapterView.java3
-rw-r--r--core/java/android/widget/TextView.java39
-rw-r--r--core/java/com/android/internal/view/BaseIWindow.java5
-rw-r--r--core/res/res/drawable/ic_audio_alarm.xml4
-rw-r--r--core/res/res/drawable/ic_audio_alarm_mute.xml4
-rw-r--r--core/res/res/drawable/ic_battery_80_24dp.xml28
-rw-r--r--core/res/res/drawable/ic_bluetooth_share_icon.xml2
-rw-r--r--core/res/res/drawable/ic_corp_badge.xml4
-rw-r--r--core/res/res/drawable/ic_file_copy.xml3
-rw-r--r--core/res/res/drawable/ic_qs_auto_rotate.xml4
-rw-r--r--core/res/res/drawable/ic_qs_battery_saver.xml4
-rw-r--r--core/res/res/drawable/ic_qs_flashlight.xml4
-rw-r--r--core/res/res/drawable/perm_group_activity_recognition.xml1
-rw-r--r--core/res/res/drawable/perm_group_aural.xml1
-rw-r--r--core/res/res/drawable/perm_group_calendar.xml5
-rw-r--r--core/res/res/drawable/perm_group_call_log.xml1
-rw-r--r--core/res/res/drawable/perm_group_camera.xml1
-rw-r--r--core/res/res/drawable/perm_group_contacts.xml1
-rw-r--r--core/res/res/drawable/perm_group_location.xml1
-rw-r--r--core/res/res/drawable/perm_group_microphone.xml1
-rw-r--r--core/res/res/drawable/perm_group_phone_calls.xml3
-rw-r--r--core/res/res/drawable/perm_group_sensors.xml1
-rw-r--r--core/res/res/drawable/perm_group_sms.xml1
-rw-r--r--core/res/res/drawable/perm_group_storage.xml1
-rw-r--r--core/res/res/drawable/perm_group_visual.xml3
-rw-r--r--core/res/res/values/config.xml3
-rw-r--r--core/res/res/values/strings.xml24
-rw-r--r--core/res/res/values/symbols.xml6
-rw-r--r--core/tests/coretests/res/values/overlayable_icons_test.xml4
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java15
-rw-r--r--packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml2
-rw-r--r--packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml2
-rw-r--r--packages/SystemUI/res/anim/lock_in.xml (renamed from core/res/res/anim/lock_in.xml)0
-rw-r--r--packages/SystemUI/res/anim/lock_in_circular.xml327
-rw-r--r--packages/SystemUI/res/anim/lock_in_filled.xml190
-rw-r--r--packages/SystemUI/res/anim/lock_in_rounded.xml336
-rw-r--r--packages/SystemUI/res/anim/lock_lock.xml (renamed from core/res/res/anim/lock_lock.xml)29
-rw-r--r--packages/SystemUI/res/anim/lock_lock_circular.xml320
-rw-r--r--packages/SystemUI/res/anim/lock_lock_filled.xml215
-rw-r--r--packages/SystemUI/res/anim/lock_lock_rounded.xml314
-rw-r--r--packages/SystemUI/res/anim/lock_scanning.xml (renamed from core/res/res/anim/lock_scanning.xml)0
-rw-r--r--packages/SystemUI/res/anim/lock_scanning_circular.xml537
-rw-r--r--packages/SystemUI/res/anim/lock_scanning_filled.xml339
-rw-r--r--packages/SystemUI/res/anim/lock_scanning_rounded.xml531
-rw-r--r--packages/SystemUI/res/anim/lock_to_error.xml (renamed from core/res/res/anim/lock_to_error.xml)0
-rw-r--r--packages/SystemUI/res/anim/lock_to_error_circular.xml276
-rw-r--r--packages/SystemUI/res/anim/lock_to_error_filled.xml188
-rw-r--r--packages/SystemUI/res/anim/lock_to_error_rounded.xml270
-rw-r--r--packages/SystemUI/res/anim/lock_unlock.xml (renamed from core/res/res/anim/lock_unlock.xml)0
-rw-r--r--packages/SystemUI/res/anim/lock_unlock_circular.xml298
-rw-r--r--packages/SystemUI/res/anim/lock_unlock_filled.xml204
-rw-r--r--packages/SystemUI/res/anim/lock_unlock_rounded.xml292
-rw-r--r--packages/SystemUI/res/drawable/ic_info_outline.xml4
-rw-r--r--packages/SystemUI/res/drawable/ic_invert_colors.xml4
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_bluetooth_connecting.xml4
-rw-r--r--packages/SystemUI/res/drawable/ic_qs_no_sim.xml4
-rw-r--r--packages/SystemUI/res/drawable/ic_screenshot_delete.xml4
-rw-r--r--packages/SystemUI/res/values/config.xml3
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListener.java8
-rw-r--r--packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java16
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java4
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java4
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java7
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java14
-rw-r--r--packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java23
-rw-r--r--packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java26
-rw-r--r--packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java21
-rw-r--r--packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java28
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/MediaArtworkProcessor.kt75
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt33
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java36
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java42
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt64
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java25
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java81
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java27
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java11
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java25
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/MediaArtworkProcessorTest.kt109
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java7
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java17
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_battery_80_24dp.xml (renamed from packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_bad_24dp.xml)2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_misc_hid.xml1
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_file_copy.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock.xml1
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_open.xml1
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lockscreen_ime.xml1
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_mode_edit.xml1
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_notifications_alerted.xml (renamed from packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_delete_accent.xml)10
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_phone.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_battery_saver.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_bluetooth.xml1
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml52
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml47
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml42
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml37
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml32
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_activity_recognition.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_calendar.xml1
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_call_log.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_camera.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_contacts.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_location.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_microphone.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_phone_calls.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sensors.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_storage.xml2
-rw-r--r--packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_visual.xml2
-rw-r--r--packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_setting.xml1
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_back.xml1
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_saver_accent_24dp.xml29
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_bad_24dp.xml28
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cellular_off.xml1
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml1
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml2
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_data_saver.xml19
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other.xml1
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_eject_24dp.xml1
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_find_in_page_24px.xml32
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help_actionbar.xml1
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_network_cell.xml33
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml1
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_data_usage.xml7
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_language.xml26
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_multiuser.xml (renamed from packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_bad_24dp.xml)5
-rw-r--r--packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_wireless_white.xml34
-rw-r--r--packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_arrow_back.xml1
-rw-r--r--packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_brightness_thumb.xml2
-rw-r--r--packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_camera.xml4
-rw-r--r--packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver.xml22
-rw-r--r--packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver_off.xml7
-rw-r--r--packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml1
-rw-r--r--packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml1
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_battery_80_24dp.xml (renamed from packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_delete_accent.xml)8
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_misc_hid.xml1
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_file_copy.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock.xml1
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_open.xml1
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lockscreen_ime.xml1
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_mode_edit.xml1
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_notifications_alerted.xml (renamed from packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_wireless_white.xml)9
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_phone.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_battery_saver.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_bluetooth.xml1
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_activity_recognition.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_calendar.xml1
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_call_log.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_camera.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_contacts.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_location.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_microphone.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_phone_calls.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sensors.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_storage.xml2
-rw-r--r--packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_visual.xml2
-rw-r--r--packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_setting.xml1
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_back.xml1
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cellular_off.xml1
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml1
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml2
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_data_saver.xml1
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other.xml1
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_eject_24dp.xml1
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_find_in_page_24px.xml27
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help_actionbar.xml1
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_network_cell.xml1
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml1
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_language.xml26
-rw-r--r--packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_multiuser.xml29
-rw-r--r--packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_arrow_back.xml1
-rw-r--r--packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_brightness_thumb.xml2
-rw-r--r--packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_camera.xml4
-rw-r--r--packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected.xml4
-rw-r--r--packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver.xml4
-rw-r--r--packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml1
-rw-r--r--packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml1
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_battery_80_24dp.xml (renamed from packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_saver_accent_24dp.xml)3
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_file_copy.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock.xml1
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_open.xml1
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lockscreen_ime.xml1
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_mode_edit.xml13
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_notifications_alerted.xml (renamed from packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_delete_accent.xml)10
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_phone.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_battery_saver.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_bluetooth.xml1
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_activity_recognition.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_calendar.xml1
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_call_log.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_camera.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_contacts.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_location.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_microphone.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_phone_calls.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sensors.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_storage.xml2
-rw-r--r--packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_visual.xml2
-rw-r--r--packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_setting.xml1
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_back.xml1
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cellular_off.xml1
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml1
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml2
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_data_saver.xml19
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other.xml1
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_eject_24dp.xml1
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_find_in_page_24px.xml32
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help_actionbar.xml1
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_network_cell.xml1
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml1
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_data_usage.xml7
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_language.xml26
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_multiuser.xml (renamed from packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_saver_accent_24dp.xml)6
-rw-r--r--packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_wireless_white.xml34
-rw-r--r--packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_arrow_back.xml1
-rw-r--r--packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml2
-rw-r--r--packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_camera.xml4
-rw-r--r--packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected.xml4
-rw-r--r--packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver.xml22
-rw-r--r--packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver_off.xml7
-rw-r--r--packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml1
-rw-r--r--packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml1
-rw-r--r--services/core/java/com/android/server/statusbar/StatusBarShellCommand.java13
-rw-r--r--services/core/java/com/android/server/wm/AccessibilityController.java54
-rw-r--r--services/core/java/com/android/server/wm/ActivityStack.java3
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java8
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskManagerService.java8
-rw-r--r--services/core/java/com/android/server/wm/AppTransition.java4
-rw-r--r--services/core/java/com/android/server/wm/AppTransitionController.java7
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java34
-rw-r--r--services/core/java/com/android/server/wm/RootActivityContainer.java10
-rw-r--r--services/core/java/com/android/server/wm/TapExcludeRegionHolder.java7
-rw-r--r--services/core/java/com/android/server/wm/TaskChangeNotificationController.java18
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java7
-rw-r--r--services/core/java/com/android/server/wm/WindowState.java82
-rw-r--r--services/tests/wmtests/AndroidManifest.xml3
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java65
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TestIWindow.java5
263 files changed, 7243 insertions, 651 deletions
diff --git a/api/test-current.txt b/api/test-current.txt
index ad6d58f0e0b1..841398b814b4 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -3237,10 +3237,13 @@ package android.view {
}
@UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
+ method @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, to="auto"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_YES, to="yes"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_NO, to="no"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS, to="yesExcludeDescendants"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS, to="noExcludeDescendants")}) public int getImportantForContentCapture();
method public android.view.View getTooltipView();
method public boolean isAutofilled();
method public static boolean isDefaultFocusHighlightEnabled();
method public boolean isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
+ method public final boolean isImportantForContentCapture();
+ method public void onProvideContentCaptureStructure(@NonNull android.view.ViewStructure, int);
method protected void resetResolvedDrawables();
method public void resetResolvedLayoutDirection();
method public void resetResolvedPadding();
@@ -3251,7 +3254,13 @@ package android.view {
method public boolean restoreFocusNotInCluster();
method public void setAutofilled(boolean);
method public final void setFocusedInCluster();
+ method public void setImportantForContentCapture(int);
method public void setIsRootNamespace(boolean);
+ field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_AUTO = 0; // 0x0
+ field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO = 2; // 0x2
+ field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS = 8; // 0x8
+ field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES = 1; // 0x1
+ field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS = 4; // 0x4
}
public class ViewConfiguration {
diff --git a/cmds/statsd/src/external/PowerStatsPuller.cpp b/cmds/statsd/src/external/PowerStatsPuller.cpp
index c56f9a27086e..b142caca3acc 100644
--- a/cmds/statsd/src/external/PowerStatsPuller.cpp
+++ b/cmds/statsd/src/external/PowerStatsPuller.cpp
@@ -85,7 +85,6 @@ bool PowerStatsPuller::PullInternal(vector<shared_ptr<LogEvent>>* data) {
std::lock_guard<std::mutex> lock(gPowerStatsHalMutex);
if (!getPowerStatsHalLocked()) {
- ALOGE("power.stats Hal not loaded");
return false;
}
@@ -116,6 +115,7 @@ bool PowerStatsPuller::PullInternal(vector<shared_ptr<LogEvent>>* data) {
if (gRailInfo.empty()) {
ALOGE("power.stats has no rail information");
gPowerStatsExist = false; // No rail info, so never try again.
+ gPowerStatsHal = nullptr;
return false;
}
}
diff --git a/core/java/android/app/ActivityView.java b/core/java/android/app/ActivityView.java
index 4771f9f6ad04..3bf659b663b0 100644
--- a/core/java/android/app/ActivityView.java
+++ b/core/java/android/app/ActivityView.java
@@ -120,6 +120,7 @@ public class ActivityView extends ViewGroup {
mActivityTaskManager = ActivityTaskManager.getService();
mSurfaceView = new SurfaceView(context);
+ mSurfaceView.setAlpha(0f);
mSurfaceCallback = new SurfaceCallback();
mSurfaceView.getHolder().addCallback(mSurfaceCallback);
addView(mSurfaceView);
@@ -347,6 +348,16 @@ public class ActivityView extends ViewGroup {
}
@Override
+ public void setAlpha(float alpha) {
+ mSurfaceView.setAlpha(alpha);
+ }
+
+ @Override
+ public float getAlpha() {
+ return mSurfaceView.getAlpha();
+ }
+
+ @Override
public boolean gatherTransparentRegion(Region region) {
// The tap exclude region may be affected by any view on top of it, so we detect the
// possible change by monitoring this function.
diff --git a/core/java/android/app/ITaskStackListener.aidl b/core/java/android/app/ITaskStackListener.aidl
index 1fdc8ca5b291..3f6880fc2625 100644
--- a/core/java/android/app/ITaskStackListener.aidl
+++ b/core/java/android/app/ITaskStackListener.aidl
@@ -169,4 +169,12 @@ oneway interface ITaskStackListener {
* @param taskInfo info about the task which received the back press
*/
void onBackPressedOnTaskRoot(in ActivityManager.RunningTaskInfo taskInfo);
+
+ /*
+ * Called when contents are drawn for the first time on a display which can only contain one
+ * task.
+ *
+ * @param displayId the id of the display on which contents are drawn.
+ */
+ void onSingleTaskDisplayDrawn(int displayId);
}
diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java
index af2d774508c4..205e7a13092b 100644
--- a/core/java/android/app/StatusBarManager.java
+++ b/core/java/android/app/StatusBarManager.java
@@ -433,6 +433,9 @@ public class StatusBarManager {
private boolean mNotificationPeeking;
private boolean mRecents;
private boolean mSearch;
+ private boolean mSystemIcons;
+ private boolean mClock;
+ private boolean mNotificationIcons;
/** @hide */
public DisableInfo(int flags1, int flags2) {
@@ -441,6 +444,9 @@ public class StatusBarManager {
mNotificationPeeking = (flags1 & DISABLE_NOTIFICATION_ALERTS) != 0;
mRecents = (flags1 & DISABLE_RECENT) != 0;
mSearch = (flags1 & DISABLE_SEARCH) != 0;
+ mSystemIcons = (flags1 & DISABLE_SYSTEM_INFO) != 0;
+ mClock = (flags1 & DISABLE_CLOCK) != 0;
+ mNotificationIcons = (flags1 & DISABLE_NOTIFICATION_ICONS) != 0;
}
/** @hide */
@@ -527,6 +533,48 @@ public class StatusBarManager {
}
/**
+ * @return {@code true} if system icons are disabled
+ *
+ * @hide
+ */
+ public boolean areSystemIconsDisabled() {
+ return mSystemIcons;
+ }
+
+ /** * @hide */
+ public void setSystemIconsDisabled(boolean disabled) {
+ mSystemIcons = disabled;
+ }
+
+ /**
+ * @return {@code true} if the clock icon is disabled
+ *
+ * @hide
+ */
+ public boolean isClockDisabled() {
+ return mClock;
+ }
+
+ /** * @hide */
+ public void setClockDisabled(boolean disabled) {
+ mClock = disabled;
+ }
+
+ /**
+ * @return {@code true} if notification icons are disabled
+ *
+ * @hide
+ */
+ public boolean areNotificationIconsDisabled() {
+ return mNotificationIcons;
+ }
+
+ /** * @hide */
+ public void setNotificationIconsDisabled(boolean disabled) {
+ mNotificationIcons = disabled;
+ }
+
+ /**
* @return {@code true} if no components are disabled (default state)
*
* @hide
@@ -535,7 +583,7 @@ public class StatusBarManager {
@TestApi
public boolean areAllComponentsEnabled() {
return !mStatusBarExpansion && !mNavigateHome && !mNotificationPeeking && !mRecents
- && !mSearch;
+ && !mSearch && !mSystemIcons && !mClock && !mNotificationIcons;
}
/** @hide */
@@ -545,6 +593,9 @@ public class StatusBarManager {
mNotificationPeeking = false;
mRecents = false;
mSearch = false;
+ mSystemIcons = false;
+ mClock = false;
+ mNotificationIcons = false;
}
/**
@@ -554,7 +605,7 @@ public class StatusBarManager {
*/
public boolean areAllComponentsDisabled() {
return mStatusBarExpansion && mNavigateHome && mNotificationPeeking
- && mRecents && mSearch;
+ && mRecents && mSearch && mSystemIcons && mClock && mNotificationIcons;
}
/** @hide */
@@ -564,6 +615,9 @@ public class StatusBarManager {
mNotificationPeeking = true;
mRecents = true;
mSearch = true;
+ mSystemIcons = true;
+ mClock = true;
+ mNotificationIcons = true;
}
@Override
@@ -576,6 +630,9 @@ public class StatusBarManager {
.append(mNotificationPeeking ? "disabled" : "enabled");
sb.append(" mRecents=").append(mRecents ? "disabled" : "enabled");
sb.append(" mSearch=").append(mSearch ? "disabled" : "enabled");
+ sb.append(" mSystemIcons=").append(mSystemIcons ? "disabled" : "enabled");
+ sb.append(" mClock=").append(mClock ? "disabled" : "enabled");
+ sb.append(" mNotificationIcons=").append(mNotificationIcons ? "disabled" : "enabled");
return sb.toString();
@@ -596,6 +653,9 @@ public class StatusBarManager {
if (mNotificationPeeking) disable1 |= DISABLE_NOTIFICATION_ALERTS;
if (mRecents) disable1 |= DISABLE_RECENT;
if (mSearch) disable1 |= DISABLE_SEARCH;
+ if (mSystemIcons) disable1 |= DISABLE_SYSTEM_INFO;
+ if (mClock) disable1 |= DISABLE_CLOCK;
+ if (mNotificationIcons) disable1 |= DISABLE_NOTIFICATION_ICONS;
return new Pair<Integer, Integer>(disable1, disable2);
}
diff --git a/core/java/android/app/TaskStackListener.java b/core/java/android/app/TaskStackListener.java
index 00f3ad58afa6..36daf32234db 100644
--- a/core/java/android/app/TaskStackListener.java
+++ b/core/java/android/app/TaskStackListener.java
@@ -173,4 +173,8 @@ public abstract class TaskStackListener extends ITaskStackListener.Stub {
public void onBackPressedOnTaskRoot(ActivityManager.RunningTaskInfo taskInfo)
throws RemoteException {
}
+
+ @Override
+ public void onSingleTaskDisplayDrawn(int displayId) throws RemoteException {
+ }
}
diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java
index bbd44c8b85af..4b929683fd6d 100644
--- a/core/java/android/view/AccessibilityInteractionController.java
+++ b/core/java/android/view/AccessibilityInteractionController.java
@@ -830,6 +830,32 @@ public final class AccessibilityInteractionController {
return false;
}
+ private void adjustBoundsInScreenIfNeeded(List<AccessibilityNodeInfo> infos) {
+ if (infos == null || shouldBypassAdjustBoundsInScreen()) {
+ return;
+ }
+ final int infoCount = infos.size();
+ for (int i = 0; i < infoCount; i++) {
+ final AccessibilityNodeInfo info = infos.get(i);
+ adjustBoundsInScreenIfNeeded(info);
+ }
+ }
+
+ private void adjustBoundsInScreenIfNeeded(AccessibilityNodeInfo info) {
+ if (info == null || shouldBypassAdjustBoundsInScreen()) {
+ return;
+ }
+ final Rect boundsInScreen = mTempRect;
+ info.getBoundsInScreen(boundsInScreen);
+ boundsInScreen.offset(mViewRootImpl.mAttachInfo.mLocationInParentDisplay.x,
+ mViewRootImpl.mAttachInfo.mLocationInParentDisplay.y);
+ info.setBoundsInScreen(boundsInScreen);
+ }
+
+ private boolean shouldBypassAdjustBoundsInScreen() {
+ return mViewRootImpl.mAttachInfo.mLocationInParentDisplay.equals(0, 0);
+ }
+
private void applyAppScaleAndMagnificationSpecIfNeeded(AccessibilityNodeInfo info,
MagnificationSpec spec) {
if (info == null) {
@@ -921,6 +947,7 @@ public final class AccessibilityInteractionController {
MagnificationSpec spec, Region interactiveRegion) {
try {
mViewRootImpl.mAttachInfo.mAccessibilityFetchFlags = 0;
+ adjustBoundsInScreenIfNeeded(infos);
applyAppScaleAndMagnificationSpecIfNeeded(infos, spec);
adjustIsVisibleToUserIfNeeded(infos, interactiveRegion);
callback.setFindAccessibilityNodeInfosResult(infos, interactionId);
@@ -939,6 +966,7 @@ public final class AccessibilityInteractionController {
MagnificationSpec spec, Region interactiveRegion) {
try {
mViewRootImpl.mAttachInfo.mAccessibilityFetchFlags = 0;
+ adjustBoundsInScreenIfNeeded(info);
applyAppScaleAndMagnificationSpecIfNeeded(info, spec);
adjustIsVisibleToUserIfNeeded(info, interactiveRegion);
callback.setFindAccessibilityNodeInfoResult(info, interactionId);
diff --git a/core/java/android/view/IWindow.aidl b/core/java/android/view/IWindow.aidl
index 699e795be980..f34f9e6d5ce8 100644
--- a/core/java/android/view/IWindow.aidl
+++ b/core/java/android/view/IWindow.aidl
@@ -17,6 +17,7 @@
package android.view;
+import android.graphics.Point;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
@@ -57,6 +58,12 @@ oneway interface IWindow {
in DisplayCutout.ParcelableWrapper displayCutout);
/**
+ * Called when the window location in parent display has changed. The offset will only be a
+ * nonzero value if the window is on an embedded display that is re-parented to another window.
+ */
+ void locationInParentDisplayChanged(in Point offset);
+
+ /**
* Called when the window insets configuration has changed.
*/
void insetsChanged(in InsetsState insetsState);
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 254d04e8715d..add7376b8531 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -27,6 +27,7 @@ import android.content.res.Configuration;
import android.graphics.BlendMode;
import android.graphics.Canvas;
import android.graphics.Color;
+import android.graphics.HardwareRenderer;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
@@ -201,6 +202,29 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
private SurfaceControl.Transaction mRtTransaction = new SurfaceControl.Transaction();
+ /**
+ * A callback which reflects an alpha value of this view onto the underlying surfaces.
+ *
+ * <p class="note"><strong>Note:</strong> This doesn't have to be defined as a member variable,
+ * but can be defined as an inline lambda when calling ViewRootImpl#registerRtFrameCallback().
+ * However when we do so, the callback is triggered only for a few times and stops working for
+ * some reason. It's suspected that there is a problem around garbage collection, and until
+ * the cause is fixed, we will keep this callback in a member variable.</p>
+ */
+ private HardwareRenderer.FrameDrawingCallback mSetSurfaceAlphaCallback = frame -> {
+ final ViewRootImpl viewRoot = getViewRootImpl();
+ if (viewRoot == null || viewRoot.mSurface == null || !viewRoot.mSurface.isValid()) {
+ // In this case, the alpha value is reflected on the screen in #updateSurface() later.
+ return;
+ }
+
+ final SurfaceControl.Transaction t = new SurfaceControl.Transaction();
+ t.setAlpha(mSurfaceControl, getAlpha());
+ t.deferTransactionUntilSurface(mSurfaceControl, viewRoot.mSurface, frame);
+ t.setEarlyWakeup();
+ t.apply();
+ };
+
public SurfaceView(Context context) {
this(context, null);
}
@@ -288,6 +312,17 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
updateSurface();
}
+ @Override
+ public void setAlpha(float alpha) {
+ super.setAlpha(alpha);
+ final ViewRootImpl viewRoot = getViewRootImpl();
+ if (viewRoot == null) {
+ return;
+ }
+ viewRoot.registerRtFrameCallback(mSetSurfaceAlphaCallback);
+ invalidate();
+ }
+
private void performDrawFinished() {
if (mPendingReportDraws > 0) {
mDrawFinished = true;
@@ -647,6 +682,13 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
}
updateBackgroundVisibilityInTransaction(viewRoot.getSurfaceControl());
+ // Alpha value change is handled in setAlpha() directly using a local
+ // transaction. However it can happen that setAlpha() is called while
+ // local transactions cannot be applied, so the value is stored in a View
+ // but not yet reflected on the Surface.
+ mSurfaceControl.setAlpha(getAlpha());
+ mBackgroundControl.setAlpha(getAlpha());
+
// While creating the surface, we will set it's initial
// geometry. Outside of that though, we should generally
// leave it to the RenderThread.
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index bf6191ec61eb..063f02422d29 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -1377,6 +1377,74 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
public static final int AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 0x1;
+ /** @hide */
+ @IntDef(prefix = { "IMPORTANT_FOR_CONTENT_CAPTURE_" }, value = {
+ IMPORTANT_FOR_CONTENT_CAPTURE_AUTO,
+ IMPORTANT_FOR_CONTENT_CAPTURE_YES,
+ IMPORTANT_FOR_CONTENT_CAPTURE_NO,
+ IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS,
+ IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ContentCaptureImportance {}
+
+ /**
+ * Automatically determine whether a view is important for content capture.
+ *
+ * @see #isImportantForContentCapture()
+ * @see #setImportantForContentCapture(int)
+ *
+ * @hide
+ */
+ @TestApi
+ public static final int IMPORTANT_FOR_CONTENT_CAPTURE_AUTO = 0x0;
+
+ /**
+ * The view is important for content capture, and its children (if any) will be traversed.
+ *
+ * @see #isImportantForContentCapture()
+ * @see #setImportantForContentCapture(int)
+ *
+ * @hide
+ */
+ @TestApi
+ public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES = 0x1;
+
+ /**
+ * The view is not important for content capture, but its children (if any) will be traversed.
+ *
+ * @see #isImportantForContentCapture()
+ * @see #setImportantForContentCapture(int)
+ *
+ * @hide
+ */
+ @TestApi
+ public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO = 0x2;
+
+ /**
+ * The view is important for content capture, but its children (if any) will not be traversed.
+ *
+ * @see #isImportantForContentCapture()
+ * @see #setImportantForContentCapture(int)
+ *
+ * @hide
+ */
+ @TestApi
+ public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS = 0x4;
+
+ /**
+ * The view is not important for content capture, and its children (if any) will not be
+ * traversed.
+ *
+ * @see #isImportantForContentCapture()
+ * @see #setImportantForContentCapture(int)
+ *
+ * @hide
+ */
+ @TestApi
+ public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS = 0x8;
+
+
/**
* This view is enabled. Interpretation varies by subclass.
* Use with ENABLED_MASK when calling setFlags.
@@ -3349,6 +3417,55 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
/* End of masks for mPrivateFlags3 */
+ /*
+ * Masks for mPrivateFlags4, as generated by dumpFlags():
+ *
+ * |-------|-------|-------|-------|
+ * 1111 PFLAG4_IMPORTANT_FOR_CONTENT_CAPTURE_MASK
+ * 1 PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED
+ * 1 PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED
+ * 1 PFLAG4_CONTENT_CAPTURE_IMPORTANCE_IS_CACHED
+ * 1 PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE
+ * 11 PFLAG4_CONTENT_CAPTURE_IMPORTANCE_MASK
+ * |-------|-------|-------|-------|
+ */
+
+ /**
+ * Mask for obtaining the bits which specify how to determine
+ * whether a view is important for autofill.
+ *
+ * <p>NOTE: the important for content capture values were the first flags added and are set in
+ * the rightmost position, so we don't need to shift them
+ */
+ private static final int PFLAG4_IMPORTANT_FOR_CONTENT_CAPTURE_MASK =
+ IMPORTANT_FOR_CONTENT_CAPTURE_AUTO | IMPORTANT_FOR_CONTENT_CAPTURE_YES
+ | IMPORTANT_FOR_CONTENT_CAPTURE_NO
+ | IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS
+ | IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS;
+
+ /*
+ * Variables used to control when the IntelligenceManager.notifyNodeAdded()/removed() methods
+ * should be called.
+ *
+ * The idea is to call notifyAppeared() after the view is layout and visible, then call
+ * notifyDisappeared() when it's gone (without known when it was removed from the parent).
+ */
+ private static final int PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED = 0x10;
+ private static final int PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED = 0x20;
+
+ /*
+ * Flags used to cache the value returned by isImportantForContentCapture while the view
+ * hierarchy is being traversed.
+ */
+ private static final int PFLAG4_CONTENT_CAPTURE_IMPORTANCE_IS_CACHED = 0x40;
+ private static final int PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE = 0x80;
+
+ private static final int PFLAG4_CONTENT_CAPTURE_IMPORTANCE_MASK =
+ PFLAG4_CONTENT_CAPTURE_IMPORTANCE_IS_CACHED
+ | PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE;
+
+ /* End of masks for mPrivateFlags4 */
+
/** @hide */
protected static final int VIEW_STRUCTURE_FOR_ASSIST = 0;
/** @hide */
@@ -3972,6 +4089,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 129147060)
int mPrivateFlags3;
+ private int mPrivateFlags4;
+
/**
* This view's request for the visibility of the status bar.
* @hide
@@ -8427,6 +8546,65 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
onProvideStructure(structure, VIEW_STRUCTURE_FOR_AUTOFILL, flags);
}
+ /**
+ * Populates a {@link ViewStructure} for content capture.
+ *
+ * <p>This method is called after a view is that is eligible for content capture
+ * (for example, if it {@link #isImportantForAutofill()}, an intelligence service is enabled for
+ * the user, and the activity rendering the view is enabled for content capture) is laid out and
+ * is visible.
+ *
+ * <p>The populated structure is then passed to the service through
+ * {@link ContentCaptureSession#notifyViewAppeared(ViewStructure)}.
+ *
+ * <p><b>Note: </b>views that manage a virtual structure under this view must populate just
+ * the node representing this view and return right away, then asynchronously report (not
+ * necessarily in the UI thread) when the children nodes appear, disappear or have their text
+ * changed by calling
+ * {@link ContentCaptureSession#notifyViewAppeared(ViewStructure)},
+ * {@link ContentCaptureSession#notifyViewDisappeared(AutofillId)}, and
+ * {@link ContentCaptureSession#notifyViewTextChanged(AutofillId, CharSequence)}
+ * respectively. The structure for the a child must be created using
+ * {@link ContentCaptureSession#newVirtualViewStructure(AutofillId, long)}, and the
+ * {@code autofillId} for a child can be obtained either through
+ * {@code childStructure.getAutofillId()} or
+ * {@link ContentCaptureSession#newAutofillId(AutofillId, long)}.
+ *
+ * <p>When the virtual view hierarchy represents a web page, you should also:
+ *
+ * <ul>
+ * <li>Call {@link ContentCaptureManager#getContentCaptureConditions()} to infer content
+ * capture events should be generate for that URL.
+ * <li>Create a new {@link ContentCaptureSession} child for every HTML element that
+ * renders a new URL (like an {@code IFRAME}) and use that session to notify events from
+ * that subtree.
+ * </ul>
+ *
+ * <p><b>Note: </b>the following methods of the {@code structure} will be ignored:
+ * <ul>
+ * <li>{@link ViewStructure#setChildCount(int)}
+ * <li>{@link ViewStructure#addChildCount(int)}
+ * <li>{@link ViewStructure#getChildCount()}
+ * <li>{@link ViewStructure#newChild(int)}
+ * <li>{@link ViewStructure#asyncNewChild(int)}
+ * <li>{@link ViewStructure#asyncCommit()}
+ * <li>{@link ViewStructure#setWebDomain(String)}
+ * <li>{@link ViewStructure#newHtmlInfoBuilder(String)}
+ * <li>{@link ViewStructure#setHtmlInfo(android.view.ViewStructure.HtmlInfo)}
+ * <li>{@link ViewStructure#setDataIsSensitive(boolean)}
+ * <li>{@link ViewStructure#setAlpha(float)}
+ * <li>{@link ViewStructure#setElevation(float)}
+ * <li>{@link ViewStructure#setTransformation(Matrix)}
+ *
+ * </ul>
+ *
+ * @hide
+ */
+ @TestApi
+ public void onProvideContentCaptureStructure(@NonNull ViewStructure structure, int flags) {
+ onProvideStructure(structure, VIEW_STRUCTURE_FOR_CONTENT_CAPTURE, flags);
+ }
+
/** @hide */
protected void onProvideStructure(@NonNull ViewStructure structure,
@ViewStructureType int viewFor, int flags) {
@@ -9065,6 +9243,274 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
/**
+ * Gets the mode for determining whether this view is important for content capture.
+ *
+ * <p>See {@link #setImportantForContentCapture(int)} and
+ * {@link #isImportantForContentCapture()} for more info about this mode.
+ *
+ * @return {@link #IMPORTANT_FOR_CONTENT_CAPTURE_AUTO} by default, or value passed to
+ * {@link #setImportantForContentCapture(int)}.
+ *
+ * @attr ref android.R.styleable#View_importantForContentCapture
+ *
+ * @hide
+ */
+ @ViewDebug.ExportedProperty(mapping = {
+ @ViewDebug.IntToString(from = IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, to = "auto"),
+ @ViewDebug.IntToString(from = IMPORTANT_FOR_CONTENT_CAPTURE_YES, to = "yes"),
+ @ViewDebug.IntToString(from = IMPORTANT_FOR_CONTENT_CAPTURE_NO, to = "no"),
+ @ViewDebug.IntToString(from = IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS,
+ to = "yesExcludeDescendants"),
+ @ViewDebug.IntToString(from = IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS,
+ to = "noExcludeDescendants")})
+// @InspectableProperty(enumMapping = {
+// @EnumEntry(value = IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, name = "auto"),
+// @EnumEntry(value = IMPORTANT_FOR_CONTENT_CAPTURE_YES, name = "yes"),
+// @EnumEntry(value = IMPORTANT_FOR_CONTENT_CAPTURE_NO, name = "no"),
+// @EnumEntry(value = IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS,
+// name = "yesExcludeDescendants"),
+// @EnumEntry(value = IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS,
+// name = "noExcludeDescendants"),
+// })
+ @TestApi
+ public @ContentCaptureImportance int getImportantForContentCapture() {
+ // NOTE: the important for content capture values were the first flags added and are set in
+ // the rightmost position, so we don't need to shift them
+ return mPrivateFlags4 & PFLAG4_IMPORTANT_FOR_CONTENT_CAPTURE_MASK;
+ }
+
+ /**
+ * Sets the mode for determining whether this view is considered important for content capture.
+ *
+ * <p>The platform determines the importance for autofill automatically but you
+ * can use this method to customize the behavior. Typically, a view that provides text should
+ * be marked as {@link #IMPORTANT_FOR_CONTENT_CAPTURE_YES}.
+ *
+ * @param mode {@link #IMPORTANT_FOR_CONTENT_CAPTURE_AUTO},
+ * {@link #IMPORTANT_FOR_CONTENT_CAPTURE_YES}, {@link #IMPORTANT_FOR_CONTENT_CAPTURE_NO},
+ * {@link #IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS},
+ * or {@link #IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS}.
+ *
+ * @attr ref android.R.styleable#View_importantForContentCapture
+ *
+ * @hide
+ */
+ @TestApi
+ public void setImportantForContentCapture(@ContentCaptureImportance int mode) {
+ // Reset first
+ mPrivateFlags4 &= ~PFLAG4_IMPORTANT_FOR_CONTENT_CAPTURE_MASK;
+ // Then set again
+ // NOTE: the important for content capture values were the first flags added and are set in
+ // the rightmost position, so we don't need to shift them
+ mPrivateFlags4 |= (mode & PFLAG4_IMPORTANT_FOR_CONTENT_CAPTURE_MASK);
+ }
+
+ /**
+ * Hints the Android System whether this view is considered important for content capture, based
+ * on the value explicitly set by {@link #setImportantForContentCapture(int)} and heuristics
+ * when it's {@link #IMPORTANT_FOR_CONTENT_CAPTURE_AUTO}.
+ *
+ * <p>See {@link ContentCaptureManager} for more info about content capture.
+ *
+ * @return whether the view is considered important for content capture.
+ *
+ * @see #setImportantForContentCapture(int)
+ * @see #IMPORTANT_FOR_CONTENT_CAPTURE_AUTO
+ * @see #IMPORTANT_FOR_CONTENT_CAPTURE_YES
+ * @see #IMPORTANT_FOR_CONTENT_CAPTURE_NO
+ * @see #IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS
+ * @see #IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS
+ *
+ * @hide
+ */
+ @TestApi
+ public final boolean isImportantForContentCapture() {
+ boolean isImportant;
+ if ((mPrivateFlags4 & PFLAG4_CONTENT_CAPTURE_IMPORTANCE_IS_CACHED) != 0) {
+ isImportant = (mPrivateFlags4 & PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE) != 0;
+ return isImportant;
+ }
+
+ isImportant = calculateIsImportantForContentCapture();
+
+ mPrivateFlags4 &= ~PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE;
+ if (isImportant) {
+ mPrivateFlags4 |= PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE;
+ }
+ mPrivateFlags4 |= PFLAG4_CONTENT_CAPTURE_IMPORTANCE_IS_CACHED;
+ return isImportant;
+ }
+
+ /**
+ * Calculates whether the flag is important for content capture so it can be used by
+ * {@link #isImportantForContentCapture()} while the tree is traversed.
+ */
+ private boolean calculateIsImportantForContentCapture() {
+ // Check parent mode to ensure we're important
+ ViewParent parent = mParent;
+ while (parent instanceof View) {
+ final int parentImportance = ((View) parent).getImportantForContentCapture();
+ if (parentImportance == IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS
+ || parentImportance == IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS) {
+ if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.VERBOSE)) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "View (" + this + ") is not important for "
+ + "content capture because parent " + parent + "'s importance is "
+ + parentImportance);
+ }
+ return false;
+ }
+ parent = parent.getParent();
+ }
+
+ final int importance = getImportantForContentCapture();
+
+ // First, check the explicit states.
+ if (importance == IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS
+ || importance == IMPORTANT_FOR_CONTENT_CAPTURE_YES) {
+ return true;
+ }
+ if (importance == IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS
+ || importance == IMPORTANT_FOR_CONTENT_CAPTURE_NO) {
+ if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.VERBOSE)) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "View (" + this + ") is not important for content "
+ + "capture because its importance is " + importance);
+ }
+ return false;
+ }
+
+ // Then use some heuristics to handle AUTO.
+ if (importance != IMPORTANT_FOR_CONTENT_CAPTURE_AUTO) {
+ Log.w(CONTENT_CAPTURE_LOG_TAG, "invalid content capture importance (" + importance
+ + " on view " + this);
+ return false;
+ }
+
+ // View group is important if at least one children also is
+ if (this instanceof ViewGroup) {
+ final ViewGroup group = (ViewGroup) this;
+ for (int i = 0; i < group.getChildCount(); i++) {
+ final View child = group.getChildAt(i);
+ if (child.isImportantForContentCapture()) {
+ return true;
+ }
+ }
+ }
+
+ // If the app developer explicitly set hints or autofill hintsfor it, it's important.
+ if (getAutofillHints() != null) {
+ return true;
+ }
+
+ // Otherwise, assume it's not important...
+ return false;
+ }
+
+ /**
+ * Helper used to notify the {@link ContentCaptureManager} when the view is removed or
+ * added, based on whether it's laid out and visible, and without knowing if the parent removed
+ * it from the view hierarchy.
+ *
+ * <p>This method is called from many places (visibility changed, view laid out, view attached
+ * or detached to/from window, etc...) and hence must contain the logic to call the manager, as
+ * described below:
+ *
+ * <ol>
+ * <li>It should only be called when content capture is enabled for the view.
+ * <li>It must call viewAppeared() before viewDisappeared()
+ * <li>viewAppearead() can only be called when the view is visible and laidout
+ * <li>It should not call the same event twice.
+ * </ol>
+ */
+ private void notifyAppearedOrDisappearedForContentCaptureIfNeeded(boolean appeared) {
+ AttachInfo ai = mAttachInfo;
+ // Skip it while the view is being laided out for the first time
+ if (ai != null && !ai.mReadyForContentCaptureUpdates) return;
+
+ if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW,
+ "notifyContentCapture(" + appeared + ") for " + getClass().getSimpleName());
+ }
+ try {
+ notifyAppearedOrDisappearedForContentCaptureIfNeededNoTrace(appeared);
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ }
+ }
+
+ private void notifyAppearedOrDisappearedForContentCaptureIfNeededNoTrace(boolean appeared) {
+ AttachInfo ai = mAttachInfo;
+
+ // First check if context has client, so it saves a service lookup when it doesn't
+ if (mContext.getContentCaptureOptions() == null) return;
+
+ // Then check if it's enabled in the context...
+ final ContentCaptureManager ccm = ai != null ? ai.getContentCaptureManager(mContext)
+ : mContext.getSystemService(ContentCaptureManager.class);
+ if (ccm == null || !ccm.isContentCaptureEnabled()) return;
+
+ // ... and finally at the view level
+ // NOTE: isImportantForContentCapture() is more expensive than cm.isContentCaptureEnabled()
+ if (!isImportantForContentCapture()) return;
+
+ ContentCaptureSession session = getContentCaptureSession();
+ if (session == null) return;
+
+ if (appeared) {
+ if (!isLaidOut() || getVisibility() != VISIBLE
+ || (mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) != 0) {
+ if (DEBUG_CONTENT_CAPTURE) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "Ignoring 'appeared' on " + this + ": laid="
+ + isLaidOut() + ", visibleToUser=" + isVisibleToUser()
+ + ", visible=" + (getVisibility() == VISIBLE)
+ + ": alreadyNotifiedAppeared=" + ((mPrivateFlags4
+ & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) != 0)
+ + ", alreadyNotifiedDisappeared=" + ((mPrivateFlags4
+ & PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED) != 0));
+ }
+ return;
+ }
+ setNotifiedContentCaptureAppeared();
+
+ if (ai != null) {
+ ai.delayNotifyContentCaptureEvent(session, this, appeared);
+ } else {
+ if (DEBUG_CONTENT_CAPTURE) {
+ Log.w(CONTENT_CAPTURE_LOG_TAG, "no AttachInfo on appeared for " + this);
+ }
+ }
+ } else {
+ if ((mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) == 0
+ || (mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED) != 0) {
+ if (DEBUG_CONTENT_CAPTURE) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "Ignoring 'disappeared' on " + this + ": laid="
+ + isLaidOut() + ", visibleToUser=" + isVisibleToUser()
+ + ", visible=" + (getVisibility() == VISIBLE)
+ + ": alreadyNotifiedAppeared=" + ((mPrivateFlags4
+ & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) != 0)
+ + ", alreadyNotifiedDisappeared=" + ((mPrivateFlags4
+ & PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED) != 0));
+ }
+ return;
+ }
+ mPrivateFlags4 |= PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED;
+ mPrivateFlags4 &= ~PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED;
+
+ if (ai != null) {
+ ai.delayNotifyContentCaptureEvent(session, this, appeared);
+ } else {
+ if (DEBUG_CONTENT_CAPTURE) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "no AttachInfo on disappeared for " + this);
+ }
+ }
+ }
+ }
+
+ private void setNotifiedContentCaptureAppeared() {
+ mPrivateFlags4 |= PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED;
+ mPrivateFlags4 &= ~PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED;
+ }
+
+ /**
* Sets the (optional) {@link ContentCaptureSession} associated with this view.
*
* <p>This method should be called when you need to associate a {@link ContentCaptureContext} to
@@ -9317,6 +9763,68 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
/**
+ * Dispatches the initial content capture events for a view structure.
+ *
+ * @hide
+ */
+ public void dispatchInitialProvideContentCaptureStructure() {
+ AttachInfo ai = mAttachInfo;
+ if (ai == null) {
+ Log.w(CONTENT_CAPTURE_LOG_TAG,
+ "dispatchProvideContentCaptureStructure(): no AttachInfo for " + this);
+ return;
+ }
+ ContentCaptureManager ccm = ai.mContentCaptureManager;
+ if (ccm == null) {
+ Log.w(CONTENT_CAPTURE_LOG_TAG, "dispatchProvideContentCaptureStructure(): "
+ + "no ContentCaptureManager for " + this);
+ return;
+ }
+
+ // We must set it before checkign if the view itself is important, because it might
+ // initially not be (for example, if it's empty), although that might change later (for
+ // example, if important views are added)
+ ai.mReadyForContentCaptureUpdates = true;
+
+ if (!isImportantForContentCapture()) {
+ if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.DEBUG)) {
+ Log.d(CONTENT_CAPTURE_LOG_TAG,
+ "dispatchProvideContentCaptureStructure(): decorView is not important");
+ }
+ return;
+ }
+
+ ai.mContentCaptureManager = ccm;
+
+ ContentCaptureSession session = getContentCaptureSession();
+ if (session == null) {
+ if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.DEBUG)) {
+ Log.d(CONTENT_CAPTURE_LOG_TAG,
+ "dispatchProvideContentCaptureStructure(): no session for " + this);
+ }
+ return;
+ }
+
+ session.internalNotifyViewTreeEvent(/* started= */ true);
+ try {
+ dispatchProvideContentCaptureStructure();
+ } finally {
+ session.internalNotifyViewTreeEvent(/* started= */ false);
+ }
+ }
+
+ /** @hide */
+ void dispatchProvideContentCaptureStructure() {
+ ContentCaptureSession session = getContentCaptureSession();
+ if (session != null) {
+ ViewStructure structure = session.newViewStructure(this);
+ onProvideContentCaptureStructure(structure, /* flags= */ 0);
+ setNotifiedContentCaptureAppeared();
+ session.notifyViewAppeared(structure);
+ }
+ }
+
+ /**
* @see #onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)
*
* Note: Called from the default {@link AccessibilityDelegate}.
@@ -13266,6 +13774,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
public void dispatchStartTemporaryDetach() {
mPrivateFlags3 |= PFLAG3_TEMPORARY_DETACH;
notifyEnterOrExitForAutoFillIfNeeded(false);
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(false);
onStartTemporaryDetach();
}
@@ -13292,6 +13801,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
notifyFocusChangeToInputMethodManager(true /* hasFocus */);
}
notifyEnterOrExitForAutoFillIfNeeded(true);
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(true);
}
/**
@@ -13883,6 +14393,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
: AccessibilityEvent.CONTENT_CHANGE_TYPE_PANE_DISAPPEARED);
}
}
+
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(isVisible);
}
/**
@@ -17578,6 +18090,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
// Reset content capture caches
+ mPrivateFlags4 &= ~PFLAG4_CONTENT_CAPTURE_IMPORTANCE_MASK;
mCachedContentCaptureSession = null;
if ((mPrivateFlags & (PFLAG_DRAWN | PFLAG_HAS_BOUNDS)) == (PFLAG_DRAWN | PFLAG_HAS_BOUNDS)
@@ -19587,6 +20100,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
needGlobalAttributesUpdate(false);
notifyEnterOrExitForAutoFillIfNeeded(true);
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(true);
}
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
@@ -19636,6 +20150,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
notifyEnterOrExitForAutoFillIfNeeded(false);
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(false);
}
/**
@@ -21970,6 +22485,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mPrivateFlags3 &= ~PFLAG3_NOTIFY_AUTOFILL_ENTER_ON_LAYOUT;
notifyEnterOrExitForAutoFillIfNeeded(true);
}
+
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(true);
}
private boolean hasParentWantsFocus() {
@@ -28035,6 +28552,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
boolean mHandlingPointerEvent;
/**
+ * The offset of this view's window when it's on an embedded display that is re-parented
+ * to another window.
+ */
+ final Point mLocationInParentDisplay = new Point();
+
+ /**
* Global to the view hierarchy used as a temporary for dealing with
* x/y points in the transparent region computations.
*/
@@ -28181,6 +28704,23 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
View mTooltipHost;
/**
+ * The initial structure has been reported so the view is ready to report updates.
+ */
+ boolean mReadyForContentCaptureUpdates;
+
+ /**
+ * Map(keyed by session) of content capture events that need to be notified after the view
+ * hierarchy is traversed: value is either the view itself for appearead events, or its
+ * autofill id for disappeared.
+ */
+ SparseArray<ArrayList<Object>> mContentCaptureEvents;
+
+ /**
+ * Cached reference to the {@link ContentCaptureManager}.
+ */
+ ContentCaptureManager mContentCaptureManager;
+
+ /**
* Creates a new set of attachment information with the specified
* events handler and thread.
*
@@ -28198,6 +28738,31 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mRootCallbacks = effectPlayer;
mTreeObserver = new ViewTreeObserver(context);
}
+
+ private void delayNotifyContentCaptureEvent(@NonNull ContentCaptureSession session,
+ @NonNull View view, boolean appeared) {
+ if (mContentCaptureEvents == null) {
+ // Most of the time there will be just one session, so intial capacity is 1
+ mContentCaptureEvents = new SparseArray<>(1);
+ }
+ int sessionId = session.getId();
+ // TODO: life would be much easier if we provided a MultiMap implementation somwhere...
+ ArrayList<Object> events = mContentCaptureEvents.get(sessionId);
+ if (events == null) {
+ events = new ArrayList<>();
+ mContentCaptureEvents.put(sessionId, events);
+ }
+ events.add(appeared ? view : view.getAutofillId());
+ }
+
+ @Nullable
+ ContentCaptureManager getContentCaptureManager(@NonNull Context context) {
+ if (mContentCaptureManager != null) {
+ return mContentCaptureManager;
+ }
+ mContentCaptureManager = context.getSystemService(ContentCaptureManager.class);
+ return mContentCaptureManager;
+ }
}
/**
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index d362024ed525..937bd1b34e61 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -3606,7 +3606,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
return;
}
- final ChildListForAutofill children = getChildrenForAutofill(flags);
+ final ChildListForAutoFillOrContentCapture children = getChildrenForAutofill(flags);
final int childrenCount = children.size();
structure.setChildCount(childrenCount);
for (int i = 0; i < childrenCount; i++) {
@@ -3617,14 +3617,30 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
children.recycle();
}
+ /** @hide */
+ @Override
+ public void dispatchProvideContentCaptureStructure() {
+ super.dispatchProvideContentCaptureStructure();
+
+ if (!isLaidOut()) return;
+
+ final ChildListForAutoFillOrContentCapture children = getChildrenForContentCapture();
+ final int childrenCount = children.size();
+ for (int i = 0; i < childrenCount; i++) {
+ final View child = children.get(i);
+ child.dispatchProvideContentCaptureStructure();
+ }
+ children.recycle();
+ }
+
/**
* Gets the children for autofill. Children for autofill are the first
* level descendants that are important for autofill. The returned
* child list object is pooled and the caller must recycle it once done.
* @hide */
- private @NonNull ChildListForAutofill getChildrenForAutofill(
+ private @NonNull ChildListForAutoFillOrContentCapture getChildrenForAutofill(
@AutofillFlags int flags) {
- final ChildListForAutofill children = ChildListForAutofill
+ final ChildListForAutoFillOrContentCapture children = ChildListForAutoFillOrContentCapture
.obtain();
populateChildrenForAutofill(children, flags);
return children;
@@ -3652,6 +3668,34 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
}
}
+ private @NonNull ChildListForAutoFillOrContentCapture getChildrenForContentCapture() {
+ final ChildListForAutoFillOrContentCapture children = ChildListForAutoFillOrContentCapture
+ .obtain();
+ populateChildrenForContentCapture(children);
+ return children;
+ }
+
+ /** @hide */
+ private void populateChildrenForContentCapture(ArrayList<View> list) {
+ final int childrenCount = mChildrenCount;
+ if (childrenCount <= 0) {
+ return;
+ }
+ final ArrayList<View> preorderedList = buildOrderedChildList();
+ final boolean customOrder = preorderedList == null
+ && isChildrenDrawingOrderEnabled();
+ for (int i = 0; i < childrenCount; i++) {
+ final int childIndex = getAndVerifyPreorderedIndex(childrenCount, i, customOrder);
+ final View child = (preorderedList == null)
+ ? mChildren[childIndex] : preorderedList.get(childIndex);
+ if (child.isImportantForContentCapture()) {
+ list.add(child);
+ } else if (child instanceof ViewGroup) {
+ ((ViewGroup) child).populateChildrenForContentCapture(list);
+ }
+ }
+ }
+
private static View getAndVerifyPreorderedView(ArrayList<View> preorderedList, View[] children,
int childIndex) {
final View child;
@@ -8634,16 +8678,16 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
/**
* Pooled class that to hold the children for autifill.
*/
- private static class ChildListForAutofill extends ArrayList<View> {
+ private static class ChildListForAutoFillOrContentCapture extends ArrayList<View> {
private static final int MAX_POOL_SIZE = 32;
- private static final Pools.SimplePool<ChildListForAutofill> sPool =
+ private static final Pools.SimplePool<ChildListForAutoFillOrContentCapture> sPool =
new Pools.SimplePool<>(MAX_POOL_SIZE);
- public static ChildListForAutofill obtain() {
- ChildListForAutofill list = sPool.acquire();
+ public static ChildListForAutoFillOrContentCapture obtain() {
+ ChildListForAutoFillOrContentCapture list = sPool.acquire();
if (list == null) {
- list = new ChildListForAutofill();
+ list = new ChildListForAutoFillOrContentCapture();
}
return list;
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index e8356752f807..e07112078b35 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -105,7 +105,11 @@ import android.view.accessibility.IAccessibilityInteractionConnection;
import android.view.accessibility.IAccessibilityInteractionConnectionCallback;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Interpolator;
+import android.view.autofill.AutofillId;
import android.view.autofill.AutofillManager;
+import android.view.contentcapture.ContentCaptureManager;
+import android.view.contentcapture.ContentCaptureSession;
+import android.view.contentcapture.MainContentCaptureSession;
import android.view.inputmethod.InputMethodManager;
import android.widget.Scroller;
@@ -220,6 +224,21 @@ public final class ViewRootImpl implements ViewParent,
*/
static final int MAX_TRACKBALL_DELAY = 250;
+ /**
+ * Initial value for {@link #mContentCaptureEnabled}.
+ */
+ private static final int CONTENT_CAPTURE_ENABLED_NOT_CHECKED = 0;
+
+ /**
+ * Value for {@link #mContentCaptureEnabled} when it was checked and set to {@code true}.
+ */
+ private static final int CONTENT_CAPTURE_ENABLED_TRUE = 1;
+
+ /**
+ * Value for {@link #mContentCaptureEnabled} when it was checked and set to {@code false}.
+ */
+ private static final int CONTENT_CAPTURE_ENABLED_FALSE = 2;
+
@UnsupportedAppUsage
static final ThreadLocal<HandlerActionQueue> sRunQueues = new ThreadLocal<HandlerActionQueue>();
@@ -410,6 +429,10 @@ public final class ViewRootImpl implements ViewParent,
boolean mLayoutRequested;
boolean mFirst;
+ @Nullable
+ int mContentCaptureEnabled = CONTENT_CAPTURE_ENABLED_NOT_CHECKED;
+ boolean mPerformContentCapture;
+
boolean mReportNextDraw;
boolean mFullRedrawNeeded;
boolean mNewSurfaceNeeded;
@@ -607,6 +630,7 @@ public final class ViewRootImpl implements ViewParent,
mTransparentRegion = new Region();
mPreviousTransparentRegion = new Region();
mFirst = true; // true for the first time the view is added
+ mPerformContentCapture = true; // also true for the first time the view is added
mAdded = false;
mAttachInfo = new View.AttachInfo(mWindowSession, mWindow, display, this, mHandler, this,
context);
@@ -2756,9 +2780,55 @@ public final class ViewRootImpl implements ViewParent,
}
}
+ if (mAttachInfo.mContentCaptureEvents != null) {
+ notifyContentCatpureEvents();
+ }
+
mIsInTraversal = false;
}
+ private void notifyContentCatpureEvents() {
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW, "notifyContentCaptureEvents");
+ try {
+ MainContentCaptureSession mainSession = mAttachInfo.mContentCaptureManager
+ .getMainContentCaptureSession();
+ for (int i = 0; i < mAttachInfo.mContentCaptureEvents.size(); i++) {
+ int sessionId = mAttachInfo.mContentCaptureEvents.keyAt(i);
+ mainSession.notifyViewTreeEvent(sessionId, /* started= */ true);
+ ArrayList<Object> events = mAttachInfo.mContentCaptureEvents
+ .valueAt(i);
+ for_each_event: for (int j = 0; j < events.size(); j++) {
+ Object event = events.get(j);
+ if (event instanceof AutofillId) {
+ mainSession.notifyViewDisappeared(sessionId, (AutofillId) event);
+ } else if (event instanceof View) {
+ View view = (View) event;
+ ContentCaptureSession session = view.getContentCaptureSession();
+ if (session == null) {
+ Log.w(mTag, "no content capture session on view: " + view);
+ continue for_each_event;
+ }
+ int actualId = session.getId();
+ if (actualId != sessionId) {
+ Log.w(mTag, "content capture session mismatch for view (" + view
+ + "): was " + sessionId + " before, it's " + actualId + " now");
+ continue for_each_event;
+ }
+ ViewStructure structure = session.newViewStructure(view);
+ view.onProvideContentCaptureStructure(structure, /* flags= */ 0);
+ session.notifyViewAppeared(structure);
+ } else {
+ Log.w(mTag, "invalid content capture event: " + event);
+ }
+ }
+ mainSession.notifyViewTreeEvent(sessionId, /* started= */ false);
+ }
+ mAttachInfo.mContentCaptureEvents = null;
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ }
+ }
+
private void notifySurfaceDestroyed() {
mSurfaceHolder.ungetCallbacks();
SurfaceHolder.Callback[] callbacks = mSurfaceHolder.getCallbacks();
@@ -2893,6 +2963,13 @@ public final class ViewRootImpl implements ViewParent,
}
}
mFirstInputStage.onWindowFocusChanged(hasWindowFocus);
+
+ // NOTE: there's no view visibility (appeared / disapparead) events when the windows focus
+ // is lost, so we don't need to to force a flush - there might be other events such as
+ // text changes, but these should be flushed independently.
+ if (hasWindowFocus) {
+ handleContentCaptureFlush();
+ }
}
private void fireAccessibilityFocusEventIfHasFocusedNode() {
@@ -3459,6 +3536,86 @@ public final class ViewRootImpl implements ViewParent,
pendingDrawFinished();
}
}
+ if (mPerformContentCapture) {
+ performContentCaptureInitialReport();
+ }
+ }
+
+ /**
+ * Checks (and caches) if content capture is enabled for this context.
+ */
+ private boolean isContentCaptureEnabled() {
+ switch (mContentCaptureEnabled) {
+ case CONTENT_CAPTURE_ENABLED_TRUE:
+ return true;
+ case CONTENT_CAPTURE_ENABLED_FALSE:
+ return false;
+ case CONTENT_CAPTURE_ENABLED_NOT_CHECKED:
+ final boolean reallyEnabled = isContentCaptureReallyEnabled();
+ mContentCaptureEnabled = reallyEnabled ? CONTENT_CAPTURE_ENABLED_TRUE
+ : CONTENT_CAPTURE_ENABLED_FALSE;
+ return reallyEnabled;
+ default:
+ Log.w(TAG, "isContentCaptureEnabled(): invalid state " + mContentCaptureEnabled);
+ return false;
+ }
+
+ }
+
+ /**
+ * Checks (without caching) if content capture is enabled for this context.
+ */
+ private boolean isContentCaptureReallyEnabled() {
+ // First check if context supports it, so it saves a service lookup when it doesn't
+ if (mContext.getContentCaptureOptions() == null) return false;
+
+ final ContentCaptureManager ccm = mAttachInfo.getContentCaptureManager(mContext);
+ // Then check if it's enabled in the contex itself.
+ if (ccm == null || !ccm.isContentCaptureEnabled()) return false;
+
+ return true;
+ }
+
+ private void performContentCaptureInitialReport() {
+ mPerformContentCapture = false; // One-time offer!
+ final View rootView = mView;
+ if (DEBUG_CONTENT_CAPTURE) {
+ Log.v(mTag, "performContentCaptureInitialReport() on " + rootView);
+ }
+ if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW, "dispatchContentCapture() for "
+ + getClass().getSimpleName());
+ }
+ try {
+ if (!isContentCaptureEnabled()) return;
+
+ // Content capture is a go!
+ rootView.dispatchInitialProvideContentCaptureStructure();
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ }
+ }
+
+ private void handleContentCaptureFlush() {
+ if (DEBUG_CONTENT_CAPTURE) {
+ Log.v(mTag, "handleContentCaptureFlush()");
+ }
+ if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW, "flushContentCapture for "
+ + getClass().getSimpleName());
+ }
+ try {
+ if (!isContentCaptureEnabled()) return;
+
+ final ContentCaptureManager ccm = mAttachInfo.mContentCaptureManager;
+ if (ccm == null) {
+ Log.w(TAG, "No ContentCapture on AttachInfo");
+ return;
+ }
+ ccm.flush(ContentCaptureSession.FLUSH_REASON_VIEW_ROOT_ENTERED);
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ }
}
private boolean draw(boolean fullRedrawNeeded) {
@@ -3825,6 +3982,13 @@ public final class ViewRootImpl implements ViewParent,
}
}
+ void updateLocationInParentDisplay(int x, int y) {
+ if (mAttachInfo != null
+ && !mAttachInfo.mLocationInParentDisplay.equals(x, y)) {
+ mAttachInfo.mLocationInParentDisplay.set(x, y);
+ }
+ }
+
/**
* Set the root-level system gesture exclusion rects. These are added to those provided by
* the root's view hierarchy.
@@ -4329,6 +4493,7 @@ public final class ViewRootImpl implements ViewParent,
private static final int MSG_INSETS_CHANGED = 30;
private static final int MSG_INSETS_CONTROL_CHANGED = 31;
private static final int MSG_SYSTEM_GESTURE_EXCLUSION_CHANGED = 32;
+ private static final int MSG_LOCATION_IN_PARENT_DISPLAY_CHANGED = 33;
final class ViewRootHandler extends Handler {
@Override
@@ -4390,6 +4555,8 @@ public final class ViewRootImpl implements ViewParent,
return "MSG_INSETS_CONTROL_CHANGED";
case MSG_SYSTEM_GESTURE_EXCLUSION_CHANGED:
return "MSG_SYSTEM_GESTURE_EXCLUSION_CHANGED";
+ case MSG_LOCATION_IN_PARENT_DISPLAY_CHANGED:
+ return "MSG_LOCATION_IN_PARENT_DISPLAY_CHANGED";
}
return super.getMessageName(message);
}
@@ -4623,6 +4790,9 @@ public final class ViewRootImpl implements ViewParent,
case MSG_SYSTEM_GESTURE_EXCLUSION_CHANGED: {
systemGestureExclusionChanged();
} break;
+ case MSG_LOCATION_IN_PARENT_DISPLAY_CHANGED: {
+ updateLocationInParentDisplay(msg.arg1, msg.arg2);
+ } break;
}
}
}
@@ -7829,6 +7999,17 @@ public final class ViewRootImpl implements ViewParent,
mHandler.sendMessage(msg);
}
+ /**
+ * Dispatch the offset changed.
+ *
+ * @param offset the offset of this view in the parent window.
+ */
+ public void dispatchLocationInParentDisplayChanged(Point offset) {
+ Message msg =
+ mHandler.obtainMessage(MSG_LOCATION_IN_PARENT_DISPLAY_CHANGED, offset.x, offset.y);
+ mHandler.sendMessage(msg);
+ }
+
public void windowFocusChanged(boolean hasFocus, boolean inTouchMode) {
synchronized (this) {
mWindowFocusChanged = true;
@@ -8356,6 +8537,14 @@ public final class ViewRootImpl implements ViewParent,
}
@Override
+ public void locationInParentDisplayChanged(Point offset) {
+ final ViewRootImpl viewAncestor = mViewAncestor.get();
+ if (viewAncestor != null) {
+ viewAncestor.dispatchLocationInParentDisplayChanged(offset);
+ }
+ }
+
+ @Override
public void insetsChanged(InsetsState insetsState) {
final ViewRootImpl viewAncestor = mViewAncestor.get();
if (viewAncestor != null) {
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index a25f2eede905..1f89de861111 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -261,6 +261,13 @@ public interface WindowManager extends ViewManager {
int TRANSIT_TASK_CHANGE_WINDOWING_MODE = 27;
/**
+ * A display which can only contain one task is being shown because the first activity is
+ * started or it's being turned on.
+ * @hide
+ */
+ int TRANSIT_SHOW_SINGLE_TASK_DISPLAY = 28;
+
+ /**
* @hide
*/
@IntDef(prefix = { "TRANSIT_" }, value = {
@@ -287,7 +294,8 @@ public interface WindowManager extends ViewManager {
TRANSIT_TRANSLUCENT_ACTIVITY_OPEN,
TRANSIT_TRANSLUCENT_ACTIVITY_CLOSE,
TRANSIT_CRASHING_ACTIVITY_CLOSE,
- TRANSIT_TASK_CHANGE_WINDOWING_MODE
+ TRANSIT_TASK_CHANGE_WINDOWING_MODE,
+ TRANSIT_SHOW_SINGLE_TASK_DISPLAY
})
@Retention(RetentionPolicy.SOURCE)
@interface TransitionType {}
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 137b67c6e63e..9dc66d77ea44 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -413,6 +413,9 @@ public class WebView extends AbsoluteLayout
if (getImportantForAutofill() == IMPORTANT_FOR_AUTOFILL_AUTO) {
setImportantForAutofill(IMPORTANT_FOR_AUTOFILL_YES);
}
+ if (getImportantForContentCapture() == IMPORTANT_FOR_CONTENT_CAPTURE_AUTO) {
+ setImportantForContentCapture(IMPORTANT_FOR_CONTENT_CAPTURE_YES);
+ }
if (context == null) {
throw new IllegalArgumentException("Invalid context argument");
@@ -2795,6 +2798,12 @@ public class WebView extends AbsoluteLayout
mProvider.getViewDelegate().onProvideAutofillVirtualStructure(structure, flags);
}
+ /** @hide */
+ @Override
+ public void onProvideContentCaptureStructure(ViewStructure structure, int flags) {
+ mProvider.getViewDelegate().onProvideContentCaptureStructure(structure, flags);
+ }
+
@Override
public void autofill(SparseArray<AutofillValue>values) {
mProvider.getViewDelegate().autofill(values);
diff --git a/core/java/android/widget/AdapterView.java b/core/java/android/widget/AdapterView.java
index c3bb9a0201d0..c55f7d654548 100644
--- a/core/java/android/widget/AdapterView.java
+++ b/core/java/android/widget/AdapterView.java
@@ -1318,7 +1318,8 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
@ViewStructureType int viewFor, int flags) {
super.onProvideStructure(structure, viewFor, flags);
- if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
+ if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL
+ || viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
final Adapter adapter = getAdapter();
if (adapter == null) return;
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index a9e183ad5bf2..383d9b4e9c41 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -162,6 +162,8 @@ import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.AnimationUtils;
import android.view.autofill.AutofillManager;
import android.view.autofill.AutofillValue;
+import android.view.contentcapture.ContentCaptureManager;
+import android.view.contentcapture.ContentCaptureSession;
import android.view.inputmethod.BaseInputConnection;
import android.view.inputmethod.CompletionInfo;
import android.view.inputmethod.CorrectionInfo;
@@ -977,6 +979,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if (getImportantForAutofill() == IMPORTANT_FOR_AUTOFILL_AUTO) {
setImportantForAutofill(IMPORTANT_FOR_AUTOFILL_YES);
}
+ if (getImportantForContentCapture() == IMPORTANT_FOR_CONTENT_CAPTURE_AUTO) {
+ setImportantForContentCapture(IMPORTANT_FOR_CONTENT_CAPTURE_YES);
+ }
setTextInternal("");
@@ -10550,7 +10555,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
/**
- * Notify managers (such as {@link AutofillManager}) that are interested in text changes.
+ * Notify managers (such as {@link AutofillManager} and {@link ContentCaptureManager}) that are
+ * interested on text changes.
*/
private void notifyListeningManagersAfterTextChanged() {
@@ -10566,6 +10572,22 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
afm.notifyValueChanged(TextView.this);
}
}
+
+ // TODO(b/121045053): should use a flag / boolean to keep status of SHOWN / HIDDEN instead
+ // of using isLaidout(), so it's not called in cases where it's laid out but a
+ // notifyAppeared was not sent.
+
+ // ContentCapture
+ if (isLaidOut() && isImportantForContentCapture()) {
+ final ContentCaptureManager cm = mContext.getSystemService(ContentCaptureManager.class);
+ if (cm != null && cm.isContentCaptureEnabled()) {
+ final ContentCaptureSession session = getContentCaptureSession();
+ if (session != null) {
+ // TODO(b/111276913): pass flags when edited by user / add CTS test
+ session.notifyViewTextChanged(getAutofillId(), getText());
+ }
+ }
+ }
}
private boolean isAutofillable() {
@@ -11409,7 +11431,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
final boolean isPassword = hasPasswordTransformationMethod()
|| isPasswordInputType(getInputType());
- if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
+ if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL
+ || viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
structure.setDataIsSensitive(!mTextSetFromXmlOrResourceId);
}
@@ -11425,8 +11448,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
}
- if (!isPassword || viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
+ if (!isPassword || viewFor == VIEW_STRUCTURE_FOR_AUTOFILL
+ || viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
if (mLayout == null) {
+ if (viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
+ Log.w(LOG_TAG, "onProvideContentCaptureStructure(): calling assumeLayout()");
+ }
assumeLayout();
}
Layout layout = mLayout;
@@ -11514,7 +11541,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
}
- if (viewFor == VIEW_STRUCTURE_FOR_ASSIST) {
+ if (viewFor == VIEW_STRUCTURE_FOR_ASSIST
+ || viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
// Extract style information that applies to the TextView as a whole.
int style = 0;
int typefaceStyle = getTypefaceStyle();
@@ -11542,7 +11570,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
structure.setTextStyle(getTextSize(), getCurrentTextColor(),
AssistStructure.ViewNode.TEXT_COLOR_UNDEFINED /* bgColor */, style);
}
- if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
+ if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL
+ || viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
structure.setMinTextEms(getMinEms());
structure.setMaxTextEms(getMaxEms());
int maxLength = -1;
diff --git a/core/java/com/android/internal/view/BaseIWindow.java b/core/java/com/android/internal/view/BaseIWindow.java
index fb9ff15c79ac..f9cdf3d0be61 100644
--- a/core/java/com/android/internal/view/BaseIWindow.java
+++ b/core/java/com/android/internal/view/BaseIWindow.java
@@ -16,6 +16,7 @@
package com.android.internal.view;
+import android.graphics.Point;
import android.graphics.Rect;
import android.hardware.input.InputManager;
import android.os.Bundle;
@@ -55,6 +56,10 @@ public class BaseIWindow extends IWindow.Stub {
}
@Override
+ public void locationInParentDisplayChanged(Point offset) {
+ }
+
+ @Override
public void insetsChanged(InsetsState insetsState) {
}
diff --git a/core/res/res/drawable/ic_audio_alarm.xml b/core/res/res/drawable/ic_audio_alarm.xml
index 96206ea3ce57..93f9f8f99cdc 100644
--- a/core/res/res/drawable/ic_audio_alarm.xml
+++ b/core/res/res/drawable/ic_audio_alarm.xml
@@ -14,8 +14,8 @@ Copyright (C) 2014 The Android Open Source Project
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="32.0dp"
- android:height="32.0dp"
+ android:width="24dp"
+ android:height="24dp"
android:viewportWidth="48.0"
android:viewportHeight="48.0"
android:tint="?attr/colorControlNormal">
diff --git a/core/res/res/drawable/ic_audio_alarm_mute.xml b/core/res/res/drawable/ic_audio_alarm_mute.xml
index 7f248c3b33e6..510a7c630fd2 100644
--- a/core/res/res/drawable/ic_audio_alarm_mute.xml
+++ b/core/res/res/drawable/ic_audio_alarm_mute.xml
@@ -14,8 +14,8 @@ Copyright (C) 2014 The Android Open Source Project
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="32.0dp"
- android:height="32.0dp"
+ android:width="24dp"
+ android:height="24dp"
android:viewportWidth="48.0"
android:viewportHeight="48.0"
android:tint="?attr/colorControlNormal">
diff --git a/core/res/res/drawable/ic_battery_80_24dp.xml b/core/res/res/drawable/ic_battery_80_24dp.xml
new file mode 100644
index 000000000000..2513d0d6d615
--- /dev/null
+++ b/core/res/res/drawable/ic_battery_80_24dp.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M9.5,2v2H7.33C6.6,4 6,4.6 6,5.33V15v5.67C6,21.4 6.6,22 7.33,22h9.33C17.4,22 18,21.4 18,20.67V15V5.33C18,4.6 17.4,4 16.67,4H14.5V2H9.5zM8,20v-5V6h8v9v5H8L8,20z"/>
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M16.67,22H7.33C6.6,22 6,21.4 6,20.67V8h12v12.67C18,21.4 17.4,22 16.67,22z"/>
+</vector> \ No newline at end of file
diff --git a/core/res/res/drawable/ic_bluetooth_share_icon.xml b/core/res/res/drawable/ic_bluetooth_share_icon.xml
index 2152af55d5b6..6acfd57e669f 100644
--- a/core/res/res/drawable/ic_bluetooth_share_icon.xml
+++ b/core/res/res/drawable/ic_bluetooth_share_icon.xml
@@ -19,7 +19,7 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
- android:tint="@android:color/accent_device_default_light">
+ android:tint="@*android:color/accent_device_default_light">
<path
android:fillColor="@android:color/white"
diff --git a/core/res/res/drawable/ic_corp_badge.xml b/core/res/res/drawable/ic_corp_badge.xml
index 6a7ac4a20ff3..16df45290302 100644
--- a/core/res/res/drawable/ic_corp_badge.xml
+++ b/core/res/res/drawable/ic_corp_badge.xml
@@ -15,8 +15,8 @@ Copyright (C) 2018 The Android Open Source Project
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="48dp"
- android:height="48dp"
+ android:width="24dp"
+ android:height="24dp"
android:tint="@*android:color/accent_device_default_light"
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/core/res/res/drawable/ic_file_copy.xml b/core/res/res/drawable/ic_file_copy.xml
index b6d5e7328c40..d05b55f1279f 100644
--- a/core/res/res/drawable/ic_file_copy.xml
+++ b/core/res/res/drawable/ic_file_copy.xml
@@ -16,9 +16,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="@*android:color/material_grey_600"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM15,5l6,6v10c0,1.1 -0.9,2 -2,2L7.99,23C6.89,23 6,22.1 6,21l0.01,-14c0,-1.1 0.89,-2 1.99,-2h7zM14,12h5.5L14,6.5L14,12z"
- android:fillColor="#FF737373"/>
+ android:fillColor="@android:color/white"/>
</vector>
diff --git a/core/res/res/drawable/ic_qs_auto_rotate.xml b/core/res/res/drawable/ic_qs_auto_rotate.xml
index 47e1059fab44..8858e2b778bb 100644
--- a/core/res/res/drawable/ic_qs_auto_rotate.xml
+++ b/core/res/res/drawable/ic_qs_auto_rotate.xml
@@ -16,8 +16,8 @@
-->
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="48dp"
- android:width="48dp"
+ android:height="24dp"
+ android:width="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
diff --git a/core/res/res/drawable/ic_qs_battery_saver.xml b/core/res/res/drawable/ic_qs_battery_saver.xml
index 93975b61948e..6e1ced083ba7 100644
--- a/core/res/res/drawable/ic_qs_battery_saver.xml
+++ b/core/res/res/drawable/ic_qs_battery_saver.xml
@@ -15,8 +15,8 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:autoMirrored="true"
- android:width="32.0dp"
- android:height="32.0dp"
+ android:width="24dp"
+ android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
android:tint="?android:attr/colorControlNormal">
diff --git a/core/res/res/drawable/ic_qs_flashlight.xml b/core/res/res/drawable/ic_qs_flashlight.xml
index e63595300d5f..59b0ccd493dd 100644
--- a/core/res/res/drawable/ic_qs_flashlight.xml
+++ b/core/res/res/drawable/ic_qs_flashlight.xml
@@ -15,8 +15,8 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="48dp"
- android:height="48dp"
+ android:width="24dp"
+ android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
diff --git a/core/res/res/drawable/perm_group_activity_recognition.xml b/core/res/res/drawable/perm_group_activity_recognition.xml
index 0ade6c674171..ef025acbcb0c 100644
--- a/core/res/res/drawable/perm_group_activity_recognition.xml
+++ b/core/res/res/drawable/perm_group_activity_recognition.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/core/res/res/drawable/perm_group_aural.xml b/core/res/res/drawable/perm_group_aural.xml
index b2737f24b86e..4b4c62cb73b6 100644
--- a/core/res/res/drawable/perm_group_aural.xml
+++ b/core/res/res/drawable/perm_group_aural.xml
@@ -16,6 +16,7 @@ Copyright (C) 2015 The Android Open Source Project
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
diff --git a/core/res/res/drawable/perm_group_calendar.xml b/core/res/res/drawable/perm_group_calendar.xml
index 4b46dd36e3b1..0dfb30150535 100644
--- a/core/res/res/drawable/perm_group_calendar.xml
+++ b/core/res/res/drawable/perm_group_calendar.xml
@@ -17,13 +17,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#000000"
android:pathData="M19 4h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99 0.9 -1.99 2L3 20c0 1.1 0.89 2 2 2h14c1.1 0 2-0.9 2-2V6c0-1.1-0.9-2-2-2zm0 16H5V10h14v10zm-4.5-7c-1.38 0-2.5 1.12-2.5 2.5s1.12 2.5 2.5 2.5 2.5-1.12 2.5-2.5-1.12-2.5-2.5-2.5z" />
- <path
- android:pathData="M0 0h24v24H0V0z" />
-</vector> \ No newline at end of file
+</vector>
diff --git a/core/res/res/drawable/perm_group_call_log.xml b/core/res/res/drawable/perm_group_call_log.xml
index 0dfdbee4e600..a37ed88bebfc 100644
--- a/core/res/res/drawable/perm_group_call_log.xml
+++ b/core/res/res/drawable/perm_group_call_log.xml
@@ -18,6 +18,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
diff --git a/core/res/res/drawable/perm_group_camera.xml b/core/res/res/drawable/perm_group_camera.xml
index db7833f63faf..e65501c4efcc 100644
--- a/core/res/res/drawable/perm_group_camera.xml
+++ b/core/res/res/drawable/perm_group_camera.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/core/res/res/drawable/perm_group_contacts.xml b/core/res/res/drawable/perm_group_contacts.xml
index b834a27bac4b..dd6ae210181f 100644
--- a/core/res/res/drawable/perm_group_contacts.xml
+++ b/core/res/res/drawable/perm_group_contacts.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/core/res/res/drawable/perm_group_location.xml b/core/res/res/drawable/perm_group_location.xml
index a7fa52471ab4..a87fc0dc43df 100644
--- a/core/res/res/drawable/perm_group_location.xml
+++ b/core/res/res/drawable/perm_group_location.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/core/res/res/drawable/perm_group_microphone.xml b/core/res/res/drawable/perm_group_microphone.xml
index 9b532c1a7376..a1ed72510cf8 100644
--- a/core/res/res/drawable/perm_group_microphone.xml
+++ b/core/res/res/drawable/perm_group_microphone.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/core/res/res/drawable/perm_group_phone_calls.xml b/core/res/res/drawable/perm_group_phone_calls.xml
index 324d86492703..563222698b46 100644
--- a/core/res/res/drawable/perm_group_phone_calls.xml
+++ b/core/res/res/drawable/perm_group_phone_calls.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
@@ -25,4 +26,4 @@
.37 2.33 .57 3.57 .57 .55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17
0-.55 .45 -1 1-1h3.5c.55 0 1 .45 1 1 0 1.25 .2 2.45 .57 3.57 .11 .35 .03 .74-.25
1.02l-2.2 2.2z" />
-</vector> \ No newline at end of file
+</vector>
diff --git a/core/res/res/drawable/perm_group_sensors.xml b/core/res/res/drawable/perm_group_sensors.xml
index e4663d7206fc..f800965b6058 100644
--- a/core/res/res/drawable/perm_group_sensors.xml
+++ b/core/res/res/drawable/perm_group_sensors.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
<path
diff --git a/core/res/res/drawable/perm_group_sms.xml b/core/res/res/drawable/perm_group_sms.xml
index ebcf3d1fcd82..44ccdd6394e6 100644
--- a/core/res/res/drawable/perm_group_sms.xml
+++ b/core/res/res/drawable/perm_group_sms.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/core/res/res/drawable/perm_group_storage.xml b/core/res/res/drawable/perm_group_storage.xml
index 4b8965bd9ef8..fceda2b84885 100644
--- a/core/res/res/drawable/perm_group_storage.xml
+++ b/core/res/res/drawable/perm_group_storage.xml
@@ -17,6 +17,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/core/res/res/drawable/perm_group_visual.xml b/core/res/res/drawable/perm_group_visual.xml
index 9b21c279e30a..bf3edea74199 100644
--- a/core/res/res/drawable/perm_group_visual.xml
+++ b/core/res/res/drawable/perm_group_visual.xml
@@ -16,11 +16,10 @@ Copyright (C) 2015 The Android Open Source Project
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#000000"
android:pathData="M20,4v12H8V4H20 M20,2H8C6.9,2,6,2.9,6,4v12c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C22,2.9,21.1,2,20,2L20,2z M2,6v14 c0,1.1,0.9,2,2,2h14v-2H4V6H2z M15.67,11l-2.5,2.98L11.5,11.8L9,15h10L15.67,11z" />
- <path
- android:pathData="M0,0h24v24H0V0z" />
</vector>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 4fb343b9a37b..6ef98cac0ca4 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -4121,6 +4121,9 @@
<integer-array name="config_face_acquire_vendor_biometricprompt_ignorelist" translatable="false" >
</integer-array>
+ <!-- If face auth sends the user directly to home/last open app, or stays on keyguard -->
+ <bool name="config_faceAuthDismissesKeyguard">true</bool>
+
<!-- The component name for the default profile supervisor, which can be set as a profile owner
even after user setup is complete. The defined component should be used for supervision purposes
only. The component must be part of a system app. -->
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 5b917cc4fdf1..fe49a31c4b22 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1499,16 +1499,16 @@
<string name="fingerprint_icon_content_description">Fingerprint icon</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=70] -->
- <string name="permlab_manageFace">manage face authentication hardware</string>
+ <string name="permlab_manageFace">manage face unlock hardware</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=90] -->
<string name="permdesc_manageFace">Allows the app to invoke methods to add and delete facial templates for use.</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=70] -->
- <string name="permlab_useFaceAuthentication">use face authentication hardware</string>
+ <string name="permlab_useFaceAuthentication">use face unlock hardware</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. [CHAR LIMIT=90] -->
- <string name="permdesc_useFaceAuthentication">Allows the app to use face authentication hardware for authentication</string>
+ <string name="permdesc_useFaceAuthentication">Allows the app to use face unlock hardware for authentication</string>
<!-- Notification name shown when the system requires the user to re-enroll their face. [CHAR LIMIT=NONE] -->
- <string name="face_recalibrate_notification_name">Face Authentication</string>
+ <string name="face_recalibrate_notification_name">Face unlock</string>
<!-- Notification title shown when the system requires the user to re-enroll their face. [CHAR LIMIT=NONE] -->
<string name="face_recalibrate_notification_title">Re-enroll your face</string>
<!-- Notification content shown when the system requires the user to re-enroll their face. [CHAR LIMIT=NONE] -->
@@ -1561,23 +1561,23 @@
<!-- Error message shown when the face hardware can't be accessed. [CHAR LIMIT=69] -->
<string name="face_error_hw_not_available">Can\u2019t verify face. Hardware not available.</string>
<!-- Error message shown when the face hardware timer has expired and the user needs to restart the operation. [CHAR LIMIT=50] -->
- <string name="face_error_timeout">Try face authentication again.</string>
+ <string name="face_error_timeout">Try face unlock again.</string>
<!-- Error message shown when the face hardware has run out of room for storing faces. [CHAR LIMIT=69] -->
<string name="face_error_no_space">Can\u2019t store new face data. Delete an old one first.</string>
<!-- Generic error message shown when the face operation (e.g. enrollment or authentication) is canceled. Generally not shown to the user. [CHAR LIMIT=50] -->
- <string name="face_error_canceled">Face operation canceled</string>
- <!-- Generic error message shown when the face authentication operation is canceled due to user input. Generally not shown to the user [CHAR LIMIT=54] -->
- <string name="face_error_user_canceled">Face authentication canceled by user</string>
+ <string name="face_error_canceled">Face operation canceled.</string>
+ <!-- Generic error message shown when the face unlock operation is canceled due to user input. Generally not shown to the user [CHAR LIMIT=54] -->
+ <string name="face_error_user_canceled">Face unlock canceled by user.</string>
<!-- Generic error message shown when the face operation fails because too many attempts have been made. [CHAR LIMIT=50] -->
<string name="face_error_lockout">Too many attempts. Try again later.</string>
<!-- Generic error message shown when the face operation fails because strong authentication is required. [CHAR LIMIT=71] -->
- <string name="face_error_lockout_permanent">Too many attempts. Face authentication disabled.</string>
+ <string name="face_error_lockout_permanent">Too many attempts. Face unlock disabled.</string>
<!-- Generic error message shown when the face hardware can't recognize the face. [CHAR LIMIT=50] -->
<string name="face_error_unable_to_process">Can\u2019t verify face. Try again.</string>
<!-- Generic error message shown when the user has no enrolled face. [CHAR LIMIT=52] -->
- <string name="face_error_not_enrolled">You haven\u2019t set up face authentication</string>
- <!-- Generic error message shown when the app requests face authentication on a device without a sensor. [CHAR LIMIT=61] -->
- <string name="face_error_hw_not_present">Face authentication is not supported on this device</string>
+ <string name="face_error_not_enrolled">You haven\u2019t set up face unlock.</string>
+ <!-- Generic error message shown when the app requests face unlock on a device without a sensor. [CHAR LIMIT=61] -->
+ <string name="face_error_hw_not_present">Face unlock is not supported on this device.</string>
<!-- Template to be used to name enrolled faces by default. [CHAR LIMIT=10] -->
<string name="face_name_template">Face <xliff:g id="faceId" example="1">%d</xliff:g></string>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 0bad05a8ff2d..cc76a0eabc45 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2271,11 +2271,6 @@
<java-symbol type="anim" name="lock_screen_wallpaper_exit" />
<java-symbol type="anim" name="launch_task_behind_source" />
<java-symbol type="anim" name="wallpaper_open_exit" />
- <java-symbol type="anim" name="lock_to_error" />
- <java-symbol type="anim" name="lock_lock" />
- <java-symbol type="anim" name="lock_unlock" />
- <java-symbol type="anim" name="lock_in" />
- <java-symbol type="anim" name="lock_scanning" />
<java-symbol type="bool" name="config_alwaysUseCdmaRssi" />
<java-symbol type="dimen" name="status_bar_icon_size" />
@@ -2586,6 +2581,7 @@
<java-symbol type="array" name="config_face_acquire_vendor_keyguard_ignorelist" />
<java-symbol type="array" name="config_face_acquire_biometricprompt_ignorelist" />
<java-symbol type="array" name="config_face_acquire_vendor_biometricprompt_ignorelist" />
+ <java-symbol type="bool" name="config_faceAuthDismissesKeyguard" />
<!-- Face config -->
<java-symbol type="integer" name="config_faceMaxTemplatesPerUser" />
diff --git a/core/tests/coretests/res/values/overlayable_icons_test.xml b/core/tests/coretests/res/values/overlayable_icons_test.xml
index 68de2c0caf18..285db5005187 100644
--- a/core/tests/coretests/res/values/overlayable_icons_test.xml
+++ b/core/tests/coretests/res/values/overlayable_icons_test.xml
@@ -20,15 +20,18 @@
<array name="overlayable_icons">
<item>@*android:drawable/ic_audio_alarm</item>
<item>@*android:drawable/ic_audio_alarm_mute</item>
+ <item>@*android:drawable/ic_battery_80_24dp</item>
<item>@*android:drawable/ic_bluetooth_share_icon</item>
<item>@*android:drawable/ic_bt_headphones_a2dp</item>
<item>@*android:drawable/ic_bt_headset_hfp</item>
<item>@*android:drawable/ic_bt_hearing_aid</item>
<item>@*android:drawable/ic_bt_laptop</item>
+ <item>@*android:drawable/ic_bt_misc_hid</item>
<item>@*android:drawable/ic_bt_network_pan</item>
<item>@*android:drawable/ic_bt_pointing_hid</item>
<item>@*android:drawable/ic_corp_badge</item>
<item>@*android:drawable/ic_expand_more</item>
+ <item>@*android:drawable/ic_faster_emergency</item>
<item>@*android:drawable/ic_file_copy</item>
<item>@*android:drawable/ic_lock</item>
<item>@*android:drawable/ic_lock_bugreport</item>
@@ -36,6 +39,7 @@
<item>@*android:drawable/ic_lock_power_off</item>
<item>@*android:drawable/ic_lockscreen_ime</item>
<item>@*android:drawable/ic_mode_edit</item>
+ <item>@*android:drawable/ic_notifications_alerted</item>
<item>@*android:drawable/ic_phone</item>
<item>@*android:drawable/ic_qs_airplane</item>
<item>@*android:drawable/ic_qs_auto_rotate</item>
diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java b/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java
index 98eb57300f0b..7ce713b2f296 100644
--- a/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java
+++ b/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java
@@ -60,6 +60,7 @@ public class SignalDrawable extends DrawableWrapper {
private static final int NUM_LEVEL_MASK = 0xff << NUM_LEVEL_SHIFT;
private static final int STATE_SHIFT = 16;
private static final int STATE_MASK = 0xff << STATE_SHIFT;
+ private static final int STATE_EMPTY = 1;
private static final int STATE_CUT = 2;
private static final int STATE_CARRIER_CHANGE = 3;
@@ -203,7 +204,7 @@ public class SignalDrawable extends DrawableWrapper {
drawDotAndPadding(x - dotSpacing * 2, y, dotPadding, dotSize, 0);
canvas.drawPath(mCutoutPath, mTransparentPaint);
canvas.drawPath(mForegroundPath, mForegroundPaint);
- } else if (isInState(STATE_CUT)) {
+ } else if (isInState(STATE_CUT) || isInState(STATE_EMPTY)) {
float cut = (CUT_OUT * width);
mCutoutPath.moveTo(width - padding, height - padding);
mCutoutPath.rLineTo(-cut, 0);
@@ -268,13 +269,14 @@ public class SignalDrawable extends DrawableWrapper {
/**
* Returns whether this drawable is in the specified state.
*
- * @param state must be one of {@link #STATE_CARRIER_CHANGE} or {@link #STATE_CUT}
+ * @param state must be one of {@link #STATE_CARRIER_CHANGE}, {@link #STATE_CUT},
+ * or {@link #STATE_EMPTY}.
*/
private boolean isInState(int state) {
return getState(getLevel()) == state;
}
- public static int getState(int fullState) {
+ private static int getState(int fullState) {
return (fullState & STATE_MASK) >> STATE_SHIFT;
}
@@ -286,7 +288,12 @@ public class SignalDrawable extends DrawableWrapper {
/** Returns the state representing empty mobile signal with the given number of levels. */
public static int getEmptyState(int numLevels) {
- return getState(0, numLevels, true);
+ return (STATE_EMPTY << STATE_SHIFT) | (numLevels << NUM_LEVEL_SHIFT);
+ }
+
+ /** Returns whether fullState corresponds to the empty state. */
+ public static boolean isEmptyState(int fullState) {
+ return getState(fullState) == STATE_EMPTY;
}
/** Returns the state representing carrier change with the given number of levels. */
diff --git a/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml b/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml
index 65f7a0e29843..8c611f61dc23 100644
--- a/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml
+++ b/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml
@@ -6,5 +6,5 @@
<path
android:pathData="M170,40m-39,0a39,39 0,1 1,78 0a39,39 0,1 1,-78 0"
android:strokeColor="#000000"
- android:strokeWidth="2"/>
+ android:strokeWidth="3"/>
</vector>
diff --git a/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml b/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml
index 95b4b1ad0b9b..27bc43638f06 100644
--- a/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml
+++ b/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml
@@ -6,5 +6,5 @@
<path
android:pathData="M170,1L170,1A39,39 0,0 1,209 40L209,130A39,39 0,0 1,170 169L170,169A39,39 0,0 1,131 130L131,40A39,39 0,0 1,170 1z"
android:strokeColor="#000000"
- android:strokeWidth="2"/>
+ android:strokeWidth="3"/>
</vector>
diff --git a/core/res/res/anim/lock_in.xml b/packages/SystemUI/res/anim/lock_in.xml
index c7014e80d33e..c7014e80d33e 100644
--- a/core/res/res/anim/lock_in.xml
+++ b/packages/SystemUI/res/anim/lock_in.xml
diff --git a/packages/SystemUI/res/anim/lock_in_circular.xml b/packages/SystemUI/res/anim/lock_in_circular.xml
new file mode 100644
index 000000000000..d1e98db6e0e3
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_in_circular.xml
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="32dp"
+ android:viewportHeight="32"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="9.583"
+ android:pivotY="8.916"
+ android:scaleX="0"
+ android:scaleY="0"
+ android:translateX="6.416"
+ android:translateY="10.416999999999998" >
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M17.42 1.75 C17.42,1.75 17.42,14.58 17.42,14.58 C17.42,15.41 16.74,16.08 15.92,16.08 C15.92,16.08 3.25,16.08 3.25,16.08 C2.42,16.08 1.75,15.41 1.75,14.58 C1.75,14.58 1.75,1.75 1.75,1.75 C1.75,1.75 17.42,1.75 17.42,1.75c M18.92 0.25 C18.92,0.25 0.25,0.25 0.25,0.25 C0.25,0.25 0.25,14.58 0.25,14.58 C0.25,16.24 1.59,17.58 3.25,17.58 C3.25,17.58 15.92,17.58 15.92,17.58 C17.57,17.58 18.92,16.24 18.92,14.58 C18.92,14.58 18.92,0.25 18.92,0.25c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_3_T_0"
+ android:pivotX="9.583"
+ android:pivotY="8.916"
+ android:scaleX="0"
+ android:scaleY="0"
+ android:translateX="6.416"
+ android:translateY="10.416999999999998" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="7.334"
+ android:translateY="5.333" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M4.25 2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25 C3.35,0.25 4.25,1.15 4.25,2.25c " />
+ <path
+ android:name="_R_G_L_1_G_D_1_P_0"
+ android:pathData=" M2.25 2.25 C2.25,2.25 2.25,5.92 2.25,5.92 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:pivotX="9.583"
+ android:pivotY="8.916"
+ android:scaleX="0"
+ android:scaleY="0"
+ android:translateX="6.416"
+ android:translateY="10.416999999999998" >
+ <group
+ android:name="_R_G_L_0_G_T_1"
+ android:translateX="9.583"
+ android:translateY="-0.861" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-8.083"
+ android:translateY="-8.173" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5"
+ android:trimPathEnd="0.9"
+ android:trimPathOffset="0"
+ android:trimPathStart="0.15" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_2_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleX"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleY"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_3_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleX"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleY"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="50"
+ android:propertyName="trimPathStart"
+ android:startOffset="0"
+ android:valueFrom="0.15"
+ android:valueTo="0.15"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="67"
+ android:propertyName="trimPathStart"
+ android:startOffset="50"
+ android:valueFrom="0.15"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="50"
+ android:propertyName="trimPathEnd"
+ android:startOffset="0"
+ android:valueFrom="0.9"
+ android:valueTo="0.9"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="67"
+ android:propertyName="trimPathEnd"
+ android:startOffset="50"
+ android:valueFrom="0.9"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="150"
+ android:pathData="M 9.583,-0.861C 9.583,-1.32784640645981 9.583,-3.19515359354019 9.583,-3.662"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleX"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleY"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_in_filled.xml b/packages/SystemUI/res/anim/lock_in_filled.xml
new file mode 100644
index 000000000000..4cde38d4f0dc
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_in_filled.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="32dp"
+ android:viewportHeight="32"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="10.917"
+ android:pivotY="9.583"
+ android:scaleX="0"
+ android:scaleY="0"
+ android:translateX="5.083"
+ android:translateY="10.417" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_2_T_0"
+ android:pivotX="10.917"
+ android:pivotY="9.583"
+ android:scaleX="0"
+ android:scaleY="0"
+ android:translateX="5.083"
+ android:translateY="10.417" >
+ <group
+ android:name="_R_G_L_0_G_T_1"
+ android:translateX="10.917"
+ android:translateY="0.579" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-9"
+ android:translateY="-9" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M13 13 C13,13 13,9 13,9 C13,6.79 11.21,5 9,5 C6.79,5 5,6.79 5,9 C5,9 5,13 5,13 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="2" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_1_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleX"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleY"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="150"
+ android:pathData="M 10.917,0.579C 10.917,-0.14248990631104008 10.917,-3.02851009368896 10.917,-3.75"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_2_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleX"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleY"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_in_rounded.xml b/packages/SystemUI/res/anim/lock_in_rounded.xml
new file mode 100644
index 000000000000..7c8cf9d7b525
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_in_rounded.xml
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="38dp"
+ android:viewportHeight="38"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="14.667"
+ android:pivotY="12.667"
+ android:scaleX="0"
+ android:scaleY="0"
+ android:translateX="1.3330000000000002"
+ android:translateY="10.333" >
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:pathData=" M22.09 5 C22.09,5 6,5 6,5 C5.45,5 5,5.45 5,6 C5,6 5,19.33 5,19.33 C5,19.89 5.45,20.33 6,20.33 C6,20.33 23.33,20.33 23.33,20.33 C23.89,20.33 24.33,19.89 24.33,19.33 C24.33,19.33 24.33,6 24.33,6 C24.33,5.45 23.89,5 23.33,5 C23.33,5 22.09,5 22.09,5c "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_3_T_0"
+ android:pivotX="14.667"
+ android:pivotY="12.667"
+ android:scaleX="0"
+ android:scaleY="0"
+ android:translateX="1.3330000000000002"
+ android:translateY="10.333" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="12.416"
+ android:translateY="10.417" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M2.25 0.25 C3.35,0.25 4.25,1.15 4.25,2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25c " />
+ </group>
+ </group>
+ <group android:name="_R_G_L_0_G_N_3_T_0_M" >
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:pivotX="14.667"
+ android:pivotY="12.667"
+ android:scaleX="0"
+ android:scaleY="0"
+ android:translateX="1.3330000000000002"
+ android:translateY="10.333" >
+ <group
+ android:name="_R_G_L_0_G_T_1"
+ android:translateX="14.666"
+ android:translateY="3.769" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-9.333"
+ android:translateY="-9.713" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5"
+ android:trimPathEnd="0.9"
+ android:trimPathOffset="0"
+ android:trimPathStart="0.14" />
+ </group>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_2_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleX"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleY"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_3_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleX"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleY"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="50"
+ android:propertyName="trimPathStart"
+ android:startOffset="0"
+ android:valueFrom="0.14"
+ android:valueTo="0.14"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="67"
+ android:propertyName="trimPathStart"
+ android:startOffset="50"
+ android:valueFrom="0.14"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="50"
+ android:propertyName="trimPathEnd"
+ android:startOffset="0"
+ android:valueFrom="0.9"
+ android:valueTo="0.9"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="67"
+ android:propertyName="trimPathEnd"
+ android:startOffset="50"
+ android:valueFrom="0.9"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.167,0.167 0.833,0.833 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="150"
+ android:pathData="M 14.666,3.769C 14.666,3.18868762874603 14.666,0.8673123712539699 14.666,0.287"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1.025"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.043,0.277 0.44,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleX"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleY"
+ android:startOffset="233"
+ android:valueFrom="1.025"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0_M" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="0"
+ android:propertyName="scaleX"
+ android:startOffset="50"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/core/res/res/anim/lock_lock.xml b/packages/SystemUI/res/anim/lock_lock.xml
index 3b8c4855fc8f..3167e7cd616d 100644
--- a/core/res/res/anim/lock_lock.xml
+++ b/packages/SystemUI/res/anim/lock_lock.xml
@@ -1,17 +1,18 @@
-<!-- Copyright (C) 2019 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.
--->
+<!--
+ ~ Copyright (C) 2019 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
+ -->
<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt">
<aapt:attr name="android:drawable">
diff --git a/packages/SystemUI/res/anim/lock_lock_circular.xml b/packages/SystemUI/res/anim/lock_lock_circular.xml
new file mode 100644
index 000000000000..81694407b640
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_lock_circular.xml
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="42dp"
+ android:viewportHeight="42"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_2_G_T_1"
+ android:translateX="15.999"
+ android:translateY="24.333" >
+ <group
+ android:name="_R_G_L_2_G"
+ android:translateX="-9.583"
+ android:translateY="-8.916" >
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M17.42 1.75 C17.42,1.75 17.42,14.58 17.42,14.58 C17.42,15.41 16.74,16.08 15.92,16.08 C15.92,16.08 3.25,16.08 3.25,16.08 C2.42,16.08 1.75,15.41 1.75,14.58 C1.75,14.58 1.75,1.75 1.75,1.75 C1.75,1.75 17.42,1.75 17.42,1.75c M18.92 0.25 C18.92,0.25 0.25,0.25 0.25,0.25 C0.25,0.25 0.25,14.58 0.25,14.58 C0.25,16.24 1.59,17.58 3.25,17.58 C3.25,17.58 15.92,17.58 15.92,17.58 C17.57,17.58 18.92,16.24 18.92,14.58 C18.92,14.58 18.92,0.25 18.92,0.25c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_4_T_1"
+ android:translateX="15.999"
+ android:translateY="24.333" >
+ <group
+ android:name="_R_G_L_1_G_N_4_T_0"
+ android:translateX="-9.583"
+ android:translateY="-8.916" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="2.25"
+ android:pivotY="3.334"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="7.334"
+ android:translateY="5.333" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M4.25 2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25 C3.35,0.25 4.25,1.15 4.25,2.25c " />
+ <path
+ android:name="_R_G_L_1_G_D_1_P_0"
+ android:pathData=" M2.25 2.25 C2.25,2.25 2.25,5.92 2.25,5.92 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_4_T_1"
+ android:translateX="15.999"
+ android:translateY="24.333" >
+ <group
+ android:name="_R_G_L_0_G_N_4_T_0"
+ android:translateX="-9.583"
+ android:translateY="-8.916" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="1.5"
+ android:translateY="-11.835" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M12.42 12.6 C12.42,12.6 12.41,8.16 12.41,8.16 C12.41,5.81 14.36,3.75 16.75,3.77 C19.15,3.78 21.07,5.71 21.07,8.05 C21.07,8.05 21.08,8.22 21.08,8.22 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_2_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="400"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="24.333"
+ android:valueTo="24.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="translateY"
+ android:startOffset="400"
+ android:valueFrom="24.333"
+ android:valueTo="25.833"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="translateY"
+ android:startOffset="517"
+ android:valueFrom="25.833"
+ android:valueTo="24.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="450"
+ android:valueFrom="1"
+ android:valueTo="1.05"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="450"
+ android:valueFrom="1"
+ android:valueTo="1.05"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="scaleX"
+ android:startOffset="533"
+ android:valueFrom="1.05"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="scaleY"
+ android:startOffset="533"
+ android:valueFrom="1.05"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="400"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="24.333"
+ android:valueTo="24.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="translateY"
+ android:startOffset="400"
+ android:valueFrom="24.333"
+ android:valueTo="25.833"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="translateY"
+ android:startOffset="517"
+ android:valueFrom="25.833"
+ android:valueTo="24.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="333"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M12.42 12.6 C12.42,12.6 12.41,8.16 12.41,8.16 C12.41,5.81 14.36,3.75 16.75,3.77 C19.15,3.78 21.07,5.71 21.07,8.05 C21.07,8.05 21.08,8.22 21.08,8.22 "
+ android:valueTo="M12.42 12.6 C12.42,12.6 12.4,5.86 12.4,5.86 C12.4,3.52 10.46,1.44 8.06,1.44 C5.67,1.44 3.73,3.52 3.73,5.86 C3.73,5.86 3.75,7.41 3.75,7.41 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.635,0 0.43,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="67"
+ android:propertyName="pathData"
+ android:startOffset="333"
+ android:valueFrom="M12.42 12.6 C12.42,12.6 12.4,5.86 12.4,5.86 C12.4,3.52 10.46,1.44 8.06,1.44 C5.67,1.44 3.73,3.52 3.73,5.86 C3.73,5.86 3.75,7.41 3.75,7.41 "
+ android:valueTo="M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.512,0 0.41,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="400"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="24.333"
+ android:valueTo="24.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="translateY"
+ android:startOffset="400"
+ android:valueFrom="24.333"
+ android:valueTo="25.833"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="translateY"
+ android:startOffset="517"
+ android:valueFrom="25.833"
+ android:valueTo="24.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_lock_filled.xml b/packages/SystemUI/res/anim/lock_lock_filled.xml
new file mode 100644
index 000000000000..017c3299c3b2
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_lock_filled.xml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="42dp"
+ android:viewportHeight="42"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_1_G_T_1"
+ android:translateX="16"
+ android:translateY="25" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-10.917"
+ android:translateY="-9.583" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_1"
+ android:translateX="16"
+ android:translateY="25" >
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:translateX="-10.917"
+ android:translateY="-9.583" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="9.917000000000002"
+ android:translateY="-12.75" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M13 9 C13,7.9 12.55,6.9 11.83,6.17 C11.1,5.45 10.11,5 9,5 C6.79,5 5,6.79 5,9 C5,9 5,13 5,13 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="2" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_1_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c "
+ android:valueTo=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="pathData"
+ android:startOffset="450"
+ android:valueFrom=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c "
+ android:valueTo=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.58 C9.27,12.58 7.92,11.23 7.92,9.58 C7.92,7.93 9.27,6.58 10.92,6.58 C12.57,6.58 13.92,7.93 13.92,9.58 C13.92,11.23 12.57,12.58 10.92,12.58c "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="pathData"
+ android:startOffset="533"
+ android:valueFrom=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.58 C9.27,12.58 7.92,11.23 7.92,9.58 C7.92,7.93 9.27,6.58 10.92,6.58 C12.57,6.58 13.92,7.93 13.92,9.58 C13.92,11.23 12.57,12.58 10.92,12.58c "
+ android:valueTo=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="400"
+ android:pathData="M 16,25C 16,25.27083334326744 16,25 16,25"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 16,25C 16,25.27083334326744 16,26.625 16,26.625"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="400" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 16,26.625C 16,26.625 16,25.27083334326744 16,25"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="517" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="317"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M13 9 C13,7.9 12.55,6.9 11.83,6.17 C11.1,5.45 10.11,5 9,5 C6.79,5 5,6.79 5,9 C5,9 5,13 5,13 "
+ android:valueTo="M-3 6.73 C-3,5.62 -2.56,4.67 -1.84,4 C-1.11,3.32 -0.09,2.93 1.06,2.94 C3.27,2.96 5,4.54 5,6.75 C5,6.75 5,13 5,13 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.637,0 0.437,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="pathData"
+ android:startOffset="317"
+ android:valueFrom="M-3 6.73 C-3,5.62 -2.56,4.67 -1.84,4 C-1.11,3.32 -0.09,2.93 1.06,2.94 C3.27,2.96 5,4.54 5,6.75 C5,6.75 5,13 5,13 "
+ android:valueTo="M-3 13.04 C-3,13.04 -3,9.04 -3,9.04 C-3,6.83 -1.25,5.05 0.69,5.01 C2.9,4.97 5,6.79 5,9 C5,9 5,13 5,13 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.497,0 0.408,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="400"
+ android:pathData="M 16,25C 16,25.27083334326744 16,25 16,25"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 16,25C 16,25.27083334326744 16,26.625 16,26.625"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="400" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 16,26.625C 16,26.625 16,25.27083334326744 16,25"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="517" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_lock_rounded.xml b/packages/SystemUI/res/anim/lock_lock_rounded.xml
new file mode 100644
index 000000000000..fc4545c4323d
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_lock_rounded.xml
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="42dp"
+ android:viewportHeight="42"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_2_G_T_1"
+ android:translateX="16"
+ android:translateY="25" >
+ <group
+ android:name="_R_G_L_2_G"
+ android:translateX="-14.667"
+ android:translateY="-12.667" >
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:pathData=" M22.09 5 C22.09,5 6,5 6,5 C5.45,5 5,5.45 5,6 C5,6 5,19.33 5,19.33 C5,19.89 5.45,20.33 6,20.33 C6,20.33 23.33,20.33 23.33,20.33 C23.89,20.33 24.33,19.89 24.33,19.33 C24.33,19.33 24.33,6 24.33,6 C24.33,5.45 23.89,5 23.33,5 C23.33,5 22.09,5 22.09,5c "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_5_T_1"
+ android:translateX="16"
+ android:translateY="25" >
+ <group
+ android:name="_R_G_L_1_G_N_5_T_0"
+ android:translateX="-14.667"
+ android:translateY="-12.667" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="2.25"
+ android:pivotY="2.25"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="12.416"
+ android:translateY="10.417" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M2.25 0.25 C3.35,0.25 4.25,1.15 4.25,2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25c " />
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_5_T_1"
+ android:translateX="16"
+ android:translateY="25" >
+ <group
+ android:name="_R_G_L_0_G_N_5_T_0"
+ android:translateX="-14.667"
+ android:translateY="-12.667" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="5.333"
+ android:translateY="-9.425999999999998" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.68,6.62 15.69,5.03 18.01,5.04 C20.46,5.04 22.32,6.89 22.34,8.85 C22.34,8.85 22.33,8.89 22.33,8.89 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_2_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="400"
+ android:pathData="M 16,25C 16,25.35416665673256 16,25 16,25"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 16,25C 16,25.35416665673256 16,27.125 16,27.125"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="400" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 16,27.125C 16,27.125 16,25.35416665673256 16,25"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="517" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="450"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="450"
+ android:valueFrom="1"
+ android:valueTo="1.12"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="450"
+ android:valueFrom="1"
+ android:valueTo="1.12"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="scaleX"
+ android:startOffset="533"
+ android:valueFrom="1.12"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="scaleY"
+ android:startOffset="533"
+ android:valueFrom="1.12"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_5_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="400"
+ android:pathData="M 16,25C 16,25.35416665673256 16,25 16,25"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 16,25C 16,25.35416665673256 16,27.125 16,27.125"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="400" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 16,27.125C 16,27.125 16,25.35416665673256 16,25"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="517" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="317"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.68,6.62 15.69,5.03 18.01,5.04 C20.46,5.04 22.32,6.89 22.34,8.85 C22.34,8.85 22.33,8.89 22.33,8.89 "
+ android:valueTo="M13.67 13.8 C13.67,13.8 13.69,5.06 13.69,5.06 C13.65,2.87 11.71,1.13 9.35,1.16 C7,1.13 5.06,2.87 5.02,5.06 C5.02,5.06 5,7.93 5,7.93 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.825,0 0.321,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="pathData"
+ android:startOffset="317"
+ android:valueFrom="M13.67 13.8 C13.67,13.8 13.69,5.06 13.69,5.06 C13.65,2.87 11.71,1.13 9.35,1.16 C7,1.13 5.06,2.87 5.02,5.06 C5.02,5.06 5,7.93 5,7.93 "
+ android:valueTo="M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.683,0 0.342,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_5_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="400"
+ android:pathData="M 16,25C 16,25.35416665673256 16,25 16,25"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 16,25C 16,25.35416665673256 16,27.125 16,27.125"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="400" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:pathData="M 16,27.125C 16,27.125 16,25.35416665673256 16,25"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="517" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/core/res/res/anim/lock_scanning.xml b/packages/SystemUI/res/anim/lock_scanning.xml
index db7972f542b3..db7972f542b3 100644
--- a/core/res/res/anim/lock_scanning.xml
+++ b/packages/SystemUI/res/anim/lock_scanning.xml
diff --git a/packages/SystemUI/res/anim/lock_scanning_circular.xml b/packages/SystemUI/res/anim/lock_scanning_circular.xml
new file mode 100644
index 000000000000..9468213562f4
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_scanning_circular.xml
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="42dp"
+ android:viewportHeight="42"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="9.583"
+ android:pivotY="8.916"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="6.416"
+ android:translateY="15.416999999999998" >
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M17.42 1.75 C17.42,1.75 17.42,14.58 17.42,14.58 C17.42,15.41 16.74,16.08 15.92,16.08 C15.92,16.08 3.25,16.08 3.25,16.08 C2.42,16.08 1.75,15.41 1.75,14.58 C1.75,14.58 1.75,1.75 1.75,1.75 C1.75,1.75 17.42,1.75 17.42,1.75c M18.92 0.25 C18.92,0.25 0.25,0.25 0.25,0.25 C0.25,0.25 0.25,14.58 0.25,14.58 C0.25,16.24 1.59,17.58 3.25,17.58 C3.25,17.58 15.92,17.58 15.92,17.58 C17.57,17.58 18.92,16.24 18.92,14.58 C18.92,14.58 18.92,0.25 18.92,0.25c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_3_T_0"
+ android:pivotX="9.583"
+ android:pivotY="8.916"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="6.416"
+ android:translateY="15.416999999999998" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="2.25"
+ android:pivotY="3.334"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="7.334"
+ android:translateY="5.333" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M4.25 2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25 C3.35,0.25 4.25,1.15 4.25,2.25c " />
+ <path
+ android:name="_R_G_L_1_G_D_1_P_0"
+ android:pathData=" M2.25 2.25 C2.25,2.25 2.25,5.92 2.25,5.92 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:pivotX="9.583"
+ android:pivotY="8.916"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="6.416"
+ android:translateY="15.416999999999998" >
+ <group
+ android:name="_R_G_L_0_G_T_1"
+ android:translateX="9.583"
+ android:translateY="-3.662" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-8.083"
+ android:translateY="-8.173" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_2_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleX"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleY"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.532,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.532,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.613,0 0.396,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.613,0 0.396,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="1"
+ android:valueTo="0.6"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.613,0 0.396,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="1"
+ android:valueTo="0.6"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.613,0 0.396,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="317"
+ android:propertyName="scaleX"
+ android:startOffset="267"
+ android:valueFrom="0.6"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.429,0 0.613,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="317"
+ android:propertyName="scaleY"
+ android:startOffset="267"
+ android:valueFrom="0.6"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.429,0 0.613,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_3_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleX"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleY"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.532,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.532,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 "
+ android:valueTo="M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="83"
+ android:valueFrom="M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 "
+ android:valueTo="M12.39 9.16 C12.39,9.16 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.73,9.16 3.73,9.16 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="pathData"
+ android:startOffset="250"
+ android:valueFrom="M12.39 9.16 C12.39,9.16 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.73,9.16 3.73,9.16 "
+ android:valueTo="M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:pathData="M 9.583,-3.662C 9.583,-3.03073584985733 9.583,-3.662 9.583,-3.662"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:pathData="M 9.583,-3.662C 9.583,-3.03073584985733 9.583,0.126 9.583,0.126"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="83" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:pathData="M 9.583,0.126C 9.583,0.126 9.583,-3.03073584985733 9.583,-3.662"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="250" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleX"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleY"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.532,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.532,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_scanning_filled.xml b/packages/SystemUI/res/anim/lock_scanning_filled.xml
new file mode 100644
index 000000000000..83ac8ad205f7
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_scanning_filled.xml
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="42dp"
+ android:viewportHeight="42"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="10.917"
+ android:pivotY="9.583"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="5.083"
+ android:translateY="15.417" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_2_T_0"
+ android:pivotX="10.917"
+ android:pivotY="9.583"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="5.083"
+ android:translateY="15.417" >
+ <group
+ android:name="_R_G_L_0_G_T_1"
+ android:translateX="10.917"
+ android:translateY="-3.75" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-9"
+ android:translateY="-9" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M13 13 C13,13 13,9 13,9 C13,6.79 11.21,5 9,5 C6.79,5 5,6.79 5,9 C5,9 5,13 5,13 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="2" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_1_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c "
+ android:valueTo=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="pathData"
+ android:startOffset="150"
+ android:valueFrom=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c "
+ android:valueTo=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 11.4 C9.91,11.4 9.1,10.59 9.1,9.58 C9.1,8.58 9.91,7.76 10.92,7.76 C11.92,7.76 12.74,8.58 12.74,9.58 C12.74,10.59 11.92,11.4 10.92,11.4c "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="317"
+ android:propertyName="pathData"
+ android:startOffset="267"
+ android:valueFrom=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 11.4 C9.91,11.4 9.1,10.59 9.1,9.58 C9.1,8.58 9.91,7.76 10.92,7.76 C11.92,7.76 12.74,8.58 12.74,9.58 C12.74,10.59 11.92,11.4 10.92,11.4c "
+ android:valueTo=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleX"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleY"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.532,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.532,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:pathData="M 10.917,-3.75C 10.917,-3.13846284151077 10.917,-3.75 10.917,-3.75"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:pathData="M 10.917,-3.75C 10.917,-3.13846284151077 10.917,-0.081 10.917,-0.081"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="83" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:pathData="M 10.917,-0.081C 10.917,-0.081 10.917,-3.13846284151077 10.917,-3.75"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="250" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_2_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleX"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleY"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.532,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.532,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_scanning_rounded.xml b/packages/SystemUI/res/anim/lock_scanning_rounded.xml
new file mode 100644
index 000000000000..983549230b54
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_scanning_rounded.xml
@@ -0,0 +1,531 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="38dp"
+ android:viewportHeight="38"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="14.667"
+ android:pivotY="12.667"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="1.3330000000000002"
+ android:translateY="10.333" >
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:pathData=" M22.09 5 C22.09,5 6,5 6,5 C5.45,5 5,5.45 5,6 C5,6 5,19.33 5,19.33 C5,19.89 5.45,20.33 6,20.33 C6,20.33 23.33,20.33 23.33,20.33 C23.89,20.33 24.33,19.89 24.33,19.33 C24.33,19.33 24.33,6 24.33,6 C24.33,5.45 23.89,5 23.33,5 C23.33,5 22.09,5 22.09,5c "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_4_T_0"
+ android:pivotX="14.667"
+ android:pivotY="12.667"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="1.3330000000000002"
+ android:translateY="10.333" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="2.25"
+ android:pivotY="2.25"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="12.416"
+ android:translateY="10.417" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M2.25 0.25 C3.35,0.25 4.25,1.15 4.25,2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_4_T_0"
+ android:pivotX="14.667"
+ android:pivotY="12.667"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="1.3330000000000002"
+ android:translateY="10.333" >
+ <group
+ android:name="_R_G_L_0_G_T_1"
+ android:translateX="14.666"
+ android:translateY="0.287" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="-9.333"
+ android:translateY="-9.713" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_2_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleX"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleY"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.397,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.397,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="150"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleX"
+ android:startOffset="150"
+ android:valueFrom="1"
+ android:valueTo="0.8"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="117"
+ android:propertyName="scaleY"
+ android:startOffset="150"
+ android:valueFrom="1"
+ android:valueTo="0.8"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="317"
+ android:propertyName="scaleX"
+ android:startOffset="267"
+ android:valueFrom="0.8"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="317"
+ android:propertyName="scaleY"
+ android:startOffset="267"
+ android:valueFrom="0.8"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleX"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleY"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.397,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.397,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 "
+ android:valueTo="M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="pathData"
+ android:startOffset="83"
+ android:valueFrom="M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 "
+ android:valueTo="M13.7 10.21 C13.7,10.21 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5.03,10.21 5.03,10.21 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="pathData"
+ android:startOffset="250"
+ android:valueFrom="M13.7 10.21 C13.7,10.21 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5.03,10.21 5.03,10.21 "
+ android:valueTo="M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:pathData="M 14.666,0.287C 14.666,0.8689466710090599 14.666,0.287 14.666,0.287"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="0" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:pathData="M 14.666,0.287C 14.666,0.8689466710090599 14.666,3.779 14.666,3.779"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="83" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:pathData="M 14.666,3.779C 14.666,3.779 14.666,0.8689466710090599 14.666,0.287"
+ android:propertyName="translateXY"
+ android:propertyXName="translateX"
+ android:propertyYName="translateY"
+ android:startOffset="250" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleX"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="83"
+ android:propertyName="scaleY"
+ android:startOffset="83"
+ android:valueFrom="1"
+ android:valueTo="0.9500000000000001"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.36,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleX"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="183"
+ android:propertyName="scaleY"
+ android:startOffset="167"
+ android:valueFrom="0.9500000000000001"
+ android:valueTo="1.2"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.461,0 0.526,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleX"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.397,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="233"
+ android:propertyName="scaleY"
+ android:startOffset="350"
+ android:valueFrom="1.2"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.428,0 0.397,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/core/res/res/anim/lock_to_error.xml b/packages/SystemUI/res/anim/lock_to_error.xml
index e356f26dde59..e356f26dde59 100644
--- a/core/res/res/anim/lock_to_error.xml
+++ b/packages/SystemUI/res/anim/lock_to_error.xml
diff --git a/packages/SystemUI/res/anim/lock_to_error_circular.xml b/packages/SystemUI/res/anim/lock_to_error_circular.xml
new file mode 100644
index 000000000000..9a847232d80b
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_to_error_circular.xml
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="32dp"
+ android:viewportHeight="32"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="9.583"
+ android:pivotY="8.916"
+ android:rotation="0"
+ android:translateX="6.416"
+ android:translateY="10.416999999999998" >
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M17.42 1.75 C17.42,1.75 17.42,14.58 17.42,14.58 C17.42,15.41 16.74,16.08 15.92,16.08 C15.92,16.08 3.25,16.08 3.25,16.08 C2.42,16.08 1.75,15.41 1.75,14.58 C1.75,14.58 1.75,1.75 1.75,1.75 C1.75,1.75 17.42,1.75 17.42,1.75c M18.92 0.25 C18.92,0.25 0.25,0.25 0.25,0.25 C0.25,0.25 0.25,14.58 0.25,14.58 C0.25,16.24 1.59,17.58 3.25,17.58 C3.25,17.58 15.92,17.58 15.92,17.58 C17.57,17.58 18.92,16.24 18.92,14.58 C18.92,14.58 18.92,0.25 18.92,0.25c " />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_3_T_0"
+ android:pivotX="9.583"
+ android:pivotY="8.916"
+ android:rotation="0"
+ android:translateX="6.416"
+ android:translateY="10.416999999999998" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="7.334"
+ android:translateY="5.333" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M4.25 2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25 C3.35,0.25 4.25,1.15 4.25,2.25c " />
+ <path
+ android:name="_R_G_L_1_G_D_1_P_0"
+ android:pathData=" M2.25 2.25 C2.25,2.25 2.25,5.92 2.25,5.92 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:pivotX="9.583"
+ android:pivotY="8.916"
+ android:rotation="0"
+ android:translateX="6.416"
+ android:translateY="10.416999999999998" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="1.5"
+ android:translateY="-11.835" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_2_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="rotation"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="120"
+ android:propertyName="rotation"
+ android:startOffset="133"
+ android:valueFrom="0"
+ android:valueTo="-10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="97"
+ android:propertyName="rotation"
+ android:startOffset="253"
+ android:valueFrom="-10"
+ android:valueTo="10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.531,0 0.389,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="rotation"
+ android:startOffset="350"
+ android:valueFrom="10"
+ android:valueTo="-5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.499,0 0.489,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="rotation"
+ android:startOffset="450"
+ android:valueFrom="-5"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.293,0 0.689,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_3_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="rotation"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="120"
+ android:propertyName="rotation"
+ android:startOffset="133"
+ android:valueFrom="0"
+ android:valueTo="-10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="97"
+ android:propertyName="rotation"
+ android:startOffset="253"
+ android:valueFrom="-10"
+ android:valueTo="10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.531,0 0.389,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="rotation"
+ android:startOffset="350"
+ android:valueFrom="10"
+ android:valueTo="-5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.499,0 0.489,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="rotation"
+ android:startOffset="450"
+ android:valueFrom="-5"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.293,0 0.689,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="rotation"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="120"
+ android:propertyName="rotation"
+ android:startOffset="133"
+ android:valueFrom="0"
+ android:valueTo="-10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="97"
+ android:propertyName="rotation"
+ android:startOffset="253"
+ android:valueFrom="-10"
+ android:valueTo="10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.531,0 0.389,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="rotation"
+ android:startOffset="350"
+ android:valueFrom="10"
+ android:valueTo="-5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.499,0 0.489,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="rotation"
+ android:startOffset="450"
+ android:valueFrom="-5"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.293,0 0.689,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_to_error_filled.xml b/packages/SystemUI/res/anim/lock_to_error_filled.xml
new file mode 100644
index 000000000000..6eb7425d9002
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_to_error_filled.xml
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="32dp"
+ android:viewportHeight="32"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="10.917"
+ android:pivotY="9.583"
+ android:rotation="0"
+ android:translateX="5.083"
+ android:translateY="10.417" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c " />
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_2_T_0"
+ android:pivotX="10.917"
+ android:pivotY="9.583"
+ android:rotation="0"
+ android:translateX="5.083"
+ android:translateY="10.417" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="1.9169999999999998"
+ android:translateY="-12.75" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M13 13 C13,13 13,9 13,9 C13,6.79 11.21,5 9,5 C6.79,5 5,6.79 5,9 C5,9 5,13 5,13 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="2" />
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_1_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="rotation"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="120"
+ android:propertyName="rotation"
+ android:startOffset="133"
+ android:valueFrom="0"
+ android:valueTo="-10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="97"
+ android:propertyName="rotation"
+ android:startOffset="253"
+ android:valueFrom="-10"
+ android:valueTo="10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.531,0 0.389,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="rotation"
+ android:startOffset="350"
+ android:valueFrom="10"
+ android:valueTo="-5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.499,0 0.489,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="rotation"
+ android:startOffset="450"
+ android:valueFrom="-5"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.293,0 0.689,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_2_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="rotation"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="120"
+ android:propertyName="rotation"
+ android:startOffset="133"
+ android:valueFrom="0"
+ android:valueTo="-10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="97"
+ android:propertyName="rotation"
+ android:startOffset="253"
+ android:valueFrom="-10"
+ android:valueTo="10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.531,0 0.389,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="rotation"
+ android:startOffset="350"
+ android:valueFrom="10"
+ android:valueTo="-5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.499,0 0.489,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="rotation"
+ android:startOffset="450"
+ android:valueFrom="-5"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.293,0 0.689,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_to_error_rounded.xml b/packages/SystemUI/res/anim/lock_to_error_rounded.xml
new file mode 100644
index 000000000000..46043caf8862
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_to_error_rounded.xml
@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="32dp"
+ android:viewportHeight="32"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_2_G"
+ android:pivotX="14.667"
+ android:pivotY="12.667"
+ android:rotation="0"
+ android:translateX="1.3330000000000002"
+ android:translateY="7.333" >
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:pathData=" M22.09 5 C22.09,5 6,5 6,5 C5.45,5 5,5.45 5,6 C5,6 5,19.33 5,19.33 C5,19.89 5.45,20.33 6,20.33 C6,20.33 23.33,20.33 23.33,20.33 C23.89,20.33 24.33,19.89 24.33,19.33 C24.33,19.33 24.33,6 24.33,6 C24.33,5.45 23.89,5 23.33,5 C23.33,5 22.09,5 22.09,5c "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_4_T_0"
+ android:pivotX="14.667"
+ android:pivotY="12.667"
+ android:rotation="0"
+ android:translateX="1.3330000000000002"
+ android:translateY="7.333" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="12.416"
+ android:translateY="10.417" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M2.25 0.25 C3.35,0.25 4.25,1.15 4.25,2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_4_T_0"
+ android:pivotX="14.667"
+ android:pivotY="12.667"
+ android:rotation="0"
+ android:translateX="1.3330000000000002"
+ android:translateY="7.333" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="5.333"
+ android:translateY="-9.425999999999998" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_2_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="rotation"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="120"
+ android:propertyName="rotation"
+ android:startOffset="133"
+ android:valueFrom="0"
+ android:valueTo="-10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="97"
+ android:propertyName="rotation"
+ android:startOffset="253"
+ android:valueFrom="-10"
+ android:valueTo="10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.531,0 0.389,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="rotation"
+ android:startOffset="350"
+ android:valueFrom="10"
+ android:valueTo="-5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.499,0 0.489,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="rotation"
+ android:startOffset="450"
+ android:valueFrom="-5"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.293,0 0.689,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="rotation"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="120"
+ android:propertyName="rotation"
+ android:startOffset="133"
+ android:valueFrom="0"
+ android:valueTo="-10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="97"
+ android:propertyName="rotation"
+ android:startOffset="253"
+ android:valueFrom="-10"
+ android:valueTo="10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.531,0 0.389,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="rotation"
+ android:startOffset="350"
+ android:valueFrom="10"
+ android:valueTo="-5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.499,0 0.489,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="rotation"
+ android:startOffset="450"
+ android:valueFrom="-5"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.293,0 0.689,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="rotation"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="120"
+ android:propertyName="rotation"
+ android:startOffset="133"
+ android:valueFrom="0"
+ android:valueTo="-10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.44,0 0.601,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="97"
+ android:propertyName="rotation"
+ android:startOffset="253"
+ android:valueFrom="-10"
+ android:valueTo="10"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.531,0 0.389,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="rotation"
+ android:startOffset="350"
+ android:valueFrom="10"
+ android:valueTo="-5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.499,0 0.489,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="167"
+ android:propertyName="rotation"
+ android:startOffset="450"
+ android:valueFrom="-5"
+ android:valueTo="0"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.293,0 0.689,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/core/res/res/anim/lock_unlock.xml b/packages/SystemUI/res/anim/lock_unlock.xml
index 91d44320d8c2..91d44320d8c2 100644
--- a/core/res/res/anim/lock_unlock.xml
+++ b/packages/SystemUI/res/anim/lock_unlock.xml
diff --git a/packages/SystemUI/res/anim/lock_unlock_circular.xml b/packages/SystemUI/res/anim/lock_unlock_circular.xml
new file mode 100644
index 000000000000..5fc8576e6687
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_unlock_circular.xml
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="42dp"
+ android:viewportHeight="42"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_2_G_T_1"
+ android:translateX="15.999"
+ android:translateY="24.333" >
+ <group
+ android:name="_R_G_L_2_G"
+ android:translateX="-9.583"
+ android:translateY="-8.916" >
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M17.42 1.75 C17.42,1.75 17.42,14.58 17.42,14.58 C17.42,15.41 16.74,16.08 15.92,16.08 C15.92,16.08 3.25,16.08 3.25,16.08 C2.42,16.08 1.75,15.41 1.75,14.58 C1.75,14.58 1.75,1.75 1.75,1.75 C1.75,1.75 17.42,1.75 17.42,1.75c M18.92 0.25 C18.92,0.25 0.25,0.25 0.25,0.25 C0.25,0.25 0.25,14.58 0.25,14.58 C0.25,16.24 1.59,17.58 3.25,17.58 C3.25,17.58 15.92,17.58 15.92,17.58 C17.57,17.58 18.92,16.24 18.92,14.58 C18.92,14.58 18.92,0.25 18.92,0.25c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_3_T_1"
+ android:translateX="15.999"
+ android:translateY="24.333" >
+ <group
+ android:name="_R_G_L_1_G_N_3_T_0"
+ android:translateX="-9.583"
+ android:translateY="-8.916" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="2.25"
+ android:pivotY="3.334"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="7.334"
+ android:translateY="5.333" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M4.25 2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25 C3.35,0.25 4.25,1.15 4.25,2.25c " />
+ <path
+ android:name="_R_G_L_1_G_D_1_P_0"
+ android:pathData=" M2.25 2.25 C2.25,2.25 2.25,5.92 2.25,5.92 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_1"
+ android:translateX="15.999"
+ android:translateY="24.333" >
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:translateX="-9.583"
+ android:translateY="-8.916" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="1.5"
+ android:translateY="-11.835" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_2_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="24.333"
+ android:valueTo="22.458"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.705,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="133"
+ android:valueFrom="22.458"
+ android:valueTo="25.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.289,0 0.724,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="translateY"
+ android:startOffset="267"
+ android:valueFrom="25.333"
+ android:valueTo="24.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.624,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="0.9"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="0.9"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="283"
+ android:propertyName="scaleX"
+ android:startOffset="100"
+ android:valueFrom="0.9"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="283"
+ android:propertyName="scaleY"
+ android:startOffset="100"
+ android:valueFrom="0.9"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_3_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="24.333"
+ android:valueTo="22.458"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.705,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="133"
+ android:valueFrom="22.458"
+ android:valueTo="25.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.289,0 0.724,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="translateY"
+ android:startOffset="267"
+ android:valueFrom="25.333"
+ android:valueTo="24.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.624,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="67"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M12.42 12.6 C12.42,12.6 12.42,8.17 12.42,8.17 C12.42,5.83 10.48,3.75 8.08,3.75 C5.69,3.75 3.75,5.83 3.75,8.17 C3.75,8.17 3.75,12.6 3.75,12.6 "
+ android:valueTo="M12.42 12.6 C12.42,12.6 12.4,5.86 12.4,5.86 C12.4,3.52 10.46,1.44 8.06,1.44 C5.67,1.44 3.73,3.52 3.73,5.86 C3.73,5.86 3.75,7.41 3.75,7.41 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.59,0 0.488,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="333"
+ android:propertyName="pathData"
+ android:startOffset="67"
+ android:valueFrom="M12.42 12.6 C12.42,12.6 12.4,5.86 12.4,5.86 C12.4,3.52 10.46,1.44 8.06,1.44 C5.67,1.44 3.73,3.52 3.73,5.86 C3.73,5.86 3.75,7.41 3.75,7.41 "
+ android:valueTo="M12.42 12.6 C12.42,12.6 12.41,8.16 12.41,8.16 C12.41,5.81 14.36,3.75 16.75,3.77 C19.15,3.78 21.07,5.71 21.07,8.05 C21.07,8.05 21.08,8.22 21.08,8.22 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.57,0 0.365,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="24.333"
+ android:valueTo="22.458"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.705,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="133"
+ android:valueFrom="22.458"
+ android:valueTo="25.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.289,0 0.724,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="translateY"
+ android:startOffset="267"
+ android:valueFrom="25.333"
+ android:valueTo="24.333"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.624,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_unlock_filled.xml b/packages/SystemUI/res/anim/lock_unlock_filled.xml
new file mode 100644
index 000000000000..2bf2d89e5c12
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_unlock_filled.xml
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="42dp"
+ android:viewportHeight="42"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_1_G_T_1"
+ android:translateX="16"
+ android:translateY="25" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:translateX="-10.917"
+ android:translateY="-9.583" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c " />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_3_T_1"
+ android:translateX="16"
+ android:translateY="25" >
+ <group
+ android:name="_R_G_L_0_G_N_3_T_0"
+ android:translateX="-10.917"
+ android:translateY="-9.583" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="9.917000000000002"
+ android:translateY="-12.75" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M-3 13.04 C-3,13.04 -3,9.04 -3,9.04 C-3,6.83 -1.03,5.04 0.91,5 C3.12,4.96 5,6.79 5,9 C5,9 5,13 5,13 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="2" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_1_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c "
+ android:valueTo=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 11.78 C9.71,11.78 8.72,10.79 8.72,9.58 C8.72,8.37 9.71,7.38 10.92,7.38 C12.13,7.38 13.12,8.37 13.12,9.58 C13.12,10.79 12.13,11.78 10.92,11.78c "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="283"
+ android:propertyName="pathData"
+ android:startOffset="100"
+ android:valueFrom=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 11.78 C9.71,11.78 8.72,10.79 8.72,9.58 C8.72,8.37 9.71,7.38 10.92,7.38 C12.13,7.38 13.12,8.37 13.12,9.58 C13.12,10.79 12.13,11.78 10.92,11.78c "
+ android:valueTo=" M18.92 0.25 C18.92,0.25 2.92,0.25 2.92,0.25 C1.45,0.25 0.25,1.45 0.25,2.92 C0.25,2.92 0.25,16.25 0.25,16.25 C0.25,17.72 1.45,18.92 2.92,18.92 C2.92,18.92 18.92,18.92 18.92,18.92 C20.38,18.92 21.58,17.72 21.58,16.25 C21.58,16.25 21.58,2.92 21.58,2.92 C21.58,1.45 20.38,0.25 18.92,0.25c M10.92 12.25 C9.45,12.25 8.25,11.05 8.25,9.58 C8.25,8.12 9.45,6.92 10.92,6.92 C12.38,6.92 13.58,8.12 13.58,9.58 C13.58,11.05 12.38,12.25 10.92,12.25c "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="25"
+ android:valueTo="23"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.32,0 0.803,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="133"
+ android:valueFrom="23"
+ android:valueTo="26.5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.223,0 0.761,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="translateY"
+ android:startOffset="267"
+ android:valueFrom="26.5"
+ android:valueTo="25"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.311,0 0.633,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="67"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M-3 13.04 C-3,13.04 -3,9.04 -3,9.04 C-3,6.83 -1.03,5.04 0.91,5 C3.12,4.96 5,6.79 5,9 C5,9 5,13 5,13 "
+ android:valueTo="M-3 6.73 C-3,5.62 -2.56,4.67 -1.84,4 C-1.11,3.32 -0.09,2.93 1.06,2.94 C3.27,2.96 5,4.54 5,6.75 C5,6.75 5,13 5,13 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.592,0 0.503,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="333"
+ android:propertyName="pathData"
+ android:startOffset="67"
+ android:valueFrom="M-3 6.73 C-3,5.62 -2.56,4.67 -1.84,4 C-1.11,3.32 -0.09,2.93 1.06,2.94 C3.27,2.96 5,4.54 5,6.75 C5,6.75 5,13 5,13 "
+ android:valueTo="M13 9 C13,7.9 12.55,6.9 11.83,6.17 C11.1,5.45 10.11,5 9,5 C6.79,5 5,6.79 5,9 C5,9 5,13 5,13 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.563,0 0.363,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_3_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="25"
+ android:valueTo="23"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.32,0 0.803,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="133"
+ android:valueFrom="23"
+ android:valueTo="26.5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.223,0 0.761,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="translateY"
+ android:startOffset="267"
+ android:valueFrom="26.5"
+ android:valueTo="25"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.311,0 0.633,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_unlock_rounded.xml b/packages/SystemUI/res/anim/lock_unlock_rounded.xml
new file mode 100644
index 000000000000..7c558513c7f9
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_unlock_rounded.xml
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:aapt="http://schemas.android.com/aapt"
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+
+ <aapt:attr name="android:drawable" >
+ <vector
+ android:height="42dp"
+ android:viewportHeight="42"
+ android:viewportWidth="32"
+ android:width="32dp" >
+ <group android:name="_R_G" >
+ <group
+ android:name="_R_G_L_2_G_T_1"
+ android:translateX="16"
+ android:translateY="25" >
+ <group
+ android:name="_R_G_L_2_G"
+ android:translateX="-14.667"
+ android:translateY="-12.667" >
+ <path
+ android:name="_R_G_L_2_G_D_0_P_0"
+ android:pathData=" M22.09 5 C22.09,5 6,5 6,5 C5.45,5 5,5.45 5,6 C5,6 5,19.33 5,19.33 C5,19.89 5.45,20.33 6,20.33 C6,20.33 23.33,20.33 23.33,20.33 C23.89,20.33 24.33,19.89 24.33,19.33 C24.33,19.33 24.33,6 24.33,6 C24.33,5.45 23.89,5 23.33,5 C23.33,5 22.09,5 22.09,5c "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_1_G_N_4_T_1"
+ android:translateX="16"
+ android:translateY="25" >
+ <group
+ android:name="_R_G_L_1_G_N_4_T_0"
+ android:translateX="-14.667"
+ android:translateY="-12.667" >
+ <group
+ android:name="_R_G_L_1_G"
+ android:pivotX="2.25"
+ android:pivotY="2.25"
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="12.416"
+ android:translateY="10.417" >
+ <path
+ android:name="_R_G_L_1_G_D_0_P_0"
+ android:fillAlpha="1"
+ android:fillColor="#ffffff"
+ android:fillType="nonZero"
+ android:pathData=" M2.25 0.25 C3.35,0.25 4.25,1.15 4.25,2.25 C4.25,3.35 3.35,4.25 2.25,4.25 C1.15,4.25 0.25,3.35 0.25,2.25 C0.25,1.15 1.15,0.25 2.25,0.25c " />
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="_R_G_L_0_G_N_4_T_1"
+ android:translateX="16"
+ android:translateY="25" >
+ <group
+ android:name="_R_G_L_0_G_N_4_T_0"
+ android:translateX="-14.667"
+ android:translateY="-12.667" >
+ <group
+ android:name="_R_G_L_0_G"
+ android:translateX="5.333"
+ android:translateY="-9.425999999999998" >
+ <path
+ android:name="_R_G_L_0_G_D_0_P_0"
+ android:pathData=" M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 "
+ android:strokeAlpha="1"
+ android:strokeColor="#ffffff"
+ android:strokeLineCap="round"
+ android:strokeLineJoin="round"
+ android:strokeWidth="1.5" />
+ </group>
+ </group>
+ </group>
+ </group>
+ <group android:name="time_group" />
+ </vector>
+ </aapt:attr>
+
+ <target android:name="_R_G_L_2_G_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="25"
+ android:valueTo="23.5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="133"
+ android:valueFrom="23.5"
+ android:valueTo="26"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="translateY"
+ android:startOffset="267"
+ android:valueFrom="26"
+ android:valueTo="25"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="scaleX"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="0.85"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.346,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="scaleY"
+ android:startOffset="0"
+ android:valueFrom="1"
+ android:valueTo="0.85"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.346,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="283"
+ android:propertyName="scaleX"
+ android:startOffset="100"
+ android:valueFrom="0.85"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.423,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="283"
+ android:propertyName="scaleY"
+ android:startOffset="100"
+ android:valueFrom="0.85"
+ android:valueTo="1"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.423,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_1_G_N_4_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="25"
+ android:valueTo="23.5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="133"
+ android:valueFrom="23.5"
+ android:valueTo="26"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="translateY"
+ android:startOffset="267"
+ android:valueFrom="26"
+ android:valueTo="25"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_D_0_P_0" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="67"
+ android:propertyName="pathData"
+ android:startOffset="0"
+ android:valueFrom="M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.63,6.75 11.69,5 9.33,5.04 C6.98,5 5.04,6.75 5,8.94 C5,8.94 5,13.8 5,13.8 "
+ android:valueTo="M13.67 13.8 C13.67,13.8 13.69,5.06 13.69,5.06 C13.65,2.87 11.71,1.13 9.35,1.16 C7,1.13 5.06,2.87 5.02,5.06 C5.02,5.06 5,7.93 5,7.93 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.658,0 0.317,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="333"
+ android:propertyName="pathData"
+ android:startOffset="67"
+ android:valueFrom="M13.67 13.8 C13.67,13.8 13.69,5.06 13.69,5.06 C13.65,2.87 11.71,1.13 9.35,1.16 C7,1.13 5.06,2.87 5.02,5.06 C5.02,5.06 5,7.93 5,7.93 "
+ android:valueTo="M13.67 13.8 C13.67,13.8 13.67,8.94 13.67,8.94 C13.68,6.62 15.69,5.03 18.01,5.04 C20.46,5.04 22.32,6.89 22.34,8.85 C22.34,8.85 22.33,8.89 22.33,8.89 "
+ android:valueType="pathType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.679,0 0.175,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="_R_G_L_0_G_N_4_T_1" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="0"
+ android:valueFrom="25"
+ android:valueTo="23.5"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="133"
+ android:propertyName="translateY"
+ android:startOffset="133"
+ android:valueFrom="23.5"
+ android:valueTo="26"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ <objectAnimator
+ android:duration="100"
+ android:propertyName="translateY"
+ android:startOffset="267"
+ android:valueFrom="26"
+ android:valueTo="25"
+ android:valueType="floatType" >
+ <aapt:attr name="android:interpolator" >
+ <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" />
+ </aapt:attr>
+ </objectAnimator>
+ </set>
+ </aapt:attr>
+ </target>
+ <target android:name="time_group" >
+ <aapt:attr name="android:animation" >
+ <set android:ordering="together" >
+ <objectAnimator
+ android:duration="717"
+ android:propertyName="translateX"
+ android:startOffset="0"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:valueType="floatType" />
+ </set>
+ </aapt:attr>
+ </target>
+
+</animated-vector> \ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_info_outline.xml b/packages/SystemUI/res/drawable/ic_info_outline.xml
index a4a3e9aab239..44e09f6faa51 100644
--- a/packages/SystemUI/res/drawable/ic_info_outline.xml
+++ b/packages/SystemUI/res/drawable/ic_info_outline.xml
@@ -15,8 +15,8 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="32dp"
- android:height="32dp"
+ android:width="24dp"
+ android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
diff --git a/packages/SystemUI/res/drawable/ic_invert_colors.xml b/packages/SystemUI/res/drawable/ic_invert_colors.xml
index 77d491810ccc..37ea0800a51e 100644
--- a/packages/SystemUI/res/drawable/ic_invert_colors.xml
+++ b/packages/SystemUI/res/drawable/ic_invert_colors.xml
@@ -15,8 +15,8 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="48dp"
- android:height="48dp"
+ android:width="24dp"
+ android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
diff --git a/packages/SystemUI/res/drawable/ic_qs_bluetooth_connecting.xml b/packages/SystemUI/res/drawable/ic_qs_bluetooth_connecting.xml
index fbd92dead675..d2ee2839d701 100644
--- a/packages/SystemUI/res/drawable/ic_qs_bluetooth_connecting.xml
+++ b/packages/SystemUI/res/drawable/ic_qs_bluetooth_connecting.xml
@@ -14,8 +14,8 @@ Copyright (C) 2017 The Android Open Source Project
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="64dp"
- android:height="64dp"
+ android:width="24dp"
+ android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0"
android:tint="?android:attr/colorControlNormal" >
diff --git a/packages/SystemUI/res/drawable/ic_qs_no_sim.xml b/packages/SystemUI/res/drawable/ic_qs_no_sim.xml
index 22e12cc10405..6cabcaf4bcb4 100644
--- a/packages/SystemUI/res/drawable/ic_qs_no_sim.xml
+++ b/packages/SystemUI/res/drawable/ic_qs_no_sim.xml
@@ -14,8 +14,8 @@ Copyright (C) 2017 The Android Open Source Project
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="32dp"
- android:height="32dp"
+ android:width="24dp"
+ android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
diff --git a/packages/SystemUI/res/drawable/ic_screenshot_delete.xml b/packages/SystemUI/res/drawable/ic_screenshot_delete.xml
index d60ee414888d..4cf578a92826 100644
--- a/packages/SystemUI/res/drawable/ic_screenshot_delete.xml
+++ b/packages/SystemUI/res/drawable/ic_screenshot_delete.xml
@@ -14,8 +14,8 @@ Copyright (C) 2015 The Android Open Source Project
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="32dp"
- android:height="32dp"
+ android:width="24dp"
+ android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 19e7b734912a..6039568cab3a 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -40,9 +40,6 @@
<!-- Whether or not we show the number in the bar. -->
<bool name="config_statusBarShowNumber">false</bool>
- <!-- If the lock screen should be dismissed after biometric auth. -->
- <bool name="config_faceAuthDismissesKeyguard">false</bool>
-
<!-- Vibrator pattern for camera gesture launch. -->
<integer-array translatable="false" name="config_cameraLaunchGestureVibePattern">
<item>0</item>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListener.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListener.java
index 21b3a0082319..bd2b19c0ddfe 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListener.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListener.java
@@ -64,6 +64,14 @@ public abstract class TaskStackChangeListener {
onActivityLaunchOnSecondaryDisplayRerouted();
}
+ /**
+ * Called when contents are drawn for the first time on a display which can only contain one
+ * task.
+ *
+ * @param displayId the id of the display on which contents are drawn.
+ */
+ public void onSingleTaskDisplayDrawn(int displayId) { }
+
public void onTaskProfileLocked(int taskId, int userId) { }
public void onTaskCreated(int taskId, ComponentName componentName) { }
public void onTaskRemoved(int taskId) { }
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java
index 06ae399a5e4e..c89f2ab7f172 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListeners.java
@@ -196,11 +196,18 @@ public class TaskStackChangeListeners extends TaskStackListener {
}
@Override
- public void onSizeCompatModeActivityChanged(int displayId, IBinder activityToken) {
+ public void onSizeCompatModeActivityChanged(int displayId, IBinder activityToken)
+ throws RemoteException {
mHandler.obtainMessage(H.ON_SIZE_COMPAT_MODE_ACTIVITY_CHANGED, displayId, 0 /* unused */,
activityToken).sendToTarget();
}
+ @Override
+ public void onSingleTaskDisplayDrawn(int displayId) throws RemoteException {
+ mHandler.obtainMessage(H.ON_SINGLE_TASK_DISPLAY_DRAWN, displayId,
+ 0 /* unused */).sendToTarget();
+ }
+
private final class H extends Handler {
private static final int ON_TASK_STACK_CHANGED = 1;
private static final int ON_TASK_SNAPSHOT_CHANGED = 2;
@@ -220,6 +227,7 @@ public class TaskStackChangeListeners extends TaskStackListener {
private static final int ON_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_REROUTED = 16;
private static final int ON_SIZE_COMPAT_MODE_ACTIVITY_CHANGED = 17;
private static final int ON_BACK_PRESSED_ON_TASK_ROOT = 18;
+ private static final int ON_SINGLE_TASK_DISPLAY_DRAWN = 19;
public H(Looper looper) {
@@ -356,6 +364,12 @@ public class TaskStackChangeListeners extends TaskStackListener {
}
break;
}
+ case ON_SINGLE_TASK_DISPLAY_DRAWN: {
+ for (int i = mTaskStackListeners.size() - 1; i >= 0; i--) {
+ mTaskStackListeners.get(i).onSingleTaskDisplayDrawn(msg.arg1);
+ }
+ break;
+ }
}
}
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
index 2ff7266baecf..a4b6958498c8 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardAbsKeyInputView.java
@@ -310,7 +310,9 @@ public abstract class KeyguardAbsKeyInputView extends LinearLayout
@Override
public void showMessage(CharSequence message, ColorStateList colorState) {
- mSecurityMessageDisplay.setNextMessageColor(colorState);
+ if (colorState != null) {
+ mSecurityMessageDisplay.setNextMessageColor(colorState);
+ }
mSecurityMessageDisplay.setMessage(message);
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java
index d8086da277f2..362ead362e01 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternView.java
@@ -442,7 +442,9 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
@Override
public void showMessage(CharSequence message, ColorStateList colorState) {
- mSecurityMessageDisplay.setNextMessageColor(colorState);
+ if (colorState != null) {
+ mSecurityMessageDisplay.setNextMessageColor(colorState);
+ }
mSecurityMessageDisplay.setMessage(message);
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
index 6cd971d25610..eef61dbb0949 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
@@ -231,8 +231,10 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
}
if (action == MotionEvent.ACTION_UP) {
if (-getTranslationY() > TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
- MIN_DRAG_SIZE, getResources().getDisplayMetrics())) {
+ MIN_DRAG_SIZE, getResources().getDisplayMetrics())
+ && !mUpdateMonitor.isFaceDetectionRunning()) {
mUpdateMonitor.requestFaceAuth();
+ showMessage(null, null);
}
}
return true;
@@ -267,7 +269,8 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe
mSwipeUpToRetry = mUpdateMonitor.isUnlockWithFacePossible(userId)
&& securityMode != SecurityMode.SimPin
&& securityMode != SecurityMode.SimPuk
- && securityMode != SecurityMode.None;
+ && securityMode != SecurityMode.None
+ && securityMode != SecurityMode.Pattern;
}
public CharSequence getTitle() {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 6a4dbc8d7228..873874f30875 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -168,6 +168,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
*/
private static final int BIOMETRIC_STATE_CANCELLING_RESTARTING = 3;
+ private static final int BIOMETRIC_HELP_FINGERPRINT_NOT_RECOGNIZED = -1;
+ public static final int BIOMETRIC_HELP_FACE_NOT_RECOGNIZED = -2;
+
private static final int DEFAULT_CHARGING_VOLTAGE_MICRO_VOLT = 5000000;
private static final ComponentName FALLBACK_HOME_COMPONENT = new ComponentName(
@@ -570,7 +573,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
cb.onBiometricAuthFailed(BiometricSourceType.FINGERPRINT);
}
}
- handleFingerprintHelp(-1, mContext.getString(R.string.kg_fingerprint_not_recognized));
+ handleFingerprintHelp(BIOMETRIC_HELP_FINGERPRINT_NOT_RECOGNIZED,
+ mContext.getString(R.string.kg_fingerprint_not_recognized));
}
private void handleFingerprintAcquired(int acquireInfo) {
@@ -722,7 +726,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
cb.onBiometricAuthFailed(BiometricSourceType.FACE);
}
}
- handleFaceHelp(-1, mContext.getString(R.string.kg_face_not_recognized));
+ handleFaceHelp(BIOMETRIC_HELP_FACE_NOT_RECOGNIZED,
+ mContext.getString(R.string.kg_face_not_recognized));
}
private void handleFaceAcquired(int acquireInfo) {
@@ -803,6 +808,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
getCurrentUser());
}
+ // The face timeout message is not very actionable, let's ask the user to
+ // manually retry.
+ if (msgId == FaceManager.FACE_ERROR_TIMEOUT) {
+ errString = mContext.getString(R.string.keyguard_unlock);
+ }
for (int i = 0; i < mCallbacks.size(); i++) {
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
if (cb != null) {
diff --git a/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java b/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java
index 61a6952cacac..bd1e64a5f1c6 100644
--- a/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java
+++ b/packages/SystemUI/src/com/android/keyguard/clock/BubbleClockController.java
@@ -170,9 +170,10 @@ public class BubbleClockController implements ClockPlugin {
return;
}
final int length = colorPalette.length;
- final int color = colorPalette[Math.max(0, length - 3)];
- mLockClock.setTextColor(color);
- mAnalogClock.setClockColors(color, color);
+ final int primaryColor = colorPalette[Math.max(0, length - 2)];
+ final int secondaryColor = colorPalette[Math.max(0, length - 5)];
+ mLockClock.setTextColor(primaryColor);
+ mAnalogClock.setClockColors(secondaryColor, primaryColor);
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
index f60e95e32600..5c6c39722900 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
@@ -16,6 +16,8 @@
package com.android.systemui.bubbles;
+import static android.view.Display.INVALID_DISPLAY;
+
import static com.android.internal.annotations.VisibleForTesting.Visibility.PRIVATE;
import android.content.Context;
@@ -129,6 +131,20 @@ class Bubble {
mInflated = true;
}
+ /**
+ * Set visibility of bubble in the expanded state.
+ *
+ * @param visibility {@code true} if the expanded bubble should be visible on the screen.
+ *
+ * Note that this contents visibility doesn't affect visibility at {@link android.view.View},
+ * and setting {@code false} actually means rendering the expanded view in transparent.
+ */
+ void setContentVisibility(boolean visibility) {
+ if (expandedView != null) {
+ expandedView.setContentVisibility(visibility);
+ }
+ }
+
void setDismissed() {
entry.setBubbleDismissed(true);
// TODO: move this somewhere where it can be guaranteed not to run until safe from flicker
@@ -168,6 +184,13 @@ class Bubble {
}
/**
+ * @return the display id of the virtual display on which bubble contents is drawn.
+ */
+ int getDisplayId() {
+ return expandedView != null ? expandedView.getVirtualDisplayId() : INVALID_DISPLAY;
+ }
+
+ /**
* Should be invoked whenever a Bubble is accessed (selected while expanded).
*/
void markAsAccessedAt(long lastAccessedMillis) {
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index 392183b554a9..a23c99ef01fe 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -672,17 +672,23 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
* status bar, otherwise returns {@link Display#INVALID_DISPLAY}.
*/
public int getExpandedDisplayId(Context context) {
+ final Bubble bubble = getExpandedBubble(context);
+ return bubble != null ? bubble.getDisplayId() : INVALID_DISPLAY;
+ }
+
+ @Nullable
+ private Bubble getExpandedBubble(Context context) {
if (mStackView == null) {
- return INVALID_DISPLAY;
+ return null;
}
- boolean defaultDisplay = context.getDisplay() != null
+ final boolean defaultDisplay = context.getDisplay() != null
&& context.getDisplay().getDisplayId() == DEFAULT_DISPLAY;
- Bubble b = mStackView.getExpandedBubble();
- if (defaultDisplay && b != null && isStackExpanded()
+ final Bubble expandedBubble = mStackView.getExpandedBubble();
+ if (defaultDisplay && expandedBubble != null && isStackExpanded()
&& !mStatusBarWindowController.getPanelExpanded()) {
- return b.expandedView.getVirtualDisplayId();
+ return expandedBubble;
}
- return INVALID_DISPLAY;
+ return null;
}
@VisibleForTesting
@@ -793,6 +799,14 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
mBubbleData.setExpanded(false);
}
}
+
+ @Override
+ public void onSingleTaskDisplayDrawn(int displayId) {
+ final Bubble expandedBubble = getExpandedBubble(mContext);
+ if (expandedBubble != null && expandedBubble.getDisplayId() == displayId) {
+ expandedBubble.setContentVisibility(true);
+ }
+ }
}
private static boolean shouldAutoBubbleMessages(Context context) {
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java
index cbe6c99bfb0b..09d4b0585541 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java
@@ -182,6 +182,8 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
mActivityView = new ActivityView(mContext, null /* attrs */, 0 /* defStyle */,
true /* singleTaskInstance */);
+
+ setContentVisibility(false);
addView(mActivityView);
// Expanded stack layout, top to bottom:
@@ -236,6 +238,22 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
}
/**
+ * Set visibility of contents in the expanded state.
+ *
+ * @param visibility {@code true} if the contents should be visible on the screen.
+ *
+ * Note that this contents visibility doesn't affect visibility at {@link android.view.View},
+ * and setting {@code false} actually means rendering the contents in transparent.
+ */
+ void setContentVisibility(boolean visibility) {
+ final float alpha = visibility ? 1f : 0f;
+ mPointerView.setAlpha(alpha);
+ if (mActivityView != null) {
+ mActivityView.setAlpha(alpha);
+ }
+ }
+
+ /**
* Called by {@link BubbleStackView} when the insets for the expanded state should be updated.
* This should be done post-move and post-animation.
*/
@@ -307,6 +325,7 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
parent.removeView(mNotifRow);
}
addView(mNotifRow, 1 /* index */);
+ mPointerView.setAlpha(1f);
}
}
@@ -333,6 +352,7 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
removeView(mNotifRow);
mNotifRow = null;
}
+ setContentVisibility(false);
mActivityView.setVisibility(VISIBLE);
} else if (DEBUG_ENABLE_AUTO_BUBBLE) {
// Hide activity view if we had it previously
@@ -428,6 +448,7 @@ public class BubbleExpandedView extends LinearLayout implements View.OnClickList
mActivityView.onLocationChanged();
} else if (mNotifRow != null) {
applyRowState(mNotifRow);
+ mPointerView.setAlpha(1f);
}
updateHeight();
}
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
index 771df2d86110..f87bcef5fde2 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
@@ -745,12 +745,16 @@ public class BubbleStackView extends FrameLayout {
}
final Bubble previouslySelected = mExpandedBubble;
mExpandedBubble = bubbleToSelect;
+
if (mIsExpanded) {
// Make the container of the expanded view transparent before removing the expanded view
// from it. Otherwise a punch hole created by {@link android.view.SurfaceView} in the
// expanded view becomes visible on the screen. See b/126856255
mExpandedViewContainer.setAlpha(0.0f);
mSurfaceSynchronizer.syncSurfaceAndRun(() -> {
+ if (previouslySelected != null) {
+ previouslySelected.setContentVisibility(false);
+ }
updateExpandedBubble();
updatePointerPosition();
requestUpdate();
@@ -779,6 +783,14 @@ public class BubbleStackView extends FrameLayout {
}
if (wasExpanded) {
// Collapse the stack
+ mExpandedViewContainer.setAlpha(0.0f);
+ // TODO: In order to prevent flicker, code below should be executed after the alpha
+ // value set on the mExpandedViewContainer is reflected on the screen. However, we
+ // cannot just postpone the execution like #setSelectedBubble(), since some of member
+ // variables referred by the code are overridden before the execution.
+ if (mExpandedBubble != null) {
+ mExpandedBubble.setContentVisibility(false);
+ }
animateExpansion(false /* expand */);
logBubbleEvent(mExpandedBubble, StatsLog.BUBBLE_UICHANGED__ACTION__COLLAPSED);
} else {
@@ -934,14 +946,10 @@ public class BubbleStackView extends FrameLayout {
if (shouldExpand) {
mExpandedViewContainer.setTranslationX(xStart);
mExpandedViewContainer.setTranslationY(yStart);
- mExpandedViewContainer.setAlpha(0f);
}
mExpandedViewXAnim.animateToFinalPosition(shouldExpand ? 0f : xStart);
mExpandedViewYAnim.animateToFinalPosition(shouldExpand ? yDest : yStart);
- mExpandedViewContainer.animate()
- .setDuration(100)
- .alpha(shouldExpand ? 1f : 0f);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index fd76a79eab2e..25bde3bbe2fa 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -78,6 +78,7 @@ public class KeyguardIndicationController implements StateListener,
private static final int MSG_HIDE_TRANSIENT = 1;
private static final int MSG_CLEAR_BIOMETRIC_MSG = 2;
+ private static final int MSG_SWIPE_UP_TO_UNLOCK = 3;
private static final long TRANSIENT_BIOMETRIC_ERROR_TIMEOUT = 1300;
private final Context mContext;
@@ -318,6 +319,7 @@ public class KeyguardIndicationController implements StateListener,
mTransientIndication = transientIndication;
mTransientTextColorState = textColorState;
mHandler.removeMessages(MSG_HIDE_TRANSIENT);
+ mHandler.removeMessages(MSG_SWIPE_UP_TO_UNLOCK);
if (mDozing && !TextUtils.isEmpty(mTransientIndication)) {
// Make sure this doesn't get stuck and burns in. Acquire wakelock until its cleared.
mWakeLock.setAcquired(true);
@@ -536,10 +538,26 @@ public class KeyguardIndicationController implements StateListener,
hideTransientIndication();
} else if (msg.what == MSG_CLEAR_BIOMETRIC_MSG) {
mLockIcon.setTransientBiometricsError(false);
+ } else if (msg.what == MSG_SWIPE_UP_TO_UNLOCK) {
+ showSwipeUpToUnlock();
}
}
};
+ private void showSwipeUpToUnlock() {
+ if (mDozing) {
+ return;
+ }
+
+ String message = mContext.getString(R.string.keyguard_unlock);
+ if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
+ mStatusBarKeyguardViewManager.showBouncerMessage(message, mInitialTextColorState);
+ } else if (mKeyguardUpdateMonitor.isScreenOn()) {
+ showTransientIndication(message);
+ hideTransientIndicationDelayed(BaseKeyguardCallback.HIDE_DELAY_MS);
+ }
+ }
+
public void setDozing(boolean dozing) {
if (mDozing == dozing) {
return;
@@ -620,12 +638,20 @@ public class KeyguardIndicationController implements StateListener,
return;
}
animatePadlockError();
+ boolean showSwipeToUnlock =
+ msgId == KeyguardUpdateMonitor.BIOMETRIC_HELP_FACE_NOT_RECOGNIZED;
if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
mStatusBarKeyguardViewManager.showBouncerMessage(helpString,
mInitialTextColorState);
} else if (updateMonitor.isScreenOn()) {
showTransientIndication(helpString);
- hideTransientIndicationDelayed(TRANSIENT_BIOMETRIC_ERROR_TIMEOUT);
+ if (!showSwipeToUnlock) {
+ hideTransientIndicationDelayed(TRANSIENT_BIOMETRIC_ERROR_TIMEOUT);
+ }
+ }
+ if (showSwipeToUnlock) {
+ mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SWIPE_UP_TO_UNLOCK),
+ TRANSIENT_BIOMETRIC_ERROR_TIMEOUT);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/MediaArtworkProcessor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/MediaArtworkProcessor.kt
index 4b2d13121f6b..aaf48490d7b0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/MediaArtworkProcessor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/MediaArtworkProcessor.kt
@@ -25,6 +25,7 @@ import android.renderscript.Allocation
import android.renderscript.Element
import android.renderscript.RenderScript
import android.renderscript.ScriptIntrinsicBlur
+import android.util.Log
import android.util.MathUtils
import com.android.internal.graphics.ColorUtils
import com.android.systemui.statusbar.notification.MediaNotificationProcessor
@@ -32,6 +33,7 @@ import com.android.systemui.statusbar.notification.MediaNotificationProcessor
import javax.inject.Inject
import javax.inject.Singleton
+private const val TAG = "MediaArtworkProcessor"
private const val COLOR_ALPHA = (255 * 0.7f).toInt()
private const val BLUR_RADIUS = 25f
private const val DOWNSAMPLE = 6
@@ -42,45 +44,54 @@ class MediaArtworkProcessor @Inject constructor() {
private val mTmpSize = Point()
private var mArtworkCache: Bitmap? = null
- fun processArtwork(context: Context, artwork: Bitmap): Bitmap {
+ fun processArtwork(context: Context, artwork: Bitmap): Bitmap? {
if (mArtworkCache != null) {
- return mArtworkCache!!
+ return mArtworkCache
}
-
- context.display.getSize(mTmpSize)
val renderScript = RenderScript.create(context)
- val rect = Rect(0, 0, artwork.width, artwork.height)
- MathUtils.fitRect(rect, Math.max(mTmpSize.x / DOWNSAMPLE, mTmpSize.y / DOWNSAMPLE))
- var inBitmap = Bitmap.createScaledBitmap(artwork, rect.width(), rect.height(),
- true /* filter */)
- // Render script blurs only support ARGB_8888, we need a conversion if we got a
- // different bitmap config.
- if (inBitmap.config != Bitmap.Config.ARGB_8888) {
- val oldIn = inBitmap
- inBitmap = oldIn.copy(Bitmap.Config.ARGB_8888, false /* isMutable */)
- oldIn.recycle()
- }
- val input = Allocation.createFromBitmap(renderScript, inBitmap,
- Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_GRAPHICS_TEXTURE)
- val outBitmap = Bitmap.createBitmap(inBitmap.width, inBitmap.height,
- Bitmap.Config.ARGB_8888)
- val output = Allocation.createFromBitmap(renderScript, outBitmap)
val blur = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript))
- blur.setRadius(BLUR_RADIUS)
- blur.setInput(input)
- blur.forEach(output)
- output.copyTo(outBitmap)
+ var input: Allocation? = null
+ var output: Allocation? = null
+ var inBitmap: Bitmap? = null
+ try {
+ context.display.getSize(mTmpSize)
+ val rect = Rect(0, 0, artwork.width, artwork.height)
+ MathUtils.fitRect(rect, Math.max(mTmpSize.x / DOWNSAMPLE, mTmpSize.y / DOWNSAMPLE))
+ inBitmap = Bitmap.createScaledBitmap(artwork, rect.width(), rect.height(),
+ true /* filter */)
+ // Render script blurs only support ARGB_8888, we need a conversion if we got a
+ // different bitmap config.
+ if (inBitmap.config != Bitmap.Config.ARGB_8888) {
+ val oldIn = inBitmap
+ inBitmap = oldIn.copy(Bitmap.Config.ARGB_8888, false /* isMutable */)
+ oldIn.recycle()
+ }
+ val outBitmap = Bitmap.createBitmap(inBitmap.width, inBitmap.height,
+ Bitmap.Config.ARGB_8888)
- val swatch = MediaNotificationProcessor.findBackgroundSwatch(artwork)
+ input = Allocation.createFromBitmap(renderScript, inBitmap,
+ Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_GRAPHICS_TEXTURE)
+ output = Allocation.createFromBitmap(renderScript, outBitmap)
- input.destroy()
- output.destroy()
- inBitmap.recycle()
- blur.destroy()
+ blur.setRadius(BLUR_RADIUS)
+ blur.setInput(input)
+ blur.forEach(output)
+ output.copyTo(outBitmap)
- val canvas = Canvas(outBitmap)
- canvas.drawColor(ColorUtils.setAlphaComponent(swatch.rgb, COLOR_ALPHA))
- return outBitmap
+ val swatch = MediaNotificationProcessor.findBackgroundSwatch(artwork)
+
+ val canvas = Canvas(outBitmap)
+ canvas.drawColor(ColorUtils.setAlphaComponent(swatch.rgb, COLOR_ALPHA))
+ return outBitmap
+ } catch (ex: IllegalArgumentException) {
+ Log.e(TAG, "error while processing artwork", ex)
+ return null
+ } finally {
+ input?.destroy()
+ output?.destroy()
+ blur.destroy()
+ inBitmap?.recycle()
+ }
}
fun clearCache() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
index d202190724f5..799876db57df 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
@@ -453,7 +453,7 @@ public class NotificationShelf extends ActivatableNotificationView implements
private void updateContinuousClipping(final ExpandableNotificationRow row) {
StatusBarIconView icon = row.getEntry().expandedIcon;
- boolean needsContinuousClipping = ViewState.isAnimatingY(icon) && !mAmbientState.isDark();
+ boolean needsContinuousClipping = ViewState.isAnimatingY(icon) && !mAmbientState.isDozing();
boolean isContinuousClipping = icon.getTag(TAG_CONTINUOUS_CLIPPING) != null;
if (needsContinuousClipping && !isContinuousClipping) {
final ViewTreeObserver observer = icon.getViewTreeObserver();
@@ -829,7 +829,7 @@ public class NotificationShelf extends ActivatableNotificationView implements
private void setOpenedAmount(float openedAmount) {
mNoAnimationsInThisFrame = openedAmount == 1.0f && mOpenedAmount == 0.0f;
mOpenedAmount = openedAmount;
- if (!mAmbientState.isPanelFullWidth() || mAmbientState.isDark()) {
+ if (!mAmbientState.isPanelFullWidth() || mAmbientState.isDozing()) {
// We don't do a transformation at all, lets just assume we are fully opened
openedAmount = 1.0f;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt
index 7c193b19654b..3613f9f3ea5f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt
@@ -22,11 +22,12 @@ import android.util.FloatProperty
import com.android.systemui.Interpolators
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.statusbar.AmbientPulseManager
-import com.android.systemui.statusbar.SysuiStatusBarStateController
+import com.android.systemui.statusbar.StatusBarState
import com.android.systemui.statusbar.notification.collection.NotificationEntry
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout
import com.android.systemui.statusbar.notification.stack.StackStateAnimator
import com.android.systemui.statusbar.phone.DozeParameters
+import com.android.systemui.statusbar.phone.KeyguardBypassController
import javax.inject.Inject
import javax.inject.Singleton
@@ -35,7 +36,8 @@ import javax.inject.Singleton
class NotificationWakeUpCoordinator @Inject constructor(
private val mContext: Context,
private val mAmbientPulseManager: AmbientPulseManager,
- private val mStatusBarStateController: StatusBarStateController)
+ private val mStatusBarStateController: StatusBarStateController,
+ private val mBypassController: KeyguardBypassController)
: AmbientPulseManager.OnAmbientChangedListener, StatusBarStateController.StateListener {
private val mNotificationVisibility
@@ -137,22 +139,47 @@ class NotificationWakeUpCoordinator @Inject constructor(
}
override fun onDozeAmountChanged(linear: Float, eased: Float) {
+ if (updateDozeAmountIfBypass()) {
+ return
+ }
if (linear != 1.0f && linear != 0.0f
&& (mLinearDozeAmount == 0.0f || mLinearDozeAmount == 1.0f)) {
// Let's notify the scroller that an animation started
notifyAnimationStart(mLinearDozeAmount == 1.0f)
}
+ setDozeAmount(linear, eased)
+ }
+
+ fun setDozeAmount(linear: Float, eased: Float) {
+ val changed = linear != mLinearDozeAmount
mLinearDozeAmount = linear
mDozeAmount = eased
mStackScroller.setDozeAmount(mDozeAmount)
updateDarkAmount()
- if (linear == 0.0f) {
+ if (changed && linear == 0.0f) {
setNotificationsVisible(visible = false, animate = false, increaseSpeed = false);
setNotificationsVisibleForExpansion(visible = false, animate = false,
increaseSpeed = false)
}
}
+ override fun onStateChanged(newState: Int) {
+ updateDozeAmountIfBypass();
+ }
+
+ private fun updateDozeAmountIfBypass(): Boolean {
+ if (mBypassController.bypassEnabled) {
+ var amount = 1.0f;
+ if (mStatusBarStateController.state == StatusBarState.SHADE
+ || mStatusBarStateController.state == StatusBarState.SHADE_LOCKED) {
+ amount = 0.0f;
+ }
+ setDozeAmount(amount, amount)
+ return true
+ }
+ return false
+ }
+
private fun startVisibilityAnimation(increaseSpeed: Boolean) {
if (mNotificationVisibleAmount == 0f || mNotificationVisibleAmount == 1f) {
mVisibilityInterpolator = if (mNotificationsVisible)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
index 78dc9a0a731c..d9162c0d6071 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
@@ -52,7 +52,7 @@ public class AmbientState {
private float mOverScrollTopAmount;
private float mOverScrollBottomAmount;
private int mSpeedBumpIndex = -1;
- private boolean mDark;
+ private boolean mDozing;
private boolean mHideSensitive;
private AmbientPulseManager mAmbientPulseManager = Dependency.get(AmbientPulseManager.class);
private float mStackTranslation;
@@ -181,8 +181,8 @@ public class AmbientState {
}
/** In dark mode, we draw as little as possible, assuming a black background */
- public void setDark(boolean dark) {
- mDark = dark;
+ public void setDozing(boolean dozing) {
+ mDozing = dozing;
}
/** Dark ratio of the status bar **/
@@ -217,8 +217,8 @@ public class AmbientState {
return mDimmed && !(isPulseExpanding() && mDozeAmount == 1.0f);
}
- public boolean isDark() {
- return mDark;
+ public boolean isDozing() {
+ return mDozing;
}
public boolean isHideSensitive() {
@@ -461,7 +461,7 @@ public class AmbientState {
* @return whether a row is dozing and not pulsing right now
*/
public boolean isDozingAndNotPulsing(ExpandableNotificationRow row) {
- return isDark() && !isPulsing(row.getEntry());
+ return isDozing() && !isPulsing(row.getEntry());
}
public void setExpandAnimationTopChange(int expandAnimationTopChange) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index a517e760c8b4..8c9c4bbd0f68 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -770,7 +770,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
if (mShouldDrawNotificationBackground
&& (mSections[0].getCurrentBounds().top
< mSections[NUM_SECTIONS - 1].getCurrentBounds().bottom
- || mAmbientState.isDark())) {
+ || mAmbientState.isDozing())) {
drawBackground(canvas);
} else if (mInHeadsUpPinnedMode || mHeadsUpAnimatingAway) {
drawHeadsUpBackground(canvas);
@@ -804,7 +804,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
canvas.drawLine(0, y, getWidth(), y, mDebugPaint);
}
canvas.drawText(Integer.toString(getMaxNegativeScrollAmount()), getWidth() - 100,
- getIntrinsicPadding() + 30, mDebugPaint);
+ getTopPadding() + 30, mDebugPaint);
canvas.drawText(Integer.toString(getMaxPositiveScrollAmount()), getWidth() - 100,
getHeight() - 30, mDebugPaint);
}
@@ -842,7 +842,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
break;
}
}
- if (!mAmbientState.isDark() || anySectionHasVisibleChild) {
+ if (!mAmbientState.isDozing() || anySectionHasVisibleChild) {
drawBackgroundRects(canvas, left, right, top, backgroundTopAnimationOffset);
}
@@ -1438,7 +1438,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
int notGoneChildCount = getNotGoneChildCount();
if (mEmptyShadeView.getVisibility() == GONE && notGoneChildCount != 0) {
if (isHeadsUpTransition()
- || (mHeadsUpManager.hasPinnedHeadsUp() && !mAmbientState.isDark())) {
+ || (mHeadsUpManager.hasPinnedHeadsUp() && !mAmbientState.isDozing())) {
appearPosition = getTopHeadsUpPinnedHeight();
} else {
appearPosition = 0;
@@ -2403,7 +2403,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
}
mIntrinsicContentHeight = height;
- mContentHeight = height + mTopPadding + mBottomMargin;
+ // The topPadding can be bigger than the regular padding when qs is expanded, in that
+ // state the maxPanelHeight and the contentHeight should be bigger
+ mContentHeight = height + Math.max(mIntrinsicPadding, mTopPadding) + mBottomMargin;
updateScrollability();
clampScrollPosition();
mAmbientState.setLayoutMaxHeight(mContentHeight);
@@ -2783,12 +2785,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
*
* @param qsHeight the top padding imposed by the quick settings panel
* @param animate whether to animate the change
- * @param ignoreIntrinsicPadding if true, {@link #getIntrinsicPadding()} is ignored and
- * {@code qsHeight} is the final top padding
*/
@ShadeViewRefactor(RefactorComponent.COORDINATOR)
- public void updateTopPadding(float qsHeight, boolean animate,
- boolean ignoreIntrinsicPadding) {
+ public void updateTopPadding(float qsHeight, boolean animate) {
int topPadding = (int) qsHeight;
int minStackHeight = getLayoutMinHeight();
if (topPadding + minStackHeight > getHeight()) {
@@ -2796,8 +2795,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
} else {
mTopPaddingOverflow = 0;
}
- setTopPadding(ignoreIntrinsicPadding ? topPadding : clampPadding(topPadding),
- animate);
+ setTopPadding(topPadding, animate);
setExpandedHeight(mExpandedHeight);
}
@@ -3532,7 +3530,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
private void generateTopPaddingEvent() {
if (mTopPaddingNeedsAnimation) {
AnimationEvent event;
- if (mAmbientState.isDark()) {
+ if (mAmbientState.isDozing()) {
event = new AnimationEvent(null /* view */,
AnimationEvent.ANIMATION_TYPE_TOP_PADDING_CHANGED,
KeyguardSliceView.DEFAULT_ANIM_DURATION);
@@ -4712,21 +4710,19 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
}
/**
- * See {@link AmbientState#setDark}.
+ * See {@link AmbientState#setDozing}.
*/
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
- public void setDark(boolean dark, boolean animate, @Nullable PointF touchWakeUpScreenLocation) {
- if (mAmbientState.isDark() == dark) {
+ public void setDozing(boolean dozing, boolean animate,
+ @Nullable PointF touchWakeUpScreenLocation) {
+ if (mAmbientState.isDozing() == dozing) {
return;
}
- mAmbientState.setDark(dark);
+ mAmbientState.setDozing(dozing);
if (animate && mAnimationsEnabled) {
mDarkNeedsAnimation = true;
mDarkAnimationOriginIndex = findDarkAnimationOriginIndex(touchWakeUpScreenLocation);
mNeedsAnimation = true;
- } else {
- setDarkAmount(dark ? 1f : 0f);
- updateBackground();
}
requestChildrenUpdate();
updateWillNotDraw();
@@ -6349,7 +6345,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
(int) (dragLengthY / mDisplayMetrics.density),
0 /* velocityDp - N/A */);
- if (!mAmbientState.isDark() || startingChild != null) {
+ if (!mAmbientState.isDozing() || startingChild != null) {
// We have notifications, go to locked shade.
mShadeController.goToLockedShade(startingChild);
if (startingChild instanceof ExpandableNotificationRow) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
index 60061c6a9ad2..2980ee4ac45e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
@@ -255,7 +255,7 @@ public class StackScrollAlgorithm {
state.paddingMap.clear();
int notGoneIndex = 0;
ExpandableView lastView = null;
- int firstHiddenIndex = ambientState.isDark()
+ int firstHiddenIndex = ambientState.isDozing()
? (ambientState.hasPulsingNotifications() ? 1 : 0)
: childCount;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
index 4d4818d51414..d67795210f0c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java
@@ -23,7 +23,6 @@ import android.os.Handler;
import android.os.PowerManager;
import android.os.SystemClock;
import android.os.Trace;
-import android.provider.Settings;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
@@ -34,12 +33,10 @@ import com.android.keyguard.KeyguardConstants;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.Dependency;
-import com.android.systemui.R;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.statusbar.NotificationMediaManager;
-import com.android.systemui.tuner.TunerService;
import java.io.PrintWriter;
@@ -102,20 +99,10 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
*/
private static final float BIOMETRIC_COLLAPSE_SPEEDUP_FACTOR = 1.1f;
- /**
- * If face unlock dismisses the lock screen or keeps user on keyguard by default on this device.
- */
- private final boolean mFaceDismissesKeyguardByDefault;
-
- /**
- * If face unlock dismisses the lock screen or keeps user on keyguard for the current user.
- */
- @VisibleForTesting
- protected boolean mFaceDismissesKeyguard;
-
private final NotificationMediaManager mMediaManager;
private final PowerManager mPowerManager;
private final Handler mHandler;
+ private final KeyguardBypassController mKeyguardBypassController;
private PowerManager.WakeLock mWakeLock;
private final KeyguardUpdateMonitor mUpdateMonitor;
private final UnlockMethodCache mUnlockMethodCache;
@@ -133,16 +120,6 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
private boolean mPendingShowBouncer;
private boolean mHasScreenTurnedOnSinceAuthenticating;
- private final TunerService.Tunable mFaceDismissedKeyguardTunable = new TunerService.Tunable() {
- @Override
- public void onTuningChanged(String key, String newValue) {
- int defaultValue = mFaceDismissesKeyguardByDefault ? 1 : 0;
- mFaceDismissesKeyguard = Settings.Secure.getIntForUser(mContext.getContentResolver(),
- Settings.Secure.FACE_UNLOCK_DISMISSES_KEYGUARD,
- defaultValue, KeyguardUpdateMonitor.getCurrentUser()) != 0;
- }
- };
-
private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
public BiometricUnlockController(Context context,
@@ -152,12 +129,12 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
StatusBar statusBar,
UnlockMethodCache unlockMethodCache, Handler handler,
KeyguardUpdateMonitor keyguardUpdateMonitor,
- TunerService tunerService) {
+ KeyguardBypassController keyguardBypassController) {
this(context, dozeScrimController, keyguardViewMediator, scrimController, statusBar,
- unlockMethodCache, handler, keyguardUpdateMonitor, tunerService,
+ unlockMethodCache, handler, keyguardUpdateMonitor,
context.getResources()
.getInteger(com.android.internal.R.integer.config_wakeUpDelayDoze),
- context.getResources().getBoolean(R.bool.config_faceAuthDismissesKeyguard));
+ keyguardBypassController);
}
@VisibleForTesting
@@ -168,9 +145,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
StatusBar statusBar,
UnlockMethodCache unlockMethodCache, Handler handler,
KeyguardUpdateMonitor keyguardUpdateMonitor,
- TunerService tunerService,
int wakeUpDelay,
- boolean faceDismissesKeyguard) {
+ KeyguardBypassController keyguardBypassController) {
mContext = context;
mPowerManager = context.getSystemService(PowerManager.class);
mUpdateMonitor = keyguardUpdateMonitor;
@@ -186,9 +162,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
mUnlockMethodCache = unlockMethodCache;
mHandler = handler;
mWakeUpDelay = wakeUpDelay;
- mFaceDismissesKeyguardByDefault = faceDismissesKeyguard;
- tunerService.addTunable(mFaceDismissedKeyguardTunable,
- Settings.Secure.FACE_UNLOCK_DISMISSES_KEYGUARD);
+ mKeyguardBypassController = keyguardBypassController;
}
public void setStatusBarKeyguardViewManager(
@@ -296,7 +270,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
Trace.endSection();
};
- if (!delayWakeUp) {
+ if (!delayWakeUp && mMode != MODE_NONE) {
wakeUp.run();
}
switch (mMode) {
@@ -392,7 +366,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback {
boolean unlockingAllowed = mUpdateMonitor.isUnlockingWithBiometricAllowed();
boolean deviceDreaming = mUpdateMonitor.isDreaming();
boolean faceStayingOnKeyguard = biometricSourceType == BiometricSourceType.FACE
- && !mFaceDismissesKeyguard;
+ && !mKeyguardBypassController.getBypassEnabled();
if (!mUpdateMonitor.isDeviceInteractive()) {
if (!mStatusBarKeyguardViewManager.isShowing()) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
new file mode 100644
index 000000000000..5abf39e781f3
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2019 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
+ */
+
+package com.android.systemui.statusbar.phone
+
+import android.content.Context
+import android.hardware.face.FaceManager
+import android.provider.Settings
+import com.android.internal.annotations.VisibleForTesting
+import com.android.keyguard.KeyguardUpdateMonitor
+import com.android.systemui.tuner.TunerService
+
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class KeyguardBypassController {
+
+ @Inject
+ constructor(context: Context,
+ tunerService: TunerService) {
+ val faceManager = context.getSystemService(FaceManager::class.java)
+ if (faceManager?.isHardwareDetected != true) {
+ return
+ }
+
+ val dismissByDefault = if (context.resources.getBoolean(
+ com.android.internal.R.bool.config_faceAuthDismissesKeyguard)) 1 else 0
+ tunerService.addTunable(
+ object : TunerService.Tunable {
+ override fun onTuningChanged(key: String?, newValue: String?) {
+ bypassEnabled = Settings.Secure.getIntForUser(
+ context.contentResolver,
+ Settings.Secure.FACE_UNLOCK_DISMISSES_KEYGUARD,
+ dismissByDefault,
+ KeyguardUpdateMonitor.getCurrentUser()) != 0
+ }
+ }, Settings.Secure.FACE_UNLOCK_DISMISSES_KEYGUARD)
+ }
+
+ @VisibleForTesting
+ constructor(bypassEnabled: Boolean) {
+ this.bypassEnabled = bypassEnabled;
+ }
+
+ /**
+ * If face unlock dismisses the lock screen or keeps user on keyguard for the current user.
+ */
+ var bypassEnabled: Boolean = false
+ private set
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java
index bc2d00f53186..579d1abe7650 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithm.java
@@ -112,6 +112,12 @@ public class KeyguardClockPositionAlgorithm {
private float mEmptyDragAmount;
/**
+ * If true the clock should always be positioned like it's dark. Used in the bypass, where
+ * notifications don't expand on the lock screen and should be kept stable
+ */
+ private boolean mPositionLikeDark;
+
+ /**
* Refreshes the dimension values.
*/
public void loadDimens(Resources res) {
@@ -132,7 +138,8 @@ public class KeyguardClockPositionAlgorithm {
public void setup(int minTopMargin, int maxShadeBottom, int notificationStackHeight,
float panelExpansion, int parentHeight, int keyguardStatusHeight, int clockPreferredY,
- boolean hasCustomClock, boolean hasVisibleNotifs, float dark, float emptyDragAmount) {
+ boolean hasCustomClock, boolean hasVisibleNotifs, float dark, float emptyDragAmount,
+ boolean positionLikeDark) {
mMinTopMargin = minTopMargin + mContainerTopPadding;
mMaxShadeBottom = maxShadeBottom;
mNotificationStackHeight = notificationStackHeight;
@@ -144,13 +151,15 @@ public class KeyguardClockPositionAlgorithm {
mHasVisibleNotifs = hasVisibleNotifs;
mDarkAmount = dark;
mEmptyDragAmount = emptyDragAmount;
+ mPositionLikeDark = positionLikeDark;
}
public void run(Result result) {
- final int y = getClockY();
+ final int y = getClockY(mPanelExpansion);
result.clockY = y;
result.clockAlpha = getClockAlpha(y);
result.stackScrollerPadding = y + mKeyguardStatusHeight;
+ result.stackScrollerPaddingExpanded = getClockY(1.0f) + mKeyguardStatusHeight;
result.clockX = (int) interpolate(0, burnInPreventionOffsetX(), mDarkAmount);
}
@@ -195,7 +204,7 @@ public class KeyguardClockPositionAlgorithm {
return (int) y;
}
- private int getClockY() {
+ private int getClockY(float panelExpansion) {
// Dark: Align the bottom edge of the clock at about half of the screen:
float clockYDark = (mHasCustomClock ? getPreferredClockY() : getMaxClockY())
+ burnInPreventionOffsetY();
@@ -205,11 +214,12 @@ public class KeyguardClockPositionAlgorithm {
float clockYBouncer = -mKeyguardStatusHeight;
// Move clock up while collapsing the shade
- float shadeExpansion = Interpolators.FAST_OUT_LINEAR_IN.getInterpolation(mPanelExpansion);
+ float shadeExpansion = Interpolators.FAST_OUT_LINEAR_IN.getInterpolation(panelExpansion);
float clockY = MathUtils.lerp(clockYBouncer, clockYRegular, shadeExpansion);
clockYDark = MathUtils.lerp(clockYBouncer, clockYDark, shadeExpansion);
- return (int) (MathUtils.lerp(clockY, clockYDark, mDarkAmount) + mEmptyDragAmount);
+ float darkAmount = mPositionLikeDark ? 1.0f : mDarkAmount;
+ return (int) (MathUtils.lerp(clockY, clockYDark, darkAmount) + mEmptyDragAmount);
}
/**
@@ -257,5 +267,10 @@ public class KeyguardClockPositionAlgorithm {
* The top padding of the stack scroller, in pixels.
*/
public int stackScrollerPadding;
+
+ /**
+ * The top padding of the stack scroller, in pixels when fully expanded.
+ */
+ public int stackScrollerPaddingExpanded;
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
index 61a394092761..c7f778d37914 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.phone;
import static com.android.systemui.Dependency.MAIN_HANDLER_NAME;
import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT;
+import android.annotation.IntDef;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
@@ -30,6 +31,8 @@ import android.graphics.drawable.Drawable;
import android.hardware.biometrics.BiometricSourceType;
import android.os.Handler;
import android.os.Trace;
+import android.provider.Settings;
+import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;
@@ -50,6 +53,9 @@ import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardMonitor;
import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
import javax.inject.Inject;
import javax.inject.Named;
@@ -247,11 +253,11 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
mIsFaceUnlockState = state == STATE_SCANNING_FACE;
if (state != mLastState || mLastDozing != mDozing || mLastPulsing != mPulsing
|| mLastScreenOn != mScreenOn || mLastBouncerVisible != mBouncerVisible || force) {
- int iconAnimRes = getAnimationResForTransition(mLastState, state, mLastPulsing,
- mPulsing, mLastDozing, mDozing, mBouncerVisible);
- boolean isAnim = iconAnimRes != -1;
+ @LockAnimIndex final int lockAnimIndex = getAnimationIndexForTransition(mLastState,
+ state, mLastPulsing, mPulsing, mLastDozing, mDozing, mBouncerVisible);
+ boolean isAnim = lockAnimIndex != -1;
- int iconRes = isAnim ? iconAnimRes : getIconForState(state);
+ int iconRes = isAnim ? getThemedAnimationResId(lockAnimIndex) : getIconForState(state);
if (iconRes != mIconRes) {
mIconRes = iconRes;
@@ -272,7 +278,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
@Override
public void onAnimationEnd(Drawable drawable) {
if (getDrawable() == animation && state == getState()
- && doesAnimationLoop(iconAnimRes)) {
+ && doesAnimationLoop(lockAnimIndex)) {
animation.start();
} else {
Trace.endAsyncSection("LockIcon#Animation", state);
@@ -360,11 +366,11 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
return iconRes;
}
- private boolean doesAnimationLoop(int resourceId) {
- return resourceId == com.android.internal.R.anim.lock_scanning;
+ private boolean doesAnimationLoop(@LockAnimIndex int lockAnimIndex) {
+ return lockAnimIndex == SCANNING;
}
- private int getAnimationResForTransition(int oldState, int newState,
+ private int getAnimationIndexForTransition(int oldState, int newState,
boolean wasPulsing, boolean pulsing, boolean wasDozing, boolean dozing,
boolean bouncerVisible) {
@@ -380,19 +386,68 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange
boolean turningOn = wasDozing && !dozing && !mWasPulsingOnThisFrame;
if (isError) {
- return com.android.internal.R.anim.lock_to_error;
+ return ERROR;
} else if (justUnlocked) {
- return com.android.internal.R.anim.lock_unlock;
+ return UNLOCK;
} else if (justLocked) {
- return com.android.internal.R.anim.lock_lock;
+ return LOCK;
} else if (newState == STATE_SCANNING_FACE && bouncerVisible) {
- return com.android.internal.R.anim.lock_scanning;
+ return SCANNING;
} else if ((nowPulsing || turningOn) && newState != STATE_LOCK_OPEN) {
- return com.android.internal.R.anim.lock_in;
+ return LOCK_IN;
}
return -1;
}
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({ERROR, UNLOCK, LOCK, SCANNING, LOCK_IN})
+ @interface LockAnimIndex {}
+ private static final int ERROR = 0, UNLOCK = 1, LOCK = 2, SCANNING = 3, LOCK_IN = 4;
+ private static final int[][] LOCK_ANIM_RES_IDS = new int[][] {
+ {
+ R.anim.lock_to_error,
+ R.anim.lock_unlock,
+ R.anim.lock_lock,
+ R.anim.lock_scanning,
+ R.anim.lock_in,
+ },
+ {
+ R.anim.lock_to_error_circular,
+ R.anim.lock_unlock_circular,
+ R.anim.lock_lock_circular,
+ R.anim.lock_scanning_circular,
+ R.anim.lock_in_circular,
+ },
+ {
+ R.anim.lock_to_error_filled,
+ R.anim.lock_unlock_filled,
+ R.anim.lock_lock_filled,
+ R.anim.lock_scanning_filled,
+ R.anim.lock_in_filled,
+ },
+ {
+ R.anim.lock_to_error_rounded,
+ R.anim.lock_unlock_rounded,
+ R.anim.lock_lock_rounded,
+ R.anim.lock_scanning_rounded,
+ R.anim.lock_in_rounded,
+ },
+ };
+
+ private int getThemedAnimationResId(@LockAnimIndex int lockAnimIndex) {
+ final String setting = TextUtils.emptyIfNull(
+ Settings.Secure.getString(getContext().getContentResolver(),
+ Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES));
+ if (setting.contains("com.android.theme.icon_pack.circular.android")) {
+ return LOCK_ANIM_RES_IDS[1][lockAnimIndex];
+ } else if (setting.contains("com.android.theme.icon_pack.filled.android")) {
+ return LOCK_ANIM_RES_IDS[2][lockAnimIndex];
+ } else if (setting.contains("com.android.theme.icon_pack.rounded.android")) {
+ return LOCK_ANIM_RES_IDS[3][lockAnimIndex];
+ }
+ return LOCK_ANIM_RES_IDS[0][lockAnimIndex];
+ }
+
private int getState() {
KeyguardUpdateMonitor updateMonitor = KeyguardUpdateMonitor.getInstance(mContext);
if (mTransientBiometricsError) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 92aa884b14d2..b3cbf083e4a8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -152,6 +152,7 @@ public class NotificationPanelView extends PanelView implements
private final AccessibilityManager mAccessibilityManager;
private final NotificationWakeUpCoordinator mWakeUpCoordinator;
private final PulseExpansionHandler mPulseExpansionHandler;
+ private final KeyguardBypassController mKeyguardBypassController;
@VisibleForTesting
protected KeyguardAffordanceHelper mAffordanceHelper;
@@ -350,7 +351,8 @@ public class NotificationPanelView extends PanelView implements
InjectionInflationController injectionInflationController,
NotificationWakeUpCoordinator coordinator,
PulseExpansionHandler pulseExpansionHandler,
- DynamicPrivacyController dynamicPrivacyController) {
+ DynamicPrivacyController dynamicPrivacyController,
+ KeyguardBypassController bypassController) {
super(context, attrs);
setWillNotDraw(!DEBUG);
mInjectionInflationController = injectionInflationController;
@@ -365,6 +367,7 @@ public class NotificationPanelView extends PanelView implements
mDisplayId = context.getDisplayId();
mPulseExpansionHandler = pulseExpansionHandler;
mThemeResId = context.getThemeResId();
+ mKeyguardBypassController = bypassController;
dynamicPrivacyController.addListener(this);
}
@@ -676,14 +679,15 @@ public class NotificationPanelView extends PanelView implements
hasCustomClock(),
mNotificationStackScroller.getVisibleNotificationCount() != 0,
mInterpolatedDarkAmount,
- mEmptyDragAmount);
+ mEmptyDragAmount,
+ mKeyguardBypassController.getBypassEnabled());
mClockPositionAlgorithm.run(mClockPositionResult);
PropertyAnimator.setProperty(mKeyguardStatusView, AnimatableProperty.X,
mClockPositionResult.clockX, CLOCK_ANIMATION_PROPERTIES, animateClock);
PropertyAnimator.setProperty(mKeyguardStatusView, AnimatableProperty.Y,
mClockPositionResult.clockY, CLOCK_ANIMATION_PROPERTIES, animateClock);
updateClock();
- stackScrollerPadding = mClockPositionResult.stackScrollerPadding;
+ stackScrollerPadding = mClockPositionResult.stackScrollerPaddingExpanded;
}
mNotificationStackScroller.setIntrinsicPadding(stackScrollerPadding);
mNotificationStackScroller.setAntiBurnInOffsetX(mClockPositionResult.clockX);
@@ -1616,7 +1620,7 @@ public class NotificationPanelView extends PanelView implements
} else if (mKeyguardShowing) {
// We can only do the smoother transition on Keyguard when we also are not collapsing
// from a scrolled quick settings.
- return MathUtils.lerp((float) mNotificationStackScroller.getIntrinsicPadding(),
+ return MathUtils.lerp((float) mClockPositionResult.stackScrollerPadding,
(float) (mQsMaxExpansionHeight + mQsNotificationTopPadding),
getQsExpansionFraction());
} else {
@@ -1625,9 +1629,7 @@ public class NotificationPanelView extends PanelView implements
}
protected void requestScrollerTopPaddingUpdate(boolean animate) {
- mNotificationStackScroller.updateTopPadding(calculateQsTopPadding(),
- animate, mKeyguardShowing
- && (mQsExpandImmediate || mIsExpanding && mQsExpandedWhenExpandingStarted));
+ mNotificationStackScroller.updateTopPadding(calculateQsTopPadding(), animate);
}
private void trackMovement(MotionEvent event) {
@@ -2886,7 +2888,7 @@ public class NotificationPanelView extends PanelView implements
public void setDozing(boolean dozing, boolean animate, PointF wakeUpTouchLocation) {
if (dozing == mDozing) return;
mDozing = dozing;
- mNotificationStackScroller.setDark(mDozing, animate, wakeUpTouchLocation);
+ mNotificationStackScroller.setDozing(mDozing, animate, wakeUpTouchLocation);
mKeyguardBottomArea.setDozing(mDozing, animate);
if (mBarState == StatusBarState.KEYGUARD
@@ -2894,8 +2896,8 @@ public class NotificationPanelView extends PanelView implements
updateDozingVisibilities(animate);
}
- final float darkAmount = dozing ? 1 : 0;
- mStatusBarStateController.setDozeAmount(darkAmount, animate);
+ final float dozeAmount = dozing ? 1 : 0;
+ mStatusBarStateController.setDozeAmount(dozeAmount, animate);
}
@Override
@@ -3103,6 +3105,11 @@ public class NotificationPanelView extends PanelView implements
@Override
public void onDynamicPrivacyChanged() {
+ // Do not request animation when pulsing or waking up, otherwise the clock wiill be out
+ // of sync with the notification panel.
+ if (mLinearDarkAmount != 0) {
+ return;
+ }
mAnimateNextPositionUpdate = true;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 1da819f1a764..5fca4f8478cb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -386,6 +386,8 @@ public class StatusBar extends SystemUI implements DemoMode,
PulseExpansionHandler mPulseExpansionHandler;
@Inject
NotificationWakeUpCoordinator mWakeUpCoordinator;
+ @Inject
+ KeyguardBypassController mKeyguardBypassController;
// expanded notifications
protected NotificationPanelView mNotificationPanel; // the sliding/resizing panel within the notification window
@@ -1229,7 +1231,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mBiometricUnlockController = new BiometricUnlockController(mContext,
mDozeScrimController, keyguardViewMediator,
mScrimController, this, UnlockMethodCache.getInstance(mContext),
- new Handler(), mKeyguardUpdateMonitor, Dependency.get(TunerService.class));
+ new Handler(), mKeyguardUpdateMonitor, mKeyguardBypassController);
mStatusBarKeyguardViewManager = keyguardViewMediator.registerStatusBar(this,
getBouncerContainer(), mNotificationPanel, mBiometricUnlockController,
mStatusBarWindow.findViewById(R.id.lock_icon_container));
@@ -3890,6 +3892,8 @@ public class StatusBar extends SystemUI implements DemoMode,
private boolean mAnimateWakeup;
private boolean mAnimateScreenOff;
private boolean mIgnoreTouchWhilePulsing;
+ private boolean mWakeLockScreenPerformsAuth = SystemProperties.getBoolean(
+ "persist.sysui.wake_performs_auth", false);
@Override
public String toString() {
@@ -3945,7 +3949,9 @@ public class StatusBar extends SystemUI implements DemoMode,
mStatusBarWindow.suppressWakeUpGesture(true);
}
- boolean passiveAuthInterrupt = reason == DozeLog.PULSE_REASON_NOTIFICATION;
+ boolean passiveAuthInterrupt = reason == DozeLog.PULSE_REASON_NOTIFICATION || (
+ reason == DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN
+ && mWakeLockScreenPerformsAuth);
// Set the state to pulsing, so ScrimController will know what to do once we ask it to
// execute the transition. The pulse callback will then be invoked when the scrims
// are black, indicating that StatusBar is ready to present the rest of the UI.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
index 8286d26e9999..2558d77bbb48 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
@@ -22,6 +22,7 @@ import android.telephony.SubscriptionInfo;
import android.util.ArraySet;
import android.util.Log;
+import com.android.settingslib.graph.SignalDrawable;
import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.statusbar.policy.NetworkController;
@@ -186,8 +187,8 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba
// Visibility of the data type indicator changed
boolean typeChanged = statusType != state.typeId && (statusType == 0 || state.typeId == 0);
-
- state.visible = statusIcon.visible && !mBlockMobile;
+ state.visible = statusIcon.visible && !mBlockMobile
+ && !isInEmptyStateOnSingleSimDevice(subId, statusIcon.icon);
state.strengthId = statusIcon.icon;
state.typeId = statusType;
state.contentDescription = statusIcon.contentDescription;
@@ -209,6 +210,12 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba
}
}
+ private boolean isInEmptyStateOnSingleSimDevice(int subId, int icon) {
+ return mMobileStates.size() == 1
+ && mMobileStates.get(0).subId == subId
+ && SignalDrawable.isEmptyState(icon);
+ }
+
private MobileIconState getState(int subId) {
for (MobileIconState state : mMobileStates) {
if (state.subId == subId) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java
index e949ade28b59..3d25749265f1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarTouchableRegionManager.java
@@ -26,7 +26,6 @@ import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnComputeInternalInsetsListener;
import com.android.systemui.Dependency;
-import com.android.systemui.assist.AssistManager;
import com.android.systemui.bubbles.BubbleController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
@@ -38,7 +37,6 @@ import com.android.systemui.statusbar.policy.ConfigurationController.Configurati
public final class StatusBarTouchableRegionManager implements
OnComputeInternalInsetsListener, ConfigurationListener {
- private final AssistManager mAssistManager = Dependency.get(AssistManager.class);
private final BubbleController mBubbleController = Dependency.get(BubbleController.class);
private final Context mContext;
private final HeadsUpManagerPhone mHeadsUpManager;
@@ -48,6 +46,7 @@ public final class StatusBarTouchableRegionManager implements
private int mStatusBarHeight;
private final View mStatusBarWindowView;
private boolean mForceCollapsedUntilLayout = false;
+ private final StatusBarWindowController mStatusBarWindowController;
public StatusBarTouchableRegionManager(@NonNull Context context,
HeadsUpManagerPhone headsUpManager,
@@ -57,12 +56,17 @@ public final class StatusBarTouchableRegionManager implements
mHeadsUpManager = headsUpManager;
mStatusBar = statusBar;
mStatusBarWindowView = statusBarWindowView;
+ mStatusBarWindowController = Dependency.get(StatusBarWindowController.class);
initResources();
mBubbleController.setBubbleStateChangeListener((hasBubbles) -> {
updateTouchableRegion();
});
+
+ mStatusBarWindowController.setForcePluginOpenListener((forceOpen) -> {
+ updateTouchableRegion();
+ });
Dependency.get(ConfigurationController.class).addCallback(this);
}
@@ -77,7 +81,8 @@ public final class StatusBarTouchableRegionManager implements
mHeadsUpManager.hasPinnedHeadsUp() || mHeadsUpManager.isHeadsUpGoingAway()
|| mBubbleController.hasBubbles()
|| mForceCollapsedUntilLayout
- || hasCutoutInset;
+ || hasCutoutInset
+ || mStatusBarWindowController.getForcePluginOpen();
if (shouldObserve == mShouldAdjustInsets) {
return;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java
index 631920c16a2c..f08db1b5c76c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowController.java
@@ -80,6 +80,7 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
private float mScreenBrightnessDoze;
private final State mCurrentState = new State();
private OtherwisedCollapsedListener mListener;
+ private ForcePluginOpenListener mForcePluginOpenListener;
private final SysuiColorExtractor mColorExtractor = Dependency.get(SysuiColorExtractor.class);
@@ -477,6 +478,16 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
public void setForcePluginOpen(boolean forcePluginOpen) {
mCurrentState.forcePluginOpen = forcePluginOpen;
apply(mCurrentState);
+ if (mForcePluginOpenListener != null) {
+ mForcePluginOpenListener.onChange(forcePluginOpen);
+ }
+ }
+
+ /**
+ * The forcePluginOpen state for the status bar.
+ */
+ public boolean getForcePluginOpen() {
+ return mCurrentState.forcePluginOpen;
}
public void setNotTouchable(boolean notTouchable) {
@@ -525,6 +536,10 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
mListener = listener;
}
+ public void setForcePluginOpenListener(ForcePluginOpenListener listener) {
+ mForcePluginOpenListener = listener;
+ }
+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println("StatusBarWindowController state:");
pw.println(mCurrentState);
@@ -637,4 +652,14 @@ public class StatusBarWindowController implements Callback, Dumpable, Configurat
public interface OtherwisedCollapsedListener {
void setWouldOtherwiseCollapse(boolean otherwiseCollapse);
}
+
+ /**
+ * Listener to indicate forcePluginOpen has changed
+ */
+ public interface ForcePluginOpenListener {
+ /**
+ * Called when mState.forcePluginOpen is changed
+ */
+ void onChange(boolean forceOpen);
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/MediaArtworkProcessorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/MediaArtworkProcessorTest.kt
new file mode 100644
index 000000000000..72e6df27a254
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/MediaArtworkProcessorTest.kt
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2019 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
+ */
+
+package com.android.systemui.statusbar
+
+import com.google.common.truth.Truth.assertThat
+
+import android.graphics.Bitmap
+import android.graphics.Canvas
+import android.graphics.Color
+import android.graphics.Point
+import android.testing.AndroidTestingRunner
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+private const val WIDTH = 200
+private const val HEIGHT = 200
+
+@RunWith(AndroidTestingRunner::class)
+@SmallTest
+class MediaArtworkProcessorTest : SysuiTestCase() {
+
+ private var screenWidth = 0
+ private var screenHeight = 0
+
+ private lateinit var processor: MediaArtworkProcessor
+
+ @Before
+ fun setUp() {
+ processor = MediaArtworkProcessor()
+
+ val point = Point()
+ context.display.getSize(point)
+ screenWidth = point.x
+ screenHeight = point.y
+ }
+
+ @After
+ fun tearDown() {
+ processor.clearCache()
+ }
+
+ @Test
+ fun testProcessArtwork() {
+ // GIVEN some "artwork", which is just a solid blue image
+ val artwork = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ARGB_8888)
+ Canvas(artwork).drawColor(Color.BLUE)
+ // WHEN the background is created from the artwork
+ val background = processor.processArtwork(context, artwork)!!
+ // THEN the background has the size of the screen that has been downsamples
+ assertThat(background.height).isLessThan(screenHeight)
+ assertThat(background.width).isLessThan(screenWidth)
+ assertThat(background.config).isEqualTo(Bitmap.Config.ARGB_8888)
+ }
+
+ @Test
+ fun testCache() {
+ // GIVEN a solid blue image
+ val artwork = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ARGB_8888)
+ Canvas(artwork).drawColor(Color.BLUE)
+ // WHEN the background is processed twice
+ val background1 = processor.processArtwork(context, artwork)!!
+ val background2 = processor.processArtwork(context, artwork)!!
+ // THEN the two bitmaps are the same
+ // Note: This is currently broken and trying to use caching causes issues
+ assertThat(background1).isNotSameAs(background2)
+ }
+
+ @Test
+ fun testConfig() {
+ // GIVEN some which is not ARGB_8888
+ val artwork = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ALPHA_8)
+ Canvas(artwork).drawColor(Color.BLUE)
+ // WHEN the background is created from the artwork
+ val background = processor.processArtwork(context, artwork)!!
+ // THEN the background has Config ARGB_8888
+ assertThat(background.config).isEqualTo(Bitmap.Config.ARGB_8888)
+ }
+
+ @Test
+ fun testRecycledArtwork() {
+ // GIVEN some "artwork", which is just a solid blue image
+ val artwork = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ARGB_8888)
+ Canvas(artwork).drawColor(Color.BLUE)
+ // AND the artwork is recycled
+ artwork.recycle()
+ // WHEN the background is created from the artwork
+ val background = processor.processArtwork(context, artwork)
+ // THEN the processed bitmap is null
+ assertThat(background).isNull()
+ }
+} \ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
index 56265d08c131..662edd2d58cd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
@@ -194,9 +194,9 @@ public class NotificationStackScrollLayoutTest extends SysuiTestCase {
public void testAntiBurnInOffset() {
final int burnInOffset = 30;
mStackScroller.setAntiBurnInOffsetX(burnInOffset);
- mStackScroller.setDark(false /* dark */, false /* animated */, null /* touch */);
+ mStackScroller.setDarkAmount(0.0f, 0.0f);
Assert.assertEquals(0 /* expected */, mStackScroller.getTranslationX(), 0.01 /* delta */);
- mStackScroller.setDark(true /* dark */, false /* animated */, null /* touch */);
+ mStackScroller.setDarkAmount(1.0f, 1.0f);
Assert.assertEquals(burnInOffset /* expected */, mStackScroller.getTranslationX(),
0.01 /* delta */);
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java
index d2d294bf8d37..fdc2cd3483ca 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java
@@ -71,8 +71,6 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase {
@Mock
private UnlockMethodCache mUnlockMethodCache;
@Mock
- private TunerService mTunerService;
- @Mock
private Handler mHandler;
private BiometricUnlockController mBiometricUnlockController;
@@ -192,9 +190,8 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase {
TestableBiometricUnlockController(boolean faceDismissesKeyguard) {
super(mContext, mDozeScrimController,
mKeyguardViewMediator, mScrimController, mStatusBar, mUnlockMethodCache,
- mHandler, mUpdateMonitor, mTunerService, 0 /* wakeUpDelay */,
- faceDismissesKeyguard);
- mFaceDismissesKeyguard = faceDismissesKeyguard;
+ mHandler, mUpdateMonitor, 0 /* wakeUpDelay */,
+ new KeyguardBypassController(faceDismissesKeyguard));
}
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java
index f8394f01a081..66c61ce9b7e8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardClockPositionAlgorithmTest.java
@@ -383,7 +383,7 @@ public class KeyguardClockPositionAlgorithmTest extends SysuiTestCase {
private void positionClock() {
mClockPositionAlgorithm.setup(EMPTY_MARGIN, SCREEN_HEIGHT, mNotificationStackHeight,
mPanelExpansion, SCREEN_HEIGHT, mKeyguardStatusHeight, mPreferredClockY,
- mHasCustomClock, mHasVisibleNotifs, mDark, ZERO_DRAG);
+ mHasCustomClock, mHasVisibleNotifs, mDark, ZERO_DRAG, false /* positionLikeDark */);
mClockPositionAlgorithm.run(mClockPosition);
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
index 1b7ca952dbfe..e0e4a25a9f90 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
@@ -49,6 +49,7 @@ import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ZenModeController;
+import com.android.systemui.tuner.TunerService;
import com.android.systemui.util.InjectionInflationController;
import org.junit.Before;
@@ -111,12 +112,16 @@ public class NotificationPanelViewTest extends SysuiTestCase {
mDependency.injectMockDependency(NotificationLockscreenUserManager.class);
mDependency.injectMockDependency(ConfigurationController.class);
mDependency.injectMockDependency(ZenModeController.class);
+ KeyguardBypassController bypassController = new KeyguardBypassController(mContext,
+ mock(TunerService.class));
NotificationWakeUpCoordinator coordinator =
new NotificationWakeUpCoordinator(mContext,
new AmbientPulseManager(mContext),
- new StatusBarStateControllerImpl());
+ new StatusBarStateControllerImpl(),
+ bypassController);
PulseExpansionHandler expansionHandler = new PulseExpansionHandler(mContext, coordinator);
- mNotificationPanelView = new TestableNotificationPanelView(coordinator, expansionHandler);
+ mNotificationPanelView = new TestableNotificationPanelView(coordinator, expansionHandler,
+ bypassController);
mNotificationPanelView.setHeadsUpManager(mHeadsUpManager);
mNotificationPanelView.setBar(mPanelBar);
@@ -128,7 +133,7 @@ public class NotificationPanelViewTest extends SysuiTestCase {
public void testSetDozing_notifiesNsslAndStateController() {
mNotificationPanelView.setDozing(true /* dozing */, true /* animate */, null /* touch */);
InOrder inOrder = inOrder(mNotificationStackScrollLayout, mStatusBarStateController);
- inOrder.verify(mNotificationStackScrollLayout).setDark(eq(true), eq(true), eq(null));
+ inOrder.verify(mNotificationStackScrollLayout).setDozing(eq(true), eq(true), eq(null));
inOrder.verify(mStatusBarStateController).setDozeAmount(eq(1f), eq(true));
}
@@ -178,11 +183,13 @@ public class NotificationPanelViewTest extends SysuiTestCase {
private class TestableNotificationPanelView extends NotificationPanelView {
TestableNotificationPanelView(NotificationWakeUpCoordinator coordinator,
- PulseExpansionHandler expansionHandler) {
+ PulseExpansionHandler expansionHandler,
+ KeyguardBypassController bypassController) {
super(NotificationPanelViewTest.this.mContext, null,
new InjectionInflationController(
SystemUIFactory.getInstance().getRootComponent()),
- coordinator, expansionHandler, mock(DynamicPrivacyController.class));
+ coordinator, expansionHandler, mock(DynamicPrivacyController.class),
+ bypassController);
mNotificationStackScroller = mNotificationStackScrollLayout;
mKeyguardStatusView = NotificationPanelViewTest.this.mKeyguardStatusView;
mKeyguardStatusBar = NotificationPanelViewTest.this.mKeyguardStatusBar;
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_bad_24dp.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_battery_80_24dp.xml
index 22e183c694d5..4d8dbdba9207 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_bad_24dp.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_battery_80_24dp.xml
@@ -21,5 +21,5 @@
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M10,2v2H8.33C7.6,4,7,4.6,7,5.33v15.33C7,21.4,7.6,22,8.33,22h7.33C16.4,22,17,21.4,17,20.67V5.33C17,4.6,16.4,4,15.67,4 H14V2H10z M15,13c0,0.55-0.45,1-1,1h-1v1c0,0.55-0.45,1-1,1s-1-0.45-1-1v-1h-1c-0.55,0-1-0.45-1-1s0.45-1,1-1h1v-1 c0-0.55,0.45-1,1-1s1,0.45,1,1v1h1C14.55,12,15,12.45,15,13z" />
+ android:pathData="M18,19V7c0-1.66-1.34-3-3-3h-1c0-0.55-0.45-1-1-1h-2c-0.55,0-1,0.45-1,1H9C7.34,4,6,5.34,6,7v12c0,1.66,1.34,3,3,3h6 C16.66,22,18,20.66,18,19z M9,5.5h6c0.83,0,1.5,0.67,1.5,1.5v1h-9V7C7.5,6.17,8.17,5.5,9,5.5z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_misc_hid.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_misc_hid.xml
index e182886d4252..5096f2f0f2e9 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_misc_hid.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_misc_hid.xml
@@ -20,7 +20,6 @@
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path android:pathData="M0,0h24v24H0V0z" />
<path
android:fillColor="@android:color/white"
android:pathData="M9,16.5V20c0,1.1,0.9,2,2,2h2c1.1,0,2-0.9,2-2v-3.5l-3-3L9,16.5z M13.5,20c0,0.28-0.22,0.5-0.5,0.5h-2 c-0.28,0-0.5-0.22-0.5-0.5v-2.88l1.5-1.5l1.5,1.5V20z M15,7.5V4c0-1.1-0.9-2-2-2h-2C9.9,2,9,2.9,9,4v3.5l3,3L15,7.5z M10.5,4 c0-0.28,0.22-0.5,0.5-0.5h2c0.28,0,0.5,0.22,0.5,0.5v2.88L12,8.38l-1.5-1.5V4z M7.5,9H4c-1.1,0-2,0.9-2,2v2c0,1.1,0.9,2,2,2h3.5 l3-3L7.5,9z M6.88,13.5H4c-0.28,0-0.5-0.22-0.5-0.5v-2c0-0.28,0.22-0.5,0.5-0.5h2.88l1.5,1.5L6.88,13.5z M20,9h-3.5l-3,3l3,3H20 c1.1,0,2-0.9,2-2v-2C22,9.9,21.1,9,20,9z M20.5,13c0,0.28-0.22,0.5-0.5,0.5h-2.88l-1.5-1.5l1.5-1.5H20c0.28,0,0.5,0.22,0.5,0.5V13z" />
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_file_copy.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_file_copy.xml
index dc6ab95e23b1..b8e9845d5039 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_file_copy.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_file_copy.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="#FF737373"
+ android:tint="@*android:color/material_grey_600"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock.xml
index 1e3400b40e79..5a67f95788ee 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock.xml
@@ -16,7 +16,6 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="32dp"
- android:tint="?android:attr/textColor"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="32dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_open.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_open.xml
index f4606a2a9d3e..21abd6e2d3ba 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_open.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_open.xml
@@ -16,7 +16,6 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="32dp"
- android:tint="?android:attr/textColor"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="32dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lockscreen_ime.xml
index 4344e32a75aa..455bdd50ceba 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lockscreen_ime.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lockscreen_ime.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_mode_edit.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_mode_edit.xml
index f0d782e03d11..aca3d52c1a24 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_mode_edit.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_mode_edit.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_delete_accent.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_notifications_alerted.xml
index b4d88271284c..86863b3b6c98 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_delete_accent.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_notifications_alerted.xml
@@ -16,17 +16,19 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="?android:attr/colorAccent"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M9,20h6c1.66,0,3-1.34,3-3V6h0.5c0.41,0,0.75-0.34,0.75-0.75S18.91,4.5,18.5,4.5H18h-3l-1-1h-4l-1,1H6H5.5 c-0.41,0-0.75,0.34-0.75,0.75S5.09,6,5.5,6H6v11C6,18.66,7.34,20,9,20z M16.5,6v11c0,0.83-0.67,1.5-1.5,1.5H9 c-0.83,0-1.5-0.67-1.5-1.5V6H16.5z" />
+ android:pathData="M5.85,3.01C3.72,4.82,2.5,7.46,2.5,10.25C2.5,10.66,2.84,11,3.25,11S4,10.66,4,10.25c0-2.35,1.03-4.57,2.82-6.1 C7.14,3.88,7.17,3.41,6.91,3.1C6.64,2.78,6.17,2.74,5.85,3.01z" />
<path
android:fillColor="@android:color/white"
- android:pathData="M13.97,16c0.41,0,0.75-0.34,0.75-0.75v-6.5c0-0.41-0.34-0.75-0.75-0.75s-0.75,0.34-0.75,0.75v6.5 C13.22,15.66,13.55,16,13.97,16z" />
+ android:pathData="M21.5,10.25c0-2.79-1.22-5.43-3.35-7.24c-0.32-0.27-0.79-0.23-1.06,0.08c-0.27,0.32-0.23,0.79,0.08,1.06 C18.97,5.68,20,7.9,20,10.25c0,0.41,0.34,0.75,0.75,0.75S21.5,10.66,21.5,10.25z" />
<path
android:fillColor="@android:color/white"
- android:pathData="M10,16c0.41,0,0.75-0.34,0.75-0.75v-6.5C10.75,8.34,10.41,8,10,8S9.25,8.34,9.25,8.75v6.5C9.25,15.66,9.59,16,10,16z" />
+ android:pathData="M12,2.5c-0.83,0-1.5,0.67-1.5,1.5v0.7C7.91,5.36,6,7.71,6,10.5V15c0,0.55-0.45,1-1,1s-1,0.45-1,1v2h16v-2 c0-0.55-0.45-1-1-1s-1-0.45-1-1v-4.5c0-2.79-1.91-5.14-4.5-5.8V4C13.5,3.17,12.83,2.5,12,2.5z M16.5,10.5V15 c0,1.21,0.86,2.22,2,2.45v0.05h-13v-0.05c1.14-0.23,2-1.24,2-2.45v-4.5C7.5,8.02,9.52,6,12,6S16.5,8.02,16.5,10.5z" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M14,20h-4c0,1.1,0.9,2,2,2S14,21.1,14,20z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_phone.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_phone.xml
index 28733c1890cb..85c184b9f9a8 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_phone.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_phone.xml
@@ -15,7 +15,9 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_battery_saver.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_battery_saver.xml
index a558337902c4..73310b03f625 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_battery_saver.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_battery_saver.xml
@@ -15,7 +15,9 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_bluetooth.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_bluetooth.xml
index 452a032c49e9..19731249bfc7 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_bluetooth.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_bluetooth.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml
index e09aeb7f1d2f..d9dfa54697e4 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml
@@ -19,28 +19,32 @@
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path
- android:fillAlpha="0.3"
- android:fillColor="@android:color/white"
- android:pathData="M20,22H18.5V4.75A0.76 0.76 ,0,0,1,19.25,4h0a0.76 0.76 ,0,0,1,0.75 0.75 Z"
- android:strokeAlpha="0.3"
- android:strokeWidth="1" />
- <path
- android:fillAlpha="0.3"
- android:fillColor="@android:color/white"
- android:pathData="M15.33,22h-1.5V9.75A0.76 0.76 ,0,0,1,14.58,9h0a0.75 0.75 ,0,0,1,0.75 0.75 Z"
- android:strokeAlpha="0.3"
- android:strokeWidth="1" />
- <path
- android:fillAlpha="0.3"
- android:fillColor="@android:color/white"
- android:pathData="M10.67,22H9.17V14.75A0.75 0.75 ,0,0,1,9.92,14h0a0.76 0.76 ,0,0,1,0.75 0.75 Z"
- android:strokeAlpha="0.3"
- android:strokeWidth="1" />
- <path
- android:fillAlpha="0.3"
- android:fillColor="@android:color/white"
- android:pathData="M6,22H4.5V19.75A0.76 0.76 ,0,0,1,5.25,19h0a0.76 0.76 ,0,0,1,0.75 0.75 Z"
- android:strokeAlpha="0.3"
- android:strokeWidth="1" />
+ <group
+ android:translateX="4.000000"
+ android:translateY="3.000000" >
+ <path
+ android:fillAlpha="0.3"
+ android:fillColor="@android:color/white"
+ android:pathData="M16,18 L14.5,18 L14.5,0.75 C14.5053858,0.338037936 14.8380379,0.00538581231 15.25,0 L15.25,0 C15.6619621,0.00538581231 15.9946142,0.338037936 16,0.75 L16,18 Z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
+ <path
+ android:fillAlpha="0.3"
+ android:fillColor="@android:color/white"
+ android:pathData="M11.33,18 L9.83,18 L9.83,5.75 C9.83538581,5.33803794 10.1680379,5.00538581 10.58,5 L10.58,5 C10.9942136,5 11.33,5.33578644 11.33,5.75 L11.33,18 Z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
+ <path
+ android:fillAlpha="0.3"
+ android:fillColor="@android:color/white"
+ android:pathData="M6.67,18 L5.17,18 L5.17,10.75 C5.17,10.3357864 5.50578644,10 5.92,10 L5.92,10 C6.33196206,10.0053858 6.66461419,10.3380379 6.67,10.75 L6.67,18 Z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
+ <path
+ android:fillAlpha="0.3"
+ android:fillColor="@android:color/white"
+ android:pathData="M2,18 L0.5,18 L0.5,15.75 C0.505385812,15.3380379 0.838037936,15.0053858 1.25,15 L1.25,15 C1.66196206,15.0053858 1.99461419,15.3380379 2,15.75 L2,18 Z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml
index 26e96ab4c5c8..70f91afab7d5 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml
@@ -19,25 +19,30 @@
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path
- android:fillAlpha="0.3"
- android:fillColor="@android:color/white"
- android:pathData="M20,22H18.5V4.75A0.76 0.76 ,0,0,1,19.25,4h0a0.76 0.76 ,0,0,1,0.75 0.75 Z"
- android:strokeAlpha="0.3"
- android:strokeWidth="1" />
- <path
- android:fillAlpha="0.3"
- android:fillColor="@android:color/white"
- android:pathData="M15.33,22h-1.5V9.75A0.76 0.76 ,0,0,1,14.58,9h0a0.75 0.75 ,0,0,1,0.75 0.75 Z"
- android:strokeAlpha="0.3"
- android:strokeWidth="1" />
- <path
- android:fillAlpha="0.3"
- android:fillColor="@android:color/white"
- android:pathData="M10.67,22H9.17V14.75A0.75 0.75 ,0,0,1,9.92,14h0a0.76 0.76 ,0,0,1,0.75 0.75 Z"
- android:strokeAlpha="0.3"
- android:strokeWidth="1" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M6,22H4.5V19.75A0.76 0.76 ,0,0,1,5.25,19h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
+ <group
+ android:translateX="4.000000"
+ android:translateY="3.000000" >
+ <path
+ android:fillAlpha="0.3"
+ android:fillColor="@android:color/white"
+ android:pathData="M16,18 L14.5,18 L14.5,0.75 C14.5053858,0.338037936 14.8380379,0.00538581231 15.25,0 L15.25,0 C15.6619621,0.00538581231 15.9946142,0.338037936 16,0.75 L16,18 Z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
+ <path
+ android:fillAlpha="0.3"
+ android:fillColor="@android:color/white"
+ android:pathData="M11.33,18 L9.83,18 L9.83,5.75 C9.83538581,5.33803794 10.1680379,5.00538581 10.58,5 L10.58,5 C10.9942136,5 11.33,5.33578644 11.33,5.75 L11.33,18 Z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
+ <path
+ android:fillAlpha="0.3"
+ android:fillColor="@android:color/white"
+ android:pathData="M6.67,18 L5.17,18 L5.17,10.75 C5.17,10.3357864 5.50578644,10 5.92,10 L5.92,10 C6.33196206,10.0053858 6.66461419,10.3380379 6.67,10.75 L6.67,18 Z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M2,18 L0.5,18 L0.5,15.75 C0.505385812,15.3380379 0.838037936,15.0053858 1.25,15 L1.25,15 C1.66196206,15.0053858 1.99461419,15.3380379 2,15.75 L2,18 Z"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml
index 53be899d5a8d..f014eea9354f 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml
@@ -19,22 +19,28 @@
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path
- android:fillAlpha="0.3"
- android:fillColor="@android:color/white"
- android:pathData="M20,22H18.5V4.75A0.76 0.76 ,0,0,1,19.25,4h0a0.76 0.76 ,0,0,1,0.75 0.75 Z"
- android:strokeAlpha="0.3"
- android:strokeWidth="1" />
- <path
- android:fillAlpha="0.3"
- android:fillColor="@android:color/white"
- android:pathData="M15.33,22h-1.5V9.75A0.76 0.76 ,0,0,1,14.58,9h0a0.75 0.75 ,0,0,1,0.75 0.75 Z"
- android:strokeAlpha="0.3"
- android:strokeWidth="1" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M10.67,22H9.17V14.75A0.75 0.75 ,0,0,1,9.92,14h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M6,22H4.5V19.75A0.76 0.76 ,0,0,1,5.25,19h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
+ <group
+ android:translateX="4.000000"
+ android:translateY="3.000000" >
+ <path
+ android:fillAlpha="0.3"
+ android:fillColor="@android:color/white"
+ android:pathData="M16,18 L14.5,18 L14.5,0.75 C14.5053858,0.338037936 14.8380379,0.00538581231 15.25,0 L15.25,0 C15.6619621,0.00538581231 15.9946142,0.338037936 16,0.75 L16,18 Z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
+ <path
+ android:fillAlpha="0.3"
+ android:fillColor="@android:color/white"
+ android:pathData="M11.33,18 L9.83,18 L9.83,5.75 C9.83538581,5.33803794 10.1680379,5.00538581 10.58,5 L10.58,5 C10.9942136,5 11.33,5.33578644 11.33,5.75 L11.33,18 Z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M6.67,18 L5.17,18 L5.17,10.75 C5.17,10.3357864 5.50578644,10 5.92,10 L5.92,10 C6.33196206,10.0053858 6.66461419,10.3380379 6.67,10.75 L6.67,18 Z"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M2,18 L0.5,18 L0.5,15.75 C0.505385812,15.3380379 0.838037936,15.0053858 1.25,15 L1.25,15 C1.66196206,15.0053858 1.99461419,15.3380379 2,15.75 L2,18 Z"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml
index 9139bb449509..9b83fab35144 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml
@@ -19,19 +19,26 @@
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path
- android:fillAlpha="0.3"
- android:fillColor="@android:color/white"
- android:pathData="M20,22H18.5V4.75A0.76 0.76 ,0,0,1,19.25,4h0a0.76 0.76 ,0,0,1,0.75 0.75 Z"
- android:strokeAlpha="0.3"
- android:strokeWidth="1" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M15.33,22h-1.5V9.75A0.76 0.76 ,0,0,1,14.58,9h0a0.75 0.75 ,0,0,1,0.75 0.75 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M10.67,22H9.17V14.75A0.75 0.75 ,0,0,1,9.92,14h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M6,22H4.5V19.75A0.76 0.76 ,0,0,1,5.25,19h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
+ <group
+ android:translateX="4.000000"
+ android:translateY="3.000000" >
+ <path
+ android:fillAlpha="0.3"
+ android:fillColor="@android:color/white"
+ android:pathData="M16,18 L14.5,18 L14.5,0.75 C14.5053858,0.338037936 14.8380379,0.00538581231 15.25,0 L15.25,0 C15.6619621,0.00538581231 15.9946142,0.338037936 16,0.75 L16,18 Z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M11.33,18 L9.83,18 L9.83,5.75 C9.83538581,5.33803794 10.1680379,5.00538581 10.58,5 L10.58,5 C10.9942136,5 11.33,5.33578644 11.33,5.75 L11.33,18 Z"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M6.67,18 L5.17,18 L5.17,10.75 C5.17,10.3357864 5.50578644,10 5.92,10 L5.92,10 C6.33196206,10.0053858 6.66461419,10.3380379 6.67,10.75 L6.67,18 Z"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M2,18 L0.5,18 L0.5,15.75 C0.505385812,15.3380379 0.838037936,15.0053858 1.25,15 L1.25,15 C1.66196206,15.0053858 1.99461419,15.3380379 2,15.75 L2,18 Z"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml
index 2c8d70123f60..6f7f48d1ea96 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml
@@ -19,16 +19,24 @@
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M20,22H18.5V4.75A0.76 0.76 ,0,0,1,19.25,4h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M15.33,22h-1.5V9.75A0.76 0.76 ,0,0,1,14.58,9h0a0.75 0.75 ,0,0,1,0.75 0.75 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M10.67,22H9.17V14.75A0.75 0.75 ,0,0,1,9.92,14h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M6,22H4.5V19.75A0.76 0.76 ,0,0,1,5.25,19h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
+ <group
+ android:translateX="4.000000"
+ android:translateY="3.000000" >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M16,18 L14.5,18 L14.5,0.75 C14.5053858,0.338037936 14.8380379,0.00538581231 15.25,0 L15.25,0 C15.6619621,0.00538581231 15.9946142,0.338037936 16,0.75 L16,18 Z"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M11.33,18 L9.83,18 L9.83,5.75 C9.83538581,5.33803794 10.1680379,5.00538581 10.58,5 L10.58,5 C10.9942136,5 11.33,5.33578644 11.33,5.75 L11.33,18 Z"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M6.67,18 L5.17,18 L5.17,10.75 C5.17,10.3357864 5.50578644,10 5.92,10 L5.92,10 C6.33196206,10.0053858 6.66461419,10.3380379 6.67,10.75 L6.67,18 Z"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M2,18 L0.5,18 L0.5,15.75 C0.505385812,15.3380379 0.838037936,15.0053858 1.25,15 L1.25,15 C1.66196206,15.0053858 1.99461419,15.3380379 2,15.75 L2,18 Z"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_activity_recognition.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_activity_recognition.xml
index 5ad146eb21ac..cbd60d880fb2 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_activity_recognition.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_activity_recognition.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_calendar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_calendar.xml
index 781c0f8e8ea5..397050fd88f4 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_calendar.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_calendar.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_call_log.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_call_log.xml
index 126b70cff251..b56eec39334c 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_call_log.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_call_log.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_camera.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_camera.xml
index 70d4fcc945df..c8cb2e2cfc1f 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_camera.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_camera.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_contacts.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_contacts.xml
index 6da4b269d312..6124df86e931 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_contacts.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_contacts.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_location.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_location.xml
index d443a7484e5a..77ff42ad3e25 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_location.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_location.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_microphone.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_microphone.xml
index cdac2d8cadaa..06aa0cd3f238 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_microphone.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_microphone.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_phone_calls.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_phone_calls.xml
index 991f320add6c..3aea5f44902b 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_phone_calls.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_phone_calls.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sensors.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sensors.xml
index e4dee2adc467..4d70fc90850e 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sensors.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sensors.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml
index d15cfa3b1e3a..30ed8c92a198 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_storage.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_storage.xml
index 29d26736135b..52cd4c1c7153 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_storage.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_storage.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_visual.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_visual.xml
index 519136a28725..1c461791c868 100644
--- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_visual.xml
+++ b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_visual.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_setting.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_setting.xml
index 4c9b5d7b1c48..f1f0f507d4b9 100644
--- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_setting.xml
+++ b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_setting.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/textColorPrimary"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_back.xml
index 920ecb5deb70..a9e1ffe6d69e 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_back.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_back.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_saver_accent_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_saver_accent_24dp.xml
deleted file mode 100644
index 01d87ce25a2f..000000000000
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_saver_accent_24dp.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2019 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:height="24dp"
- android:tint="?android:attr/colorAccent"
- android:viewportHeight="24"
- android:viewportWidth="24"
- android:width="24dp" >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M9.75,13.75h1.5v1.5c0,0.41,0.34,0.75,0.75,0.75s0.75-0.34,0.75-0.75v-1.5h1.5c0.41,0,0.75-0.34,0.75-0.75 s-0.34-0.75-0.75-0.75h-1.5v-1.5c0-0.41-0.34-0.75-0.75-0.75s-0.75,0.34-0.75,0.75v1.5h-1.5C9.34,12.25,9,12.59,9,13 S9.34,13.75,9.75,13.75z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M6,19c0,1.66,1.34,3,3,3h6c1.66,0,3-1.34,3-3V7c0-1.66-1.34-3-3-3h-1c0-0.55-0.45-1-1-1h-2c-0.55,0-1,0.45-1,1H9 C7.34,4,6,5.34,6,7V19z M7.5,7c0-0.83,0.67-1.5,1.5-1.5h6c0.83,0,1.5,0.67,1.5,1.5v12c0,0.83-0.67,1.5-1.5,1.5H9 c-0.83,0-1.5-0.67-1.5-1.5V7z" />
-</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_bad_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_bad_24dp.xml
deleted file mode 100644
index a558337902c4..000000000000
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_bad_24dp.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2019 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:height="24dp"
- android:viewportHeight="24"
- android:viewportWidth="24"
- android:width="24dp" >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M9.75,13.75h1.5v1.5c0,0.41,0.34,0.75,0.75,0.75s0.75-0.34,0.75-0.75v-1.5h1.5c0.41,0,0.75-0.34,0.75-0.75 s-0.34-0.75-0.75-0.75h-1.5v-1.5c0-0.41-0.34-0.75-0.75-0.75s-0.75,0.34-0.75,0.75v1.5h-1.5C9.34,12.25,9,12.59,9,13 S9.34,13.75,9.75,13.75z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M6,19c0,1.66,1.34,3,3,3h6c1.66,0,3-1.34,3-3V7c0-1.66-1.34-3-3-3h-1c0-0.55-0.45-1-1-1h-2c-0.55,0-1,0.45-1,1H9 C7.34,4,6,5.34,6,7V19z M7.5,7c0-0.83,0.67-1.5,1.5-1.5h6c0.83,0,1.5,0.67,1.5,1.5v12c0,0.83-0.67,1.5-1.5,1.5H9 c-0.83,0-1.5-0.67-1.5-1.5V7z" />
-</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cellular_off.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cellular_off.xml
index 57fcebc91d2e..6df47564407e 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cellular_off.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cellular_off.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorAccent"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml
index 9569e68be613..82df1de6211c 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml
index 9dea4ca2ea28..b8e9845d5039 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="#757575"
+ android:tint="@*android:color/material_grey_600"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_data_saver.xml
index 77c0a158ebdd..ba3c5808d26c 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_data_saver.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_data_saver.xml
@@ -15,18 +15,19 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M12,7a0.76 0.76 ,0,0,0-0.75 0.75 v3.5H7.75a0.75 0.75 ,0,0,0,0,1.5h3.5v3.5a0.75 0.75 ,0,0,0,1.5,0v-3.5h3.5a0.75 0.75 ,0,0,0,0-1.5h-3.5V7.75A0.76 0.76 ,0,0,0,12,7Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M3.36,7A10,10,0,0,0,20.27,17.64L18.1,16.39A7.5,7.5,0,1,1,11.25,4.56V2.05A10,10,0,0,0,3.36,7Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M21,16.35a10,10,0,0,0-8.27-14.3V4.56a7.48,7.48,0,0,1,6.1,10.54Z" />
+ <group
+ android:translateX="2.000000"
+ android:translateY="2.000000" >
+ <path
+ android:fillColor="@android:color/white"
+ android:fillType="evenOdd"
+ android:pathData="M17.5000671,10 C17.5000671,6.198 14.6680671,3.064 11.0000671,2.574 L11.0000671,0.05 C16.0500671,0.55 20.0000671,4.82 20.0000671,10 C20.0000671,11.45 19.6800671,12.83 19.1200671,14.07 L16.9560671,12.796 C17.3040671,11.932 17.5000671,10.989 17.5000671,10 Z M10.0000671,17.5 C12.3900671,17.5 14.5140671,16.378 15.8870671,14.637 C16.6270671,15.073 18.0500671,15.91 18.0500671,15.91 C15.9790671,18.732 12.4710671,20.427 8.60106711,19.906 C4.22106711,19.316 0.68406711,15.774 0.0940671101,11.394 C-0.68693289,5.591 3.49306711,0.594 9.00006711,0.05 L9.00006711,2.574 C5.33206711,3.064 2.50006711,6.198 2.50006711,10 C2.50006711,14.142 5.85806711,17.5 10.0000671,17.5 Z M6,10 C6.00538581,9.58803794 6.33803794,9.25538581 6.75,9.25 L9.25,9.25 L9.25,6.75 C9.25,6.33578644 9.58578644,6 10,6 C10.4142136,6 10.75,6.33578644 10.75,6.75 L10.75,9.25 L13.25,9.25 C13.6642136,9.25 14,9.58578644 14,10 C14,10.4142136 13.6642136,10.75 13.25,10.75 L10.75,10.75 L10.75,13.25 C10.75,13.6642136 10.4142136,14 10,14 C9.58578644,14 9.25,13.6642136 9.25,13.25 L9.25,10.75 L6.75,10.75 C6.33803794,10.7446142 6.00538581,10.4119621 6,10 Z"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other.xml
index 17a191e2ad07..14898c465a31 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24"
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_eject_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_eject_24dp.xml
index 1c1fa4b7a5ee..abbab51e90e1 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_eject_24dp.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_eject_24dp.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_find_in_page_24px.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_find_in_page_24px.xml
new file mode 100644
index 000000000000..fd1a00dc738b
--- /dev/null
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_find_in_page_24px.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="24dp" >
+ <group
+ android:translateX="4.000100"
+ android:translateY="2.000100" >
+ <path
+ android:fillColor="@android:color/white"
+ android:fillType="evenOdd"
+ android:pathData="M7.9999,15.2499 C6.2079,15.2499 4.7499,13.7919 4.7499,11.9999 C4.7499,10.2079 6.2079,8.7499 7.9999,8.7499 C9.7919,8.7499 11.2499,10.2079 11.2499,11.9999 C11.2499,13.7919 9.7919,15.2499 7.9999,15.2499 L7.9999,15.2499 Z M1.4999,17.7779 L1.4999,2.2219 C1.4999,1.8239 1.8529,1.4999 2.2859,1.4999 L9.6769,1.4999 L14.4999,6.1889 L14.4999,17.5799 L11.8269,14.7879 C12.3999,14.0029 12.7499,13.0439 12.7499,11.9999 C12.7499,9.3809 10.6189,7.2499 7.9999,7.2499 C5.3809,7.2499 3.2499,9.3809 3.2499,11.9999 C3.2499,14.6189 5.3809,16.7499 7.9999,16.7499 C9.0329,16.7499 9.9829,16.4089 10.7649,15.8469 L13.3039,18.4999 L2.2859,18.4999 C1.8529,18.4999 1.4999,18.1759 1.4999,17.7779 L1.4999,17.7779 Z M10.2859,-0.0001 L2.2859,-0.0001 C1.0229,-0.0001 -0.0001,0.9949 -0.0001,2.2219 L-0.0001,17.7779 C-0.0001,19.0049 1.0229,19.9999 2.2859,19.9999 L13.7139,19.9999 C14.9769,19.9999 15.9999,19.0049 15.9999,17.7779 L15.9999,5.5559 L10.2859,-0.0001 Z"
+ android:strokeWidth="1" />
+ </group>
+</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help_actionbar.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help_actionbar.xml
index 8b388f2d8761..b980a2cce710 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help_actionbar.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help_actionbar.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_network_cell.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_network_cell.xml
index b6fa9fcf8294..1d72e5fa284f 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_network_cell.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_network_cell.xml
@@ -15,21 +15,30 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M20,22H18.5V4.75A0.76 0.76 ,0,0,1,19.25,4h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M15.33,22h-1.5V9.75A0.76 0.76 ,0,0,1,14.58,9h0a0.75 0.75 ,0,0,1,0.75 0.75 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M10.67,22H9.17V14.75A0.75 0.75 ,0,0,1,9.92,14h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M6,22H4.5V19.75A0.76 0.76 ,0,0,1,5.25,19h0a0.76 0.76 ,0,0,1,0.75 0.75 Z" />
+ <group
+ android:translateX="4.000000"
+ android:translateY="3.000000" >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M16,18 L14.5,18 L14.5,0.75 C14.5053858,0.338037936 14.8380379,0.00538581231 15.25,0 L15.25,0 C15.6619621,0.00538581231 15.9946142,0.338037936 16,0.75 L16,18 Z"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M11.33,18 L9.83,18 L9.83,5.75 C9.83538581,5.33803794 10.1680379,5.00538581 10.58,5 L10.58,5 C10.9942136,5 11.33,5.33578644 11.33,5.75 L11.33,18 Z"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M6.67,18 L5.17,18 L5.17,10.75 C5.17,10.3357864 5.50578644,10 5.92,10 L5.92,10 C6.33196206,10.0053858 6.66461419,10.3380379 6.67,10.75 L6.67,18 Z"
+ android:strokeWidth="1" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M2,18 L0.5,18 L0.5,15.75 C0.505385812,15.3380379 0.838037936,15.0053858 1.25,15 L1.25,15 C1.66196206,15.0053858 1.99461419,15.3380379 2,15.75 L2,18 Z"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml
index 2dc6545c0fe3..2a21776232b4 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_data_usage.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_data_usage.xml
index e48cc146a515..855e4bb2a39d 100644
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_data_usage.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_data_usage.xml
@@ -22,8 +22,7 @@
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M12,19.52a7.5,7.5,0,0,1-0.77-15V2.06A10,10,0,1,0,22,12.77h-2.5A7.52,7.52,0,0,1,12,19.52Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M19.48,11.27H22a10,10,0,0,0-9.23-9.22v2.5A7.51,7.51,0,0,1,19.48,11.27Z" />
+ android:fillType="evenOdd"
+ android:pathData="M19.5000671,12 C19.5000671,8.198 16.6680671,5.064 13.0000671,4.574 L13.0000671,2.05 C18.0500671,2.55 22.0000671,6.82 22.0000671,12 C22.0000671,13.45 21.6800671,14.83 21.1200671,16.07 L18.9560671,14.796 C19.3040671,13.932 19.5000671,12.989 19.5000671,12 Z M12.0000671,19.5 C14.3900671,19.5 16.5140671,18.378 17.8870671,16.637 C18.6270671,17.073 20.0500671,17.91 20.0500671,17.91 C17.9790671,20.732 14.4710671,22.427 10.6010671,21.906 C6.22106711,21.316 2.68406711,17.774 2.09406711,13.394 C1.31306711,7.591 5.49306711,2.594 11.0000671,2.05 L11.0000671,4.574 C7.33206711,5.064 4.50006711,8.198 4.50006711,12 C4.50006711,16.142 7.85806711,19.5 12.0000671,19.5 Z"
+ android:strokeWidth="1" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_language.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_language.xml
new file mode 100644
index 000000000000..2c83c3481ba4
--- /dev/null
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_language.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="24dp" >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,2C6.48,2,2,6.48,2,12c0,5.15,3.89,9.38,8.89,9.93c0.01,0.01,0.01,0.01,0.01,0.02l0.02-0.02C11.28,21.98,11.64,22,12,22 s0.72-0.02,1.08-0.06l0.02,0.02c0.01-0.01,0.01-0.01,0.01-0.02c5-0.55,8.89-4.79,8.89-9.93C22,6.48,17.52,2,12,2z M19.35,7.75 h-3.39c-0.39-1.35-0.97-2.67-1.73-3.94C16.41,4.4,18.24,5.84,19.35,7.75z M20.5,12c0,0.96-0.17,1.89-0.47,2.75h-3.69 c0.33-1.82,0.32-3.67-0.02-5.5h3.71C20.33,10.11,20.5,11.04,20.5,12z M12,20.5c-0.1,0-0.2-0.01-0.3-0.02 c-0.96-1.36-1.68-2.78-2.14-4.23h4.89c-0.47,1.45-1.18,2.87-2.14,4.23C12.2,20.49,12.1,20.5,12,20.5z M9.16,14.75 c-0.37-1.82-0.36-3.67,0.02-5.5h5.64c0.38,1.83,0.39,3.68,0.02,5.5H9.16z M3.5,12c0-0.96,0.17-1.89,0.47-2.75h3.71 c-0.34,1.83-0.35,3.68-0.02,5.5H3.97C3.67,13.89,3.5,12.96,3.5,12z M12,3.5c0.09,0,0.17,0.01,0.26,0.01 c0.96,1.37,1.68,2.79,2.16,4.24H9.58c0.48-1.45,1.2-2.87,2.16-4.24C11.83,3.51,11.91,3.5,12,3.5z M9.77,3.81 C9.01,5.08,8.43,6.4,8.04,7.75H4.65C5.76,5.84,7.59,4.4,9.77,3.81z M4.65,16.25h3.36c0.38,1.34,0.95,2.66,1.71,3.93 C7.56,19.58,5.75,18.15,4.65,16.25z M14.28,20.18c0.75-1.27,1.32-2.59,1.71-3.93h3.36C18.25,18.15,16.44,19.58,14.28,20.18z" />
+</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_bad_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_multiuser.xml
index db4d302eb240..d6d655871b74 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_bad_24dp.xml
+++ b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_multiuser.xml
@@ -16,13 +16,14 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M9.74,13.75h1.5v1.5c0,0.41,0.34,0.75,0.75,0.75s0.75-0.34,0.75-0.75v-1.5h1.5c0.41,0,0.75-0.34,0.75-0.75 s-0.34-0.75-0.75-0.75h-1.5v-1.5c0-0.41-0.34-0.75-0.75-0.75s-0.75,0.34-0.75,0.75v1.5h-1.5c-0.41,0-0.75,0.34-0.75,0.75 S9.33,13.75,9.74,13.75z" />
+ android:pathData="M8,8c0,2.21,1.79,4,4,4s4-1.79,4-4c0-2.21-1.79-4-4-4S8,5.79,8,8z M12,5.5c1.38,0,2.5,1.12,2.5,2.5 c0,1.38-1.12,2.5-2.5,2.5S9.5,9.38,9.5,8C9.5,6.62,10.62,5.5,12,5.5z" />
<path
android:fillColor="@android:color/white"
- android:pathData="M17,4h-3V3.49c0-0.55-0.45-1-1-1h-2c-0.55,0-1,0.45-1,1V4H7C6.45,4,6,4.45,6,5v16c0,0.55,0.45,1,1,1h10c0.55,0,1-0.45,1-1 V5C18,4.45,17.55,4,17,4z M16.5,20.5h-9v-15h9V20.5z" />
+ android:pathData="M20,20c0-3.99-4-6-8-6s-8,2.01-8,6H20z M12,15.5c2.57,0,5.3,0.95,6.2,3H5.8C6.7,16.45,9.43,15.5,12,15.5z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_wireless_white.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_wireless_white.xml
deleted file mode 100644
index fde996584f57..000000000000
--- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_wireless_white.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2019 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:height="24dp"
- android:viewportHeight="24"
- android:viewportWidth="24"
- android:width="24dp" >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M 12 17 C 12.8284271247 17 13.5 17.6715728753 13.5 18.5 C 13.5 19.3284271247 12.8284271247 20 12 20 C 11.1715728753 20 10.5 19.3284271247 10.5 18.5 C 10.5 17.6715728753 11.1715728753 17 12 17 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M19.42,11.84c-0.19,0-0.38-0.07-0.53-0.22C17.05,9.77,14.6,8.75,12,8.75s-5.05,1.02-6.89,2.86 c-0.29,0.29-0.77,0.29-1.06,0c-0.29-0.29-0.29-0.77,0-1.06C6.17,8.43,9,7.25,12,7.25s5.83,1.17,7.95,3.3 c0.29,0.29,0.29,0.77,0,1.06C19.8,11.76,19.61,11.84,19.42,11.84z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M22.61,8.65c-0.19,0-0.38-0.07-0.53-0.22C19.38,5.74,15.81,4.25,12,4.25S4.62,5.74,1.92,8.43c-0.29,0.29-0.77,0.29-1.06,0 s-0.29-0.77,0-1.06C3.84,4.39,7.79,2.75,12,2.75s8.16,1.64,11.14,4.61c0.29,0.29,0.29,0.77,0,1.06 C22.99,8.57,22.8,8.65,22.61,8.65z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M16.25,15c-0.19,0-0.38-0.07-0.53-0.22c-1-0.99-2.32-1.53-3.73-1.53s-2.73,0.54-3.73,1.53c-0.29,0.29-0.77,0.29-1.06-0.01 s-0.29-0.77,0.01-1.06c1.28-1.27,2.98-1.96,4.78-1.96s3.5,0.7,4.78,1.96c0.29,0.29,0.3,0.77,0.01,1.06 C16.64,14.93,16.45,15,16.25,15z" />
-</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_arrow_back.xml
index 920ecb5deb70..a9e1ffe6d69e 100644
--- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_arrow_back.xml
+++ b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_arrow_back.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
index dbd9b8e6d494..fae73a4c0e09 100644
--- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
+++ b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
@@ -20,7 +20,7 @@
android:viewportWidth="24"
android:width="24dp" >
<path
- android:fillColor="?android:attr/colorPrimary"
+ android:fillColor="?android:attr/colorBackgroundFloating"
android:pathData="M18.94,9.75L18.5,9.31V8.69V6c0-0.28-0.22-0.5-0.5-0.5h-2.69h-0.62l-0.44-0.44l-1.9-1.9 C12.23,3.04,12.08,3.02,12,3.02c-0.08,0-0.23,0.02-0.35,0.15l-1.9,1.9L9.31,5.5H8.69H6C5.72,5.5,5.5,5.72,5.5,6v2.69v0.62 L5.06,9.75l-1.9,1.9C3.04,11.77,3.02,11.92,3.02,12s0.02,0.23,0.15,0.35l1.9,1.9l0.44,0.44v0.62V18c0,0.28,0.22,0.5,0.5,0.5h2.69 h0.62l0.44,0.44l1.9,1.9c0.13,0.13,0.28,0.15,0.35,0.15c0.08,0,0.23-0.02,0.35-0.15l1.9-1.9l0.44-0.44h0.62H18 c0.28,0,0.5-0.22,0.5-0.5v-2.69v-0.62l0.44-0.44l1.9-1.9c0.13-0.13,0.15-0.28,0.15-0.35s-0.02-0.23-0.15-0.35L18.94,9.75z M12,17 c-2.76,0-5-2.24-5-5s2.24-5,5-5s5,2.24,5,5S14.76,17,12,17z" />
<path
android:fillColor="?android:attr/colorControlActivated"
diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_camera.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_camera.xml
index c4728eb3f389..77197a58a04a 100644
--- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_camera.xml
+++ b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_camera.xml
@@ -15,10 +15,10 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="24dp"
+ android:height="17dp"
android:viewportHeight="24"
android:viewportWidth="24"
- android:width="24dp" >
+ android:width="17dp" >
<path
android:fillColor="@android:color/white"
android:pathData="M22,8c0-1.66-1.34-3-3-3h-2l-2-2H9L7,5H5C3.34,5,2,6.34,2,8v13h20V8z M20.5,19.5h-17V8c0-0.83,0.67-1.5,1.5-1.5h14 c0.83,0,1.5,0.67,1.5,1.5V19.5z" />
diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver.xml
index 938d2412bef8..cdc3bfbd3d5f 100644
--- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver.xml
+++ b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver.xml
@@ -15,17 +15,17 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="18dp "
+ android:height="18dp"
android:viewportHeight="24"
android:viewportWidth="24"
- android:width="18dp " >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M12,7a0.76 0.76 ,0,0,0-0.75 0.75 v3.5H7.75a0.75 0.75 ,0,0,0,0,1.5h3.5v3.5a0.75 0.75 ,0,0,0,1.5,0v-3.5h3.5a0.75 0.75 ,0,0,0,0-1.5h-3.5V7.75A0.76 0.76 ,0,0,0,12,7Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M3.36,7A10,10,0,0,0,20.27,17.64L18.1,16.39A7.5,7.5,0,1,1,11.25,4.56V2.05A10,10,0,0,0,3.36,7Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M21,16.35a10,10,0,0,0-8.27-14.3V4.56a7.48,7.48,0,0,1,6.1,10.54Z" />
+ android:width="18dp" >
+ <group
+ android:translateX="2.000000"
+ android:translateY="2.000000" >
+ <path
+ android:fillColor="@android:color/white"
+ android:fillType="evenOdd"
+ android:pathData="M17.5000671,10 C17.5000671,6.198 14.6680671,3.064 11.0000671,2.574 L11.0000671,0.05 C16.0500671,0.55 20.0000671,4.82 20.0000671,10 C20.0000671,11.45 19.6800671,12.83 19.1200671,14.07 L16.9560671,12.796 C17.3040671,11.932 17.5000671,10.989 17.5000671,10 Z M10.0000671,17.5 C12.3900671,17.5 14.5140671,16.378 15.8870671,14.637 C16.6270671,15.073 18.0500671,15.91 18.0500671,15.91 C15.9790671,18.732 12.4710671,20.427 8.60106711,19.906 C4.22106711,19.316 0.68406711,15.774 0.0940671101,11.394 C-0.68693289,5.591 3.49306711,0.594 9.00006711,0.05 L9.00006711,2.574 C5.33206711,3.064 2.50006711,6.198 2.50006711,10 C2.50006711,14.142 5.85806711,17.5 10.0000671,17.5 Z M6,10 C6.00538581,9.58803794 6.33803794,9.25538581 6.75,9.25 L9.25,9.25 L9.25,6.75 C9.25,6.33578644 9.58578644,6 10,6 C10.4142136,6 10.75,6.33578644 10.75,6.75 L10.75,9.25 L13.25,9.25 C13.6642136,9.25 14,9.58578644 14,10 C14,10.4142136 13.6642136,10.75 13.25,10.75 L10.75,10.75 L10.75,13.25 C10.75,13.6642136 10.4142136,14 10,14 C9.58578644,14 9.25,13.6642136 9.25,13.25 L9.25,10.75 L6.75,10.75 C6.33803794,10.7446142 6.00538581,10.4119621 6,10 Z"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver_off.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver_off.xml
index 3d620a18bb1a..7dab949f9da5 100644
--- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver_off.xml
+++ b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver_off.xml
@@ -21,8 +21,7 @@
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M3.36,7A10,10,0,0,0,20.27,17.64L18.1,16.39A7.5,7.5,0,1,1,11.25,4.56V2.05A10,10,0,0,0,3.36,7Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M21,16.35a10,10,0,0,0-8.27-14.3V4.56a7.48,7.48,0,0,1,6.1,10.54Z" />
+ android:fillType="evenOdd"
+ android:pathData="M19.5000671,12 C19.5000671,8.198 16.6680671,5.064 13.0000671,4.574 L13.0000671,2.05 C18.0500671,2.55 22.0000671,6.82 22.0000671,12 C22.0000671,13.45 21.6800671,14.83 21.1200671,16.07 L18.9560671,14.796 C19.3040671,13.932 19.5000671,12.989 19.5000671,12 Z M12.0000671,19.5 C14.3900671,19.5 16.5140671,18.378 17.8870671,16.637 C18.6270671,17.073 20.0500671,17.91 20.0500671,17.91 C17.9790671,20.732 14.4710671,22.427 10.6010671,21.906 C6.22106711,21.316 2.68406711,17.774 2.09406711,13.394 C1.31306711,7.591 5.49306711,2.594 11.0000671,2.05 L11.0000671,4.574 C7.33206711,5.064 4.50006711,8.198 4.50006711,12 C4.50006711,16.142 7.85806711,19.5 12.0000671,19.5 Z"
+ android:strokeWidth="1" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml
index fc38ed431759..c7a0266cbfca 100644
--- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml
+++ b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml
index 659b4e164415..9bdc79a23008 100644
--- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml
+++ b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_delete_accent.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_battery_80_24dp.xml
index e65987e1d5f6..eb8550fb9f44 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_delete_accent.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_battery_80_24dp.xml
@@ -16,14 +16,16 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="?android:attr/colorAccent"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
<path
+ android:fillAlpha="0.3"
android:fillColor="@android:color/white"
- android:pathData="M18,4h-2.5l-0.71-0.71C14.61,3.11,14.35,3,14.09,3H9.9C9.64,3,9.38,3.11,9.2,3.29L8.49,4h-2.5c-0.55,0-1,0.45-1,1 s0.45,1,1,1h12c0.55,0,1-0.45,1-1C19,4.45,18.55,4,18,4z" />
+ android:pathData="M17,5.33C17,4.6,16.4,4,15.67,4H14V2h-4v2H8.33C7.6,4,7,4.6,7,5.33V9h10V5.33z"
+ android:strokeAlpha="0.3"
+ android:strokeWidth="1" />
<path
android:fillColor="@android:color/white"
- android:pathData="M6,19c0,1.1,0.9,2,2,2h8c1.1,0,2-0.9,2-2V7H6V19z" />
+ android:pathData="M7,9v11.67C7,21.4,7.6,22,8.33,22h7.33C16.4,22,17,21.4,17,20.67V9H7z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_misc_hid.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_misc_hid.xml
index b86d9ba1849b..6b9735c1acfb 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_misc_hid.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_misc_hid.xml
@@ -20,7 +20,6 @@
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path android:pathData="M0,0h24v24H0V0z" />
<path
android:fillColor="@android:color/white"
android:pathData="M15,7.09V3c0-0.55-0.45-1-1-1h-4C9.45,2,9,2.45,9,3v4.09c0,0.27,0.11,0.52,0.29,0.71l2,2c0.39,0.39,1.02,0.39,1.41,0l2-2 C14.89,7.61,15,7.35,15,7.09z M7.09,9H3c-0.55,0-1,0.45-1,1v4c0,0.55,0.45,1,1,1h4.09c0.27,0,0.52-0.11,0.71-0.29l2-2 c0.39-0.39,0.39-1.02,0-1.41l-2-2C7.61,9.11,7.35,9,7.09,9z M9,16.91V21c0,0.55,0.45,1,1,1h4c0.55,0,1-0.45,1-1v-4.09 c0-0.27-0.11-0.52-0.29-0.71l-2-2c-0.39-0.39-1.02-0.39-1.41,0l-2,2C9.11,16.39,9,16.65,9,16.91z M16.21,9.29l-2,2 c-0.39,0.39-0.39,1.02,0,1.41l2,2c0.19,0.19,0.44,0.29,0.71,0.29H21c0.55,0,1-0.45,1-1v-4c0-0.55-0.45-1-1-1h-4.09 C16.65,9,16.39,9.11,16.21,9.29z" />
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_file_copy.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_file_copy.xml
index 6245147c538b..e479f506bac5 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_file_copy.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_file_copy.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="#FF737373"
+ android:tint="@*android:color/material_grey_600"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock.xml
index 07c81ddf563c..b2fa85f9fd16 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock.xml
@@ -16,7 +16,6 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="32dp"
- android:tint="?android:attr/textColor"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="32dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_open.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_open.xml
index 698ce668c1e9..13bfbf901adb 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_open.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_open.xml
@@ -16,7 +16,6 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="32dp"
- android:tint="?android:attr/textColor"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="32dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lockscreen_ime.xml
index 4cd05f3374c9..16541e614965 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lockscreen_ime.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lockscreen_ime.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_mode_edit.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_mode_edit.xml
index bf8df45826ec..bb3c043f68f5 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_mode_edit.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_mode_edit.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_wireless_white.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_notifications_alerted.xml
index 03e142e2be35..0847a3564998 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_wireless_white.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_notifications_alerted.xml
@@ -21,11 +21,14 @@
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M11.29,19.29c0.39,0.39,1.03,0.4,1.42,0L14,18c0.47-0.47,0.38-1.28-0.22-1.58C13.25,16.15,12.64,16,12,16 c-0.64,0-1.24,0.15-1.77,0.41c-0.59,0.29-0.69,1.11-0.22,1.58L11.29,19.29z" />
+ android:pathData="M4.12,9.67C4.42,7.73,5.38,6,6.77,4.73C7.19,4.35,7.2,3.7,6.8,3.3c-0.39-0.39-1-0.39-1.4-0.03 C3.7,4.84,2.52,6.96,2.15,9.34c-0.1,0.61,0.37,1.16,0.99,1.16C3.63,10.5,4.04,10.15,4.12,9.67z" />
<path
android:fillColor="@android:color/white"
- android:pathData="M17.6,14.39l0.71-0.71c0.42-0.42,0.39-1.12-0.08-1.5C16.52,10.82,14.35,10,12,10c-2.34,0-4.5,0.81-6.21,2.17 c-0.47,0.37-0.51,1.07-0.09,1.49l0.71,0.71c0.35,0.36,0.92,0.39,1.32,0.08C8.91,13.54,10.39,13,12,13c1.61,0,3.1,0.55,4.29,1.47 C16.69,14.78,17.25,14.75,17.6,14.39z" />
+ android:pathData="M18.6,3.28c-0.4-0.37-1.02-0.36-1.4,0.02c-0.4,0.4-0.38,1.04,0.03,1.42c1.38,1.27,2.35,3,2.65,4.94 c0.08,0.49,0.5,0.84,0.98,0.84c0.61,0,1.09-0.55,0.99-1.16C21.47,6.96,20.29,4.84,18.6,3.28z" />
<path
android:fillColor="@android:color/white"
- android:pathData="M21.83,10.16l0.71-0.71c0.42-0.42,0.38-1.09-0.06-1.48C19.68,5.5,16.01,4,12,4C8.01,4,4.36,5.49,1.56,7.94 C1.12,8.33,1.08,9,1.49,9.41l0.71,0.71c0.37,0.37,0.96,0.4,1.35,0.06C5.81,8.2,8.77,7,12,7c3.25,0,6.22,1.22,8.49,3.22 C20.88,10.56,21.47,10.53,21.83,10.16z" />
+ android:pathData="M12,22c1.1,0,2-0.9,2-2h-4C10,21.1,10.9,22,12,22z" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M18,16v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-0.83-0.67-1.5-1.5-1.5S10.5,3.17,10.5,4v0.68C7.63,5.36,6,7.92,6,11v5 l-2.15,2.15c-0.19,0.2-0.19,0.51,0.01,0.71C3.95,18.95,4.07,19,4.2,19h15.6c0.45,0,0.67-0.54,0.35-0.85L18,16z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_phone.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_phone.xml
index de348159cc6c..adf521c853ae 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_phone.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_phone.xml
@@ -15,7 +15,9 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_battery_saver.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_battery_saver.xml
index 22e183c694d5..4f7d96381e6e 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_battery_saver.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_battery_saver.xml
@@ -15,7 +15,9 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_bluetooth.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_bluetooth.xml
index 09643e606350..58800c8d29be 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_bluetooth.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_bluetooth.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_activity_recognition.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_activity_recognition.xml
index e1849bbee061..67d28c60b7a0 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_activity_recognition.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_activity_recognition.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_calendar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_calendar.xml
index 16359b04178d..0144ba2fbf36 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_calendar.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_calendar.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_call_log.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_call_log.xml
index 8d70f484e731..590ced09e4af 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_call_log.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_call_log.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_camera.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_camera.xml
index 03075a688846..b063e2bb6985 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_camera.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_camera.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_contacts.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_contacts.xml
index 50cd6331e42a..54cfeec0355e 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_contacts.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_contacts.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_location.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_location.xml
index ebd9e61d8efe..3815921846b7 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_location.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_location.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_microphone.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_microphone.xml
index 39acc9ca82a1..e6493bc95ff2 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_microphone.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_microphone.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_phone_calls.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_phone_calls.xml
index 2b6e32a59cab..ae84541e0801 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_phone_calls.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_phone_calls.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sensors.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sensors.xml
index 2128e79b350a..88f0c541caf5 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sensors.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sensors.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml
index eef9e62f15b0..7a320e0c81e2 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_storage.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_storage.xml
index 3a863a342354..0ad7e6d3484b 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_storage.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_storage.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_visual.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_visual.xml
index 57c7ae9f6efa..d5bdb872825e 100644
--- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_visual.xml
+++ b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_visual.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_setting.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_setting.xml
index 30e866095675..b3625ac9cf15 100644
--- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_setting.xml
+++ b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_setting.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/textColorPrimary"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_back.xml
index b4f2a9de63a6..deb77c820ecb 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_back.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_back.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cellular_off.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cellular_off.xml
index 32ce0f5ea249..466ae50cb46a 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cellular_off.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cellular_off.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorAccent"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml
index e1a8b1feb22b..b5b514a57e9d 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml
index be607a3c4d33..e479f506bac5 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="#757575"
+ android:tint="@*android:color/material_grey_600"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_data_saver.xml
index 2718efadfe59..5c85eb36b41c 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_data_saver.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_data_saver.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other.xml
index 21368fe5782b..a451ef831e78 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24"
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_eject_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_eject_24dp.xml
index 5a9511a5cfbe..7af92461d3f9 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_eject_24dp.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_eject_24dp.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_find_in_page_24px.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_find_in_page_24px.xml
new file mode 100644
index 000000000000..dd35dae227b0
--- /dev/null
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_find_in_page_24px.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="24dp" >
+ <path android:pathData="M0 0h24v24H0z" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M20 19.59V8l-6-6H6c-1.1 0-1.99 0.9 -1.99 2L4 20c0 1.1 0.89 2 1.99 2H18c0.45 0 0.85-0.15 1.19-0.4l-4.43-4.43c-0.8 0.52 -1.74 0.83 -2.76 0.83 -2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5c0 1.02-0.31 1.96-0.83 2.75L20 19.59zM9 13c0 1.66 1.34 3 3 3s3-1.34 3-3-1.34-3-3-3-3 1.34-3 3z" />
+</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help_actionbar.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help_actionbar.xml
index ed6d553f5f37..4d6d9dd0a9e5 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help_actionbar.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help_actionbar.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_network_cell.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_network_cell.xml
index 2e9433b08220..d62758e51976 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_network_cell.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_network_cell.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml
index 9944bb5b4f69..c6cd0159854e 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_language.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_language.xml
new file mode 100644
index 000000000000..e23b9b6ebf58
--- /dev/null
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_language.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="24dp" >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M11.99,2C6.47,2,2,6.48,2,12c0,5.52,4.47,10,9.99,10C17.52,22,22,17.52,22,12C22,6.48,17.52,2,11.99,2z M18.92,8h-2.95 c-0.31-1.24-0.78-2.43-1.38-3.56C16.41,5.07,17.95,6.33,18.92,8z M12,4.04c0.83,1.2,1.48,2.53,1.91,3.96h-3.82 C10.52,6.57,11.17,5.24,12,4.04z M4.26,14C4.1,13.36,4,12.69,4,12s0.1-1.36,0.26-2h3.38c-0.08,0.66-0.14,1.32-0.14,2 s0.06,1.34,0.14,2H4.26z M5.08,16h2.95c0.32,1.25,0.78,2.45,1.38,3.56C7.58,18.94,6.05,17.67,5.08,16z M8.03,8H5.08 c0.97-1.67,2.5-2.94,4.33-3.56C8.81,5.57,8.34,6.76,8.03,8z M12,19.96c-0.83-1.2-1.48-2.53-1.91-3.96h3.82 C13.48,17.43,12.83,18.76,12,19.96z M14.34,14H9.66c-0.09-0.66-0.16-1.32-0.16-2s0.07-1.35,0.16-2h4.68c0.09,0.65,0.16,1.32,0.16,2 S14.43,13.34,14.34,14z M14.59,19.56c0.6-1.11,1.06-2.31,1.38-3.56h2.95C17.95,17.67,16.41,18.93,14.59,19.56z M16.36,14 c0.08-0.66,0.14-1.32,0.14-2s-0.06-1.34-0.14-2h3.38C19.9,10.64,20,11.31,20,12s-0.1,1.36-0.26,2H16.36z" />
+</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_multiuser.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_multiuser.xml
new file mode 100644
index 000000000000..accc694238d9
--- /dev/null
+++ b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_multiuser.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="24dp" >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M 12 4 C 14.2091389993 4 16 5.79086100068 16 8 C 16 10.2091389993 14.2091389993 12 12 12 C 9.79086100068 12 8 10.2091389993 8 8 C 8 5.79086100068 9.79086100068 4 12 4 Z" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,13.5c-2.67,0-8,1.34-8,4v2C4,19.77,4.22,20,4.5,20h15c0.27,0,0.5-0.23,0.5-0.5v-2C20,14.84,14.67,13.5,12,13.5z" />
+</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_arrow_back.xml
index b4f2a9de63a6..deb77c820ecb 100644
--- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_arrow_back.xml
+++ b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_arrow_back.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
index e82e9a3ee185..1b881eac9fc2 100644
--- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
+++ b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
@@ -23,6 +23,6 @@
android:fillColor="?android:attr/colorControlActivated"
android:pathData="M4,15.3V19c0,0.55,0.45,1,1,1h3.69l2.6,2.6c0.39,0.39,1.02,0.39,1.41,0l2.6-2.6H19c0.55,0,1-0.45,1-1v-3.69l2.6-2.6 c0.39-0.39,0.39-1.02,0-1.41L20,8.69V5c0-0.55-0.45-1-1-1h-3.69l-2.6-2.6c-0.39-0.39-1.02-0.39-1.41,0L8.69,4H5C4.45,4,4,4.45,4,5 v3.69l-2.6,2.6c-0.39,0.39-0.39,1.02,0,1.41L4,15.3z M12,7c2.76,0,5,2.24,5,5s-2.24,5-5,5s-5-2.24-5-5S9.24,7,12,7z" />
<path
- android:fillColor="?android:attr/colorPrimary"
+ android:fillColor="?android:attr/colorBackgroundFloating"
android:pathData="M 12 7 C 14.7614237492 7 17 9.23857625085 17 12 C 17 14.7614237492 14.7614237492 17 12 17 C 9.23857625085 17 7 14.7614237492 7 12 C 7 9.23857625085 9.23857625085 7 12 7 Z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_camera.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_camera.xml
index ae3e7e2d60c6..fac551cf4a63 100644
--- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_camera.xml
+++ b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_camera.xml
@@ -15,10 +15,10 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="24dp"
+ android:height="17dp"
android:viewportHeight="24"
android:viewportWidth="24"
- android:width="24dp" >
+ android:width="17dp" >
<path
android:fillColor="@android:color/white"
android:pathData="M 12 8.8 C 13.7673111995 8.8 15.2 10.2326888005 15.2 12 C 15.2 13.7673111995 13.7673111995 15.2 12 15.2 C 10.2326888005 15.2 8.8 13.7673111995 8.8 12 C 8.8 10.2326888005 10.2326888005 8.8 12 8.8 Z" />
diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected.xml
index f5056f2a1f12..bbe2cff62720 100644
--- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected.xml
+++ b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected.xml
@@ -15,10 +15,10 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="17dp"
+ android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24"
- android:width="17dp" >
+ android:width="24dp" >
<path
android:fillColor="@android:color/white"
android:pathData="M2.07,10.05C1.5,10,1.02,10.45,1,11.03c-0.01,0.52,0.34,0.96,0.85,1.01c4.26,0.43,7.68,3.82,8.1,8.08 C10,20.62,10.43,21,10.94,21c0.59,0,1.06-0.51,1-1.1C11.42,14.69,7.28,10.56,2.07,10.05z" />
diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver.xml
index 3d4cf5e88f07..28b8ba1bccfc 100644
--- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver.xml
+++ b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver.xml
@@ -15,10 +15,10 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="18dp "
+ android:height="18dp"
android:viewportHeight="24"
android:viewportWidth="24"
- android:width="18dp " >
+ android:width="18dp" >
<path
android:fillColor="@android:color/white"
android:pathData="M11,11H9c-0.55,0-1,0.45-1,1s0.45,1,1,1h2v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2h2c0.55,0,1-0.45,1-1s-0.45-1-1-1h-2V9 c0-0.55-0.45-1-1-1s-1,0.45-1,1V11z" />
diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml
index f661673e1fea..59a18bad6c66 100644
--- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml
+++ b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml
index 8640a7950672..e498f803f687 100644
--- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml
+++ b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_saver_accent_24dp.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_battery_80_24dp.xml
index 4ddeae66401c..c19ca31d41b2 100644
--- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_saver_accent_24dp.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_battery_80_24dp.xml
@@ -16,11 +16,10 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="?android:attr/colorAccent"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M10,2v2H8.33C7.6,4,7,4.6,7,5.33v15.33C7,21.4,7.6,22,8.33,22h7.33C16.4,22,17,21.4,17,20.67V5.33C17,4.6,16.4,4,15.67,4 H14V2H10z M15,13c0,0.55-0.45,1-1,1h-1v1c0,0.55-0.45,1-1,1s-1-0.45-1-1v-1h-1c-0.55,0-1-0.45-1-1s0.45-1,1-1h1v-1 c0-0.55,0.45-1,1-1s1,0.45,1,1v1h1C14.55,12,15,12.45,15,13z" />
+ android:pathData="M13,2.49h-2c-0.55,0-1,0.45-1,1V4H7C6.45,4,6,4.45,6,5v16c0,0.55,0.45,1,1,1h10c0.55,0,1-0.45,1-1V5c0-0.55-0.45-1-1-1h-3 V3.49C14,2.94,13.55,2.49,13,2.49z M16.5,9.01h-9V5.5h9V9.01z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_file_copy.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_file_copy.xml
index 97945f00395e..1feaab1663c1 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_file_copy.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_file_copy.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="#FF737373"
+ android:tint="@*android:color/material_grey_600"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock.xml
index ac8e4781b904..d0b85e70920d 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock.xml
@@ -16,7 +16,6 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="32dp"
- android:tint="?android:attr/textColor"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="32dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_open.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_open.xml
index 345d6b181b92..6f19afe7c484 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_open.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_open.xml
@@ -16,7 +16,6 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="32dp"
- android:tint="?android:attr/textColor"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="32dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lockscreen_ime.xml
index 16f0868987fb..fae8445a0a42 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lockscreen_ime.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lockscreen_ime.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_mode_edit.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_mode_edit.xml
index 5db3b12ac1dd..c44a8d6fb9c5 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_mode_edit.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_mode_edit.xml
@@ -16,10 +16,17 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M20.08,5.08l-1.17-1.17c-0.39-0.39-0.9-0.58-1.41-0.58c-0.51,0-1.02,0.2-1.41,0.59L3.29,16.71C3.11,16.89,3,17.15,3,17.41 l0,2.59c0,0.55,0.45,1,1,1c0,0,0,0,0,0L6.59,21c0.26,0,0.52-0.11,0.71-0.29l10.68-10.68l0,0l1.06-1.06l0,0l1.05-1.06 C20.87,7.13,20.87,5.86,20.08,5.08z M6.38,19.5l-1.88,0l0-1.88L15.03,7.09l1.88,1.88L6.38,19.5z M19.02,6.85l-1.06,1.06l-1.88-1.88 l1.05-1.05c0.13-0.13,0.28-0.15,0.35-0.15c0.08,0,0.23,0.02,0.35,0.15l1.17,1.17c0.13,0.13,0.15,0.28,0.15,0.35 C19.17,6.57,19.15,6.72,19.02,6.85z" />
+ <group
+ android:translateX="3.000000"
+ android:translateY="3.000000" >
+ <path
+ android:fillColor="@android:color/white"
+ android:fillType="evenOdd"
+ android:pathData="M14.971,4.992 L13.092,3.115 L14.499,1.707 L16.38,3.583 L14.971,4.992 Z M3.38,16.588 L1.501,16.592 L1.502,14.708 L12.031,4.176 L13.91,6.054 L3.38,16.588 Z M17.794,2.874 L15.205,0.292 C15.01,0.097 14.755,0 14.499,0 C14.243,0 13.987,0.098 13.792,0.293 L0.295,13.794 C0.108,13.981 0.002,14.236 0.002,14.5 L-1.42108547e-14,17.594 C-1.42108547e-14,17.87 0.224,18.094 0.5,18.094 L0.501,18.094 L3.589,18.088 C3.854,18.087 4.107,17.982 4.294,17.795 L17.795,4.289 C18.185,3.898 18.185,3.264 17.794,2.874 L17.794,2.874 Z"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_delete_accent.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_notifications_alerted.xml
index d30eb7c0f098..752dab5082a4 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_delete_accent.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_notifications_alerted.xml
@@ -16,17 +16,19 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="?android:attr/colorAccent"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M20,4h-1h-4c0-0.55-0.45-1-1-1h-4C9.45,3,9,3.45,9,4H5H4C3.59,4,3.25,4.34,3.25,4.75S3.59,5.5,4,5.5h1V18 c0,1.66,1.34,3,3,3h8c1.66,0,3-1.34,3-3V5.5h1c0.41,0,0.75-0.34,0.75-0.75S20.41,4,20,4z M17.5,18c0,0.83-0.67,1.5-1.5,1.5H8 c-0.83,0-1.5-0.67-1.5-1.5V5.5h11V18z" />
+ android:pathData="M14,20h-4c0,1.1,0.9,2,2,2S14,21.1,14,20z" />
<path
android:fillColor="@android:color/white"
- android:pathData="M14.25,8c-0.41,0-0.75,0.34-0.75,0.75v7.5c0,0.41,0.34,0.75,0.75,0.75S15,16.66,15,16.25v-7.5C15,8.34,14.66,8,14.25,8z" />
+ android:pathData="M12,2.5c-0.69,0-1.25,0.56-1.25,1.25v0.77C8.04,5.11,6,7.51,6,10.4V17H4.75C4.34,17,4,17.34,4,17.75s0.34,0.75,0.75,0.75 h14.5c0.41,0,0.75-0.34,0.75-0.75S19.66,17,19.25,17H18v-6.6c0-2.88-2.04-5.29-4.75-5.87V3.75C13.25,3.06,12.69,2.5,12,2.5z M16.5,10.4V17h-9v-6.6c0-2.48,2.02-4.5,4.5-4.5S16.5,7.91,16.5,10.4z" />
<path
android:fillColor="@android:color/white"
- android:pathData="M9.75,8C9.34,8,9,8.34,9,8.75v7.5C9,16.66,9.34,17,9.75,17s0.75-0.34,0.75-0.75v-7.5C10.5,8.34,10.16,8,9.75,8z" />
+ android:pathData="M5.85,3.01C3.72,4.82,2.5,7.46,2.5,10.25C2.5,10.66,2.84,11,3.25,11S4,10.66,4,10.25c0-2.35,1.03-4.57,2.82-6.1 C7.14,3.88,7.17,3.41,6.91,3.1C6.64,2.78,6.17,2.74,5.85,3.01z" />
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M18.15,3.01c-0.32-0.27-0.79-0.23-1.06,0.08c-0.27,0.32-0.23,0.79,0.08,1.06C18.97,5.68,20,7.9,20,10.25 c0,0.41,0.34,0.75,0.75,0.75s0.75-0.34,0.75-0.75C21.5,7.46,20.28,4.82,18.15,3.01z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_phone.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_phone.xml
index 21153928240f..c6e8f57f5ec1 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_phone.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_phone.xml
@@ -15,7 +15,9 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_battery_saver.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_battery_saver.xml
index db4d302eb240..ca37d581332b 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_battery_saver.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_battery_saver.xml
@@ -15,7 +15,9 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_bluetooth.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_bluetooth.xml
index 3d270b3fce42..5e1a5f20c6d6 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_bluetooth.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_bluetooth.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_activity_recognition.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_activity_recognition.xml
index b470603cddd0..669704775311 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_activity_recognition.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_activity_recognition.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_calendar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_calendar.xml
index e9dddd071481..4e61af0dbf34 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_calendar.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_calendar.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_call_log.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_call_log.xml
index 2d6a6b916789..8d3c43c3d216 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_call_log.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_call_log.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_camera.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_camera.xml
index e3498c380d11..7d42ff758b8c 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_camera.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_camera.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_contacts.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_contacts.xml
index 987ed184a826..5d68581757ba 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_contacts.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_contacts.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_location.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_location.xml
index 2da48d857617..5dce9cb985b3 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_location.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_location.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_microphone.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_microphone.xml
index ddf14df872f2..b45e8322628d 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_microphone.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_microphone.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_phone_calls.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_phone_calls.xml
index 516ee36d7f48..fe45a97a3287 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_phone_calls.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_phone_calls.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sensors.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sensors.xml
index 65a193d98b32..c84cb0e99bde 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sensors.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sensors.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml
index b5509d12a059..96b70f7fbfbd 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_storage.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_storage.xml
index 9b17e55f0be1..9240bb48b35e 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_storage.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_storage.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_visual.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_visual.xml
index 350bb4b80c85..2cd1bc0f17b0 100644
--- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_visual.xml
+++ b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_visual.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="@android:color/black"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_setting.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_setting.xml
index 86cb525e203a..70621ae19749 100644
--- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_setting.xml
+++ b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_setting.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/textColorPrimary"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_back.xml
index 03f06e997e26..34f79b4478c9 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_back.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_back.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cellular_off.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cellular_off.xml
index 710387ca88d5..34d40ec813e4 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cellular_off.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cellular_off.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorAccent"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml
index 7df03ad48705..1e86983cd551 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml
index b3f642191ca3..1feaab1663c1 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml
@@ -16,7 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="#757575"
+ android:tint="@*android:color/material_grey_600"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_data_saver.xml
index 9acb62da7d43..ba3c5808d26c 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_data_saver.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_data_saver.xml
@@ -15,18 +15,19 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M3.36,7A10,10,0,0,0,20.27,17.64L18.1,16.39A7.5,7.5,0,1,1,11.25,4.56V2.05A10,10,0,0,0,3.36,7Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M21,16.35a10,10,0,0,0-8.27-14.3V4.56a7.48,7.48,0,0,1,6.1,10.54Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M8,12a0.76 0.76 ,0,0,0,0.75 0.75 h2.5v2.5a0.75 0.75 ,0,0,0,1.5,0v-2.5h2.5a0.75 0.75 ,0,0,0,0-1.5h-2.5V8.75a0.75 0.75 ,0,0,0-1.5,0v2.5H8.75A0.76 0.76 ,0,0,0,8,12Z" />
+ <group
+ android:translateX="2.000000"
+ android:translateY="2.000000" >
+ <path
+ android:fillColor="@android:color/white"
+ android:fillType="evenOdd"
+ android:pathData="M17.5000671,10 C17.5000671,6.198 14.6680671,3.064 11.0000671,2.574 L11.0000671,0.05 C16.0500671,0.55 20.0000671,4.82 20.0000671,10 C20.0000671,11.45 19.6800671,12.83 19.1200671,14.07 L16.9560671,12.796 C17.3040671,11.932 17.5000671,10.989 17.5000671,10 Z M10.0000671,17.5 C12.3900671,17.5 14.5140671,16.378 15.8870671,14.637 C16.6270671,15.073 18.0500671,15.91 18.0500671,15.91 C15.9790671,18.732 12.4710671,20.427 8.60106711,19.906 C4.22106711,19.316 0.68406711,15.774 0.0940671101,11.394 C-0.68693289,5.591 3.49306711,0.594 9.00006711,0.05 L9.00006711,2.574 C5.33206711,3.064 2.50006711,6.198 2.50006711,10 C2.50006711,14.142 5.85806711,17.5 10.0000671,17.5 Z M6,10 C6.00538581,9.58803794 6.33803794,9.25538581 6.75,9.25 L9.25,9.25 L9.25,6.75 C9.25,6.33578644 9.58578644,6 10,6 C10.4142136,6 10.75,6.33578644 10.75,6.75 L10.75,9.25 L13.25,9.25 C13.6642136,9.25 14,9.58578644 14,10 C14,10.4142136 13.6642136,10.75 13.25,10.75 L10.75,10.75 L10.75,13.25 C10.75,13.6642136 10.4142136,14 10,14 C9.58578644,14 9.25,13.6642136 9.25,13.25 L9.25,10.75 L6.75,10.75 C6.33803794,10.7446142 6.00538581,10.4119621 6,10 Z"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other.xml
index 9283216b1a2f..463525d4bf26 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24"
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_eject_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_eject_24dp.xml
index 4e37a8866dfb..0d4bd9bc48d0 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_eject_24dp.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_eject_24dp.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_find_in_page_24px.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_find_in_page_24px.xml
new file mode 100644
index 000000000000..a54c0f080b5e
--- /dev/null
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_find_in_page_24px.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="24dp" >
+ <group
+ android:translateX="4.000000"
+ android:translateY="2.000000" >
+ <path
+ android:fillColor="@android:color/white"
+ android:fillType="evenOdd"
+ android:pathData="M8,15.25 C6.208,15.25 4.75,13.792 4.75,12 C4.75,10.208 6.208,8.75 8,8.75 C9.792,8.75 11.25,10.208 11.25,12 C11.25,13.792 9.792,15.25 8,15.25 L8,15.25 Z M1.5,18 L1.5,2 C1.5,1.725 1.725,1.5 2,1.5 L9.379,1.5 L14.5,6.621 L14.5,17.439 L11.837,14.776 C12.405,13.993 12.75,13.039 12.75,12 C12.75,9.381 10.619,7.25 8,7.25 C5.381,7.25 3.25,9.381 3.25,12 C3.25,14.619 5.381,16.75 8,16.75 C9.039,16.75 9.993,16.405 10.776,15.837 L13.439,18.5 L2,18.5 C1.725,18.5 1.5,18.275 1.5,18 L1.5,18 Z M10,0 L2,0 C0.896,0 0,0.896 0,2 L0,18 C0,19.104 0.896,20 2,20 L14,20 C15.104,20 16,19.104 16,18 L16,6 L10,0 Z"
+ android:strokeWidth="1" />
+ </group>
+</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help_actionbar.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help_actionbar.xml
index e0a6f9553b15..c7d672efa574 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help_actionbar.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help_actionbar.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_network_cell.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_network_cell.xml
index 10e0f2fd1fca..fbe5ef03ad80 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_network_cell.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_network_cell.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml
index 81f18fb4b383..56a67c912176 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_data_usage.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_data_usage.xml
index b9c131b80ab6..855e4bb2a39d 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_data_usage.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_data_usage.xml
@@ -22,8 +22,7 @@
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M12,20c-4.4,0-8-3.6-8-8c0-4.2,3.2-7.6,7.2-8V2C5.7,2.4,1.6,7.3,2,12.8c0.4,5.5,5.3,9.6,10.8,9.2c4.9-0.4,8.8-4.3,9.2-9.2 h-2C19.6,16.8,16.2,20,12,20z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M20,11.2h2c-0.4-4.9-4.3-8.9-9.2-9.2v2C16.6,4.4,19.6,7.4,20,11.2z" />
+ android:fillType="evenOdd"
+ android:pathData="M19.5000671,12 C19.5000671,8.198 16.6680671,5.064 13.0000671,4.574 L13.0000671,2.05 C18.0500671,2.55 22.0000671,6.82 22.0000671,12 C22.0000671,13.45 21.6800671,14.83 21.1200671,16.07 L18.9560671,14.796 C19.3040671,13.932 19.5000671,12.989 19.5000671,12 Z M12.0000671,19.5 C14.3900671,19.5 16.5140671,18.378 17.8870671,16.637 C18.6270671,17.073 20.0500671,17.91 20.0500671,17.91 C17.9790671,20.732 14.4710671,22.427 10.6010671,21.906 C6.22106711,21.316 2.68406711,17.774 2.09406711,13.394 C1.31306711,7.591 5.49306711,2.594 11.0000671,2.05 L11.0000671,4.574 C7.33206711,5.064 4.50006711,8.198 4.50006711,12 C4.50006711,16.142 7.85806711,19.5 12.0000671,19.5 Z"
+ android:strokeWidth="1" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_language.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_language.xml
new file mode 100644
index 000000000000..730942bda59c
--- /dev/null
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_language.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2019 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:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
+ android:viewportHeight="24"
+ android:viewportWidth="24"
+ android:width="24dp" >
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,22c5.52,0,10-4.48,10-10c0-5.52-4.48-10-10-10C6.48,2,2,6.48,2,12C2,17.52,6.48,22,12,22z M4.5,16h3.14 c0.4,1.41,1.01,2.8,1.84,4.12C7.34,19.45,5.55,17.95,4.5,16z M3.5,12c0-0.87,0.13-1.71,0.38-2.5H7.3c-0.29,1.66-0.3,3.34-0.01,5 H3.88C3.63,13.71,3.5,12.87,3.5,12z M20.5,12c0,0.87-0.13,1.71-0.38,2.5h-3.42c0.29-1.66,0.28-3.34-0.01-5h3.43 C20.37,10.29,20.5,11.13,20.5,12z M15.2,14.5H8.8c-0.33-1.66-0.32-3.34,0.01-5h6.39C15.53,11.16,15.53,12.84,15.2,14.5z M11.55,20.48c-1.08-1.43-1.86-2.94-2.36-4.48h5.62c-0.5,1.54-1.28,3.05-2.36,4.48c-0.15,0.01-0.3,0.02-0.45,0.02 S11.7,20.49,11.55,20.48z M14.51,20.12c0.83-1.32,1.44-2.71,1.84-4.12h3.14C18.45,17.95,16.66,19.45,14.51,20.12z M19.5,8h-3.15 c-0.4-1.41-1.01-2.79-1.84-4.12C16.66,4.54,18.45,6.04,19.5,8z M12.45,3.52C13.52,4.96,14.3,6.46,14.8,8H9.2 c0.5-1.54,1.28-3.04,2.35-4.48C11.7,3.51,11.85,3.5,12,3.5S12.3,3.51,12.45,3.52z M9.49,3.88C8.67,5.21,8.06,6.59,7.65,8H4.5 C5.55,6.04,7.34,4.54,9.49,3.88z" />
+</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_saver_accent_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_multiuser.xml
index 9b39a9406dc8..83d9d2a9311e 100644
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_saver_accent_24dp.xml
+++ b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_multiuser.xml
@@ -16,14 +16,14 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
- android:tint="?android:attr/colorAccent"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M9.74,13.75h1.5v1.5c0,0.41,0.34,0.75,0.75,0.75s0.75-0.34,0.75-0.75v-1.5h1.5c0.41,0,0.75-0.34,0.75-0.75 s-0.34-0.75-0.75-0.75h-1.5v-1.5c0-0.41-0.34-0.75-0.75-0.75s-0.75,0.34-0.75,0.75v1.5h-1.5c-0.41,0-0.75,0.34-0.75,0.75 S9.33,13.75,9.74,13.75z" />
+ android:pathData="M4,19c0,0.55,0.45,1,1,1h14c0.55,0,1-0.45,1-1v-3c0-1.66-1.34-3-3-3H7c-1.66,0-3,1.34-3,3V19z M5.5,16 c0-0.83,0.67-1.5,1.5-1.5h10c0.83,0,1.5,0.67,1.5,1.5v2.5h-13V16z" />
<path
android:fillColor="@android:color/white"
- android:pathData="M17,4h-3V3.49c0-0.55-0.45-1-1-1h-2c-0.55,0-1,0.45-1,1V4H7C6.45,4,6,4.45,6,5v16c0,0.55,0.45,1,1,1h10c0.55,0,1-0.45,1-1 V5C18,4.45,17.55,4,17,4z M16.5,20.5h-9v-15h9V20.5z" />
+ android:pathData="M8,8c0,2.21,1.79,4,4,4s4-1.79,4-4c0-2.21-1.79-4-4-4S8,5.79,8,8z M12,5.5c1.38,0,2.5,1.12,2.5,2.5 c0,1.38-1.12,2.5-2.5,2.5S9.5,9.38,9.5,8C9.5,6.62,10.62,5.5,12,5.5z" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_wireless_white.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_wireless_white.xml
deleted file mode 100644
index 0a1c3055870d..000000000000
--- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_wireless_white.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2019 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:height="24dp"
- android:viewportHeight="24"
- android:viewportWidth="24"
- android:width="24dp" >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M12,2.75C7.95,2.69,4.05,4.3,1.22,7.2C0.96,7.5,0.97,7.95,1.24,8.23C1.53,8.53,2,8.54,2.3,8.25c2.55-2.61,6.05-4.06,9.7-4 c3.65-0.06,7.17,1.4,9.72,4.02c0.28,0.27,0.73,0.28,1.03,0.01c0.31-0.28,0.33-0.75,0.05-1.06C19.96,4.32,16.06,2.69,12,2.75z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M15.78,14.82c0.05,0.06,0.1,0.11,0.17,0.15c0.34,0.23,0.81,0.14,1.04-0.21s0.14-0.81-0.21-1.04 c-2.64-2.64-6.91-2.64-9.55,0c-0.27,0.29-0.27,0.73,0,1.02c0.28,0.3,0.76,0.32,1.06,0.04h0.03c0,0,0,0,0.01-0.01 c2.05-2.05,5.37-2.04,7.42,0.01C15.75,14.8,15.76,14.81,15.78,14.82z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M 12 17 C 12.8284271247 17 13.5 17.6715728753 13.5 18.5 C 13.5 19.3284271247 12.8284271247 20 12 20 C 11.1715728753 20 10.5 19.3284271247 10.5 18.5 C 10.5 17.6715728753 11.1715728753 17 12 17 Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M20.03,11.79c0.3-0.29,0.3-0.77,0.01-1.06h-0.01c-2.12-2.18-5.01-3.44-8.04-3.5c-3.04,0.06-5.93,1.32-8.05,3.5 c-0.29,0.3-0.28,0.77,0.01,1.06c0.3,0.29,0.77,0.28,1.06-0.01c1.85-1.88,4.36-2.96,7-3c2.62,0.05,5.11,1.13,6.95,3 C19.25,12.07,19.73,12.08,20.03,11.79z" />
-</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_arrow_back.xml
index 03f06e997e26..34f79b4478c9 100644
--- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_arrow_back.xml
+++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_arrow_back.xml
@@ -15,6 +15,7 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:autoMirrored="true"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
index 697d1c29eac7..62fcd4c3a33a 100644
--- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
+++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml
@@ -20,7 +20,7 @@
android:viewportWidth="24"
android:width="24dp" >
<path
- android:fillColor="?android:attr/colorPrimary"
+ android:fillColor="?android:attr/colorBackgroundFloating"
android:pathData="M 12 0 L 12 0 Q 24 0 24 12 L 24 12 Q 24 24 12 24 L 12 24 Q 0 24 0 12 L 0 12 Q 0 0 12 0 Z" />
<path
android:fillColor="?android:attr/colorControlActivated"
diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_camera.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_camera.xml
index 294e181faef8..142e078bdfd9 100644
--- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_camera.xml
+++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_camera.xml
@@ -15,10 +15,10 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="24dp"
+ android:height="17dp"
android:viewportHeight="24"
android:viewportWidth="24"
- android:width="24dp" >
+ android:width="17dp" >
<path
android:fillColor="@android:color/white"
android:pathData="M22,7c0-1.1-0.9-2-2-2h-3l-1.41-1.41C15.21,3.21,14.7,3,14.17,3H9.83C9.3,3,8.79,3.21,8.41,3.59L7,5H4C2.9,5,2,5.9,2,7v12 c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V7z M20.5,19c0,0.28-0.22,0.5-0.5,0.5H4c-0.28,0-0.5-0.22-0.5-0.5V7c0-0.28,0.22-0.5,0.5-0.5 h3.62l1.85-1.85C9.57,4.55,9.69,4.5,9.83,4.5h4.34c0.13,0,0.26,0.05,0.35,0.15l1.85,1.85H20c0.28,0,0.5,0.22,0.5,0.5V19z" />
diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected.xml
index 14d88e76bb91..f2821668c870 100644
--- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected.xml
+++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected.xml
@@ -15,10 +15,10 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="17dp"
+ android:height="24dp"
android:viewportHeight="24"
android:viewportWidth="24"
- android:width="17dp" >
+ android:width="24dp" >
<path
android:fillColor="@android:color/white"
android:pathData="M20.5,4h-17C3.49,4,3.48,4,3.47,4C2.64,4.02,1.98,4.7,2,5.53v3.18c0,0.41,0.34,0.75,0.75,0.75S3.5,9.12,3.5,8.71 c0-1.96,0-3.21,0-3.21l17,0.03V18.5h-7.35c-0.41,0-0.75,0.34-0.75,0.75S12.74,20,13.15,20h7.35c0.01,0,0.02,0,0.03,0 c0.83-0.02,1.49-0.7,1.47-1.53V5.53c0-0.01,0-0.02,0-0.03C22,4.67,21.33,4,20.5,4z" />
diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver.xml
index ee11b84b28ba..cdc3bfbd3d5f 100644
--- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver.xml
+++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver.xml
@@ -15,17 +15,17 @@
limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:height="18dp "
+ android:height="18dp"
android:viewportHeight="24"
android:viewportWidth="24"
- android:width="18dp " >
- <path
- android:fillColor="@android:color/white"
- android:pathData="M3.36,7A10,10,0,0,0,20.27,17.64L18.1,16.39A7.5,7.5,0,1,1,11.25,4.56V2.05A10,10,0,0,0,3.36,7Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M21,16.35a10,10,0,0,0-8.27-14.3V4.56a7.48,7.48,0,0,1,6.1,10.54Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M8,12a0.76 0.76 ,0,0,0,0.75 0.75 h2.5v2.5a0.75 0.75 ,0,0,0,1.5,0v-2.5h2.5a0.75 0.75 ,0,0,0,0-1.5h-2.5V8.75a0.75 0.75 ,0,0,0-1.5,0v2.5H8.75A0.76 0.76 ,0,0,0,8,12Z" />
+ android:width="18dp" >
+ <group
+ android:translateX="2.000000"
+ android:translateY="2.000000" >
+ <path
+ android:fillColor="@android:color/white"
+ android:fillType="evenOdd"
+ android:pathData="M17.5000671,10 C17.5000671,6.198 14.6680671,3.064 11.0000671,2.574 L11.0000671,0.05 C16.0500671,0.55 20.0000671,4.82 20.0000671,10 C20.0000671,11.45 19.6800671,12.83 19.1200671,14.07 L16.9560671,12.796 C17.3040671,11.932 17.5000671,10.989 17.5000671,10 Z M10.0000671,17.5 C12.3900671,17.5 14.5140671,16.378 15.8870671,14.637 C16.6270671,15.073 18.0500671,15.91 18.0500671,15.91 C15.9790671,18.732 12.4710671,20.427 8.60106711,19.906 C4.22106711,19.316 0.68406711,15.774 0.0940671101,11.394 C-0.68693289,5.591 3.49306711,0.594 9.00006711,0.05 L9.00006711,2.574 C5.33206711,3.064 2.50006711,6.198 2.50006711,10 C2.50006711,14.142 5.85806711,17.5 10.0000671,17.5 Z M6,10 C6.00538581,9.58803794 6.33803794,9.25538581 6.75,9.25 L9.25,9.25 L9.25,6.75 C9.25,6.33578644 9.58578644,6 10,6 C10.4142136,6 10.75,6.33578644 10.75,6.75 L10.75,9.25 L13.25,9.25 C13.6642136,9.25 14,9.58578644 14,10 C14,10.4142136 13.6642136,10.75 13.25,10.75 L10.75,10.75 L10.75,13.25 C10.75,13.6642136 10.4142136,14 10,14 C9.58578644,14 9.25,13.6642136 9.25,13.25 L9.25,10.75 L6.75,10.75 C6.33803794,10.7446142 6.00538581,10.4119621 6,10 Z"
+ android:strokeWidth="1" />
+ </group>
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver_off.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver_off.xml
index 3d620a18bb1a..7dab949f9da5 100644
--- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver_off.xml
+++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver_off.xml
@@ -21,8 +21,7 @@
android:width="24dp" >
<path
android:fillColor="@android:color/white"
- android:pathData="M3.36,7A10,10,0,0,0,20.27,17.64L18.1,16.39A7.5,7.5,0,1,1,11.25,4.56V2.05A10,10,0,0,0,3.36,7Z" />
- <path
- android:fillColor="@android:color/white"
- android:pathData="M21,16.35a10,10,0,0,0-8.27-14.3V4.56a7.48,7.48,0,0,1,6.1,10.54Z" />
+ android:fillType="evenOdd"
+ android:pathData="M19.5000671,12 C19.5000671,8.198 16.6680671,5.064 13.0000671,4.574 L13.0000671,2.05 C18.0500671,2.55 22.0000671,6.82 22.0000671,12 C22.0000671,13.45 21.6800671,14.83 21.1200671,16.07 L18.9560671,14.796 C19.3040671,13.932 19.5000671,12.989 19.5000671,12 Z M12.0000671,19.5 C14.3900671,19.5 16.5140671,18.378 17.8870671,16.637 C18.6270671,17.073 20.0500671,17.91 20.0500671,17.91 C17.9790671,20.732 14.4710671,22.427 10.6010671,21.906 C6.22106711,21.316 2.68406711,17.774 2.09406711,13.394 C1.31306711,7.591 5.49306711,2.594 11.0000671,2.05 L11.0000671,4.574 C7.33206711,5.064 4.50006711,8.198 4.50006711,12 C4.50006711,16.142 7.85806711,19.5 12.0000671,19.5 Z"
+ android:strokeWidth="1" />
</vector> \ No newline at end of file
diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml
index f2284bc37287..85c2bcdbdce0 100644
--- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml
+++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml
index 15201e924933..3a26cbaf7238 100644
--- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml
+++ b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml
@@ -16,6 +16,7 @@
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
+ android:tint="?android:attr/colorControlNormal"
android:viewportHeight="24"
android:viewportWidth="24"
android:width="24dp" >
diff --git a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
index b12129835ca1..d7f86cd65ae9 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
@@ -161,7 +161,15 @@ public class StatusBarShellCommand extends ShellCommand {
case "statusbar-expansion":
info.setStatusBarExpansionDisabled(true);
break;
-
+ case "system-icons":
+ info.setSystemIconsDisabled(true);
+ break;
+ case "clock":
+ info.setClockDisabled(true);
+ break;
+ case "notification-icons":
+ info.setNotificationIconsDisabled(true);
+ break;
default:
break;
}
@@ -221,6 +229,9 @@ public class StatusBarShellCommand extends ShellCommand {
pw.println(" recents - disable recents/overview");
pw.println(" notification-peek - disable notification peeking");
pw.println(" statusbar-expansion - disable status bar expansion");
+ pw.println(" system-icons - disable system icons appearing in status bar");
+ pw.println(" clock - disable clock appearing in status bar");
+ pw.println(" notification-icons - disable notification icons from status bar");
pw.println("");
}
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java
index b6a5be807fb6..4cfc1d1df2ae 100644
--- a/services/core/java/com/android/server/wm/AccessibilityController.java
+++ b/services/core/java/com/android/server/wm/AccessibilityController.java
@@ -1065,8 +1065,6 @@ final class AccessibilityController {
private final long mRecurringAccessibilityEventsIntervalMillis;
- private int mTempLayer = 0;
-
public WindowsForAccessibilityObserver(WindowManagerService windowManagerService,
WindowsForAccessibilityCallback callback) {
mContext = windowManagerService.mContext;
@@ -1091,7 +1089,7 @@ final class AccessibilityController {
}
/**
- * Check if windows have changed, and send them to the accessibilty subsystem if they have.
+ * Check if windows have changed, and send them to the accessibility subsystem if they have.
*
* @param forceSend Send the windows the accessibility even if they haven't changed.
*/
@@ -1108,8 +1106,7 @@ final class AccessibilityController {
// the window manager is still looking for where to put it.
// We will do the work when we get a focus change callback.
// TODO(b/112273690): Support multiple displays
- // TODO(b/129098348): Support embedded displays
- if (mService.getDefaultDisplayContentLocked().mCurrentFocus == null) {
+ if (!isCurrentFocusWindowOnDefaultDisplay()) {
return;
}
@@ -1395,21 +1392,35 @@ final class AccessibilityController {
}
private void populateVisibleWindowsOnScreenLocked(SparseArray<WindowState> outWindows) {
+ final List<WindowState> tempWindowStatesList = new ArrayList<>();
final DisplayContent dc = mService.getDefaultDisplayContentLocked();
- mTempLayer = 0;
dc.forAllWindows((w) -> {
if (w.isVisibleLw()) {
- outWindows.put(mTempLayer++, w);
+ tempWindowStatesList.add(w);
}
}, false /* traverseTopToBottom */);
+ // Insert the re-parented windows in another display on top of their parents in
+ // default display.
mService.mRoot.forAllWindows(w -> {
- final WindowState win = findRootDisplayParentWindow(w);
- if (win != null && win.getDisplayContent().isDefaultDisplay && w.isVisibleLw()) {
- // TODO(b/129098348): insert windows on child displays into outWindows based on
- // root-display-parent window.
- outWindows.put(mTempLayer++, w);
+ final WindowState parentWindow = findRootDisplayParentWindow(w);
+ if (parentWindow == null) {
+ return;
}
- }, false /* traverseTopToBottom */);
+
+ // TODO: Use Region instead to get rid of this complicated logic.
+ // Check the tap exclude region of the parent window. If the tap exclude region
+ // is empty, it means there is another can-receive-pointer-event view on top of
+ // the region. Hence, we don't count the window as visible.
+ if (w.isVisibleLw() && parentWindow.getDisplayContent().isDefaultDisplay
+ && parentWindow.hasTapExcludeRegion()
+ && tempWindowStatesList.contains(parentWindow)) {
+ tempWindowStatesList.add(
+ tempWindowStatesList.lastIndexOf(parentWindow) + 1, w);
+ }
+ }, true /* traverseTopToBottom */);
+ for (int i = 0; i < tempWindowStatesList.size(); i++) {
+ outWindows.put(i, tempWindowStatesList.get(i));
+ }
}
private WindowState findRootDisplayParentWindow(WindowState win) {
@@ -1425,6 +1436,23 @@ final class AccessibilityController {
return displayParentWindow;
}
+ private boolean isCurrentFocusWindowOnDefaultDisplay() {
+ final WindowState focusedWindow =
+ mService.mRoot.getTopFocusedDisplayContent().mCurrentFocus;
+ if (focusedWindow == null) {
+ return false;
+ }
+
+ final WindowState rootDisplayParentWindow = findRootDisplayParentWindow(focusedWindow);
+ if (!focusedWindow.isDefaultDisplay()
+ && (rootDisplayParentWindow == null
+ || !rootDisplayParentWindow.isDefaultDisplay())) {
+ return false;
+ }
+
+ return true;
+ }
+
private class MyHandler extends Handler {
public static final int MESSAGE_COMPUTE_CHANGED_WINDOWS = 1;
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index 3d59e66d13ef..b3b6efed1a37 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -40,6 +40,7 @@ import static android.view.WindowManager.TRANSIT_ACTIVITY_CLOSE;
import static android.view.WindowManager.TRANSIT_ACTIVITY_OPEN;
import static android.view.WindowManager.TRANSIT_CRASHING_ACTIVITY_CLOSE;
import static android.view.WindowManager.TRANSIT_NONE;
+import static android.view.WindowManager.TRANSIT_SHOW_SINGLE_TASK_DISPLAY;
import static android.view.WindowManager.TRANSIT_TASK_CLOSE;
import static android.view.WindowManager.TRANSIT_TASK_OPEN;
import static android.view.WindowManager.TRANSIT_TASK_OPEN_BEHIND;
@@ -3194,6 +3195,8 @@ class ActivityStack extends ConfigurationContainer {
if (newTask) {
if (r.mLaunchTaskBehind) {
transit = TRANSIT_TASK_OPEN_BEHIND;
+ } else if (getDisplay().isSingleTaskInstance()) {
+ transit = TRANSIT_SHOW_SINGLE_TASK_DISPLAY;
} else {
// If a new task is being launched, then mark the existing top activity as
// supporting picture-in-picture while pausing only if the starting activity
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
index ed56501f4351..dbc530d38684 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
@@ -34,7 +34,6 @@ import android.os.IBinder;
import android.os.RemoteException;
import android.os.SystemClock;
import android.service.voice.IVoiceInteractionSession;
-import android.util.Pair;
import android.util.SparseIntArray;
import android.util.proto.ProtoOutputStream;
@@ -189,6 +188,13 @@ public abstract class ActivityTaskManagerInternal {
public abstract void notifyDockedStackMinimizedChanged(boolean minimized);
/**
+ * Notify listeners that contents are drawn for the first time on a single task display.
+ *
+ * @param displayId An ID of the display on which contents are drawn.
+ */
+ public abstract void notifySingleTaskDisplayDrawn(int displayId);
+
+ /**
* Start activity {@code intents} as if {@code packageName} on user {@code userId} did it.
*
* - DO NOT call it with the calling UID cleared.
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 765c9d0a5864..2e5b9fd55fc0 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -6097,7 +6097,8 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
}
@Override
- public void notifyAppTransitionStarting(SparseIntArray reasons, long timestamp) {
+ public void notifyAppTransitionStarting(SparseIntArray reasons,
+ long timestamp) {
synchronized (mGlobalLock) {
mStackSupervisor.getActivityMetricsLogger().notifyTransitionStarting(
reasons, timestamp);
@@ -6105,6 +6106,11 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
}
@Override
+ public void notifySingleTaskDisplayDrawn(int displayId) {
+ mTaskChangeNotificationController.notifySingleTaskDisplayDrawn(displayId);
+ }
+
+ @Override
public void notifyAppTransitionFinished() {
synchronized (mGlobalLock) {
mStackSupervisor.notifyAppTransitionDone();
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index ddd5c0aa7dc0..19ccc62527e9 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -29,6 +29,7 @@ import static android.view.WindowManager.TRANSIT_KEYGUARD_GOING_AWAY_ON_WALLPAPE
import static android.view.WindowManager.TRANSIT_KEYGUARD_OCCLUDE;
import static android.view.WindowManager.TRANSIT_KEYGUARD_UNOCCLUDE;
import static android.view.WindowManager.TRANSIT_NONE;
+import static android.view.WindowManager.TRANSIT_SHOW_SINGLE_TASK_DISPLAY;
import static android.view.WindowManager.TRANSIT_TASK_CHANGE_WINDOWING_MODE;
import static android.view.WindowManager.TRANSIT_TASK_CLOSE;
import static android.view.WindowManager.TRANSIT_TASK_IN_PLACE;
@@ -2052,6 +2053,9 @@ public class AppTransition implements Dump {
case TRANSIT_CRASHING_ACTIVITY_CLOSE: {
return "TRANSIT_CRASHING_ACTIVITY_CLOSE";
}
+ case TRANSIT_SHOW_SINGLE_TASK_DISPLAY: {
+ return "TRANSIT_SHOW_SINGLE_TASK_DISPLAY";
+ }
default: {
return "<UNKNOWN: " + transition + ">";
}
diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java
index d4c4e6a93fa6..6c5ef5259285 100644
--- a/services/core/java/com/android/server/wm/AppTransitionController.java
+++ b/services/core/java/com/android/server/wm/AppTransitionController.java
@@ -28,6 +28,7 @@ import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY_WITH_W
import static android.view.WindowManager.TRANSIT_KEYGUARD_GOING_AWAY;
import static android.view.WindowManager.TRANSIT_KEYGUARD_GOING_AWAY_ON_WALLPAPER;
import static android.view.WindowManager.TRANSIT_NONE;
+import static android.view.WindowManager.TRANSIT_SHOW_SINGLE_TASK_DISPLAY;
import static android.view.WindowManager.TRANSIT_TASK_CLOSE;
import static android.view.WindowManager.TRANSIT_TASK_IN_PLACE;
import static android.view.WindowManager.TRANSIT_TASK_OPEN;
@@ -211,6 +212,12 @@ public class AppTransitionController {
mService.mAtmInternal.notifyAppTransitionStarting(mTempTransitionReasons.clone(),
SystemClock.uptimeMillis());
+ if (transit == TRANSIT_SHOW_SINGLE_TASK_DISPLAY) {
+ mService.mAnimator.addAfterPrepareSurfacesRunnable(() -> {
+ mService.mAtmInternal.notifySingleTaskDisplayDrawn(mDisplayContent.getDisplayId());
+ });
+ }
+
Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
mDisplayContent.pendingLayoutChanges |=
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index c3a769b63e5a..a91fd25e5582 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -2541,6 +2541,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
void removeImmediately() {
mRemovingDisplay = true;
try {
+ if (mParentWindow != null) {
+ mParentWindow.removeEmbeddedDisplayContent(this);
+ }
// Clear all transitions & screen frozen states when removing display.
mOpeningApps.clear();
mClosingApps.clear();
@@ -5028,6 +5031,7 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
*/
void reparentDisplayContent(WindowState win, SurfaceControl sc) {
mParentWindow = win;
+ mParentWindow.addEmbeddedDisplayContent(this);
mParentSurfaceControl = sc;
if (mPortalWindowHandle == null) {
mPortalWindowHandle = createPortalWindowHandle(sc.toString());
@@ -5058,12 +5062,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
throw new IllegalArgumentException(
"The given window is not the parent window of this display.");
}
- if (mLocationInParentWindow.x != x || mLocationInParentWindow.y != y) {
- mLocationInParentWindow.x = x;
- mLocationInParentWindow.y = y;
+ if (!mLocationInParentWindow.equals(x, y)) {
+ mLocationInParentWindow.set(x, y);
if (mWmService.mAccessibilityController != null) {
mWmService.mAccessibilityController.onSomeWindowResizedOrMovedLocked();
}
+ notifyLocationInParentDisplayChanged();
}
}
@@ -5071,6 +5075,30 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
return mLocationInParentWindow;
}
+ Point getLocationInParentDisplay() {
+ final Point location = new Point();
+ if (mParentWindow != null) {
+ // LocationInParentWindow indicates the offset to (0,0) of window, but what we need is
+ // the offset to (0,0) of display.
+ DisplayContent dc = this;
+ do {
+ final WindowState displayParent = dc.getParentWindow();
+ location.x += displayParent.getFrameLw().left
+ + (dc.getLocationInParentWindow().x * displayParent.mGlobalScale + 0.5f);
+ location.y += displayParent.getFrameLw().top
+ + (dc.getLocationInParentWindow().y * displayParent.mGlobalScale + 0.5f);
+ dc = displayParent.getDisplayContent();
+ } while (dc != null && dc.getParentWindow() != null);
+ }
+ return location;
+ }
+
+ void notifyLocationInParentDisplayChanged() {
+ forAllWindows(w -> {
+ w.updateLocationInParentDisplayIfNeeded();
+ }, false /* traverseTopToBottom */);
+ }
+
@VisibleForTesting
SurfaceControl getWindowingLayer() {
return mWindowingLayer;
diff --git a/services/core/java/com/android/server/wm/RootActivityContainer.java b/services/core/java/com/android/server/wm/RootActivityContainer.java
index 3ec461d065ff..d58c61368f9a 100644
--- a/services/core/java/com/android/server/wm/RootActivityContainer.java
+++ b/services/core/java/com/android/server/wm/RootActivityContainer.java
@@ -35,6 +35,7 @@ import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TASK;
import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.INVALID_DISPLAY;
+import static android.view.WindowManager.TRANSIT_SHOW_SINGLE_TASK_DISPLAY;
import static com.android.server.am.ActivityStackSupervisorProto.CONFIGURATION_CONTAINER;
import static com.android.server.am.ActivityStackSupervisorProto.DISPLAYS;
@@ -1217,6 +1218,15 @@ class RootActivityContainer extends ConfigurationContainer
if (displayShouldSleep) {
stack.goToSleepIfPossible(false /* shuttingDown */);
} else {
+ // When the display which can only contain one task turns on, start a special
+ // transition. {@link AppTransitionController#handleAppTransitionReady} later
+ // picks up the transition, and schedules
+ // {@link ITaskStackListener#onSingleTaskDisplayDrawn} callback which is
+ // triggered after contents are drawn on the display.
+ if (display.isSingleTaskInstance()) {
+ display.mDisplayContent.prepareAppTransition(
+ TRANSIT_SHOW_SINGLE_TASK_DISPLAY, false);
+ }
stack.awakeFromSleepingLocked();
if (stack.isFocusedStackOnDisplay()
&& !mStackSupervisor.getKeyguardController()
diff --git a/services/core/java/com/android/server/wm/TapExcludeRegionHolder.java b/services/core/java/com/android/server/wm/TapExcludeRegionHolder.java
index 22f529b28b8e..8f72cdad8dce 100644
--- a/services/core/java/com/android/server/wm/TapExcludeRegionHolder.java
+++ b/services/core/java/com/android/server/wm/TapExcludeRegionHolder.java
@@ -52,4 +52,11 @@ class TapExcludeRegionHolder {
region.op(r, Region.Op.UNION);
}
}
+
+ /**
+ * Return true if tap exclude region is empty.
+ */
+ boolean isEmpty() {
+ return mTapExcludeRegions.size() == 0;
+ }
}
diff --git a/services/core/java/com/android/server/wm/TaskChangeNotificationController.java b/services/core/java/com/android/server/wm/TaskChangeNotificationController.java
index 66200e39938b..27175c706812 100644
--- a/services/core/java/com/android/server/wm/TaskChangeNotificationController.java
+++ b/services/core/java/com/android/server/wm/TaskChangeNotificationController.java
@@ -54,6 +54,7 @@ class TaskChangeNotificationController {
private static final int NOTIFY_ACTIVITY_LAUNCH_ON_SECONDARY_DISPLAY_REROUTED_MSG = 19;
private static final int NOTIFY_SIZE_COMPAT_MODE_ACTIVITY_CHANGED_MSG = 20;
private static final int NOTIFY_BACK_PRESSED_ON_TASK_ROOT = 21;
+ private static final int NOTIFY_SINGLE_TASK_DISPLAY_DRAWN = 22;
// Delay in notifying task stack change listeners (in millis)
private static final int NOTIFY_TASK_STACK_CHANGE_LISTENERS_DELAY = 100;
@@ -154,6 +155,10 @@ class TaskChangeNotificationController {
l.onSizeCompatModeActivityChanged(m.arg1, (IBinder) m.obj);
};
+ private final TaskStackConsumer mNotifySingleTaskDisplayDrawn = (l, m) -> {
+ l.onSingleTaskDisplayDrawn(m.arg1);
+ };
+
@FunctionalInterface
public interface TaskStackConsumer {
void accept(ITaskStackListener t, Message m) throws RemoteException;
@@ -233,6 +238,9 @@ class TaskChangeNotificationController {
case NOTIFY_BACK_PRESSED_ON_TASK_ROOT:
forAllRemoteListeners(mNotifyBackPressedOnTaskRoot, msg);
break;
+ case NOTIFY_SINGLE_TASK_DISPLAY_DRAWN:
+ forAllRemoteListeners(mNotifySingleTaskDisplayDrawn, msg);
+ break;
}
}
}
@@ -477,4 +485,14 @@ class TaskChangeNotificationController {
forAllLocalListeners(mNotifyBackPressedOnTaskRoot, msg);
msg.sendToTarget();
}
+
+ /**
+ * Notify listeners that contents are drawn for the first time on a single task display.
+ */
+ void notifySingleTaskDisplayDrawn(int displayId) {
+ final Message msg = mHandler.obtainMessage(NOTIFY_SINGLE_TASK_DISPLAY_DRAWN,
+ displayId, 0 /* unused */);
+ forAllLocalListeners(mNotifySingleTaskDisplayDrawn, msg);
+ msg.sendToTarget();
+ }
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index d39ee4068285..0a2fc9b366a3 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -4543,8 +4543,11 @@ public class WindowManagerService extends IWindowManager.Stub
AccessibilityController accessibilityController = null;
synchronized (mGlobalLock) {
- // TODO(multidisplay): Accessibility supported only of default desiplay.
- if (mAccessibilityController != null && displayContent.isDefaultDisplay) {
+ // TODO(multidisplay): Accessibility supported only of default display and
+ // embedded displays.
+ if (mAccessibilityController != null
+ && (displayContent.isDefaultDisplay
+ || displayContent.getParentWindow() != null)) {
accessibilityController = mAccessibilityController;
}
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 5ef184adc52f..89fd33bba261 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -167,6 +167,7 @@ import android.os.UserHandle;
import android.os.WorkSource;
import android.provider.Settings;
import android.text.TextUtils;
+import android.util.ArraySet;
import android.util.DisplayMetrics;
import android.util.MergedConfiguration;
import android.util.Slog;
@@ -316,6 +317,9 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
int mLayoutSeq = -1;
+ /** @see #addEmbeddedDisplayContent(DisplayContent dc) */
+ private final ArraySet<DisplayContent> mEmbeddedDisplayContents = new ArraySet<>();
+
/**
* Used to store last reported to client configuration and check if we have newer available.
* We'll send configuration to client only if it is different from the last applied one and
@@ -536,6 +540,12 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
private final Point mTmpPoint = new Point();
/**
+ * If a window is on a display which has been re-parented to a view in another window,
+ * use this offset to indicate the correct location.
+ */
+ private final Point mLastReportedDisplayOffset = new Point();
+
+ /**
* Whether the window was resized by us while it was gone for layout.
*/
boolean mResizedWhileGone = false;
@@ -1777,11 +1787,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
startMoveAnimation(left, top);
}
- //TODO (multidisplay): Accessibility supported only for the default display.
- if (mWmService.mAccessibilityController != null
- && getDisplayContent().getDisplayId() == DEFAULT_DISPLAY) {
+ // TODO (multidisplay): Accessibility supported only for the default display and
+ // embedded displays
+ if (mWmService.mAccessibilityController != null && (getDisplayId() == DEFAULT_DISPLAY
+ || getDisplayContent().getParentWindow() != null)) {
mWmService.mAccessibilityController.onSomeWindowResizedOrMovedLocked();
}
+ updateLocationInParentDisplayIfNeeded();
try {
mClient.moved(left, top);
@@ -3143,11 +3155,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
displayCutout);
}
- //TODO (multidisplay): Accessibility supported only for the default display.
+ // TODO (multidisplay): Accessibility supported only for the default display and
+ // embedded displays
if (mWmService.mAccessibilityController != null && (getDisplayId() == DEFAULT_DISPLAY
|| getDisplayContent().getParentWindow() != null)) {
mWmService.mAccessibilityController.onSomeWindowResizedOrMovedLocked();
}
+ updateLocationInParentDisplayIfNeeded();
mWindowFrames.resetInsetsChanged();
mWinAnimator.mSurfaceResized = false;
@@ -3165,6 +3179,36 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
}
+ void updateLocationInParentDisplayIfNeeded() {
+ final int embeddedDisplayContentsSize = mEmbeddedDisplayContents.size();
+ // If there is any embedded display which is re-parented to this window, we need to
+ // notify all windows in the embedded display about the location change.
+ if (embeddedDisplayContentsSize != 0) {
+ for (int i = embeddedDisplayContentsSize - 1; i >= 0; i--) {
+ final DisplayContent edc = mEmbeddedDisplayContents.valueAt(i);
+ edc.notifyLocationInParentDisplayChanged();
+ }
+ }
+ // If this window is in a embedded display which is re-parented to another window,
+ // we may need to update its correct on-screen location.
+ final DisplayContent dc = getDisplayContent();
+ if (dc.getParentWindow() == null) {
+ return;
+ }
+
+ final Point offset = dc.getLocationInParentDisplay();
+ if (mLastReportedDisplayOffset.equals(offset)) {
+ return;
+ }
+
+ mLastReportedDisplayOffset.set(offset.x, offset.y);
+ try {
+ mClient.locationInParentDisplayChanged(mLastReportedDisplayOffset);
+ } catch (RemoteException e) {
+ Slog.e(TAG, "Failed to update offset from DisplayContent", e);
+ }
+ }
+
/**
* Called when the insets state changed.
*/
@@ -3584,6 +3628,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
}
pw.println(prefix + "isOnScreen=" + isOnScreen());
pw.println(prefix + "isVisible=" + isVisible());
+ pw.println(prefix + "mEmbeddedDisplayContents=" + mEmbeddedDisplayContents);
}
@Override
@@ -4209,7 +4254,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
return;
}
- //TODO (multidisplay): Accessibility is supported only for the default display.
+ // TODO (multidisplay): Accessibility supported only for the default display and
+ // embedded displays
if (mWmService.mAccessibilityController != null && (getDisplayId() == DEFAULT_DISPLAY
|| getDisplayContent().getParentWindow() != null)) {
mWmService.mAccessibilityController.onSomeWindowResizedOrMovedLocked();
@@ -4581,6 +4627,28 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
}
/**
+ * Add the DisplayContent of the embedded display which is re-parented to this window to
+ * the list of embedded displays.
+ *
+ * @param dc DisplayContent of the re-parented embedded display.
+ * @return {@code true} if the giving DisplayContent is added, {@code false} otherwise.
+ */
+ boolean addEmbeddedDisplayContent(DisplayContent dc) {
+ return mEmbeddedDisplayContents.add(dc);
+ }
+
+ /**
+ * Remove the DisplayContent of the embedded display which is re-parented to this window from
+ * the list of embedded displays.
+ *
+ * @param dc DisplayContent of the re-parented embedded display.
+ * @return {@code true} if the giving DisplayContent is removed, {@code false} otherwise.
+ */
+ boolean removeEmbeddedDisplayContent(DisplayContent dc) {
+ return mEmbeddedDisplayContents.remove(dc);
+ }
+
+ /**
* Updates the last inset values to the current ones.
*/
void updateLastInsetValues() {
@@ -5002,6 +5070,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
tempRegion.recycle();
}
+ boolean hasTapExcludeRegion() {
+ return mTapExcludeRegionHolder != null && !mTapExcludeRegionHolder.isEmpty();
+ }
+
@Override
public boolean isInputMethodTarget() {
return getDisplayContent().mInputMethodTarget == this;
diff --git a/services/tests/wmtests/AndroidManifest.xml b/services/tests/wmtests/AndroidManifest.xml
index 5136705ffbc2..4c27a3ce0bf3 100644
--- a/services/tests/wmtests/AndroidManifest.xml
+++ b/services/tests/wmtests/AndroidManifest.xml
@@ -49,6 +49,9 @@
<activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityRequestedOrientationChange" />
<activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityTaskChangeCallbacks" />
<activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityTaskDescriptionChange" />
+ <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityViewTestActivity" />
+ <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityInActivityView"
+ android:resizeableActivity="true" />
<activity android:name="com.android.server.wm.ScreenDecorWindowTests$TestActivity"
android:showWhenLocked="true" />
</application>
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java
index 62247d889485..19fd93fee5f0 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java
@@ -16,6 +16,8 @@
package com.android.server.wm;
+import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
+
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static org.junit.Assert.assertEquals;
@@ -26,18 +28,22 @@ import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.TaskDescription;
import android.app.ActivityTaskManager;
+import android.app.ActivityView;
import android.app.IActivityManager;
import android.app.ITaskStackListener;
+import android.app.Instrumentation;
import android.app.Instrumentation.ActivityMonitor;
import android.app.TaskStackListener;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
+import android.os.Bundle;
import android.os.RemoteException;
import android.platform.test.annotations.Presubmit;
import android.support.test.uiautomator.UiDevice;
import android.text.TextUtils;
+import android.view.ViewGroup;
import androidx.test.filters.FlakyTest;
import androidx.test.filters.MediumTest;
@@ -231,6 +237,40 @@ public class TaskStackChangedListenerTest {
assertTrue(activity.mOnDetachedFromWindowCalled);
}
+ @Test
+ public void testTaskOnSingleTaskDisplayDrawn() throws Exception {
+ final Instrumentation instrumentation = getInstrumentation();
+
+ final CountDownLatch activityViewReadyLatch = new CountDownLatch(1);
+ final CountDownLatch singleTaskDisplayDrawnLatch = new CountDownLatch(1);
+ registerTaskStackChangedListener(new TaskStackListener() {
+ @Override
+ public void onSingleTaskDisplayDrawn(int displayId) throws RemoteException {
+ singleTaskDisplayDrawnLatch.countDown();
+ }
+ });
+ final ActivityViewTestActivity activity =
+ (ActivityViewTestActivity) startTestActivity(ActivityViewTestActivity.class);
+ final ActivityView activityView = activity.getActivityView();
+ activityView.setCallback(new ActivityView.StateCallback() {
+ @Override
+ public void onActivityViewReady(ActivityView view) {
+ activityViewReadyLatch.countDown();
+ }
+
+ @Override
+ public void onActivityViewDestroyed(ActivityView view) {
+ }
+ });
+ waitForCallback(activityViewReadyLatch);
+
+ final Context context = instrumentation.getContext();
+ Intent intent = new Intent(context, ActivityInActivityView.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
+ activityView.startActivity(intent);
+ waitForCallback(singleTaskDisplayDrawnLatch);
+ }
+
/**
* Starts the provided activity and returns the started instance.
*/
@@ -369,4 +409,29 @@ public class TaskStackChangedListenerTest {
mOnDetachedFromWindowCountDownLatch = countDownLatch;
}
}
+
+ public static class ActivityViewTestActivity extends TestActivity {
+ private ActivityView mActivityView;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mActivityView = new ActivityView(this, null /* attrs */, 0 /* defStyle */,
+ true /* singleTaskInstance */);
+ setContentView(mActivityView);
+
+ ViewGroup.LayoutParams layoutParams = mActivityView.getLayoutParams();
+ layoutParams.width = MATCH_PARENT;
+ layoutParams.height = MATCH_PARENT;
+ mActivityView.requestLayout();
+ }
+
+ ActivityView getActivityView() {
+ return mActivityView;
+ }
+ }
+
+ // Activity that has {@link android.R.attr#resizeableActivity} attribute set to {@code true}
+ public static class ActivityInActivityView extends TestActivity {}
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/TestIWindow.java b/services/tests/wmtests/src/com/android/server/wm/TestIWindow.java
index 83aa620b9573..a7586810a824 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TestIWindow.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TestIWindow.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import android.graphics.Point;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
@@ -43,6 +44,10 @@ public class TestIWindow extends IWindow.Stub {
}
@Override
+ public void locationInParentDisplayChanged(Point offset) throws RemoteException {
+ }
+
+ @Override
public void insetsChanged(InsetsState insetsState) throws RemoteException {
}