From 7c7dfc6580983ef5fc0a14e71986b7ac9f55a7c8 Mon Sep 17 00:00:00 2001 From: arangelov Date: Mon, 20 Apr 2020 14:56:23 +0100 Subject: [PATCH 001/192] Fix comparison of UserHandle objects Fixes: 154442613 Test: none Change-Id: If650e9d6a0034ef4d428852cb08fa456e1f4a247 (cherry picked from commit 47906054fc4595f8f7a78a2700e6537b9a7b283f) --- core/java/com/android/internal/app/ChooserActivity.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index d851a099d0e17..970bab9bc53b4 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -2611,11 +2611,12 @@ public class ChooserActivity extends ResolverActivity implements * does not match either the personal or work user handle. **/ private int getProfileForUser(UserHandle currentUserHandle) { - if (currentUserHandle == getPersonalProfileUserHandle()) { + if (currentUserHandle.equals(getPersonalProfileUserHandle())) { return PROFILE_PERSONAL; - } else if (currentUserHandle == getWorkProfileUserHandle()) { + } else if (currentUserHandle.equals(getWorkProfileUserHandle())) { return PROFILE_WORK; } + Log.e(TAG, "User " + currentUserHandle + " does not belong to a personal or work profile."); return -1; } From b12bddb5c83cfc4e101134f236b692215a7e183b Mon Sep 17 00:00:00 2001 From: Ahaan Ugale Date: Fri, 17 Apr 2020 21:38:47 -0700 Subject: [PATCH 002/192] Autofill: Fix unsafe usages of mCurrentViewId related to Inline UI. With this change, the value is captured locally before being used in any lambdas related to inline suggestions. Otherwise, the lambda can be executed for a different view than intended, which can also cause an NPE if a VIEW_EXITED event occurs (see linked bug). This change also includes a null-check in requestShowInlineSuggestionsLocked. It's unclear if it's possible for the value to be null there, but the check is added to be safe. There are other usages of mCurrentViewId that should ideally be guarded by null-checks, but those shall be fixed separately (or refactored later). Test: manual - (1) add a Thread.sleep at line 3146, (2) tap on url bar to trigger Augmented request, (3) close keyboard to trigger the NPE. Test: atest InlineLoginActivityTest InlineAugmentedLoginActivityTest Fix: 153877905 Change-Id: Ibcf8f17417ec7a3fa854816783b63879c4d18669 (cherry picked from commit e763059a29c4b637ca926cbe69d54432f6910d83) --- .../com/android/server/autofill/Session.java | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index 9d1ad4239a246..b27c5d54a6fb3 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -717,10 +717,11 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState Consumer inlineSuggestionsRequestConsumer = mAssistReceiver.newAutofillRequestLocked(/*isInlineRequest=*/ true); if (inlineSuggestionsRequestConsumer != null) { + final AutofillId focusedId = mCurrentViewId; remoteRenderService.getInlineSuggestionsRendererInfo( new RemoteCallback((extras) -> { mInlineSessionController.onCreateInlineSuggestionsRequestLocked( - mCurrentViewId, inlineSuggestionsRequestConsumer, extras); + focusedId, inlineSuggestionsRequestConsumer, extras); } )); } @@ -2786,6 +2787,12 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState */ private boolean requestShowInlineSuggestionsLocked(@NonNull FillResponse response, @Nullable String filterText) { + if (mCurrentViewId == null) { + Log.w(TAG, "requestShowInlineSuggestionsLocked(): no view currently focused"); + return false; + } + final AutofillId focusedId = mCurrentViewId; + final Optional inlineSuggestionsRequest = mInlineSessionController.getInlineSuggestionsRequestLocked(); if (!inlineSuggestionsRequest.isPresent()) { @@ -2800,17 +2807,17 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return false; } - final ViewState currentView = mViewStates.get(mCurrentViewId); + final ViewState currentView = mViewStates.get(focusedId); if ((currentView.getState() & ViewState.STATE_INLINE_DISABLED) != 0) { response.getDatasets().clear(); } InlineSuggestionsResponse inlineSuggestionsResponse = InlineSuggestionFactory.createInlineSuggestionsResponse( - inlineSuggestionsRequest.get(), response, filterText, mCurrentViewId, + inlineSuggestionsRequest.get(), response, filterText, focusedId, this, () -> { synchronized (mLock) { mInlineSessionController.hideInlineSuggestionsUiLocked( - mCurrentViewId); + focusedId); } }, remoteRenderService); if (inlineSuggestionsResponse == null) { @@ -2818,7 +2825,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState return false; } - return mInlineSessionController.onInlineSuggestionsResponseLocked(mCurrentViewId, + return mInlineSessionController.onInlineSuggestionsResponseLocked(focusedId, inlineSuggestionsResponse); } @@ -3107,19 +3114,19 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState remoteService.getComponentName().getPackageName()); mAugmentedRequestsLogs.add(log); - final AutofillId focusedId = AutofillId.withoutSession(mCurrentViewId); + final AutofillId focusedId = mCurrentViewId; final Consumer requestAugmentedAutofill = (inlineSuggestionsRequest) -> { remoteService.onRequestAutofillLocked(id, mClient, taskId, mComponentName, - focusedId, + AutofillId.withoutSession(focusedId), currentValue, inlineSuggestionsRequest, /*inlineSuggestionsCallback=*/ response -> { synchronized (mLock) { return mInlineSessionController .onInlineSuggestionsResponseLocked( - mCurrentViewId, response); + focusedId, response); } }, /*onErrorCallback=*/ () -> { @@ -3144,7 +3151,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState remoteRenderService.getInlineSuggestionsRendererInfo(new RemoteCallback( (extras) -> { mInlineSessionController.onCreateInlineSuggestionsRequestLocked( - mCurrentViewId, /*requestConsumer=*/ requestAugmentedAutofill, + focusedId, /*requestConsumer=*/ requestAugmentedAutofill, extras); }, mHandler)); } else { From f103f34d2ebb0f9d194ca908c89dec1e5ed5cf88 Mon Sep 17 00:00:00 2001 From: Aran Ink Date: Mon, 20 Apr 2020 16:04:29 -0400 Subject: [PATCH 003/192] Ensure power menu overflow dismissed when dialog dismissed. Test: Manual -- pressing power button while power overflow menu is shown does not result in overflow menu still appearing on lock screen. Fixes: 154441764 Change-Id: Icc7d158a7ff78b06d2234a5a11eb10b3c75a5ba7 (cherry picked from commit 6560ab752dd54e5e8e6d5c756e52cd6984a522fa) --- .../systemui/globalactions/GlobalActionsDialog.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index 2c1bd2186dea1..d6df1940849be 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -2220,6 +2220,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, }) .start(); dismissPanel(); + dismissOverflow(); resetOrientation(); } @@ -2227,6 +2228,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mShowing = false; if (mControlsUiController != null) mControlsUiController.hide(); dismissPanel(); + dismissOverflow(); resetOrientation(); completeDismiss(); } @@ -2243,6 +2245,12 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } + private void dismissOverflow() { + if (mOverflowPopup != null) { + mOverflowPopup.dismiss(); + } + } + private void setRotationSuggestionsEnabled(boolean enabled) { try { final int userId = Binder.getCallingUserHandle().getIdentifier(); From e9418b6e095b3d989ee38f4eba2ea8c85535bd48 Mon Sep 17 00:00:00 2001 From: Michael Groover Date: Wed, 22 Apr 2020 09:32:47 -0700 Subject: [PATCH 004/192] Add READ_PHONE_STATE back to pregranted phone permissions When READ_PHONE_STATE was moved from a runtime permission to an install permission it was removed from the default phone permissions grant. Now that READ_PHONE_STATE has been reverted back to a runtime permission it needs to be added back to the list of phone permissions that are pregranted. Bug: 154572075 Bug: 154567729 Test: Verified com.google.shared.uid was granted READ_PHONE_STATE Change-Id: I0e0727ed92cbf881d89d56de4e509fb1a9073556 (cherry picked from commit 140e55b469483d110aad3f664ee08727a924e026) --- .../server/pm/permission/DefaultPermissionGrantPolicy.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java index 3805cdddbd8af..c70aa4b0e10f8 100644 --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -125,6 +125,7 @@ public final class DefaultPermissionGrantPolicy { static { + PHONE_PERMISSIONS.add(Manifest.permission.READ_PHONE_STATE); PHONE_PERMISSIONS.add(Manifest.permission.CALL_PHONE); PHONE_PERMISSIONS.add(Manifest.permission.READ_CALL_LOG); PHONE_PERMISSIONS.add(Manifest.permission.WRITE_CALL_LOG); From 9dae7fe94e69f3f8a9d1f066a28607ad809d70dd Mon Sep 17 00:00:00 2001 From: Michael Groover Date: Wed, 22 Apr 2020 09:32:47 -0700 Subject: [PATCH 005/192] Add READ_PHONE_STATE back to pregranted phone permissions When READ_PHONE_STATE was moved from a runtime permission to an install permission it was removed from the default phone permissions grant. Now that READ_PHONE_STATE has been reverted back to a runtime permission it needs to be added back to the list of phone permissions that are pregranted. Bug: 154572075 Bug: 154567729 Test: Verified com.google.shared.uid was granted READ_PHONE_STATE Change-Id: I0e0727ed92cbf881d89d56de4e509fb1a9073556 (cherry picked from commit 140e55b469483d110aad3f664ee08727a924e026) --- .../server/pm/permission/DefaultPermissionGrantPolicy.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java index 3805cdddbd8af..c70aa4b0e10f8 100644 --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -125,6 +125,7 @@ public final class DefaultPermissionGrantPolicy { static { + PHONE_PERMISSIONS.add(Manifest.permission.READ_PHONE_STATE); PHONE_PERMISSIONS.add(Manifest.permission.CALL_PHONE); PHONE_PERMISSIONS.add(Manifest.permission.READ_CALL_LOG); PHONE_PERMISSIONS.add(Manifest.permission.WRITE_CALL_LOG); From 1a6087f17a84775ae09d5f5ebe6db4a68872d703 Mon Sep 17 00:00:00 2001 From: Nandana Dutt Date: Mon, 1 Jun 2020 08:46:58 +0000 Subject: [PATCH 006/192] Revert "Flip ENABLE_DYNAMIC_PERMISSIONS." This reverts commit 6ab7f6e7a4ff180cd759c7b6c1e5c525587d3f31. Reason for revert: 157863128,157868785 BUG: 157863128,157868785 Change-Id: I9f10f4d98b0d6c122af9f7736de3d096ceb3fde9 (cherry picked from commit e784e680aa3a2367c8bd553377dd5eb6502ba4e5) --- .../java/com/android/server/uri/UriGrantsManagerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java index 3796c5fda411b..9476e9260c73f 100644 --- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java +++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java @@ -114,7 +114,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { private static final String TAG = "UriGrantsManagerService"; // Maximum number of persisted Uri grants a package is allowed private static final int MAX_PERSISTED_URI_GRANTS = 128; - private static final boolean ENABLE_DYNAMIC_PERMISSIONS = true; + private static final boolean ENABLE_DYNAMIC_PERMISSIONS = false; private final Object mLock = new Object(); private final H mH; From b4dd903a461b20459e44bbe5f84b5881db568eb5 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 3 Jun 2020 13:54:04 +0000 Subject: [PATCH 007/192] Revert "Flip ENABLE_DYNAMIC_PERMISSIONS, attempt #5." This reverts commit 836c7089f65da1b8f9ca00c40805aadb0dca569e. Reason for revert: 157863128 Bug: 157863128 Change-Id: I0ec7878c839b397252c975475b4c3a4ff144082e (cherry picked from commit 81ca65d7d506db354d88f103b6214dfacc89a143) --- .../java/com/android/server/uri/UriGrantsManagerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java index 5f6323369d0a5..c38d649ada9bd 100644 --- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java +++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java @@ -115,7 +115,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { private static final String TAG = "UriGrantsManagerService"; // Maximum number of persisted Uri grants a package is allowed private static final int MAX_PERSISTED_URI_GRANTS = 128; - private static final boolean ENABLE_DYNAMIC_PERMISSIONS = true; + private static final boolean ENABLE_DYNAMIC_PERMISSIONS = false; private final Object mLock = new Object(); private final H mH; From ab3fc4c7277c05b9b8732d7d1297ed4e73ef3ada Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Wed, 3 Jun 2020 16:39:02 +0000 Subject: [PATCH 008/192] Revert "Consolidating MODIFY_AUDIO_SETTINGS permission checks" This reverts commit 7fa00380257b394352cb65bc55cc6e5ec20828f2. Reason for revert: b/158054788 Bug:158054788 Change-Id: If2ef8b4499eea69e7e5f862a851da5414af067ea (cherry picked from commit d68173942c6a6db020bcb17c785086267edd2b96) --- .../android/server/audio/AudioService.java | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 279c063dd1128..f2577a7c21898 100755 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1908,8 +1908,11 @@ public class AudioService extends IAudioService.Stub /** @see AudioManager#adjustVolume(int, int) */ public void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags, String callingPackage, String caller) { + boolean hasModifyAudioSettings = + mContext.checkCallingPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS) + == PackageManager.PERMISSION_GRANTED; adjustSuggestedStreamVolume(direction, suggestedStreamType, flags, callingPackage, - caller, Binder.getCallingUid(), hasModifyAudioSettings(), VOL_ADJUST_NORMAL); + caller, Binder.getCallingUid(), hasModifyAudioSettings, VOL_ADJUST_NORMAL); } private void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags, @@ -2014,10 +2017,13 @@ public class AudioService extends IAudioService.Stub + "CHANGE_ACCESSIBILITY_VOLUME / callingPackage=" + callingPackage); return; } + final boolean hasModifyAudioSettings = + mContext.checkCallingPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS) + == PackageManager.PERMISSION_GRANTED; sVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_ADJUST_STREAM_VOL, streamType, direction/*val1*/, flags/*val2*/, callingPackage)); adjustStreamVolume(streamType, direction, flags, callingPackage, callingPackage, - Binder.getCallingUid(), hasModifyAudioSettings(), VOL_ADJUST_NORMAL); + Binder.getCallingUid(), hasModifyAudioSettings, VOL_ADJUST_NORMAL); } protected void adjustStreamVolume(int streamType, int direction, int flags, @@ -2528,10 +2534,13 @@ public class AudioService extends IAudioService.Stub + " MODIFY_AUDIO_ROUTING callingPackage=" + callingPackage); return; } + final boolean hasModifyAudioSettings = + mContext.checkCallingOrSelfPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS) + == PackageManager.PERMISSION_GRANTED; sVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_SET_STREAM_VOL, streamType, index/*val1*/, flags/*val2*/, callingPackage)); setStreamVolume(streamType, index, flags, callingPackage, callingPackage, - Binder.getCallingUid(), hasModifyAudioSettings()); + Binder.getCallingUid(), hasModifyAudioSettings); } private boolean canChangeAccessibilityVolume() { @@ -3197,7 +3206,8 @@ public class AudioService extends IAudioService.Stub ensureValidStreamType(streamType); final boolean isPrivileged = Binder.getCallingUid() == Process.SYSTEM_UID - || (hasModifyAudioSettings()) + || (mContext.checkCallingPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS) + == PackageManager.PERMISSION_GRANTED) || (mContext.checkCallingPermission(Manifest.permission.MODIFY_AUDIO_ROUTING) == PackageManager.PERMISSION_GRANTED); return (mStreamStates[streamType].getMinIndex(isPrivileged) + 5) / 10; @@ -4755,18 +4765,9 @@ public class AudioService extends IAudioService.Stub handler.sendMessageAtTime(handler.obtainMessage(msg, arg1, arg2, obj), time); } - private boolean hasModifyAudioSettings() { - return mContext.checkCallingPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS) - == PackageManager.PERMISSION_GRANTED; - } - - private boolean hasModifyAudioSettings(int pid, int uid) { - return mContext.checkPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS, pid, uid) - == PackageManager.PERMISSION_GRANTED; - } - boolean checkAudioSettingsPermission(String method) { - if (hasModifyAudioSettings()) { + if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS) + == PackageManager.PERMISSION_GRANTED) { return true; } String msg = "Audio Settings Permission Denial: " + method + " from pid=" @@ -7712,10 +7713,13 @@ public class AudioService extends IAudioService.Stub @Override public void adjustSuggestedStreamVolumeForUid(int streamType, int direction, int flags, String callingPackage, int uid, int pid) { + final boolean hasModifyAudioSettings = + mContext.checkPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS, pid, uid) + == PackageManager.PERMISSION_GRANTED; // direction and stream type swap here because the public // adjustSuggested has a different order than the other methods. adjustSuggestedStreamVolume(direction, streamType, flags, callingPackage, - callingPackage, uid, hasModifyAudioSettings(pid, uid), VOL_ADJUST_NORMAL); + callingPackage, uid, hasModifyAudioSettings, VOL_ADJUST_NORMAL); } @Override @@ -7726,15 +7730,21 @@ public class AudioService extends IAudioService.Stub direction/*val1*/, flags/*val2*/, new StringBuilder(callingPackage) .append(" uid:").append(uid).toString())); } + final boolean hasModifyAudioSettings = + mContext.checkPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS, pid, uid) + == PackageManager.PERMISSION_GRANTED; adjustStreamVolume(streamType, direction, flags, callingPackage, - callingPackage, uid, hasModifyAudioSettings(pid, uid), VOL_ADJUST_NORMAL); + callingPackage, uid, hasModifyAudioSettings, VOL_ADJUST_NORMAL); } @Override public void setStreamVolumeForUid(int streamType, int direction, int flags, String callingPackage, int uid, int pid) { + final boolean hasModifyAudioSettings = + mContext.checkPermission(Manifest.permission.MODIFY_AUDIO_SETTINGS, pid, uid) + == PackageManager.PERMISSION_GRANTED; setStreamVolume(streamType, direction, flags, callingPackage, callingPackage, uid, - hasModifyAudioSettings(pid, uid)); + hasModifyAudioSettings); } @Override From dd2185437d49b8fffc9e66f2d57e3496ded6b6ad Mon Sep 17 00:00:00 2001 From: Robert Snoeberger Date: Wed, 3 Jun 2020 18:48:19 +0000 Subject: [PATCH 009/192] Revert "Exception if receive move withouth down" This reverts commit a0a20dc23babe74e4ba59262323280367ad76185. Reason for revert: This is causing a number of fatal crashes in SystemUI. See b/158081578, b/158057055, b/158060735, and b/158061923. Fixes: 158081578 Fixes: 158057055 Fixes: 158060735 Fixes: 158061923 Change-Id: If7e6cd4ade3df540ba7d97d9265564132a235292 (cherry picked from commit 0ef6f01bd1f47594af77d5024a8115dfd2b46116) --- core/java/android/view/GestureDetector.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/core/java/android/view/GestureDetector.java b/core/java/android/view/GestureDetector.java index a9af59543c784..f6c72c4eefbc9 100644 --- a/core/java/android/view/GestureDetector.java +++ b/core/java/android/view/GestureDetector.java @@ -288,11 +288,6 @@ public class GestureDetector { */ private VelocityTracker mVelocityTracker; - /** - * True if the detector can throw exception when touch steam is unexpected . - */ - private boolean mExceptionForTouchStream; - /** * Consistency verifier for debugging purposes. */ @@ -472,8 +467,6 @@ public class GestureDetector { mTouchSlopSquare = touchSlop * touchSlop; mDoubleTapTouchSlopSquare = doubleTapTouchSlop * doubleTapTouchSlop; mDoubleTapSlopSquare = doubleTapSlop * doubleTapSlop; - mExceptionForTouchStream = context != null - && context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.R; } /** @@ -646,13 +639,6 @@ public class GestureDetector { break; case MotionEvent.ACTION_MOVE: - if (mExceptionForTouchStream && !mStillDown) { - throw new IllegalStateException("Incomplete event stream received: " - + "Received ACTION_MOVE before ACTION_DOWN. ACTION_DOWN must precede " - + "ACTION_MOVE following ACTION_UP or ACTION_CANCEL, or when this " - + "GestureDetector has not yet received any events."); - } - if (mInLongPress || mInContextClick) { break; } From 9531a4e1096d29465255acb3b6026148ddfe7914 Mon Sep 17 00:00:00 2001 From: Soonil Nagarkar Date: Mon, 8 Jun 2020 11:01:04 -0700 Subject: [PATCH 010/192] Fix logic for clients with no location permissions There are edge cases when this is possible, such as when the dialer's location permission is revoked at the end of an emergency call. Bug: 158445301 Test: presubmits Change-Id: I6f02f1e0651bb4775773b2e4290557dfa9165afd (cherry picked from commit 33bc954b4a4e5eb03dceab09f61a32159282f8c3) --- .../com/android/server/location/util/AppOpsHelper.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/services/core/java/com/android/server/location/util/AppOpsHelper.java b/services/core/java/com/android/server/location/util/AppOpsHelper.java index 8f1f27d756c4a..7b3f34461501a 100644 --- a/services/core/java/com/android/server/location/util/AppOpsHelper.java +++ b/services/core/java/com/android/server/location/util/AppOpsHelper.java @@ -127,6 +127,10 @@ public class AppOpsHelper { Preconditions.checkState(mAppOps != null); } + if (permissionLevel == LocationPermissions.PERMISSION_NONE) { + return false; + } + long identity = Binder.clearCallingIdentity(); try { return mAppOps.checkOpNoThrow( @@ -145,6 +149,10 @@ public class AppOpsHelper { */ public boolean noteLocationAccess(CallerIdentity identity, @PermissionLevel int permissionLevel) { + if (permissionLevel == LocationPermissions.PERMISSION_NONE) { + return false; + } + return noteOpNoThrow(LocationPermissions.asAppOp(permissionLevel), identity); } From bc519120b81d06f9eb3ebf0ae94ccd2e185d26b1 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Mon, 3 Aug 2020 22:29:16 +0000 Subject: [PATCH 011/192] Revert "Check cross-user interactions for permissions and app-op..." Revert "Add dedicated host side tests for permissions and appops" Revert submission 12102534-PermAppOpsCrossUserCheck Reason for revert: b/162582513 Reverted Changes: I04256a51e:Check cross-user interactions for permissions and ... Iea58db070:Add dedicated host side tests for permissions and ... Change-Id: I4823d6660f3ef403451a74612d961a0bdd477116 (cherry picked from commit 7fa1bd7f79c2e3d18990271ec512e380fca2d7e0) --- .../android/app/ActivityManagerInternal.java | 13 +-- .../com/android/server/am/ActiveServices.java | 6 +- .../com/android/server/am/UserController.java | 22 ++--- .../android/server/appop/AppOpsService.java | 73 ++-------------- .../com/android/server/appop/TEST_MAPPING | 3 - .../permission/PermissionManagerService.java | 86 +++++++------------ .../android/server/pm/permission/TEST_MAPPING | 19 ++-- 7 files changed, 60 insertions(+), 162 deletions(-) diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index 7fe567b5ce272..9cf0d2a3a36ae 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -52,23 +52,14 @@ public abstract class ActivityManagerInternal { * if in the same profile group. * Otherwise, {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} is required. */ - public static final int ALLOW_NON_FULL_IN_PROFILE_OR_FULL = 1; + public static final int ALLOW_NON_FULL_IN_PROFILE = 1; public static final int ALLOW_FULL_ONLY = 2; /** * Allows access to a caller with {@link android.Manifest.permission#INTERACT_ACROSS_PROFILES} * or {@link android.Manifest.permission#INTERACT_ACROSS_USERS} if in the same profile group. * Otherwise, {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} is required. */ - public static final int ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL = 3; - /** - * Requires {@link android.Manifest.permission#INTERACT_ACROSS_PROFILES}, - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS}, or - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} if in same profile group, - * otherwise {@link android.Manifest.permission#INTERACT_ACROSS_USERS} or - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}. (so this is an extension - * to {@link #ALLOW_NON_FULL}) - */ - public static final int ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL = 4; + public static final int ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE = 3; /** * Verify that calling app has access to the given provider. diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 1680963e26d12..33a92e6ad0acc 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -2559,12 +2559,12 @@ public final class ActiveServices { private int getAllowMode(Intent service, @Nullable String callingPackage) { if (callingPackage == null || service.getComponent() == null) { - return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE_OR_FULL; + return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE; } if (callingPackage.equals(service.getComponent().getPackageName())) { - return ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL; + return ActivityManagerInternal.ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE; } else { - return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE_OR_FULL; + return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE; } } diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 19b671e46b71f..0658e8139cc2c 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -23,11 +23,10 @@ import static android.app.ActivityManager.USER_OP_ERROR_IS_SYSTEM; import static android.app.ActivityManager.USER_OP_ERROR_RELATED_USERS_CANNOT_STOP; import static android.app.ActivityManager.USER_OP_IS_CURRENT; import static android.app.ActivityManager.USER_OP_SUCCESS; -import static android.app.ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL; -import static android.app.ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL; +import static android.app.ActivityManagerInternal.ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE; import static android.app.ActivityManagerInternal.ALLOW_FULL_ONLY; import static android.app.ActivityManagerInternal.ALLOW_NON_FULL; -import static android.app.ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE_OR_FULL; +import static android.app.ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE; import static android.os.Process.SHELL_UID; import static android.os.Process.SYSTEM_UID; @@ -1910,12 +1909,11 @@ class UserController implements Handler.Callback { callingUid, -1, true) != PackageManager.PERMISSION_GRANTED) { // If the caller does not have either permission, they are always doomed. allow = false; - } else if (allowMode == ALLOW_NON_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL) { + } else if (allowMode == ALLOW_NON_FULL) { // We are blanket allowing non-full access, you lucky caller! allow = true; - } else if (allowMode == ALLOW_NON_FULL_IN_PROFILE_OR_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL) { + } else if (allowMode == ALLOW_NON_FULL_IN_PROFILE + || allowMode == ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE) { // We may or may not allow this depending on whether the two users are // in the same profile. allow = isSameProfileGroup; @@ -1942,15 +1940,12 @@ class UserController implements Handler.Callback { builder.append("; this requires "); builder.append(INTERACT_ACROSS_USERS_FULL); if (allowMode != ALLOW_FULL_ONLY) { - if (allowMode == ALLOW_NON_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL - || isSameProfileGroup) { + if (allowMode == ALLOW_NON_FULL || isSameProfileGroup) { builder.append(" or "); builder.append(INTERACT_ACROSS_USERS); } if (isSameProfileGroup - && (allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL)) { + && allowMode == ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE) { builder.append(" or "); builder.append(INTERACT_ACROSS_PROFILES); } @@ -1977,8 +1972,7 @@ class UserController implements Handler.Callback { private boolean canInteractWithAcrossProfilesPermission( int allowMode, boolean isSameProfileGroup, int callingPid, int callingUid, String callingPackage) { - if (allowMode != ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL - && allowMode != ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL) { + if (allowMode != ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE) { return false; } if (!isSameProfileGroup) { diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 74f3daf50079e..e6480fc6cde8c 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -19,7 +19,6 @@ package com.android.server.appop; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; -import static android.app.ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL; import static android.app.AppOpsManager.CALL_BACK_ON_SWITCHED_OP; import static android.app.AppOpsManager.FILTER_BY_ATTRIBUTION_TAG; import static android.app.AppOpsManager.FILTER_BY_OP_NAMES; @@ -129,7 +128,6 @@ import android.provider.Settings; import android.util.ArrayMap; import android.util.ArraySet; import android.util.AtomicFile; -import android.util.EventLog; import android.util.KeyValueListParser; import android.util.LongSparseArray; import android.util.Pair; @@ -163,7 +161,6 @@ import com.android.server.LocalServices; import com.android.server.LockGuard; import com.android.server.SystemServerInitThreadPool; import com.android.server.SystemServiceManager; -import com.android.server.am.ActivityManagerService; import com.android.server.pm.PackageList; import com.android.server.pm.parsing.pkg.AndroidPackage; @@ -2200,11 +2197,8 @@ public class AppOpsService extends IAppOpsService.Stub { + " by uid " + Binder.getCallingUid()); } - int userId = UserHandle.getUserId(uid); - enforceManageAppOpsModes(Binder.getCallingPid(), Binder.getCallingUid(), uid); verifyIncomingOp(code); - verifyIncomingUser(userId); code = AppOpsManager.opToSwitch(code); if (permissionPolicyCallback == null) { @@ -2449,12 +2443,8 @@ public class AppOpsService extends IAppOpsService.Stub { private void setMode(int code, int uid, @NonNull String packageName, int mode, @Nullable IAppOpsCallback permissionPolicyCallback) { enforceManageAppOpsModes(Binder.getCallingPid(), Binder.getCallingUid(), uid); - - int userId = UserHandle.getUserId(uid); - verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); ArraySet repCbs = null; code = AppOpsManager.opToSwitch(code); @@ -2867,11 +2857,8 @@ public class AppOpsService extends IAppOpsService.Stub { private int checkOperationImpl(int code, int uid, String packageName, boolean raw) { - int userId = UserHandle.getUserId(uid); - verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -2990,15 +2977,10 @@ public class AppOpsService extends IAppOpsService.Stub { String proxiedAttributionTag, int proxyUid, String proxyPackageName, String proxyAttributionTag, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage) { - int proxiedUserId = UserHandle.getUserId(proxiedUid); - int proxyUserId = UserHandle.getUserId(proxyUid); - verifyIncomingUid(proxyUid); verifyIncomingOp(code); - verifyIncomingUser(proxiedUserId); - verifyIncomingUser(proxyUserId); - verifyIncomingPackage(proxiedPackageName, proxiedUserId); - verifyIncomingPackage(proxyPackageName, proxyUserId); + verifyIncomingPackage(proxiedPackageName, UserHandle.getUserId(proxiedUid)); + verifyIncomingPackage(proxyPackageName, UserHandle.getUserId(proxyUid)); String resolveProxyPackageName = resolvePackageName(proxyUid, proxyPackageName); if (resolveProxyPackageName == null) { @@ -3048,12 +3030,9 @@ public class AppOpsService extends IAppOpsService.Stub { private int noteOperationImpl(int code, int uid, @Nullable String packageName, @Nullable String attributionTag, boolean shouldCollectAsyncNotedOp, @Nullable String message, boolean shouldCollectMessage) { - int userId = UserHandle.getUserId(uid); - verifyIncomingUid(uid); verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3430,12 +3409,9 @@ public class AppOpsService extends IAppOpsService.Stub { public int startOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag, boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage) { - int userId = UserHandle.getUserId(uid); - verifyIncomingUid(uid); verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3515,12 +3491,9 @@ public class AppOpsService extends IAppOpsService.Stub { @Override public void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag) { - int userId = UserHandle.getUserId(uid); - verifyIncomingUid(uid); verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3749,33 +3722,6 @@ public class AppOpsService extends IAppOpsService.Stub { } } - private void verifyIncomingUser(@UserIdInt int userId) { - int callingUid = Binder.getCallingUid(); - int callingUserId = UserHandle.getUserId(callingUid); - int callingPid = Binder.getCallingPid(); - - if (callingUserId != userId) { - // Prevent endless loop between when checking appops inside of handleIncomingUser - if (Binder.getCallingPid() == ActivityManagerService.MY_PID) { - return; - } - long token = Binder.clearCallingIdentity(); - try { - try { - LocalServices.getService(ActivityManagerInternal.class).handleIncomingUser( - callingPid, callingUid, userId, /* allowAll */ false, - ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL, "appop operation", null); - } catch (Exception e) { - EventLog.writeEvent(0x534e4554, "153996875", "appop", userId); - - throw e; - } - } finally { - Binder.restoreCallingIdentity(token); - } - } - } - private @Nullable UidState getUidStateLocked(int uid, boolean edit) { UidState uidState = mUidStates.get(uid); if (uidState == null) { @@ -5855,11 +5801,8 @@ public class AppOpsService extends IAppOpsService.Stub { return false; } } - int userId = UserHandle.getUserId(uid); - verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); final String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { diff --git a/services/core/java/com/android/server/appop/TEST_MAPPING b/services/core/java/com/android/server/appop/TEST_MAPPING index a3e1b7a7e5c5e..84de25c06ebf2 100644 --- a/services/core/java/com/android/server/appop/TEST_MAPPING +++ b/services/core/java/com/android/server/appop/TEST_MAPPING @@ -6,9 +6,6 @@ { "name": "CtsAppOps2TestCases" }, - { - "name": "CtsAppOpHostTestCases" - }, { "name": "FrameworksServicesTests", "options": [ diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 6e0efb09aff33..be93b8f95b793 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -137,7 +137,6 @@ import com.android.server.LocalServices; import com.android.server.ServiceThread; import com.android.server.SystemConfig; import com.android.server.Watchdog; -import com.android.server.am.ActivityManagerService; import com.android.server.pm.ApexManager; import com.android.server.pm.PackageManagerServiceUtils; import com.android.server.pm.PackageSetting; @@ -922,16 +921,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { } final int uid = UserHandle.getUid(userId, pkg.getUid()); - - try { - enforceCrossUserOrProfilePermission(Binder.getCallingUid(), UserHandle.getUserId(uid), - false, false, "checkPermissionInternal"); - } catch (Exception e) { - EventLog.writeEvent(0x534e4554, "153996875", "checkPermission", uid); - - throw e; - } - final PackageSetting ps = (PackageSetting) mPackageManagerInt.getPackageSetting( pkg.getPackageName()); if (ps == null) { @@ -4399,7 +4388,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { } final int callingUserId = UserHandle.getUserId(callingUid); if (hasCrossUserPermission( - Binder.getCallingPid(), callingUid, callingUserId, userId, requireFullPermission, + callingUid, callingUserId, userId, requireFullPermission, requirePermissionWhenSameUser)) { return; } @@ -4426,54 +4415,37 @@ public class PermissionManagerService extends IPermissionManager.Stub { private void enforceCrossUserOrProfilePermission(int callingUid, int userId, boolean requireFullPermission, boolean checkShell, String message) { - int callingPid = Binder.getCallingPid(); - final int callingUserId = UserHandle.getUserId(callingUid); - if (userId < 0) { throw new IllegalArgumentException("Invalid userId " + userId); } - - if (callingUserId == userId) { + if (checkShell) { + PackageManagerServiceUtils.enforceShellRestriction(mUserManagerInt, + UserManager.DISALLOW_DEBUGGING_FEATURES, callingUid, userId); + } + final int callingUserId = UserHandle.getUserId(callingUid); + if (hasCrossUserPermission(callingUid, callingUserId, userId, requireFullPermission, + /*requirePermissionWhenSameUser= */ false)) { return; } - - // Prevent endless loop between when checking permission while checking a permission - if (callingPid == ActivityManagerService.MY_PID) { + final boolean isSameProfileGroup = isSameProfileGroup(callingUserId, userId); + if (isSameProfileGroup && PermissionChecker.checkPermissionForPreflight( + mContext, + android.Manifest.permission.INTERACT_ACROSS_PROFILES, + PermissionChecker.PID_UNKNOWN, + callingUid, + mPackageManagerInt.getPackage(callingUid).getPackageName()) + == PermissionChecker.PERMISSION_GRANTED) { return; } - - long token = Binder.clearCallingIdentity(); - try { - if (checkShell) { - PackageManagerServiceUtils.enforceShellRestriction(mUserManagerInt, - UserManager.DISALLOW_DEBUGGING_FEATURES, callingUid, userId); - } - if (hasCrossUserPermission(callingPid, callingUid, callingUserId, userId, - requireFullPermission, /*requirePermissionWhenSameUser= */ false)) { - return; - } - final boolean isSameProfileGroup = isSameProfileGroup(callingUserId, userId); - if (isSameProfileGroup && PermissionChecker.checkPermissionForPreflight( - mContext, - android.Manifest.permission.INTERACT_ACROSS_PROFILES, - PermissionChecker.PID_UNKNOWN, - callingUid, - mPackageManagerInt.getPackage(callingUid).getPackageName()) - == PermissionChecker.PERMISSION_GRANTED) { - return; - } - - String errorMessage = buildInvalidCrossUserOrProfilePermissionMessage( - message, requireFullPermission, isSameProfileGroup); - Slog.w(TAG, errorMessage); - throw new SecurityException(errorMessage); - } finally { - Binder.restoreCallingIdentity(token); - } + String errorMessage = buildInvalidCrossUserOrProfilePermissionMessage( + message, requireFullPermission, isSameProfileGroup); + Slog.w(TAG, errorMessage); + throw new SecurityException(errorMessage); } - private boolean hasCrossUserPermission(int callingPid, int callingUid, int callingUserId, - int userId, boolean requireFullPermission, boolean requirePermissionWhenSameUser) { + private boolean hasCrossUserPermission( + int callingUid, int callingUserId, int userId, boolean requireFullPermission, + boolean requirePermissionWhenSameUser) { if (!requirePermissionWhenSameUser && userId == callingUserId) { return true; } @@ -4481,11 +4453,15 @@ public class PermissionManagerService extends IPermissionManager.Stub { return true; } if (requireFullPermission) { - return mContext.checkPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL, - callingPid, callingUid) == PackageManager.PERMISSION_GRANTED; + return hasPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL); } - return mContext.checkPermission(android.Manifest.permission.INTERACT_ACROSS_USERS, - callingPid, callingUid) == PackageManager.PERMISSION_GRANTED; + return hasPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) + || hasPermission(Manifest.permission.INTERACT_ACROSS_USERS); + } + + private boolean hasPermission(String permission) { + return mContext.checkCallingOrSelfPermission(permission) + == PackageManager.PERMISSION_GRANTED; } private boolean isSameProfileGroup(@UserIdInt int callerUserId, @UserIdInt int userId) { diff --git a/services/core/java/com/android/server/pm/permission/TEST_MAPPING b/services/core/java/com/android/server/pm/permission/TEST_MAPPING index 65dc320eadc29..c0d71ac268530 100644 --- a/services/core/java/com/android/server/pm/permission/TEST_MAPPING +++ b/services/core/java/com/android/server/pm/permission/TEST_MAPPING @@ -17,6 +17,14 @@ } ] }, + { + "name": "CtsAppSecurityHostTestCases", + "options": [ + { + "include-filter": "android.appsecurity.cts.AppSecurityTests#rebootWithDuplicatePermission" + } + ] + }, { "name": "CtsPermission2TestCases", "options": [ @@ -28,17 +36,6 @@ } ] }, - { - "name": "CtsPermissionHostTestCases" - }, - { - "name": "CtsAppSecurityHostTestCases", - "options": [ - { - "include-filter": "android.appsecurity.cts.AppSecurityTests#rebootWithDuplicatePermission" - } - ] - }, { "name": "CtsStatsdHostTestCases", "options": [ From f41fbf544b87a140e5b0ed530870b696853ef44f Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Thu, 6 Aug 2020 09:24:13 -0400 Subject: [PATCH 012/192] setCurrentState(DESTROYED) called from main thread Also address timing issues with bouncing calls between 2 handlers. In particular, make sure that after a tile is DESTROYED, the state doesn't change anymore due to leftover refreshState calls. This sometimes would be caused as the result of an earlier tile added as a callback on something that replies on add. Test: atest TileServiceTest BooleanTileServiceTest Test: manual, open QSCustomizer that destroys tiles Test: atest com.android.systemui.qs Change-Id: Idd4dc21558c6a851132dae7d29fc383b0258922d (cherry picked from commit 466687dec94db39a3c97846d72362f66cbf9db5d) --- .../systemui/qs/tileimpl/QSTileImpl.java | 16 ++++++++++++-- .../systemui/qs/tileimpl/QSTileImplTest.java | 21 +++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java index d2aaaede3f4b3..255513a31c752 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java @@ -14,6 +14,7 @@ package com.android.systemui.qs.tileimpl; +import static androidx.lifecycle.Lifecycle.State.CREATED; import static androidx.lifecycle.Lifecycle.State.DESTROYED; import static androidx.lifecycle.Lifecycle.State.RESUMED; import static androidx.lifecycle.Lifecycle.State.STARTED; @@ -173,6 +174,7 @@ public abstract class QSTileImpl implements QSTile, Lifecy mState = newTileState(); mTmpState = newTileState(); + mUiHandler.post(() -> mLifecycle.setCurrentState(CREATED)); } protected final void resetStates() { @@ -453,6 +455,9 @@ public abstract class QSTileImpl implements QSTile, Lifecy if (DEBUG) Log.d(TAG, "handleSetListening true"); handleSetListening(listening); mUiHandler.post(() -> { + // This tile has been destroyed, the state should not change anymore and we + // should not refresh it anymore. + if (mLifecycle.getCurrentState().equals(DESTROYED)) return; mLifecycle.setCurrentState(RESUMED); refreshState(); // Ensure we get at least one refresh after listening. }); @@ -461,7 +466,11 @@ public abstract class QSTileImpl implements QSTile, Lifecy if (mListeners.remove(listener) && mListeners.size() == 0) { if (DEBUG) Log.d(TAG, "handleSetListening false"); handleSetListening(listening); - mUiHandler.post(() -> mLifecycle.setCurrentState(STARTED)); + mUiHandler.post(() -> { + // This tile has been destroyed, the state should not change anymore. + if (mLifecycle.getCurrentState().equals(DESTROYED)) return; + mLifecycle.setCurrentState(STARTED); + }); } } updateIsFullQs(); @@ -488,11 +497,14 @@ public abstract class QSTileImpl implements QSTile, Lifecy mQSLogger.logTileDestroyed(mTileSpec, "Handle destroy"); if (mListeners.size() != 0) { handleSetListening(false); + mListeners.clear(); } mCallbacks.clear(); mHandler.removeCallbacksAndMessages(null); // This will force it to be removed from all controllers that may have it registered. - mLifecycle.setCurrentState(DESTROYED); + mUiHandler.post(() -> { + mLifecycle.setCurrentState(DESTROYED); + }); } protected void checkIfRestrictionEnforcedByAdminOnly(State state, String userRestriction) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java index cccb65d112283..61a0d6c17eed5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java @@ -244,6 +244,8 @@ public class QSTileImplTest extends SysuiTestCase { assertNotEquals(DESTROYED, mTile.getLifecycle().getCurrentState()); mTile.handleDestroy(); + mTestableLooper.processAllMessages(); + assertEquals(DESTROYED, mTile.getLifecycle().getCurrentState()); } @@ -298,6 +300,25 @@ public class QSTileImplTest extends SysuiTestCase { assertNotEquals(DESTROYED, mTile.getLifecycle().getCurrentState()); } + @Test + public void testRefreshStateAfterDestroyedDoesNotCrash() { + mTile.destroy(); + mTile.refreshState(); + + mTestableLooper.processAllMessages(); + } + + @Test + public void testSetListeningAfterDestroyedDoesNotCrash() { + Object o = new Object(); + mTile.destroy(); + + mTile.setListening(o, true); + mTile.setListening(o, false); + + mTestableLooper.processAllMessages(); + } + private void assertEvent(UiEventLogger.UiEventEnum eventType, UiEventLoggerFake.FakeUiEvent fakeEvent) { assertEquals(eventType.getId(), fakeEvent.eventId); From 64a94be6b8b95b7186d20d90b1e47fb3af5ee16b Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Tue, 11 Aug 2020 17:00:45 +0000 Subject: [PATCH 013/192] Revert "Fix mute issue when changing audio routes" This reverts commit 288c3ed3c4fcb70bc42277b9821d6e9274a0e9e8. Reason for revert: b/163447106 Bug: 162480816 Test: make Change-Id: I3dcf3e3324ecae1279a03bb28c58194227d93745 (cherry picked from commit 59a0956e150045f7cf88ae414a8dd066265dd71f) --- .../android/server/audio/AudioService.java | 76 +++++-------------- 1 file changed, 19 insertions(+), 57 deletions(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index b94396634530e..23b09294260c2 100755 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1282,6 +1282,7 @@ public class AudioService extends IAudioService.Stub } if (isPlatformTelevision()) { + checkAddAllFixedVolumeDevices(AudioSystem.DEVICE_OUT_HDMI, caller); synchronized (mHdmiClientLock) { if (mHdmiManager != null && mHdmiPlaybackClient != null) { updateHdmiCecSinkLocked(mHdmiCecSink | false); @@ -1301,54 +1302,22 @@ public class AudioService extends IAudioService.Stub } } - /** - * Update volume states for the given device. - * - * This will initialize the volume index if no volume index is available. - * If the device is the currently routed device, fixed/full volume policies will be applied. - * - * @param device a single audio device, ensure that this is not a devices bitmask - * @param caller caller of this method - */ - private void updateVolumeStatesForAudioDevice(int device, String caller) { + private void checkAddAllFixedVolumeDevices(int device, String caller) { final int numStreamTypes = AudioSystem.getNumStreamTypes(); for (int streamType = 0; streamType < numStreamTypes; streamType++) { - updateVolumeStates(device, streamType, caller); - } - } + if (!mStreamStates[streamType].hasIndexForDevice(device)) { + // set the default value, if device is affected by a full/fix/abs volume rule, it + // will taken into account in checkFixedVolumeDevices() + mStreamStates[streamType].setIndex( + mStreamStates[mStreamVolumeAlias[streamType]] + .getIndex(AudioSystem.DEVICE_OUT_DEFAULT), + device, caller, true /*hasModifyAudioSettings*/); + } + mStreamStates[streamType].checkFixedVolumeDevices(); - /** - * Update volume states for the given device and given stream. - * - * This will initialize the volume index if no volume index is available. - * If the device is the currently routed device, fixed/full volume policies will be applied. - * - * @param device a single audio device, ensure that this is not a devices bitmask - * @param streamType streamType to be updated - * @param caller caller of this method - */ - private void updateVolumeStates(int device, int streamType, String caller) { - if (!mStreamStates[streamType].hasIndexForDevice(device)) { - // set the default value, if device is affected by a full/fix/abs volume rule, it - // will taken into account in checkFixedVolumeDevices() - mStreamStates[streamType].setIndex( - mStreamStates[mStreamVolumeAlias[streamType]] - .getIndex(AudioSystem.DEVICE_OUT_DEFAULT), - device, caller, true /*hasModifyAudioSettings*/); - } - - // Check if device to be updated is routed for the given audio stream - List devicesForAttributes = getDevicesForAttributes( - new AudioAttributes.Builder().setInternalLegacyStreamType(streamType).build()); - for (AudioDeviceAttributes deviceAttributes : devicesForAttributes) { - if (deviceAttributes.getType() == AudioDeviceInfo.convertInternalDeviceToDeviceType( - device)) { - mStreamStates[streamType].checkFixedVolumeDevices(); - - // Unmute streams if required if device is full volume - if (isStreamMute(streamType) && mFullVolumeDevices.contains(device)) { - mStreamStates[streamType].mute(false); - } + // Unmute streams if device is full volume + if (mFullVolumeDevices.contains(device)) { + mStreamStates[streamType].mute(false); } } } @@ -4932,15 +4901,7 @@ public class AudioService extends IAudioService.Stub synchronized (VolumeStreamState.class) { for (int stream = 0; stream < mStreamStates.length; stream++) { if (stream != skipStream) { - int devices = mStreamStates[stream].observeDevicesForStream_syncVSS( - false /*checkOthers*/); - - Set devicesSet = AudioSystem.generateAudioDeviceTypesSet(devices); - for (Integer device : devicesSet) { - // Update volume states for devices routed for the stream - updateVolumeStates(device, stream, - "AudioService#observeDevicesForStreams"); - } + mStreamStates[stream].observeDevicesForStream_syncVSS(false /*checkOthers*/); } } } @@ -5009,7 +4970,7 @@ public class AudioService extends IAudioService.Stub + Integer.toHexString(audioSystemDeviceOut) + " from:" + caller)); // make sure we have a volume entry for this device, and that volume is updated according // to volume behavior - updateVolumeStatesForAudioDevice(audioSystemDeviceOut, "setDeviceVolumeBehavior:" + caller); + checkAddAllFixedVolumeDevices(audioSystemDeviceOut, "setDeviceVolumeBehavior:" + caller); } /** @@ -7231,9 +7192,10 @@ public class AudioService extends IAudioService.Stub // HDMI output removeAudioSystemDeviceOutFromFullVolumeDevices(AudioSystem.DEVICE_OUT_HDMI); } - updateVolumeStatesForAudioDevice(AudioSystem.DEVICE_OUT_HDMI, - "HdmiPlaybackClient.DisplayStatusCallback"); } + + checkAddAllFixedVolumeDevices(AudioSystem.DEVICE_OUT_HDMI, + "HdmiPlaybackClient.DisplayStatusCallback"); } private class MyHdmiControlStatusChangeListenerCallback From c5142d72eb3d0f9fbc76f641af4ada59e090e071 Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Mon, 17 Aug 2020 23:32:41 +0000 Subject: [PATCH 014/192] Revert "AudioService: fix internal use of getDevicesForAttributes()" Revert submission 12354482-fix_getDevicesForAttributes_internal Reason for revert: SC blocking bug: 163642647 Reverted Changes: I5b58be3e6:Revert "Revert "Fix mute issue when changing audio... I864e42e69:AudioService: fix internal use of getDevicesForAtt... Change-Id: I3eefec4a7af2f64ae0e9a6d89544b19610e51643 (cherry picked from commit 82b16fedb98f558c22ae71444ccb8fdcfa2b4df8) --- .../core/java/com/android/server/audio/AudioService.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index bf7c68a845c50..7a8a7c9404de1 100755 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1339,7 +1339,7 @@ public class AudioService extends IAudioService.Stub } // Check if device to be updated is routed for the given audio stream - List devicesForAttributes = getDevicesForAttributesInt( + List devicesForAttributes = getDevicesForAttributes( new AudioAttributes.Builder().setInternalLegacyStreamType(streamType).build()); for (AudioDeviceAttributes deviceAttributes : devicesForAttributes) { if (deviceAttributes.getType() == AudioDeviceInfo.convertInternalDeviceToDeviceType( @@ -1899,13 +1899,8 @@ public class AudioService extends IAudioService.Stub /** @see AudioManager#getDevicesForAttributes(AudioAttributes) */ public @NonNull ArrayList getDevicesForAttributes( @NonNull AudioAttributes attributes) { - enforceModifyAudioRoutingPermission(); - return getDevicesForAttributesInt(attributes); - } - - protected @NonNull ArrayList getDevicesForAttributesInt( - @NonNull AudioAttributes attributes) { Objects.requireNonNull(attributes); + enforceModifyAudioRoutingPermission(); return AudioSystem.getDevicesForAttributes(attributes); } From 6db2d3c8a3b2d6986775be8d3cce424cd792a530 Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Mon, 17 Aug 2020 23:32:41 +0000 Subject: [PATCH 015/192] Revert^2 "Revert "Fix mute issue when changing audio routes"" Reason for revert: SC blocking bug: 163642647 668745be054bb1a5bfe9341529f5aa285464a3a4 Change-Id: Id1ee584fdaf66a551e70c80a8779dd4c6bf693bb (cherry picked from commit 2efbc184af6b5120067307eb3dded126628c7e5a) --- .../android/server/audio/AudioService.java | 76 +++++-------------- 1 file changed, 19 insertions(+), 57 deletions(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 7a8a7c9404de1..0a179e89f7571 100755 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1283,6 +1283,7 @@ public class AudioService extends IAudioService.Stub } if (isPlatformTelevision()) { + checkAddAllFixedVolumeDevices(AudioSystem.DEVICE_OUT_HDMI, caller); synchronized (mHdmiClientLock) { if (mHdmiManager != null && mHdmiPlaybackClient != null) { updateHdmiCecSinkLocked(mHdmiCecSink | false); @@ -1302,54 +1303,22 @@ public class AudioService extends IAudioService.Stub } } - /** - * Update volume states for the given device. - * - * This will initialize the volume index if no volume index is available. - * If the device is the currently routed device, fixed/full volume policies will be applied. - * - * @param device a single audio device, ensure that this is not a devices bitmask - * @param caller caller of this method - */ - private void updateVolumeStatesForAudioDevice(int device, String caller) { + private void checkAddAllFixedVolumeDevices(int device, String caller) { final int numStreamTypes = AudioSystem.getNumStreamTypes(); for (int streamType = 0; streamType < numStreamTypes; streamType++) { - updateVolumeStates(device, streamType, caller); - } - } + if (!mStreamStates[streamType].hasIndexForDevice(device)) { + // set the default value, if device is affected by a full/fix/abs volume rule, it + // will taken into account in checkFixedVolumeDevices() + mStreamStates[streamType].setIndex( + mStreamStates[mStreamVolumeAlias[streamType]] + .getIndex(AudioSystem.DEVICE_OUT_DEFAULT), + device, caller, true /*hasModifyAudioSettings*/); + } + mStreamStates[streamType].checkFixedVolumeDevices(); - /** - * Update volume states for the given device and given stream. - * - * This will initialize the volume index if no volume index is available. - * If the device is the currently routed device, fixed/full volume policies will be applied. - * - * @param device a single audio device, ensure that this is not a devices bitmask - * @param streamType streamType to be updated - * @param caller caller of this method - */ - private void updateVolumeStates(int device, int streamType, String caller) { - if (!mStreamStates[streamType].hasIndexForDevice(device)) { - // set the default value, if device is affected by a full/fix/abs volume rule, it - // will taken into account in checkFixedVolumeDevices() - mStreamStates[streamType].setIndex( - mStreamStates[mStreamVolumeAlias[streamType]] - .getIndex(AudioSystem.DEVICE_OUT_DEFAULT), - device, caller, true /*hasModifyAudioSettings*/); - } - - // Check if device to be updated is routed for the given audio stream - List devicesForAttributes = getDevicesForAttributes( - new AudioAttributes.Builder().setInternalLegacyStreamType(streamType).build()); - for (AudioDeviceAttributes deviceAttributes : devicesForAttributes) { - if (deviceAttributes.getType() == AudioDeviceInfo.convertInternalDeviceToDeviceType( - device)) { - mStreamStates[streamType].checkFixedVolumeDevices(); - - // Unmute streams if required if device is full volume - if (isStreamMute(streamType) && mFullVolumeDevices.contains(device)) { - mStreamStates[streamType].mute(false); - } + // Unmute streams if device is full volume + if (mFullVolumeDevices.contains(device)) { + mStreamStates[streamType].mute(false); } } } @@ -4947,15 +4916,7 @@ public class AudioService extends IAudioService.Stub synchronized (VolumeStreamState.class) { for (int stream = 0; stream < mStreamStates.length; stream++) { if (stream != skipStream) { - int devices = mStreamStates[stream].observeDevicesForStream_syncVSS( - false /*checkOthers*/); - - Set devicesSet = AudioSystem.generateAudioDeviceTypesSet(devices); - for (Integer device : devicesSet) { - // Update volume states for devices routed for the stream - updateVolumeStates(device, stream, - "AudioService#observeDevicesForStreams"); - } + mStreamStates[stream].observeDevicesForStream_syncVSS(false /*checkOthers*/); } } } @@ -5024,7 +4985,7 @@ public class AudioService extends IAudioService.Stub + Integer.toHexString(audioSystemDeviceOut) + " from:" + caller)); // make sure we have a volume entry for this device, and that volume is updated according // to volume behavior - updateVolumeStatesForAudioDevice(audioSystemDeviceOut, "setDeviceVolumeBehavior:" + caller); + checkAddAllFixedVolumeDevices(audioSystemDeviceOut, "setDeviceVolumeBehavior:" + caller); } /** @@ -7246,9 +7207,10 @@ public class AudioService extends IAudioService.Stub // HDMI output removeAudioSystemDeviceOutFromFullVolumeDevices(AudioSystem.DEVICE_OUT_HDMI); } - updateVolumeStatesForAudioDevice(AudioSystem.DEVICE_OUT_HDMI, - "HdmiPlaybackClient.DisplayStatusCallback"); } + + checkAddAllFixedVolumeDevices(AudioSystem.DEVICE_OUT_HDMI, + "HdmiPlaybackClient.DisplayStatusCallback"); } private class MyHdmiControlStatusChangeListenerCallback From 800061ff6597795a7c3269d28ffad7be9afb646a Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Mon, 17 Aug 2020 23:32:41 +0000 Subject: [PATCH 016/192] Revert "AudioService: fix internal use of getDevicesForAttributes()" Revert submission 12354482-fix_getDevicesForAttributes_internal Reason for revert: SC blocking bug: 163642647 Reverted Changes: I5b58be3e6:Revert "Revert "Fix mute issue when changing audio... I864e42e69:AudioService: fix internal use of getDevicesForAtt... Change-Id: I3eefec4a7af2f64ae0e9a6d89544b19610e51643 (cherry picked from commit 82b16fedb98f558c22ae71444ccb8fdcfa2b4df8) --- .../core/java/com/android/server/audio/AudioService.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index bf7c68a845c50..7a8a7c9404de1 100755 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1339,7 +1339,7 @@ public class AudioService extends IAudioService.Stub } // Check if device to be updated is routed for the given audio stream - List devicesForAttributes = getDevicesForAttributesInt( + List devicesForAttributes = getDevicesForAttributes( new AudioAttributes.Builder().setInternalLegacyStreamType(streamType).build()); for (AudioDeviceAttributes deviceAttributes : devicesForAttributes) { if (deviceAttributes.getType() == AudioDeviceInfo.convertInternalDeviceToDeviceType( @@ -1899,13 +1899,8 @@ public class AudioService extends IAudioService.Stub /** @see AudioManager#getDevicesForAttributes(AudioAttributes) */ public @NonNull ArrayList getDevicesForAttributes( @NonNull AudioAttributes attributes) { - enforceModifyAudioRoutingPermission(); - return getDevicesForAttributesInt(attributes); - } - - protected @NonNull ArrayList getDevicesForAttributesInt( - @NonNull AudioAttributes attributes) { Objects.requireNonNull(attributes); + enforceModifyAudioRoutingPermission(); return AudioSystem.getDevicesForAttributes(attributes); } From 3ef05a3be49f3228167cf951bed7e81980c8d239 Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Mon, 17 Aug 2020 23:32:41 +0000 Subject: [PATCH 017/192] Revert^2 "Revert "Fix mute issue when changing audio routes"" Reason for revert: SC blocking bug: 163642647 668745be054bb1a5bfe9341529f5aa285464a3a4 Change-Id: Id1ee584fdaf66a551e70c80a8779dd4c6bf693bb (cherry picked from commit 2efbc184af6b5120067307eb3dded126628c7e5a) --- .../android/server/audio/AudioService.java | 76 +++++-------------- 1 file changed, 19 insertions(+), 57 deletions(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 7a8a7c9404de1..0a179e89f7571 100755 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1283,6 +1283,7 @@ public class AudioService extends IAudioService.Stub } if (isPlatformTelevision()) { + checkAddAllFixedVolumeDevices(AudioSystem.DEVICE_OUT_HDMI, caller); synchronized (mHdmiClientLock) { if (mHdmiManager != null && mHdmiPlaybackClient != null) { updateHdmiCecSinkLocked(mHdmiCecSink | false); @@ -1302,54 +1303,22 @@ public class AudioService extends IAudioService.Stub } } - /** - * Update volume states for the given device. - * - * This will initialize the volume index if no volume index is available. - * If the device is the currently routed device, fixed/full volume policies will be applied. - * - * @param device a single audio device, ensure that this is not a devices bitmask - * @param caller caller of this method - */ - private void updateVolumeStatesForAudioDevice(int device, String caller) { + private void checkAddAllFixedVolumeDevices(int device, String caller) { final int numStreamTypes = AudioSystem.getNumStreamTypes(); for (int streamType = 0; streamType < numStreamTypes; streamType++) { - updateVolumeStates(device, streamType, caller); - } - } + if (!mStreamStates[streamType].hasIndexForDevice(device)) { + // set the default value, if device is affected by a full/fix/abs volume rule, it + // will taken into account in checkFixedVolumeDevices() + mStreamStates[streamType].setIndex( + mStreamStates[mStreamVolumeAlias[streamType]] + .getIndex(AudioSystem.DEVICE_OUT_DEFAULT), + device, caller, true /*hasModifyAudioSettings*/); + } + mStreamStates[streamType].checkFixedVolumeDevices(); - /** - * Update volume states for the given device and given stream. - * - * This will initialize the volume index if no volume index is available. - * If the device is the currently routed device, fixed/full volume policies will be applied. - * - * @param device a single audio device, ensure that this is not a devices bitmask - * @param streamType streamType to be updated - * @param caller caller of this method - */ - private void updateVolumeStates(int device, int streamType, String caller) { - if (!mStreamStates[streamType].hasIndexForDevice(device)) { - // set the default value, if device is affected by a full/fix/abs volume rule, it - // will taken into account in checkFixedVolumeDevices() - mStreamStates[streamType].setIndex( - mStreamStates[mStreamVolumeAlias[streamType]] - .getIndex(AudioSystem.DEVICE_OUT_DEFAULT), - device, caller, true /*hasModifyAudioSettings*/); - } - - // Check if device to be updated is routed for the given audio stream - List devicesForAttributes = getDevicesForAttributes( - new AudioAttributes.Builder().setInternalLegacyStreamType(streamType).build()); - for (AudioDeviceAttributes deviceAttributes : devicesForAttributes) { - if (deviceAttributes.getType() == AudioDeviceInfo.convertInternalDeviceToDeviceType( - device)) { - mStreamStates[streamType].checkFixedVolumeDevices(); - - // Unmute streams if required if device is full volume - if (isStreamMute(streamType) && mFullVolumeDevices.contains(device)) { - mStreamStates[streamType].mute(false); - } + // Unmute streams if device is full volume + if (mFullVolumeDevices.contains(device)) { + mStreamStates[streamType].mute(false); } } } @@ -4947,15 +4916,7 @@ public class AudioService extends IAudioService.Stub synchronized (VolumeStreamState.class) { for (int stream = 0; stream < mStreamStates.length; stream++) { if (stream != skipStream) { - int devices = mStreamStates[stream].observeDevicesForStream_syncVSS( - false /*checkOthers*/); - - Set devicesSet = AudioSystem.generateAudioDeviceTypesSet(devices); - for (Integer device : devicesSet) { - // Update volume states for devices routed for the stream - updateVolumeStates(device, stream, - "AudioService#observeDevicesForStreams"); - } + mStreamStates[stream].observeDevicesForStream_syncVSS(false /*checkOthers*/); } } } @@ -5024,7 +4985,7 @@ public class AudioService extends IAudioService.Stub + Integer.toHexString(audioSystemDeviceOut) + " from:" + caller)); // make sure we have a volume entry for this device, and that volume is updated according // to volume behavior - updateVolumeStatesForAudioDevice(audioSystemDeviceOut, "setDeviceVolumeBehavior:" + caller); + checkAddAllFixedVolumeDevices(audioSystemDeviceOut, "setDeviceVolumeBehavior:" + caller); } /** @@ -7246,9 +7207,10 @@ public class AudioService extends IAudioService.Stub // HDMI output removeAudioSystemDeviceOutFromFullVolumeDevices(AudioSystem.DEVICE_OUT_HDMI); } - updateVolumeStatesForAudioDevice(AudioSystem.DEVICE_OUT_HDMI, - "HdmiPlaybackClient.DisplayStatusCallback"); } + + checkAddAllFixedVolumeDevices(AudioSystem.DEVICE_OUT_HDMI, + "HdmiPlaybackClient.DisplayStatusCallback"); } private class MyHdmiControlStatusChangeListenerCallback From 4d69b073db18068a14e7273e977f8b6c5becbd80 Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Tue, 18 Aug 2020 16:32:58 -0400 Subject: [PATCH 018/192] Prevent dagger from hanging onto DozeService Evidently, dagger hangs on to classes marked with @Reusable. This is not desirable for DozeService. Instead, institute a better fix which is binding an interface implementation into its subcomponent, which is the part that needs DozeService to exist. We can't bind DozeService directly as Dagger complains that you can't bind classes that already exist in a parent scope. Binding an interface implementation, however, works well. Fixes: 165208002 Test: manual Change-Id: Iae061d636b6e4bdc8bc6a03e9c7daf900610d19f (cherry picked from commit 776f978fe0f16313109171d52a110ce8f69842f4) --- .../src/com/android/systemui/doze/DozeService.java | 5 +---- .../com/android/systemui/doze/dagger/DozeComponent.java | 3 ++- .../src/com/android/systemui/doze/dagger/DozeModule.java | 7 +++---- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java index 1a1cc072c6bf8..19b0ea1db04e5 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java @@ -33,9 +33,6 @@ import java.io.PrintWriter; import javax.inject.Inject; -import dagger.Reusable; - -@Reusable // Don't create multiple DozeServices. public class DozeService extends DreamService implements DozeMachine.Service, RequestDoze, PluginListener { private static final String TAG = "DozeService"; @@ -60,7 +57,7 @@ public class DozeService extends DreamService setWindowless(true); mPluginManager.addPluginListener(this, DozeServicePlugin.class, false /* allowMultiple */); - DozeComponent dozeComponent = mDozeComponentBuilder.build(); + DozeComponent dozeComponent = mDozeComponentBuilder.build(this); mDozeMachine = dozeComponent.getDozeMachine(); } diff --git a/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java b/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java index 247285434df9a..05050f905e606 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java +++ b/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java @@ -19,6 +19,7 @@ package com.android.systemui.doze.dagger; import com.android.systemui.doze.DozeMachine; import com.android.systemui.doze.DozeService; +import dagger.BindsInstance; import dagger.Subcomponent; /** @@ -30,7 +31,7 @@ public interface DozeComponent { /** Simple Builder for {@link DozeComponent}. */ @Subcomponent.Factory interface Builder { - DozeComponent build(); + DozeComponent build(@BindsInstance DozeMachine.Service dozeMachineService); } /** Supply a {@link DozeMachine}. */ diff --git a/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeModule.java b/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeModule.java index a12e280fcca6b..04f7c368fdc42 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeModule.java +++ b/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeModule.java @@ -33,7 +33,6 @@ import com.android.systemui.doze.DozeScreenBrightness; import com.android.systemui.doze.DozeScreenState; import com.android.systemui.doze.DozeScreenStatePreventingAdapter; import com.android.systemui.doze.DozeSensors; -import com.android.systemui.doze.DozeService; import com.android.systemui.doze.DozeSuspendScreenStatePreventingAdapter; import com.android.systemui.doze.DozeTriggers; import com.android.systemui.doze.DozeUi; @@ -52,9 +51,9 @@ public abstract class DozeModule { @Provides @DozeScope @WrappedService - static DozeMachine.Service providesWrappedService(DozeService dozeService, DozeHost dozeHost, - DozeParameters dozeParameters) { - DozeMachine.Service wrappedService = dozeService; + static DozeMachine.Service providesWrappedService(DozeMachine.Service dozeMachineService, + DozeHost dozeHost, DozeParameters dozeParameters) { + DozeMachine.Service wrappedService = dozeMachineService; wrappedService = new DozeBrightnessHostForwarder(wrappedService, dozeHost); wrappedService = DozeScreenStatePreventingAdapter.wrapIfNeeded( wrappedService, dozeParameters); From 24a872c7547af07212b9d80f28aa61b02223190a Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Tue, 18 Aug 2020 16:32:58 -0400 Subject: [PATCH 019/192] Prevent dagger from hanging onto DozeService Evidently, dagger hangs on to classes marked with @Reusable. This is not desirable for DozeService. Instead, institute a better fix which is binding an interface implementation into its subcomponent, which is the part that needs DozeService to exist. We can't bind DozeService directly as Dagger complains that you can't bind classes that already exist in a parent scope. Binding an interface implementation, however, works well. Fixes: 165208002 Test: manual Change-Id: Iae061d636b6e4bdc8bc6a03e9c7daf900610d19f (cherry picked from commit 776f978fe0f16313109171d52a110ce8f69842f4) --- .../src/com/android/systemui/doze/DozeService.java | 5 +---- .../com/android/systemui/doze/dagger/DozeComponent.java | 3 ++- .../src/com/android/systemui/doze/dagger/DozeModule.java | 7 +++---- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java index 1a1cc072c6bf8..19b0ea1db04e5 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeService.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeService.java @@ -33,9 +33,6 @@ import java.io.PrintWriter; import javax.inject.Inject; -import dagger.Reusable; - -@Reusable // Don't create multiple DozeServices. public class DozeService extends DreamService implements DozeMachine.Service, RequestDoze, PluginListener { private static final String TAG = "DozeService"; @@ -60,7 +57,7 @@ public class DozeService extends DreamService setWindowless(true); mPluginManager.addPluginListener(this, DozeServicePlugin.class, false /* allowMultiple */); - DozeComponent dozeComponent = mDozeComponentBuilder.build(); + DozeComponent dozeComponent = mDozeComponentBuilder.build(this); mDozeMachine = dozeComponent.getDozeMachine(); } diff --git a/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java b/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java index 247285434df9a..05050f905e606 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java +++ b/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeComponent.java @@ -19,6 +19,7 @@ package com.android.systemui.doze.dagger; import com.android.systemui.doze.DozeMachine; import com.android.systemui.doze.DozeService; +import dagger.BindsInstance; import dagger.Subcomponent; /** @@ -30,7 +31,7 @@ public interface DozeComponent { /** Simple Builder for {@link DozeComponent}. */ @Subcomponent.Factory interface Builder { - DozeComponent build(); + DozeComponent build(@BindsInstance DozeMachine.Service dozeMachineService); } /** Supply a {@link DozeMachine}. */ diff --git a/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeModule.java b/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeModule.java index a12e280fcca6b..04f7c368fdc42 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeModule.java +++ b/packages/SystemUI/src/com/android/systemui/doze/dagger/DozeModule.java @@ -33,7 +33,6 @@ import com.android.systemui.doze.DozeScreenBrightness; import com.android.systemui.doze.DozeScreenState; import com.android.systemui.doze.DozeScreenStatePreventingAdapter; import com.android.systemui.doze.DozeSensors; -import com.android.systemui.doze.DozeService; import com.android.systemui.doze.DozeSuspendScreenStatePreventingAdapter; import com.android.systemui.doze.DozeTriggers; import com.android.systemui.doze.DozeUi; @@ -52,9 +51,9 @@ public abstract class DozeModule { @Provides @DozeScope @WrappedService - static DozeMachine.Service providesWrappedService(DozeService dozeService, DozeHost dozeHost, - DozeParameters dozeParameters) { - DozeMachine.Service wrappedService = dozeService; + static DozeMachine.Service providesWrappedService(DozeMachine.Service dozeMachineService, + DozeHost dozeHost, DozeParameters dozeParameters) { + DozeMachine.Service wrappedService = dozeMachineService; wrappedService = new DozeBrightnessHostForwarder(wrappedService, dozeHost); wrappedService = DozeScreenStatePreventingAdapter.wrapIfNeeded( wrappedService, dozeParameters); From 10ff6dd8a7ff81781a9a281ee77a300b43ac957c Mon Sep 17 00:00:00 2001 From: Paul Hu Date: Thu, 20 Aug 2020 03:10:08 +0000 Subject: [PATCH 020/192] Revert "[RFPM05] Add UidNetdPermissionInfo class" This reverts commit 26263b3cd0f6855f6e38ab22da7d8e883133a5f4. Reason for revert: Regression in SW. Bug:162499840 Change-Id: I0e846efcc4fc06b53d97b2007e0d8e8f97c6ac10 (cherry picked from commit 93b584814160cec0f65ab11d06d90d658b177700) --- .../connectivity/PermissionMonitor.java | 111 ++++++------------ .../connectivity/PermissionMonitorTest.java | 91 +++++++------- 2 files changed, 80 insertions(+), 122 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java index 7f9b3c9fcff76..7202f0f401f9c 100644 --- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java +++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java @@ -56,6 +56,7 @@ import android.system.OsConstants; import android.util.ArraySet; import android.util.Log; import android.util.SparseArray; +import android.util.SparseIntArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; @@ -129,42 +130,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse } } - /** - * A data class to store each uid Netd permission information. Netd permissions includes - * PERMISSION_NETWORK, PERMISSION_SYSTEM, PERMISSION_INTERNET, PERMISSION_UPDATE_DEVICE_STATS - * and OR'd with the others. Default permission is PERMISSION_NONE and PERMISSION_UNINSTALLED - * will be set if all packages are removed from the uid. - */ - public static class UidNetdPermissionInfo { - private final int mNetdPermissions; - - UidNetdPermissionInfo() { - this(PERMISSION_NONE); - } - - UidNetdPermissionInfo(int permissions) { - mNetdPermissions = permissions; - } - - /** Plus given permissions and return new UidNetdPermissionInfo instance. */ - public UidNetdPermissionInfo plusNetdPermissions(int permissions) { - return new UidNetdPermissionInfo(mNetdPermissions | permissions); - } - - /** Return whether package is uninstalled. */ - public boolean isPackageUninstalled() { - return mNetdPermissions == PERMISSION_UNINSTALLED; - } - - /** Check that uid has given permissions */ - public boolean hasNetdPermissions(final int permissions) { - if (isPackageUninstalled()) return false; - if (permissions == PERMISSION_NONE) return true; - return (mNetdPermissions & permissions) == permissions; - } - } - - public PermissionMonitor(Context context, INetd netd) { + public PermissionMonitor(@NonNull final Context context, @NonNull final INetd netd) { this(context, netd, new Dependencies()); } @@ -195,7 +161,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse return; } - final SparseArray netdPermsUids = new SparseArray<>(); + SparseIntArray netdPermsUids = new SparseIntArray(); for (PackageInfo app : apps) { int uid = app.applicationInfo != null ? app.applicationInfo.uid : INVALID_UID; @@ -217,13 +183,9 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse } } - // Skip already checked uid. - if (netdPermsUids.get(uid) != null) continue; - //TODO: unify the management of the permissions into one codepath. - final UidNetdPermissionInfo permInfo = - new UidNetdPermissionInfo(getNetdPermissionMask(uid)); - netdPermsUids.put(uid, permInfo); + final int otherNetdPerms = getNetdPermissionMask(uid); + netdPermsUids.put(uid, netdPermsUids.get(uid) | otherNetdPerms); } List users = mUserManager.getUsers(true); // exclude dying users @@ -245,10 +207,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse ? PERMISSION_UPDATE_DEVICE_STATS : 0; netdPermission |= perms.contains(INTERNET) ? PERMISSION_INTERNET : 0; } - final UidNetdPermissionInfo permInfo = netdPermsUids.get(uid); - netdPermsUids.put(uid, permInfo != null - ? permInfo.plusNetdPermissions(netdPermission) - : new UidNetdPermissionInfo(netdPermission)); + netdPermsUids.put(uid, netdPermsUids.get(uid) | netdPermission); } log("Users: " + mUsers.size() + ", Apps: " + mApps.size()); update(mUsers, mApps, true); @@ -382,15 +341,15 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse return currentPermission; } - private UidNetdPermissionInfo getPermissionForUid(final int uid) { + private int getPermissionForUid(final int uid) { // Check all the packages for this UID. The UID has the permission if any of the // packages in it has the permission. final String[] packages = mPackageManager.getPackagesForUid(uid); if (packages == null || packages.length <= 0) { // The last package of this uid is removed from device. Clean the package up. - return new UidNetdPermissionInfo(PERMISSION_UNINSTALLED); + return PERMISSION_UNINSTALLED; } - return new UidNetdPermissionInfo(getNetdPermissionMask(uid)); + return getNetdPermissionMask(uid); } /** @@ -640,28 +599,28 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse * permission information to netd. * * @param uid the app uid of the package installed - * @param permissionInfo the permission info of given uid. + * @param permissions the permissions the app requested and netd cares about. * * @hide */ @VisibleForTesting - void sendPackagePermissionsForUid(int uid, UidNetdPermissionInfo permissionInfo) { - final SparseArray uidsPermInfo = new SparseArray<>(); - uidsPermInfo.put(uid, permissionInfo); - sendPackagePermissionsToNetd(uidsPermInfo); + void sendPackagePermissionsForUid(int uid, int permissions) { + SparseIntArray netdPermissionsAppIds = new SparseIntArray(); + netdPermissionsAppIds.put(uid, permissions); + sendPackagePermissionsToNetd(netdPermissionsAppIds); } /** * Called by packageManagerService to send IPC to netd. Grant or revoke the INTERNET * and/or UPDATE_DEVICE_STATS permission of the uids in array. * - * @param uidsPermInfo permission info array generated from each uid. If the uid permission is - * PERMISSION_NONE or PERMISSION_UNINSTALLED, revoke all permissions of that - * uid. + * @param netdPermissionsAppIds integer pairs of uids and the permission granted to it. If the + * permission is 0, revoke all permissions of that uid. + * * @hide */ @VisibleForTesting - void sendPackagePermissionsToNetd(final SparseArray uidsPermInfo) { + void sendPackagePermissionsToNetd(SparseIntArray netdPermissionsAppIds) { if (mNetd == null) { Log.e(TAG, "Failed to get the netd service"); return; @@ -671,20 +630,26 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse ArrayList updateStatsPermissionAppIds = new ArrayList<>(); ArrayList noPermissionAppIds = new ArrayList<>(); ArrayList uninstalledAppIds = new ArrayList<>(); - for (int i = 0; i < uidsPermInfo.size(); i++) { - final int uid = uidsPermInfo.keyAt(i); - final UidNetdPermissionInfo permInfo = uidsPermInfo.valueAt(i); - if (permInfo.hasNetdPermissions( - PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS)) { - allPermissionAppIds.add(uid); - } else if (permInfo.hasNetdPermissions(PERMISSION_INTERNET)) { - internetPermissionAppIds.add(uid); - } else if (permInfo.hasNetdPermissions(PERMISSION_UPDATE_DEVICE_STATS)) { - updateStatsPermissionAppIds.add(uid); - } else if (permInfo.isPackageUninstalled()) { - uninstalledAppIds.add(uid); - } else { - noPermissionAppIds.add(uid); + for (int i = 0; i < netdPermissionsAppIds.size(); i++) { + int permissions = netdPermissionsAppIds.valueAt(i); + switch(permissions) { + case (PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS): + allPermissionAppIds.add(netdPermissionsAppIds.keyAt(i)); + break; + case PERMISSION_INTERNET: + internetPermissionAppIds.add(netdPermissionsAppIds.keyAt(i)); + break; + case PERMISSION_UPDATE_DEVICE_STATS: + updateStatsPermissionAppIds.add(netdPermissionsAppIds.keyAt(i)); + break; + case PERMISSION_NONE: + noPermissionAppIds.add(netdPermissionsAppIds.keyAt(i)); + break; + case PERMISSION_UNINSTALLED: + uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i)); + default: + Log.e(TAG, "unknown permission type: " + permissions + "for uid: " + + netdPermissionsAppIds.keyAt(i)); } } try { diff --git a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java index ab12ac0ef56e9..a384687e06f67 100644 --- a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java +++ b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java @@ -28,17 +28,11 @@ import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRODUCT; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_VENDOR; import static android.content.pm.PackageManager.GET_PERMISSIONS; import static android.content.pm.PackageManager.MATCH_ANY_USER; -import static android.net.INetd.PERMISSION_INTERNET; -import static android.net.INetd.PERMISSION_NONE; -import static android.net.INetd.PERMISSION_SYSTEM; -import static android.net.INetd.PERMISSION_UNINSTALLED; -import static android.net.INetd.PERMISSION_UPDATE_DEVICE_STATS; import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK; import static android.os.Process.SYSTEM_UID; import static com.android.server.connectivity.PermissionMonitor.NETWORK; import static com.android.server.connectivity.PermissionMonitor.SYSTEM; -import static com.android.server.connectivity.PermissionMonitor.UidNetdPermissionInfo; import static junit.framework.Assert.fail; @@ -69,7 +63,7 @@ import android.net.UidRange; import android.os.Build; import android.os.UserHandle; import android.os.UserManager; -import android.util.SparseArray; +import android.util.SparseIntArray; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; @@ -318,7 +312,7 @@ public class PermissionMonitorTest { // Add hook to verify and track result of setPermission. doAnswer((InvocationOnMock invocation) -> { final Object[] args = invocation.getArguments(); - final Boolean isSystem = args[0].equals(PERMISSION_SYSTEM); + final Boolean isSystem = args[0].equals(INetd.PERMISSION_SYSTEM); for (final int uid : (int[]) args[1]) { // TODO: Currently, permission monitor will send duplicate commands for each uid // corresponding to each user. Need to fix that and uncomment below test. @@ -561,40 +555,39 @@ public class PermissionMonitorTest { // SYSTEM_UID1: SYSTEM_PACKAGE1 has internet permission and update device stats permission. // SYSTEM_UID2: SYSTEM_PACKAGE2 has only update device stats permission. - final SparseArray uidsPermInfo = new SparseArray<>(); - uidsPermInfo.put(MOCK_UID1, new UidNetdPermissionInfo(PERMISSION_INTERNET)); - uidsPermInfo.put(MOCK_UID2, new UidNetdPermissionInfo(PERMISSION_NONE)); - uidsPermInfo.put(SYSTEM_UID1, new UidNetdPermissionInfo( - PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS)); - uidsPermInfo.put(SYSTEM_UID2, new UidNetdPermissionInfo(PERMISSION_UPDATE_DEVICE_STATS)); + SparseIntArray netdPermissionsAppIds = new SparseIntArray(); + netdPermissionsAppIds.put(MOCK_UID1, INetd.PERMISSION_INTERNET); + netdPermissionsAppIds.put(MOCK_UID2, INetd.PERMISSION_NONE); + netdPermissionsAppIds.put(SYSTEM_UID1, INetd.PERMISSION_INTERNET + | INetd.PERMISSION_UPDATE_DEVICE_STATS); + netdPermissionsAppIds.put(SYSTEM_UID2, INetd.PERMISSION_UPDATE_DEVICE_STATS); // Send the permission information to netd, expect permission updated. - mPermissionMonitor.sendPackagePermissionsToNetd(uidsPermInfo); + mPermissionMonitor.sendPackagePermissionsToNetd(netdPermissionsAppIds); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID1}); - mNetdServiceMonitor.expectPermission(PERMISSION_NONE, new int[]{MOCK_UID2}); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET - | PERMISSION_UPDATE_DEVICE_STATS, new int[]{SYSTEM_UID1}); - mNetdServiceMonitor.expectPermission(PERMISSION_UPDATE_DEVICE_STATS, + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_NONE, new int[]{MOCK_UID2}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET + | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{SYSTEM_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{SYSTEM_UID2}); // Update permission of MOCK_UID1, expect new permission show up. - mPermissionMonitor.sendPackagePermissionsForUid(MOCK_UID1, new UidNetdPermissionInfo( - PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS)); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET - | PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); + mPermissionMonitor.sendPackagePermissionsForUid(MOCK_UID1, + INetd.PERMISSION_INTERNET | INetd.PERMISSION_UPDATE_DEVICE_STATS); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET + | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); // Change permissions of SYSTEM_UID2, expect new permission show up and old permission // revoked. - mPermissionMonitor.sendPackagePermissionsForUid(SYSTEM_UID2, new UidNetdPermissionInfo( - PERMISSION_INTERNET)); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, new int[]{SYSTEM_UID2}); + mPermissionMonitor.sendPackagePermissionsForUid(SYSTEM_UID2, + INetd.PERMISSION_INTERNET); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{SYSTEM_UID2}); // Revoke permission from SYSTEM_UID1, expect no permission stored. - mPermissionMonitor.sendPackagePermissionsForUid(SYSTEM_UID1, new UidNetdPermissionInfo( - PERMISSION_NONE)); - mNetdServiceMonitor.expectPermission(PERMISSION_NONE, new int[]{SYSTEM_UID1}); + mPermissionMonitor.sendPackagePermissionsForUid(SYSTEM_UID1, INetd.PERMISSION_NONE); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_NONE, new int[]{SYSTEM_UID1}); } private PackageInfo setPackagePermissions(String packageName, int uid, String[] permissions) @@ -618,11 +611,11 @@ public class PermissionMonitorTest { final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET - | PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET + | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); addPackage(MOCK_PACKAGE2, MOCK_UID2, new String[] {INTERNET}); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, new int[]{MOCK_UID2}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID2}); } @Test @@ -630,8 +623,8 @@ public class PermissionMonitorTest { final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET - | PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET + | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); // Install another package with the same uid and no permissions should not cause the UID to // lose permissions. @@ -640,8 +633,8 @@ public class PermissionMonitorTest { when(mPackageManager.getPackagesForUid(MOCK_UID1)) .thenReturn(new String[]{MOCK_PACKAGE1, MOCK_PACKAGE2}); mPermissionMonitor.onPackageAdded(MOCK_PACKAGE2, MOCK_UID1); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET - | PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET + | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); } @Test @@ -649,12 +642,12 @@ public class PermissionMonitorTest { final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET - | PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET + | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{}); mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); - mNetdServiceMonitor.expectPermission(PERMISSION_UNINSTALLED, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_UNINSTALLED, new int[]{MOCK_UID1}); } @Test @@ -662,16 +655,16 @@ public class PermissionMonitorTest { final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET - | PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET + | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{}); removeAllPermissions(MOCK_UID1); mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); - mNetdServiceMonitor.expectPermission(PERMISSION_UNINSTALLED, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_UNINSTALLED, new int[]{MOCK_UID1}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET}); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID1}); } @Test @@ -679,10 +672,10 @@ public class PermissionMonitorTest { final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {}); - mNetdServiceMonitor.expectPermission(PERMISSION_NONE, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_NONE, new int[]{MOCK_UID1}); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET}); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID1}); } @Test @@ -690,8 +683,8 @@ public class PermissionMonitorTest { final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET - | PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET + | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); // Mock another package with the same uid but different permissions. final PackageInfo packageInfo2 = buildPackageInfo(PARTITION_SYSTEM, MOCK_UID1, MOCK_USER1); @@ -702,7 +695,7 @@ public class PermissionMonitorTest { addPermissions(MOCK_UID1, INTERNET); mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); - mNetdServiceMonitor.expectPermission(PERMISSION_INTERNET, new int[]{MOCK_UID1}); + mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID1}); } @Test From 302a6a3db66640a43b83c416d0f5e49fd2852abd Mon Sep 17 00:00:00 2001 From: Paul Hu Date: Thu, 20 Aug 2020 03:11:17 +0000 Subject: [PATCH 021/192] Revert "[RFPM04] Adjust hasRestrictedNetworkPermission method" This reverts commit 29100e889200c6d74ee7a120a1c356e2c89e48e2. Reason for revert: Regression in SW. Bug:162499840 Change-Id: I96bf28ffc9f2d8f3838cb6d2dac16f89a70177ed (cherry picked from commit 2878288b3ac1fb3df0208f31e8c7d84d749ad251) --- .../connectivity/PermissionMonitor.java | 33 +++-- .../connectivity/PermissionMonitorTest.java | 122 +++++++++--------- 2 files changed, 80 insertions(+), 75 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java index 7202f0f401f9c..f8774b1b0054d 100644 --- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java +++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java @@ -171,8 +171,8 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse mAllApps.add(UserHandle.getAppId(uid)); final boolean isNetwork = hasPermission(CHANGE_NETWORK_STATE, uid); - final boolean hasRestrictedPermission = hasRestrictedNetworkPermission(uid) - || isCarryoverPackage(app.applicationInfo); + final boolean hasRestrictedPermission = + hasRestrictedNetworkPermission(app.applicationInfo); if (isNetwork || hasRestrictedPermission) { Boolean permission = mApps.get(uid); @@ -200,7 +200,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse for (int i = 0; i < systemPermission.size(); i++) { ArraySet perms = systemPermission.valueAt(i); int uid = systemPermission.keyAt(i); - int netdPermission = PERMISSION_NONE; + int netdPermission = 0; // Get the uids of native services that have UPDATE_DEVICE_STATS or INTERNET permission. if (perms != null) { netdPermission |= perms.contains(UPDATE_DEVICE_STATS) @@ -225,21 +225,20 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse } @VisibleForTesting - // TODO : remove this check in the future(b/162295056). All apps should just request the - // appropriate permission for their use case since android Q. - boolean isCarryoverPackage(@Nullable final ApplicationInfo appInfo) { - if (appInfo == null) return false; - return (appInfo.targetSdkVersion < VERSION_Q && isVendorApp(appInfo)) + boolean hasRestrictedNetworkPermission(@Nullable final ApplicationInfo appInfo) { + if (appInfo == null) return false; + // TODO : remove this check in the future(b/162295056). All apps should just + // request the appropriate permission for their use case since android Q. + if ((appInfo.targetSdkVersion < VERSION_Q && isVendorApp(appInfo)) // Backward compatibility for b/114245686, on devices that launched before Q daemons // and apps running as the system UID are exempted from this check. - || (appInfo.uid == SYSTEM_UID && mDeps.getDeviceFirstSdkInt() < VERSION_Q); - } + || (appInfo.uid == SYSTEM_UID && mDeps.getDeviceFirstSdkInt() < VERSION_Q)) { + return true; + } - @VisibleForTesting - boolean hasRestrictedNetworkPermission(final int uid) { - return hasPermission(CONNECTIVITY_USE_RESTRICTED_NETWORKS, uid) - || hasPermission(PERMISSION_MAINLINE_NETWORK_STACK, uid) - || hasPermission(NETWORK_STACK, uid); + return hasPermission(PERMISSION_MAINLINE_NETWORK_STACK, appInfo.uid) + || hasPermission(NETWORK_STACK, appInfo.uid) + || hasPermission(CONNECTIVITY_USE_RESTRICTED_NETWORKS, appInfo.uid); } /** Returns whether the given uid has using background network permission. */ @@ -329,8 +328,8 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse try { final PackageInfo app = mPackageManager.getPackageInfo(name, GET_PERMISSIONS); final boolean isNetwork = hasPermission(CHANGE_NETWORK_STATE, uid); - final boolean hasRestrictedPermission = hasRestrictedNetworkPermission(uid) - || isCarryoverPackage(app.applicationInfo); + final boolean hasRestrictedPermission = + hasRestrictedNetworkPermission(app.applicationInfo); if (isNetwork || hasRestrictedPermission) { currentPermission = hasRestrictedPermission; } diff --git a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java index a384687e06f67..eb0a867d8ec19 100644 --- a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java +++ b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java @@ -28,7 +28,6 @@ import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRODUCT; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_VENDOR; import static android.content.pm.PackageManager.GET_PERMISSIONS; import static android.content.pm.PackageManager.MATCH_ANY_USER; -import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK; import static android.os.Process.SYSTEM_UID; import static com.android.server.connectivity.PermissionMonitor.NETWORK; @@ -139,10 +138,17 @@ public class PermissionMonitorTest { verify(mMockPmi).getPackageList(mPermissionMonitor); } - private boolean wouldBeCarryoverPackage(String partition, int targetSdkVersion, int uid) { + /** + * Remove all permissions from the uid then build new package info and setup permissions to uid + * for checking restricted network permission. + */ + private boolean hasRestrictedNetworkPermission(String partition, int targetSdkVersion, int uid, + String... permissions) { final PackageInfo packageInfo = buildPackageInfo(partition, uid, MOCK_USER1); packageInfo.applicationInfo.targetSdkVersion = targetSdkVersion; - return mPermissionMonitor.isCarryoverPackage(packageInfo.applicationInfo); + removeAllPermissions(uid); + addPermissions(uid, permissions); + return mPermissionMonitor.hasRestrictedNetworkPermission(packageInfo.applicationInfo); } private static PackageInfo packageInfoWithPartition(String partition) { @@ -222,57 +228,61 @@ public class PermissionMonitorTest { assertTrue(mPermissionMonitor.isVendorApp(app.applicationInfo)); } - /** - * Remove all permissions from the uid then setup permissions to uid for checking restricted - * network permission. - */ - private void assertRestrictedNetworkPermission(boolean hasPermission, int uid, - String... permissions) { - removeAllPermissions(uid); - addPermissions(uid, permissions); - assertEquals(hasPermission, mPermissionMonitor.hasRestrictedNetworkPermission(uid)); - } - @Test public void testHasRestrictedNetworkPermission() { - assertRestrictedNetworkPermission(false, MOCK_UID1); - assertRestrictedNetworkPermission(false, MOCK_UID1, CHANGE_NETWORK_STATE); - assertRestrictedNetworkPermission(true, MOCK_UID1, NETWORK_STACK); - assertRestrictedNetworkPermission(false, MOCK_UID1, CONNECTIVITY_INTERNAL); - assertRestrictedNetworkPermission(true, MOCK_UID1, CONNECTIVITY_USE_RESTRICTED_NETWORKS); - assertRestrictedNetworkPermission(false, MOCK_UID1, CHANGE_WIFI_STATE); - assertRestrictedNetworkPermission(true, MOCK_UID1, PERMISSION_MAINLINE_NETWORK_STACK); + assertFalse(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_P, MOCK_UID1)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CHANGE_NETWORK_STATE)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_P, MOCK_UID1, NETWORK_STACK)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CONNECTIVITY_INTERNAL)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_P, MOCK_UID1, CHANGE_WIFI_STATE)); - assertFalse(mPermissionMonitor.hasRestrictedNetworkPermission(MOCK_UID2)); - assertFalse(mPermissionMonitor.hasRestrictedNetworkPermission(SYSTEM_UID)); + assertFalse(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_Q, MOCK_UID1)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_Q, MOCK_UID1, CONNECTIVITY_INTERNAL)); } @Test - public void testIsCarryoverPackage() { + public void testHasRestrictedNetworkPermissionSystemUid() { doReturn(VERSION_P).when(mDeps).getDeviceFirstSdkInt(); - assertTrue(wouldBeCarryoverPackage(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID)); - assertTrue(wouldBeCarryoverPackage(PARTITION_VENDOR, VERSION_P, SYSTEM_UID)); - assertFalse(wouldBeCarryoverPackage(PARTITION_SYSTEM, VERSION_P, MOCK_UID1)); - assertTrue(wouldBeCarryoverPackage(PARTITION_VENDOR, VERSION_P, MOCK_UID1)); - assertTrue(wouldBeCarryoverPackage(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID)); - assertTrue(wouldBeCarryoverPackage(PARTITION_VENDOR, VERSION_Q, SYSTEM_UID)); - assertFalse(wouldBeCarryoverPackage(PARTITION_SYSTEM, VERSION_Q, MOCK_UID1)); - assertFalse(wouldBeCarryoverPackage(PARTITION_VENDOR, VERSION_Q, MOCK_UID1)); + assertTrue(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_P, SYSTEM_UID, CONNECTIVITY_INTERNAL)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_P, SYSTEM_UID, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); doReturn(VERSION_Q).when(mDeps).getDeviceFirstSdkInt(); - assertFalse(wouldBeCarryoverPackage(PARTITION_SYSTEM, VERSION_P, SYSTEM_UID)); - assertTrue(wouldBeCarryoverPackage(PARTITION_VENDOR, VERSION_P, SYSTEM_UID)); - assertFalse(wouldBeCarryoverPackage(PARTITION_SYSTEM, VERSION_P, MOCK_UID1)); - assertTrue(wouldBeCarryoverPackage(PARTITION_VENDOR, VERSION_P, MOCK_UID1)); - assertFalse(wouldBeCarryoverPackage(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID)); - assertFalse(wouldBeCarryoverPackage(PARTITION_VENDOR, VERSION_Q, SYSTEM_UID)); - assertFalse(wouldBeCarryoverPackage(PARTITION_SYSTEM, VERSION_Q, MOCK_UID1)); - assertFalse(wouldBeCarryoverPackage(PARTITION_VENDOR, VERSION_Q, MOCK_UID1)); + assertFalse(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID, CONNECTIVITY_INTERNAL)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_SYSTEM, VERSION_Q, SYSTEM_UID, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + } - assertFalse(wouldBeCarryoverPackage(PARTITION_OEM, VERSION_Q, SYSTEM_UID)); - assertFalse(wouldBeCarryoverPackage(PARTITION_PRODUCT, VERSION_Q, SYSTEM_UID)); - assertFalse(wouldBeCarryoverPackage(PARTITION_OEM, VERSION_Q, MOCK_UID1)); - assertFalse(wouldBeCarryoverPackage(PARTITION_PRODUCT, VERSION_Q, MOCK_UID1)); + @Test + public void testHasRestrictedNetworkPermissionVendorApp() { + assertTrue(hasRestrictedNetworkPermission(PARTITION_VENDOR, VERSION_P, MOCK_UID1)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_VENDOR, VERSION_P, MOCK_UID1, CHANGE_NETWORK_STATE)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_VENDOR, VERSION_P, MOCK_UID1, NETWORK_STACK)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_VENDOR, VERSION_P, MOCK_UID1, CONNECTIVITY_INTERNAL)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_VENDOR, VERSION_P, MOCK_UID1, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + assertTrue(hasRestrictedNetworkPermission( + PARTITION_VENDOR, VERSION_P, MOCK_UID1, CHANGE_WIFI_STATE)); + + assertFalse(hasRestrictedNetworkPermission(PARTITION_VENDOR, VERSION_Q, MOCK_UID1)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_VENDOR, VERSION_Q, MOCK_UID1, CONNECTIVITY_INTERNAL)); + assertFalse(hasRestrictedNetworkPermission( + PARTITION_VENDOR, VERSION_Q, MOCK_UID1, CHANGE_NETWORK_STATE)); } private void assertBackgroundPermission(boolean hasPermission, String name, int uid, @@ -286,23 +296,19 @@ public class PermissionMonitorTest { @Test public void testHasUseBackgroundNetworksPermission() throws Exception { - assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID1)); - assertBackgroundPermission(false, "mock1", MOCK_UID1); - assertBackgroundPermission(false, "mock2", MOCK_UID1, CONNECTIVITY_INTERNAL); - assertBackgroundPermission(true, "mock3", MOCK_UID1, NETWORK_STACK); - - assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID2)); - assertBackgroundPermission(false, "mock4", MOCK_UID2); - assertBackgroundPermission(true, "mock5", MOCK_UID2, - CONNECTIVITY_USE_RESTRICTED_NETWORKS); - doReturn(VERSION_Q).when(mDeps).getDeviceFirstSdkInt(); assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(SYSTEM_UID)); assertBackgroundPermission(false, "system1", SYSTEM_UID); - assertBackgroundPermission(true, "system2", SYSTEM_UID, CHANGE_NETWORK_STATE); - doReturn(VERSION_P).when(mDeps).getDeviceFirstSdkInt(); - removeAllPermissions(SYSTEM_UID); - assertBackgroundPermission(true, "system3", SYSTEM_UID); + assertBackgroundPermission(false, "system2", SYSTEM_UID, CONNECTIVITY_INTERNAL); + assertBackgroundPermission(true, "system3", SYSTEM_UID, CHANGE_NETWORK_STATE); + + assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID1)); + assertBackgroundPermission(false, "mock1", MOCK_UID1); + assertBackgroundPermission(true, "mock2", MOCK_UID1, CONNECTIVITY_USE_RESTRICTED_NETWORKS); + + assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID2)); + assertBackgroundPermission(false, "mock3", MOCK_UID2, CONNECTIVITY_INTERNAL); + assertBackgroundPermission(true, "mock4", MOCK_UID2, NETWORK_STACK); } private class NetdMonitor { From 2b25ff1cabe95705ed3117ec1288e9cbd03471fc Mon Sep 17 00:00:00 2001 From: Paul Hu Date: Thu, 20 Aug 2020 03:13:04 +0000 Subject: [PATCH 022/192] Revert "[RFPM03] Check permission by uid." This reverts commit ab4ad20eef8cb3176801f3a2a08ae635d869fa53. Reason for revert: Regression in SW. Bug:162499840 Change-Id: Ic93e762e41a728f66e200e5bc8e40ebe4c7b44f7 (cherry picked from commit 7e947abcb5fab96ac5373bb985c890305ccbdec4) --- .../connectivity/PermissionMonitor.java | 162 +++++++------- .../connectivity/PermissionMonitorTest.java | 204 ++++++++++-------- 2 files changed, 209 insertions(+), 157 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java index f8774b1b0054d..a75a80a606eb2 100644 --- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java +++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java @@ -21,23 +21,14 @@ import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS; import static android.Manifest.permission.INTERNET; import static android.Manifest.permission.NETWORK_STACK; import static android.Manifest.permission.UPDATE_DEVICE_STATS; +import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED; import static android.content.pm.PackageManager.GET_PERMISSIONS; import static android.content.pm.PackageManager.MATCH_ANY_USER; -import static android.net.INetd.PERMISSION_INTERNET; -import static android.net.INetd.PERMISSION_NETWORK; -import static android.net.INetd.PERMISSION_NONE; -import static android.net.INetd.PERMISSION_SYSTEM; -import static android.net.INetd.PERMISSION_UNINSTALLED; -import static android.net.INetd.PERMISSION_UPDATE_DEVICE_STATS; import static android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK; import static android.os.Process.INVALID_UID; import static android.os.Process.SYSTEM_UID; -import static com.android.internal.util.ArrayUtils.convertToIntArray; - import android.annotation.NonNull; -import android.annotation.Nullable; -import android.app.ActivityManager; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; @@ -60,6 +51,7 @@ import android.util.SparseIntArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.util.ArrayUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.SystemConfig; @@ -73,6 +65,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; + /** * A utility class to inform Netd of UID permisisons. * Does a mass update at boot and then monitors for app install/remove. @@ -121,13 +114,6 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse public int getDeviceFirstSdkInt() { return Build.VERSION.FIRST_SDK_INT; } - - /** - * Check whether given uid has specific permission. - */ - public int uidPermission(@NonNull final String permission, final int uid) { - return ActivityManager.checkUidPermission(permission, uid); - } } public PermissionMonitor(@NonNull final Context context, @NonNull final INetd netd) { @@ -170,9 +156,8 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse } mAllApps.add(UserHandle.getAppId(uid)); - final boolean isNetwork = hasPermission(CHANGE_NETWORK_STATE, uid); - final boolean hasRestrictedPermission = - hasRestrictedNetworkPermission(app.applicationInfo); + boolean isNetwork = hasNetworkPermission(app); + boolean hasRestrictedPermission = hasRestrictedNetworkPermission(app); if (isNetwork || hasRestrictedPermission) { Boolean permission = mApps.get(uid); @@ -184,7 +169,8 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse } //TODO: unify the management of the permissions into one codepath. - final int otherNetdPerms = getNetdPermissionMask(uid); + int otherNetdPerms = getNetdPermissionMask(app.requestedPermissions, + app.requestedPermissionsFlags); netdPermsUids.put(uid, netdPermsUids.get(uid) | otherNetdPerms); } @@ -204,8 +190,9 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse // Get the uids of native services that have UPDATE_DEVICE_STATS or INTERNET permission. if (perms != null) { netdPermission |= perms.contains(UPDATE_DEVICE_STATS) - ? PERMISSION_UPDATE_DEVICE_STATS : 0; - netdPermission |= perms.contains(INTERNET) ? PERMISSION_INTERNET : 0; + ? INetd.PERMISSION_UPDATE_DEVICE_STATS : 0; + netdPermission |= perms.contains(INTERNET) + ? INetd.PERMISSION_INTERNET : 0; } netdPermsUids.put(uid, netdPermsUids.get(uid) | netdPermission); } @@ -220,33 +207,48 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse } @VisibleForTesting - boolean hasPermission(@NonNull final String permission, final int uid) { - return mDeps.uidPermission(permission, uid) == PackageManager.PERMISSION_GRANTED; + boolean hasPermission(@NonNull final PackageInfo app, @NonNull final String permission) { + if (app.requestedPermissions == null || app.requestedPermissionsFlags == null) { + return false; + } + final int index = ArrayUtils.indexOf(app.requestedPermissions, permission); + if (index < 0 || index >= app.requestedPermissionsFlags.length) return false; + return (app.requestedPermissionsFlags[index] & REQUESTED_PERMISSION_GRANTED) != 0; } @VisibleForTesting - boolean hasRestrictedNetworkPermission(@Nullable final ApplicationInfo appInfo) { - if (appInfo == null) return false; - // TODO : remove this check in the future(b/162295056). All apps should just + boolean hasNetworkPermission(@NonNull final PackageInfo app) { + return hasPermission(app, CHANGE_NETWORK_STATE); + } + + @VisibleForTesting + boolean hasRestrictedNetworkPermission(@NonNull final PackageInfo app) { + // TODO : remove this check in the future(b/31479477). All apps should just // request the appropriate permission for their use case since android Q. - if ((appInfo.targetSdkVersion < VERSION_Q && isVendorApp(appInfo)) - // Backward compatibility for b/114245686, on devices that launched before Q daemons - // and apps running as the system UID are exempted from this check. - || (appInfo.uid == SYSTEM_UID && mDeps.getDeviceFirstSdkInt() < VERSION_Q)) { - return true; + if (app.applicationInfo != null) { + // Backward compatibility for b/114245686, on devices that launched before Q daemons + // and apps running as the system UID are exempted from this check. + if (app.applicationInfo.uid == SYSTEM_UID && mDeps.getDeviceFirstSdkInt() < VERSION_Q) { + return true; + } + + if (app.applicationInfo.targetSdkVersion < VERSION_Q + && isVendorApp(app.applicationInfo)) { + return true; + } } - return hasPermission(PERMISSION_MAINLINE_NETWORK_STACK, appInfo.uid) - || hasPermission(NETWORK_STACK, appInfo.uid) - || hasPermission(CONNECTIVITY_USE_RESTRICTED_NETWORKS, appInfo.uid); + return hasPermission(app, PERMISSION_MAINLINE_NETWORK_STACK) + || hasPermission(app, NETWORK_STACK) + || hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS); } /** Returns whether the given uid has using background network permission. */ public synchronized boolean hasUseBackgroundNetworksPermission(final int uid) { // Apps with any of the CHANGE_NETWORK_STATE, NETWORK_STACK, CONNECTIVITY_INTERNAL or // CONNECTIVITY_USE_RESTRICTED_NETWORKS permission has the permission to use background - // networks. mApps contains the result of checks for both CHANGE_NETWORK_STATE permission - // and hasRestrictedNetworkPermission. If uid is in the mApps list that means uid has one of + // networks. mApps contains the result of checks for both hasNetworkPermission and + // hasRestrictedNetworkPermission. If uid is in the mApps list that means uid has one of // permissions at least. return mApps.containsKey(uid); } @@ -271,11 +273,11 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse } try { if (add) { - mNetd.networkSetPermissionForUser(PERMISSION_NETWORK, convertToIntArray(network)); - mNetd.networkSetPermissionForUser(PERMISSION_SYSTEM, convertToIntArray(system)); + mNetd.networkSetPermissionForUser(INetd.PERMISSION_NETWORK, toIntArray(network)); + mNetd.networkSetPermissionForUser(INetd.PERMISSION_SYSTEM, toIntArray(system)); } else { - mNetd.networkClearPermissionForUser(convertToIntArray(network)); - mNetd.networkClearPermissionForUser(convertToIntArray(system)); + mNetd.networkClearPermissionForUser(toIntArray(network)); + mNetd.networkClearPermissionForUser(toIntArray(system)); } } catch (RemoteException e) { loge("Exception when updating permissions: " + e); @@ -321,15 +323,14 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse } @VisibleForTesting - protected Boolean highestPermissionForUid(Boolean currentPermission, String name, int uid) { + protected Boolean highestPermissionForUid(Boolean currentPermission, String name) { if (currentPermission == SYSTEM) { return currentPermission; } try { final PackageInfo app = mPackageManager.getPackageInfo(name, GET_PERMISSIONS); - final boolean isNetwork = hasPermission(CHANGE_NETWORK_STATE, uid); - final boolean hasRestrictedPermission = - hasRestrictedNetworkPermission(app.applicationInfo); + final boolean isNetwork = hasNetworkPermission(app); + final boolean hasRestrictedPermission = hasRestrictedNetworkPermission(app); if (isNetwork || hasRestrictedPermission) { currentPermission = hasRestrictedPermission; } @@ -341,14 +342,23 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse } private int getPermissionForUid(final int uid) { + int permission = INetd.PERMISSION_NONE; // Check all the packages for this UID. The UID has the permission if any of the // packages in it has the permission. final String[] packages = mPackageManager.getPackagesForUid(uid); - if (packages == null || packages.length <= 0) { + if (packages != null && packages.length > 0) { + for (String name : packages) { + final PackageInfo app = getPackageInfo(name); + if (app != null && app.requestedPermissions != null) { + permission |= getNetdPermissionMask(app.requestedPermissions, + app.requestedPermissionsFlags); + } + } + } else { // The last package of this uid is removed from device. Clean the package up. - return PERMISSION_UNINSTALLED; + permission = INetd.PERMISSION_UNINSTALLED; } - return getNetdPermissionMask(uid); + return permission; } /** @@ -365,7 +375,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse // If multiple packages share a UID (cf: android:sharedUserId) and ask for different // permissions, don't downgrade (i.e., if it's already SYSTEM, leave it as is). - final Boolean permission = highestPermissionForUid(mApps.get(uid), packageName, uid); + final Boolean permission = highestPermissionForUid(mApps.get(uid), packageName); if (permission != mApps.get(uid)) { mApps.put(uid, permission); @@ -421,7 +431,7 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse String[] packages = mPackageManager.getPackagesForUid(uid); if (packages != null && packages.length > 0) { for (String name : packages) { - permission = highestPermissionForUid(permission, name, uid); + permission = highestPermissionForUid(permission, name); if (permission == SYSTEM) { // An app with this UID still has the SYSTEM permission. // Therefore, this UID must already have the SYSTEM permission. @@ -457,13 +467,19 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse sendPackagePermissionsForUid(uid, getPermissionForUid(uid)); } - private int getNetdPermissionMask(final int uid) { - int permissions = PERMISSION_NONE; - if (hasPermission(INTERNET, uid)) { - permissions |= PERMISSION_INTERNET; - } - if (hasPermission(UPDATE_DEVICE_STATS, uid)) { - permissions |= PERMISSION_UPDATE_DEVICE_STATS; + private static int getNetdPermissionMask(String[] requestedPermissions, + int[] requestedPermissionsFlags) { + int permissions = 0; + if (requestedPermissions == null || requestedPermissionsFlags == null) return permissions; + for (int i = 0; i < requestedPermissions.length; i++) { + if (requestedPermissions[i].equals(INTERNET) + && ((requestedPermissionsFlags[i] & REQUESTED_PERMISSION_GRANTED) != 0)) { + permissions |= INetd.PERMISSION_INTERNET; + } + if (requestedPermissions[i].equals(UPDATE_DEVICE_STATS) + && ((requestedPermissionsFlags[i] & REQUESTED_PERMISSION_GRANTED) != 0)) { + permissions |= INetd.PERMISSION_UPDATE_DEVICE_STATS; + } } return permissions; } @@ -632,19 +648,19 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse for (int i = 0; i < netdPermissionsAppIds.size(); i++) { int permissions = netdPermissionsAppIds.valueAt(i); switch(permissions) { - case (PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS): + case (INetd.PERMISSION_INTERNET | INetd.PERMISSION_UPDATE_DEVICE_STATS): allPermissionAppIds.add(netdPermissionsAppIds.keyAt(i)); break; - case PERMISSION_INTERNET: + case INetd.PERMISSION_INTERNET: internetPermissionAppIds.add(netdPermissionsAppIds.keyAt(i)); break; - case PERMISSION_UPDATE_DEVICE_STATS: + case INetd.PERMISSION_UPDATE_DEVICE_STATS: updateStatsPermissionAppIds.add(netdPermissionsAppIds.keyAt(i)); break; - case PERMISSION_NONE: + case INetd.PERMISSION_NONE: noPermissionAppIds.add(netdPermissionsAppIds.keyAt(i)); break; - case PERMISSION_UNINSTALLED: + case INetd.PERMISSION_UNINSTALLED: uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i)); default: Log.e(TAG, "unknown permission type: " + permissions + "for uid: " @@ -655,24 +671,24 @@ public class PermissionMonitor implements PackageManagerInternal.PackageListObse // TODO: add a lock inside netd to protect IPC trafficSetNetPermForUids() if (allPermissionAppIds.size() != 0) { mNetd.trafficSetNetPermForUids( - PERMISSION_INTERNET | PERMISSION_UPDATE_DEVICE_STATS, - convertToIntArray(allPermissionAppIds)); + INetd.PERMISSION_INTERNET | INetd.PERMISSION_UPDATE_DEVICE_STATS, + ArrayUtils.convertToIntArray(allPermissionAppIds)); } if (internetPermissionAppIds.size() != 0) { - mNetd.trafficSetNetPermForUids(PERMISSION_INTERNET, - convertToIntArray(internetPermissionAppIds)); + mNetd.trafficSetNetPermForUids(INetd.PERMISSION_INTERNET, + ArrayUtils.convertToIntArray(internetPermissionAppIds)); } if (updateStatsPermissionAppIds.size() != 0) { - mNetd.trafficSetNetPermForUids(PERMISSION_UPDATE_DEVICE_STATS, - convertToIntArray(updateStatsPermissionAppIds)); + mNetd.trafficSetNetPermForUids(INetd.PERMISSION_UPDATE_DEVICE_STATS, + ArrayUtils.convertToIntArray(updateStatsPermissionAppIds)); } if (noPermissionAppIds.size() != 0) { - mNetd.trafficSetNetPermForUids(PERMISSION_NONE, - convertToIntArray(noPermissionAppIds)); + mNetd.trafficSetNetPermForUids(INetd.PERMISSION_NONE, + ArrayUtils.convertToIntArray(noPermissionAppIds)); } if (uninstalledAppIds.size() != 0) { - mNetd.trafficSetNetPermForUids(PERMISSION_UNINSTALLED, - convertToIntArray(uninstalledAppIds)); + mNetd.trafficSetNetPermForUids(INetd.PERMISSION_UNINSTALLED, + ArrayUtils.convertToIntArray(uninstalledAppIds)); } } catch (RemoteException e) { Log.e(TAG, "Pass appId list of special permission failed." + e); diff --git a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java index eb0a867d8ec19..5a29c2c96ba79 100644 --- a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java +++ b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java @@ -26,6 +26,8 @@ import static android.Manifest.permission.UPDATE_DEVICE_STATS; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_OEM; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRODUCT; import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_VENDOR; +import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED; +import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_REQUIRED; import static android.content.pm.PackageManager.GET_PERMISSIONS; import static android.content.pm.PackageManager.MATCH_ANY_USER; import static android.os.Process.SYSTEM_UID; @@ -95,6 +97,7 @@ public class PermissionMonitorTest { private static final int SYSTEM_UID1 = 1000; private static final int SYSTEM_UID2 = 1008; private static final int VPN_UID = 10002; + private static final String REAL_SYSTEM_PACKAGE_NAME = "android"; private static final String MOCK_PACKAGE1 = "appName1"; private static final String MOCK_PACKAGE2 = "appName2"; private static final String SYSTEM_PACKAGE1 = "sysName1"; @@ -125,7 +128,6 @@ public class PermissionMonitorTest { new UserInfo(MOCK_USER1, "", 0), new UserInfo(MOCK_USER2, "", 0), })); - doReturn(PackageManager.PERMISSION_DENIED).when(mDeps).uidPermission(anyString(), anyInt()); mPermissionMonitor = spy(new PermissionMonitor(mContext, mNetdService, mDeps)); @@ -138,22 +140,35 @@ public class PermissionMonitorTest { verify(mMockPmi).getPackageList(mPermissionMonitor); } - /** - * Remove all permissions from the uid then build new package info and setup permissions to uid - * for checking restricted network permission. - */ private boolean hasRestrictedNetworkPermission(String partition, int targetSdkVersion, int uid, String... permissions) { - final PackageInfo packageInfo = buildPackageInfo(partition, uid, MOCK_USER1); + final PackageInfo packageInfo = + packageInfoWithPermissions(REQUESTED_PERMISSION_GRANTED, permissions, partition); packageInfo.applicationInfo.targetSdkVersion = targetSdkVersion; - removeAllPermissions(uid); - addPermissions(uid, permissions); - return mPermissionMonitor.hasRestrictedNetworkPermission(packageInfo.applicationInfo); + packageInfo.applicationInfo.uid = uid; + return mPermissionMonitor.hasRestrictedNetworkPermission(packageInfo); } - private static PackageInfo packageInfoWithPartition(String partition) { + private static PackageInfo systemPackageInfoWithPermissions(String... permissions) { + return packageInfoWithPermissions( + REQUESTED_PERMISSION_GRANTED, permissions, PARTITION_SYSTEM); + } + + private static PackageInfo vendorPackageInfoWithPermissions(String... permissions) { + return packageInfoWithPermissions( + REQUESTED_PERMISSION_GRANTED, permissions, PARTITION_VENDOR); + } + + private static PackageInfo packageInfoWithPermissions(int permissionsFlags, + String[] permissions, String partition) { + int[] requestedPermissionsFlags = new int[permissions.length]; + for (int i = 0; i < permissions.length; i++) { + requestedPermissionsFlags[i] = permissionsFlags; + } final PackageInfo packageInfo = new PackageInfo(); + packageInfo.requestedPermissions = permissions; packageInfo.applicationInfo = new ApplicationInfo(); + packageInfo.requestedPermissionsFlags = requestedPermissionsFlags; int privateFlags = 0; switch (partition) { case PARTITION_OEM: @@ -170,64 +185,84 @@ public class PermissionMonitorTest { return packageInfo; } - private static PackageInfo buildPackageInfo(String partition, int uid, int userId) { - final PackageInfo pkgInfo = packageInfoWithPartition(partition); + private static PackageInfo buildPackageInfo(boolean hasSystemPermission, int uid, int userId) { + final PackageInfo pkgInfo; + if (hasSystemPermission) { + pkgInfo = systemPackageInfoWithPermissions( + CHANGE_NETWORK_STATE, NETWORK_STACK, CONNECTIVITY_USE_RESTRICTED_NETWORKS); + } else { + pkgInfo = packageInfoWithPermissions(REQUESTED_PERMISSION_GRANTED, new String[] {}, ""); + } pkgInfo.applicationInfo.uid = UserHandle.getUid(userId, UserHandle.getAppId(uid)); return pkgInfo; } - /** This will REMOVE all previously set permissions from given uid. */ - private void removeAllPermissions(int uid) { - doReturn(PackageManager.PERMISSION_DENIED).when(mDeps).uidPermission(anyString(), eq(uid)); - } - - /** Set up mocks so that given UID has the requested permissions. */ - private void addPermissions(int uid, String... permissions) { - for (String permission : permissions) { - doReturn(PackageManager.PERMISSION_GRANTED) - .when(mDeps).uidPermission(eq(permission), eq(uid)); - } - } - @Test public void testHasPermission() { - addPermissions(MOCK_UID1); - assertFalse(mPermissionMonitor.hasPermission(CHANGE_NETWORK_STATE, MOCK_UID1)); - assertFalse(mPermissionMonitor.hasPermission(NETWORK_STACK, MOCK_UID1)); - assertFalse(mPermissionMonitor.hasPermission( - CONNECTIVITY_USE_RESTRICTED_NETWORKS, MOCK_UID1)); - assertFalse(mPermissionMonitor.hasPermission(CONNECTIVITY_INTERNAL, MOCK_UID1)); + PackageInfo app = systemPackageInfoWithPermissions(); + assertFalse(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE)); + assertFalse(mPermissionMonitor.hasPermission(app, NETWORK_STACK)); + assertFalse(mPermissionMonitor.hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + assertFalse(mPermissionMonitor.hasPermission(app, CONNECTIVITY_INTERNAL)); - addPermissions(MOCK_UID1, CHANGE_NETWORK_STATE, NETWORK_STACK); - assertTrue(mPermissionMonitor.hasPermission(CHANGE_NETWORK_STATE, MOCK_UID1)); - assertTrue(mPermissionMonitor.hasPermission(NETWORK_STACK, MOCK_UID1)); - assertFalse(mPermissionMonitor.hasPermission( - CONNECTIVITY_USE_RESTRICTED_NETWORKS, MOCK_UID1)); - assertFalse(mPermissionMonitor.hasPermission(CONNECTIVITY_INTERNAL, MOCK_UID1)); - assertFalse(mPermissionMonitor.hasPermission(CHANGE_NETWORK_STATE, MOCK_UID2)); - assertFalse(mPermissionMonitor.hasPermission(NETWORK_STACK, MOCK_UID2)); + app = systemPackageInfoWithPermissions(CHANGE_NETWORK_STATE, NETWORK_STACK); + assertTrue(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE)); + assertTrue(mPermissionMonitor.hasPermission(app, NETWORK_STACK)); + assertFalse(mPermissionMonitor.hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + assertFalse(mPermissionMonitor.hasPermission(app, CONNECTIVITY_INTERNAL)); - addPermissions(MOCK_UID2, CONNECTIVITY_USE_RESTRICTED_NETWORKS, CONNECTIVITY_INTERNAL); - assertFalse(mPermissionMonitor.hasPermission( - CONNECTIVITY_USE_RESTRICTED_NETWORKS, MOCK_UID1)); - assertFalse(mPermissionMonitor.hasPermission(CONNECTIVITY_INTERNAL, MOCK_UID1)); - assertTrue(mPermissionMonitor.hasPermission( - CONNECTIVITY_USE_RESTRICTED_NETWORKS, MOCK_UID2)); - assertTrue(mPermissionMonitor.hasPermission(CONNECTIVITY_INTERNAL, MOCK_UID2)); + app = systemPackageInfoWithPermissions( + CONNECTIVITY_USE_RESTRICTED_NETWORKS, CONNECTIVITY_INTERNAL); + assertFalse(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE)); + assertFalse(mPermissionMonitor.hasPermission(app, NETWORK_STACK)); + assertTrue(mPermissionMonitor.hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + assertTrue(mPermissionMonitor.hasPermission(app, CONNECTIVITY_INTERNAL)); + + app = packageInfoWithPermissions(REQUESTED_PERMISSION_REQUIRED, new String[] { + CONNECTIVITY_USE_RESTRICTED_NETWORKS, CONNECTIVITY_INTERNAL, NETWORK_STACK }, + PARTITION_SYSTEM); + assertFalse(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE)); + assertFalse(mPermissionMonitor.hasPermission(app, NETWORK_STACK)); + assertFalse(mPermissionMonitor.hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); + assertFalse(mPermissionMonitor.hasPermission(app, CONNECTIVITY_INTERNAL)); + + app = systemPackageInfoWithPermissions(CHANGE_NETWORK_STATE); + app.requestedPermissions = null; + assertFalse(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE)); + + app = systemPackageInfoWithPermissions(CHANGE_NETWORK_STATE); + app.requestedPermissionsFlags = null; + assertFalse(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE)); } @Test public void testIsVendorApp() { - PackageInfo app = packageInfoWithPartition(PARTITION_SYSTEM); + PackageInfo app = systemPackageInfoWithPermissions(); assertFalse(mPermissionMonitor.isVendorApp(app.applicationInfo)); - app = packageInfoWithPartition(PARTITION_OEM); + app = packageInfoWithPermissions(REQUESTED_PERMISSION_GRANTED, + new String[] {}, PARTITION_OEM); assertTrue(mPermissionMonitor.isVendorApp(app.applicationInfo)); - app = packageInfoWithPartition(PARTITION_PRODUCT); + app = packageInfoWithPermissions(REQUESTED_PERMISSION_GRANTED, + new String[] {}, PARTITION_PRODUCT); assertTrue(mPermissionMonitor.isVendorApp(app.applicationInfo)); - app = packageInfoWithPartition(PARTITION_VENDOR); + app = vendorPackageInfoWithPermissions(); assertTrue(mPermissionMonitor.isVendorApp(app.applicationInfo)); } + @Test + public void testHasNetworkPermission() { + PackageInfo app = systemPackageInfoWithPermissions(); + assertFalse(mPermissionMonitor.hasNetworkPermission(app)); + app = systemPackageInfoWithPermissions(CHANGE_NETWORK_STATE); + assertTrue(mPermissionMonitor.hasNetworkPermission(app)); + app = systemPackageInfoWithPermissions(NETWORK_STACK); + assertFalse(mPermissionMonitor.hasNetworkPermission(app)); + app = systemPackageInfoWithPermissions(CONNECTIVITY_USE_RESTRICTED_NETWORKS); + assertFalse(mPermissionMonitor.hasNetworkPermission(app)); + app = systemPackageInfoWithPermissions(CONNECTIVITY_INTERNAL); + assertFalse(mPermissionMonitor.hasNetworkPermission(app)); + } + @Test public void testHasRestrictedNetworkPermission() { assertFalse(hasRestrictedNetworkPermission(PARTITION_SYSTEM, VERSION_P, MOCK_UID1)); @@ -288,27 +323,30 @@ public class PermissionMonitorTest { private void assertBackgroundPermission(boolean hasPermission, String name, int uid, String... permissions) throws Exception { when(mPackageManager.getPackageInfo(eq(name), anyInt())) - .thenReturn(buildPackageInfo(PARTITION_SYSTEM, uid, MOCK_USER1)); - addPermissions(uid, permissions); + .thenReturn(packageInfoWithPermissions( + REQUESTED_PERMISSION_GRANTED, permissions, PARTITION_SYSTEM)); mPermissionMonitor.onPackageAdded(name, uid); assertEquals(hasPermission, mPermissionMonitor.hasUseBackgroundNetworksPermission(uid)); } @Test public void testHasUseBackgroundNetworksPermission() throws Exception { - doReturn(VERSION_Q).when(mDeps).getDeviceFirstSdkInt(); assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(SYSTEM_UID)); - assertBackgroundPermission(false, "system1", SYSTEM_UID); - assertBackgroundPermission(false, "system2", SYSTEM_UID, CONNECTIVITY_INTERNAL); - assertBackgroundPermission(true, "system3", SYSTEM_UID, CHANGE_NETWORK_STATE); + assertBackgroundPermission(false, SYSTEM_PACKAGE1, SYSTEM_UID); + assertBackgroundPermission(false, SYSTEM_PACKAGE1, SYSTEM_UID, CONNECTIVITY_INTERNAL); + assertBackgroundPermission(true, SYSTEM_PACKAGE1, SYSTEM_UID, CHANGE_NETWORK_STATE); + assertBackgroundPermission(true, SYSTEM_PACKAGE1, SYSTEM_UID, NETWORK_STACK); assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID1)); - assertBackgroundPermission(false, "mock1", MOCK_UID1); - assertBackgroundPermission(true, "mock2", MOCK_UID1, CONNECTIVITY_USE_RESTRICTED_NETWORKS); + assertBackgroundPermission(false, MOCK_PACKAGE1, MOCK_UID1); + assertBackgroundPermission(true, MOCK_PACKAGE1, MOCK_UID1, + CONNECTIVITY_USE_RESTRICTED_NETWORKS); assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID2)); - assertBackgroundPermission(false, "mock3", MOCK_UID2, CONNECTIVITY_INTERNAL); - assertBackgroundPermission(true, "mock4", MOCK_UID2, NETWORK_STACK); + assertBackgroundPermission(false, MOCK_PACKAGE2, MOCK_UID2); + assertBackgroundPermission(false, MOCK_PACKAGE2, MOCK_UID2, + CONNECTIVITY_INTERNAL); + assertBackgroundPermission(true, MOCK_PACKAGE2, MOCK_UID2, NETWORK_STACK); } private class NetdMonitor { @@ -378,14 +416,13 @@ public class PermissionMonitorTest { // MOCK_UID1: MOCK_PACKAGE1 only has network permission. // SYSTEM_UID: SYSTEM_PACKAGE1 has system permission. // SYSTEM_UID: SYSTEM_PACKAGE2 only has network permission. - doReturn(SYSTEM).when(mPermissionMonitor).highestPermissionForUid(eq(SYSTEM), - anyString(), anyInt()); + doReturn(SYSTEM).when(mPermissionMonitor).highestPermissionForUid(eq(SYSTEM), anyString()); doReturn(SYSTEM).when(mPermissionMonitor).highestPermissionForUid(any(), - eq(SYSTEM_PACKAGE1), anyInt()); + eq(SYSTEM_PACKAGE1)); doReturn(NETWORK).when(mPermissionMonitor).highestPermissionForUid(any(), - eq(SYSTEM_PACKAGE2), anyInt()); + eq(SYSTEM_PACKAGE2)); doReturn(NETWORK).when(mPermissionMonitor).highestPermissionForUid(any(), - eq(MOCK_PACKAGE1), anyInt()); + eq(MOCK_PACKAGE1)); // Add SYSTEM_PACKAGE2, expect only have network permission. mPermissionMonitor.onUserAdded(MOCK_USER1); @@ -436,15 +473,13 @@ public class PermissionMonitorTest { public void testUidFilteringDuringVpnConnectDisconnectAndUidUpdates() throws Exception { when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( Arrays.asList(new PackageInfo[] { - buildPackageInfo(PARTITION_SYSTEM, SYSTEM_UID1, MOCK_USER1), - buildPackageInfo(PARTITION_SYSTEM, MOCK_UID1, MOCK_USER1), - buildPackageInfo(PARTITION_SYSTEM, MOCK_UID2, MOCK_USER1), - buildPackageInfo(PARTITION_SYSTEM, VPN_UID, MOCK_USER1) + buildPackageInfo(/* SYSTEM */ true, SYSTEM_UID1, MOCK_USER1), + buildPackageInfo(/* SYSTEM */ false, MOCK_UID1, MOCK_USER1), + buildPackageInfo(/* SYSTEM */ false, MOCK_UID2, MOCK_USER1), + buildPackageInfo(/* SYSTEM */ false, VPN_UID, MOCK_USER1) })); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS))).thenReturn( - buildPackageInfo(PARTITION_SYSTEM, MOCK_UID1, MOCK_USER1)); - addPermissions(SYSTEM_UID, - CHANGE_NETWORK_STATE, NETWORK_STACK, CONNECTIVITY_USE_RESTRICTED_NETWORKS); + buildPackageInfo(false, MOCK_UID1, MOCK_USER1)); mPermissionMonitor.startMonitoring(); // Every app on user 0 except MOCK_UID2 are under VPN. final Set vpnRange1 = new HashSet<>(Arrays.asList(new UidRange[] { @@ -489,11 +524,11 @@ public class PermissionMonitorTest { public void testUidFilteringDuringPackageInstallAndUninstall() throws Exception { when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( Arrays.asList(new PackageInfo[] { - buildPackageInfo(PARTITION_SYSTEM, SYSTEM_UID1, MOCK_USER1), - buildPackageInfo(PARTITION_SYSTEM, VPN_UID, MOCK_USER1) + buildPackageInfo(true, SYSTEM_UID1, MOCK_USER1), + buildPackageInfo(false, VPN_UID, MOCK_USER1) })); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS))).thenReturn( - buildPackageInfo(PARTITION_SYSTEM, MOCK_UID1, MOCK_USER1)); + buildPackageInfo(false, MOCK_UID1, MOCK_USER1)); mPermissionMonitor.startMonitoring(); final Set vpnRange = Collections.singleton(UidRange.createForUser(MOCK_USER1)); @@ -598,10 +633,10 @@ public class PermissionMonitorTest { private PackageInfo setPackagePermissions(String packageName, int uid, String[] permissions) throws Exception { - final PackageInfo packageInfo = buildPackageInfo(PARTITION_SYSTEM, uid, MOCK_USER1); + PackageInfo packageInfo = packageInfoWithPermissions( + REQUESTED_PERMISSION_GRANTED, permissions, PARTITION_SYSTEM); when(mPackageManager.getPackageInfo(eq(packageName), anyInt())).thenReturn(packageInfo); when(mPackageManager.getPackagesForUid(eq(uid))).thenReturn(new String[]{packageName}); - addPermissions(uid, permissions); return packageInfo; } @@ -628,13 +663,14 @@ public class PermissionMonitorTest { public void testPackageInstallSharedUid() throws Exception { final NetdServiceMonitor mNetdServiceMonitor = new NetdServiceMonitor(mNetdService); - addPackage(MOCK_PACKAGE1, MOCK_UID1, new String[] {INTERNET, UPDATE_DEVICE_STATS}); + PackageInfo packageInfo1 = addPackage(MOCK_PACKAGE1, MOCK_UID1, + new String[] {INTERNET, UPDATE_DEVICE_STATS}); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); // Install another package with the same uid and no permissions should not cause the UID to // lose permissions. - final PackageInfo packageInfo2 = buildPackageInfo(PARTITION_SYSTEM, MOCK_UID1, MOCK_USER1); + PackageInfo packageInfo2 = systemPackageInfoWithPermissions(); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE2), anyInt())).thenReturn(packageInfo2); when(mPackageManager.getPackagesForUid(MOCK_UID1)) .thenReturn(new String[]{MOCK_PACKAGE1, MOCK_PACKAGE2}); @@ -665,7 +701,6 @@ public class PermissionMonitorTest { | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{}); - removeAllPermissions(MOCK_UID1); mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_UNINSTALLED, new int[]{MOCK_UID1}); @@ -693,12 +728,10 @@ public class PermissionMonitorTest { | INetd.PERMISSION_UPDATE_DEVICE_STATS, new int[]{MOCK_UID1}); // Mock another package with the same uid but different permissions. - final PackageInfo packageInfo2 = buildPackageInfo(PARTITION_SYSTEM, MOCK_UID1, MOCK_USER1); + PackageInfo packageInfo2 = systemPackageInfoWithPermissions(INTERNET); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE2), anyInt())).thenReturn(packageInfo2); when(mPackageManager.getPackagesForUid(MOCK_UID1)).thenReturn(new String[]{ MOCK_PACKAGE2}); - removeAllPermissions(MOCK_UID1); - addPermissions(MOCK_UID1, INTERNET); mPermissionMonitor.onPackageRemoved(MOCK_PACKAGE1, MOCK_UID1); mNetdServiceMonitor.expectPermission(INetd.PERMISSION_INTERNET, new int[]{MOCK_UID1}); @@ -710,6 +743,9 @@ public class PermissionMonitorTest { // necessary permission. final Context realContext = InstrumentationRegistry.getContext(); final PermissionMonitor monitor = new PermissionMonitor(realContext, mNetdService); - assertTrue(monitor.hasPermission(CONNECTIVITY_USE_RESTRICTED_NETWORKS, SYSTEM_UID)); + final PackageManager manager = realContext.getPackageManager(); + final PackageInfo systemInfo = manager.getPackageInfo(REAL_SYSTEM_PACKAGE_NAME, + GET_PERMISSIONS | MATCH_ANY_USER); + assertTrue(monitor.hasPermission(systemInfo, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); } } From b660be34d80af9d0007d7e7b3f7781952c9bb3ce Mon Sep 17 00:00:00 2001 From: Sahana Rao Date: Thu, 2 Jul 2020 12:23:13 +0000 Subject: [PATCH 023/192] Set ENABLE_DYNAMIC_PERMISSIONS = false until ag/12511042 is ready. Bug: 159995598 Bug: 159501682 Bug: 115619667 Change-Id: I6df037161dc36da7f8b33292529bbc37058f819c (cherry picked from commit a2127eb4468e2e9c6796fc94859c0ee976c0dd5a) (cherry picked from commit 30694a0eab211444fcf3b2db7e04aa4892eee25f) --- .../java/com/android/server/uri/UriGrantsManagerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java index 0b0bb7059f3b6..53d51463295fc 100644 --- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java +++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java @@ -115,7 +115,7 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { private static final String TAG = "UriGrantsManagerService"; // Maximum number of persisted Uri grants a package is allowed private static final int MAX_PERSISTED_URI_GRANTS = 512; - private static final boolean ENABLE_DYNAMIC_PERMISSIONS = true; + private static final boolean ENABLE_DYNAMIC_PERMISSIONS = false; private final Object mLock = new Object(); private final H mH; From d8ad9a6425cb626a73ac3dc844e8b39ed7e990f3 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Mon, 14 Sep 2020 16:16:45 +0000 Subject: [PATCH 024/192] Revert "Make all permissions per-user." This reverts commit 97a79bdb71ae03049c974a151db5071abfc8956d. Reason for revert: Bug 168491570 Bug: 168491570 Change-Id: Icc1347e4e93b2499ea9b54dfabfa62a840e6d79e (cherry picked from commit bf519fdd1107f5c3a899ca33639f49334971b4ca) --- core/res/res/values/attrs_manifest.xml | 4 +- .../server/pm/PackageManagerService.java | 16 +- .../server/pm/permission/BasePermission.java | 9 +- .../pm/permission/DevicePermissionState.java | 77 -- .../permission/PermissionManagerService.java | 1117 ++++++++--------- .../PermissionManagerServiceInternal.java | 8 +- .../server/pm/permission/PermissionState.java | 129 -- .../pm/permission/PermissionsState.java | 22 +- .../pm/permission/UidPermissionState.java | 574 --------- .../pm/permission/UserPermissionState.java | 103 -- 10 files changed, 570 insertions(+), 1489 deletions(-) delete mode 100644 services/core/java/com/android/server/pm/permission/DevicePermissionState.java delete mode 100644 services/core/java/com/android/server/pm/permission/PermissionState.java delete mode 100644 services/core/java/com/android/server/pm/permission/UidPermissionState.java delete mode 100644 services/core/java/com/android/server/pm/permission/UserPermissionState.java diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 050c1c4b4df5e..ac08d96ab303b 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -239,9 +239,7 @@ + (optionally) be granted to development applications. --> diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 999bbc9ecf4e9..ece41f13bb5f7 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1849,7 +1849,7 @@ public class PackageManagerService extends IPackageManager.Stub Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); synchronized (mLock) { removeMessages(WRITE_PACKAGE_LIST); - mPermissionManager.writeStateToPackageSettingsTEMP(); + mPermissionManager.writePermissionsStateToPackageSettingsTEMP(); mSettings.writePackageListLPr(msg.arg1); } Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); @@ -3520,7 +3520,7 @@ public class PackageManagerService extends IPackageManager.Stub + ((SystemClock.uptimeMillis()-startTime)/1000f) + " seconds"); - mPermissionManager.readStateFromPackageSettingsTEMP(); + mPermissionManager.readPermissionsStateFromPackageSettingsTEMP(); // If the platform SDK has changed since the last time we booted, // we need to re-grant app permission to catch any new ones that // appear. This is really a hack, and means that apps can in some @@ -21827,7 +21827,7 @@ public class PackageManagerService extends IPackageManager.Stub protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, pw)) return; - mPermissionManager.writeStateToPackageSettingsTEMP(); + mPermissionManager.writePermissionsStateToPackageSettingsTEMP(); DumpState dumpState = new DumpState(); boolean fullPreferred = false; @@ -23707,7 +23707,7 @@ public class PackageManagerService extends IPackageManager.Stub mDirtyUsers.remove(userId); mUserNeedsBadging.delete(userId); mPermissionManager.onUserRemoved(userId); - mPermissionManager.writeStateToPackageSettingsTEMP(); + mPermissionManager.writePermissionsStateToPackageSettingsTEMP(); mSettings.removeUserLPw(userId); mPendingBroadcasts.remove(userId); mInstantAppRegistry.onUserRemovedLPw(userId); @@ -23808,9 +23808,9 @@ public class PackageManagerService extends IPackageManager.Stub boolean readPermissionStateForUser(@UserIdInt int userId) { synchronized (mPackages) { - mPermissionManager.writeStateToPackageSettingsTEMP(); + mPermissionManager.writePermissionsStateToPackageSettingsTEMP(); mSettings.readPermissionStateForUserSyncLPr(userId); - mPermissionManager.readStateFromPackageSettingsTEMP(); + mPermissionManager.readPermissionsStateFromPackageSettingsTEMP(); return mPmInternal.isPermissionUpgradeNeeded(userId); } } @@ -25824,12 +25824,12 @@ public class PackageManagerService extends IPackageManager.Stub /** * Temporary method that wraps mSettings.writeLPr() and calls - * mPermissionManager.writeStateToPackageSettingsTEMP() beforehand. + * mPermissionManager.writePermissionsStateToPackageSettingsTEMP() beforehand. * * TODO(zhanghai): This should be removed once we finish migration of permission storage. */ private void writeSettingsLPrTEMP() { - mPermissionManager.writeStateToPackageSettingsTEMP(); + mPermissionManager.writePermissionsStateToPackageSettingsTEMP(); mSettings.writeLPr(); } } diff --git a/services/core/java/com/android/server/pm/permission/BasePermission.java b/services/core/java/com/android/server/pm/permission/BasePermission.java index 865b8a1e97eb5..962638b4f63c0 100644 --- a/services/core/java/com/android/server/pm/permission/BasePermission.java +++ b/services/core/java/com/android/server/pm/permission/BasePermission.java @@ -36,7 +36,6 @@ import android.os.UserHandle; import android.util.Log; import android.util.Slog; -import com.android.internal.util.ArrayUtils; import com.android.server.pm.DumpState; import com.android.server.pm.PackageManagerService; import com.android.server.pm.PackageSettingBase; @@ -140,10 +139,6 @@ public final class BasePermission { this.perm = perm; } - public boolean hasGids() { - return !ArrayUtils.isEmpty(gids); - } - public int[] computeGids(int userId) { if (perUser) { final int[] userGids = new int[gids.length]; @@ -424,9 +419,9 @@ public final class BasePermission { } public void enforceDeclaredUsedAndRuntimeOrDevelopment(AndroidPackage pkg, - UidPermissionState uidState) { + PermissionsState permsState) { int index = pkg.getRequestedPermissions().indexOf(name); - if (!uidState.hasRequestedPermission(name) && index == -1) { + if (!permsState.hasRequestedPermission(name) && index == -1) { throw new SecurityException("Package " + pkg.getPackageName() + " has not requested permission " + name); } diff --git a/services/core/java/com/android/server/pm/permission/DevicePermissionState.java b/services/core/java/com/android/server/pm/permission/DevicePermissionState.java deleted file mode 100644 index b9456acfced5a..0000000000000 --- a/services/core/java/com/android/server/pm/permission/DevicePermissionState.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (C) 2020 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.server.pm.permission; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.annotation.UserIdInt; -import android.util.SparseArray; - -import com.android.internal.annotations.GuardedBy; - -/** - * Permission state for this device. - */ -public final class DevicePermissionState { - @GuardedBy("mLock") - @NonNull - private final SparseArray mUserStates = new SparseArray<>(); - - @NonNull - private final Object mLock; - - public DevicePermissionState(@NonNull Object lock) { - mLock = lock; - } - - @Nullable - public UserPermissionState getUserState(@UserIdInt int userId) { - synchronized (mLock) { - return mUserStates.get(userId); - } - } - - @NonNull - public UserPermissionState getOrCreateUserState(@UserIdInt int userId) { - synchronized (mLock) { - UserPermissionState userState = mUserStates.get(userId); - if (userState == null) { - userState = new UserPermissionState(mLock); - mUserStates.put(userId, userState); - } - return userState; - } - } - - public void removeUserState(@UserIdInt int userId) { - synchronized (mLock) { - mUserStates.delete(userId); - } - } - - public int[] getUserIds() { - synchronized (mLock) { - final int userStatesSize = mUserStates.size(); - final int[] userIds = new int[userStatesSize]; - for (int i = 0; i < userStatesSize; i++) { - final int userId = mUserStates.keyAt(i); - userIds[i] = userId; - } - return userIds; - } - } -} diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 75e5944b3cb4d..1cfc5b135cfae 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -148,9 +148,12 @@ import com.android.server.pm.permission.PermissionManagerServiceInternal.Default import com.android.server.pm.permission.PermissionManagerServiceInternal.DefaultDialerProvider; import com.android.server.pm.permission.PermissionManagerServiceInternal.DefaultHomeProvider; import com.android.server.pm.permission.PermissionManagerServiceInternal.PermissionCallback; +import com.android.server.pm.permission.PermissionsState.PermissionState; import com.android.server.policy.PermissionPolicyInternal; import com.android.server.policy.SoftRestrictedPermissionPolicy; +import libcore.util.EmptyArray; + import java.io.FileDescriptor; import java.io.PrintWriter; import java.lang.annotation.Retention; @@ -223,8 +226,8 @@ public class PermissionManagerService extends IPermissionManager.Stub { /** Internal connection to the user manager */ private final UserManagerInternal mUserManagerInt; - @NonNull - private final DevicePermissionState mState; + /** Maps from App ID to PermissionsState */ + private final SparseArray mAppIdStates = new SparseArray<>(); /** Permission controller: User space permission management */ private PermissionControllerManager mPermissionControllerManager; @@ -392,7 +395,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { mPackageManagerInt = LocalServices.getService(PackageManagerInternal.class); mUserManagerInt = LocalServices.getService(UserManagerInternal.class); mSettings = new PermissionSettings(mLock); - mState = new DevicePermissionState(mLock); mAppOpsManager = context.getSystemService(AppOpsManager.class); mHandlerThread = new ServiceThread(TAG, @@ -679,12 +681,12 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (mPackageManagerInt.filterAppAccess(pkg, callingUid, userId)) { return 0; } - final UidPermissionState uidState = getUidState(pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + packageName + " and user " + userId); + final PermissionsState permissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + packageName); return 0; } - return uidState.getPermissionFlags(permName); + return permissionsState.getPermissionFlags(permName, userId); } @Override @@ -786,13 +788,14 @@ public class PermissionManagerService extends IPermissionManager.Stub { throw new IllegalArgumentException("Unknown permission: " + permName); } - final UidPermissionState uidState = getUidState(pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + packageName + " and user " + userId); + final PermissionsState permissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + packageName); return; } - final boolean hadState = uidState.getPermissionState(permName) != null; + final boolean hadState = + permissionsState.getRuntimePermissionState(permName, userId) != null; if (!hadState) { boolean isRequested = false; // Fast path, the current package has requested the permission. @@ -819,18 +822,20 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } final boolean permissionUpdated = - uidState.updatePermissionFlags(bp, flagMask, flagValues); + permissionsState.updatePermissionFlags(bp, userId, flagMask, flagValues); if (permissionUpdated && bp.isRuntime()) { notifyRuntimePermissionStateChanged(packageName, userId); } if (permissionUpdated && callback != null) { // Install and runtime permissions are stored in different places, // so figure out what permission changed and persist the change. - if (!bp.isRuntime()) { + if (permissionsState.getInstallPermissionState(permName) != null) { int userUid = UserHandle.getUid(userId, UserHandle.getAppId(pkg.getUid())); callback.onInstallPermissionUpdatedNotifyListener(userUid); - } else { - callback.onPermissionUpdatedNotifyListener(new int[]{userId}, false, pkg.getUid()); + } else if (permissionsState.getRuntimePermissionState(permName, userId) != null + || hadState) { + callback.onPermissionUpdatedNotifyListener(new int[]{userId}, false, + pkg.getUid()); } } } @@ -863,14 +868,13 @@ public class PermissionManagerService extends IPermissionManager.Stub { final boolean[] changed = new boolean[1]; mPackageManagerInt.forEachPackage(pkg -> { - final UidPermissionState uidState = getUidState(pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName() + " and user " - + userId); + final PermissionsState permissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName()); return; } - changed[0] |= uidState.updatePermissionFlagsForAllPermissions( - effectiveFlagMask, effectiveFlagValues); + changed[0] |= permissionsState.updatePermissionFlagsForAllPermissions( + userId, effectiveFlagMask, effectiveFlagValues); mOnPermissionChangeListeners.onPermissionsChanged(pkg.getUid()); }); @@ -922,20 +926,19 @@ public class PermissionManagerService extends IPermissionManager.Stub { } final int uid = UserHandle.getUid(userId, pkg.getUid()); - final UidPermissionState uidState = getUidState(pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName() + " and user " - + userId); + final PermissionsState permissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName()); return PackageManager.PERMISSION_DENIED; } - if (checkSinglePermissionInternal(uid, uidState, permissionName)) { + if (checkSinglePermissionInternal(uid, permissionsState, permissionName)) { return PackageManager.PERMISSION_GRANTED; } final String fullerPermissionName = FULLER_PERMISSION_MAP.get(permissionName); if (fullerPermissionName != null - && checkSinglePermissionInternal(uid, uidState, fullerPermissionName)) { + && checkSinglePermissionInternal(uid, permissionsState, fullerPermissionName)) { return PackageManager.PERMISSION_GRANTED; } @@ -943,8 +946,8 @@ public class PermissionManagerService extends IPermissionManager.Stub { } private boolean checkSinglePermissionInternal(int uid, - @NonNull UidPermissionState uidState, @NonNull String permissionName) { - if (!uidState.hasPermission(permissionName)) { + @NonNull PermissionsState permissionsState, @NonNull String permissionName) { + if (!permissionsState.hasPermission(permissionName, UserHandle.getUserId(uid))) { return false; } @@ -1138,9 +1141,9 @@ public class PermissionManagerService extends IPermissionManager.Stub { final long identity = Binder.clearCallingIdentity(); try { - final UidPermissionState uidState = getUidState(pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + packageName + " and user " + userId); + final PermissionsState permissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + packageName); return null; } @@ -1161,7 +1164,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { for (int i = 0; i < permissionCount; i++) { final String permissionName = pkg.getRequestedPermissions().get(i); final int currentFlags = - uidState.getPermissionFlags(permissionName); + permissionsState.getPermissionFlags(permissionName, userId); if ((currentFlags & queryFlags) != 0) { if (whitelistedPermissions == null) { whitelistedPermissions = new ArrayList<>(); @@ -1450,14 +1453,13 @@ public class PermissionManagerService extends IPermissionManager.Stub { throw new IllegalArgumentException("Unknown package: " + packageName); } - final UidPermissionState uidState = getUidState(pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName() + " and user " - + userId); + final PermissionsState permissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName()); return; } - bp.enforceDeclaredUsedAndRuntimeOrDevelopment(pkg, uidState); + bp.enforceDeclaredUsedAndRuntimeOrDevelopment(pkg, permissionsState); // If a permission review is required for legacy apps we represent // their permissions as always granted runtime ones since we need @@ -1470,7 +1472,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { final int uid = UserHandle.getUid(userId, UserHandle.getAppId(pkg.getUid())); - final int flags = uidState.getPermissionFlags(permName); + final int flags = permissionsState.getPermissionFlags(permName, userId); if ((flags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0) { Log.e(TAG, "Cannot grant system fixed permission " + permName + " for package " + packageName); @@ -1500,9 +1502,8 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (bp.isDevelopment()) { // Development permissions must be handled specially, since they are not // normal runtime permissions. For now they apply to all users. - // TODO(zhanghai): We are breaking the behavior above by making all permission state - // per-user. It isn't documented behavior and relatively rarely used anyway. - if (uidState.grantPermission(bp) != PERMISSION_OPERATION_FAILURE) { + if (permissionsState.grantInstallPermission(bp) + != PERMISSION_OPERATION_FAILURE) { if (callback != null) { callback.onInstallPermissionGranted(); } @@ -1520,7 +1521,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { return; } - final int result = uidState.grantPermission(bp); + final int result = permissionsState.grantRuntimePermission(bp, userId); switch (result) { case PERMISSION_OPERATION_FAILURE: { return; @@ -1616,14 +1617,13 @@ public class PermissionManagerService extends IPermissionManager.Stub { throw new IllegalArgumentException("Unknown permission: " + permName); } - final UidPermissionState uidState = getUidState(pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName() + " and user " - + userId); + final PermissionsState permissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName()); return; } - bp.enforceDeclaredUsedAndRuntimeOrDevelopment(pkg, uidState); + bp.enforceDeclaredUsedAndRuntimeOrDevelopment(pkg, permissionsState); // If a permission review is required for legacy apps we represent // their permissions as always granted runtime ones since we need @@ -1634,7 +1634,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { return; } - final int flags = uidState.getPermissionFlags(permName); + final int flags = permissionsState.getPermissionFlags(permName, userId); // Only the system may revoke SYSTEM_FIXED permissions. if ((flags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0 && UserHandle.getCallingAppId() != Process.SYSTEM_UID) { @@ -1649,9 +1649,8 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (bp.isDevelopment()) { // Development permissions must be handled specially, since they are not // normal runtime permissions. For now they apply to all users. - // TODO(zhanghai): We are breaking the behavior above by making all permission state - // per-user. It isn't documented behavior and relatively rarely used anyway. - if (uidState.revokePermission(bp) != PERMISSION_OPERATION_FAILURE) { + if (permissionsState.revokeInstallPermission(bp) + != PERMISSION_OPERATION_FAILURE) { if (callback != null) { mDefaultPermissionCallback.onInstallPermissionRevoked(); } @@ -1660,11 +1659,12 @@ public class PermissionManagerService extends IPermissionManager.Stub { } // Permission is already revoked, no need to do anything. - if (!uidState.hasPermission(permName)) { + if (!permissionsState.hasRuntimePermission(permName, userId)) { return; } - if (uidState.revokePermission(bp) == PERMISSION_OPERATION_FAILURE) { + if (permissionsState.revokeRuntimePermission(bp, userId) + == PERMISSION_OPERATION_FAILURE) { return; } @@ -2466,7 +2466,19 @@ public class PermissionManagerService extends IPermissionManager.Stub { private void onUserRemoved(@UserIdInt int userId) { synchronized (mLock) { - mState.removeUserState(userId); + final int appIdStatesSize = mAppIdStates.size(); + for (int i = 0; i < appIdStatesSize; i++) { + PermissionsState permissionsState = mAppIdStates.valueAt(i); + for (PermissionState permissionState + : permissionsState.getRuntimePermissionStates(userId)) { + BasePermission bp = mSettings.getPermission(permissionState.getName()); + if (bp != null) { + permissionsState.revokeRuntimePermission(bp, userId); + permissionsState.updatePermissionFlags(bp, userId, + PackageManager.MASK_PERMISSION_FLAGS_ALL, 0); + } + } + } } } @@ -2477,18 +2489,19 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (ps == null) { return Collections.emptySet(); } - final UidPermissionState uidState = getUidState(ps, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + packageName + " and user " + userId); + final PermissionsState permissionsState = getPermissionsState(ps); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + packageName); return Collections.emptySet(); } if (!ps.getInstantApp(userId)) { - return uidState.getPermissions(); + return permissionsState.getPermissions(userId); } else { // Install permission state is shared among all users, but instant app state is // per-user, so we can only filter it here unless we make install permission state // per-user as well. - final Set instantPermissions = new ArraySet<>(uidState.getPermissions()); + final Set instantPermissions = new ArraySet<>(permissionsState.getPermissions( + userId)); instantPermissions.removeIf(permissionName -> { BasePermission permission = mSettings.getPermission(permissionName); if (permission == null) { @@ -2520,12 +2533,12 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (ps == null) { return null; } - final UidPermissionState uidState = getUidState(ps, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + packageName + " and user " + userId); + final PermissionsState permissionsState = getPermissionsState(ps); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + packageName); return null; } - return uidState.computeGids(userId); + return permissionsState.computeGids(userId); } /** @@ -2562,17 +2575,15 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (ps == null) { return; } + final PermissionsState permissionsState = getOrCreatePermissionsState(ps); final int[] userIds = getAllUserIds(); boolean runtimePermissionsRevoked = false; int[] updatedUserIds = EMPTY_INT_ARRAY; - for (final int userId : userIds) { - final UserPermissionState userState = mState.getOrCreateUserState(userId); - final UidPermissionState uidState = userState.getOrCreateUidState(ps.getAppId()); - - if (uidState.isMissing()) { + for (int userId : userIds) { + if (permissionsState.isMissing(userId)) { Collection requestedPermissions; int targetSdkVersion; if (!ps.isSharedUser()) { @@ -2600,220 +2611,222 @@ public class PermissionManagerService extends IPermissionManager.Stub { && permission.isRuntime() && !permission.isRemoved()) { if (permission.isHardOrSoftRestricted() || permission.isImmutablyRestricted()) { - uidState.updatePermissionFlags(permission, + permissionsState.updatePermissionFlags(permission, userId, FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT, FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT); } if (targetSdkVersion < Build.VERSION_CODES.M) { - uidState.updatePermissionFlags(permission, + permissionsState.updatePermissionFlags(permission, userId, PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED | PackageManager.FLAG_PERMISSION_REVOKED_COMPAT, PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED | PackageManager.FLAG_PERMISSION_REVOKED_COMPAT); - uidState.grantPermission(permission); + permissionsState.grantRuntimePermission(permission, userId); } } } - uidState.setMissing(false); + permissionsState.setMissing(false, userId); updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); } + } - UidPermissionState origState = uidState; + PermissionsState origPermissions = permissionsState; - boolean changedInstallPermission = false; + boolean changedInstallPermission = false; - if (replace) { - userState.setInstallPermissionsFixed(ps.name, false); - if (!ps.isSharedUser()) { - origState = new UidPermissionState(uidState); - uidState.reset(); + if (replace) { + ps.setInstallPermissionsFixed(false); + if (!ps.isSharedUser()) { + origPermissions = new PermissionsState(permissionsState); + permissionsState.reset(); + } else { + // We need to know only about runtime permission changes since the + // calling code always writes the install permissions state but + // the runtime ones are written only if changed. The only cases of + // changed runtime permissions here are promotion of an install to + // runtime and revocation of a runtime from a shared user. + synchronized (mLock) { + updatedUserIds = revokeUnusedSharedUserPermissionsLocked( + ps.getSharedUser().getPackages(), permissionsState, userIds); + if (!ArrayUtils.isEmpty(updatedUserIds)) { + runtimePermissionsRevoked = true; + } + } + } + } + + permissionsState.setGlobalGids(mGlobalGids); + + ArraySet newImplicitPermissions = new ArraySet<>(); + + final int N = pkg.getRequestedPermissions().size(); + for (int i = 0; i < N; i++) { + final String permName = pkg.getRequestedPermissions().get(i); + final BasePermission bp = mSettings.getPermission(permName); + final boolean appSupportsRuntimePermissions = + pkg.getTargetSdkVersion() >= Build.VERSION_CODES.M; + String upgradedActivityRecognitionPermission = null; + + if (DEBUG_INSTALL && bp != null) { + Log.i(TAG, "Package " + pkg.getPackageName() + + " checking " + permName + ": " + bp); + } + + if (bp == null || getSourcePackageSetting(bp) == null) { + if (packageOfInterest == null || packageOfInterest.equals( + pkg.getPackageName())) { + if (DEBUG_PERMISSIONS) { + Slog.i(TAG, "Unknown permission " + permName + + " in package " + pkg.getPackageName()); + } + } + continue; + } + + // Cache newImplicitPermissions before modifing permissionsState as for the shared + // uids the original and new state are the same object + if (!origPermissions.hasRequestedPermission(permName) + && (pkg.getImplicitPermissions().contains(permName) + || (permName.equals(Manifest.permission.ACTIVITY_RECOGNITION)))) { + if (pkg.getImplicitPermissions().contains(permName)) { + // If permName is an implicit permission, try to auto-grant + newImplicitPermissions.add(permName); + + if (DEBUG_PERMISSIONS) { + Slog.i(TAG, permName + " is newly added for " + pkg.getPackageName()); + } } else { - // We need to know only about runtime permission changes since the - // calling code always writes the install permissions state but - // the runtime ones are written only if changed. The only cases of - // changed runtime permissions here are promotion of an install to - // runtime and revocation of a runtime from a shared user. - synchronized (mLock) { - if (revokeUnusedSharedUserPermissionsLocked( - ps.getSharedUser().getPackages(), uidState)) { - updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); - runtimePermissionsRevoked = true; + // Special case for Activity Recognition permission. Even if AR permission + // is not an implicit permission we want to add it to the list (try to + // auto-grant it) if the app was installed on a device before AR permission + // was split, regardless of if the app now requests the new AR permission + // or has updated its target SDK and AR is no longer implicit to it. + // This is a compatibility workaround for apps when AR permission was + // split in Q. + final List permissionList = + getSplitPermissions(); + int numSplitPerms = permissionList.size(); + for (int splitPermNum = 0; splitPermNum < numSplitPerms; splitPermNum++) { + SplitPermissionInfoParcelable sp = permissionList.get(splitPermNum); + String splitPermName = sp.getSplitPermission(); + if (sp.getNewPermissions().contains(permName) + && origPermissions.hasInstallPermission(splitPermName)) { + upgradedActivityRecognitionPermission = splitPermName; + newImplicitPermissions.add(permName); + + if (DEBUG_PERMISSIONS) { + Slog.i(TAG, permName + " is newly added for " + + pkg.getPackageName()); + } + break; } } } } - uidState.setGlobalGids(mGlobalGids); - - ArraySet newImplicitPermissions = new ArraySet<>(); - - final int N = pkg.getRequestedPermissions().size(); - for (int i = 0; i < N; i++) { - final String permName = pkg.getRequestedPermissions().get(i); - final BasePermission bp = mSettings.getPermission(permName); - final boolean appSupportsRuntimePermissions = - pkg.getTargetSdkVersion() >= Build.VERSION_CODES.M; - String upgradedActivityRecognitionPermission = null; - - if (DEBUG_INSTALL && bp != null) { - Log.i(TAG, "Package " + pkg.getPackageName() - + " checking " + permName + ": " + bp); - } - - if (bp == null || getSourcePackageSetting(bp) == null) { - if (packageOfInterest == null || packageOfInterest.equals( - pkg.getPackageName())) { - if (DEBUG_PERMISSIONS) { - Slog.i(TAG, "Unknown permission " + permName - + " in package " + pkg.getPackageName()); - } - } - continue; - } - - // Cache newImplicitPermissions before modifing permissionsState as for the shared - // uids the original and new state are the same object - if (!origState.hasRequestedPermission(permName) - && (pkg.getImplicitPermissions().contains(permName) - || (permName.equals(Manifest.permission.ACTIVITY_RECOGNITION)))) { - if (pkg.getImplicitPermissions().contains(permName)) { - // If permName is an implicit permission, try to auto-grant - newImplicitPermissions.add(permName); - - if (DEBUG_PERMISSIONS) { - Slog.i(TAG, permName + " is newly added for " + pkg.getPackageName()); - } - } else { - // Special case for Activity Recognition permission. Even if AR permission - // is not an implicit permission we want to add it to the list (try to - // auto-grant it) if the app was installed on a device before AR permission - // was split, regardless of if the app now requests the new AR permission - // or has updated its target SDK and AR is no longer implicit to it. - // This is a compatibility workaround for apps when AR permission was - // split in Q. - final List permissionList = - getSplitPermissions(); - int numSplitPerms = permissionList.size(); - for (int splitPermNum = 0; splitPermNum < numSplitPerms; splitPermNum++) { - SplitPermissionInfoParcelable sp = permissionList.get(splitPermNum); - String splitPermName = sp.getSplitPermission(); - if (sp.getNewPermissions().contains(permName) - && origState.hasInstallPermission(splitPermName)) { - upgradedActivityRecognitionPermission = splitPermName; - newImplicitPermissions.add(permName); - - if (DEBUG_PERMISSIONS) { - Slog.i(TAG, permName + " is newly added for " - + pkg.getPackageName()); - } - break; - } - } - } - } - - // TODO(b/140256621): The package instant app method has been removed - // as part of work in b/135203078, so this has been commented out in the meantime - // Limit ephemeral apps to ephemeral allowed permissions. - // if (/*pkg.isInstantApp()*/ false && !bp.isInstant()) { - // if (DEBUG_PERMISSIONS) { - // Log.i(TAG, "Denying non-ephemeral permission " + bp.getName() - // + " for package " + pkg.getPackageName()); - // } - // continue; - // } - - if (bp.isRuntimeOnly() && !appSupportsRuntimePermissions) { - if (DEBUG_PERMISSIONS) { - Log.i(TAG, "Denying runtime-only permission " + bp.getName() - + " for package " + pkg.getPackageName()); - } - continue; - } - - final String perm = bp.getName(); - boolean allowedSig = false; - int grant = GRANT_DENIED; - - // Keep track of app op permissions. - if (bp.isAppOp()) { - mSettings.addAppOpPackage(perm, pkg.getPackageName()); - } - - if (bp.isNormal()) { - // For all apps normal permissions are install time ones. - grant = GRANT_INSTALL; - } else if (bp.isRuntime()) { - if (origState.hasInstallPermission(bp.getName()) - || upgradedActivityRecognitionPermission != null) { - // Before Q we represented some runtime permissions as install permissions, - // in Q we cannot do this anymore. Hence upgrade them all. - grant = GRANT_UPGRADE; - } else { - // For modern apps keep runtime permissions unchanged. - grant = GRANT_RUNTIME; - } - } else if (bp.isSignature()) { - // For all apps signature permissions are install time ones. - allowedSig = shouldGrantSignaturePermission(perm, pkg, ps, bp, origState); - if (allowedSig) { - grant = GRANT_INSTALL; - } - } - - if (grant != GRANT_DENIED) { - if (!ps.isSystem() && userState.areInstallPermissionsFixed(ps.name) - && !bp.isRuntime()) { - // If this is an existing, non-system package, then - // we can't add any new permissions to it. Runtime - // permissions can be added any time - they ad dynamic. - if (!allowedSig && !origState.hasInstallPermission(perm)) { - // Except... if this is a permission that was added - // to the platform (note: need to only do this when - // updating the platform). - if (!isNewPlatformPermissionForPackage(perm, pkg)) { - grant = GRANT_DENIED; - } - } - } - } + // TODO(b/140256621): The package instant app method has been removed + // as part of work in b/135203078, so this has been commented out in the meantime + // Limit ephemeral apps to ephemeral allowed permissions. +// if (/*pkg.isInstantApp()*/ false && !bp.isInstant()) { +// if (DEBUG_PERMISSIONS) { +// Log.i(TAG, "Denying non-ephemeral permission " + bp.getName() +// + " for package " + pkg.getPackageName()); +// } +// continue; +// } + if (bp.isRuntimeOnly() && !appSupportsRuntimePermissions) { if (DEBUG_PERMISSIONS) { - Slog.i(TAG, "Considering granting permission " + perm + " to package " - + pkg.getPackageName()); + Log.i(TAG, "Denying runtime-only permission " + bp.getName() + + " for package " + pkg.getPackageName()); } + continue; + } - synchronized (mLock) { - if (grant != GRANT_DENIED) { - switch (grant) { - case GRANT_INSTALL: { - // Revoke this as runtime permission to handle the case of - // a runtime permission being downgraded to an install one. - // Also in permission review mode we keep dangerous permissions - // for legacy apps - final PermissionState origPermissionState = - origState.getPermissionState(perm); - if (origPermissionState != null - && origPermissionState.isRuntime()) { + final String perm = bp.getName(); + boolean allowedSig = false; + int grant = GRANT_DENIED; + + // Keep track of app op permissions. + if (bp.isAppOp()) { + mSettings.addAppOpPackage(perm, pkg.getPackageName()); + } + + if (bp.isNormal()) { + // For all apps normal permissions are install time ones. + grant = GRANT_INSTALL; + } else if (bp.isRuntime()) { + if (origPermissions.hasInstallPermission(bp.getName()) + || upgradedActivityRecognitionPermission != null) { + // Before Q we represented some runtime permissions as install permissions, + // in Q we cannot do this anymore. Hence upgrade them all. + grant = GRANT_UPGRADE; + } else { + // For modern apps keep runtime permissions unchanged. + grant = GRANT_RUNTIME; + } + } else if (bp.isSignature()) { + // For all apps signature permissions are install time ones. + allowedSig = shouldGrantSignaturePermission(perm, pkg, ps, bp, origPermissions); + if (allowedSig) { + grant = GRANT_INSTALL; + } + } + + if (grant != GRANT_DENIED) { + if (!ps.isSystem() && ps.areInstallPermissionsFixed() && !bp.isRuntime()) { + // If this is an existing, non-system package, then + // we can't add any new permissions to it. Runtime + // permissions can be added any time - they ad dynamic. + if (!allowedSig && !origPermissions.hasInstallPermission(perm)) { + // Except... if this is a permission that was added + // to the platform (note: need to only do this when + // updating the platform). + if (!isNewPlatformPermissionForPackage(perm, pkg)) { + grant = GRANT_DENIED; + } + } + } + } + + if (DEBUG_PERMISSIONS) { + Slog.i(TAG, "Considering granting permission " + perm + " to package " + + pkg.getPackageName()); + } + + synchronized (mLock) { + if (grant != GRANT_DENIED) { + switch (grant) { + case GRANT_INSTALL: { + // Revoke this as runtime permission to handle the case of + // a runtime permission being downgraded to an install one. + // Also in permission review mode we keep dangerous permissions + // for legacy apps + for (int userId : userIds) { + if (origPermissions.getRuntimePermissionState( + perm, userId) != null) { // Revoke the runtime permission and clear the flags. - origState.revokePermission(bp); - origState.updatePermissionFlags(bp, + origPermissions.revokeRuntimePermission(bp, userId); + origPermissions.updatePermissionFlags(bp, userId, PackageManager.MASK_PERMISSION_FLAGS_ALL, 0); // If we revoked a permission permission, we have to write. updatedUserIds = ArrayUtils.appendInt( updatedUserIds, userId); } - // Grant an install permission. - if (uidState.grantPermission(bp) != PERMISSION_OPERATION_FAILURE) { - changedInstallPermission = true; - } - } break; + } + // Grant an install permission. + if (permissionsState.grantInstallPermission(bp) != + PERMISSION_OPERATION_FAILURE) { + changedInstallPermission = true; + } + } break; - case GRANT_RUNTIME: { - boolean hardRestricted = bp.isHardRestricted(); - boolean softRestricted = bp.isSoftRestricted(); + case GRANT_RUNTIME: { + boolean hardRestricted = bp.isHardRestricted(); + boolean softRestricted = bp.isSoftRestricted(); + for (int userId : userIds) { // If permission policy is not ready we don't deal with restricted // permissions as the policy may whitelist some permissions. Once // the policy is initialized we would re-evaluate permissions. @@ -2821,24 +2834,25 @@ public class PermissionManagerService extends IPermissionManager.Stub { mPermissionPolicyInternal != null && mPermissionPolicyInternal.isInitialized(userId); - PermissionState origPermState = origState.getPermissionState(perm); - int flags = origPermState != null ? origPermState.getFlags() : 0; + PermissionState permState = origPermissions + .getRuntimePermissionState(perm, userId); + int flags = permState != null ? permState.getFlags() : 0; boolean wasChanged = false; boolean restrictionExempt = - (origState.getPermissionFlags(bp.name) + (origPermissions.getPermissionFlags(bp.name, userId) & FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0; - boolean restrictionApplied = (origState.getPermissionFlags( - bp.name) & FLAG_PERMISSION_APPLY_RESTRICTION) != 0; + boolean restrictionApplied = (origPermissions.getPermissionFlags( + bp.name, userId) & FLAG_PERMISSION_APPLY_RESTRICTION) != 0; if (appSupportsRuntimePermissions) { // If hard restricted we don't allow holding it if (permissionPolicyInitialized && hardRestricted) { if (!restrictionExempt) { - if (origPermState != null && origPermState.isGranted() - && uidState.revokePermission( - bp) != PERMISSION_OPERATION_FAILURE) { + if (permState != null && permState.isGranted() + && permissionsState.revokeRuntimePermission( + bp, userId) != PERMISSION_OPERATION_FAILURE) { wasChanged = true; } if (!restrictionApplied) { @@ -2868,15 +2882,15 @@ public class PermissionManagerService extends IPermissionManager.Stub { // Hard restricted permissions cannot be held. } else if (!permissionPolicyInitialized || (!hardRestricted || restrictionExempt)) { - if (origPermState != null && origPermState.isGranted()) { - if (uidState.grantPermission(bp) + if (permState != null && permState.isGranted()) { + if (permissionsState.grantRuntimePermission(bp, userId) == PERMISSION_OPERATION_FAILURE) { wasChanged = true; } } } } else { - if (origPermState == null) { + if (permState == null) { // New permission if (PLATFORM_PACKAGE_NAME.equals( bp.getSourcePackageName())) { @@ -2888,8 +2902,8 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } - if (!uidState.hasPermission(bp.name) - && uidState.grantPermission(bp) + if (!permissionsState.hasRuntimePermission(bp.name, userId) + && permissionsState.grantRuntimePermission(bp, userId) != PERMISSION_OPERATION_FAILURE) { wasChanged = true; } @@ -2922,32 +2936,36 @@ public class PermissionManagerService extends IPermissionManager.Stub { updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); } - uidState.updatePermissionFlags(bp, MASK_PERMISSION_FLAGS_ALL, - flags); - } break; + permissionsState.updatePermissionFlags(bp, userId, + MASK_PERMISSION_FLAGS_ALL, flags); + } + } break; - case GRANT_UPGRADE: { - // Upgrade from Pre-Q to Q permission model. Make all permissions - // runtime - PermissionState origPermState = origState.getPermissionState(perm); - int flags = (origPermState != null) ? origPermState.getFlags() : 0; + case GRANT_UPGRADE: { + // Upgrade from Pre-Q to Q permission model. Make all permissions + // runtime + PermissionState permState = origPermissions + .getInstallPermissionState(perm); + int flags = (permState != null) ? permState.getFlags() : 0; - BasePermission bpToRevoke = - upgradedActivityRecognitionPermission == null - ? bp : mSettings.getPermissionLocked( - upgradedActivityRecognitionPermission); - // Remove install permission - if (origState.revokePermission(bpToRevoke) - != PERMISSION_OPERATION_FAILURE) { - origState.updatePermissionFlags(bpToRevoke, - (MASK_PERMISSION_FLAGS_ALL - & ~FLAG_PERMISSION_APPLY_RESTRICTION), 0); - changedInstallPermission = true; - } + BasePermission bpToRevoke = + upgradedActivityRecognitionPermission == null + ? bp : mSettings.getPermissionLocked( + upgradedActivityRecognitionPermission); + // Remove install permission + if (origPermissions.revokeInstallPermission(bpToRevoke) + != PERMISSION_OPERATION_FAILURE) { + origPermissions.updatePermissionFlags(bpToRevoke, + UserHandle.USER_ALL, + (MASK_PERMISSION_FLAGS_ALL + & ~FLAG_PERMISSION_APPLY_RESTRICTION), 0); + changedInstallPermission = true; + } - boolean hardRestricted = bp.isHardRestricted(); - boolean softRestricted = bp.isSoftRestricted(); + boolean hardRestricted = bp.isHardRestricted(); + boolean softRestricted = bp.isSoftRestricted(); + for (int userId : userIds) { // If permission policy is not ready we don't deal with restricted // permissions as the policy may whitelist some permissions. Once // the policy is initialized we would re-evaluate permissions. @@ -2958,18 +2976,18 @@ public class PermissionManagerService extends IPermissionManager.Stub { boolean wasChanged = false; boolean restrictionExempt = - (origState.getPermissionFlags(bp.name) + (origPermissions.getPermissionFlags(bp.name, userId) & FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0; - boolean restrictionApplied = (origState.getPermissionFlags( - bp.name) & FLAG_PERMISSION_APPLY_RESTRICTION) != 0; + boolean restrictionApplied = (origPermissions.getPermissionFlags( + bp.name, userId) & FLAG_PERMISSION_APPLY_RESTRICTION) != 0; if (appSupportsRuntimePermissions) { // If hard restricted we don't allow holding it if (permissionPolicyInitialized && hardRestricted) { if (!restrictionExempt) { - if (origPermState != null && origPermState.isGranted() - && uidState.revokePermission( - bp) != PERMISSION_OPERATION_FAILURE) { + if (permState != null && permState.isGranted() + && permissionsState.revokeRuntimePermission( + bp, userId) != PERMISSION_OPERATION_FAILURE) { wasChanged = true; } if (!restrictionApplied) { @@ -2999,15 +3017,15 @@ public class PermissionManagerService extends IPermissionManager.Stub { // Hard restricted permissions cannot be held. } else if (!permissionPolicyInitialized || (!hardRestricted || restrictionExempt)) { - if (uidState.grantPermission(bp) - != PERMISSION_OPERATION_FAILURE) { + if (permissionsState.grantRuntimePermission(bp, userId) != + PERMISSION_OPERATION_FAILURE) { wasChanged = true; } } } else { - if (!uidState.hasPermission(bp.name) - && uidState.grantPermission(bp) - != PERMISSION_OPERATION_FAILURE) { + if (!permissionsState.hasRuntimePermission(bp.name, userId) + && permissionsState.grantRuntimePermission(bp, + userId) != PERMISSION_OPERATION_FAILURE) { flags |= FLAG_PERMISSION_REVIEW_REQUIRED; wasChanged = true; } @@ -3040,74 +3058,71 @@ public class PermissionManagerService extends IPermissionManager.Stub { updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); } - uidState.updatePermissionFlags(bp, + permissionsState.updatePermissionFlags(bp, userId, MASK_PERMISSION_FLAGS_ALL, flags); - } break; + } + } break; - default: { - if (packageOfInterest == null - || packageOfInterest.equals(pkg.getPackageName())) { - if (DEBUG_PERMISSIONS) { - Slog.i(TAG, "Not granting permission " + perm - + " to package " + pkg.getPackageName() - + " because it was previously installed without"); - } + default: { + if (packageOfInterest == null + || packageOfInterest.equals(pkg.getPackageName())) { + if (DEBUG_PERMISSIONS) { + Slog.i(TAG, "Not granting permission " + perm + + " to package " + pkg.getPackageName() + + " because it was previously installed without"); } - } break; + } + } break; + } + } else { + if (permissionsState.revokeInstallPermission(bp) != + PERMISSION_OPERATION_FAILURE) { + // Also drop the permission flags. + permissionsState.updatePermissionFlags(bp, UserHandle.USER_ALL, + MASK_PERMISSION_FLAGS_ALL, 0); + changedInstallPermission = true; + if (DEBUG_PERMISSIONS) { + Slog.i(TAG, "Un-granting permission " + perm + + " from package " + pkg.getPackageName() + + " (protectionLevel=" + bp.getProtectionLevel() + + " flags=0x" + + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, ps)) + + ")"); } - } else { - if (uidState.revokePermission(bp) != PERMISSION_OPERATION_FAILURE) { - // Also drop the permission flags. - uidState.updatePermissionFlags(bp, - MASK_PERMISSION_FLAGS_ALL, 0); - changedInstallPermission = true; - if (DEBUG_PERMISSIONS) { - Slog.i(TAG, "Un-granting permission " + perm - + " from package " + pkg.getPackageName() - + " (protectionLevel=" + bp.getProtectionLevel() - + " flags=0x" - + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, - ps)) - + ")"); - } - } else if (bp.isAppOp()) { - // Don't print warning for app op permissions, since it is fine for them - // not to be granted, there is a UI for the user to decide. - if (DEBUG_PERMISSIONS - && (packageOfInterest == null - || packageOfInterest.equals(pkg.getPackageName()))) { - Slog.i(TAG, "Not granting permission " + perm - + " to package " + pkg.getPackageName() - + " (protectionLevel=" + bp.getProtectionLevel() - + " flags=0x" - + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, - ps)) - + ")"); - } + } else if (bp.isAppOp()) { + // Don't print warning for app op permissions, since it is fine for them + // not to be granted, there is a UI for the user to decide. + if (DEBUG_PERMISSIONS + && (packageOfInterest == null + || packageOfInterest.equals(pkg.getPackageName()))) { + Slog.i(TAG, "Not granting permission " + perm + + " to package " + pkg.getPackageName() + + " (protectionLevel=" + bp.getProtectionLevel() + + " flags=0x" + + Integer.toHexString(PackageInfoUtils.appInfoFlags(pkg, ps)) + + ")"); } } } } - - if ((changedInstallPermission || replace) - && !userState.areInstallPermissionsFixed(ps.name) - && !ps.isSystem() || ps.getPkgState().isUpdatedSystemApp()) { - // This is the first that we have heard about this package, so the - // permissions we have now selected are fixed until explicitly - // changed. - userState.setInstallPermissionsFixed(ps.name, true); - } - - synchronized (mLock) { - updatedUserIds = revokePermissionsNoLongerImplicitLocked(uidState, pkg, - userId, updatedUserIds); - updatedUserIds = setInitialGrantForNewImplicitPermissionsLocked(origState, - uidState, pkg, newImplicitPermissions, userId, updatedUserIds); - } } - updatedUserIds = checkIfLegacyStorageOpsNeedToBeUpdated(pkg, replace, userIds, - updatedUserIds); + if ((changedInstallPermission || replace) && !ps.areInstallPermissionsFixed() && + !ps.isSystem() || ps.getPkgState().isUpdatedSystemApp()) { + // This is the first that we have heard about this package, so the + // permissions we have now selected are fixed until explicitly + // changed. + ps.setInstallPermissionsFixed(true); + } + + synchronized (mLock) { + updatedUserIds = revokePermissionsNoLongerImplicitLocked(permissionsState, pkg, + userIds, updatedUserIds); + updatedUserIds = setInitialGrantForNewImplicitPermissionsLocked(origPermissions, + permissionsState, pkg, newImplicitPermissions, userIds, updatedUserIds); + updatedUserIds = checkIfLegacyStorageOpsNeedToBeUpdated(pkg, replace, userIds, + updatedUserIds); + } // TODO: Kill UIDs whose GIDs or runtime permissions changed. This might be more important // for shared users. @@ -3144,38 +3159,40 @@ public class PermissionManagerService extends IPermissionManager.Stub { * * @return The updated value of the {@code updatedUserIds} parameter */ - private @NonNull int[] revokePermissionsNoLongerImplicitLocked(@NonNull UidPermissionState ps, - @NonNull AndroidPackage pkg, int userId, @NonNull int[] updatedUserIds) { + private @NonNull int[] revokePermissionsNoLongerImplicitLocked(@NonNull PermissionsState ps, + @NonNull AndroidPackage pkg, @NonNull int[] userIds, @NonNull int[] updatedUserIds) { String pkgName = pkg.getPackageName(); boolean supportsRuntimePermissions = pkg.getTargetSdkVersion() >= Build.VERSION_CODES.M; - for (String permission : ps.getPermissions()) { - if (!pkg.getImplicitPermissions().contains(permission)) { - if (!ps.hasInstallPermission(permission)) { - int flags = ps.getPermissionFlags(permission); + for (int userId : userIds) { + for (String permission : ps.getPermissions(userId)) { + if (!pkg.getImplicitPermissions().contains(permission)) { + if (!ps.hasInstallPermission(permission)) { + int flags = ps.getRuntimePermissionState(permission, userId).getFlags(); - if ((flags & FLAG_PERMISSION_REVOKE_WHEN_REQUESTED) != 0) { - BasePermission bp = mSettings.getPermissionLocked(permission); + if ((flags & FLAG_PERMISSION_REVOKE_WHEN_REQUESTED) != 0) { + BasePermission bp = mSettings.getPermissionLocked(permission); - int flagsToRemove = FLAG_PERMISSION_REVOKE_WHEN_REQUESTED; + int flagsToRemove = FLAG_PERMISSION_REVOKE_WHEN_REQUESTED; - if ((flags & BLOCKING_PERMISSION_FLAGS) == 0 - && supportsRuntimePermissions) { - int revokeResult = ps.revokePermission(bp); - if (revokeResult != PERMISSION_OPERATION_FAILURE) { - if (DEBUG_PERMISSIONS) { - Slog.i(TAG, "Revoking runtime permission " - + permission + " for " + pkgName - + " as it is now requested"); + if ((flags & BLOCKING_PERMISSION_FLAGS) == 0 + && supportsRuntimePermissions) { + int revokeResult = ps.revokeRuntimePermission(bp, userId); + if (revokeResult != PERMISSION_OPERATION_FAILURE) { + if (DEBUG_PERMISSIONS) { + Slog.i(TAG, "Revoking runtime permission " + + permission + " for " + pkgName + + " as it is now requested"); + } } + + flagsToRemove |= USER_PERMISSION_FLAGS; } - flagsToRemove |= USER_PERMISSION_FLAGS; + ps.updatePermissionFlags(bp, userId, flagsToRemove, 0); + updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); } - - ps.updatePermissionFlags(bp, flagsToRemove, 0); - updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); } } } @@ -3196,10 +3213,12 @@ public class PermissionManagerService extends IPermissionManager.Stub { * @param newPerm The permission to inherit to * @param ps The permission state of the package * @param pkg The package requesting the permissions + * @param userId The user the permission belongs to */ private void inheritPermissionStateToNewImplicitPermissionLocked( @NonNull ArraySet sourcePerms, @NonNull String newPerm, - @NonNull UidPermissionState ps, @NonNull AndroidPackage pkg) { + @NonNull PermissionsState ps, @NonNull AndroidPackage pkg, + @UserIdInt int userId) { String pkgName = pkg.getPackageName(); boolean isGranted = false; int flags = 0; @@ -3207,16 +3226,17 @@ public class PermissionManagerService extends IPermissionManager.Stub { int numSourcePerm = sourcePerms.size(); for (int i = 0; i < numSourcePerm; i++) { String sourcePerm = sourcePerms.valueAt(i); - if (ps.hasPermission(sourcePerm)) { + if ((ps.hasRuntimePermission(sourcePerm, userId)) + || ps.hasInstallPermission(sourcePerm)) { if (!isGranted) { flags = 0; } isGranted = true; - flags |= ps.getPermissionFlags(sourcePerm); + flags |= ps.getPermissionFlags(sourcePerm, userId); } else { if (!isGranted) { - flags |= ps.getPermissionFlags(sourcePerm); + flags |= ps.getPermissionFlags(sourcePerm, userId); } } } @@ -3227,11 +3247,11 @@ public class PermissionManagerService extends IPermissionManager.Stub { + " for " + pkgName); } - ps.grantPermission(mSettings.getPermissionLocked(newPerm)); + ps.grantRuntimePermission(mSettings.getPermissionLocked(newPerm), userId); } // Add permission flags - ps.updatePermissionFlags(mSettings.getPermission(newPerm), flags, flags); + ps.updatePermissionFlags(mSettings.getPermission(newPerm), userId, flags, flags); } /** @@ -3263,15 +3283,15 @@ public class PermissionManagerService extends IPermissionManager.Stub { * @param origPs The permission state of the package before the split * @param ps The new permission state * @param pkg The package the permission belongs to - * @param userId The user ID + * @param userIds All user IDs in the system, must be passed in because this method is locked * @param updatedUserIds List of users for which the permission state has already been changed * * @return List of users for which the permission state has been changed */ private @NonNull int[] setInitialGrantForNewImplicitPermissionsLocked( - @NonNull UidPermissionState origPs, @NonNull UidPermissionState ps, + @NonNull PermissionsState origPs, @NonNull PermissionsState ps, @NonNull AndroidPackage pkg, @NonNull ArraySet newImplicitPermissions, - @UserIdInt int userId, @NonNull int[] updatedUserIds) { + @NonNull int[] userIds, @NonNull int[] updatedUserIds) { String pkgName = pkg.getPackageName(); ArrayMap> newToSplitPerms = new ArrayMap<>(); @@ -3305,33 +3325,35 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (!ps.hasInstallPermission(newPerm)) { BasePermission bp = mSettings.getPermissionLocked(newPerm); - if (!newPerm.equals(Manifest.permission.ACTIVITY_RECOGNITION)) { - ps.updatePermissionFlags(bp, - FLAG_PERMISSION_REVOKE_WHEN_REQUESTED, - FLAG_PERMISSION_REVOKE_WHEN_REQUESTED); - } - updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); - - boolean inheritsFromInstallPerm = false; - for (int sourcePermNum = 0; sourcePermNum < sourcePerms.size(); - sourcePermNum++) { - if (ps.hasInstallPermission(sourcePerms.valueAt(sourcePermNum))) { - inheritsFromInstallPerm = true; - break; + for (int userId : userIds) { + if (!newPerm.equals(Manifest.permission.ACTIVITY_RECOGNITION)) { + ps.updatePermissionFlags(bp, userId, + FLAG_PERMISSION_REVOKE_WHEN_REQUESTED, + FLAG_PERMISSION_REVOKE_WHEN_REQUESTED); } - } + updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); - if (!origPs.hasRequestedPermission(sourcePerms) - && !inheritsFromInstallPerm) { - // Both permissions are new so nothing to inherit. - if (DEBUG_PERMISSIONS) { - Slog.i(TAG, newPerm + " does not inherit from " + sourcePerms - + " for " + pkgName + " as split permission is also new"); + boolean inheritsFromInstallPerm = false; + for (int sourcePermNum = 0; sourcePermNum < sourcePerms.size(); + sourcePermNum++) { + if (ps.hasInstallPermission(sourcePerms.valueAt(sourcePermNum))) { + inheritsFromInstallPerm = true; + break; + } + } + + if (!origPs.hasRequestedPermission(sourcePerms) + && !inheritsFromInstallPerm) { + // Both permissions are new so nothing to inherit. + if (DEBUG_PERMISSIONS) { + Slog.i(TAG, newPerm + " does not inherit from " + sourcePerms + + " for " + pkgName + " as split permission is also new"); + } + } else { + // Inherit from new install or existing runtime permissions + inheritPermissionStateToNewImplicitPermissionLocked(sourcePerms, + newPerm, ps, pkg, userId); } - } else { - // Inherit from new install or existing runtime permissions - inheritPermissionStateToNewImplicitPermissionLocked(sourcePerms, - newPerm, ps, pkg); } } } @@ -3462,7 +3484,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { } private boolean shouldGrantSignaturePermission(String perm, AndroidPackage pkg, - PackageSetting pkgSetting, BasePermission bp, UidPermissionState origPermissions) { + PackageSetting pkgSetting, BasePermission bp, PermissionsState origPermissions) { boolean oemPermission = bp.isOEM(); boolean vendorPrivilegedPermission = bp.isVendorPrivileged(); boolean privilegedPermission = bp.isPrivileged() || bp.isVendorPrivileged(); @@ -3738,13 +3760,12 @@ public class PermissionManagerService extends IPermissionManager.Stub { } // Legacy apps have the permission and get user consent on launch. - final UidPermissionState uidState = getUidState(pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName() + " and user " - + userId); + final PermissionsState permissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName()); return false; } - return uidState.isPermissionReviewRequired(); + return permissionsState.isPermissionReviewRequired(userId); } private boolean isPackageRequestingPermission(AndroidPackage pkg, String permission) { @@ -3768,10 +3789,9 @@ public class PermissionManagerService extends IPermissionManager.Stub { private void grantRequestedRuntimePermissionsForUser(AndroidPackage pkg, int userId, String[] grantedPermissions, int callingUid, PermissionCallback callback) { - final UidPermissionState uidState = getUidState(pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName() + " and user " - + userId); + final PermissionsState permissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName()); return; } @@ -3796,7 +3816,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { && (supportsRuntimePermissions || !bp.isRuntimeOnly()) && (grantedPermissions == null || ArrayUtils.contains(grantedPermissions, permission))) { - final int flags = uidState.getPermissionFlags(permission); + final int flags = permissionsState.getPermissionFlags(permission, userId); if (supportsRuntimePermissions) { // Installer cannot change immutable permissions. if ((flags & immutableFlags) == 0) { @@ -3818,19 +3838,18 @@ public class PermissionManagerService extends IPermissionManager.Stub { private void setWhitelistedRestrictedPermissionsForUsers(@NonNull AndroidPackage pkg, @UserIdInt int[] userIds, @Nullable List permissions, int callingUid, @PermissionWhitelistFlags int whitelistFlags, PermissionCallback callback) { + final PermissionsState permissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName()); + return; + } + SparseArray> oldGrantedRestrictedPermissions = new SparseArray<>(); boolean updatePermissions = false; final int permissionCount = pkg.getRequestedPermissions().size(); for (int i = 0; i < userIds.length; i++) { int userId = userIds[i]; - final UidPermissionState uidState = getUidState(pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName() + " and user " - + userId); - continue; - } - for (int j = 0; j < permissionCount; j++) { final String permissionName = pkg.getRequestedPermissions().get(j); @@ -3840,14 +3859,14 @@ public class PermissionManagerService extends IPermissionManager.Stub { continue; } - if (uidState.hasPermission(permissionName)) { + if (permissionsState.hasPermission(permissionName, userId)) { if (oldGrantedRestrictedPermissions.get(userId) == null) { oldGrantedRestrictedPermissions.put(userId, new ArraySet<>()); } oldGrantedRestrictedPermissions.get(userId).add(permissionName); } - final int oldFlags = uidState.getPermissionFlags(permissionName); + final int oldFlags = permissionsState.getPermissionFlags(permissionName, userId); int newFlags = oldFlags; int mask = 0; @@ -3902,7 +3921,8 @@ public class PermissionManagerService extends IPermissionManager.Stub { // as whitelisting trumps policy i.e. policy cannot grant a non // grantable permission. if ((oldFlags & PackageManager.FLAG_PERMISSION_POLICY_FIXED) != 0) { - final boolean isGranted = uidState.hasPermission(permissionName); + final boolean isGranted = permissionsState.hasPermission(permissionName, + userId); if (!isWhitelisted && isGranted) { mask |= PackageManager.FLAG_PERMISSION_POLICY_FIXED; newFlags &= ~PackageManager.FLAG_PERMISSION_POLICY_FIXED; @@ -3938,13 +3958,12 @@ public class PermissionManagerService extends IPermissionManager.Stub { for (int j = 0; j < oldGrantedCount; j++) { final String permission = oldPermsForUser.valueAt(j); // Sometimes we create a new permission state instance during update. - final UidPermissionState newUidState = getUidState(pkg, userId); - if (newUidState == null) { - Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName() - + " and user " + userId); + final PermissionsState newPermissionsState = getPermissionsState(pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + pkg.getPackageName()); continue; } - if (!newUidState.hasPermission(permission)) { + if (!newPermissionsState.hasPermission(permission, userId)) { callback.onPermissionRevoked(pkg.getUid(), userId, null); break; } @@ -3993,10 +4012,9 @@ public class PermissionManagerService extends IPermissionManager.Stub { continue; } - UidPermissionState uidState = getUidState(deletedPs.pkg, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " + deletedPs.pkg.getPackageName() - + " and user " + userId); + PermissionsState permissionsState = getPermissionsState(deletedPs.pkg); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + deletedPs.pkg.getPackageName()); continue; } @@ -4018,15 +4036,25 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } + // Try to revoke as an install permission which is for all users. // The package is gone - no need to keep flags for applying policy. - uidState.updatePermissionFlags(bp, PackageManager.MASK_PERMISSION_FLAGS_ALL, 0); + permissionsState.updatePermissionFlags(bp, userId, + PackageManager.MASK_PERMISSION_FLAGS_ALL, 0); + + if (permissionsState.revokeInstallPermission(bp) + == PermissionsState.PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED) { + affectedUserId = UserHandle.USER_ALL; + } // Try to revoke as a runtime permission which is per user. - // TODO(zhanghai): This doesn't make sense. revokePermission() doesn't fail, and why are - // we only killing the uid when gids changed, instead of any permission change? - if (uidState.revokePermission(bp) + if (permissionsState.revokeRuntimePermission(bp, userId) == PermissionsState.PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED) { - affectedUserId = userId; + if (affectedUserId == UserHandle.USER_NULL) { + affectedUserId = userId; + } else if (affectedUserId != userId) { + // Multiple users affected. + affectedUserId = UserHandle.USER_ALL; + } } } @@ -4034,12 +4062,12 @@ public class PermissionManagerService extends IPermissionManager.Stub { } @GuardedBy("mLock") - private boolean revokeUnusedSharedUserPermissionsLocked( - List pkgList, UidPermissionState uidState) { + private int[] revokeUnusedSharedUserPermissionsLocked( + List pkgList, PermissionsState permissionsState, int[] allUserIds) { // Collect all used permissions in the UID final ArraySet usedPermissions = new ArraySet<>(); if (pkgList == null || pkgList.size() == 0) { - return false; + return EmptyArray.INT; } for (AndroidPackage pkg : pkgList) { if (pkg.getRequestedPermissions().isEmpty()) { @@ -4055,27 +4083,44 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } - boolean runtimePermissionChanged = false; - - // Prune permissions - final List permissionStates = - uidState.getPermissionStates(); - final int permissionStatesSize = permissionStates.size(); - for (int i = permissionStatesSize - 1; i >= 0; i--) { - PermissionState permissionState = permissionStates.get(i); + // Prune install permissions + List installPermStates = permissionsState.getInstallPermissionStates(); + final int installPermCount = installPermStates.size(); + for (int i = installPermCount - 1; i >= 0; i--) { + PermissionState permissionState = installPermStates.get(i); if (!usedPermissions.contains(permissionState.getName())) { BasePermission bp = mSettings.getPermissionLocked(permissionState.getName()); if (bp != null) { - uidState.revokePermission(bp); - uidState.updatePermissionFlags(bp, MASK_PERMISSION_FLAGS_ALL, 0); - if (permissionState.isRuntime()) { - runtimePermissionChanged = true; + permissionsState.revokeInstallPermission(bp); + permissionsState.updatePermissionFlags(bp, UserHandle.USER_ALL, + MASK_PERMISSION_FLAGS_ALL, 0); + } + } + } + + int[] runtimePermissionChangedUserIds = EmptyArray.INT; + + // Prune runtime permissions + for (int userId : allUserIds) { + List runtimePermStates = permissionsState + .getRuntimePermissionStates(userId); + final int runtimePermCount = runtimePermStates.size(); + for (int i = runtimePermCount - 1; i >= 0; i--) { + PermissionState permissionState = runtimePermStates.get(i); + if (!usedPermissions.contains(permissionState.getName())) { + BasePermission bp = mSettings.getPermissionLocked(permissionState.getName()); + if (bp != null) { + permissionsState.revokeRuntimePermission(bp, userId); + permissionsState.updatePermissionFlags(bp, userId, + MASK_PERMISSION_FLAGS_ALL, 0); + runtimePermissionChangedUserIds = ArrayUtils.appendInt( + runtimePermissionChangedUserIds, userId); } } } } - return runtimePermissionChanged; + return runtimePermissionChangedUserIds; } /** @@ -4323,19 +4368,15 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } else { mPackageManagerInt.forEachPackage(p -> { - final int[] userIds = mUserManagerInt.getUserIds(); - for (final int userId : userIds) { - final UidPermissionState uidState = getUidState(p, userId); - if (uidState == null) { - Slog.e(TAG, "Missing permissions state for " - + p.getPackageName() + " and user " + userId); - return; - } - if (uidState.getPermissionState(bp.getName()) != null) { - uidState.revokePermission(bp); - uidState.updatePermissionFlags(bp, MASK_PERMISSION_FLAGS_ALL, - 0); - } + final PermissionsState permissionsState = getPermissionsState(p); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + p.getPackageName()); + return; + } + if (permissionsState.getInstallPermissionState(bp.getName()) != null) { + permissionsState.revokeInstallPermission(bp); + permissionsState.updatePermissionFlags(bp, UserHandle.USER_ALL, + MASK_PERMISSION_FLAGS_ALL, 0); } }); } @@ -4743,124 +4784,62 @@ public class PermissionManagerService extends IPermissionManager.Stub { } @Nullable - private UidPermissionState getUidState(@NonNull PackageSetting ps, - @UserIdInt int userId) { - return getUidState(ps.getAppId(), userId); + private PermissionsState getPermissionsState(@NonNull PackageSetting ps) { + return getPermissionsState(ps.getAppId()); } @Nullable - private UidPermissionState getUidState(@NonNull AndroidPackage pkg, - @UserIdInt int userId) { - return getUidState(pkg.getUid(), userId); + private PermissionsState getPermissionsState(@NonNull AndroidPackage pkg) { + return getPermissionsState(pkg.getUid()); } @Nullable - private UidPermissionState getUidState(int appId, @UserIdInt int userId) { + private PermissionsState getPermissionsState(int appId) { synchronized (mLock) { - final UserPermissionState userState = mState.getUserState(userId); - if (userState == null) { - return null; - } - return userState.getUidState(appId); + return mAppIdStates.get(appId); } } - private void removeAppState(int appId) { + @Nullable + private PermissionsState getOrCreatePermissionsState(@NonNull PackageSetting ps) { + return getOrCreatePermissionsState(ps.getAppId()); + } + + @Nullable + private PermissionsState getOrCreatePermissionsState(int appId) { synchronized (mLock) { - final int[] userIds = mState.getUserIds(); - for (final int userId : userIds) { - final UserPermissionState userState = mState.getUserState(userId); - userState.removeUidState(appId); + PermissionsState state = mAppIdStates.get(appId); + if (state == null) { + state = new PermissionsState(); + mAppIdStates.put(appId, state); } + return state; } } - private void readStateFromPackageSettings() { - final int[] userIds = getAllUserIds(); + private void removePermissionsState(int appId) { + synchronized (mLock) { + mAppIdStates.remove(appId); + } + } + + private void readPermissionsStateFromPackageSettings() { mPackageManagerInt.forEachPackageSetting(ps -> { - final int appId = ps.getAppId(); - final PermissionsState permissionsState = ps.getPermissionsState(); - synchronized (mLock) { - for (final int userId : userIds) { - final UserPermissionState userState = mState.getOrCreateUserState(userId); - - userState.setInstallPermissionsFixed(ps.name, ps.areInstallPermissionsFixed()); - final UidPermissionState uidState = userState.getOrCreateUidState(appId); - uidState.reset(); - uidState.setGlobalGids(permissionsState.getGlobalGids()); - uidState.setMissing(permissionsState.isMissing(userId)); - readStateFromPermissionStates(uidState, - permissionsState.getInstallPermissionStates(), false); - readStateFromPermissionStates(uidState, - permissionsState.getRuntimePermissionStates(userId), true); - } + mAppIdStates.put(ps.getAppId(), new PermissionsState(ps.getPermissionsState())); } }); } - private void readStateFromPermissionStates(@NonNull UidPermissionState uidState, - @NonNull List permissionStates, boolean isRuntime) { - final int permissionStatesSize = permissionStates.size(); - for (int i = 0; i < permissionStatesSize; i++) { - final PermissionsState.PermissionState permissionState = permissionStates.get(i); - final BasePermission permission = permissionState.getPermission(); - uidState.putPermissionState(permission, isRuntime, permissionState.isGranted(), - permissionState.getFlags()); - } - } - - private void writeStateToPackageSettings() { - final int[] userIds = mState.getUserIds(); + private void writePermissionsStateToPackageSettings() { mPackageManagerInt.forEachPackageSetting(ps -> { - ps.setInstallPermissionsFixed(false); - final PermissionsState permissionsState = ps.getPermissionsState(); - permissionsState.reset(); - final int appId = ps.getAppId(); - synchronized (mLock) { - for (final int userId : userIds) { - final UserPermissionState userState = mState.getUserState(userId); - if (userState == null) { - Slog.e(TAG, "Missing user state for " + userId); - continue; - } - - if (userState.areInstallPermissionsFixed(ps.name)) { - ps.setInstallPermissionsFixed(true); - } - - final UidPermissionState uidState = userState.getUidState(appId); - if (uidState == null) { - Slog.e(TAG, "Missing permission state for " + ps.name + " and user " - + userId); - continue; - } - - permissionsState.setGlobalGids(uidState.getGlobalGids()); - permissionsState.setMissing(uidState.isMissing(), userId); - final List permissionStates = uidState.getPermissionStates(); - final int permissionStatesSize = permissionStates.size(); - for (int i = 0; i < permissionStatesSize; i++) { - final PermissionState permissionState = permissionStates.get(i); - - final BasePermission permission = permissionState.getPermission(); - if (permissionState.isGranted()) { - if (permissionState.isRuntime()) { - permissionsState.grantRuntimePermission(permission, userId); - } else { - permissionsState.grantInstallPermission(permission); - } - } - final int flags = permissionState.getFlags(); - if (flags != 0) { - final int flagsUserId = permissionState.isRuntime() ? userId - : UserHandle.USER_ALL; - permissionsState.updatePermissionFlags(permission, flagsUserId, flags, - flags); - } - } + final PermissionsState permissionsState = mAppIdStates.get(ps.getAppId()); + if (permissionsState == null) { + Slog.e(TAG, "Missing permissions state for " + ps.name); + return; } + ps.getPermissionsState().copyFrom(permissionsState); } }); } @@ -4897,12 +4876,12 @@ public class PermissionManagerService extends IPermissionManager.Stub { PermissionManagerService.this.removeAllPermissions(pkg, chatty); } @Override - public void readStateFromPackageSettingsTEMP() { - PermissionManagerService.this.readStateFromPackageSettings(); + public void readPermissionsStateFromPackageSettingsTEMP() { + PermissionManagerService.this.readPermissionsStateFromPackageSettings(); } @Override - public void writeStateToPackageSettingsTEMP() { - PermissionManagerService.this.writeStateToPackageSettings(); + public void writePermissionsStateToPackageSettingsTEMP() { + PermissionManagerService.this.writePermissionsStateToPackageSettings(); } @Override public void onUserRemoved(@UserIdInt int userId) { @@ -4910,7 +4889,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { } @Override public void removePermissionsStateTEMP(int appId) { - PermissionManagerService.this.removeAppState(appId); + PermissionManagerService.this.removePermissionsState(appId); } @Override @UserIdInt diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java index 7f6a1d4284d20..f319bf495e8b8 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java @@ -266,21 +266,21 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager public abstract void removeAllPermissions(@NonNull AndroidPackage pkg, boolean chatty); /** - * Read permission state from package settings. + * Read {@code PermissionsState} from package settings. * * TODO(zhanghai): This is a temporary method because we should not expose * {@code PackageSetting} which is a implementation detail that permission should not know. * Instead, it should retrieve the legacy state via a defined API. */ - public abstract void readStateFromPackageSettingsTEMP(); + public abstract void readPermissionsStateFromPackageSettingsTEMP(); /** - * Write permission state to package settings. + * Write {@code PermissionsState} from to settings. * * TODO(zhanghai): This is a temporary method and should be removed once we migrated persistence * for permission. */ - public abstract void writeStateToPackageSettingsTEMP(); + public abstract void writePermissionsStateToPackageSettingsTEMP(); /** * Notify that a user has been removed and its permission state should be removed as well. diff --git a/services/core/java/com/android/server/pm/permission/PermissionState.java b/services/core/java/com/android/server/pm/permission/PermissionState.java deleted file mode 100644 index 2ed9a50353d47..0000000000000 --- a/services/core/java/com/android/server/pm/permission/PermissionState.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (C) 2020 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.server.pm.permission; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.annotation.UserIdInt; - -import com.android.internal.annotations.GuardedBy; - -/** - * State for a single permission. - */ -public final class PermissionState { - - @NonNull - private final BasePermission mPermission; - - private final Object mLock = new Object(); - - @GuardedBy("mLock") - private boolean mRuntime; - - @GuardedBy("mLock") - private boolean mGranted; - - @GuardedBy("mLock") - private int mFlags; - - public PermissionState(@NonNull BasePermission permission, boolean isRuntime) { - mPermission = permission; - mRuntime = isRuntime; - } - - public PermissionState(@NonNull PermissionState other) { - this(other.mPermission, other.mRuntime); - - mGranted = other.mGranted; - mFlags = other.mFlags; - } - - @NonNull - public BasePermission getPermission() { - return mPermission; - } - - @NonNull - public String getName() { - return mPermission.getName(); - } - - @Nullable - public int[] computeGids(@UserIdInt int userId) { - return mPermission.computeGids(userId); - } - - public boolean isRuntime() { - synchronized (mLock) { - return mRuntime; - } - } - - public boolean isGranted() { - synchronized (mLock) { - return mGranted; - } - } - - public boolean grant() { - synchronized (mLock) { - if (mGranted) { - return false; - } - mGranted = true; - UidPermissionState.invalidateCache(); - return true; - } - } - - public boolean revoke() { - synchronized (mLock) { - if (!mGranted) { - return false; - } - mGranted = false; - UidPermissionState.invalidateCache(); - return true; - } - } - - public int getFlags() { - synchronized (mLock) { - return mFlags; - } - } - - public boolean updateFlags(int flagMask, int flagValues) { - synchronized (mLock) { - final int newFlags = flagValues & flagMask; - - // Okay to do before the modification because we hold the lock. - UidPermissionState.invalidateCache(); - - final int oldFlags = mFlags; - mFlags = (mFlags & ~flagMask) | newFlags; - return mFlags != oldFlags; - } - } - - public boolean isDefault() { - synchronized (mLock) { - return !mGranted && mFlags == 0; - } - } -} diff --git a/services/core/java/com/android/server/pm/permission/PermissionsState.java b/services/core/java/com/android/server/pm/permission/PermissionsState.java index 4fb2d5fc200e4..bad59cb1b5676 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionsState.java +++ b/services/core/java/com/android/server/pm/permission/PermissionsState.java @@ -86,10 +86,6 @@ public final class PermissionsState { copyFrom(prototype); } - public int[] getGlobalGids() { - return mGlobalGids; - } - /** * Sets the global gids, applicable to all users. * @@ -829,7 +825,7 @@ public final class PermissionsState { PermissionState userState = mUserStates.get(userId); if (userState == null) { - userState = new PermissionState(mPerm); + userState = new PermissionState(mPerm.getName()); mUserStates.put(userId, userState); } @@ -912,7 +908,7 @@ public final class PermissionsState { } return userState.mFlags != oldFlags; } else if (newFlags != 0) { - userState = new PermissionState(mPerm); + userState = new PermissionState(mPerm.getName()); userState.mFlags = newFlags; mUserStates.put(userId, userState); return true; @@ -933,16 +929,16 @@ public final class PermissionsState { } public static final class PermissionState { - private final BasePermission mPermission; + private final String mName; private boolean mGranted; private int mFlags; - public PermissionState(BasePermission permission) { - mPermission = permission; + public PermissionState(String name) { + mName = name; } public PermissionState(PermissionState other) { - mPermission = other.mPermission; + mName = other.mName; mGranted = other.mGranted; mFlags = other.mFlags; } @@ -951,12 +947,8 @@ public final class PermissionsState { return !mGranted && mFlags == 0; } - public BasePermission getPermission() { - return mPermission; - } - public String getName() { - return mPermission.getName(); + return mName; } public boolean isGranted() { diff --git a/services/core/java/com/android/server/pm/permission/UidPermissionState.java b/services/core/java/com/android/server/pm/permission/UidPermissionState.java deleted file mode 100644 index 4c047ffd30e8a..0000000000000 --- a/services/core/java/com/android/server/pm/permission/UidPermissionState.java +++ /dev/null @@ -1,574 +0,0 @@ -/* - * Copyright (C) 2015 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.server.pm.permission; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.annotation.UserIdInt; -import android.content.pm.PackageManager; -import android.util.ArrayMap; -import android.util.ArraySet; - -import com.android.internal.annotations.GuardedBy; -import com.android.internal.util.ArrayUtils; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Set; - -/** - * Permission state for a UID. - *

- * This class is also responsible for keeping track of the Linux GIDs per - * user for a package or a shared user. The GIDs are computed as a set of - * the GIDs for all granted permissions' GIDs on a per user basis. - */ -public final class UidPermissionState { - /** The permission operation failed. */ - public static final int PERMISSION_OPERATION_FAILURE = -1; - - /** The permission operation succeeded and no gids changed. */ - public static final int PERMISSION_OPERATION_SUCCESS = 0; - - /** The permission operation succeeded and gids changed. */ - public static final int PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED = 1; - - private static final int[] NO_GIDS = {}; - - @NonNull - private final Object mLock = new Object(); - - @GuardedBy("mLock") - private ArrayMap mPermissions; - - @NonNull - private int[] mGlobalGids = NO_GIDS; - - private boolean mMissing; - - private boolean mPermissionReviewRequired; - - public UidPermissionState() { - /* do nothing */ - } - - public UidPermissionState(@NonNull UidPermissionState prototype) { - copyFrom(prototype); - } - - /** - * Gets the global gids, applicable to all users. - */ - @NonNull - public int[] getGlobalGids() { - return mGlobalGids; - } - - /** - * Sets the global gids, applicable to all users. - * - * @param globalGids The global gids. - */ - public void setGlobalGids(@NonNull int[] globalGids) { - if (!ArrayUtils.isEmpty(globalGids)) { - mGlobalGids = Arrays.copyOf(globalGids, globalGids.length); - } - } - - static void invalidateCache() { - PackageManager.invalidatePackageInfoCache(); - } - - /** - * Initialized this instance from another one. - * - * @param other The other instance. - */ - public void copyFrom(@NonNull UidPermissionState other) { - if (other == this) { - return; - } - - synchronized (mLock) { - if (mPermissions != null) { - if (other.mPermissions == null) { - mPermissions = null; - } else { - mPermissions.clear(); - } - } - if (other.mPermissions != null) { - if (mPermissions == null) { - mPermissions = new ArrayMap<>(); - } - final int permissionCount = other.mPermissions.size(); - for (int i = 0; i < permissionCount; i++) { - String name = other.mPermissions.keyAt(i); - PermissionState permissionState = other.mPermissions.valueAt(i); - mPermissions.put(name, new PermissionState(permissionState)); - } - } - } - - mGlobalGids = NO_GIDS; - if (other.mGlobalGids != NO_GIDS) { - mGlobalGids = other.mGlobalGids.clone(); - } - - mMissing = other.mMissing; - - mPermissionReviewRequired = other.mPermissionReviewRequired; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final UidPermissionState other = (UidPermissionState) obj; - - synchronized (mLock) { - if (mPermissions == null) { - if (other.mPermissions != null) { - return false; - } - } else if (!mPermissions.equals(other.mPermissions)) { - return false; - } - } - - if (mMissing != other.mMissing) { - return false; - } - - if (mPermissionReviewRequired != other.mPermissionReviewRequired) { - return false; - } - return Arrays.equals(mGlobalGids, other.mGlobalGids); - } - - /** - * Check whether the permissions state is missing for a user. This can happen if permission - * state is rolled back and we'll need to generate a reasonable default state to keep the app - * usable. - */ - public boolean isMissing() { - return mMissing; - } - - /** - * Set whether the permissions state is missing for a user. This can happen if permission state - * is rolled back and we'll need to generate a reasonable default state to keep the app usable. - */ - public void setMissing(boolean missing) { - mMissing = missing; - } - - public boolean isPermissionReviewRequired() { - return mPermissionReviewRequired; - } - - /** - * Gets whether the state has a given permission. - * - * @param name The permission name. - * @return Whether the state has the permission. - */ - public boolean hasPermission(@NonNull String name) { - synchronized (mLock) { - if (mPermissions == null) { - return false; - } - PermissionState permissionState = mPermissions.get(name); - return permissionState != null && permissionState.isGranted(); - } - } - - /** - * Gets whether the state has a given install permission. - * - * @param name The permission name. - * @return Whether the state has the install permission. - */ - public boolean hasInstallPermission(@NonNull String name) { - synchronized (mLock) { - if (mPermissions == null) { - return false; - } - PermissionState permissionState = mPermissions.get(name); - return permissionState != null && permissionState.isGranted() - && !permissionState.isRuntime(); - } - } - - /** - * Returns whether the state has any known request for the given permission name, - * whether or not it has been granted. - * - * @deprecated Not all requested permissions may be here. - */ - @Deprecated - public boolean hasRequestedPermission(@NonNull ArraySet names) { - synchronized (mLock) { - if (mPermissions == null) { - return false; - } - for (int i = names.size() - 1; i >= 0; i--) { - if (mPermissions.get(names.valueAt(i)) != null) { - return true; - } - } - } - - return false; - } - - /** - * Returns whether the state has any known request for the given permission name, - * whether or not it has been granted. - * - * @deprecated Not all requested permissions may be here. - */ - @Deprecated - public boolean hasRequestedPermission(@NonNull String name) { - return mPermissions != null && (mPermissions.get(name) != null); - } - - /** - * Gets all permissions for a given device user id regardless if they - * are install time or runtime permissions. - * - * @return The permissions or an empty set. - */ - @NonNull - public Set getPermissions() { - synchronized (mLock) { - if (mPermissions == null) { - return Collections.emptySet(); - } - - Set permissions = new ArraySet<>(mPermissions.size()); - - final int permissionCount = mPermissions.size(); - for (int i = 0; i < permissionCount; i++) { - String permission = mPermissions.keyAt(i); - - if (hasPermission(permission)) { - permissions.add(permission); - } - } - - return permissions; - } - } - - /** - * Gets the flags for a permission. - * - * @param name The permission name. - * @return The permission state or null if no such. - */ - public int getPermissionFlags(@NonNull String name) { - PermissionState permState = getPermissionState(name); - if (permState != null) { - return permState.getFlags(); - } - return 0; - } - - /** - * Update the flags associated with a given permission. - * @param permission The permission whose flags to update. - * @param flagMask Mask for which flags to change. - * @param flagValues New values for the mask flags. - * @return Whether the permission flags changed. - */ - public boolean updatePermissionFlags(@NonNull BasePermission permission, int flagMask, - int flagValues) { - if (flagMask == 0) { - return false; - } - - PermissionState permissionState = ensurePermissionState(permission); - - final int oldFlags = permissionState.getFlags(); - - synchronized (mLock) { - final boolean updated = permissionState.updateFlags(flagMask, flagValues); - if (updated) { - final int newFlags = permissionState.getFlags(); - if ((oldFlags & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) == 0 - && (newFlags & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) != 0) { - mPermissionReviewRequired = true; - } else if ((oldFlags & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) != 0 - && (newFlags & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) == 0) { - if (mPermissionReviewRequired && !hasPermissionRequiringReview()) { - mPermissionReviewRequired = false; - } - } - } - return updated; - } - } - - private boolean hasPermissionRequiringReview() { - synchronized (mLock) { - final int permissionCount = mPermissions.size(); - for (int i = 0; i < permissionCount; i++) { - final PermissionState permission = mPermissions.valueAt(i); - if ((permission.getFlags() & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) != 0) { - return true; - } - } - } - return false; - } - - public boolean updatePermissionFlagsForAllPermissions(int flagMask, int flagValues) { - synchronized (mLock) { - if (mPermissions == null) { - return false; - } - boolean changed = false; - final int permissionCount = mPermissions.size(); - for (int i = 0; i < permissionCount; i++) { - PermissionState permissionState = mPermissions.valueAt(i); - changed |= permissionState.updateFlags(flagMask, flagValues); - } - return changed; - } - } - - /** - * Compute the Linux gids for a given device user from the permissions - * granted to this user. Note that these are computed to avoid additional - * state as they are rarely accessed. - * - * @param userId The device user id. - * @return The gids for the device user. - */ - @NonNull - public int[] computeGids(@UserIdInt int userId) { - int[] gids = mGlobalGids; - - synchronized (mLock) { - if (mPermissions != null) { - final int permissionCount = mPermissions.size(); - for (int i = 0; i < permissionCount; i++) { - PermissionState permissionState = mPermissions.valueAt(i); - if (!permissionState.isGranted()) { - continue; - } - final int[] permGids = permissionState.computeGids(userId); - if (permGids != NO_GIDS) { - gids = appendInts(gids, permGids); - } - } - } - } - - return gids; - } - - /** - * Compute the Linux gids for all device users from the permissions - * granted to these users. - * - * @return The gids for all device users. - */ - @NonNull - public int[] computeGids(@NonNull int[] userIds) { - int[] gids = mGlobalGids; - - for (int userId : userIds) { - final int[] userGids = computeGids(userId); - gids = appendInts(gids, userGids); - } - - return gids; - } - - /** - * Resets the internal state of this object. - */ - public void reset() { - mGlobalGids = NO_GIDS; - - synchronized (mLock) { - mPermissions = null; - invalidateCache(); - } - - mMissing = false; - mPermissionReviewRequired = false; - } - - /** - * Gets the state for a permission or null if no such. - * - * @param name The permission name. - * @return The permission state. - */ - @Nullable - public PermissionState getPermissionState(@NonNull String name) { - synchronized (mLock) { - if (mPermissions == null) { - return null; - } - return mPermissions.get(name); - } - } - - /** - * Gets all permission states. - * - * @return The permission states or an empty set. - */ - @NonNull - public List getPermissionStates() { - synchronized (mLock) { - if (mPermissions == null) { - return Collections.emptyList(); - } - return new ArrayList<>(mPermissions.values()); - } - } - - /** - * Put a permission state. - */ - public void putPermissionState(@NonNull BasePermission permission, boolean isRuntime, - boolean isGranted, int flags) { - synchronized (mLock) { - ensureNoPermissionState(permission.name); - PermissionState permissionState = ensurePermissionState(permission, isRuntime); - if (isGranted) { - permissionState.grant(); - } - permissionState.updateFlags(flags, flags); - if ((flags & PackageManager.FLAG_PERMISSION_REVIEW_REQUIRED) != 0) { - mPermissionReviewRequired = true; - } - } - } - - /** - * Grant a permission. - * - * @param permission The permission to grant. - * @return The operation result which is either {@link #PERMISSION_OPERATION_SUCCESS}, - * or {@link #PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED}, or {@link - * #PERMISSION_OPERATION_FAILURE}. - */ - public int grantPermission(@NonNull BasePermission permission) { - if (hasPermission(permission.getName())) { - return PERMISSION_OPERATION_SUCCESS; - } - - PermissionState permissionState = ensurePermissionState(permission); - - if (!permissionState.grant()) { - return PERMISSION_OPERATION_FAILURE; - } - - return permission.hasGids() ? PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED - : PERMISSION_OPERATION_SUCCESS; - } - - /** - * Revoke a permission. - * - * @param permission The permission to revoke. - * @return The operation result which is either {@link #PERMISSION_OPERATION_SUCCESS}, - * or {@link #PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED}, or {@link - * #PERMISSION_OPERATION_FAILURE}. - */ - public int revokePermission(@NonNull BasePermission permission) { - final String permissionName = permission.getName(); - if (!hasPermission(permissionName)) { - return PERMISSION_OPERATION_SUCCESS; - } - - PermissionState permissionState; - synchronized (mLock) { - permissionState = mPermissions.get(permissionName); - } - - if (!permissionState.revoke()) { - return PERMISSION_OPERATION_FAILURE; - } - - if (permissionState.isDefault()) { - ensureNoPermissionState(permissionName); - } - - return permission.hasGids() ? PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED - : PERMISSION_OPERATION_SUCCESS; - } - - // TODO: fix this to use arraycopy and append all ints in one go - private static int[] appendInts(int[] current, int[] added) { - if (current != null && added != null) { - for (int guid : added) { - current = ArrayUtils.appendInt(current, guid); - } - } - return current; - } - - @NonNull - private PermissionState ensurePermissionState(@NonNull BasePermission permission) { - return ensurePermissionState(permission, permission.isRuntime()); - } - - @NonNull - private PermissionState ensurePermissionState(@NonNull BasePermission permission, - boolean isRuntime) { - final String permissionName = permission.getName(); - synchronized (mLock) { - if (mPermissions == null) { - mPermissions = new ArrayMap<>(); - } - PermissionState permissionState = mPermissions.get(permissionName); - if (permissionState == null) { - permissionState = new PermissionState(permission, isRuntime); - mPermissions.put(permissionName, permissionState); - } - return permissionState; - } - } - - private void ensureNoPermissionState(@NonNull String name) { - synchronized (mLock) { - if (mPermissions == null) { - return; - } - mPermissions.remove(name); - if (mPermissions.isEmpty()) { - mPermissions = null; - } - } - } -} diff --git a/services/core/java/com/android/server/pm/permission/UserPermissionState.java b/services/core/java/com/android/server/pm/permission/UserPermissionState.java deleted file mode 100644 index 7f55cb161e405..0000000000000 --- a/services/core/java/com/android/server/pm/permission/UserPermissionState.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (C) 2020 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.server.pm.permission; - -import android.annotation.AppIdInt; -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.os.UserHandle; -import android.util.ArraySet; -import android.util.SparseArray; - -import com.android.internal.annotations.GuardedBy; - -/** - * Permission state for a user. - */ -public final class UserPermissionState { - /** - * Whether the install permissions have been granted to a package, so that no install - * permissions should be added to it unless the package is upgraded. - */ - @GuardedBy("mLock") - @NonNull - private final ArraySet mInstallPermissionsFixed = new ArraySet<>(); - - /** - * Maps from app ID to {@link UidPermissionState}. - */ - @GuardedBy("mLock") - @NonNull - private final SparseArray mUidStates = new SparseArray<>(); - - @NonNull - private final Object mLock; - - public UserPermissionState(@NonNull Object lock) { - mLock = lock; - } - - public boolean areInstallPermissionsFixed(@NonNull String packageName) { - synchronized (mLock) { - return mInstallPermissionsFixed.contains(packageName); - } - } - - public void setInstallPermissionsFixed(@NonNull String packageName, boolean fixed) { - synchronized (mLock) { - if (fixed) { - mInstallPermissionsFixed.add(packageName); - } else { - mInstallPermissionsFixed.remove(packageName); - } - } - } - - @Nullable - public UidPermissionState getUidState(@AppIdInt int appId) { - checkAppId(appId); - synchronized (mLock) { - return mUidStates.get(appId); - } - } - - @NonNull - public UidPermissionState getOrCreateUidState(@AppIdInt int appId) { - checkAppId(appId); - synchronized (mLock) { - UidPermissionState uidState = mUidStates.get(appId); - if (uidState == null) { - uidState = new UidPermissionState(); - mUidStates.put(appId, uidState); - } - return uidState; - } - } - - public void removeUidState(@AppIdInt int appId) { - checkAppId(appId); - synchronized (mLock) { - mUidStates.delete(appId); - } - } - - private void checkAppId(@AppIdInt int appId) { - if (UserHandle.getUserId(appId) != 0) { - throw new IllegalArgumentException(appId + " is not an app ID"); - } - } -} From dbb6e03313dd7a4120f3ca984f08c62d3790154e Mon Sep 17 00:00:00 2001 From: Alex Johnston Date: Thu, 17 Sep 2020 16:21:39 +0000 Subject: [PATCH 025/192] Revert "Replace enforceXXX methods (managed profile)" This reverts commit 52743c9a17160378f9c512ef1478b9379f5cd435. Reason for revert: Unable to setup work profile Bug: 168776733 Change-Id: I1889da2f4501344f76e4b6d9d33b08bf719b5237 (cherry picked from commit 900981c9148dfee2b08c53aa78fd38836a2b23d3) --- .../DevicePolicyManagerService.java | 450 +++++++++--------- .../devicepolicy/DevicePolicyManagerTest.java | 2 +- 2 files changed, 215 insertions(+), 237 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index f8d457e877fa6..183a1495b075d 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -2081,9 +2081,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { ActiveAdmin getActiveAdminUncheckedLocked(ComponentName who, int userHandle, boolean parent) { ensureLocked(); if (parent) { - Preconditions.checkCallAuthorization(isManagedProfile(userHandle), String.format( - "You can not call APIs on the parent profile outside a managed profile, " - + "userId = %d", userHandle)); + enforceManagedProfile(userHandle, "call APIs on the parent profile"); } ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userHandle); if (admin != null && parent) { @@ -2259,7 +2257,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Nullable String permission) throws SecurityException { ensureLocked(); if (parent) { - Preconditions.checkCallingUser(isManagedProfile(getCallerIdentity(who).getUserId())); + enforceManagedProfile(mInjector.userHandleGetCallingUserId(), + "call APIs on the parent profile"); } ActiveAdmin admin = getActiveAdminOrCheckPermissionForCallerLocked( who, reqPolicy, permission); @@ -2853,7 +2852,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return; } - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); + enforceManageUsers(); synchronized (getLockObject()) { final DevicePolicyData policy = getUserData(userHandle.getIdentifier()); @@ -4043,13 +4042,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return true; } - Objects.requireNonNull(admin, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); - Preconditions.checkCallingUser(isManagedProfile(caller.getUserId())); - - return !isSeparateProfileChallengeEnabled(caller.getUserId()); + final int userId = mInjector.userHandleGetCallingUserId(); + enforceProfileOrDeviceOwner(admin); + enforceManagedProfile(userId, "query unified challenge status"); + return !isSeparateProfileChallengeEnabled(userId); } @Override @@ -4061,9 +4057,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final CallerIdentity caller = getCallerIdentity(); Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle)); - Preconditions.checkCallAuthorization(isManagedProfile(userHandle), String.format( - "can not call APIs refering to the parent profile outside a managed profile, " - + "userId = %d", userHandle)); + enforceManagedProfile(userHandle, "call APIs refering to the parent profile"); synchronized (getLockObject()) { final int targetUser = getProfileParentId(userHandle); @@ -4085,9 +4079,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final CallerIdentity caller = getCallerIdentity(); Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle)); - Preconditions.checkCallAuthorization(!isManagedProfile(userHandle), String.format( - "You can not check password sufficiency for a managed profile, userId = %d", - userHandle)); + enforceNotManagedProfile(userHandle, "check password sufficiency"); enforceUserUnlocked(userHandle); synchronized (getLockObject()) { @@ -4643,9 +4635,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature && !hasCallingPermission(permission.LOCK_DEVICE)) { return; } - final CallerIdentity caller = getCallerIdentity(); - final int callingUserId = caller.getUserId(); + final int callingUserId = mInjector.userHandleGetCallingUserId(); ComponentName adminComponent = null; synchronized (getLockObject()) { // Make sure the caller has any active admin with the right policy or @@ -4662,13 +4653,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // For Profile Owners only, callers with only permission not allowed. if ((flags & DevicePolicyManager.FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY) != 0) { // Evict key - Preconditions.checkCallingUser(isManagedProfile(callingUserId)); - Preconditions.checkArgument(!parent, - "Cannot set FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY for the parent"); + enforceManagedProfile( + callingUserId, "set FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY"); if (!isProfileOwner(adminComponent, callingUserId)) { throw new SecurityException("Only profile owner admins can set " + "FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY"); } + if (parent) { + throw new IllegalArgumentException( + "Cannot set FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY for the parent"); + } if (!mInjector.storageManagerIsFileBasedEncryptionEnabled()) { throw new UnsupportedOperationException( "FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY only applies to FBE devices"); @@ -4713,19 +4707,32 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void enforceCanManageCaCerts(ComponentName who, String callerPackage) { - final CallerIdentity caller = getCallerIdentity(who, callerPackage); - Preconditions.checkCallAuthorization(canManageCaCerts(caller)); + if (who == null) { + if (!isCallerDelegate(callerPackage, mInjector.binderGetCallingUid(), + DELEGATION_CERT_INSTALL)) { + mContext.enforceCallingOrSelfPermission(MANAGE_CA_CERTIFICATES, null); + } + } else { + enforceProfileOrDeviceOwner(who); + } } - private boolean canManageCaCerts(CallerIdentity caller) { - return isDeviceOwner(caller) || isProfileOwner(caller) || isCallerDelegate(caller, - DELEGATION_CERT_INSTALL) || hasCallingOrSelfPermission(MANAGE_CA_CERTIFICATES); + private void enforceProfileOrDeviceOwner(ComponentName who) { + synchronized (getLockObject()) { + getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER); + } + } + + private void enforceNetworkStackOrProfileOrDeviceOwner(ComponentName who) { + if (hasCallingPermission(PERMISSION_MAINLINE_NETWORK_STACK)) { + return; + } + enforceProfileOrDeviceOwner(who); } @Override public boolean approveCaCert(String alias, int userId, boolean approval) { - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); - + enforceManageUsers(); synchronized (getLockObject()) { Set certs = getUserData(userId).mAcceptedCaCertificates; boolean changed = (approval ? certs.add(alias) : certs.remove(alias)); @@ -4740,8 +4747,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isCaCertApproved(String alias, int userId) { - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); - + enforceManageUsers(); synchronized (getLockObject()) { return getUserData(userId).mAcceptedCaCertificates.contains(alias); } @@ -4766,20 +4772,21 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } @Override - public boolean installCaCert(ComponentName admin, String callerPackage, byte[] certBuffer) { + public boolean installCaCert(ComponentName admin, String callerPackage, byte[] certBuffer) + throws RemoteException { if (!mHasFeature) { return false; } - final CallerIdentity caller = getCallerIdentity(admin, callerPackage); - Preconditions.checkCallAuthorization(canManageCaCerts(caller)); + enforceCanManageCaCerts(admin, callerPackage); + final UserHandle userHandle = mInjector.binderGetCallingUserHandle(); final String alias = mInjector.binderWithCleanCallingIdentity(() -> { - String installedAlias = mCertificateMonitor.installCaCert( - caller.getUserHandle(), certBuffer); + String installedAlias = mCertificateMonitor.installCaCert(userHandle, certBuffer); + final boolean isDelegate = (admin == null); DevicePolicyEventLogger .createEvent(DevicePolicyEnums.INSTALL_CA_CERT) - .setAdmin(caller.getPackageName()) - .setBoolean(/* isDelegate */ admin == null) + .setAdmin(callerPackage) + .setBoolean(isDelegate) .write(); return installedAlias; }); @@ -4790,8 +4797,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } synchronized (getLockObject()) { - getUserData(caller.getUserId()).mOwnerInstalledCaCerts.add(alias); - saveSettingsLocked(caller.getUserId()); + getUserData(userHandle.getIdentifier()).mOwnerInstalledCaCerts.add(alias); + saveSettingsLocked(userHandle.getIdentifier()); } return true; } @@ -4801,22 +4808,22 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return; } - final CallerIdentity caller = getCallerIdentity(admin, callerPackage); - Preconditions.checkCallAuthorization(canManageCaCerts(caller)); + enforceCanManageCaCerts(admin, callerPackage); + final int userId = mInjector.userHandleGetCallingUserId(); mInjector.binderWithCleanCallingIdentity(() -> { - mCertificateMonitor.uninstallCaCerts(caller.getUserHandle(), aliases); + mCertificateMonitor.uninstallCaCerts(UserHandle.of(userId), aliases); + final boolean isDelegate = (admin == null); DevicePolicyEventLogger .createEvent(DevicePolicyEnums.UNINSTALL_CA_CERTS) - .setAdmin(caller.getPackageName()) - .setBoolean(/* isDelegate */ admin == null) + .setAdmin(callerPackage) + .setBoolean(isDelegate) .write(); }); synchronized (getLockObject()) { - if (getUserData(caller.getUserId()).mOwnerInstalledCaCerts.removeAll( - Arrays.asList(aliases))) { - saveSettingsLocked(caller.getUserId()); + if (getUserData(userId).mOwnerInstalledCaCerts.removeAll(Arrays.asList(aliases))) { + saveSettingsLocked(userId); } } } @@ -5606,10 +5613,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { public boolean setAlwaysOnVpnPackage(ComponentName who, String vpnPackage, boolean lockdown, List lockdownWhitelist) throws SecurityException { - Objects.requireNonNull(who, "ComponentName is null"); - + enforceProfileOrDeviceOwner(who); final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); final int userId = caller.getUserId(); mInjector.binderWithCleanCallingIdentity(() -> { @@ -5635,7 +5640,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } DevicePolicyEventLogger .createEvent(DevicePolicyEnums.SET_ALWAYS_ON_VPN_PACKAGE) - .setAdmin(caller.getComponentName()) + .setAdmin(who) .setStrings(vpnPackage) .setBoolean(lockdown) .setInt(lockdownWhitelist != null ? lockdownWhitelist.size() : 0) @@ -5655,14 +5660,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public String getAlwaysOnVpnPackage(ComponentName admin) throws SecurityException { - Objects.requireNonNull(admin, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); + enforceProfileOrDeviceOwner(admin); + final int userId = mInjector.userHandleGetCallingUserId(); return mInjector.binderWithCleanCallingIdentity( - () -> mInjector.getConnectivityManager().getAlwaysOnVpnPackageForUser( - caller.getUserId())); + () -> mInjector.getConnectivityManager().getAlwaysOnVpnPackageForUser(userId)); } @Override @@ -5676,14 +5678,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isAlwaysOnVpnLockdownEnabled(ComponentName admin) throws SecurityException { - Objects.requireNonNull(admin, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller) - || hasCallingPermission(PERMISSION_MAINLINE_NETWORK_STACK)); + enforceNetworkStackOrProfileOrDeviceOwner(admin); + final int userId = mInjector.userHandleGetCallingUserId(); return mInjector.binderWithCleanCallingIdentity( - () -> mInjector.getConnectivityManager().isVpnLockdownEnabled(caller.getUserId())); + () -> mInjector.getConnectivityManager().isVpnLockdownEnabled(userId)); } @Override @@ -5698,14 +5697,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public List getAlwaysOnVpnLockdownWhitelist(ComponentName admin) throws SecurityException { - Objects.requireNonNull(admin, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); + enforceProfileOrDeviceOwner(admin); + final int userId = mInjector.userHandleGetCallingUserId(); return mInjector.binderWithCleanCallingIdentity( - () -> mInjector.getConnectivityManager().getVpnLockdownWhitelist( - caller.getUserId())); + () -> mInjector.getConnectivityManager().getVpnLockdownWhitelist(userId)); } private void forceWipeDeviceNoLock(boolean wipeExtRequested, String reason, boolean wipeEuicc) { @@ -5994,13 +5990,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature || !mLockPatternUtils.hasSecureLockScreen()) { return; } + enforceSystemCaller("report password change"); - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization(isSystemUid(caller)); // Managed Profile password can only be changed when it has a separate challenge. if (!isSeparateProfileChallengeEnabled(userId)) { - Preconditions.checkCallAuthorization(!isManagedProfile(userId), String.format("You can " - + "not set the active password for a managed profile, userId = %d", userId)); + enforceNotManagedProfile(userId, "set the active password"); } DevicePolicyData policy = getUserData(userId); @@ -6053,9 +6047,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle)); Preconditions.checkCallAuthorization(hasCallingOrSelfPermission(BIND_DEVICE_ADMIN)); if (!isSeparateProfileChallengeEnabled(userHandle)) { - Preconditions.checkCallAuthorization(!isManagedProfile(userHandle), String.format( - "You can not report failed password attempt if separate profile challenge is " - + "not in place for a managed profile, userId = %d", userHandle)); + enforceNotManagedProfile(userHandle, + "report failed password attempt if separate profile challenge is not in place"); } boolean wipeData = false; @@ -7284,7 +7277,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } if (!callingUserOnly) { - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); + enforceManageUsers(); } synchronized (getLockObject()) { if (!mOwners.hasDeviceOwner()) { @@ -7303,8 +7296,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return UserHandle.USER_NULL; } - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); - + enforceManageUsers(); synchronized (getLockObject()) { return mOwners.hasDeviceOwner() ? mOwners.getDeviceOwnerUserId() : UserHandle.USER_NULL; } @@ -7319,8 +7311,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return null; } - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); - + enforceManageUsers(); synchronized (getLockObject()) { if (!mOwners.hasDeviceOwner()) { return null; @@ -7545,10 +7536,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } Objects.requireNonNull(who, "ComponentName is null"); - final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallingUser(!isManagedProfile(caller.getUserId())); - - final int userId = caller.getUserId(); + final int userId = mInjector.userHandleGetCallingUserId(); + enforceNotManagedProfile(userId, "clear profile owner"); enforceUserUnlocked(userId); synchronized (getLockObject()) { // Check if this is the profile owner who is calling @@ -7665,10 +7654,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return DevicePolicyManager.STATE_USER_UNMANAGED; } - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization(canManageUsers(caller)); - - return getUserProvisioningState(caller.getUserId()); + enforceManageUsers(); + int userHandle = mInjector.userHandleGetCallingUserId(); + return getUserProvisioningState(userHandle); } private int getUserProvisioningState(int userHandle) { @@ -7706,8 +7694,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } transitionCheckNeeded = false; } else { - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); + // For all other cases, caller must have MANAGE_PROFILE_AND_DEVICE_OWNERS. + enforceCanManageProfileAndDeviceOwners(); } final DevicePolicyData policyData = getUserData(userHandle); @@ -7762,13 +7750,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return; } Objects.requireNonNull(who, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallAuthorization(isProfileOwner(caller)); - Preconditions.checkCallingUser(isManagedProfile(caller.getUserId())); - synchronized (getLockObject()) { - final int userId = caller.getUserId(); + // Check if this is the profile owner who is calling + getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER); + final int userId = UserHandle.getCallingUserId(); + enforceManagedProfile(userId, "enable the profile"); // Check if the profile is already enabled. UserInfo managedProfile = getUserInfo(userId); if (managedProfile.isEnabled()) { @@ -7794,15 +7780,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void setProfileName(ComponentName who, String profileName) { Objects.requireNonNull(who, "ComponentName is null"); + enforceProfileOrDeviceOwner(who); - final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); - + final int userId = UserHandle.getCallingUserId(); mInjector.binderWithCleanCallingIdentity(() -> { - mUserManager.setUserName(caller.getUserId(), profileName); + mUserManager.setUserName(userId, profileName); DevicePolicyEventLogger .createEvent(DevicePolicyEnums.SET_PROFILE_NAME) - .setAdmin(caller.getComponentName()) + .setAdmin(who) .write(); }); } @@ -7911,8 +7896,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return null; } - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); - + enforceManageUsers(); ComponentName profileOwner = getProfileOwner(userHandle); if (profileOwner == null) { return null; @@ -8084,8 +8068,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } return; } - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); + enforceCanManageProfileAndDeviceOwners(); if ((mIsWatch || hasUserSetupCompleted(userHandle))) { if (!isCallerWithSystemUid()) { @@ -8121,8 +8104,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @UserIdInt int userId, boolean hasIncompatibleAccountsOrNonAdb) { if (!isAdb()) { - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); + enforceCanManageProfileAndDeviceOwners(); } final int code = checkDeviceOwnerProvisioningPreConditionLocked( @@ -8176,9 +8158,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } - private boolean canManageUsers(CallerIdentity caller) { - return isSystemUid(caller) || isRootUid(caller) - || hasCallingOrSelfPermission(permission.MANAGE_USERS); + private void enforceManageUsers() { + final int callingUid = mInjector.binderGetCallingUid(); + if (!(isCallerWithSystemUid() || callingUid == Process.ROOT_UID)) { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USERS, null); + } } private boolean hasCallingPermission(String permission) { @@ -8208,6 +8192,20 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { || hasCallingOrSelfPermission(permission.INTERACT_ACROSS_USERS); } + private void enforceManagedProfile(int userId, String message) { + if (!isManagedProfile(userId)) { + throw new SecurityException(String.format( + "You can not %s outside a managed profile, userId = %d", message, userId)); + } + } + + private void enforceNotManagedProfile(int userId, String message) { + if (isManagedProfile(userId)) { + throw new SecurityException(String.format( + "You can not %s for a managed profile, userId = %d", message, userId)); + } + } + private void enforceDeviceOwnerOrManageUsers() { synchronized (getLockObject()) { if (getActiveAdminWithPolicyForUidLocked(null, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER, @@ -8215,7 +8213,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return; } } - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); + enforceManageUsers(); } private void enforceProfileOwnerOrSystemUser() { @@ -8816,7 +8814,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } Objects.requireNonNull(who, "ComponentName is null"); - final CallerIdentity caller = getCallerIdentity(who); Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); @@ -8831,8 +8828,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return null; } - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); - + enforceManageUsers(); synchronized (getLockObject()) { List result = null; // If we have multiple profiles we return the intersection of the @@ -8917,7 +8913,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return false; } Objects.requireNonNull(who, "ComponentName is null"); - final CallerIdentity caller = getCallerIdentity(who); Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); @@ -8959,7 +8954,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } Objects.requireNonNull(who, "ComponentName is null"); - final CallerIdentity caller = getCallerIdentity(who); Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); @@ -8971,13 +8965,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public List getPermittedInputMethodsForCurrentUser() { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization(canManageUsers(caller)); + enforceManageUsers(); + final int callingUserId = mInjector.userHandleGetCallingUserId(); synchronized (getLockObject()) { List result = null; // Only device or profile owners can have permitted lists set. - DevicePolicyData policy = getUserDataUnchecked(caller.getUserId()); + DevicePolicyData policy = getUserDataUnchecked(callingUserId); for (int i = 0; i < policy.mAdminList.size(); i++) { ActiveAdmin admin = policy.mAdminList.get(i); List fromAdmin = admin.permittedInputMethods; @@ -8992,8 +8986,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // If we have a permitted list add all system input methods. if (result != null) { - List imes = InputMethodManagerInternal - .get().getInputMethodListAsUser(caller.getUserId()); + List imes = + InputMethodManagerInternal.get().getInputMethodListAsUser(callingUserId); if (imes != null) { for (InputMethodInfo ime : imes) { ServiceInfo serviceInfo = ime.getServiceInfo(); @@ -9437,12 +9431,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isEphemeralUser(ComponentName who) { Objects.requireNonNull(who, "ComponentName is null"); + enforceProfileOrDeviceOwner(who); - final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); - + final int callingUserId = mInjector.userHandleGetCallingUserId(); return mInjector.binderWithCleanCallingIdentity( - () -> mInjector.getUserManager().isUserEphemeral(caller.getUserId())); + () -> mInjector.getUserManager().isUserEphemeral(callingUserId)); } @Override @@ -10170,7 +10163,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return; } Objects.requireNonNull(who, "ComponentName is null"); - final CallerIdentity caller = getCallerIdentity(who); Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); @@ -10194,7 +10186,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return false; } Objects.requireNonNull(who, "ComponentName is null"); - final CallerIdentity caller = getCallerIdentity(who); Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); @@ -10217,23 +10208,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void setSecondaryLockscreenEnabled(ComponentName who, boolean enabled) { - Objects.requireNonNull(who, "ComponentName is null"); - - // Check can set secondary lockscreen enabled - final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); - Preconditions.checkCallAuthorization(!isManagedProfile(caller.getUserId()), - String.format("User %d is not allowed to call setSecondaryLockscreenEnabled", - caller.getUserId())); - // Allow testOnly admins to bypass supervision config requirement. - Preconditions.checkCallAuthorization(isAdminTestOnlyLocked(who, caller.getUserId()) - || isDefaultSupervisor(caller), String.format("Admin %s is not the " - + "default supervision component", caller.getComponentName())); - + enforceCanSetSecondaryLockscreenEnabled(who); synchronized (getLockObject()) { - DevicePolicyData policy = getUserData(caller.getUserId()); + final int userId = mInjector.userHandleGetCallingUserId(); + DevicePolicyData policy = getUserData(userId); policy.mSecondaryLockscreenEnabled = enabled; - saveSettingsLocked(caller.getUserId()); + saveSettingsLocked(userId); } } @@ -10244,14 +10224,31 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } - private boolean isDefaultSupervisor(CallerIdentity caller) { + private void enforceCanSetSecondaryLockscreenEnabled(ComponentName who) { + enforceProfileOrDeviceOwner(who); + final int userId = mInjector.userHandleGetCallingUserId(); + if (isManagedProfile(userId)) { + throw new SecurityException( + "User " + userId + " is not allowed to call setSecondaryLockscreenEnabled"); + } + synchronized (getLockObject()) { + if (isAdminTestOnlyLocked(who, userId)) { + // Allow testOnly admins to bypass supervision config requirement. + return; + } + } + // Only the default supervision app can use this API. final String supervisor = mContext.getResources().getString( com.android.internal.R.string.config_defaultSupervisionProfileOwnerComponent); if (supervisor == null) { - return false; + throw new SecurityException("Unable to set secondary lockscreen setting, no " + + "default supervision component defined"); } final ComponentName supervisorComponent = ComponentName.unflattenFromString(supervisor); - return caller.getComponentName().equals(supervisorComponent); + if (!who.equals(supervisorComponent)) { + throw new SecurityException( + "Admin " + who + " is not the default supervision component"); + } } @Override @@ -11591,9 +11588,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public SystemUpdateInfo getPendingSystemUpdate(ComponentName admin) { Objects.requireNonNull(admin, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); + enforceProfileOrDeviceOwner(admin); return mOwners.getSystemUpdateInfo(); } @@ -11784,11 +11779,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public int checkProvisioningPreCondition(String action, String packageName) { - Objects.requireNonNull(packageName, "packageName is null"); - - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); - + Objects.requireNonNull(packageName); + enforceCanManageProfileAndDeviceOwners(); return checkProvisioningPreConditionSkipPermission(action, packageName); } @@ -12049,12 +12041,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isManagedProfile(ComponentName admin) { - Objects.requireNonNull(admin, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); - - return isManagedProfile(caller.getUserId()); + enforceProfileOrDeviceOwner(admin); + return isManagedProfile(mInjector.userHandleGetCallingUserId()); } @Override @@ -12180,10 +12168,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return; } Objects.requireNonNull(who, "ComponentName is null"); - final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallingUser(isManagedProfile(caller.getUserId())); - + enforceManagedProfile(caller.getUserId(), "set organization color"); synchronized (getLockObject()) { ActiveAdmin admin = getProfileOwnerOrDeviceOwnerLocked(caller); admin.organizationColor = color; @@ -12191,7 +12177,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } DevicePolicyEventLogger .createEvent(DevicePolicyEnums.SET_ORGANIZATION_COLOR) - .setAdmin(caller.getComponentName()) + .setAdmin(who) .write(); } @@ -12204,10 +12190,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final CallerIdentity caller = getCallerIdentity(); Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userId)); - Preconditions.checkCallAuthorization(canManageUsers(caller)); - Preconditions.checkCallAuthorization(isManagedProfile(userId), String.format("You can not " - + "set organization color outside a managed profile, userId = %d", userId)); + enforceManageUsers(); + enforceManagedProfile(userId, "set organization color"); synchronized (getLockObject()) { ActiveAdmin admin = getProfileOwnerAdminLocked(userId); admin.organizationColor = color; @@ -12221,10 +12206,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return ActiveAdmin.DEF_ORGANIZATION_COLOR; } Objects.requireNonNull(who, "ComponentName is null"); - final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallingUser(isManagedProfile(caller.getUserId())); - + enforceManagedProfile(caller.getUserId(), "get organization color"); synchronized (getLockObject()) { ActiveAdmin admin = getProfileOwnerOrDeviceOwnerLocked(caller); return admin.organizationColor; @@ -12240,9 +12223,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final CallerIdentity caller = getCallerIdentity(); Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle)); - Preconditions.checkCallAuthorization(isManagedProfile(userHandle), String.format("You can " - + "not get organization color outside a managed profile, userId = %d", userHandle)); + enforceManagedProfile(userHandle, "get organization color"); synchronized (getLockObject()) { ActiveAdmin profileOwner = getProfileOwnerAdminLocked(userHandle); return (profileOwner != null) @@ -12275,10 +12257,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } Objects.requireNonNull(who, "ComponentName is null"); - final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallingUser(isManagedProfile(caller.getUserId())); - + enforceManagedProfile(caller.getUserId(), "get organization name"); synchronized (getLockObject()) { ActiveAdmin admin = getProfileOwnerOrDeviceOwnerLocked(caller); return admin.organizationName; @@ -12306,10 +12286,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final CallerIdentity caller = getCallerIdentity(); Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle)); - Preconditions.checkCallAuthorization(isManagedProfile(userHandle), String.format( - "You can not get organization name outside a managed profile, userId = %d", - userHandle)); + enforceManagedProfile(userHandle, "get organization name"); synchronized (getLockObject()) { ActiveAdmin profileOwner = getProfileOwnerAdminLocked(userHandle); return (profileOwner != null) @@ -12744,6 +12722,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return mSecurityLogMonitor.forceLogs(); } + private void enforceCanManageDeviceAdmin() { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_DEVICE_ADMINS, + null); + } + + private void enforceCanManageProfileAndDeviceOwners() { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS, null); + } + private void enforceCallerSystemUserHandle() { final int callingUid = mInjector.binderGetCallingUid(); final int userId = UserHandle.getUserId(callingUid); @@ -12754,11 +12742,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isUninstallInQueue(final String packageName) { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(permission.MANAGE_DEVICE_ADMINS)); - - Pair packageUserPair = new Pair<>(packageName, caller.getUserId()); + enforceCanManageDeviceAdmin(); + final int userId = mInjector.userHandleGetCallingUserId(); + Pair packageUserPair = new Pair<>(packageName, userId); synchronized (getLockObject()) { return mPackagesToRemove.contains(packageUserPair); } @@ -12766,13 +12752,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void uninstallPackageWithActiveAdmins(final String packageName) { + enforceCanManageDeviceAdmin(); Preconditions.checkArgument(!TextUtils.isEmpty(packageName)); - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(permission.MANAGE_DEVICE_ADMINS)); + final int userId = mInjector.userHandleGetCallingUserId(); - final int userId = caller.getUserId(); enforceUserUnlocked(userId); final ComponentName profileOwner = getProfileOwner(userId); @@ -12821,9 +12805,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isDeviceProvisioned() { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization(canManageUsers(caller)); - + enforceManageUsers(); synchronized (getLockObject()) { return getUserDataUnchecked(UserHandle.USER_SYSTEM).mUserSetupComplete; } @@ -12907,8 +12889,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void setDeviceProvisioningConfigApplied() { - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); - + enforceManageUsers(); synchronized (getLockObject()) { DevicePolicyData policy = getUserData(UserHandle.USER_SYSTEM); policy.mDeviceProvisioningConfigApplied = true; @@ -12918,8 +12899,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isDeviceProvisioningConfigApplied() { - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); - + enforceManageUsers(); synchronized (getLockObject()) { final DevicePolicyData policy = getUserData(UserHandle.USER_SYSTEM); return policy.mDeviceProvisioningConfigApplied; @@ -12935,10 +12915,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { */ @Override public void forceUpdateUserSetupComplete() { - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); + enforceCanManageProfileAndDeviceOwners(); enforceCallerSystemUserHandle(); - // no effect if it's called from user build if (!mInjector.isBuildDebuggable()) { return; @@ -12959,28 +12937,25 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return; } - Objects.requireNonNull(admin, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); - - toggleBackupServiceActive(caller.getUserId(), enabled); + Objects.requireNonNull(admin); + enforceProfileOrDeviceOwner(admin); + int userId = mInjector.userHandleGetCallingUserId(); + toggleBackupServiceActive(userId, enabled); } @Override public boolean isBackupServiceEnabled(ComponentName admin) { + Objects.requireNonNull(admin); if (!mHasFeature) { return true; } - Objects.requireNonNull(admin, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); + enforceProfileOrDeviceOwner(admin); synchronized (getLockObject()) { try { IBackupManager ibm = mInjector.getIBackupManager(); - return ibm != null && ibm.isBackupServiceActive(caller.getUserId()); + return ibm != null && ibm.isBackupServiceActive( + mInjector.userHandleGetCallingUserId()); } catch (RemoteException e) { throw new IllegalStateException("Failed requesting backup service state.", e); } @@ -13292,9 +13267,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return false; } final CallerIdentity caller = getCallerIdentity(admin, packageName); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) - || isCallerDelegate(caller, DELEGATION_NETWORK_LOGGING) - || hasCallingOrSelfPermission(permission.MANAGE_USERS)); + Preconditions.checkCallAuthorization( + isDeviceOwner(caller) || isCallerDelegate(caller, DELEGATION_NETWORK_LOGGING) + || hasCallingOrSelfPermission(permission.MANAGE_USERS)); synchronized (getLockObject()) { return isNetworkLoggingEnabledInternalLocked(); @@ -13562,14 +13537,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Objects.requireNonNull(admin, "ComponentName is null"); Objects.requireNonNull(packageName, "packageName is null"); Objects.requireNonNull(callback, "callback is null"); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); + enforceProfileOrDeviceOwner(admin); + final int userId = UserHandle.getCallingUserId(); long ident = mInjector.binderClearCallingIdentity(); try { ActivityManager.getService().clearApplicationUserData(packageName, false, callback, - caller.getUserId()); + userId); } catch(RemoteException re) { // Same process, should not happen. } catch (SecurityException se) { @@ -13622,9 +13596,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public List getDisallowedSystemApps(ComponentName admin, int userId, String provisioningAction) throws RemoteException { - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); - + enforceCanManageProfileAndDeviceOwners(); return new ArrayList<>( mOverlayPackagesProvider.getNonRequiredApps(admin, userId, provisioningAction)); } @@ -13635,23 +13607,31 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return; } - Objects.requireNonNull(admin, "ComponentName is null"); + + Objects.requireNonNull(admin, "Admin cannot be null."); Objects.requireNonNull(target, "Target cannot be null."); - Preconditions.checkArgument(!admin.equals(target), - "Provided administrator and target are the same object."); - Preconditions.checkArgument(!admin.getPackageName().equals(target.getPackageName()), - "Provided administrator and target have the same package name."); - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); + enforceProfileOrDeviceOwner(admin); - final int callingUserId = caller.getUserId(); + if (admin.equals(target)) { + throw new IllegalArgumentException("Provided administrator and target are " + + "the same object."); + } + + if (admin.getPackageName().equals(target.getPackageName())) { + throw new IllegalArgumentException("Provided administrator and target have " + + "the same package name."); + } + + final int callingUserId = mInjector.userHandleGetCallingUserId(); final DevicePolicyData policy = getUserData(callingUserId); final DeviceAdminInfo incomingDeviceInfo = findAdmin(target, callingUserId, /* throwForMissingPermission= */ true); checkActiveAdminPrecondition(target, incomingDeviceInfo, policy); - Preconditions.checkArgument(incomingDeviceInfo.supportsTransferOwnership(), - "Provided target does not support ownership transfer."); + if (!incomingDeviceInfo.supportsTransferOwnership()) { + throw new IllegalArgumentException("Provided target does not support " + + "ownership transfer."); + } final long id = mInjector.binderClearCallingIdentity(); String ownerType = null; @@ -13674,7 +13654,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (bundle == null) { bundle = new PersistableBundle(); } - if (isProfileOwner(caller)) { + if (isProfileOwner(admin, callingUserId)) { ownerType = ADMIN_TYPE_PROFILE_OWNER; prepareTransfer(admin, target, bundle, callingUserId, ADMIN_TYPE_PROFILE_OWNER); @@ -13685,7 +13665,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (isUserAffiliatedWithDeviceLocked(callingUserId)) { notifyAffiliatedProfileTransferOwnershipComplete(callingUserId); } - } else if (isDeviceOwner(caller)) { + } else if (isDeviceOwner(admin, callingUserId)) { ownerType = ADMIN_TYPE_DEVICE_OWNER; prepareTransfer(admin, target, bundle, callingUserId, ADMIN_TYPE_DEVICE_OWNER); @@ -14355,8 +14335,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return false; } - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); - + enforceManageUsers(); long id = mInjector.binderClearCallingIdentity(); try { return isManagedKioskInternal(); @@ -14381,8 +14360,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return false; } - Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); - + enforceManageUsers(); return mInjector.binderWithCleanCallingIdentity(() -> isUnattendedManagedKioskUnchecked()); } diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java index 631b4d48e9f26..4ce6411dc3060 100644 --- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java @@ -4407,7 +4407,7 @@ public class DevicePolicyManagerTest extends DpmTestBase { // Caller is Profile Owner, but no supervision app is configured. setAsProfileOwner(admin1); - assertExpectException(SecurityException.class, "is not the default supervision component", + assertExpectException(SecurityException.class, "no default supervision component defined", () -> dpm.setSecondaryLockscreenEnabled(admin1, true)); assertFalse(dpm.isSecondaryLockscreenEnabled(UserHandle.of(CALLER_USER_HANDLE))); From 13c0c6a0ebd98140d9da1967d92bb4ddca3cc098 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Mon, 21 Sep 2020 16:21:11 +0000 Subject: [PATCH 026/192] Revert "Invalidate package/permission cache if cross-profile app..." Revert "Add dedicated host side tests for permissions and appops" Revert submission 12439864-PermAppOpsCrossUserCheck-Fixed Reason for revert: Bug 169044600 Reverted Changes: I95d015e01:Invalidate package/permission cache if cross-profi... I2a8a84f57:Check cross-user interactions for permissions and ... Ie8f0db231:Give all non-package services the power to interac... I11af434a8:Test package/permission cache invalidation when IN... Ib6d609a4d:Add dedicated host side tests for permissions and ... Change-Id: I0be95e8099131abba6279aa3945ad6bfbbab9a71 Fixes: 169044600 (cherry picked from commit fe97984f331c24c3b49cf4cccc2d8f2c3a51defa) --- .../java/com/android/server/appop/AppOpsService.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index ffd3c574e9c65..130da712a335b 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -37,7 +37,6 @@ import static android.app.AppOpsManager.OP_CAMERA; import static android.app.AppOpsManager.OP_FLAGS_ALL; import static android.app.AppOpsManager.OP_FLAG_SELF; import static android.app.AppOpsManager.OP_FLAG_TRUSTED_PROXIED; -import static android.app.AppOpsManager.OP_INTERACT_ACROSS_PROFILES; import static android.app.AppOpsManager.OP_NONE; import static android.app.AppOpsManager.OP_PLAY_AUDIO; import static android.app.AppOpsManager.OP_RECORD_AUDIO; @@ -2252,11 +2251,6 @@ public class AppOpsService extends IAppOpsService.Stub { scheduleWriteLocked(); } uidState.evalForegroundOps(mOpModeWatchers); - - if (code == OP_INTERACT_ACROSS_PROFILES) { - // Invalidate package info cache as the visibility of packages might have changed - PackageManager.invalidatePackageInfoCache(); - } } notifyOpChangedForAllPkgsInUid(code, uid, false, permissionPolicyCallback); @@ -2729,9 +2723,6 @@ public class AppOpsService extends IAppOpsService.Stub { if (changed) { scheduleFastWriteLocked(); - - // Invalidate package info cache as the visibility of packages might have changed - PackageManager.invalidatePackageInfoCache(); } } if (callbacks != null) { From 5e24f1cc14ebba3a7330067c330566be3d9d5f75 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Mon, 21 Sep 2020 16:21:11 +0000 Subject: [PATCH 027/192] Revert "Check cross-user interactions for permissions and app-op..." Revert "Add dedicated host side tests for permissions and appops" Revert submission 12439864-PermAppOpsCrossUserCheck-Fixed Reason for revert: Bug 169044600 Reverted Changes: I95d015e01:Invalidate package/permission cache if cross-profi... I2a8a84f57:Check cross-user interactions for permissions and ... Ie8f0db231:Give all non-package services the power to interac... I11af434a8:Test package/permission cache invalidation when IN... Ib6d609a4d:Add dedicated host side tests for permissions and ... Change-Id: Iea5eeded0ee5caf5383bb0e749133d4fef18d392 (cherry picked from commit e473038f0c1de5596389b13f64099e945615ba13) --- .../android/app/ActivityManagerInternal.java | 27 +---- core/java/android/app/AppOpsManager.java | 84 ++++----------- .../android/permission/PermissionManager.java | 15 --- .../com/android/server/am/ActiveServices.java | 6 +- .../com/android/server/am/UserController.java | 22 ++-- .../android/server/appop/AppOpsService.java | 73 ++----------- .../com/android/server/appop/TEST_MAPPING | 3 - .../permission/PermissionManagerService.java | 101 +++++------------- .../android/server/pm/permission/TEST_MAPPING | 19 ++-- 9 files changed, 77 insertions(+), 273 deletions(-) diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index a2d0b892aa0ab..1f8cf8ac6d1dc 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -46,39 +46,20 @@ public abstract class ActivityManagerInternal { // Access modes for handleIncomingUser. - /** - * Allows access to a caller with {@link android.Manifest.permission#INTERACT_ACROSS_USERS} or - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}. - */ public static final int ALLOW_NON_FULL = 0; /** * Allows access to a caller with {@link android.Manifest.permission#INTERACT_ACROSS_USERS} - * or {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} if in the same profile - * group. + * if in the same profile group. * Otherwise, {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} is required. */ - public static final int ALLOW_NON_FULL_IN_PROFILE_OR_FULL = 1; - /** - * Allows access to a caller with {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} - * only. - */ + public static final int ALLOW_NON_FULL_IN_PROFILE = 1; public static final int ALLOW_FULL_ONLY = 2; /** * Allows access to a caller with {@link android.Manifest.permission#INTERACT_ACROSS_PROFILES} - * or {@link android.Manifest.permission#INTERACT_ACROSS_USERS} or - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} if in the same profile group. + * or {@link android.Manifest.permission#INTERACT_ACROSS_USERS} if in the same profile group. * Otherwise, {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} is required. */ - public static final int ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL = 3; - /** - * Requires {@link android.Manifest.permission#INTERACT_ACROSS_PROFILES}, - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS}, or - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} if in same profile group, - * otherwise {@link android.Manifest.permission#INTERACT_ACROSS_USERS} or - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}. (so this is an extension - * to {@link #ALLOW_NON_FULL}) - */ - public static final int ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL = 4; + public static final int ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE = 3; /** * Verify that calling app has access to the given provider. diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 04f72f6dc71d3..167b5a8029c0a 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -6741,14 +6741,10 @@ public class AppOpsManager { */ @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES) public void setUidMode(int code, int uid, @Mode int mode) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { mService.setUidMode(code, uid, mode); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -6766,7 +6762,11 @@ public class AppOpsManager { @TestApi @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES) public void setUidMode(@NonNull String appOp, int uid, @Mode int mode) { - setUidMode(AppOpsManager.strOpToOp(appOp), uid, mode); + try { + mService.setUidMode(AppOpsManager.strOpToOp(appOp), uid, mode); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } /** @hide */ @@ -6795,14 +6795,10 @@ public class AppOpsManager { @TestApi @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES) public void setMode(int code, int uid, String packageName, @Mode int mode) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { mService.setMode(code, uid, packageName, mode); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -6822,7 +6818,11 @@ public class AppOpsManager { @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES) public void setMode(@NonNull String op, int uid, @Nullable String packageName, @Mode int mode) { - setMode(strOpToOp(op), uid, packageName, mode); + try { + mService.setMode(strOpToOp(op), uid, packageName, mode); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } /** @@ -7298,14 +7298,10 @@ public class AppOpsManager { * @hide */ public int unsafeCheckOpRawNoThrow(int op, int uid, @NonNull String packageName) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { return mService.checkOperationRaw(op, uid, packageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -7477,20 +7473,8 @@ public class AppOpsManager { } } - int mode; - // Making the binder call "noteOperation" usually sets Binder.callingUid to the calling - // processes UID. Hence clearing the calling UID is superfluous. - // If the call is inside the system server though "noteOperation" is not a binder all, - // it is only a method call. Hence Binder.callingUid might still be set to the app that - // called the system server. This can lead to problems as not every app can see the - // same appops the system server can see. - long token = Binder.clearCallingIdentity(); - try { - mode = mService.noteOperation(op, uid, packageName, attributionTag, - collectionMode == COLLECT_ASYNC, message, shouldCollectMessage); - } finally { - Binder.restoreCallingIdentity(token); - } + int mode = mService.noteOperation(op, uid, packageName, attributionTag, + collectionMode == COLLECT_ASYNC, message, shouldCollectMessage); if (mode == MODE_ALLOWED) { if (collectionMode == COLLECT_SELF) { @@ -7653,17 +7637,10 @@ public class AppOpsManager { } } - int mode; - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); - try { - mode = mService.noteProxyOperation(op, proxiedUid, proxiedPackageName, - proxiedAttributionTag, myUid, mContext.getOpPackageName(), - mContext.getAttributionTag(), collectionMode == COLLECT_ASYNC, message, - shouldCollectMessage); - } finally { - Binder.restoreCallingIdentity(token); - } + int mode = mService.noteProxyOperation(op, proxiedUid, proxiedPackageName, + proxiedAttributionTag, myUid, mContext.getOpPackageName(), + mContext.getAttributionTag(), collectionMode == COLLECT_ASYNC, message, + shouldCollectMessage); if (mode == MODE_ALLOWED) { if (collectionMode == COLLECT_SELF) { @@ -7713,8 +7690,6 @@ public class AppOpsManager { */ @UnsupportedAppUsage public int checkOp(int op, int uid, String packageName) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { int mode = mService.checkOperation(op, uid, packageName); if (mode == MODE_ERRORED) { @@ -7723,8 +7698,6 @@ public class AppOpsManager { return mode; } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -7735,15 +7708,11 @@ public class AppOpsManager { */ @UnsupportedAppUsage public int checkOpNoThrow(int op, int uid, String packageName) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { int mode = mService.checkOperation(op, uid, packageName); return mode == AppOpsManager.MODE_FOREGROUND ? AppOpsManager.MODE_ALLOWED : mode; } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -7995,16 +7964,9 @@ public class AppOpsManager { } } - int mode; - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); - try { - mode = mService.startOperation(getClientId(), op, uid, packageName, - attributionTag, startIfModeDefault, collectionMode == COLLECT_ASYNC, - message, shouldCollectMessage); - } finally { - Binder.restoreCallingIdentity(token); - } + int mode = mService.startOperation(getClientId(), op, uid, packageName, + attributionTag, startIfModeDefault, collectionMode == COLLECT_ASYNC, message, + shouldCollectMessage); if (mode == MODE_ALLOWED) { if (collectionMode == COLLECT_SELF) { @@ -8067,14 +8029,10 @@ public class AppOpsManager { */ public void finishOp(int op, int uid, @NonNull String packageName, @Nullable String attributionTag) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { mService.finishOperation(getClientId(), op, uid, packageName, attributionTag); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -8666,14 +8624,10 @@ public class AppOpsManager { // TODO: Uncomment below annotation once b/73559440 is fixed // @RequiresPermission(value=Manifest.permission.WATCH_APPOPS, conditional=true) public boolean isOperationActive(int code, int uid, String packageName) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { return mService.isOperationActive(code, uid, packageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java index b15109e67086b..d80a7e794220d 100644 --- a/core/java/android/permission/PermissionManager.java +++ b/core/java/android/permission/PermissionManager.java @@ -34,7 +34,6 @@ import android.content.Context; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.permission.SplitPermissionInfoParcelable; -import android.os.Binder; import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; @@ -544,15 +543,10 @@ public final class PermissionManager { + permission); return PackageManager.PERMISSION_DENIED; } - // Clear Binder.callingUid in case this is called inside the system server. See - // more extensive comment in checkPackageNamePermissionUncached - long token = Binder.clearCallingIdentity(); try { return am.checkPermission(permission, pid, uid); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -685,20 +679,11 @@ public final class PermissionManager { /* @hide */ private static int checkPackageNamePermissionUncached( String permName, String pkgName, @UserIdInt int userId) { - // Makeing the binder call "checkPermission" usually sets Binder.callingUid to the calling - // processes UID. Hence clearing the calling UID is superflous. - // If the call is inside the system server though "checkPermission" is not a binder all, it - // is only a method call. Hence Binder.callingUid might still be set to the app that called - // the system server. This can lead to problems as not every app can check the same - // permissions the system server can check. - long token = Binder.clearCallingIdentity(); try { return ActivityThread.getPermissionManager().checkPermission( permName, pkgName, userId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index bfe04e628f810..20f3231de2001 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -2609,12 +2609,12 @@ public final class ActiveServices { private int getAllowMode(Intent service, @Nullable String callingPackage) { if (callingPackage == null || service.getComponent() == null) { - return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE_OR_FULL; + return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE; } if (callingPackage.equals(service.getComponent().getPackageName())) { - return ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL; + return ActivityManagerInternal.ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE; } else { - return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE_OR_FULL; + return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE; } } diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 3dfbcc71dd3cc..eb60573e6f17e 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -23,11 +23,10 @@ import static android.app.ActivityManager.USER_OP_ERROR_IS_SYSTEM; import static android.app.ActivityManager.USER_OP_ERROR_RELATED_USERS_CANNOT_STOP; import static android.app.ActivityManager.USER_OP_IS_CURRENT; import static android.app.ActivityManager.USER_OP_SUCCESS; -import static android.app.ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL; -import static android.app.ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL; +import static android.app.ActivityManagerInternal.ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE; import static android.app.ActivityManagerInternal.ALLOW_FULL_ONLY; import static android.app.ActivityManagerInternal.ALLOW_NON_FULL; -import static android.app.ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE_OR_FULL; +import static android.app.ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE; import static android.os.Process.SHELL_UID; import static android.os.Process.SYSTEM_UID; @@ -1912,12 +1911,11 @@ class UserController implements Handler.Callback { callingUid, -1, true) != PackageManager.PERMISSION_GRANTED) { // If the caller does not have either permission, they are always doomed. allow = false; - } else if (allowMode == ALLOW_NON_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL) { + } else if (allowMode == ALLOW_NON_FULL) { // We are blanket allowing non-full access, you lucky caller! allow = true; - } else if (allowMode == ALLOW_NON_FULL_IN_PROFILE_OR_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL) { + } else if (allowMode == ALLOW_NON_FULL_IN_PROFILE + || allowMode == ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE) { // We may or may not allow this depending on whether the two users are // in the same profile. allow = isSameProfileGroup; @@ -1944,15 +1942,12 @@ class UserController implements Handler.Callback { builder.append("; this requires "); builder.append(INTERACT_ACROSS_USERS_FULL); if (allowMode != ALLOW_FULL_ONLY) { - if (allowMode == ALLOW_NON_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL - || isSameProfileGroup) { + if (allowMode == ALLOW_NON_FULL || isSameProfileGroup) { builder.append(" or "); builder.append(INTERACT_ACROSS_USERS); } if (isSameProfileGroup - && (allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL)) { + && allowMode == ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE) { builder.append(" or "); builder.append(INTERACT_ACROSS_PROFILES); } @@ -1979,8 +1974,7 @@ class UserController implements Handler.Callback { private boolean canInteractWithAcrossProfilesPermission( int allowMode, boolean isSameProfileGroup, int callingPid, int callingUid, String callingPackage) { - if (allowMode != ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL - && allowMode != ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL) { + if (allowMode != ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE) { return false; } if (!isSameProfileGroup) { diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 130da712a335b..a80111c2f7811 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -19,7 +19,6 @@ package com.android.server.appop; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; -import static android.app.ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL; import static android.app.AppOpsManager.CALL_BACK_ON_SWITCHED_OP; import static android.app.AppOpsManager.FILTER_BY_ATTRIBUTION_TAG; import static android.app.AppOpsManager.FILTER_BY_OP_NAMES; @@ -130,7 +129,6 @@ import android.provider.Settings; import android.util.ArrayMap; import android.util.ArraySet; import android.util.AtomicFile; -import android.util.EventLog; import android.util.KeyValueListParser; import android.util.LongSparseArray; import android.util.Pair; @@ -164,7 +162,6 @@ import com.android.server.LocalServices; import com.android.server.LockGuard; import com.android.server.SystemServerInitThreadPool; import com.android.server.SystemServiceManager; -import com.android.server.am.ActivityManagerService; import com.android.server.pm.PackageList; import com.android.server.pm.parsing.pkg.AndroidPackage; @@ -2202,11 +2199,8 @@ public class AppOpsService extends IAppOpsService.Stub { + " by uid " + Binder.getCallingUid()); } - int userId = UserHandle.getUserId(uid); - enforceManageAppOpsModes(Binder.getCallingPid(), Binder.getCallingUid(), uid); verifyIncomingOp(code); - verifyIncomingUser(userId); code = AppOpsManager.opToSwitch(code); if (permissionPolicyCallback == null) { @@ -2456,12 +2450,8 @@ public class AppOpsService extends IAppOpsService.Stub { private void setMode(int code, int uid, @NonNull String packageName, int mode, @Nullable IAppOpsCallback permissionPolicyCallback) { enforceManageAppOpsModes(Binder.getCallingPid(), Binder.getCallingUid(), uid); - - int userId = UserHandle.getUserId(uid); - verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); ArraySet repCbs = null; code = AppOpsManager.opToSwitch(code); @@ -2881,11 +2871,8 @@ public class AppOpsService extends IAppOpsService.Stub { private int checkOperationImpl(int code, int uid, String packageName, boolean raw) { - int userId = UserHandle.getUserId(uid); - verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3004,15 +2991,10 @@ public class AppOpsService extends IAppOpsService.Stub { String proxiedAttributionTag, int proxyUid, String proxyPackageName, String proxyAttributionTag, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage) { - int proxiedUserId = UserHandle.getUserId(proxiedUid); - int proxyUserId = UserHandle.getUserId(proxyUid); - verifyIncomingUid(proxyUid); verifyIncomingOp(code); - verifyIncomingUser(proxiedUserId); - verifyIncomingUser(proxyUserId); - verifyIncomingPackage(proxiedPackageName, proxiedUserId); - verifyIncomingPackage(proxyPackageName, proxyUserId); + verifyIncomingPackage(proxiedPackageName, UserHandle.getUserId(proxiedUid)); + verifyIncomingPackage(proxyPackageName, UserHandle.getUserId(proxyUid)); String resolveProxyPackageName = resolvePackageName(proxyUid, proxyPackageName); if (resolveProxyPackageName == null) { @@ -3062,12 +3044,9 @@ public class AppOpsService extends IAppOpsService.Stub { private int noteOperationImpl(int code, int uid, @Nullable String packageName, @Nullable String attributionTag, boolean shouldCollectAsyncNotedOp, @Nullable String message, boolean shouldCollectMessage) { - int userId = UserHandle.getUserId(uid); - verifyIncomingUid(uid); verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3444,12 +3423,9 @@ public class AppOpsService extends IAppOpsService.Stub { public int startOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag, boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage) { - int userId = UserHandle.getUserId(uid); - verifyIncomingUid(uid); verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3541,12 +3517,9 @@ public class AppOpsService extends IAppOpsService.Stub { @Override public void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag) { - int userId = UserHandle.getUserId(uid); - verifyIncomingUid(uid); verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3775,33 +3748,6 @@ public class AppOpsService extends IAppOpsService.Stub { } } - private void verifyIncomingUser(@UserIdInt int userId) { - int callingUid = Binder.getCallingUid(); - int callingUserId = UserHandle.getUserId(callingUid); - int callingPid = Binder.getCallingPid(); - - if (callingUserId != userId) { - // Prevent endless loop between when checking appops inside of handleIncomingUser - if (Binder.getCallingPid() == ActivityManagerService.MY_PID) { - return; - } - long token = Binder.clearCallingIdentity(); - try { - try { - LocalServices.getService(ActivityManagerInternal.class).handleIncomingUser( - callingPid, callingUid, userId, /* allowAll */ false, - ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL, "appop operation", null); - } catch (Exception e) { - EventLog.writeEvent(0x534e4554, "153996875", "appop", userId); - - throw e; - } - } finally { - Binder.restoreCallingIdentity(token); - } - } - } - private @Nullable UidState getUidStateLocked(int uid, boolean edit) { UidState uidState = mUidStates.get(uid); if (uidState == null) { @@ -5881,11 +5827,8 @@ public class AppOpsService extends IAppOpsService.Stub { return false; } } - int userId = UserHandle.getUserId(uid); - verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); final String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { diff --git a/services/core/java/com/android/server/appop/TEST_MAPPING b/services/core/java/com/android/server/appop/TEST_MAPPING index a3e1b7a7e5c5e..84de25c06ebf2 100644 --- a/services/core/java/com/android/server/appop/TEST_MAPPING +++ b/services/core/java/com/android/server/appop/TEST_MAPPING @@ -6,9 +6,6 @@ { "name": "CtsAppOps2TestCases" }, - { - "name": "CtsAppOpHostTestCases" - }, { "name": "FrameworksServicesTests", "options": [ diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index aa327ba023569..2f9e199bc506c 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -137,7 +137,6 @@ import com.android.server.LocalServices; import com.android.server.ServiceThread; import com.android.server.SystemConfig; import com.android.server.Watchdog; -import com.android.server.am.ActivityManagerService; import com.android.server.pm.ApexManager; import com.android.server.pm.PackageManagerServiceUtils; import com.android.server.pm.PackageSetting; @@ -902,16 +901,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { } private int checkPermissionImpl(String permName, String pkgName, int userId) { - try { - enforceCrossUserOrProfilePermission(Binder.getCallingUid(), userId, - false, false, "checkPermissionImpl"); - } catch (Exception e) { - Slog.e(TAG, "Invalid cross user access", e); - EventLog.writeEvent(0x534e4554, "153996875", "checkPermissionImpl", pkgName); - - throw e; - } - final AndroidPackage pkg = mPackageManagerInt.getPackage(pkgName); if (pkg == null) { return PackageManager.PERMISSION_DENIED; @@ -989,16 +978,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { } private int checkUidPermissionImpl(String permName, int uid) { - try { - enforceCrossUserOrProfilePermission(Binder.getCallingUid(), UserHandle.getUserId(uid), - false, false, "checkUidPermissionImpl"); - } catch (Exception e) { - Slog.e(TAG, "Invalid cross user access", e); - EventLog.writeEvent(0x534e4554, "153996875", "checkUidPermissionImpl", uid); - - throw e; - } - final AndroidPackage pkg = mPackageManagerInt.getPackage(uid); return checkUidPermissionInternal(pkg, uid, permName); } @@ -4529,7 +4508,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { } final int callingUserId = UserHandle.getUserId(callingUid); if (hasCrossUserPermission( - Binder.getCallingPid(), callingUid, callingUserId, userId, requireFullPermission, + callingUid, callingUserId, userId, requireFullPermission, requirePermissionWhenSameUser)) { return; } @@ -4556,79 +4535,53 @@ public class PermissionManagerService extends IPermissionManager.Stub { private void enforceCrossUserOrProfilePermission(int callingUid, @UserIdInt int userId, boolean requireFullPermission, boolean checkShell, String message) { - int callingPid = Binder.getCallingPid(); - final int callingUserId = UserHandle.getUserId(callingUid); - if (userId < 0) { throw new IllegalArgumentException("Invalid userId " + userId); } - - if (callingUserId == userId) { + if (checkShell) { + PackageManagerServiceUtils.enforceShellRestriction(mUserManagerInt, + UserManager.DISALLOW_DEBUGGING_FEATURES, callingUid, userId); + } + final int callingUserId = UserHandle.getUserId(callingUid); + if (hasCrossUserPermission(callingUid, callingUserId, userId, requireFullPermission, + /*requirePermissionWhenSameUser= */ false)) { return; } - - // Prevent endless loop between when checking permission while checking a permission - if (callingPid == ActivityManagerService.MY_PID) { + final boolean isSameProfileGroup = isSameProfileGroup(callingUserId, userId); + if (isSameProfileGroup && PermissionChecker.checkPermissionForPreflight( + mContext, + android.Manifest.permission.INTERACT_ACROSS_PROFILES, + PermissionChecker.PID_UNKNOWN, + callingUid, + mPackageManagerInt.getPackage(callingUid).getPackageName()) + == PermissionChecker.PERMISSION_GRANTED) { return; } - - long token = Binder.clearCallingIdentity(); - try { - if (checkShell) { - PackageManagerServiceUtils.enforceShellRestriction(mUserManagerInt, - UserManager.DISALLOW_DEBUGGING_FEATURES, callingUid, userId); - } - if (hasCrossUserPermission(callingPid, callingUid, callingUserId, userId, - requireFullPermission, /*requirePermissionWhenSameUser= */ false)) { - return; - } - final boolean isSameProfileGroup = isSameProfileGroup(callingUserId, userId); - - if (isSameProfileGroup) { - AndroidPackage callingPkg = mPackageManagerInt.getPackage(callingUid); - String callingPkgName = null; - if (callingPkg != null) { - callingPkgName = callingPkg.getPackageName(); - } - - if (PermissionChecker.checkPermissionForPreflight( - mContext, - android.Manifest.permission.INTERACT_ACROSS_PROFILES, - PermissionChecker.PID_UNKNOWN, - callingUid, - callingPkgName) - == PermissionChecker.PERMISSION_GRANTED) { - return; - } - } - String errorMessage = buildInvalidCrossUserOrProfilePermissionMessage( callingUid, userId, message, requireFullPermission, isSameProfileGroup); Slog.w(TAG, errorMessage); throw new SecurityException(errorMessage); - } finally { - Binder.restoreCallingIdentity(token); - } } - private boolean hasCrossUserPermission(int callingPid, int callingUid, int callingUserId, - int userId, boolean requireFullPermission, boolean requirePermissionWhenSameUser) { + private boolean hasCrossUserPermission( + int callingUid, int callingUserId, int userId, boolean requireFullPermission, + boolean requirePermissionWhenSameUser) { if (!requirePermissionWhenSameUser && userId == callingUserId) { return true; } if (callingUid == Process.SYSTEM_UID || callingUid == Process.ROOT_UID) { return true; } - - if (!requireFullPermission) { - if (mContext.checkPermission(android.Manifest.permission.INTERACT_ACROSS_USERS, - callingPid, callingUid) == PackageManager.PERMISSION_GRANTED) { - return true; - } + if (requireFullPermission) { + return hasPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL); } + return hasPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) + || hasPermission(Manifest.permission.INTERACT_ACROSS_USERS); + } - return mContext.checkPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL, - callingPid, callingUid) == PackageManager.PERMISSION_GRANTED; + private boolean hasPermission(String permission) { + return mContext.checkCallingOrSelfPermission(permission) + == PackageManager.PERMISSION_GRANTED; } private boolean isSameProfileGroup(@UserIdInt int callerUserId, @UserIdInt int userId) { diff --git a/services/core/java/com/android/server/pm/permission/TEST_MAPPING b/services/core/java/com/android/server/pm/permission/TEST_MAPPING index 65dc320eadc29..c0d71ac268530 100644 --- a/services/core/java/com/android/server/pm/permission/TEST_MAPPING +++ b/services/core/java/com/android/server/pm/permission/TEST_MAPPING @@ -17,6 +17,14 @@ } ] }, + { + "name": "CtsAppSecurityHostTestCases", + "options": [ + { + "include-filter": "android.appsecurity.cts.AppSecurityTests#rebootWithDuplicatePermission" + } + ] + }, { "name": "CtsPermission2TestCases", "options": [ @@ -28,17 +36,6 @@ } ] }, - { - "name": "CtsPermissionHostTestCases" - }, - { - "name": "CtsAppSecurityHostTestCases", - "options": [ - { - "include-filter": "android.appsecurity.cts.AppSecurityTests#rebootWithDuplicatePermission" - } - ] - }, { "name": "CtsStatsdHostTestCases", "options": [ From 1ca6f401a46925d6ffc2c20515e0e506d87d0984 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Mon, 21 Sep 2020 16:21:11 +0000 Subject: [PATCH 028/192] Revert "Give all non-package services the power to interact accr..." Revert "Add dedicated host side tests for permissions and appops" Revert submission 12439864-PermAppOpsCrossUserCheck-Fixed Reason for revert: Bug 169044600 Reverted Changes: I95d015e01:Invalidate package/permission cache if cross-profi... I2a8a84f57:Check cross-user interactions for permissions and ... Ie8f0db231:Give all non-package services the power to interac... I11af434a8:Test package/permission cache invalidation when IN... Ib6d609a4d:Add dedicated host side tests for permissions and ... Change-Id: I47d371832c119fe4ce4890e10c1ac87aba92acbc (cherry picked from commit 50db82082bd5e46aa12a6c433bc7e0141bfbdf6d) --- data/etc/platform.xml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/data/etc/platform.xml b/data/etc/platform.xml index 0a06814792787..dd8f40d586bcf 100644 --- a/data/etc/platform.xml +++ b/data/etc/platform.xml @@ -153,8 +153,8 @@ + - @@ -164,7 +164,6 @@ - @@ -175,10 +174,8 @@ - - @@ -193,10 +190,8 @@ - - From d3b8775c7ce17d7ca1e59081d6a7ee46475ec7aa Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Mon, 21 Sep 2020 16:21:11 +0000 Subject: [PATCH 029/192] Revert "Invalidate package/permission cache if cross-profile app..." Revert "Add dedicated host side tests for permissions and appops" Revert submission 12439864-PermAppOpsCrossUserCheck-Fixed Reason for revert: Bug 169044600 Reverted Changes: I95d015e01:Invalidate package/permission cache if cross-profi... I2a8a84f57:Check cross-user interactions for permissions and ... Ie8f0db231:Give all non-package services the power to interac... I11af434a8:Test package/permission cache invalidation when IN... Ib6d609a4d:Add dedicated host side tests for permissions and ... Change-Id: I0be95e8099131abba6279aa3945ad6bfbbab9a71 Fixes: 169044600 (cherry picked from commit fe97984f331c24c3b49cf4cccc2d8f2c3a51defa) --- .../java/com/android/server/appop/AppOpsService.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index ffd3c574e9c65..130da712a335b 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -37,7 +37,6 @@ import static android.app.AppOpsManager.OP_CAMERA; import static android.app.AppOpsManager.OP_FLAGS_ALL; import static android.app.AppOpsManager.OP_FLAG_SELF; import static android.app.AppOpsManager.OP_FLAG_TRUSTED_PROXIED; -import static android.app.AppOpsManager.OP_INTERACT_ACROSS_PROFILES; import static android.app.AppOpsManager.OP_NONE; import static android.app.AppOpsManager.OP_PLAY_AUDIO; import static android.app.AppOpsManager.OP_RECORD_AUDIO; @@ -2252,11 +2251,6 @@ public class AppOpsService extends IAppOpsService.Stub { scheduleWriteLocked(); } uidState.evalForegroundOps(mOpModeWatchers); - - if (code == OP_INTERACT_ACROSS_PROFILES) { - // Invalidate package info cache as the visibility of packages might have changed - PackageManager.invalidatePackageInfoCache(); - } } notifyOpChangedForAllPkgsInUid(code, uid, false, permissionPolicyCallback); @@ -2729,9 +2723,6 @@ public class AppOpsService extends IAppOpsService.Stub { if (changed) { scheduleFastWriteLocked(); - - // Invalidate package info cache as the visibility of packages might have changed - PackageManager.invalidatePackageInfoCache(); } } if (callbacks != null) { From 8015cf894f84b2c0528bea07d6eb01dd69cccaac Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Mon, 21 Sep 2020 16:21:11 +0000 Subject: [PATCH 030/192] Revert "Check cross-user interactions for permissions and app-op..." Revert "Add dedicated host side tests for permissions and appops" Revert submission 12439864-PermAppOpsCrossUserCheck-Fixed Reason for revert: Bug 169044600 Reverted Changes: I95d015e01:Invalidate package/permission cache if cross-profi... I2a8a84f57:Check cross-user interactions for permissions and ... Ie8f0db231:Give all non-package services the power to interac... I11af434a8:Test package/permission cache invalidation when IN... Ib6d609a4d:Add dedicated host side tests for permissions and ... Change-Id: Iea5eeded0ee5caf5383bb0e749133d4fef18d392 (cherry picked from commit bbeed895f5b9730217f043ebbd5b39f42c64d969) --- .../android/app/ActivityManagerInternal.java | 27 +---- core/java/android/app/AppOpsManager.java | 84 ++++----------- .../android/permission/PermissionManager.java | 15 --- .../com/android/server/am/ActiveServices.java | 6 +- .../com/android/server/am/UserController.java | 22 ++-- .../android/server/appop/AppOpsService.java | 73 ++----------- .../com/android/server/appop/TEST_MAPPING | 3 - .../permission/PermissionManagerService.java | 101 +++++------------- .../android/server/pm/permission/TEST_MAPPING | 19 ++-- 9 files changed, 77 insertions(+), 273 deletions(-) diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index a2d0b892aa0ab..1f8cf8ac6d1dc 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -46,39 +46,20 @@ public abstract class ActivityManagerInternal { // Access modes for handleIncomingUser. - /** - * Allows access to a caller with {@link android.Manifest.permission#INTERACT_ACROSS_USERS} or - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}. - */ public static final int ALLOW_NON_FULL = 0; /** * Allows access to a caller with {@link android.Manifest.permission#INTERACT_ACROSS_USERS} - * or {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} if in the same profile - * group. + * if in the same profile group. * Otherwise, {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} is required. */ - public static final int ALLOW_NON_FULL_IN_PROFILE_OR_FULL = 1; - /** - * Allows access to a caller with {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} - * only. - */ + public static final int ALLOW_NON_FULL_IN_PROFILE = 1; public static final int ALLOW_FULL_ONLY = 2; /** * Allows access to a caller with {@link android.Manifest.permission#INTERACT_ACROSS_PROFILES} - * or {@link android.Manifest.permission#INTERACT_ACROSS_USERS} or - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} if in the same profile group. + * or {@link android.Manifest.permission#INTERACT_ACROSS_USERS} if in the same profile group. * Otherwise, {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} is required. */ - public static final int ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL = 3; - /** - * Requires {@link android.Manifest.permission#INTERACT_ACROSS_PROFILES}, - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS}, or - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL} if in same profile group, - * otherwise {@link android.Manifest.permission#INTERACT_ACROSS_USERS} or - * {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}. (so this is an extension - * to {@link #ALLOW_NON_FULL}) - */ - public static final int ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL = 4; + public static final int ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE = 3; /** * Verify that calling app has access to the given provider. diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 04f72f6dc71d3..167b5a8029c0a 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -6741,14 +6741,10 @@ public class AppOpsManager { */ @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES) public void setUidMode(int code, int uid, @Mode int mode) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { mService.setUidMode(code, uid, mode); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -6766,7 +6762,11 @@ public class AppOpsManager { @TestApi @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES) public void setUidMode(@NonNull String appOp, int uid, @Mode int mode) { - setUidMode(AppOpsManager.strOpToOp(appOp), uid, mode); + try { + mService.setUidMode(AppOpsManager.strOpToOp(appOp), uid, mode); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } /** @hide */ @@ -6795,14 +6795,10 @@ public class AppOpsManager { @TestApi @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES) public void setMode(int code, int uid, String packageName, @Mode int mode) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { mService.setMode(code, uid, packageName, mode); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -6822,7 +6818,11 @@ public class AppOpsManager { @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES) public void setMode(@NonNull String op, int uid, @Nullable String packageName, @Mode int mode) { - setMode(strOpToOp(op), uid, packageName, mode); + try { + mService.setMode(strOpToOp(op), uid, packageName, mode); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } /** @@ -7298,14 +7298,10 @@ public class AppOpsManager { * @hide */ public int unsafeCheckOpRawNoThrow(int op, int uid, @NonNull String packageName) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { return mService.checkOperationRaw(op, uid, packageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -7477,20 +7473,8 @@ public class AppOpsManager { } } - int mode; - // Making the binder call "noteOperation" usually sets Binder.callingUid to the calling - // processes UID. Hence clearing the calling UID is superfluous. - // If the call is inside the system server though "noteOperation" is not a binder all, - // it is only a method call. Hence Binder.callingUid might still be set to the app that - // called the system server. This can lead to problems as not every app can see the - // same appops the system server can see. - long token = Binder.clearCallingIdentity(); - try { - mode = mService.noteOperation(op, uid, packageName, attributionTag, - collectionMode == COLLECT_ASYNC, message, shouldCollectMessage); - } finally { - Binder.restoreCallingIdentity(token); - } + int mode = mService.noteOperation(op, uid, packageName, attributionTag, + collectionMode == COLLECT_ASYNC, message, shouldCollectMessage); if (mode == MODE_ALLOWED) { if (collectionMode == COLLECT_SELF) { @@ -7653,17 +7637,10 @@ public class AppOpsManager { } } - int mode; - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); - try { - mode = mService.noteProxyOperation(op, proxiedUid, proxiedPackageName, - proxiedAttributionTag, myUid, mContext.getOpPackageName(), - mContext.getAttributionTag(), collectionMode == COLLECT_ASYNC, message, - shouldCollectMessage); - } finally { - Binder.restoreCallingIdentity(token); - } + int mode = mService.noteProxyOperation(op, proxiedUid, proxiedPackageName, + proxiedAttributionTag, myUid, mContext.getOpPackageName(), + mContext.getAttributionTag(), collectionMode == COLLECT_ASYNC, message, + shouldCollectMessage); if (mode == MODE_ALLOWED) { if (collectionMode == COLLECT_SELF) { @@ -7713,8 +7690,6 @@ public class AppOpsManager { */ @UnsupportedAppUsage public int checkOp(int op, int uid, String packageName) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { int mode = mService.checkOperation(op, uid, packageName); if (mode == MODE_ERRORED) { @@ -7723,8 +7698,6 @@ public class AppOpsManager { return mode; } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -7735,15 +7708,11 @@ public class AppOpsManager { */ @UnsupportedAppUsage public int checkOpNoThrow(int op, int uid, String packageName) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { int mode = mService.checkOperation(op, uid, packageName); return mode == AppOpsManager.MODE_FOREGROUND ? AppOpsManager.MODE_ALLOWED : mode; } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -7995,16 +7964,9 @@ public class AppOpsManager { } } - int mode; - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); - try { - mode = mService.startOperation(getClientId(), op, uid, packageName, - attributionTag, startIfModeDefault, collectionMode == COLLECT_ASYNC, - message, shouldCollectMessage); - } finally { - Binder.restoreCallingIdentity(token); - } + int mode = mService.startOperation(getClientId(), op, uid, packageName, + attributionTag, startIfModeDefault, collectionMode == COLLECT_ASYNC, message, + shouldCollectMessage); if (mode == MODE_ALLOWED) { if (collectionMode == COLLECT_SELF) { @@ -8067,14 +8029,10 @@ public class AppOpsManager { */ public void finishOp(int op, int uid, @NonNull String packageName, @Nullable String attributionTag) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { mService.finishOperation(getClientId(), op, uid, packageName, attributionTag); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -8666,14 +8624,10 @@ public class AppOpsManager { // TODO: Uncomment below annotation once b/73559440 is fixed // @RequiresPermission(value=Manifest.permission.WATCH_APPOPS, conditional=true) public boolean isOperationActive(int code, int uid, String packageName) { - // Clear calling UID to handle calls from inside the system server. See #noteOpNoThrow - long token = Binder.clearCallingIdentity(); try { return mService.isOperationActive(code, uid, packageName); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java index b15109e67086b..d80a7e794220d 100644 --- a/core/java/android/permission/PermissionManager.java +++ b/core/java/android/permission/PermissionManager.java @@ -34,7 +34,6 @@ import android.content.Context; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.permission.SplitPermissionInfoParcelable; -import android.os.Binder; import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; @@ -544,15 +543,10 @@ public final class PermissionManager { + permission); return PackageManager.PERMISSION_DENIED; } - // Clear Binder.callingUid in case this is called inside the system server. See - // more extensive comment in checkPackageNamePermissionUncached - long token = Binder.clearCallingIdentity(); try { return am.checkPermission(permission, pid, uid); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } @@ -685,20 +679,11 @@ public final class PermissionManager { /* @hide */ private static int checkPackageNamePermissionUncached( String permName, String pkgName, @UserIdInt int userId) { - // Makeing the binder call "checkPermission" usually sets Binder.callingUid to the calling - // processes UID. Hence clearing the calling UID is superflous. - // If the call is inside the system server though "checkPermission" is not a binder all, it - // is only a method call. Hence Binder.callingUid might still be set to the app that called - // the system server. This can lead to problems as not every app can check the same - // permissions the system server can check. - long token = Binder.clearCallingIdentity(); try { return ActivityThread.getPermissionManager().checkPermission( permName, pkgName, userId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); - } finally { - Binder.restoreCallingIdentity(token); } } diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index bfe04e628f810..20f3231de2001 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -2609,12 +2609,12 @@ public final class ActiveServices { private int getAllowMode(Intent service, @Nullable String callingPackage) { if (callingPackage == null || service.getComponent() == null) { - return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE_OR_FULL; + return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE; } if (callingPackage.equals(service.getComponent().getPackageName())) { - return ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL; + return ActivityManagerInternal.ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE; } else { - return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE_OR_FULL; + return ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE; } } diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 3dfbcc71dd3cc..eb60573e6f17e 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -23,11 +23,10 @@ import static android.app.ActivityManager.USER_OP_ERROR_IS_SYSTEM; import static android.app.ActivityManager.USER_OP_ERROR_RELATED_USERS_CANNOT_STOP; import static android.app.ActivityManager.USER_OP_IS_CURRENT; import static android.app.ActivityManager.USER_OP_SUCCESS; -import static android.app.ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL; -import static android.app.ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL; +import static android.app.ActivityManagerInternal.ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE; import static android.app.ActivityManagerInternal.ALLOW_FULL_ONLY; import static android.app.ActivityManagerInternal.ALLOW_NON_FULL; -import static android.app.ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE_OR_FULL; +import static android.app.ActivityManagerInternal.ALLOW_NON_FULL_IN_PROFILE; import static android.os.Process.SHELL_UID; import static android.os.Process.SYSTEM_UID; @@ -1912,12 +1911,11 @@ class UserController implements Handler.Callback { callingUid, -1, true) != PackageManager.PERMISSION_GRANTED) { // If the caller does not have either permission, they are always doomed. allow = false; - } else if (allowMode == ALLOW_NON_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL) { + } else if (allowMode == ALLOW_NON_FULL) { // We are blanket allowing non-full access, you lucky caller! allow = true; - } else if (allowMode == ALLOW_NON_FULL_IN_PROFILE_OR_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL) { + } else if (allowMode == ALLOW_NON_FULL_IN_PROFILE + || allowMode == ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE) { // We may or may not allow this depending on whether the two users are // in the same profile. allow = isSameProfileGroup; @@ -1944,15 +1942,12 @@ class UserController implements Handler.Callback { builder.append("; this requires "); builder.append(INTERACT_ACROSS_USERS_FULL); if (allowMode != ALLOW_FULL_ONLY) { - if (allowMode == ALLOW_NON_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL - || isSameProfileGroup) { + if (allowMode == ALLOW_NON_FULL || isSameProfileGroup) { builder.append(" or "); builder.append(INTERACT_ACROSS_USERS); } if (isSameProfileGroup - && (allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL - || allowMode == ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL)) { + && allowMode == ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE) { builder.append(" or "); builder.append(INTERACT_ACROSS_PROFILES); } @@ -1979,8 +1974,7 @@ class UserController implements Handler.Callback { private boolean canInteractWithAcrossProfilesPermission( int allowMode, boolean isSameProfileGroup, int callingPid, int callingUid, String callingPackage) { - if (allowMode != ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_FULL - && allowMode != ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL) { + if (allowMode != ALLOW_ALL_PROFILE_PERMISSIONS_IN_PROFILE) { return false; } if (!isSameProfileGroup) { diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 130da712a335b..a80111c2f7811 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -19,7 +19,6 @@ package com.android.server.appop; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION; import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE; -import static android.app.ActivityManagerInternal.ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL; import static android.app.AppOpsManager.CALL_BACK_ON_SWITCHED_OP; import static android.app.AppOpsManager.FILTER_BY_ATTRIBUTION_TAG; import static android.app.AppOpsManager.FILTER_BY_OP_NAMES; @@ -130,7 +129,6 @@ import android.provider.Settings; import android.util.ArrayMap; import android.util.ArraySet; import android.util.AtomicFile; -import android.util.EventLog; import android.util.KeyValueListParser; import android.util.LongSparseArray; import android.util.Pair; @@ -164,7 +162,6 @@ import com.android.server.LocalServices; import com.android.server.LockGuard; import com.android.server.SystemServerInitThreadPool; import com.android.server.SystemServiceManager; -import com.android.server.am.ActivityManagerService; import com.android.server.pm.PackageList; import com.android.server.pm.parsing.pkg.AndroidPackage; @@ -2202,11 +2199,8 @@ public class AppOpsService extends IAppOpsService.Stub { + " by uid " + Binder.getCallingUid()); } - int userId = UserHandle.getUserId(uid); - enforceManageAppOpsModes(Binder.getCallingPid(), Binder.getCallingUid(), uid); verifyIncomingOp(code); - verifyIncomingUser(userId); code = AppOpsManager.opToSwitch(code); if (permissionPolicyCallback == null) { @@ -2456,12 +2450,8 @@ public class AppOpsService extends IAppOpsService.Stub { private void setMode(int code, int uid, @NonNull String packageName, int mode, @Nullable IAppOpsCallback permissionPolicyCallback) { enforceManageAppOpsModes(Binder.getCallingPid(), Binder.getCallingUid(), uid); - - int userId = UserHandle.getUserId(uid); - verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); ArraySet repCbs = null; code = AppOpsManager.opToSwitch(code); @@ -2881,11 +2871,8 @@ public class AppOpsService extends IAppOpsService.Stub { private int checkOperationImpl(int code, int uid, String packageName, boolean raw) { - int userId = UserHandle.getUserId(uid); - verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3004,15 +2991,10 @@ public class AppOpsService extends IAppOpsService.Stub { String proxiedAttributionTag, int proxyUid, String proxyPackageName, String proxyAttributionTag, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage) { - int proxiedUserId = UserHandle.getUserId(proxiedUid); - int proxyUserId = UserHandle.getUserId(proxyUid); - verifyIncomingUid(proxyUid); verifyIncomingOp(code); - verifyIncomingUser(proxiedUserId); - verifyIncomingUser(proxyUserId); - verifyIncomingPackage(proxiedPackageName, proxiedUserId); - verifyIncomingPackage(proxyPackageName, proxyUserId); + verifyIncomingPackage(proxiedPackageName, UserHandle.getUserId(proxiedUid)); + verifyIncomingPackage(proxyPackageName, UserHandle.getUserId(proxyUid)); String resolveProxyPackageName = resolvePackageName(proxyUid, proxyPackageName); if (resolveProxyPackageName == null) { @@ -3062,12 +3044,9 @@ public class AppOpsService extends IAppOpsService.Stub { private int noteOperationImpl(int code, int uid, @Nullable String packageName, @Nullable String attributionTag, boolean shouldCollectAsyncNotedOp, @Nullable String message, boolean shouldCollectMessage) { - int userId = UserHandle.getUserId(uid); - verifyIncomingUid(uid); verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3444,12 +3423,9 @@ public class AppOpsService extends IAppOpsService.Stub { public int startOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag, boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage) { - int userId = UserHandle.getUserId(uid); - verifyIncomingUid(uid); verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3541,12 +3517,9 @@ public class AppOpsService extends IAppOpsService.Stub { @Override public void finishOperation(IBinder clientId, int code, int uid, String packageName, String attributionTag) { - int userId = UserHandle.getUserId(uid); - verifyIncomingUid(uid); verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { @@ -3775,33 +3748,6 @@ public class AppOpsService extends IAppOpsService.Stub { } } - private void verifyIncomingUser(@UserIdInt int userId) { - int callingUid = Binder.getCallingUid(); - int callingUserId = UserHandle.getUserId(callingUid); - int callingPid = Binder.getCallingPid(); - - if (callingUserId != userId) { - // Prevent endless loop between when checking appops inside of handleIncomingUser - if (Binder.getCallingPid() == ActivityManagerService.MY_PID) { - return; - } - long token = Binder.clearCallingIdentity(); - try { - try { - LocalServices.getService(ActivityManagerInternal.class).handleIncomingUser( - callingPid, callingUid, userId, /* allowAll */ false, - ALLOW_ACROSS_PROFILES_IN_PROFILE_OR_NON_FULL, "appop operation", null); - } catch (Exception e) { - EventLog.writeEvent(0x534e4554, "153996875", "appop", userId); - - throw e; - } - } finally { - Binder.restoreCallingIdentity(token); - } - } - } - private @Nullable UidState getUidStateLocked(int uid, boolean edit) { UidState uidState = mUidStates.get(uid); if (uidState == null) { @@ -5881,11 +5827,8 @@ public class AppOpsService extends IAppOpsService.Stub { return false; } } - int userId = UserHandle.getUserId(uid); - verifyIncomingOp(code); - verifyIncomingUser(userId); - verifyIncomingPackage(packageName, userId); + verifyIncomingPackage(packageName, UserHandle.getUserId(uid)); final String resolvedPackageName = resolvePackageName(uid, packageName); if (resolvedPackageName == null) { diff --git a/services/core/java/com/android/server/appop/TEST_MAPPING b/services/core/java/com/android/server/appop/TEST_MAPPING index a3e1b7a7e5c5e..84de25c06ebf2 100644 --- a/services/core/java/com/android/server/appop/TEST_MAPPING +++ b/services/core/java/com/android/server/appop/TEST_MAPPING @@ -6,9 +6,6 @@ { "name": "CtsAppOps2TestCases" }, - { - "name": "CtsAppOpHostTestCases" - }, { "name": "FrameworksServicesTests", "options": [ diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index aa327ba023569..2f9e199bc506c 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -137,7 +137,6 @@ import com.android.server.LocalServices; import com.android.server.ServiceThread; import com.android.server.SystemConfig; import com.android.server.Watchdog; -import com.android.server.am.ActivityManagerService; import com.android.server.pm.ApexManager; import com.android.server.pm.PackageManagerServiceUtils; import com.android.server.pm.PackageSetting; @@ -902,16 +901,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { } private int checkPermissionImpl(String permName, String pkgName, int userId) { - try { - enforceCrossUserOrProfilePermission(Binder.getCallingUid(), userId, - false, false, "checkPermissionImpl"); - } catch (Exception e) { - Slog.e(TAG, "Invalid cross user access", e); - EventLog.writeEvent(0x534e4554, "153996875", "checkPermissionImpl", pkgName); - - throw e; - } - final AndroidPackage pkg = mPackageManagerInt.getPackage(pkgName); if (pkg == null) { return PackageManager.PERMISSION_DENIED; @@ -989,16 +978,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { } private int checkUidPermissionImpl(String permName, int uid) { - try { - enforceCrossUserOrProfilePermission(Binder.getCallingUid(), UserHandle.getUserId(uid), - false, false, "checkUidPermissionImpl"); - } catch (Exception e) { - Slog.e(TAG, "Invalid cross user access", e); - EventLog.writeEvent(0x534e4554, "153996875", "checkUidPermissionImpl", uid); - - throw e; - } - final AndroidPackage pkg = mPackageManagerInt.getPackage(uid); return checkUidPermissionInternal(pkg, uid, permName); } @@ -4529,7 +4508,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { } final int callingUserId = UserHandle.getUserId(callingUid); if (hasCrossUserPermission( - Binder.getCallingPid(), callingUid, callingUserId, userId, requireFullPermission, + callingUid, callingUserId, userId, requireFullPermission, requirePermissionWhenSameUser)) { return; } @@ -4556,79 +4535,53 @@ public class PermissionManagerService extends IPermissionManager.Stub { private void enforceCrossUserOrProfilePermission(int callingUid, @UserIdInt int userId, boolean requireFullPermission, boolean checkShell, String message) { - int callingPid = Binder.getCallingPid(); - final int callingUserId = UserHandle.getUserId(callingUid); - if (userId < 0) { throw new IllegalArgumentException("Invalid userId " + userId); } - - if (callingUserId == userId) { + if (checkShell) { + PackageManagerServiceUtils.enforceShellRestriction(mUserManagerInt, + UserManager.DISALLOW_DEBUGGING_FEATURES, callingUid, userId); + } + final int callingUserId = UserHandle.getUserId(callingUid); + if (hasCrossUserPermission(callingUid, callingUserId, userId, requireFullPermission, + /*requirePermissionWhenSameUser= */ false)) { return; } - - // Prevent endless loop between when checking permission while checking a permission - if (callingPid == ActivityManagerService.MY_PID) { + final boolean isSameProfileGroup = isSameProfileGroup(callingUserId, userId); + if (isSameProfileGroup && PermissionChecker.checkPermissionForPreflight( + mContext, + android.Manifest.permission.INTERACT_ACROSS_PROFILES, + PermissionChecker.PID_UNKNOWN, + callingUid, + mPackageManagerInt.getPackage(callingUid).getPackageName()) + == PermissionChecker.PERMISSION_GRANTED) { return; } - - long token = Binder.clearCallingIdentity(); - try { - if (checkShell) { - PackageManagerServiceUtils.enforceShellRestriction(mUserManagerInt, - UserManager.DISALLOW_DEBUGGING_FEATURES, callingUid, userId); - } - if (hasCrossUserPermission(callingPid, callingUid, callingUserId, userId, - requireFullPermission, /*requirePermissionWhenSameUser= */ false)) { - return; - } - final boolean isSameProfileGroup = isSameProfileGroup(callingUserId, userId); - - if (isSameProfileGroup) { - AndroidPackage callingPkg = mPackageManagerInt.getPackage(callingUid); - String callingPkgName = null; - if (callingPkg != null) { - callingPkgName = callingPkg.getPackageName(); - } - - if (PermissionChecker.checkPermissionForPreflight( - mContext, - android.Manifest.permission.INTERACT_ACROSS_PROFILES, - PermissionChecker.PID_UNKNOWN, - callingUid, - callingPkgName) - == PermissionChecker.PERMISSION_GRANTED) { - return; - } - } - String errorMessage = buildInvalidCrossUserOrProfilePermissionMessage( callingUid, userId, message, requireFullPermission, isSameProfileGroup); Slog.w(TAG, errorMessage); throw new SecurityException(errorMessage); - } finally { - Binder.restoreCallingIdentity(token); - } } - private boolean hasCrossUserPermission(int callingPid, int callingUid, int callingUserId, - int userId, boolean requireFullPermission, boolean requirePermissionWhenSameUser) { + private boolean hasCrossUserPermission( + int callingUid, int callingUserId, int userId, boolean requireFullPermission, + boolean requirePermissionWhenSameUser) { if (!requirePermissionWhenSameUser && userId == callingUserId) { return true; } if (callingUid == Process.SYSTEM_UID || callingUid == Process.ROOT_UID) { return true; } - - if (!requireFullPermission) { - if (mContext.checkPermission(android.Manifest.permission.INTERACT_ACROSS_USERS, - callingPid, callingUid) == PackageManager.PERMISSION_GRANTED) { - return true; - } + if (requireFullPermission) { + return hasPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL); } + return hasPermission(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL) + || hasPermission(Manifest.permission.INTERACT_ACROSS_USERS); + } - return mContext.checkPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL, - callingPid, callingUid) == PackageManager.PERMISSION_GRANTED; + private boolean hasPermission(String permission) { + return mContext.checkCallingOrSelfPermission(permission) + == PackageManager.PERMISSION_GRANTED; } private boolean isSameProfileGroup(@UserIdInt int callerUserId, @UserIdInt int userId) { diff --git a/services/core/java/com/android/server/pm/permission/TEST_MAPPING b/services/core/java/com/android/server/pm/permission/TEST_MAPPING index 65dc320eadc29..c0d71ac268530 100644 --- a/services/core/java/com/android/server/pm/permission/TEST_MAPPING +++ b/services/core/java/com/android/server/pm/permission/TEST_MAPPING @@ -17,6 +17,14 @@ } ] }, + { + "name": "CtsAppSecurityHostTestCases", + "options": [ + { + "include-filter": "android.appsecurity.cts.AppSecurityTests#rebootWithDuplicatePermission" + } + ] + }, { "name": "CtsPermission2TestCases", "options": [ @@ -28,17 +36,6 @@ } ] }, - { - "name": "CtsPermissionHostTestCases" - }, - { - "name": "CtsAppSecurityHostTestCases", - "options": [ - { - "include-filter": "android.appsecurity.cts.AppSecurityTests#rebootWithDuplicatePermission" - } - ] - }, { "name": "CtsStatsdHostTestCases", "options": [ From 9a1cbb57fff6289c7daa2676390868962c28a598 Mon Sep 17 00:00:00 2001 From: "Philip P. Moltmann" Date: Mon, 21 Sep 2020 16:21:11 +0000 Subject: [PATCH 031/192] Revert "Give all non-package services the power to interact accr..." Revert "Add dedicated host side tests for permissions and appops" Revert submission 12439864-PermAppOpsCrossUserCheck-Fixed Reason for revert: Bug 169044600 Reverted Changes: I95d015e01:Invalidate package/permission cache if cross-profi... I2a8a84f57:Check cross-user interactions for permissions and ... Ie8f0db231:Give all non-package services the power to interac... I11af434a8:Test package/permission cache invalidation when IN... Ib6d609a4d:Add dedicated host side tests for permissions and ... Change-Id: I47d371832c119fe4ce4890e10c1ac87aba92acbc (cherry picked from commit aba996799d228e60b4eda277730931c87094a3e0) --- data/etc/platform.xml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/data/etc/platform.xml b/data/etc/platform.xml index 0a06814792787..dd8f40d586bcf 100644 --- a/data/etc/platform.xml +++ b/data/etc/platform.xml @@ -153,8 +153,8 @@ + - @@ -164,7 +164,6 @@ - @@ -175,10 +174,8 @@ - - @@ -193,10 +190,8 @@ - - From f3175d9b9a2387175be14c90ff62a6bf2abd49c6 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 28 Sep 2020 12:09:44 -0600 Subject: [PATCH 032/192] Fix off-by-one bounds checking bug. It's reasonable for a zero-length field to have its start offset placed exactly at on the edge of the underlying buffer; we'll catch any buffer overflows moments later when we verify the end offset calculated from bufferSize. Bug: 169547603 Test: atest libandroidfw_tests Test: atest CtsDatabaseTestCases Test: atest FrameworksCoreTests:android.database Change-Id: I3d955f222343bd7ae63eaba7e367126dc136ecdf (cherry picked from commit f250e4f3daca160a7759fbb0e549b26d2a551cf8) --- libs/androidfw/include/androidfw/CursorWindow.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/androidfw/include/androidfw/CursorWindow.h b/libs/androidfw/include/androidfw/CursorWindow.h index 73c76f0bcb5be..0bee60929cc9d 100644 --- a/libs/androidfw/include/androidfw/CursorWindow.h +++ b/libs/androidfw/include/androidfw/CursorWindow.h @@ -170,7 +170,7 @@ private: Header* mHeader; inline void* offsetToPtr(uint32_t offset, uint32_t bufferSize = 0) { - if (offset >= mSize) { + if (offset > mSize) { ALOGE("Offset %" PRIu32 " out of bounds, max value %zu", offset, mSize); return NULL; } From e48fdcc250358db814a54edf70308fde5be9decb Mon Sep 17 00:00:00 2001 From: Brad Ebinger Date: Wed, 30 Sep 2020 17:25:39 +0000 Subject: [PATCH 033/192] Revert "Clean up IMS based interfaces to use a push model instea..." Revert "Move IMS to a listener type model instead of a poll model" Revert "Push Binder updates when ImsFeatures change" Revert submission 1425374-ims_poll Reason for revert: b/169729036, ANR in phone process Reverted Changes: I1d6dd2dfd:Move to a push model of querying ImsFeature Binder... Ie3982c245:Move IMS to a listener type model instead of a pol... I8b9ded0f4:Push Binder updates when ImsFeatures change Ia9f7ae3db:Clean up IMS based interfaces to use a push model ... Change-Id: I7ef3c07021a79e809d2c8b30ed2422372eae962d (cherry picked from commit 91f87bfbeaeafe626ae38c7683e7ddc8b74587ed) --- .../android/telephony/TelephonyManager.java | 77 ++++++++ .../telephony/ims/ImsMmTelManager.java | 3 +- .../android/telephony/ims/ImsService.java | 58 ------ .../telephony/ims/aidl/IImsRcsController.aidl | 6 - .../com/android/ims/ImsFeatureContainer.aidl | 19 -- .../com/android/ims/ImsFeatureContainer.java | 172 ------------------ .../internal/IImsServiceFeatureCallback.aidl | 15 +- .../internal/telephony/ITelephony.aidl | 17 +- 8 files changed, 95 insertions(+), 272 deletions(-) delete mode 100644 telephony/java/com/android/ims/ImsFeatureContainer.aidl delete mode 100644 telephony/java/com/android/ims/ImsFeatureContainer.java diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 7a0e1cd4d6498..11c1aa0ac1323 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -85,6 +85,8 @@ import android.telephony.emergency.EmergencyNumber; import android.telephony.emergency.EmergencyNumber.EmergencyServiceCategories; import android.telephony.ims.ImsMmTelManager; import android.telephony.ims.aidl.IImsConfig; +import android.telephony.ims.aidl.IImsMmTelFeature; +import android.telephony.ims.aidl.IImsRcsFeature; import android.telephony.ims.aidl.IImsRegistration; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.stub.ImsRegistrationImplBase; @@ -92,6 +94,7 @@ import android.text.TextUtils; import android.util.Log; import android.util.Pair; +import com.android.ims.internal.IImsServiceFeatureCallback; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.telephony.CellNetworkScanResult; @@ -7380,6 +7383,80 @@ public class TelephonyManager { } } + /** + * Returns the {@link IImsMmTelFeature} that corresponds to the given slot Id and MMTel + * feature or {@link null} if the service is not available. If an MMTelFeature is available, the + * {@link IImsServiceFeatureCallback} callback is registered as a listener for feature updates. + * @param slotIndex The SIM slot that we are requesting the {@link IImsMmTelFeature} for. + * @param callback Listener that will send updates to ImsManager when there are updates to + * ImsServiceController. + * @return {@link IImsMmTelFeature} interface for the feature specified or {@code null} if + * it is unavailable. + * @hide + */ + public @Nullable IImsMmTelFeature getImsMmTelFeatureAndListen(int slotIndex, + IImsServiceFeatureCallback callback) { + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + return telephony.getMmTelFeatureAndListen(slotIndex, callback); + } + } catch (RemoteException e) { + Rlog.e(TAG, "getImsMmTelFeatureAndListen, RemoteException: " + + e.getMessage()); + } + return null; + } + + /** + * Returns the {@link IImsRcsFeature} that corresponds to the given slot Id and RCS + * feature for emergency calling or {@link null} if the service is not available. If an + * RcsFeature is available, the {@link IImsServiceFeatureCallback} callback is registered as a + * listener for feature updates. + * @param slotIndex The SIM slot that we are requesting the {@link IImsRcsFeature} for. + * @param callback Listener that will send updates to ImsManager when there are updates to + * ImsServiceController. + * @return {@link IImsRcsFeature} interface for the feature specified or {@code null} if + * it is unavailable. + * @hide + */ + public @Nullable IImsRcsFeature getImsRcsFeatureAndListen(int slotIndex, + IImsServiceFeatureCallback callback) { + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + return telephony.getRcsFeatureAndListen(slotIndex, callback); + } + } catch (RemoteException e) { + Rlog.e(TAG, "getImsRcsFeatureAndListen, RemoteException: " + + e.getMessage()); + } + return null; + } + + /** + * Unregister a IImsServiceFeatureCallback previously associated with an ImsFeature through + * {@link #getImsMmTelFeatureAndListen(int, IImsServiceFeatureCallback)} or + * {@link #getImsRcsFeatureAndListen(int, IImsServiceFeatureCallback)}. + * @param slotIndex The SIM slot associated with the callback. + * @param featureType The {@link android.telephony.ims.feature.ImsFeature.FeatureType} + * associated with the callback. + * @param callback The callback to be unregistered. + * @hide + */ + public void unregisterImsFeatureCallback(int slotIndex, int featureType, + IImsServiceFeatureCallback callback) { + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + telephony.unregisterImsFeatureCallback(slotIndex, featureType, callback); + } + } catch (RemoteException e) { + Rlog.e(TAG, "unregisterImsFeatureCallback, RemoteException: " + + e.getMessage()); + } + } + /** * @return the {@IImsRegistration} interface that corresponds with the slot index and feature. * @param slotIndex The SIM slot corresponding to the ImsService ImsRegistration is active for. diff --git a/telephony/java/android/telephony/ims/ImsMmTelManager.java b/telephony/java/android/telephony/ims/ImsMmTelManager.java index ee2fce7e7dd5f..f6c14e67306bc 100644 --- a/telephony/java/android/telephony/ims/ImsMmTelManager.java +++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java @@ -59,7 +59,6 @@ import java.util.function.Consumer; * manager. */ public class ImsMmTelManager implements RegistrationManager { - private static final String TAG = "ImsMmTelManager"; /** * @hide @@ -810,7 +809,7 @@ public class ImsMmTelManager implements RegistrationManager { } try { - iTelephony.isMmTelCapabilitySupported(mSubId, new IIntegerConsumer.Stub() { + getITelephony().isMmTelCapabilitySupported(mSubId, new IIntegerConsumer.Stub() { @Override public void accept(int result) { executor.execute(() -> callback.accept(result == 1)); diff --git a/telephony/java/android/telephony/ims/ImsService.java b/telephony/java/android/telephony/ims/ImsService.java index 8a05bdfc84017..da7311c083079 100644 --- a/telephony/java/android/telephony/ims/ImsService.java +++ b/telephony/java/android/telephony/ims/ImsService.java @@ -16,7 +16,6 @@ package android.telephony.ims; -import android.annotation.LongDef; import android.annotation.SystemApi; import android.annotation.TestApi; import android.app.Service; @@ -42,11 +41,6 @@ import android.util.SparseArray; import com.android.ims.internal.IImsFeatureStatusCallback; import com.android.internal.annotations.VisibleForTesting; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.util.HashMap; -import java.util.Map; - /** * Main ImsService implementation, which binds via the Telephony ImsResolver. Services that extend * ImsService must register the service in their AndroidManifest to be detected by the framework. @@ -103,32 +97,6 @@ public class ImsService extends Service { private static final String LOG_TAG = "ImsService"; - /** - * This ImsService supports the capability to place emergency calls over MMTEL. - * @hide This is encoded into the {@link ImsFeature#FEATURE_EMERGENCY_MMTEL}, but we will be - * adding other capabilities in a central location, so track this capability here as well. - */ - public static final long CAPABILITY_EMERGENCY_OVER_MMTEL = 1 << 0; - - /** - * @hide - */ - @LongDef(flag = true, - prefix = "CAPABILITY_", - value = { - CAPABILITY_EMERGENCY_OVER_MMTEL - }) - @Retention(RetentionPolicy.SOURCE) - public @interface ImsServiceCapability {} - - /** - * Used for logging purposes, see {@link #getCapabilitiesString(long)} - * @hide - */ - private static final Map CAPABILITIES_LOG_MAP = new HashMap() {{ - put(CAPABILITY_EMERGENCY_OVER_MMTEL, "EMERGENCY_OVER_MMTEL"); - }}; - /** * The intent that must be defined as an intent-filter in the AndroidManifest of the ImsService. * @hide @@ -441,30 +409,4 @@ public class ImsService extends Service { public ImsRegistrationImplBase getRegistration(int slotId) { return new ImsRegistrationImplBase(); } - - /** - * @return A string representation of the ImsService capabilties for logging. - * @hide - */ - public static String getCapabilitiesString(@ImsServiceCapability long caps) { - StringBuffer result = new StringBuffer(); - result.append("capabilities={ "); - // filter incrementally fills 0s from left to right. This is used to keep filtering out - // more bits in the long until the remaining leftmost bits are all zero. - long filter = 0xFFFFFFFFFFFFFFFFL; - // position of iterator to potentially print capability. - long i = 0; - while ((caps & filter) != 0 && i <= 63) { - long bitToCheck = (1L << i); - if ((caps & bitToCheck) != 0) { - result.append(CAPABILITIES_LOG_MAP.getOrDefault(bitToCheck, bitToCheck + "?")); - result.append(" "); - } - // shift left by one and fill in another 1 on the leftmost bit. - filter <<= 1; - i++; - } - result.append("}"); - return result.toString(); - } } \ No newline at end of file diff --git a/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl b/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl index d012703b7510e..9e461420e126e 100644 --- a/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl +++ b/telephony/java/android/telephony/ims/aidl/IImsRcsController.aidl @@ -22,7 +22,6 @@ import android.telephony.ims.aidl.IRcsUceControllerCallback; import android.telephony.ims.aidl.IRcsUcePublishStateCallback; import android.telephony.ims.aidl.IImsRegistrationCallback; -import com.android.ims.internal.IImsServiceFeatureCallback; import com.android.internal.telephony.IIntegerConsumer; /** @@ -51,9 +50,4 @@ interface IImsRcsController { void setUceSettingEnabled(int subId, boolean isEnabled); void registerUcePublishStateCallback(int subId, IRcsUcePublishStateCallback c); void unregisterUcePublishStateCallback(int subId, IRcsUcePublishStateCallback c); - - // Internal commands that should not be made public - void registerRcsFeatureCallback(int slotId, in IImsServiceFeatureCallback callback, - boolean oneShot); - void unregisterImsFeatureCallback(in IImsServiceFeatureCallback callback); } diff --git a/telephony/java/com/android/ims/ImsFeatureContainer.aidl b/telephony/java/com/android/ims/ImsFeatureContainer.aidl deleted file mode 100644 index 9706f20c59ca1..0000000000000 --- a/telephony/java/com/android/ims/ImsFeatureContainer.aidl +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (C) 2020 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.ims; - -parcelable ImsFeatureContainer; \ No newline at end of file diff --git a/telephony/java/com/android/ims/ImsFeatureContainer.java b/telephony/java/com/android/ims/ImsFeatureContainer.java deleted file mode 100644 index b259679ea1bf8..0000000000000 --- a/telephony/java/com/android/ims/ImsFeatureContainer.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * Copyright (C) 2020 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.ims; - -import android.annotation.NonNull; -import android.os.IBinder; -import android.os.Parcel; -import android.os.Parcelable; -import android.telephony.ims.ImsService; -import android.telephony.ims.aidl.IImsConfig; -import android.telephony.ims.aidl.IImsRegistration; -import android.telephony.ims.feature.ImsFeature; - -import java.util.Objects; - -/** - * Contains an IBinder linking to the appropriate ImsFeature as well as the associated - * interfaces. - * @hide - */ -public final class ImsFeatureContainer implements Parcelable { - /** - * ImsFeature that is being tracked. - */ - public final IBinder imsFeature; - - /** - * IImsConfig interface that should be associated with the ImsFeature. - */ - public final android.telephony.ims.aidl.IImsConfig imsConfig; - - /** - * IImsRegistration interface that should be associated with this ImsFeature. - */ - public final IImsRegistration imsRegistration; - - /** - * State of the feature that is being tracked. - */ - private @ImsFeature.ImsState int mState = ImsFeature.STATE_UNAVAILABLE; - - /** - * Capabilities of this ImsService. - */ - private @ImsService.ImsServiceCapability long mCapabilities; - /** - * Contains the ImsFeature IBinder as well as the ImsService interfaces associated with - * that feature. - * @param iFace IBinder connection to the ImsFeature. - * @param iConfig IImsConfig interface associated with the ImsFeature. - * @param iReg IImsRegistration interface associated with the ImsFeature - * @param initialCaps The initial capabilities that the ImsService supports. - */ - public ImsFeatureContainer(@NonNull IBinder iFace, @NonNull IImsConfig iConfig, - @NonNull IImsRegistration iReg, long initialCaps) { - imsFeature = iFace; - imsConfig = iConfig; - imsRegistration = iReg; - mCapabilities = initialCaps; - } - - /** - * Create an ImsFeatureContainer from a Parcel. - */ - private ImsFeatureContainer(Parcel in) { - imsFeature = in.readStrongBinder(); - imsConfig = IImsConfig.Stub.asInterface(in.readStrongBinder()); - imsRegistration = IImsRegistration.Stub.asInterface(in.readStrongBinder()); - mState = in.readInt(); - mCapabilities = in.readLong(); - } - - /** - * @return the capabilties that are associated with the ImsService that this ImsFeature - * belongs to. - */ - public @ImsService.ImsServiceCapability long getCapabilities() { - return mCapabilities; - } - - /** - * Update the capabilities that are associated with the ImsService that this ImsFeature - * belongs to. - */ - public void setCapabilities(@ImsService.ImsServiceCapability long caps) { - mCapabilities = caps; - } - - /** - * @return The state of the ImsFeature. - */ - public @ImsFeature.ImsState int getState() { - return mState; - } - - /** - * Set the state that is associated with the ImsService that this ImsFeature - * belongs to. - */ - public void setState(@ImsFeature.ImsState int state) { - mState = state; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - ImsFeatureContainer that = (ImsFeatureContainer) o; - return imsFeature.equals(that.imsFeature) && - imsConfig.equals(that.imsConfig) && - imsRegistration.equals(that.imsRegistration) && - mState == that.getState() && - mCapabilities == that.getCapabilities(); - } - - @Override - public int hashCode() { - return Objects.hash(imsFeature, imsConfig, imsRegistration, mState, mCapabilities); - } - - @Override - public String toString() { - return "FeatureContainer{" + - "imsFeature=" + imsFeature + - ", imsConfig=" + imsConfig + - ", imsRegistration=" + imsRegistration + - ", state=" + ImsFeature.STATE_LOG_MAP.get(mState) + - ", capabilities = " + ImsService.getCapabilitiesString(mCapabilities) + - '}'; - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeStrongBinder(imsFeature); - dest.writeStrongInterface(imsConfig); - dest.writeStrongInterface(imsRegistration); - dest.writeInt(mState); - dest.writeLong(mCapabilities); - } - - - public static final Creator CREATOR = new Creator() { - @Override - public ImsFeatureContainer createFromParcel(Parcel source) { - return new ImsFeatureContainer(source); - } - - @Override - public ImsFeatureContainer[] newArray(int size) { - return new ImsFeatureContainer[size]; - } - }; -} diff --git a/telephony/java/com/android/ims/internal/IImsServiceFeatureCallback.aidl b/telephony/java/com/android/ims/internal/IImsServiceFeatureCallback.aidl index f5f67bd36ec33..9a9cf53253109 100644 --- a/telephony/java/com/android/ims/internal/IImsServiceFeatureCallback.aidl +++ b/telephony/java/com/android/ims/internal/IImsServiceFeatureCallback.aidl @@ -16,18 +16,13 @@ package com.android.ims.internal; -import com.android.ims.ImsFeatureContainer; /** - * Interface from ImsResolver to FeatureConnections. - * Callback to FeatureConnections when a feature's status changes. + * Interface from ImsResolver to ImsServiceProxy in ImsManager. + * Callback to ImsManager when a feature changes in the ImsServiceController. * {@hide} */ oneway interface IImsServiceFeatureCallback { - void imsFeatureCreated(in ImsFeatureContainer feature); - // Reason defined in FeatureConnector.UnavailableReason - void imsFeatureRemoved(int reason); - // Status defined in ImsFeature.ImsState. - void imsStatusChanged(int status); - //Capabilities defined in ImsService.ImsServiceCapability - void updateCapabilities(long capabilities); + void imsFeatureCreated(int slotId, int feature); + void imsFeatureRemoved(int slotId, int feature); + void imsStatusChanged(int slotId, int feature, int status); } \ No newline at end of file diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index ef5078da76cef..02a74ba53ccb1 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -829,15 +829,22 @@ interface ITelephony { * as well as registering the MmTelFeature for callbacks using the IImsServiceFeatureCallback * interface. */ - void registerMmTelFeatureCallback(int slotId, in IImsServiceFeatureCallback callback, - boolean oneShot); + IImsMmTelFeature getMmTelFeatureAndListen(int slotId, in IImsServiceFeatureCallback callback); + + /** + * Get IImsRcsFeature binder from ImsResolver that corresponds to the subId and RCS feature + * as well as registering the RcsFeature for callbacks using the IImsServiceFeatureCallback + * interface. + */ + IImsRcsFeature getRcsFeatureAndListen(int slotId, in IImsServiceFeatureCallback callback); /** * Unregister a callback that was previously registered through - * {@link #registerMmTelFeatureCallback}. This should always be called when the callback is no - * longer being used. + * {@link #getMmTelFeatureAndListen} or {@link #getRcsFeatureAndListen}. This should always be + * called when the callback is no longer being used. */ - void unregisterImsFeatureCallback(in IImsServiceFeatureCallback callback); + void unregisterImsFeatureCallback(int slotId, int featureType, + in IImsServiceFeatureCallback callback); /** * Returns the IImsRegistration associated with the slot and feature specified. From aefc910e4cafb1899ce98910906a0384bd774574 Mon Sep 17 00:00:00 2001 From: Alex Johnston Date: Mon, 5 Oct 2020 11:01:47 +0000 Subject: [PATCH 034/192] Revert "Replace remaining enforceXXX methods" This reverts commit 2cc14d046eacce9816d4e1afba081ad625080fe0. Reason for revert: Factory reset function can not work This was caused by the method getCallerIdentityOptionalAdmin(). When the component name is null and no active admin is found, getCallerIdentity() should be called instead of throwing a security exception. Bug: 170057677 Change-Id: I46f181a5be5bf6cff7be6ea0f8965c4cd7be1f01 (cherry picked from commit 25e26d905530af917717267aff234871ab0e6e7c) --- .../DevicePolicyManagerService.java | 837 +++++++++--------- 1 file changed, 443 insertions(+), 394 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 09ba6efcfab82..282cee0ea2538 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -2128,10 +2128,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { ActiveAdmin getActiveAdminUncheckedLocked(ComponentName who, int userHandle, boolean parent) { ensureLocked(); - Preconditions.checkCallAuthorization(!parent || isManagedProfile(userHandle), - String.format("You can not call APIs on the parent profile outside a " - + "managed profile, userId = %d", userHandle)); - + if (parent) { + Preconditions.checkCallAuthorization(isManagedProfile(userHandle), String.format( + "You can not call APIs on the parent profile outside a managed profile, " + + "userId = %d", userHandle)); + } ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userHandle); if (admin != null && parent) { admin = admin.getParentActiveAdmin(); @@ -2301,9 +2302,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { boolean parent, @Nullable String permission) throws SecurityException { ensureLocked(); - Preconditions.checkCallingUser(!parent - || isManagedProfile(getCallerIdentity().getUserId())); - + if (parent) { + Preconditions.checkCallingUser(isManagedProfile(getCallerIdentity().getUserId())); + } ActiveAdmin admin = getActiveAdminOrCheckPermissionForCallerLocked( who, reqPolicy, permission); return parent ? admin.getParentActiveAdmin() : admin; @@ -3178,10 +3179,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return; } Objects.requireNonNull(adminReceiver, "ComponentName is null"); - - Preconditions.checkCallAuthorization(isAdb(getCallerIdentity()), - "Non-shell user attempted to call forceRemoveActiveAdmin"); - + enforceShell("forceRemoveActiveAdmin"); mInjector.binderWithCleanCallingIdentity(() -> { synchronized (getLockObject()) { if (!isAdminTestOnlyLocked(adminReceiver, userHandle)) { @@ -3260,6 +3258,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return (admin != null) && admin.testOnlyAdmin; } + private void enforceShell(String method) { + final int callingUid = mInjector.binderGetCallingUid(); + if (callingUid != Process.SHELL_UID && callingUid != Process.ROOT_UID) { + throw new SecurityException("Non-shell user attempted to call " + method); + } + } + @Override public void removeActiveAdmin(ComponentName adminReceiver, int userHandle) { if (!mHasFeature) { @@ -3269,8 +3274,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final CallerIdentity caller = getCallerIdentity(); Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle)); - Preconditions.checkState(mUserManager.isUserUnlocked(userHandle), - "User must be running and unlocked"); + enforceUserUnlocked(userHandle); synchronized (getLockObject()) { ActiveAdmin admin = getActiveAdminUncheckedLocked(adminReceiver, userHandle); @@ -3284,8 +3288,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { adminReceiver); return; } - Preconditions.checkCallAuthorization((admin.getUid() == caller.getUid()) - || hasCallingOrSelfPermission(permission.MANAGE_DEVICE_ADMINS)); + if (admin.getUid() != mInjector.binderGetCallingUid()) { + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.MANAGE_DEVICE_ADMINS, null); + } mInjector.binderWithCleanCallingIdentity(() -> removeActiveAdminLocked(adminReceiver, userHandle)); } @@ -3293,8 +3299,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isSeparateProfileChallengeAllowed(int userHandle) { - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can query separate challenge support"); + enforceSystemCaller("query separate challenge support"); ComponentName profileOwner = getProfileOwner(userHandle); // Profile challenge is supported on N or newer release. @@ -4066,9 +4071,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final CallerIdentity caller = getCallerIdentity(); Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle)); - Preconditions.checkState( - mUserManager.isUserUnlocked(parent ? getProfileParentId(userHandle) : userHandle), - "User must be running and unlocked"); + enforceUserUnlocked(userHandle, parent); synchronized (getLockObject()) { // This API can only be called by an active device admin, @@ -4109,15 +4112,15 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Preconditions.checkCallAuthorization(isManagedProfile(userHandle), String.format( "can not call APIs refering to the parent profile outside a managed profile, " + "userId = %d", userHandle)); - Preconditions.checkState(mUserManager.isUserUnlocked(getProfileParentId(userHandle)), - "User must be running and unlocked"); synchronized (getLockObject()) { + final int targetUser = getProfileParentId(userHandle); + enforceUserUnlocked(targetUser, false); int credentialOwner = getCredentialOwner(userHandle, false); DevicePolicyData policy = getUserDataUnchecked(credentialOwner); PasswordMetrics metrics = mLockSettingsInternal.getUserPasswordMetrics(credentialOwner); - return isActivePasswordSufficientForUserLocked(policy.mPasswordValidAtLastCheckpoint, - metrics, getProfileParentId(userHandle), false); + return isActivePasswordSufficientForUserLocked( + policy.mPasswordValidAtLastCheckpoint, metrics, targetUser, false); } } @@ -4133,8 +4136,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Preconditions.checkCallAuthorization(!isManagedProfile(userHandle), String.format( "You can not check password sufficiency for a managed profile, userId = %d", userHandle)); - Preconditions.checkState(mUserManager.isUserUnlocked(userHandle), - "User must be running and unlocked"); + enforceUserUnlocked(userHandle); synchronized (getLockObject()) { PasswordMetrics metrics = mLockSettingsInternal.getUserPasswordMetrics(userHandle); @@ -4192,22 +4194,24 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override @PasswordComplexity public int getPasswordComplexity(boolean parent) { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkState(mUserManager.isUserUnlocked(caller.getUserId()), - "User must be running and unlocked"); - Preconditions.checkCallAuthorization(!parent || isCallerDeviceOwner(caller.getUid()) - || isCallerProfileOwner(caller.getUid()) || isSystemUid(caller)); - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(REQUEST_PASSWORD_COMPLEXITY)); - DevicePolicyEventLogger .createEvent(DevicePolicyEnums.GET_USER_PASSWORD_COMPLEXITY_LEVEL) .setStrings(parent ? CALLED_FROM_PARENT : NOT_CALLED_FROM_PARENT, - mInjector.getPackageManager().getPackagesForUid(caller.getUid())) + mInjector.getPackageManager().getPackagesForUid( + mInjector.binderGetCallingUid())) .write(); + final int callingUserId = mInjector.userHandleGetCallingUserId(); + + if (parent) { + enforceProfileOwnerOrSystemUser(); + } + enforceUserUnlocked(callingUserId); + mContext.enforceCallingOrSelfPermission( + REQUEST_PASSWORD_COMPLEXITY, + "Must have " + REQUEST_PASSWORD_COMPLEXITY + " permission."); synchronized (getLockObject()) { - final int credentialOwner = getCredentialOwner(caller.getUserId(), parent); + final int credentialOwner = getCredentialOwner(callingUserId, parent); PasswordMetrics metrics = mLockSettingsInternal.getUserPasswordMetrics(credentialOwner); return metrics == null ? PASSWORD_COMPLEXITY_NONE : metrics.determineComplexity(); } @@ -4356,24 +4360,22 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Slog.w(LOG_TAG, "Cannot reset password when the device has no lock screen"); return false; } + if (password == null) password = ""; + final int callingUid = mInjector.binderGetCallingUid(); + final int userHandle = mInjector.userHandleGetCallingUserId(); - final CallerIdentity caller = getCallerIdentity(); - // As of R, only privileged caller holding RESET_PASSWORD can call resetPassword() to + // As of R, only privlleged caller holding RESET_PASSWORD can call resetPassword() to // set password to an unsecured user. if (hasCallingPermission(permission.RESET_PASSWORD)) { - if (password == null) { - password = ""; - } - return setPasswordPrivileged(password, flags, caller.getUid()); + return setPasswordPrivileged(password, flags, callingUid); } synchronized (getLockObject()) { // If caller has PO (or DO) throw or fail silently depending on its target SDK level. ActiveAdmin admin = getActiveAdminWithPolicyForUidLocked( - null, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER, caller.getUid()); + null, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER, callingUid); if (admin != null) { - if (getTargetSdk(admin.info.getPackageName(), - caller.getUserId()) < Build.VERSION_CODES.O) { + if (getTargetSdk(admin.info.getPackageName(), userHandle) < Build.VERSION_CODES.O) { Slog.e(LOG_TAG, "DPC can no longer call resetPassword()"); return false; } @@ -4384,7 +4386,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { admin = getActiveAdminForCallerLocked( null, DeviceAdminInfo.USES_POLICY_RESET_PASSWORD, false); if (getTargetSdk(admin.info.getPackageName(), - caller.getUserId()) <= android.os.Build.VERSION_CODES.M) { + userHandle) <= android.os.Build.VERSION_CODES.M) { Slog.e(LOG_TAG, "Device admin can no longer call resetPassword()"); return false; } @@ -4480,9 +4482,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean getDoNotAskCredentialsOnBoot() { - Preconditions.checkCallAuthorization(hasCallingOrSelfPermission( - permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT)); - + mContext.enforceCallingOrSelfPermission( + android.Manifest.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT, null); synchronized (getLockObject()) { DevicePolicyData policyData = getUserData(UserHandle.USER_SYSTEM); return policyData.mDoNotAskCredentialsOnBoot; @@ -5224,13 +5225,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void choosePrivateKeyAlias(final int uid, final Uri uri, final String alias, final IBinder response) { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization(isSystemUid(caller), - "Only the system can choose private key alias"); + enforceSystemCaller("choose private key alias"); + final UserHandle caller = mInjector.binderGetCallingUserHandle(); // If there is a profile owner, redirect to that; otherwise query the device owner. - ComponentName aliasChooser = getProfileOwner(caller.getUserId()); - if (aliasChooser == null && caller.getUserHandle().isSystem()) { + ComponentName aliasChooser = getProfileOwner(caller.getIdentifier()); + if (aliasChooser == null && caller.isSystem()) { synchronized (getLockObject()) { final ActiveAdmin deviceOwnerAdmin = getDeviceOwnerAdminLocked(); if (deviceOwnerAdmin != null) { @@ -5252,7 +5252,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final ComponentName delegateReceiver; delegateReceiver = resolveDelegateReceiver(DELEGATION_CERT_SELECTION, - DeviceAdminReceiver.ACTION_CHOOSE_PRIVATE_KEY_ALIAS, caller.getUserId()); + DeviceAdminReceiver.ACTION_CHOOSE_PRIVATE_KEY_ALIAS, caller.getIdentifier()); final boolean isDelegate; if (delegateReceiver != null) { @@ -5264,8 +5264,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } mInjector.binderWithCleanCallingIdentity(() -> { - mContext.sendOrderedBroadcastAsUser(intent, caller.getUserHandle(), null, - new BroadcastReceiver() { + mContext.sendOrderedBroadcastAsUser(intent, caller, null, new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { final String chosenAlias = getResultData(); @@ -5429,14 +5428,21 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { String delegatePackage) throws SecurityException { Objects.requireNonNull(delegatePackage, "Delegate package is null"); - final CallerIdentity caller = getCallerIdentity(who, delegatePackage); - Preconditions.checkCallAuthorization((caller.hasAdminComponent() && (isDeviceOwner(caller) - || isProfileOwner(caller))) || (caller.hasPackage() && isCallingFromPackage( - delegatePackage, caller.getUid()))); - // Retrieve the user ID of the calling process. + final int callingUid = mInjector.binderGetCallingUid(); + final int userId = UserHandle.getUserId(callingUid); synchronized (getLockObject()) { - final DevicePolicyData policy = getUserData(caller.getUserId()); + // Ensure calling process is device/profile owner. + if (who != null) { + getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER); + // Or ensure calling process is delegatePackage itself. + } else { + if (!isCallingFromPackage(delegatePackage, callingUid)) { + throw new SecurityException("Caller with uid " + callingUid + " is not " + + delegatePackage); + } + } + final DevicePolicyData policy = getUserData(userId); // Retrieve the scopes assigned to delegatePackage, or null if no scope was given. final List scopes = policy.mDelegationMap.get(delegatePackage); return scopes == null ? Collections.EMPTY_LIST : scopes; @@ -5715,9 +5721,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public String getAlwaysOnVpnPackageForUser(int userHandle) { - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can get always on VPN package for user"); - + enforceSystemCaller("getAlwaysOnVpnPackageForUser"); synchronized (getLockObject()) { ActiveAdmin admin = getDeviceOrProfileOwnerAdminLocked(userHandle); return admin != null ? admin.mAlwaysOnVpnPackage : null; @@ -5738,9 +5742,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isAlwaysOnVpnLockdownEnabledForUser(int userHandle) { - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can query always on VPN lockdown enabled for user"); - + enforceSystemCaller("isAlwaysOnVpnLockdownEnabledForUser"); synchronized (getLockObject()) { ActiveAdmin admin = getDeviceOrProfileOwnerAdminLocked(userHandle); return admin != null ? admin.mAlwaysOnVpnLockdown : null; @@ -5971,18 +5973,19 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return null; } - final CallerIdentity caller = getCallerIdentityOptionalAdmin(who); final int frpManagementAgentUid = getFrpManagementAgentUidOrThrow(); final ActiveAdmin admin; synchronized (getLockObject()) { if (who == null) { - Preconditions.checkCallAuthorization(frpManagementAgentUid == caller.getUid() + Preconditions.checkCallAuthorization( + frpManagementAgentUid == mInjector.binderGetCallingUid() || hasCallingPermission(permission.MASTER_CLEAR), "Must be called by the FRP management agent on device"); admin = getDeviceOwnerOrProfileOwnerOfOrganizationOwnedDeviceLocked( UserHandle.getUserId(frpManagementAgentUid)); } else { + final CallerIdentity caller = getCallerIdentity(who); Preconditions.checkCallAuthorization( isDeviceOwner(caller) || isProfileOwnerOfOrganizationOwnedDevice(caller)); admin = getProfileOwnerOrDeviceOwnerLocked(caller); @@ -6046,7 +6049,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature || !mLockPatternUtils.hasSecureLockScreen()) { return; } - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity())); + + final CallerIdentity caller = getCallerIdentity(); + Preconditions.checkCallAuthorization(isSystemUid(caller)); // Managed Profile password can only be changed when it has a separate challenge. if (!isSeparateProfileChallengeEnabled(userId)) { Preconditions.checkCallAuthorization(!isManagedProfile(userId), String.format("You can " @@ -6566,8 +6571,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Objects.requireNonNull(who, "ComponentName is null"); final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallAuthorization(!parent - || isProfileOwnerOfOrganizationOwnedDevice(caller)); + if (parent) { + Preconditions.checkCallAuthorization(isProfileOwnerOfOrganizationOwnedDevice(caller)); + } synchronized (getLockObject()) { ActiveAdmin ap = getActiveAdminForCallerLocked(who, @@ -6941,8 +6947,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Objects.requireNonNull(who, "ComponentName is null"); final CallerIdentity caller = getCallerIdentity(who); - Preconditions.checkCallAuthorization(!parent - || isProfileOwnerOfOrganizationOwnedDevice(caller)); + if (parent) { + Preconditions.checkCallAuthorization(isProfileOwnerOfOrganizationOwnedDevice(caller)); + } final int userHandle = caller.getUserId(); synchronized (getLockObject()) { @@ -7180,14 +7187,15 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { + " as device owner for user " + userId); return false; } - Objects.requireNonNull(admin, "ComponentName is null"); - Preconditions.checkArgument(isPackageInstalledForUser(admin.getPackageName(), userId), - String.format("Invalid component %s for device owner", admin)); - - final CallerIdentity caller = getCallerIdentity(); + if (admin == null + || !isPackageInstalledForUser(admin.getPackageName(), userId)) { + throw new IllegalArgumentException("Invalid component " + admin + + " for device owner"); + } + final boolean hasIncompatibleAccountsOrNonAdb = + hasIncompatibleAccountsOrNonAdbNoLock(userId, admin); synchronized (getLockObject()) { - enforceCanSetDeviceOwnerLocked(caller, userId); - + enforceCanSetDeviceOwnerLocked(admin, userId, hasIncompatibleAccountsOrNonAdb); final ActiveAdmin activeAdmin = getActiveAdminUncheckedLocked(admin, userId); if (activeAdmin == null || getUserData(userId).mRemovingAdmins.contains(admin)) { @@ -7196,7 +7204,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // Shutting down backup manager service permanently. toggleBackupServiceActive(UserHandle.USER_SYSTEM, /* makeActive= */ false); - if (isAdb(caller)) { + if (isAdb()) { // Log device owner provisioning was started using adb. MetricsLogger.action(mContext, PROVISIONING_ENTRY_POINT_ADB, LOG_TAG_DEVICE_OWNER); DevicePolicyEventLogger @@ -7234,13 +7242,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean hasDeviceOwner() { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization( - isCallerDeviceOwner(caller.getUid()) || canManageUsers(caller)); - + enforceDeviceOwnerOrManageUsers(); return mOwners.hasDeviceOwner(); } + boolean isDeviceOwner(ActiveAdmin admin) { + return isDeviceOwner(admin.info.getComponent(), admin.getUserHandle().getIdentifier()); + } + public boolean isDeviceOwner(ComponentName who, int userId) { synchronized (getLockObject()) { return mOwners.hasDeviceOwner() @@ -7406,20 +7415,20 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void clearDeviceOwner(String packageName) { Objects.requireNonNull(packageName, "packageName is null"); - - final CallerIdentity caller = getCallerIdentity(packageName); - Preconditions.checkCallAuthorization(isCallingFromPackage(packageName, caller.getUid()), - "Invalid packageName"); - + final int callingUid = mInjector.binderGetCallingUid(); + if (!isCallingFromPackage(packageName, callingUid)) { + throw new SecurityException("Invalid packageName"); + } synchronized (getLockObject()) { final ComponentName deviceOwnerComponent = mOwners.getDeviceOwnerComponent(); - final int deviceOwnerUserId = caller.getUserId(); - Preconditions.checkCallAuthorization(isCallerDeviceOwner(caller.getUid()) - && deviceOwnerComponent.getPackageName().equals(packageName), - "clearDeviceOwner can only be called by the device owner"); - Preconditions.checkState(mUserManager.isUserUnlocked(deviceOwnerUserId), - "User must be running and unlocked"); - + final int deviceOwnerUserId = mOwners.getDeviceOwnerUserId(); + if (!mOwners.hasDeviceOwner() + || !deviceOwnerComponent.getPackageName().equals(packageName) + || (deviceOwnerUserId != UserHandle.getUserId(callingUid))) { + throw new SecurityException( + "clearDeviceOwner can only be called by the device owner"); + } + enforceUserUnlocked(deviceOwnerUserId); DevicePolicyData policy = getUserData(deviceOwnerUserId); if (policy.mPasswordTokenHandle != 0) { mLockPatternUtils.removeEscrowToken(policy.mPasswordTokenHandle, deviceOwnerUserId); @@ -7504,13 +7513,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { + " as profile owner for user " + userHandle); return false; } - Objects.requireNonNull(who, "ComponentName is null"); - Preconditions.checkArgument(isPackageInstalledForUser(who.getPackageName(), userHandle), - String.format("Component %s not installed for userId: %d", who, userHandle)); + if (who == null + || !isPackageInstalledForUser(who.getPackageName(), userHandle)) { + throw new IllegalArgumentException("Component " + who + + " not installed for userId:" + userHandle); + } - final CallerIdentity caller = getCallerIdentity(); + final boolean hasIncompatibleAccountsOrNonAdb = + hasIncompatibleAccountsOrNonAdbNoLock(userHandle, who); synchronized (getLockObject()) { - enforceCanSetProfileOwnerLocked(caller, userHandle); + enforceCanSetProfileOwnerLocked(who, userHandle, hasIncompatibleAccountsOrNonAdb); final ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userHandle); if (admin == null || getUserData(userHandle).mRemovingAdmins.contains(who)) { @@ -7528,7 +7540,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return false; } - if (isAdb(caller)) { + if (isAdb()) { // Log profile owner provisioning was started using adb. MetricsLogger.action(mContext, PROVISIONING_ENTRY_POINT_ADB, LOG_TAG_PROFILE_OWNER); DevicePolicyEventLogger @@ -7561,47 +7573,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } - /** - * The profile owner can only be set by adb or an app with the MANAGE_PROFILE_AND_DEVICE_OWNERS - * permission. - * The profile owner can only be set before the user setup phase has completed, - * except for: - * - SYSTEM_UID - * - adb unless hasIncompatibleAccountsOrNonAdb is true. - */ - private void enforceCanSetProfileOwnerLocked(CallerIdentity caller, int userHandle) { - UserInfo info = getUserInfo(userHandle); - Preconditions.checkArgument(info != null, - String.format("Attempted to set profile owner for invalid userId: %d", userHandle)); - Preconditions.checkState(!info.isGuest(), "Cannot set a profile owner on a guest"); - Preconditions.checkState(!mOwners.hasProfileOwner(userHandle), - "Trying to set the profile owner, but profile owner is already set."); - Preconditions.checkState( - !mOwners.hasDeviceOwner() || mOwners.getDeviceOwnerUserId() != userHandle, - "Trying to set the profile owner, but the user already has a device owner."); - - - boolean hasUserSetupCompleted = mIsWatch || hasUserSetupCompleted(userHandle); - if (isAdb(caller)) { - Preconditions.checkState(!hasUserSetupCompleted - || !hasIncompatibleAccountsOrNonAdbNoLock(userHandle, caller), - "Not allowed to set the profile owner because there are already some accounts" - + " on the profile"); - return; - } - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); - if (hasUserSetupCompleted) { - Preconditions.checkState(isSystemUid(caller), - "Cannot set the profile owner on a user which is already set-up"); - if (!mIsWatch) { - Preconditions.checkState(isDefaultSupervisor(caller), - String.format("Unable to set non-default profile owner post-setup %s", - caller.getUserHandle())); - } - } - } - private void toggleBackupServiceActive(int userId, boolean makeActive) { long ident = mInjector.binderClearCallingIdentity(); try { @@ -7628,9 +7599,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final CallerIdentity caller = getCallerIdentity(who); final int userId = caller.getUserId(); Preconditions.checkCallingUser(!isManagedProfile(userId)); - Preconditions.checkState(mUserManager.isUserUnlocked(userId), - "User must be running and unlocked"); + enforceUserUnlocked(userId); synchronized (getLockObject()) { // Check if this is the profile owner who is calling final ActiveAdmin admin = @@ -7763,24 +7733,28 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { + userHandle); return; } - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkState(userHandle == mOwners.getDeviceOwnerUserId() - || hasProfileOwner(userHandle) || isManagedProfile(caller.getUserId()), - "Not allowed to change provisioning state unless " - + "a device or profile owner is set."); + + if (userHandle != mOwners.getDeviceOwnerUserId() && !mOwners.hasProfileOwner(userHandle) + && getManagedUserId(userHandle) == -1) { + // No managed device, user or profile, so setting provisioning state makes no sense. + throw new IllegalStateException("Not allowed to change provisioning state unless a " + + "device or profile owner is set."); + } synchronized (getLockObject()) { boolean transitionCheckNeeded = true; // Calling identity/permission checks. - if (isAdb(caller)) { + if (isAdb()) { // ADB shell can only move directly from un-managed to finalized as part of directly // setting profile-owner or device-owner. - Preconditions.checkState(getUserProvisioningState(userHandle) - == DevicePolicyManager.STATE_USER_UNMANAGED - && newState == DevicePolicyManager.STATE_USER_SETUP_FINALIZED, - "Not allowed to change provisioning state unless current provisioning " - + "state is unmanaged, and new state is finalized."); + if (getUserProvisioningState(userHandle) != + DevicePolicyManager.STATE_USER_UNMANAGED + || newState != DevicePolicyManager.STATE_USER_SETUP_FINALIZED) { + throw new IllegalStateException("Not allowed to change provisioning state " + + "unless current provisioning state is unmanaged, and new state is " + + "finalized."); + } transitionCheckNeeded = false; } else { Preconditions.checkCallAuthorization( @@ -8016,7 +7990,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean checkDeviceIdentifierAccess(String packageName, int pid, int uid) { - enforceCallerIdentityMatchesIfNotSystem(packageName, pid, uid); + ensureCallerIdentityMatchesIfNotSystem(packageName, pid, uid); // Verify that the specified packages matches the provided uid. if (!doesPackageMatchUid(packageName, uid)) { @@ -8080,16 +8054,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return true; } - private void enforceCallerIdentityMatchesIfNotSystem(String packageName, int pid, int uid) { + private void ensureCallerIdentityMatchesIfNotSystem(String packageName, int pid, int uid) { // If the caller is not a system app then it should only be able to check its own device // identifier access. + int callingUid = mInjector.binderGetCallingUid(); int callingPid = mInjector.binderGetCallingPid(); - final CallerIdentity caller = getCallerIdentity(); - if (UserHandle.getAppId(caller.getUid()) >= Process.FIRST_APPLICATION_UID - && (caller.getUid() != uid || callingPid != pid)) { - String message = String.format("Calling uid %d, pid %d cannot check device identifier " - + "access for package %s (uid=%d, pid=%d)", - caller.getUid(), callingPid, packageName, uid, pid); + if (UserHandle.getAppId(callingUid) >= Process.FIRST_APPLICATION_UID + && (callingUid != uid || callingPid != pid)) { + String message = String.format( + "Calling uid %d, pid %d cannot check device identifier access for package %s " + + "(uid=%d, pid=%d)", callingUid, callingPid, packageName, uid, pid); Log.w(LOG_TAG, message); throw new SecurityException(message); } @@ -8126,19 +8100,84 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } + /** + * The profile owner can only be set by adb or an app with the MANAGE_PROFILE_AND_DEVICE_OWNERS + * permission. + * The profile owner can only be set before the user setup phase has completed, + * except for: + * - SYSTEM_UID + * - adb unless hasIncompatibleAccountsOrNonAdb is true. + */ + private void enforceCanSetProfileOwnerLocked(@Nullable ComponentName owner, int userHandle, + boolean hasIncompatibleAccountsOrNonAdb) { + UserInfo info = getUserInfo(userHandle); + if (info == null) { + // User doesn't exist. + throw new IllegalArgumentException( + "Attempted to set profile owner for invalid userId: " + userHandle); + } + if (info.isGuest()) { + throw new IllegalStateException("Cannot set a profile owner on a guest"); + } + if (mOwners.hasProfileOwner(userHandle)) { + throw new IllegalStateException("Trying to set the profile owner, but profile owner " + + "is already set."); + } + if (mOwners.hasDeviceOwner() && mOwners.getDeviceOwnerUserId() == userHandle) { + throw new IllegalStateException("Trying to set the profile owner, but the user " + + "already has a device owner."); + } + if (isAdb()) { + if ((mIsWatch || hasUserSetupCompleted(userHandle)) + && hasIncompatibleAccountsOrNonAdb) { + throw new IllegalStateException("Not allowed to set the profile owner because " + + "there are already some accounts on the profile"); + } + return; + } + Preconditions.checkCallAuthorization( + hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); + + if ((mIsWatch || hasUserSetupCompleted(userHandle))) { + if (!isCallerWithSystemUid()) { + throw new IllegalStateException("Cannot set the profile owner on a user which is " + + "already set-up"); + } + + if (!mIsWatch) { + // Only the default supervision profile owner can be set as profile owner after SUW + final String supervisor = mContext.getResources().getString( + com.android.internal.R.string + .config_defaultSupervisionProfileOwnerComponent); + if (supervisor == null) { + throw new IllegalStateException("Unable to set profile owner post-setup, no" + + "default supervisor profile owner defined"); + } + + final ComponentName supervisorComponent = ComponentName.unflattenFromString( + supervisor); + if (!owner.equals(supervisorComponent)) { + throw new IllegalStateException("Unable to set non-default profile owner" + + " post-setup " + owner); + } + } + } + } + /** * The Device owner can only be set by adb or an app with the MANAGE_PROFILE_AND_DEVICE_OWNERS * permission. */ - private void enforceCanSetDeviceOwnerLocked(CallerIdentity caller, int userId) { - if (!isAdb(caller)) { + private void enforceCanSetDeviceOwnerLocked(@Nullable ComponentName owner, + @UserIdInt int userId, + boolean hasIncompatibleAccountsOrNonAdb) { + if (!isAdb()) { Preconditions.checkCallAuthorization( hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); } final int code = checkDeviceOwnerProvisioningPreConditionLocked( - caller.getComponentName(), userId, isAdb(caller), - hasIncompatibleAccountsOrNonAdbNoLock(userId, caller)); + owner, userId, isAdb(), hasIncompatibleAccountsOrNonAdb); if (code != CODE_OK) { throw new IllegalStateException(computeProvisioningErrorString(code, userId)); } @@ -8173,6 +8212,21 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } + private void enforceUserUnlocked(int userId) { + // Since we're doing this operation on behalf of an app, we only + // want to use the actual "unlocked" state. + Preconditions.checkState(mUserManager.isUserUnlocked(userId), + "User must be running and unlocked"); + } + + private void enforceUserUnlocked(@UserIdInt int userId, boolean parent) { + if (parent) { + enforceUserUnlocked(getProfileParentId(userId)); + } else { + enforceUserUnlocked(userId); + } + } + private boolean canManageUsers(CallerIdentity caller) { return isSystemUid(caller) || isRootUid(caller) || hasCallingOrSelfPermission(permission.MANAGE_USERS); @@ -8205,6 +8259,42 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { || hasCallingOrSelfPermission(permission.INTERACT_ACROSS_USERS); } + private void enforceDeviceOwnerOrManageUsers() { + synchronized (getLockObject()) { + if (getActiveAdminWithPolicyForUidLocked(null, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER, + mInjector.binderGetCallingUid()) != null) { + return; + } + } + Preconditions.checkCallAuthorization(canManageUsers(getCallerIdentity())); + } + + private void enforceProfileOwnerOrSystemUser() { + synchronized (getLockObject()) { + if (getActiveAdminWithPolicyForUidLocked(null, + DeviceAdminInfo.USES_POLICY_PROFILE_OWNER, mInjector.binderGetCallingUid()) + != null) { + return; + } + } + Preconditions.checkState(isCallerWithSystemUid(), + "Only profile owner, device owner and system may call this method."); + } + + private void enforceProfileOwnerOrFullCrossUsersPermission(CallerIdentity caller, + int userId) { + if (userId == caller.getUserId()) { + synchronized (getLockObject()) { + if (getActiveAdminWithPolicyForUidLocked(null, + DeviceAdminInfo.USES_POLICY_PROFILE_OWNER, caller.getUid()) != null) { + // Device Owner/Profile Owner may access the user it runs on. + return; + } + } + } + Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userId)); + } + private boolean canUserUseLockTaskLocked(int userId) { if (isUserAffiliatedWithDeviceLocked(userId)) { return true; @@ -8228,22 +8318,34 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return true; } + private void enforceCanCallLockTaskLocked(ComponentName who) { + getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER); + final int userId = mInjector.userHandleGetCallingUserId(); + if (!canUserUseLockTaskLocked(userId)) { + throw new SecurityException("User " + userId + " is not allowed to use lock task"); + } + } + private void ensureCallerPackage(@Nullable String packageName) { - final CallerIdentity caller = getCallerIdentity(); if (packageName == null) { - Preconditions.checkCallAuthorization(isSystemUid(caller), - "Only the system can omit package name"); + enforceSystemCaller("omit package name"); } else { + final int callingUid = mInjector.binderGetCallingUid(); + final int userId = mInjector.userHandleGetCallingUserId(); try { final ApplicationInfo ai = mIPackageManager.getApplicationInfo( - packageName, 0, caller.getUserId()); - Preconditions.checkState(ai.uid == caller.getUid(), "Unmatching package name"); + packageName, 0, userId); + Preconditions.checkState(ai.uid == callingUid, "Unmatching package name"); } catch (RemoteException e) { // Shouldn't happen } } } + private boolean isCallerWithSystemUid() { + return UserHandle.isSameApp(mInjector.binderGetCallingUid(), Process.SYSTEM_UID); + } + private boolean isSystemUid(CallerIdentity caller) { return UserHandle.isSameApp(caller.getUid(), Process.SYSTEM_UID); } @@ -8431,9 +8533,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final CallerIdentity caller = getCallerIdentity(admin); Preconditions.checkCallAuthorization(isDeviceOwner(caller) || (parent && isProfileOwnerOfOrganizationOwnedDevice(caller))); - mInjector.binderWithCleanCallingIdentity(() -> Preconditions.checkArgument(!parent - || isSystemPackage(packageName, getProfileParentId(caller.getUserId())), - "The provided package is not a system package")); + if (parent) { + mInjector.binderWithCleanCallingIdentity(() -> enforcePackageIsSystemPackage( + packageName, getProfileParentId(mInjector.userHandleGetCallingUserId()))); + } mInjector.binderWithCleanCallingIdentity(() -> SmsApplication.setDefaultApplication(packageName, mContext)); @@ -8459,7 +8562,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isCallerApplicationRestrictionsManagingPackage(String callerPackage) { - return isCallerDelegate(callerPackage, getCallerIdentity().getUid(), + return isCallerDelegate(callerPackage, mInjector.binderGetCallingUid(), DELEGATION_APP_RESTRICTIONS); } @@ -8574,9 +8677,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public ComponentName getRestrictionsProvider(int userHandle) { - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can query the permission provider"); - + enforceSystemCaller("query the permission provider"); synchronized (getLockObject()) { DevicePolicyData userData = getUserData(userHandle); return userData != null ? userData.mRestrictionsProvider : null; @@ -8844,9 +8945,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } Objects.requireNonNull(who, "ComponentName is null"); Preconditions.checkStringNotEmpty(packageName, "packageName is null"); - - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can query if an accessibility service is disabled by admin"); + enforceSystemCaller("query if an accessibility service is disabled by admin"); synchronized (getLockObject()) { ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userHandle); @@ -8966,9 +9065,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } Objects.requireNonNull(who, "ComponentName is null"); Preconditions.checkStringNotEmpty(packageName, "packageName is null"); - - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can query if an input method is disabled by admin"); + enforceSystemCaller("query if an input method is disabled by admin"); synchronized (getLockObject()) { ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userHandle); @@ -9025,10 +9122,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return true; } - Preconditions.checkStringNotEmpty(packageName, "packageName is null or empty"); - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can query if a notification listener service is permitted"); + Preconditions.checkStringNotEmpty(packageName, "packageName is null or empty"); + enforceSystemCaller("query if a notification listener service is permitted"); synchronized (getLockObject()) { ActiveAdmin profileOwner = getProfileOwnerAdminLocked(userId); @@ -9041,6 +9137,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } + private void enforceSystemCaller(String action) { + if (!isCallerWithSystemUid()) { + throw new SecurityException("Only the system can " + action); + } + } + private void maybeSendAdminEnabledBroadcastLocked(int userHandle) { DevicePolicyData policyData = getUserData(userHandle); if (policyData.mAdminBroadcastPending) { @@ -9070,14 +9172,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { ComponentName profileOwner, PersistableBundle adminExtras, int flags) { Objects.requireNonNull(admin, "admin is null"); Objects.requireNonNull(profileOwner, "profileOwner is null"); - Preconditions.checkArgument(admin.getPackageName().equals(profileOwner.getPackageName()), - String.format("profileOwner %s and admin %s are not in the same package", - profileOwner, admin)); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(caller.getUserHandle().isSystem(), - "createAndManageUser was called from non-system user"); - + if (!admin.getPackageName().equals(profileOwner.getPackageName())) { + throw new IllegalArgumentException("profileOwner " + profileOwner + " and admin " + + admin + " are not in the same package"); + } + // Only allow the system user to use this method + if (!mInjector.binderGetCallingUserHandle().isSystem()) { + throw new SecurityException("createAndManageUser was called from non-system user"); + } final boolean ephemeral = (flags & DevicePolicyManager.MAKE_USER_EPHEMERAL) != 0; final boolean demo = (flags & DevicePolicyManager.MAKE_USER_DEMO) != 0 && UserManager.isDeviceInDemoMode(mContext); @@ -9087,12 +9189,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // Create user. UserHandle user = null; synchronized (getLockObject()) { - Preconditions.checkCallAuthorization(isDeviceOwner(caller)); + getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER); + final int callingUid = mInjector.binderGetCallingUid(); final long id = mInjector.binderClearCallingIdentity(); try { - targetSdkVersion = mInjector.getPackageManagerInternal() - .getUidTargetSdkVersion(caller.getUid()); + targetSdkVersion = mInjector.getPackageManagerInternal().getUidTargetSdkVersion( + callingUid); // Return detail error code for checks inside // UserManagerService.createUserInternalUnchecked. @@ -9620,8 +9723,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // API cannot be used to leak if certain non-system package exists in the person // profile. mInjector.binderWithCleanCallingIdentity(() -> - Preconditions.checkArgument(isSystemPackage(packageName, userId), - "The provided package is not a system package")); + enforcePackageIsSystemPackage(packageName, userId)); } result = mInjector.binderWithCleanCallingIdentity(() -> mIPackageManager .setApplicationHiddenSettingAsUser(packageName, hidden, userId)); @@ -9652,8 +9754,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { && isManagedProfile(caller.getUserId())); // Ensure the package provided is a system package. mInjector.binderWithCleanCallingIdentity(() -> - Preconditions.checkArgument(isSystemPackage(packageName, userId), - "The provided package is not a system package")); + enforcePackageIsSystemPackage(packageName, userId)); } return mInjector.binderWithCleanCallingIdentity( @@ -9661,12 +9762,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } - private boolean isSystemPackage(String packageName, int userId) + private void enforcePackageIsSystemPackage(String packageName, int userId) throws RemoteException { + boolean isSystem; try { - return isSystemApp(mIPackageManager, packageName, userId); + isSystem = isSystemApp(mIPackageManager, packageName, userId); } catch (IllegalArgumentException e) { - return false; + isSystem = false; + } + if (!isSystem) { + throw new IllegalArgumentException("The provided package is not a system package"); } } @@ -10215,12 +10320,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Objects.requireNonNull(who, "ComponentName is null"); Objects.requireNonNull(packages, "packages is null"); - final CallerIdentity caller = getCallerIdentity(who); synchronized (getLockObject()) { - Preconditions.checkCallAuthorization((isDeviceOwner(caller) || isProfileOwner(caller)) - && canUserUseLockTaskLocked(caller.getUserId()), - String.format("User %d is not allowed to use lock task", caller.getUserId())); - setLockTaskPackagesLocked(caller.getUserId(), new ArrayList<>(Arrays.asList(packages))); + enforceCanCallLockTaskLocked(who); + final int userHandle = mInjector.userHandleGetCallingUserId(); + setLockTaskPackagesLocked(userHandle, new ArrayList<>(Arrays.asList(packages))); } } @@ -10237,12 +10340,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { public String[] getLockTaskPackages(ComponentName who) { Objects.requireNonNull(who, "ComponentName is null"); - final CallerIdentity caller = getCallerIdentity(who); + final int userHandle = mInjector.binderGetCallingUserHandle().getIdentifier(); synchronized (getLockObject()) { - Preconditions.checkCallAuthorization((isDeviceOwner(caller) || isProfileOwner(caller)) - && canUserUseLockTaskLocked(caller.getUserId()), - String.format("User %d is not allowed to use lock task", caller.getUserId())); - final List packages = getUserData(caller.getUserId()).mLockTaskPackages; + enforceCanCallLockTaskLocked(who); + final List packages = getUserData(userHandle).mLockTaskPackages; return packages.toArray(new String[packages.size()]); } } @@ -10258,6 +10359,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void setLockTaskFeatures(ComponentName who, int flags) { Objects.requireNonNull(who, "ComponentName is null"); + // Throw if Overview is used without Home. boolean hasHome = (flags & LOCK_TASK_FEATURE_HOME) != 0; boolean hasOverview = (flags & LOCK_TASK_FEATURE_OVERVIEW) != 0; @@ -10267,12 +10369,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Preconditions.checkArgument(hasHome || !hasNotification, "Cannot use LOCK_TASK_FEATURE_NOTIFICATIONS without LOCK_TASK_FEATURE_HOME"); - final CallerIdentity caller = getCallerIdentity(who); + final int userHandle = mInjector.userHandleGetCallingUserId(); synchronized (getLockObject()) { - Preconditions.checkCallAuthorization((isDeviceOwner(caller) || isProfileOwner(caller)) - && canUserUseLockTaskLocked(caller.getUserId()), - String.format("User %d is not allowed to use lock task", caller.getUserId())); - setLockTaskFeaturesLocked(caller.getUserId(), flags); + enforceCanCallLockTaskLocked(who); + setLockTaskFeaturesLocked(userHandle, flags); } } @@ -10286,13 +10386,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public int getLockTaskFeatures(ComponentName who) { Objects.requireNonNull(who, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(who); + final int userHandle = mInjector.userHandleGetCallingUserId(); synchronized (getLockObject()) { - Preconditions.checkCallAuthorization((isDeviceOwner(caller) || isProfileOwner(caller)) - && canUserUseLockTaskLocked(caller.getUserId()), - String.format("User %d is not allowed to use lock task", caller.getUserId())); - return getUserData(caller.getUserId()).mLockTaskFeatures; + enforceCanCallLockTaskLocked(who); + return getUserData(userHandle).mLockTaskFeatures; } } @@ -10323,9 +10420,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void notifyLockTaskModeChanged(boolean isEnabled, String pkg, int userHandle) { - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can notify lock task mode changed"); - + enforceSystemCaller("call notifyLockTaskModeChanged"); synchronized (getLockObject()) { final DevicePolicyData policy = getUserData(userHandle); @@ -11299,13 +11394,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public Intent createAdminSupportIntent(String restriction) { Objects.requireNonNull(restriction); - - final CallerIdentity caller = getCallerIdentity(); + final int uid = mInjector.binderGetCallingUid(); + final int userId = UserHandle.getUserId(uid); Intent intent = null; if (DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction) || DevicePolicyManager.POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction)) { synchronized (getLockObject()) { - final DevicePolicyData policy = getUserData(caller.getUserId()); + final DevicePolicyData policy = getUserData(userId); final int N = policy.mAdminList.size(); for (int i = 0; i < N; i++) { final ActiveAdmin admin = policy.mAdminList.get(i); @@ -11313,8 +11408,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction)) || (admin.disableScreenCapture && DevicePolicyManager .POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction))) { - intent = createShowAdminSupportIntent(admin.info.getComponent(), - caller.getUserId()); + intent = createShowAdminSupportIntent(admin.info.getComponent(), userId); break; } } @@ -11331,8 +11425,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } else { // if valid, |restriction| can only be a user restriction - intent = mLocalService.createUserRestrictionSupportIntent( - caller.getUserId(), restriction); + intent = mLocalService.createUserRestrictionSupportIntent(userId, restriction); } if (intent != null) { intent.putExtra(DevicePolicyManager.EXTRA_RESTRICTION, restriction); @@ -11465,9 +11558,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void clearSystemUpdatePolicyFreezePeriodRecord() { - Preconditions.checkCallAuthorization(isAdb(getCallerIdentity()), - "Non-shell user attempted to call clearSystemUpdatePolicyFreezePeriodRecord"); - + enforceShell("clearSystemUpdatePolicyFreezePeriodRecord"); synchronized (getLockObject()) { // Print out current record to help diagnosed CTS failures Slog.i(LOG_TAG, "Clear freeze period record: " @@ -11479,8 +11570,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } /** - * Checks if the caller of the method is the device owner app. This method should only be called - * if not componentName is available. + * Checks if the caller of the method is the device owner app. * * @param callerUid UID of the caller. * @return true if the caller is the device owner app @@ -11496,47 +11586,26 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } final String deviceOwnerPackageName = mOwners.getDeviceOwnerComponent() .getPackageName(); - try { - String[] pkgs = mInjector.getIPackageManager().getPackagesForUid(callerUid); - if (pkgs != null) { + try { + String[] pkgs = mInjector.getIPackageManager().getPackagesForUid(callerUid); for (String pkg : pkgs) { if (deviceOwnerPackageName.equals(pkg)) { return true; } } + } catch (RemoteException e) { + return false; } - } catch (RemoteException e) { - return false; - } - } - return false; - } - - /** - * Checks if the caller of the method is the profile owner. This method should only be called - * if not componentName is available. - * - * @param callerUid UID of the caller. - * @return true if the caller is the profile owner - */ - private boolean isCallerProfileOwner(int callerUid) { - final int userId = UserHandle.getUserId(callerUid); - for (ActiveAdmin admin : getUserData(userId).mAdminList) { - if (admin.getUid() == callerUid && isProfileOwner(admin.info.getComponent(), userId)) { - return true; - } } return false; } @Override public void notifyPendingSystemUpdate(@Nullable SystemUpdateInfo info) { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization( - hasCallingOrSelfPermission(permission.NOTIFY_PENDING_SYSTEM_UPDATE), + mContext.enforceCallingOrSelfPermission(permission.NOTIFY_PENDING_SYSTEM_UPDATE, "Only the system update service can broadcast update information"); - if (!caller.getUserHandle().isSystem()) { + if (UserHandle.getCallingUserId() != UserHandle.USER_SYSTEM) { Slog.w(LOG_TAG, "Only the system update service in the system user " + "can broadcast update information."); return; @@ -11764,12 +11833,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { public boolean isProvisioningAllowed(String action, String packageName) { Objects.requireNonNull(packageName); - final CallerIdentity caller = getCallerIdentity(); + final int callingUid = mInjector.binderGetCallingUid(); final long ident = mInjector.binderClearCallingIdentity(); try { final int uidForPackage = mInjector.getPackageManager().getPackageUidAsUser( - packageName, caller.getUserId()); - Preconditions.checkArgument(caller.getUid() == uidForPackage, + packageName, UserHandle.getUserId(callingUid)); + Preconditions.checkArgument(callingUid == uidForPackage, "Caller uid doesn't match the one for the provided package."); } catch (NameNotFoundException e) { throw new IllegalArgumentException("Invalid package provided " + packageName, e); @@ -12080,18 +12149,17 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return; } Objects.requireNonNull(who, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(); + final int userHandle = mInjector.userHandleGetCallingUserId(); synchronized (getLockObject()) { - ActiveAdmin admin = getActiveAdminForUidLocked(who, caller.getUid()); + ActiveAdmin admin = getActiveAdminForUidLocked(who, mInjector.binderGetCallingUid()); if (!TextUtils.equals(admin.shortSupportMessage, message)) { admin.shortSupportMessage = message; - saveSettingsLocked(caller.getUserId()); + saveSettingsLocked(userHandle); } } DevicePolicyEventLogger .createEvent(DevicePolicyEnums.SET_SHORT_SUPPORT_MESSAGE) - .setAdmin(caller.getComponentName()) + .setAdmin(who) .write(); } @@ -12101,9 +12169,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } Objects.requireNonNull(who, "ComponentName is null"); - synchronized (getLockObject()) { - ActiveAdmin admin = getActiveAdminForUidLocked(who, getCallerIdentity().getUid()); + ActiveAdmin admin = getActiveAdminForUidLocked(who, mInjector.binderGetCallingUid()); return admin.shortSupportMessage; } } @@ -12114,18 +12181,17 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return; } Objects.requireNonNull(who, "ComponentName is null"); - - final CallerIdentity caller = getCallerIdentity(); + final int userHandle = mInjector.userHandleGetCallingUserId(); synchronized (getLockObject()) { - ActiveAdmin admin = getActiveAdminForUidLocked(who, caller.getUid()); + ActiveAdmin admin = getActiveAdminForUidLocked(who, mInjector.binderGetCallingUid()); if (!TextUtils.equals(admin.longSupportMessage, message)) { admin.longSupportMessage = message; - saveSettingsLocked(caller.getUserId()); + saveSettingsLocked(userHandle); } } DevicePolicyEventLogger .createEvent(DevicePolicyEnums.SET_LONG_SUPPORT_MESSAGE) - .setAdmin(caller.getComponentName()) + .setAdmin(who) .write(); } @@ -12135,9 +12201,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } Objects.requireNonNull(who, "ComponentName is null"); - synchronized (getLockObject()) { - ActiveAdmin admin = getActiveAdminForUidLocked(who, getCallerIdentity().getUid()); + ActiveAdmin admin = getActiveAdminForUidLocked(who, mInjector.binderGetCallingUid()); return admin.longSupportMessage; } } @@ -12148,9 +12213,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } Objects.requireNonNull(who, "ComponentName is null"); - - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can query support message for user"); + enforceSystemCaller("query support message for user"); synchronized (getLockObject()) { ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userHandle); @@ -12167,9 +12230,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } Objects.requireNonNull(who, "ComponentName is null"); - - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can query support message for user"); + enforceSystemCaller("query support message for user"); synchronized (getLockObject()) { ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userHandle); @@ -12296,10 +12357,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return null; } - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization( - isCallerDeviceOwner(caller.getUid()) || canManageUsers(caller)); - + enforceDeviceOwnerOrManageUsers(); synchronized (getLockObject()) { final ActiveAdmin deviceOwnerAdmin = getDeviceOwnerAdminLocked(); return deviceOwnerAdmin == null ? null : deviceOwnerAdmin.organizationName; @@ -12396,13 +12454,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isMeteredDataDisabledPackageForUser(ComponentName who, String packageName, int userId) { + Objects.requireNonNull(who); + if (!mHasFeature) { return false; } - Objects.requireNonNull(who, "ComponentName is null"); - - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can query restricted pkgs for a specific user"); + enforceSystemCaller("query restricted pkgs for a specific user"); synchronized (getLockObject()) { final ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userId); @@ -12415,27 +12472,32 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void markProfileOwnerOnOrganizationOwnedDevice(ComponentName who, int userId) { - if (!mHasFeature) { - return; - } // As the caller is the system, it must specify the component name of the profile owner // as a sanity / safety check. Objects.requireNonNull(who); - final CallerIdentity caller = getCallerIdentity(); + if (!mHasFeature) { + return; + } + // Only adb or system apps with the right permission can mark a profile owner on // organization-owned device. - Preconditions.checkCallAuthorization(isAdb(caller) - || hasCallingPermission(permission.MARK_DEVICE_ORGANIZATION_OWNED), - "Only the system can mark a profile owner of organization-owned device."); - if (isAdb(caller)) { - Preconditions.checkCallAuthorization( - !hasIncompatibleAccountsOrNonAdbNoLock(userId, caller), - "Can only be called from ADB if the device has no accounts."); + if (!(isAdb() || hasCallingPermission(permission.MARK_DEVICE_ORGANIZATION_OWNED))) { + throw new SecurityException( + "Only the system can mark a profile owner of organization-owned device."); + } + + if (isAdb()) { + if (hasIncompatibleAccountsOrNonAdbNoLock(userId, who)) { + throw new SecurityException( + "Can only be called from ADB if the device has no accounts."); + } } else { - Preconditions.checkState(!hasUserSetupCompleted(UserHandle.USER_SYSTEM), - "Cannot mark profile owner as managing an organization-owned device after " - + "set-up"); + if (hasUserSetupCompleted(UserHandle.USER_SYSTEM)) { + throw new IllegalStateException( + "Cannot mark profile owner as managing an organization-owned device after" + + " set-up"); + } } // Grant access under lock. @@ -12654,13 +12716,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature) { return false; } - final CallerIdentity caller = getCallerIdentityOptionalAdmin(admin); synchronized (getLockObject()) { - if (!isSystemUid(caller)) { - Objects.requireNonNull(admin, "ComponentName is null"); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) - || isProfileOwnerOfOrganizationOwnedDevice(caller)); + if (!isCallerWithSystemUid()) { + Objects.requireNonNull(admin); + final CallerIdentity caller = getCallerIdentity(admin); + Preconditions.checkCallAuthorization( + isProfileOwnerOfOrganizationOwnedDevice(caller) || isDeviceOwner(caller)); } return mInjector.securityLogGetLoggingEnabledProperty(); } @@ -12744,15 +12806,21 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public long forceSecurityLogs() { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization(isAdb(caller), - "Non-shell user attempted to call forceSecurityLogs"); - Preconditions.checkState(mInjector.securityLogGetLoggingEnabledProperty(), - "logging is not available"); - + enforceShell("forceSecurityLogs"); + if (!mInjector.securityLogGetLoggingEnabledProperty()) { + throw new IllegalStateException("logging is not available"); + } return mSecurityLogMonitor.forceLogs(); } + private void enforceCallerSystemUserHandle() { + final int callingUid = mInjector.binderGetCallingUid(); + final int userId = UserHandle.getUserId(callingUid); + if (userId != UserHandle.USER_SYSTEM) { + throw new SecurityException("Caller has to be in user 0"); + } + } + @Override public boolean isUninstallInQueue(final String packageName) { final CallerIdentity caller = getCallerIdentity(); @@ -12770,21 +12838,22 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Preconditions.checkArgument(!TextUtils.isEmpty(packageName)); final CallerIdentity caller = getCallerIdentity(); - final int userId = caller.getUserId(); Preconditions.checkCallAuthorization( hasCallingOrSelfPermission(permission.MANAGE_DEVICE_ADMINS)); - Preconditions.checkState(mUserManager.isUserUnlocked(userId), - "User must be running and unlocked"); + + final int userId = caller.getUserId(); + enforceUserUnlocked(userId); final ComponentName profileOwner = getProfileOwner(userId); - Preconditions.checkArgument( - profileOwner == null || !packageName.equals(profileOwner.getPackageName()), - "Cannot uninstall a package with a profile owner"); + if (profileOwner != null && packageName.equals(profileOwner.getPackageName())) { + throw new IllegalArgumentException("Cannot uninstall a package with a profile owner"); + } final ComponentName deviceOwner = getDeviceOwnerComponent(/* callingUserOnly= */ false); - Preconditions.checkArgument(deviceOwner == null || getDeviceOwnerUserId() != userId - || !packageName.equals(deviceOwner.getPackageName()), - "Cannot uninstall a package with a device owner"); + if (getDeviceOwnerUserId() == userId && deviceOwner != null + && packageName.equals(deviceOwner.getPackageName())) { + throw new IllegalArgumentException("Cannot uninstall a package with a device owner"); + } final Pair packageUserPair = new Pair<>(packageName, userId); synchronized (getLockObject()) { @@ -12935,24 +13004,22 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { */ @Override public void forceUpdateUserSetupComplete() { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization( hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); - Preconditions.checkCallAuthorization(caller.getUserHandle().isSystem(), - "Caller has to be in user 0"); + enforceCallerSystemUserHandle(); // no effect if it's called from user build if (!mInjector.isBuildDebuggable()) { return; } + final int userId = UserHandle.USER_SYSTEM; boolean isUserCompleted = mInjector.settingsSecureGetIntForUser( - Settings.Secure.USER_SETUP_COMPLETE, 0, caller.getUserId()) != 0; - DevicePolicyData policy = getUserData(caller.getUserId()); + Settings.Secure.USER_SETUP_COMPLETE, 0, userId) != 0; + DevicePolicyData policy = getUserData(userId); policy.mUserSetupComplete = isUserCompleted; mStateCache.setDeviceProvisioned(isUserCompleted); synchronized (getLockObject()) { - saveSettingsLocked(caller.getUserId()); + saveSettingsLocked(userId); } } @@ -13107,8 +13174,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { * * DO NOT CALL IT WITH THE DPMS LOCK HELD. */ - private boolean hasIncompatibleAccountsOrNonAdbNoLock(int userId, CallerIdentity caller) { - if (!isAdb(caller)) { + private boolean hasIncompatibleAccountsOrNonAdbNoLock( + int userId, @Nullable ComponentName owner) { + if (!isAdb()) { return true; } wtfIfInLock(); @@ -13120,8 +13188,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return false; } synchronized (getLockObject()) { - if (caller.getComponentName() == null - || !isAdminTestOnlyLocked(caller.getComponentName(), userId)) { + if (owner == null || !isAdminTestOnlyLocked(owner, userId)) { Log.w(LOG_TAG, "Non test-only owner can't be installed with existing accounts."); return true; @@ -13164,8 +13231,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } - private boolean isAdb(CallerIdentity caller) { - return isShellUid(caller) || isRootUid(caller); + private boolean isAdb() { + final int callingUid = mInjector.binderGetCallingUid(); + return callingUid == Process.SHELL_UID || callingUid == Process.ROOT_UID; } @Override @@ -13227,13 +13295,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public long forceNetworkLogs() { - Preconditions.checkCallAuthorization(isAdb(getCallerIdentity()), - "Non-shell user attempted to call forceNetworkLogs"); - + enforceShell("forceNetworkLogs"); synchronized (getLockObject()) { - Preconditions.checkState(isNetworkLoggingEnabledInternalLocked(), - "logging is not available"); - + if (!isNetworkLoggingEnabledInternalLocked()) { + throw new IllegalStateException("logging is not available"); + } if (mNetworkLogger != null) { return mInjector.binderWithCleanCallingIdentity( () -> mNetworkLogger.forceBatchFinalization()); @@ -13433,28 +13499,19 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public long getLastSecurityLogRetrievalTime() { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization( - isCallerDeviceOwner(caller.getUid()) || canManageUsers(caller)); - + enforceDeviceOwnerOrManageUsers(); return getUserData(UserHandle.USER_SYSTEM).mLastSecurityLogRetrievalTime; } @Override public long getLastBugReportRequestTime() { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization( - isCallerDeviceOwner(caller.getUid()) || canManageUsers(caller)); - + enforceDeviceOwnerOrManageUsers(); return getUserData(UserHandle.USER_SYSTEM).mLastBugReportRequestTime; } @Override public long getLastNetworkLogRetrievalTime() { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization( - isCallerDeviceOwner(caller.getUid()) || canManageUsers(caller)); - + enforceDeviceOwnerOrManageUsers(); return getUserData(UserHandle.USER_SYSTEM).mLastNetworkLogsRetrievalTime; } @@ -13534,18 +13591,16 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { if (!mHasFeature || !mLockPatternUtils.hasSecureLockScreen()) { return false; } - Objects.requireNonNull(admin); Objects.requireNonNull(token); - - final CallerIdentity caller = getCallerIdentity(admin); - Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller)); - synchronized (getLockObject()) { - DevicePolicyData policy = getUserData(caller.getUserId()); + final int userHandle = mInjector.userHandleGetCallingUserId(); + getActiveAdminForCallerLocked(admin, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER); + + DevicePolicyData policy = getUserData(userHandle); if (policy.mPasswordTokenHandle != 0) { final String password = passwordOrNull != null ? passwordOrNull : ""; return resetPasswordInternal(password, policy.mPasswordTokenHandle, token, - flags, caller.getUid()); + flags, mInjector.binderGetCallingUid()); } else { Slog.w(LOG_TAG, "No saved token handle"); } @@ -13555,21 +13610,15 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isCurrentInputMethodSetByOwner() { - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization(isCallerDeviceOwner(caller.getUid()) - || isCallerProfileOwner(caller.getUid()) || isSystemUid(caller)); - - return getUserData(caller.getUserId()).mCurrentInputMethodSet; + enforceProfileOwnerOrSystemUser(); + return getUserData(mInjector.userHandleGetCallingUserId()).mCurrentInputMethodSet; } @Override public StringParceledListSlice getOwnerInstalledCaCerts(@NonNull UserHandle user) { final int userId = user.getIdentifier(); final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization(isCallerDeviceOwner(caller.getUid()) - || isCallerProfileOwner(caller.getUid()) - || hasFullCrossUsersPermission(caller, userId)); - + enforceProfileOwnerOrFullCrossUsersPermission(caller, userId); synchronized (getLockObject()) { return new StringParceledListSlice( new ArrayList<>(getUserData(userId).mOwnerInstalledCaCerts)); @@ -14456,12 +14505,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } Preconditions.checkStringNotEmpty(packageName, "Package name is empty"); - final CallerIdentity caller = getCallerIdentity(packageName); - Preconditions.checkCallAuthorization(isCallingFromPackage(packageName, caller.getUid()), - "Input package name doesn't align with actual calling package."); - + final int callingUid = mInjector.binderGetCallingUid(); + final int callingUserId = mInjector.userHandleGetCallingUserId(); + if (!isCallingFromPackage(packageName, callingUid)) { + throw new SecurityException("Input package name doesn't align with actual " + + "calling package."); + } return mInjector.binderWithCleanCallingIdentity(() -> { - final int workProfileUserId = getManagedUserId(caller.getUserId()); + final int workProfileUserId = getManagedUserId(callingUserId); if (workProfileUserId < 0) { return false; } @@ -14945,9 +14996,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean canProfileOwnerResetPasswordWhenLocked(int userId) { - Preconditions.checkCallAuthorization(isSystemUid(getCallerIdentity()), - "Only the system can query profile owner can reset password when locked"); - + enforceSystemCaller("call canProfileOwnerResetPasswordWhenLocked"); synchronized (getLockObject()) { final ActiveAdmin poAdmin = getProfileOwnerAdminLocked(userId); if (poAdmin == null From d28019d4607a5bd3f290142ecd2715333affbebe Mon Sep 17 00:00:00 2001 From: Rob Carr Date: Fri, 16 Oct 2020 19:43:52 +0000 Subject: [PATCH 035/192] Revert "SurfaceView Cleanup (3/n): Extract RemoteAccessibilityController" This reverts commit 60370aadc842c490361383a127a255d5dd837ad1. Reason for revert: 171015133 Change-Id: I77b654ba3f02a842b72f456daf1cc7bfefb5b51e (cherry picked from commit 0ad511d7233ed42fbea14b2660fe2edc95e51b94) --- .../view/RemoteAccessibilityController.java | 168 ------------------ core/java/android/view/SurfaceView.java | 139 ++++++++++++--- 2 files changed, 114 insertions(+), 193 deletions(-) delete mode 100644 core/java/android/view/RemoteAccessibilityController.java diff --git a/core/java/android/view/RemoteAccessibilityController.java b/core/java/android/view/RemoteAccessibilityController.java deleted file mode 100644 index bc0fab1bcf8dd..0000000000000 --- a/core/java/android/view/RemoteAccessibilityController.java +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright (C) 2020 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 android.view; - -import android.graphics.Matrix; -import android.os.Handler; -import android.os.IBinder; -import android.os.Looper; -import android.os.RemoteException; -import android.util.Log; -import android.view.accessibility.IAccessibilityEmbeddedConnection; - -class RemoteAccessibilityController { - private static final String TAG = "RemoteAccessibilityController"; - private int mHostId; - private RemoteAccessibilityEmbeddedConnection mConnectionWrapper; - private Matrix mScreenMatrixForEmbeddedHierarchy = new Matrix(); - private final float[] mMatrixValues = new float[9]; - private View mHostView; - - RemoteAccessibilityController(View v) { - mHostView = v; - } - - private void runOnUiThread(Runnable runnable) { - final Handler h = mHostView.getHandler(); - if (h != null && h.getLooper() != Looper.myLooper()) { - h.post(runnable); - } else { - runnable.run(); - } - } - - void assosciateHierarchy(IAccessibilityEmbeddedConnection connection, - IBinder leashToken, int hostId) { - mHostId = hostId; - - try { - leashToken = connection.associateEmbeddedHierarchy( - leashToken, mHostId); - setRemoteAccessibilityEmbeddedConnection(connection, leashToken); - } catch (RemoteException e) { - Log.d(TAG, "Error in associateEmbeddedHierarchy " + e); - } - } - - void disassosciateHierarchy() { - setRemoteAccessibilityEmbeddedConnection(null, null); - } - - boolean alreadyAssociated(IAccessibilityEmbeddedConnection connection) { - if (mConnectionWrapper == null) { - return false; - } - return mConnectionWrapper.mConnection.equals(connection); - } - - boolean connected() { - return mConnectionWrapper != null; - } - - IBinder getLeashToken() { - return mConnectionWrapper.getLeashToken(); - } - - /** - * Wrapper of accessibility embedded connection for embedded view hierarchy. - */ - private final class RemoteAccessibilityEmbeddedConnection implements IBinder.DeathRecipient { - private final IAccessibilityEmbeddedConnection mConnection; - private final IBinder mLeashToken; - - RemoteAccessibilityEmbeddedConnection(IAccessibilityEmbeddedConnection connection, - IBinder leashToken) { - mConnection = connection; - mLeashToken = leashToken; - } - - IAccessibilityEmbeddedConnection getConnection() { - return mConnection; - } - - IBinder getLeashToken() { - return mLeashToken; - } - - void linkToDeath() throws RemoteException { - mConnection.asBinder().linkToDeath(this, 0); - } - - void unlinkToDeath() { - mConnection.asBinder().unlinkToDeath(this, 0); - } - - @Override - public void binderDied() { - unlinkToDeath(); - runOnUiThread(() -> { - if (mConnectionWrapper == this) { - mConnectionWrapper = null; - } - }); - } - } - - private void setRemoteAccessibilityEmbeddedConnection( - IAccessibilityEmbeddedConnection connection, IBinder leashToken) { - try { - if (mConnectionWrapper != null) { - mConnectionWrapper.getConnection() - .disassociateEmbeddedHierarchy(); - mConnectionWrapper.unlinkToDeath(); - mConnectionWrapper = null; - } - if (connection != null && leashToken != null) { - mConnectionWrapper = - new RemoteAccessibilityEmbeddedConnection(connection, leashToken); - mConnectionWrapper.linkToDeath(); - } - } catch (RemoteException e) { - Log.d(TAG, "Error while setRemoteEmbeddedConnection " + e); - } - } - - private RemoteAccessibilityEmbeddedConnection getRemoteAccessibilityEmbeddedConnection() { - return mConnectionWrapper; - } - - void setScreenMatrix(Matrix m) { - // If the screen matrix is identity or doesn't change, do nothing. - if (m.isIdentity() || m.equals(mScreenMatrixForEmbeddedHierarchy)) { - return; - } - - try { - final RemoteAccessibilityEmbeddedConnection wrapper = - getRemoteAccessibilityEmbeddedConnection(); - if (wrapper == null) { - return; - } - m.getValues(mMatrixValues); - wrapper.getConnection().setScreenMatrix(mMatrixValues); - mScreenMatrixForEmbeddedHierarchy.set(m); - } catch (RemoteException e) { - Log.d(TAG, "Error while setScreenMatrix " + e); - } - } - - - - - - -} diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 7b6a4f877d020..ecfdfc492643d 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -226,9 +226,9 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall private SurfaceControl.Transaction mTmpTransaction = new SurfaceControl.Transaction(); private int mParentSurfaceSequenceId; - private RemoteAccessibilityController mRemoteAccessibilityController = - new RemoteAccessibilityController(this); + private RemoteAccessibilityEmbeddedConnection mRemoteAccessibilityEmbeddedConnection; + private final Matrix mScreenMatrixForEmbeddedHierarchy = new Matrix(); private final Matrix mTmpMatrix = new Matrix(); SurfaceControlViewHost.SurfacePackage mSurfacePackage; @@ -928,7 +928,6 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall private boolean performSurfaceTransaction(ViewRootImpl viewRoot, Translator translator, boolean creating, boolean sizeChanged, boolean needBLASTSync) { boolean realSizeChanged = false; - mSurfaceLock.lock(); try { mDrawingStopped = !mVisible; @@ -998,8 +997,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall } mTmpTransaction.apply(); - updateEmbeddedAccessibilityMatrix(); - + updateScreenMatrixForEmbeddedHierarchy(); mSurfaceFrame.left = 0; mSurfaceFrame.top = 0; if (translator == null) { @@ -1755,7 +1753,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall @Override public void surfaceDestroyed() { setWindowStopped(true); - mRemoteAccessibilityController.disassosciateHierarchy(); + setRemoteAccessibilityEmbeddedConnection(null, null); } /** @@ -1835,12 +1833,14 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall @Override public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfoInternal(info); - if (!mRemoteAccessibilityController.connected()) { + final RemoteAccessibilityEmbeddedConnection wrapper = + getRemoteAccessibilityEmbeddedConnection(); + if (wrapper == null) { return; } // Add a leashed child when this SurfaceView embeds another view hierarchy. Getting this // leashed child would return the root node in the embedded hierarchy - info.addChild(mRemoteAccessibilityController.getLeashToken()); + info.addChild(wrapper.getLeashToken()); } @Override @@ -1849,7 +1849,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall // If developers explicitly set the important mode for it, don't change the mode. // Only change the mode to important when this SurfaceView isn't explicitly set and has // an embedded hierarchy. - if (!mRemoteAccessibilityController.connected() + if (mRemoteAccessibilityEmbeddedConnection == null || mode != IMPORTANT_FOR_ACCESSIBILITY_AUTO) { return mode; } @@ -1858,13 +1858,74 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall private void initEmbeddedHierarchyForAccessibility(SurfaceControlViewHost.SurfacePackage p) { final IAccessibilityEmbeddedConnection connection = p.getAccessibilityEmbeddedConnection(); - if (mRemoteAccessibilityController.alreadyAssociated(connection)) { + final RemoteAccessibilityEmbeddedConnection wrapper = + getRemoteAccessibilityEmbeddedConnection(); + + // Do nothing if package is embedding the same view hierarchy. + if (wrapper != null && wrapper.getConnection().equals(connection)) { return; } - mRemoteAccessibilityController.assosciateHierarchy(connection, - getViewRootImpl().mLeashToken, getAccessibilityViewId()); - updateEmbeddedAccessibilityMatrix(); + // If this SurfaceView embeds a different view hierarchy, unlink the previous one first. + setRemoteAccessibilityEmbeddedConnection(null, null); + + try { + final IBinder leashToken = connection.associateEmbeddedHierarchy( + getViewRootImpl().mLeashToken, getAccessibilityViewId()); + setRemoteAccessibilityEmbeddedConnection(connection, leashToken); + } catch (RemoteException e) { + Log.d(TAG, "Error while associateEmbeddedHierarchy " + e); + } + updateScreenMatrixForEmbeddedHierarchy(); + } + + private void setRemoteAccessibilityEmbeddedConnection( + IAccessibilityEmbeddedConnection connection, IBinder leashToken) { + try { + if (mRemoteAccessibilityEmbeddedConnection != null) { + mRemoteAccessibilityEmbeddedConnection.getConnection() + .disassociateEmbeddedHierarchy(); + mRemoteAccessibilityEmbeddedConnection.unlinkToDeath(); + mRemoteAccessibilityEmbeddedConnection = null; + } + if (connection != null && leashToken != null) { + mRemoteAccessibilityEmbeddedConnection = + new RemoteAccessibilityEmbeddedConnection(connection, leashToken); + mRemoteAccessibilityEmbeddedConnection.linkToDeath(); + } + } catch (RemoteException e) { + Log.d(TAG, "Error while setRemoteEmbeddedConnection " + e); + } + } + + private RemoteAccessibilityEmbeddedConnection getRemoteAccessibilityEmbeddedConnection() { + return mRemoteAccessibilityEmbeddedConnection; + } + + private void updateScreenMatrixForEmbeddedHierarchy() { + getBoundsOnScreen(mTmpRect); + mTmpMatrix.reset(); + mTmpMatrix.setTranslate(mTmpRect.left, mTmpRect.top); + mTmpMatrix.postScale(mScreenRect.width() / (float) mSurfaceWidth, + mScreenRect.height() / (float) mSurfaceHeight); + + // If the screen matrix is identity or doesn't change, do nothing. + if (mTmpMatrix.isIdentity() || mTmpMatrix.equals(mScreenMatrixForEmbeddedHierarchy)) { + return; + } + + try { + final RemoteAccessibilityEmbeddedConnection wrapper = + getRemoteAccessibilityEmbeddedConnection(); + if (wrapper == null) { + return; + } + mTmpMatrix.getValues(mMatrixValues); + wrapper.getConnection().setScreenMatrix(mMatrixValues); + mScreenMatrixForEmbeddedHierarchy.set(mTmpMatrix); + } catch (RemoteException e) { + Log.d(TAG, "Error while setScreenMatrix " + e); + } } private void notifySurfaceDestroyed() { @@ -1892,18 +1953,6 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall } } - void updateEmbeddedAccessibilityMatrix() { - if (!mRemoteAccessibilityController.connected()) { - return; - } - getBoundsOnScreen(mTmpRect); - mTmpMatrix.reset(); - mTmpMatrix.setTranslate(mTmpRect.left, mTmpRect.top); - mTmpMatrix.postScale(mScreenRect.width() / (float) mSurfaceWidth, - mScreenRect.height() / (float) mSurfaceHeight); - mRemoteAccessibilityController.setScreenMatrix(mTmpMatrix); - } - @Override protected void onFocusChanged(boolean gainFocus, @FocusDirection int direction, @Nullable Rect previouslyFocusedRect) { @@ -1920,4 +1969,44 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall + "Exception requesting focus on embedded window", e); } } + + /** + * Wrapper of accessibility embedded connection for embedded view hierarchy. + */ + private final class RemoteAccessibilityEmbeddedConnection implements IBinder.DeathRecipient { + private final IAccessibilityEmbeddedConnection mConnection; + private final IBinder mLeashToken; + + RemoteAccessibilityEmbeddedConnection(IAccessibilityEmbeddedConnection connection, + IBinder leashToken) { + mConnection = connection; + mLeashToken = leashToken; + } + + IAccessibilityEmbeddedConnection getConnection() { + return mConnection; + } + + IBinder getLeashToken() { + return mLeashToken; + } + + void linkToDeath() throws RemoteException { + mConnection.asBinder().linkToDeath(this, 0); + } + + void unlinkToDeath() { + mConnection.asBinder().unlinkToDeath(this, 0); + } + + @Override + public void binderDied() { + unlinkToDeath(); + runOnUiThread(() -> { + if (mRemoteAccessibilityEmbeddedConnection == this) { + mRemoteAccessibilityEmbeddedConnection = null; + } + }); + } + } } From d945a65ee1c96d3cbb987852a0acdc54ac01a967 Mon Sep 17 00:00:00 2001 From: Robert Carr Date: Fri, 16 Oct 2020 13:12:48 -0700 Subject: [PATCH 036/192] SurfaceView: Fix null check on RemoteAccessibilityController ImporantForAccessibility can be called from the View constructor in which case we may not have initialized RemoteAccessibilityController yet. Bug: 171015133 Test: Existing tests pass. Repro from bug. Change-Id: Iedc29a9d4270ebe600648d6ce5e17c864a662396 (cherry picked from commit 0d587ee61a12c4ad9729875128fc66a12516521c) --- core/java/android/view/SurfaceView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 7b6a4f877d020..432d9279c48de 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -1849,7 +1849,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall // If developers explicitly set the important mode for it, don't change the mode. // Only change the mode to important when this SurfaceView isn't explicitly set and has // an embedded hierarchy. - if (!mRemoteAccessibilityController.connected() + if ((mRemoteAccessibilityController!= null && !mRemoteAccessibilityController.connected()) || mode != IMPORTANT_FOR_ACCESSIBILITY_AUTO) { return mode; } From 193e5643279afd5d9d3adfc83ee6ae4bec812ff3 Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Mon, 19 Oct 2020 17:40:45 +0000 Subject: [PATCH 037/192] Revert "Migrate Presentation to WindowContext" Revert "Test that presentation not dismiss after display resize" Revert submission 12501006-presentation_window_context Reason for revert: Bug: 171027173 and Bug: 171064994 Reverted Changes: Ib5c4a33ee:Migrate Presentation to WindowContext I61a9eddd7:Test that presentation not dismiss after display r... Change-Id: Iabfdcead0b5a18139a58c79faccd0d19840e1362 (cherry picked from commit 6a7f6a3f02fb225c082c55f90485630def033e9f) --- core/java/android/app/Presentation.java | 140 ++++++++++-------- .../hardware/display/VirtualDisplayTest.java | 5 +- .../keyguard/KeyguardDisplayManager.java | 30 ++-- .../keyguard/KeyguardPresentationTest.java | 9 +- 4 files changed, 104 insertions(+), 80 deletions(-) diff --git a/core/java/android/app/Presentation.java b/core/java/android/app/Presentation.java index ad903642c908f..7a18b8120d7ec 100644 --- a/core/java/android/app/Presentation.java +++ b/core/java/android/app/Presentation.java @@ -16,28 +16,30 @@ package android.app; -import static android.view.WindowManager.LayoutParams.INVALID_WINDOW_TYPE; +import static android.content.Context.DISPLAY_SERVICE; +import static android.content.Context.WINDOW_SERVICE; import static android.view.WindowManager.LayoutParams.TYPE_PRESENTATION; import static android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION; -import android.annotation.NonNull; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; import android.content.res.Resources; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; -import android.os.Build; +import android.os.Binder; import android.os.Handler; -import android.os.Looper; +import android.os.IBinder; +import android.os.Message; +import android.util.DisplayMetrics; +import android.util.Log; import android.util.TypedValue; import android.view.ContextThemeWrapper; import android.view.Display; import android.view.Gravity; import android.view.Window; import android.view.WindowManager; -import android.view.WindowManager.LayoutParams.WindowType; +import android.view.WindowManagerImpl; -import com.android.internal.util.Preconditions; /** * Base class for presentations. *

@@ -151,10 +153,11 @@ import com.android.internal.util.Preconditions; public class Presentation extends Dialog { private static final String TAG = "Presentation"; + private static final int MSG_CANCEL = 1; + private final Display mDisplay; private final DisplayManager mDisplayManager; - private final Handler mHandler = new Handler(Preconditions.checkNotNull(Looper.myLooper(), - "Presentation must be constructed on a looper thread.")); + private final IBinder mToken = new Binder(); /** * Creates a new presentation that is attached to the specified display @@ -176,11 +179,6 @@ public class Presentation extends Dialog { * @param outerContext The context of the application that is showing the presentation. * The presentation will create its own context (see {@link #getContext()}) based * on this context and information about the associated display. - * From {@link android.os.Build.VERSION_CODES#S}, the presentation will create its own window - * context based on this context, information about the associated display. Customizing window - * type by {@link Window#setType(int) #getWindow#setType(int)} causes the mismatch of the window - * and the created window context, which leads to - * {@link android.view.WindowManager.InvalidDisplayException} when invoking {@link #show()}. * @param display The display to which the presentation should be attached. * @param theme A style resource describing the theme to use for the window. * See @@ -189,53 +187,24 @@ public class Presentation extends Dialog { * outerContext. If 0, the default presentation theme will be used. */ public Presentation(Context outerContext, Display display, int theme) { - this(outerContext, display, theme, INVALID_WINDOW_TYPE); - } - - /** - * Creates a new presentation that is attached to the specified display - * using the optionally specified theme, and override the default window type for the - * presentation. - * @param outerContext The context of the application that is showing the presentation. - * The presentation will create its own context (see {@link #getContext()}) based - * on this context and information about the associated display. - * From {@link android.os.Build.VERSION_CODES#S}, the presentation will create its own window - * context based on this context, information about the associated display and the window type. - * If the window type is not specified, the presentation will choose the default type for the - * presentation. - * @param display The display to which the presentation should be attached. - * @param theme A style resource describing the theme to use for the window. - * See - * Style and Theme Resources for more information about defining and using - * styles. This theme is applied on top of the current theme in - * outerContext. If 0, the default presentation theme will be used. - * @param type Window type. - * - * @hide - */ - public Presentation(@NonNull Context outerContext, @NonNull Display display, int theme, - @WindowType int type) { - super(createPresentationContext(outerContext, display, theme, type), theme, false); + super(createPresentationContext(outerContext, display, theme), theme, false); mDisplay = display; - mDisplayManager = getContext().getSystemService(DisplayManager.class); + mDisplayManager = (DisplayManager)getContext().getSystemService(DISPLAY_SERVICE); + + final int windowType = + (display.getFlags() & Display.FLAG_PRIVATE) != 0 ? TYPE_PRIVATE_PRESENTATION + : TYPE_PRESENTATION; final Window w = getWindow(); final WindowManager.LayoutParams attr = w.getAttributes(); + attr.token = mToken; w.setAttributes(attr); w.setGravity(Gravity.FILL); - w.setType(getWindowType(type, display)); + w.setType(windowType); setCanceledOnTouchOutside(false); } - private static @WindowType int getWindowType(@WindowType int type, @NonNull Display display) { - if (type != INVALID_WINDOW_TYPE) { - return type; - } - return (display.getFlags() & Display.FLAG_PRIVATE) != 0 ? TYPE_PRIVATE_PRESENTATION - : TYPE_PRESENTATION; - } - /** * Gets the {@link Display} that this presentation appears on. * @@ -260,6 +229,16 @@ public class Presentation extends Dialog { protected void onStart() { super.onStart(); mDisplayManager.registerDisplayListener(mDisplayListener, mHandler); + + // Since we were not watching for display changes until just now, there is a + // chance that the display metrics have changed. If so, we will need to + // dismiss the presentation immediately. This case is expected + // to be rare but surprising, so we'll write a log message about it. + if (!isConfigurationStillValid()) { + Log.i(TAG, "Presentation is being dismissed because the " + + "display metrics have changed since it was created."); + mHandler.sendEmptyMessage(MSG_CANCEL); + } } @Override @@ -294,6 +273,10 @@ public class Presentation extends Dialog { * Called by the system when the properties of the {@link Display} to which * the presentation is attached have changed. * + * If the display metrics have changed (for example, if the display has been + * resized or rotated), then the system automatically calls + * {@link #cancel} to dismiss the presentation. + * * @see #getDisplay */ public void onDisplayChanged() { @@ -306,16 +289,28 @@ public class Presentation extends Dialog { private void handleDisplayChanged() { onDisplayChanged(); + + // We currently do not support configuration changes for presentations + // (although we could add that feature with a bit more work). + // If the display metrics have changed in any way then the current configuration + // is invalid and the application must recreate the presentation to get + // a new context. + if (!isConfigurationStillValid()) { + Log.i(TAG, "Presentation is being dismissed because the " + + "display metrics have changed since it was created."); + cancel(); + } } - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, publicAlternatives = "{@code N/A}") - private static Context createPresentationContext(Context outerContext, Display display, - int theme) { - return createPresentationContext(outerContext, display, theme, INVALID_WINDOW_TYPE); + private boolean isConfigurationStillValid() { + DisplayMetrics dm = new DisplayMetrics(); + mDisplay.getMetrics(dm); + return dm.equalsPhysical(getResources().getDisplayMetrics()); } + @UnsupportedAppUsage private static Context createPresentationContext( - Context outerContext, Display display, int theme, @WindowType int type) { + Context outerContext, Display display, int theme) { if (outerContext == null) { throw new IllegalArgumentException("outerContext must not be null"); } @@ -323,15 +318,31 @@ public class Presentation extends Dialog { throw new IllegalArgumentException("display must not be null"); } - Context windowContext = outerContext.createDisplayContext(display) - .createWindowContext(getWindowType(type, display), null /* options */); + Context displayContext = outerContext.createDisplayContext(display); if (theme == 0) { TypedValue outValue = new TypedValue(); - windowContext.getTheme().resolveAttribute( + displayContext.getTheme().resolveAttribute( com.android.internal.R.attr.presentationTheme, outValue, true); theme = outValue.resourceId; } - return new ContextThemeWrapper(windowContext, theme); + + // Derive the display's window manager from the outer window manager. + // We do this because the outer window manager have some extra information + // such as the parent window, which is important if the presentation uses + // an application window type. + final WindowManagerImpl outerWindowManager = + (WindowManagerImpl)outerContext.getSystemService(WINDOW_SERVICE); + final WindowManagerImpl displayWindowManager = + outerWindowManager.createPresentationWindowManager(displayContext); + return new ContextThemeWrapper(displayContext, theme) { + @Override + public Object getSystemService(String name) { + if (WINDOW_SERVICE.equals(name)) { + return displayWindowManager; + } + return super.getSystemService(name); + } + }; } private final DisplayListener mDisplayListener = new DisplayListener() { @@ -353,4 +364,15 @@ public class Presentation extends Dialog { } } }; + + private final Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_CANCEL: + cancel(); + break; + } + } + }; } diff --git a/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java b/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java index 01cf311f63b1a..0f6284d22d106 100644 --- a/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java +++ b/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java @@ -362,12 +362,14 @@ public class VirtualDisplayTest extends AndroidTestCase { private final class TestPresentation extends Presentation { private final int mColor; + private final int mWindowType; private final int mWindowFlags; public TestPresentation(Context context, Display display, int color, int windowType, int windowFlags) { - super(context, display, 0 /* theme */, windowType); + super(context, display); mColor = color; + mWindowType = windowType; mWindowFlags = windowFlags; } @@ -376,6 +378,7 @@ public class VirtualDisplayTest extends AndroidTestCase { super.onCreate(savedInstanceState); setTitle(TAG); + getWindow().setType(mWindowType); getWindow().addFlags(mWindowFlags); // Create a solid color image to use as the content of the presentation. diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java index 901a7360f311d..36d5543f1c01c 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java @@ -20,7 +20,7 @@ import static android.view.Display.DEFAULT_DISPLAY; import android.app.Presentation; import android.content.Context; import android.graphics.Color; -import android.graphics.Rect; +import android.graphics.Point; import android.hardware.display.DisplayManager; import android.media.MediaRouter; import android.media.MediaRouter.RouteInfo; @@ -127,7 +127,7 @@ public class KeyguardDisplayManager { Presentation presentation = mPresentations.get(displayId); if (presentation == null) { final Presentation newPresentation = new KeyguardPresentation(mContext, display, - mKeyguardStatusViewComponentFactory); + mKeyguardStatusViewComponentFactory, LayoutInflater.from(mContext)); newPresentation.setOnDismissListener(dialog -> { if (newPresentation.equals(mPresentations.get(displayId))) { mPresentations.remove(displayId); @@ -245,6 +245,7 @@ public class KeyguardDisplayManager { private static final int VIDEO_SAFE_REGION = 80; // Percentage of display width & height private static final int MOVE_CLOCK_TIMEOUT = 10000; // 10s private final KeyguardStatusViewComponent.Factory mKeyguardStatusViewComponentFactory; + private final LayoutInflater mLayoutInflater; private KeyguardClockSwitchController mKeyguardClockSwitchController; private View mClock; private int mUsableWidth; @@ -263,16 +264,18 @@ public class KeyguardDisplayManager { }; KeyguardPresentation(Context context, Display display, - KeyguardStatusViewComponent.Factory keyguardStatusViewComponentFactory) { - super(context, display, R.style.Theme_SystemUI_KeyguardPresentation, - WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); + KeyguardStatusViewComponent.Factory keyguardStatusViewComponentFactory, + LayoutInflater layoutInflater) { + super(context, display, R.style.Theme_SystemUI_KeyguardPresentation); mKeyguardStatusViewComponentFactory = keyguardStatusViewComponentFactory; + mLayoutInflater = layoutInflater; + getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); setCancelable(false); } @Override public void cancel() { - // Do not allow anything to cancel KeyguardPresentation except KeyguardDisplayManager. + // Do not allow anything to cancel KeyguardPresetation except KeyguardDisplayManager. } @Override @@ -284,15 +287,14 @@ public class KeyguardDisplayManager { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - final Rect bounds = getWindow().getWindowManager().getMaximumWindowMetrics() - .getBounds(); - mUsableWidth = VIDEO_SAFE_REGION * bounds.width() / 100; - mUsableHeight = VIDEO_SAFE_REGION * bounds.height() / 100; - mMarginLeft = (100 - VIDEO_SAFE_REGION) * bounds.width() / 200; - mMarginTop = (100 - VIDEO_SAFE_REGION) * bounds.height() / 200; + Point p = new Point(); + getDisplay().getSize(p); + mUsableWidth = VIDEO_SAFE_REGION * p.x/100; + mUsableHeight = VIDEO_SAFE_REGION * p.y/100; + mMarginLeft = (100 - VIDEO_SAFE_REGION) * p.x / 200; + mMarginTop = (100 - VIDEO_SAFE_REGION) * p.y / 200; - setContentView(LayoutInflater.from(getContext()) - .inflate(R.layout.keyguard_presentation, null)); + setContentView(mLayoutInflater.inflate(R.layout.keyguard_presentation, null)); // Logic to make the lock screen fullscreen getWindow().getDecorView().setSystemUiVisibility( diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java index 62906f3656c7f..ae159c73b99fd 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java @@ -20,11 +20,9 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import android.content.Context; -import android.hardware.display.DisplayManager; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.util.AttributeSet; -import android.view.Display; import android.view.LayoutInflater; import android.view.View; @@ -106,10 +104,9 @@ public class KeyguardPresentationTest extends SysuiTestCase { @Test public void testInflation_doesntCrash() { - final Display display = mContext.getSystemService(DisplayManager.class).getDisplay( - Display.DEFAULT_DISPLAY); - KeyguardPresentation keyguardPresentation = new KeyguardPresentation(mContext, display, - mKeyguardStatusViewComponentFactory); + KeyguardPresentation keyguardPresentation = new KeyguardPresentation(mContext, + mContext.getDisplayNoVerify(), mKeyguardStatusViewComponentFactory, + mLayoutInflater); keyguardPresentation.onCreate(null /*savedInstanceState */); } } From b00f5794dc856044ab691e37ca324f7a670d860a Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Mon, 19 Oct 2020 17:40:45 +0000 Subject: [PATCH 038/192] Revert "Migrate Presentation to WindowContext" Revert "Test that presentation not dismiss after display resize" Revert submission 12501006-presentation_window_context Reason for revert: Bug: 171027173 and Bug: 171064994 Reverted Changes: Ib5c4a33ee:Migrate Presentation to WindowContext I61a9eddd7:Test that presentation not dismiss after display r... Change-Id: Iabfdcead0b5a18139a58c79faccd0d19840e1362 (cherry picked from commit 6a7f6a3f02fb225c082c55f90485630def033e9f) --- core/java/android/app/Presentation.java | 140 ++++++++++-------- .../hardware/display/VirtualDisplayTest.java | 5 +- .../keyguard/KeyguardDisplayManager.java | 30 ++-- .../keyguard/KeyguardPresentationTest.java | 9 +- 4 files changed, 104 insertions(+), 80 deletions(-) diff --git a/core/java/android/app/Presentation.java b/core/java/android/app/Presentation.java index ad903642c908f..7a18b8120d7ec 100644 --- a/core/java/android/app/Presentation.java +++ b/core/java/android/app/Presentation.java @@ -16,28 +16,30 @@ package android.app; -import static android.view.WindowManager.LayoutParams.INVALID_WINDOW_TYPE; +import static android.content.Context.DISPLAY_SERVICE; +import static android.content.Context.WINDOW_SERVICE; import static android.view.WindowManager.LayoutParams.TYPE_PRESENTATION; import static android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION; -import android.annotation.NonNull; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; import android.content.res.Resources; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager.DisplayListener; -import android.os.Build; +import android.os.Binder; import android.os.Handler; -import android.os.Looper; +import android.os.IBinder; +import android.os.Message; +import android.util.DisplayMetrics; +import android.util.Log; import android.util.TypedValue; import android.view.ContextThemeWrapper; import android.view.Display; import android.view.Gravity; import android.view.Window; import android.view.WindowManager; -import android.view.WindowManager.LayoutParams.WindowType; +import android.view.WindowManagerImpl; -import com.android.internal.util.Preconditions; /** * Base class for presentations. *

@@ -151,10 +153,11 @@ import com.android.internal.util.Preconditions; public class Presentation extends Dialog { private static final String TAG = "Presentation"; + private static final int MSG_CANCEL = 1; + private final Display mDisplay; private final DisplayManager mDisplayManager; - private final Handler mHandler = new Handler(Preconditions.checkNotNull(Looper.myLooper(), - "Presentation must be constructed on a looper thread.")); + private final IBinder mToken = new Binder(); /** * Creates a new presentation that is attached to the specified display @@ -176,11 +179,6 @@ public class Presentation extends Dialog { * @param outerContext The context of the application that is showing the presentation. * The presentation will create its own context (see {@link #getContext()}) based * on this context and information about the associated display. - * From {@link android.os.Build.VERSION_CODES#S}, the presentation will create its own window - * context based on this context, information about the associated display. Customizing window - * type by {@link Window#setType(int) #getWindow#setType(int)} causes the mismatch of the window - * and the created window context, which leads to - * {@link android.view.WindowManager.InvalidDisplayException} when invoking {@link #show()}. * @param display The display to which the presentation should be attached. * @param theme A style resource describing the theme to use for the window. * See @@ -189,53 +187,24 @@ public class Presentation extends Dialog { * outerContext. If 0, the default presentation theme will be used. */ public Presentation(Context outerContext, Display display, int theme) { - this(outerContext, display, theme, INVALID_WINDOW_TYPE); - } - - /** - * Creates a new presentation that is attached to the specified display - * using the optionally specified theme, and override the default window type for the - * presentation. - * @param outerContext The context of the application that is showing the presentation. - * The presentation will create its own context (see {@link #getContext()}) based - * on this context and information about the associated display. - * From {@link android.os.Build.VERSION_CODES#S}, the presentation will create its own window - * context based on this context, information about the associated display and the window type. - * If the window type is not specified, the presentation will choose the default type for the - * presentation. - * @param display The display to which the presentation should be attached. - * @param theme A style resource describing the theme to use for the window. - * See - * Style and Theme Resources for more information about defining and using - * styles. This theme is applied on top of the current theme in - * outerContext. If 0, the default presentation theme will be used. - * @param type Window type. - * - * @hide - */ - public Presentation(@NonNull Context outerContext, @NonNull Display display, int theme, - @WindowType int type) { - super(createPresentationContext(outerContext, display, theme, type), theme, false); + super(createPresentationContext(outerContext, display, theme), theme, false); mDisplay = display; - mDisplayManager = getContext().getSystemService(DisplayManager.class); + mDisplayManager = (DisplayManager)getContext().getSystemService(DISPLAY_SERVICE); + + final int windowType = + (display.getFlags() & Display.FLAG_PRIVATE) != 0 ? TYPE_PRIVATE_PRESENTATION + : TYPE_PRESENTATION; final Window w = getWindow(); final WindowManager.LayoutParams attr = w.getAttributes(); + attr.token = mToken; w.setAttributes(attr); w.setGravity(Gravity.FILL); - w.setType(getWindowType(type, display)); + w.setType(windowType); setCanceledOnTouchOutside(false); } - private static @WindowType int getWindowType(@WindowType int type, @NonNull Display display) { - if (type != INVALID_WINDOW_TYPE) { - return type; - } - return (display.getFlags() & Display.FLAG_PRIVATE) != 0 ? TYPE_PRIVATE_PRESENTATION - : TYPE_PRESENTATION; - } - /** * Gets the {@link Display} that this presentation appears on. * @@ -260,6 +229,16 @@ public class Presentation extends Dialog { protected void onStart() { super.onStart(); mDisplayManager.registerDisplayListener(mDisplayListener, mHandler); + + // Since we were not watching for display changes until just now, there is a + // chance that the display metrics have changed. If so, we will need to + // dismiss the presentation immediately. This case is expected + // to be rare but surprising, so we'll write a log message about it. + if (!isConfigurationStillValid()) { + Log.i(TAG, "Presentation is being dismissed because the " + + "display metrics have changed since it was created."); + mHandler.sendEmptyMessage(MSG_CANCEL); + } } @Override @@ -294,6 +273,10 @@ public class Presentation extends Dialog { * Called by the system when the properties of the {@link Display} to which * the presentation is attached have changed. * + * If the display metrics have changed (for example, if the display has been + * resized or rotated), then the system automatically calls + * {@link #cancel} to dismiss the presentation. + * * @see #getDisplay */ public void onDisplayChanged() { @@ -306,16 +289,28 @@ public class Presentation extends Dialog { private void handleDisplayChanged() { onDisplayChanged(); + + // We currently do not support configuration changes for presentations + // (although we could add that feature with a bit more work). + // If the display metrics have changed in any way then the current configuration + // is invalid and the application must recreate the presentation to get + // a new context. + if (!isConfigurationStillValid()) { + Log.i(TAG, "Presentation is being dismissed because the " + + "display metrics have changed since it was created."); + cancel(); + } } - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, publicAlternatives = "{@code N/A}") - private static Context createPresentationContext(Context outerContext, Display display, - int theme) { - return createPresentationContext(outerContext, display, theme, INVALID_WINDOW_TYPE); + private boolean isConfigurationStillValid() { + DisplayMetrics dm = new DisplayMetrics(); + mDisplay.getMetrics(dm); + return dm.equalsPhysical(getResources().getDisplayMetrics()); } + @UnsupportedAppUsage private static Context createPresentationContext( - Context outerContext, Display display, int theme, @WindowType int type) { + Context outerContext, Display display, int theme) { if (outerContext == null) { throw new IllegalArgumentException("outerContext must not be null"); } @@ -323,15 +318,31 @@ public class Presentation extends Dialog { throw new IllegalArgumentException("display must not be null"); } - Context windowContext = outerContext.createDisplayContext(display) - .createWindowContext(getWindowType(type, display), null /* options */); + Context displayContext = outerContext.createDisplayContext(display); if (theme == 0) { TypedValue outValue = new TypedValue(); - windowContext.getTheme().resolveAttribute( + displayContext.getTheme().resolveAttribute( com.android.internal.R.attr.presentationTheme, outValue, true); theme = outValue.resourceId; } - return new ContextThemeWrapper(windowContext, theme); + + // Derive the display's window manager from the outer window manager. + // We do this because the outer window manager have some extra information + // such as the parent window, which is important if the presentation uses + // an application window type. + final WindowManagerImpl outerWindowManager = + (WindowManagerImpl)outerContext.getSystemService(WINDOW_SERVICE); + final WindowManagerImpl displayWindowManager = + outerWindowManager.createPresentationWindowManager(displayContext); + return new ContextThemeWrapper(displayContext, theme) { + @Override + public Object getSystemService(String name) { + if (WINDOW_SERVICE.equals(name)) { + return displayWindowManager; + } + return super.getSystemService(name); + } + }; } private final DisplayListener mDisplayListener = new DisplayListener() { @@ -353,4 +364,15 @@ public class Presentation extends Dialog { } } }; + + private final Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_CANCEL: + cancel(); + break; + } + } + }; } diff --git a/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java b/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java index 01cf311f63b1a..0f6284d22d106 100644 --- a/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java +++ b/core/tests/coretests/src/android/hardware/display/VirtualDisplayTest.java @@ -362,12 +362,14 @@ public class VirtualDisplayTest extends AndroidTestCase { private final class TestPresentation extends Presentation { private final int mColor; + private final int mWindowType; private final int mWindowFlags; public TestPresentation(Context context, Display display, int color, int windowType, int windowFlags) { - super(context, display, 0 /* theme */, windowType); + super(context, display); mColor = color; + mWindowType = windowType; mWindowFlags = windowFlags; } @@ -376,6 +378,7 @@ public class VirtualDisplayTest extends AndroidTestCase { super.onCreate(savedInstanceState); setTitle(TAG); + getWindow().setType(mWindowType); getWindow().addFlags(mWindowFlags); // Create a solid color image to use as the content of the presentation. diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java index 901a7360f311d..36d5543f1c01c 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java @@ -20,7 +20,7 @@ import static android.view.Display.DEFAULT_DISPLAY; import android.app.Presentation; import android.content.Context; import android.graphics.Color; -import android.graphics.Rect; +import android.graphics.Point; import android.hardware.display.DisplayManager; import android.media.MediaRouter; import android.media.MediaRouter.RouteInfo; @@ -127,7 +127,7 @@ public class KeyguardDisplayManager { Presentation presentation = mPresentations.get(displayId); if (presentation == null) { final Presentation newPresentation = new KeyguardPresentation(mContext, display, - mKeyguardStatusViewComponentFactory); + mKeyguardStatusViewComponentFactory, LayoutInflater.from(mContext)); newPresentation.setOnDismissListener(dialog -> { if (newPresentation.equals(mPresentations.get(displayId))) { mPresentations.remove(displayId); @@ -245,6 +245,7 @@ public class KeyguardDisplayManager { private static final int VIDEO_SAFE_REGION = 80; // Percentage of display width & height private static final int MOVE_CLOCK_TIMEOUT = 10000; // 10s private final KeyguardStatusViewComponent.Factory mKeyguardStatusViewComponentFactory; + private final LayoutInflater mLayoutInflater; private KeyguardClockSwitchController mKeyguardClockSwitchController; private View mClock; private int mUsableWidth; @@ -263,16 +264,18 @@ public class KeyguardDisplayManager { }; KeyguardPresentation(Context context, Display display, - KeyguardStatusViewComponent.Factory keyguardStatusViewComponentFactory) { - super(context, display, R.style.Theme_SystemUI_KeyguardPresentation, - WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); + KeyguardStatusViewComponent.Factory keyguardStatusViewComponentFactory, + LayoutInflater layoutInflater) { + super(context, display, R.style.Theme_SystemUI_KeyguardPresentation); mKeyguardStatusViewComponentFactory = keyguardStatusViewComponentFactory; + mLayoutInflater = layoutInflater; + getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); setCancelable(false); } @Override public void cancel() { - // Do not allow anything to cancel KeyguardPresentation except KeyguardDisplayManager. + // Do not allow anything to cancel KeyguardPresetation except KeyguardDisplayManager. } @Override @@ -284,15 +287,14 @@ public class KeyguardDisplayManager { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - final Rect bounds = getWindow().getWindowManager().getMaximumWindowMetrics() - .getBounds(); - mUsableWidth = VIDEO_SAFE_REGION * bounds.width() / 100; - mUsableHeight = VIDEO_SAFE_REGION * bounds.height() / 100; - mMarginLeft = (100 - VIDEO_SAFE_REGION) * bounds.width() / 200; - mMarginTop = (100 - VIDEO_SAFE_REGION) * bounds.height() / 200; + Point p = new Point(); + getDisplay().getSize(p); + mUsableWidth = VIDEO_SAFE_REGION * p.x/100; + mUsableHeight = VIDEO_SAFE_REGION * p.y/100; + mMarginLeft = (100 - VIDEO_SAFE_REGION) * p.x / 200; + mMarginTop = (100 - VIDEO_SAFE_REGION) * p.y / 200; - setContentView(LayoutInflater.from(getContext()) - .inflate(R.layout.keyguard_presentation, null)); + setContentView(mLayoutInflater.inflate(R.layout.keyguard_presentation, null)); // Logic to make the lock screen fullscreen getWindow().getDecorView().setSystemUiVisibility( diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java index 62906f3656c7f..ae159c73b99fd 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardPresentationTest.java @@ -20,11 +20,9 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; import android.content.Context; -import android.hardware.display.DisplayManager; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.util.AttributeSet; -import android.view.Display; import android.view.LayoutInflater; import android.view.View; @@ -106,10 +104,9 @@ public class KeyguardPresentationTest extends SysuiTestCase { @Test public void testInflation_doesntCrash() { - final Display display = mContext.getSystemService(DisplayManager.class).getDisplay( - Display.DEFAULT_DISPLAY); - KeyguardPresentation keyguardPresentation = new KeyguardPresentation(mContext, display, - mKeyguardStatusViewComponentFactory); + KeyguardPresentation keyguardPresentation = new KeyguardPresentation(mContext, + mContext.getDisplayNoVerify(), mKeyguardStatusViewComponentFactory, + mLayoutInflater); keyguardPresentation.onCreate(null /*savedInstanceState */); } } From 8cd213af645d381a4aadc3e11d02a486bfaefac8 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Tue, 20 Oct 2020 09:18:35 -0700 Subject: [PATCH 039/192] Disable initializing wm component for non-primary sysui process Bug: 171278064 Test: Create another user and switch to/from the new user Change-Id: If399fb6a8d36617abc4e900902dd5dd5269ddb8c (cherry picked from commit 67df94588db8bd27bdcea94747ed6949c7586fbf) --- .../src/com/android/systemui/SystemUIFactory.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java index 4814501c840d4..bdd0b55b27ea3 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java @@ -85,10 +85,12 @@ public class SystemUIFactory { @VisibleForTesting public void init(Context context, boolean fromTest) throws ExecutionException, InterruptedException { + final boolean initializeComponents = !fromTest + && android.os.Process.myUserHandle().isSystem(); mRootComponent = buildGlobalRootComponent(context); // Stand up WMComponent mWMComponent = mRootComponent.getWMComponentBuilder().build(); - if (!fromTest) { + if (initializeComponents) { // Only initialize when not starting from tests since this currently initializes some // components that shouldn't be run in the test environment mWMComponent.init(); @@ -96,7 +98,7 @@ public class SystemUIFactory { // And finally, retrieve whatever SysUI needs from WMShell and build SysUI. SysUIComponent.Builder builder = mRootComponent.getSysUIComponent(); - if (!fromTest) { + if (initializeComponents) { // Only initialize when not starting from tests since this currently initializes some // components that shouldn't be run in the test environment builder = builder.setPip(mWMComponent.getPip()) @@ -111,7 +113,7 @@ public class SystemUIFactory { .setInputConsumerController(mWMComponent.getInputConsumerController()) .setShellTaskOrganizer(mWMComponent.getShellTaskOrganizer()) .build(); - if (!fromTest) { + if (initializeComponents) { mSysUIComponent.init(); } From b2def0f1b8c3975b21efc67314a3b49e33e4abc4 Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Tue, 20 Oct 2020 15:37:24 +0800 Subject: [PATCH 040/192] Fix bind service failure on Android Auto The failure is because ActiveServices thought window context's token is an Activity token but could not find the corresponding ActivityRecord in ATMS and then early-returned. This issue was exposed because of Presentation's window context migration. This CL relaxed the condition to early return only if the token is neither an Activity token nor a WindowContext token. Bug: 171280916 Bug: 171027173 Bug: 170960206 Test: Tests mentioned in b/170960206#comment1 Test: manual - use auto desktop mode to launch Music/Maps Test: atest WindowContextTests#testWindowContextBindService Change-Id: I313d3d870caa28e02af035b4a6032d649f81a510 (cherry picked from commit 8005b00b75619bc0d5c7c7590dd3681625ef50dd) --- services/core/java/com/android/server/am/ActiveServices.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 31712becec05b..6e5c0412985cf 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -1940,7 +1940,9 @@ public final class ActiveServices { ActivityServiceConnectionsHolder activity = null; if (token != null) { activity = mAm.mAtmInternal.getServiceConnectionsHolder(token); - if (activity == null) { + // TODO(b/171280916): Remove the check after we have another API get window context + // token than getActivityToken. + if (activity == null && !mAm.mWindowManager.isWindowToken(token)) { Slog.w(TAG, "Binding with unknown activity: " + token); return 0; } From 684a7c553e84a622db578a887bdbbd7612881277 Mon Sep 17 00:00:00 2001 From: Jeff DeCew Date: Thu, 22 Oct 2020 12:29:40 -0400 Subject: [PATCH 041/192] Fix NPE in NotificationRow Fixes: 171461675 Test: SystemUITests Change-Id: Iff04960d33f12abd203daa2ce519ba2ccae84f01 (cherry picked from commit b851fee8577246eb9246d5c7476d98de59a16f8a) --- .../statusbar/notification/row/ExpandableNotificationRow.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java index f788dfe47a610..3f13306b7cf20 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java @@ -2856,7 +2856,8 @@ public class ExpandableNotificationRow extends ActivatableNotificationView } float x = event.getX(); float y = event.getY(); - NotificationHeaderView header = getVisibleNotificationViewWrapper().getNotificationHeader(); + NotificationViewWrapper wrapper = getVisibleNotificationViewWrapper(); + NotificationHeaderView header = wrapper == null ? null : wrapper.getNotificationHeader(); if (header != null && header.isInTouchRect(x - getTranslation(), y)) { return true; } From c07cfcd3a18e80cd8e3c2bed551a17c86a8bce64 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Mon, 26 Oct 2020 09:17:45 -0400 Subject: [PATCH 042/192] Use proper size for indexing We are indexing over mRecords, so use its size to determine index limit in the layouts used in QuickQSPanel The issue is introduced in the refactor of QS as the tiles are now set in QSPanelControllerBase#switchTileLayout, after the switch is completed. Test: manual, dismiss media while in landscape Fixes: 171628022 Change-Id: I5f0caf73f7637ea8308d8795b0a60825025d6c5b (cherry picked from commit 1696ace37c58d93319f871e0e4e97b1ef5a75ed6) --- .../src/com/android/systemui/qs/DoubleLineTileLayout.kt | 2 +- .../SystemUI/src/com/android/systemui/qs/QSPanel.java | 9 ++++++++- .../com/android/systemui/qs/QSPanelControllerBase.java | 1 + .../src/com/android/systemui/qs/QuickQSPanel.java | 3 ++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/DoubleLineTileLayout.kt b/packages/SystemUI/src/com/android/systemui/qs/DoubleLineTileLayout.kt index 81076475c5ce1..6ac1e7079531a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/DoubleLineTileLayout.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/DoubleLineTileLayout.kt @@ -99,7 +99,7 @@ class DoubleLineTileLayout( } } - override fun getNumVisibleTiles() = tilesToShow + override fun getNumVisibleTiles() = Math.min(mRecords.size, tilesToShow) override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 1b17a2a277f2f..76f244652cd9c 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -480,7 +480,6 @@ public class QSPanel extends LinearLayout implements Tunable, BrightnessMirrorLi } } mTileLayout = newLayout; - newLayout.setListening(mListening); if (needsDynamicRowsAndColumns()) { newLayout.setMinRows(horizontal ? 2 : 1); // Let's use 3 columns to match the current layout @@ -498,6 +497,14 @@ public class QSPanel extends LinearLayout implements Tunable, BrightnessMirrorLi return false; } + /** + * Sets the listening state of the current layout to the state of the view. Used after + * switching layouts. + */ + public void reSetLayoutListening() { + mTileLayout.setListening(mListening); + } + private void updateHorizontalLinearLayoutMargins() { if (mHorizontalLinearLayout != null && !displayMediaMarginsOnMedia()) { LayoutParams lp = (LayoutParams) mHorizontalLinearLayout.getLayoutParams(); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index fe92827806c6e..68a6cdcbd2899 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -214,6 +214,7 @@ public abstract class QSPanelControllerBase extends ViewContr boolean switchTileLayout(boolean force) { if (mView.switchTileLayout(force, mRecords)) { setTiles(); + mView.reSetLayoutListening(); return true; } return false; diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java index 84a5b6f0538d9..ed0900d07b561 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java @@ -336,7 +336,7 @@ public class QuickQSPanel extends QSPanel { @Override public int getNumVisibleTiles() { - return mColumns; + return Math.min(mRecords.size(), mColumns); } @Override @@ -353,6 +353,7 @@ public class QuickQSPanel extends QSPanel { boolean startedListening = !mListening && listening; super.setListening(listening); if (startedListening) { + // getNumVisibleTiles() <= mRecords.size() for (int i = 0; i < getNumVisibleTiles(); i++) { QSTile tile = mRecords.get(i).tile; mUiEventLogger.logWithInstanceId(QSEvent.QQS_TILE_VISIBLE, 0, From fa11f1515ecbe6c78fd834f3f6667edba7e09f57 Mon Sep 17 00:00:00 2001 From: Corina Date: Thu, 29 Oct 2020 16:12:09 +0000 Subject: [PATCH 043/192] Disable ENABLE_DYNAMIC_PERMISSIONS flag for now to avoid crashes. Added TODO to enable this based on MediaProvider version (it needs a media provider version which includes as certain change.) Bug: 171491982 Test: TODO Change-Id: I717251f351a65255ff73bf782e4f2fce3a67328f (cherry picked from commit ebdd972722ff985dd497e9b8589685da1cacb0d0) --- .../android/server/uri/UriGrantsManagerService.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java index f6acc64bdaa0e..c950188391f65 100644 --- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java +++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java @@ -991,7 +991,9 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { // If this provider says that grants are always required, we need to // consult it directly to determine if the UID has permission final boolean forceMet; - if (ENABLE_DYNAMIC_PERMISSIONS && pi.forceUriPermissions) { + if (ENABLE_DYNAMIC_PERMISSIONS + && pi.forceUriPermissions + && isDynamicPermissionEnabledInMP()) { final int providerUserId = UserHandle.getUserId(pi.applicationInfo.uid); final int clientUserId = UserHandle.getUserId(uid); if (providerUserId == clientUserId) { @@ -1009,6 +1011,15 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub { return readMet && writeMet && forceMet; } + /** + * Returns true if the available MediaProvider version contains the changes that enable dynamic + * permission. + */ + private boolean isDynamicPermissionEnabledInMP() { + // TODO(b/159995598) Check MediaProvider version. + return false; + } + @GuardedBy("mLock") private void removeUriPermissionIfNeededLocked(UriPermission perm) { if (perm.modeFlags != 0) { From f65442ab99c6393b60e2e42945a13b8b2ea8fbdf Mon Sep 17 00:00:00 2001 From: Nicholas Ambur Date: Mon, 16 Nov 2020 17:47:32 -0800 Subject: [PATCH 044/192] fix SoundTrigger overwriting session identity SoundTrigger tracks client UID for every session. This CL fixes an issue with client UID being saved twice causing the incorrect client UID to be saved. Bug: 171342256 Test: boot and verify hotword is functional Change-Id: I68bba238293ed5a74f5a3677f21e5122cc444f82 (cherry picked from commit e835b9847e7ceb71b8181f3af9d2f7f5c6db652d) --- .../soundtrigger/SoundTriggerInternal.java | 7 +------ .../soundtrigger/SoundTriggerService.java | 18 ++---------------- .../VoiceInteractionManagerService.java | 3 +-- 3 files changed, 4 insertions(+), 24 deletions(-) diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java index a976257a9ad17..7cec783fb7c05 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerInternal.java @@ -47,12 +47,7 @@ public interface SoundTriggerInternal { int STATUS_ERROR = SoundTrigger.STATUS_ERROR; int STATUS_OK = SoundTrigger.STATUS_OK; - Session attachAsOriginator(@NonNull Identity originatorIdentity, - @NonNull IBinder client); - - Session attachAsMiddleman(@NonNull Identity middlemanIdentity, - @NonNull Identity originatorIdentity, - @NonNull IBinder client); + Session attach(@NonNull IBinder client); /** * Dumps service-wide information. diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java index 6c9f41c102b3d..2a5bfce9bb331 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java @@ -1545,22 +1545,8 @@ public class SoundTriggerService extends SystemService { } @Override - public Session attachAsOriginator(@NonNull Identity originatorIdentity, - @NonNull IBinder client) { - try (SafeCloseable ignored = PermissionUtil.establishIdentityDirect( - originatorIdentity)) { - return new SessionImpl(newSoundTriggerHelper(), client); - } - } - - @Override - public Session attachAsMiddleman(@NonNull Identity middlemanIdentity, - @NonNull Identity originatorIdentity, - @NonNull IBinder client) { - try (SafeCloseable ignored = PermissionUtil.establishIdentityIndirect(mContext, - SOUNDTRIGGER_DELEGATE_IDENTITY, middlemanIdentity, originatorIdentity)) { - return new SessionImpl(newSoundTriggerHelper(), client); - } + public Session attach(@NonNull IBinder client) { + return new SessionImpl(newSoundTriggerHelper(), client); } @Override diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 2bcf3b55af1e6..657a7dd84bdfd 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -262,8 +262,7 @@ public class VoiceInteractionManagerService extends SystemService { try (SafeCloseable ignored = PermissionUtil.establishIdentityDirect( originatorIdentity)) { SoundTriggerSession session = new SoundTriggerSession( - mSoundTriggerInternal.attachAsOriginator(IdentityContext.getNonNull(), - client)); + mSoundTriggerInternal.attach(client)); synchronized (mSessions) { mSessions.add(new WeakReference<>(session)); } From 30e70b6b3a7ba207a9d2fd4de4529b04c220c5c4 Mon Sep 17 00:00:00 2001 From: Eran Messeri Date: Tue, 17 Nov 2020 14:05:20 +0000 Subject: [PATCH 045/192] DPMS: Fix access control check for password sufficiency Fix access control check for isActivePasswordSufficient, such that the DPC can call it on the parent profile DPM instance. In Change-Id: I97ca0d40a01673939e64c23f357fc38ca5427a8f an additional access control check was imposed as a result of a refactoring. That check required the caller to hold the cross-user permission (which is a system-privileged permission) to check password sufficiency. This is fixed by introducing an uchecked internal variant of the method for getting password metrics, since caller authorization is checked prior to calling it. Bug: 173484959 Bug: 173483046 Test: atest com.android.cts.devicepolicy.ManagedProfileTest#testDevicePolicyManagerParentSupport Test: Manual, created a work profile with a google.com account. Change-Id: Id23a8d9e70c1b438fc12cb3ea408273964dde97b (cherry picked from commit 7672301be44a2820683098e91998b93c56e2e45a) --- .../devicepolicy/DevicePolicyManagerService.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index e8861c4dda8ed..20b6b6d135d59 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -4152,14 +4152,18 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { public PasswordMetrics getPasswordMinimumMetrics(@UserIdInt int userHandle) { final CallerIdentity caller = getCallerIdentity(); Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle)); + return getPasswordMinimumMetricsUnchecked(userHandle); + } + + private PasswordMetrics getPasswordMinimumMetricsUnchecked(@UserIdInt int userId) { if (!mHasFeature) { new PasswordMetrics(CREDENTIAL_TYPE_NONE); } - Preconditions.checkArgumentNonnegative(userHandle, "Invalid userId"); + Preconditions.checkArgumentNonnegative(userId, "Invalid userId"); ArrayList adminMetrics = new ArrayList<>(); synchronized (getLockObject()) { - List admins = getActiveAdminsForLockscreenPoliciesLocked(userHandle); + List admins = getActiveAdminsForLockscreenPoliciesLocked(userId); for (ActiveAdmin admin : admins) { adminMetrics.add(admin.mPasswordPolicy.getMinMetrics()); } @@ -4293,7 +4297,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { private boolean isPasswordSufficientForUserWithoutCheckpointLocked( @NonNull PasswordMetrics metrics, @UserIdInt int userId) { final int complexity = getEffectivePasswordComplexityRequirementLocked(userId); - PasswordMetrics minMetrics = getPasswordMinimumMetrics(userId); + PasswordMetrics minMetrics = getPasswordMinimumMetricsUnchecked(userId); final List passwordValidationErrors = PasswordMetrics.validatePasswordMetrics( minMetrics, complexity, false, metrics); @@ -4583,7 +4587,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final int callingUid = caller.getUid(); final int userHandle = UserHandle.getUserId(callingUid); synchronized (getLockObject()) { - final PasswordMetrics minMetrics = getPasswordMinimumMetrics(userHandle); + final PasswordMetrics minMetrics = getPasswordMinimumMetricsUnchecked(userHandle); final List validationErrors; final int complexity = getEffectivePasswordComplexityRequirementLocked(userHandle); // TODO: Consider changing validation API to take LockscreenCredential. From 56852f7a964cc8873981330f842bea8a9d9cad47 Mon Sep 17 00:00:00 2001 From: Adam Seaton Date: Mon, 16 Nov 2020 11:05:40 -0800 Subject: [PATCH 046/192] Update apex_manifest to 309999900 for statsd Bug: 172689934 Change-Id: Ib99489e997e9fa425164224c1e729bd2bf9496d6 (cherry picked from commit 72dcec687634ed74ad26a754649e5170e4992e15) --- apex/statsd/apex_manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apex/statsd/apex_manifest.json b/apex/statsd/apex_manifest.json index e2972e7008803..1d029c61b4bf2 100644 --- a/apex/statsd/apex_manifest.json +++ b/apex/statsd/apex_manifest.json @@ -1,5 +1,5 @@ { "name": "com.android.os.statsd", - "version": 300000000 + "version": 309999900 } From f50e4d6d44a375dd125e3143e1a822bfe91107d0 Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Mon, 30 Nov 2020 07:36:55 +0000 Subject: [PATCH 047/192] Revert "Keystore SPI: Initialize KeymasterDefs contants with AIDL generated enums" This reverts commit 2a66fc61448d690991b92a952aa709d2a166b8ac. Reason for revert: b/174445211 Change-Id: I286327d8db19d50d3dd9602a2d0bd368d331c0c4 (cherry picked from commit efec091bcb01c0148dd48da6ef29d0d397ffa109) --- .../security/keymaster/KeymasterDefs.java | 425 +++++++----------- 1 file changed, 167 insertions(+), 258 deletions(-) diff --git a/core/java/android/security/keymaster/KeymasterDefs.java b/core/java/android/security/keymaster/KeymasterDefs.java index 6ef9e7e3d9b8a..18921639f55d1 100644 --- a/core/java/android/security/keymaster/KeymasterDefs.java +++ b/core/java/android/security/keymaster/KeymasterDefs.java @@ -16,19 +16,6 @@ package android.security.keymaster; -import android.hardware.keymint.Algorithm; -import android.hardware.keymint.BlockMode; -import android.hardware.keymint.Digest; -import android.hardware.keymint.ErrorCode; -import android.hardware.keymint.HardwareAuthenticatorType; -import android.hardware.keymint.KeyFormat; -import android.hardware.keymint.KeyOrigin; -import android.hardware.keymint.KeyPurpose; -import android.hardware.keymint.PaddingMode; -import android.hardware.keymint.SecurityLevel; -import android.hardware.keymint.Tag; -import android.hardware.keymint.TagType; - import java.util.HashMap; import java.util.Map; @@ -43,284 +30,206 @@ public final class KeymasterDefs { private KeymasterDefs() {} // Tag types. - public static final int KM_INVALID = TagType.INVALID; - public static final int KM_ENUM = TagType.ENUM; - public static final int KM_ENUM_REP = TagType.ENUM_REP; - public static final int KM_UINT = TagType.UINT; - public static final int KM_UINT_REP = TagType.UINT_REP; - public static final int KM_ULONG = TagType.ULONG; - public static final int KM_DATE = TagType.DATE; - public static final int KM_BOOL = TagType.BOOL; - public static final int KM_BIGNUM = TagType.BIGNUM; - public static final int KM_BYTES = TagType.BYTES; - public static final int KM_ULONG_REP = TagType.ULONG_REP; + public static final int KM_INVALID = 0 << 28; + public static final int KM_ENUM = 1 << 28; + public static final int KM_ENUM_REP = 2 << 28; + public static final int KM_UINT = 3 << 28; + public static final int KM_UINT_REP = 4 << 28; + public static final int KM_ULONG = 5 << 28; + public static final int KM_DATE = 6 << 28; + public static final int KM_BOOL = 7 << 28; + public static final int KM_BIGNUM = 8 << 28; + public static final int KM_BYTES = 9 << 28; + public static final int KM_ULONG_REP = 10 << 28; // Tag values. - public static final int KM_TAG_INVALID = Tag.INVALID; // KM_INVALID | 0; - public static final int KM_TAG_PURPOSE = Tag.PURPOSE; // KM_ENUM_REP | 1; - public static final int KM_TAG_ALGORITHM = Tag.ALGORITHM; // KM_ENUM | 2; - public static final int KM_TAG_KEY_SIZE = Tag.KEY_SIZE; // KM_UINT | 3; - public static final int KM_TAG_BLOCK_MODE = Tag.BLOCK_MODE; // KM_ENUM_REP | 4; - public static final int KM_TAG_DIGEST = Tag.DIGEST; // KM_ENUM_REP | 5; - public static final int KM_TAG_PADDING = Tag.PADDING; // KM_ENUM_REP | 6; - public static final int KM_TAG_CALLER_NONCE = Tag.CALLER_NONCE; // KM_BOOL | 7; - public static final int KM_TAG_MIN_MAC_LENGTH = Tag.MIN_MAC_LENGTH; // KM_UINT | 8; + public static final int KM_TAG_INVALID = KM_INVALID | 0; + public static final int KM_TAG_PURPOSE = KM_ENUM_REP | 1; + public static final int KM_TAG_ALGORITHM = KM_ENUM | 2; + public static final int KM_TAG_KEY_SIZE = KM_UINT | 3; + public static final int KM_TAG_BLOCK_MODE = KM_ENUM_REP | 4; + public static final int KM_TAG_DIGEST = KM_ENUM_REP | 5; + public static final int KM_TAG_PADDING = KM_ENUM_REP | 6; + public static final int KM_TAG_CALLER_NONCE = KM_BOOL | 7; + public static final int KM_TAG_MIN_MAC_LENGTH = KM_UINT | 8; - public static final int KM_TAG_BLOB_USAGE_REQUIREMENTS = - Tag.BLOB_USAGE_REQUIREMENTS; // KM_ENUM | 705; + public static final int KM_TAG_RESCOPING_ADD = KM_ENUM_REP | 101; + public static final int KM_TAG_RESCOPING_DEL = KM_ENUM_REP | 102; + public static final int KM_TAG_BLOB_USAGE_REQUIREMENTS = KM_ENUM | 705; - public static final int KM_TAG_RSA_PUBLIC_EXPONENT = Tag.RSA_PUBLIC_EXPONENT; // KM_ULONG | 200; - public static final int KM_TAG_INCLUDE_UNIQUE_ID = Tag.INCLUDE_UNIQUE_ID; // KM_BOOL | 202; + public static final int KM_TAG_RSA_PUBLIC_EXPONENT = KM_ULONG | 200; + public static final int KM_TAG_INCLUDE_UNIQUE_ID = KM_BOOL | 202; - public static final int KM_TAG_ACTIVE_DATETIME = Tag.ACTIVE_DATETIME; // KM_DATE | 400; - public static final int KM_TAG_ORIGINATION_EXPIRE_DATETIME = - Tag.ORIGINATION_EXPIRE_DATETIME; // KM_DATE | 401; - public static final int KM_TAG_USAGE_EXPIRE_DATETIME = - Tag.USAGE_EXPIRE_DATETIME; // KM_DATE | 402; - public static final int KM_TAG_MIN_SECONDS_BETWEEN_OPS = - Tag.MIN_SECONDS_BETWEEN_OPS; // KM_UINT | 403; - public static final int KM_TAG_MAX_USES_PER_BOOT = Tag.MAX_USES_PER_BOOT; // KM_UINT | 404; + public static final int KM_TAG_ACTIVE_DATETIME = KM_DATE | 400; + public static final int KM_TAG_ORIGINATION_EXPIRE_DATETIME = KM_DATE | 401; + public static final int KM_TAG_USAGE_EXPIRE_DATETIME = KM_DATE | 402; + public static final int KM_TAG_MIN_SECONDS_BETWEEN_OPS = KM_UINT | 403; + public static final int KM_TAG_MAX_USES_PER_BOOT = KM_UINT | 404; - public static final int KM_TAG_USER_ID = Tag.USER_ID; // KM_UINT | 501; - public static final int KM_TAG_USER_SECURE_ID = Tag.USER_SECURE_ID; // KM_ULONG_REP | 502; - public static final int KM_TAG_NO_AUTH_REQUIRED = Tag.NO_AUTH_REQUIRED; // KM_BOOL | 503; - public static final int KM_TAG_USER_AUTH_TYPE = Tag.USER_AUTH_TYPE; // KM_ENUM | 504; - public static final int KM_TAG_AUTH_TIMEOUT = Tag.AUTH_TIMEOUT; // KM_UINT | 505; - public static final int KM_TAG_ALLOW_WHILE_ON_BODY = Tag.ALLOW_WHILE_ON_BODY; // KM_BOOL | 506; - public static final int KM_TAG_TRUSTED_USER_PRESENCE_REQUIRED = - Tag.TRUSTED_USER_PRESENCE_REQUIRED; // KM_BOOL | 507; - public static final int KM_TAG_TRUSTED_CONFIRMATION_REQUIRED = - Tag.TRUSTED_CONFIRMATION_REQUIRED; // KM_BOOL | 508; - public static final int KM_TAG_UNLOCKED_DEVICE_REQUIRED = - Tag.UNLOCKED_DEVICE_REQUIRED; // KM_BOOL | 509; + public static final int KM_TAG_ALL_USERS = KM_BOOL | 500; + public static final int KM_TAG_USER_ID = KM_UINT | 501; + public static final int KM_TAG_USER_SECURE_ID = KM_ULONG_REP | 502; + public static final int KM_TAG_NO_AUTH_REQUIRED = KM_BOOL | 503; + public static final int KM_TAG_USER_AUTH_TYPE = KM_ENUM | 504; + public static final int KM_TAG_AUTH_TIMEOUT = KM_UINT | 505; + public static final int KM_TAG_ALLOW_WHILE_ON_BODY = KM_BOOL | 506; + public static final int KM_TAG_TRUSTED_USER_PRESENCE_REQUIRED = KM_BOOL | 507; + public static final int KM_TAG_TRUSTED_CONFIRMATION_REQUIRED = KM_BOOL | 508; + public static final int KM_TAG_UNLOCKED_DEVICE_REQUIRED = KM_BOOL | 509; - public static final int KM_TAG_APPLICATION_ID = Tag.APPLICATION_ID; // KM_BYTES | 601; + public static final int KM_TAG_ALL_APPLICATIONS = KM_BOOL | 600; + public static final int KM_TAG_APPLICATION_ID = KM_BYTES | 601; - public static final int KM_TAG_CREATION_DATETIME = Tag.CREATION_DATETIME; // KM_DATE | 701; - public static final int KM_TAG_ORIGIN = Tag.ORIGIN; // KM_ENUM | 702; - public static final int KM_TAG_ROLLBACK_RESISTANT = Tag.ROLLBACK_RESISTANCE; // KM_BOOL | 703; - public static final int KM_TAG_ROOT_OF_TRUST = Tag.ROOT_OF_TRUST; // KM_BYTES | 704; - public static final int KM_TAG_UNIQUE_ID = Tag.UNIQUE_ID; // KM_BYTES | 707; - public static final int KM_TAG_ATTESTATION_CHALLENGE = - Tag.ATTESTATION_CHALLENGE; // KM_BYTES | 708; - public static final int KM_TAG_ATTESTATION_ID_BRAND = - Tag.ATTESTATION_ID_BRAND; // KM_BYTES | 710; - public static final int KM_TAG_ATTESTATION_ID_DEVICE = - Tag.ATTESTATION_ID_DEVICE; // KM_BYTES | 711; - public static final int KM_TAG_ATTESTATION_ID_PRODUCT = - Tag.ATTESTATION_ID_PRODUCT; // KM_BYTES | 712; - public static final int KM_TAG_ATTESTATION_ID_SERIAL = - Tag.ATTESTATION_ID_SERIAL; // KM_BYTES | 713; - public static final int KM_TAG_ATTESTATION_ID_IMEI = - Tag.ATTESTATION_ID_IMEI; // KM_BYTES | 714; - public static final int KM_TAG_ATTESTATION_ID_MEID = - Tag.ATTESTATION_ID_MEID; // KM_BYTES | 715; - public static final int KM_TAG_ATTESTATION_ID_MANUFACTURER = - Tag.ATTESTATION_ID_MANUFACTURER; // KM_BYTES | 716; - public static final int KM_TAG_ATTESTATION_ID_MODEL = - Tag.ATTESTATION_ID_MODEL; // KM_BYTES | 717; - public static final int KM_TAG_VENDOR_PATCHLEVEL = - Tag.VENDOR_PATCHLEVEL; // KM_UINT | 718; - public static final int KM_TAG_BOOT_PATCHLEVEL = - Tag.BOOT_PATCHLEVEL; // KM_UINT | 719; - public static final int KM_TAG_DEVICE_UNIQUE_ATTESTATION = - Tag.DEVICE_UNIQUE_ATTESTATION; // KM_BOOL | 720; + public static final int KM_TAG_CREATION_DATETIME = KM_DATE | 701; + public static final int KM_TAG_ORIGIN = KM_ENUM | 702; + public static final int KM_TAG_ROLLBACK_RESISTANT = KM_BOOL | 703; + public static final int KM_TAG_ROOT_OF_TRUST = KM_BYTES | 704; + public static final int KM_TAG_UNIQUE_ID = KM_BYTES | 707; + public static final int KM_TAG_ATTESTATION_CHALLENGE = KM_BYTES | 708; + public static final int KM_TAG_ATTESTATION_ID_BRAND = KM_BYTES | 710; + public static final int KM_TAG_ATTESTATION_ID_DEVICE = KM_BYTES | 711; + public static final int KM_TAG_ATTESTATION_ID_PRODUCT = KM_BYTES | 712; + public static final int KM_TAG_ATTESTATION_ID_SERIAL = KM_BYTES | 713; + public static final int KM_TAG_ATTESTATION_ID_IMEI = KM_BYTES | 714; + public static final int KM_TAG_ATTESTATION_ID_MEID = KM_BYTES | 715; + public static final int KM_TAG_ATTESTATION_ID_MANUFACTURER = KM_BYTES | 716; + public static final int KM_TAG_ATTESTATION_ID_MODEL = KM_BYTES | 717; + public static final int KM_TAG_VENDOR_PATCHLEVEL = KM_UINT | 718; + public static final int KM_TAG_BOOT_PATCHLEVEL = KM_UINT | 719; + public static final int KM_TAG_DEVICE_UNIQUE_ATTESTATION = KM_BOOL | 720; - public static final int KM_TAG_ASSOCIATED_DATA = Tag.ASSOCIATED_DATA; // KM_BYTES | 1000; - public static final int KM_TAG_NONCE = Tag.NONCE; // KM_BYTES | 1001; - public static final int KM_TAG_MAC_LENGTH = Tag.MAC_LENGTH; // KM_UINT | 1003; + public static final int KM_TAG_ASSOCIATED_DATA = KM_BYTES | 1000; + public static final int KM_TAG_NONCE = KM_BYTES | 1001; + public static final int KM_TAG_AUTH_TOKEN = KM_BYTES | 1002; + public static final int KM_TAG_MAC_LENGTH = KM_UINT | 1003; // Algorithm values. - public static final int KM_ALGORITHM_RSA = Algorithm.RSA; - public static final int KM_ALGORITHM_EC = Algorithm.EC; - public static final int KM_ALGORITHM_AES = Algorithm.AES; - public static final int KM_ALGORITHM_3DES = Algorithm.TRIPLE_DES; - public static final int KM_ALGORITHM_HMAC = Algorithm.HMAC; + public static final int KM_ALGORITHM_RSA = 1; + public static final int KM_ALGORITHM_EC = 3; + public static final int KM_ALGORITHM_AES = 32; + public static final int KM_ALGORITHM_3DES = 33; + public static final int KM_ALGORITHM_HMAC = 128; // Block modes. - public static final int KM_MODE_ECB = BlockMode.ECB; - public static final int KM_MODE_CBC = BlockMode.CBC; - public static final int KM_MODE_CTR = BlockMode.CTR; - public static final int KM_MODE_GCM = BlockMode.GCM; + public static final int KM_MODE_ECB = 1; + public static final int KM_MODE_CBC = 2; + public static final int KM_MODE_CTR = 3; + public static final int KM_MODE_GCM = 32; // Padding modes. - public static final int KM_PAD_NONE = PaddingMode.NONE; - public static final int KM_PAD_RSA_OAEP = PaddingMode.RSA_OAEP; - public static final int KM_PAD_RSA_PSS = PaddingMode.RSA_PSS; - public static final int KM_PAD_RSA_PKCS1_1_5_ENCRYPT = PaddingMode.RSA_PKCS1_1_5_ENCRYPT; - public static final int KM_PAD_RSA_PKCS1_1_5_SIGN = PaddingMode.RSA_PKCS1_1_5_SIGN; - public static final int KM_PAD_PKCS7 = PaddingMode.PKCS7; + public static final int KM_PAD_NONE = 1; + public static final int KM_PAD_RSA_OAEP = 2; + public static final int KM_PAD_RSA_PSS = 3; + public static final int KM_PAD_RSA_PKCS1_1_5_ENCRYPT = 4; + public static final int KM_PAD_RSA_PKCS1_1_5_SIGN = 5; + public static final int KM_PAD_PKCS7 = 64; // Digest modes. - public static final int KM_DIGEST_NONE = Digest.NONE; - public static final int KM_DIGEST_MD5 = Digest.MD5; - public static final int KM_DIGEST_SHA1 = Digest.SHA1; - public static final int KM_DIGEST_SHA_2_224 = Digest.SHA_2_224; - public static final int KM_DIGEST_SHA_2_256 = Digest.SHA_2_256; - public static final int KM_DIGEST_SHA_2_384 = Digest.SHA_2_384; - public static final int KM_DIGEST_SHA_2_512 = Digest.SHA_2_512; + public static final int KM_DIGEST_NONE = 0; + public static final int KM_DIGEST_MD5 = 1; + public static final int KM_DIGEST_SHA1 = 2; + public static final int KM_DIGEST_SHA_2_224 = 3; + public static final int KM_DIGEST_SHA_2_256 = 4; + public static final int KM_DIGEST_SHA_2_384 = 5; + public static final int KM_DIGEST_SHA_2_512 = 6; // Key origins. - public static final int KM_ORIGIN_GENERATED = KeyOrigin.GENERATED; - public static final int KM_ORIGIN_DERIVED = KeyOrigin.DERIVED; - public static final int KM_ORIGIN_IMPORTED = KeyOrigin.IMPORTED; - public static final int KM_ORIGIN_UNKNOWN = KeyOrigin.RESERVED; - public static final int KM_ORIGIN_SECURELY_IMPORTED = KeyOrigin.SECURELY_IMPORTED; + public static final int KM_ORIGIN_GENERATED = 0; + public static final int KM_ORIGIN_IMPORTED = 2; + public static final int KM_ORIGIN_UNKNOWN = 3; + public static final int KM_ORIGIN_SECURELY_IMPORTED = 4; // Key usability requirements. public static final int KM_BLOB_STANDALONE = 0; public static final int KM_BLOB_REQUIRES_FILE_SYSTEM = 1; // Operation Purposes. - public static final int KM_PURPOSE_ENCRYPT = KeyPurpose.ENCRYPT; - public static final int KM_PURPOSE_DECRYPT = KeyPurpose.DECRYPT; - public static final int KM_PURPOSE_SIGN = KeyPurpose.SIGN; - public static final int KM_PURPOSE_VERIFY = KeyPurpose.VERIFY; - public static final int KM_PURPOSE_WRAP = KeyPurpose.WRAP_KEY; + public static final int KM_PURPOSE_ENCRYPT = 0; + public static final int KM_PURPOSE_DECRYPT = 1; + public static final int KM_PURPOSE_SIGN = 2; + public static final int KM_PURPOSE_VERIFY = 3; + public static final int KM_PURPOSE_WRAP = 5; // Key formats. - public static final int KM_KEY_FORMAT_X509 = KeyFormat.X509; - public static final int KM_KEY_FORMAT_PKCS8 = KeyFormat.PKCS8; - public static final int KM_KEY_FORMAT_RAW = KeyFormat.RAW; + public static final int KM_KEY_FORMAT_X509 = 0; + public static final int KM_KEY_FORMAT_PKCS8 = 1; + public static final int KM_KEY_FORMAT_RAW = 3; // User authenticators. - public static final int HW_AUTH_PASSWORD = HardwareAuthenticatorType.PASSWORD; - public static final int HW_AUTH_BIOMETRIC = HardwareAuthenticatorType.FINGERPRINT; + public static final int HW_AUTH_PASSWORD = 1 << 0; + public static final int HW_AUTH_BIOMETRIC = 1 << 1; // Security Levels. - public static final int KM_SECURITY_LEVEL_SOFTWARE = SecurityLevel.SOFTWARE; - public static final int KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT = - SecurityLevel.TRUSTED_ENVIRONMENT; - public static final int KM_SECURITY_LEVEL_STRONGBOX = SecurityLevel.STRONGBOX; + public static final int KM_SECURITY_LEVEL_SOFTWARE = 0; + public static final int KM_SECURITY_LEVEL_TRUSTED_ENVIRONMENT = 1; + public static final int KM_SECURITY_LEVEL_STRONGBOX = 2; // Error codes. - public static final int KM_ERROR_OK = ErrorCode.OK; - public static final int KM_ERROR_ROOT_OF_TRUST_ALREADY_SET = - ErrorCode.ROOT_OF_TRUST_ALREADY_SET; // -1; - public static final int KM_ERROR_UNSUPPORTED_PURPOSE = - ErrorCode.UNSUPPORTED_PURPOSE; // -2; - public static final int KM_ERROR_INCOMPATIBLE_PURPOSE = - ErrorCode.INCOMPATIBLE_PURPOSE; // -3; - public static final int KM_ERROR_UNSUPPORTED_ALGORITHM = - ErrorCode.UNSUPPORTED_ALGORITHM; // -4; - public static final int KM_ERROR_INCOMPATIBLE_ALGORITHM = - ErrorCode.INCOMPATIBLE_ALGORITHM; // -5; - public static final int KM_ERROR_UNSUPPORTED_KEY_SIZE = - ErrorCode.UNSUPPORTED_KEY_SIZE; // -6; - public static final int KM_ERROR_UNSUPPORTED_BLOCK_MODE = - ErrorCode.UNSUPPORTED_BLOCK_MODE; // -7; - public static final int KM_ERROR_INCOMPATIBLE_BLOCK_MODE = - ErrorCode.INCOMPATIBLE_BLOCK_MODE; // -8; - public static final int KM_ERROR_UNSUPPORTED_MAC_LENGTH = - ErrorCode.UNSUPPORTED_MAC_LENGTH; // -9; - public static final int KM_ERROR_UNSUPPORTED_PADDING_MODE = - ErrorCode.UNSUPPORTED_PADDING_MODE; // -10; - public static final int KM_ERROR_INCOMPATIBLE_PADDING_MODE = - ErrorCode.INCOMPATIBLE_PADDING_MODE; // -11; - public static final int KM_ERROR_UNSUPPORTED_DIGEST = - ErrorCode.UNSUPPORTED_DIGEST; // -12; - public static final int KM_ERROR_INCOMPATIBLE_DIGEST = - ErrorCode.INCOMPATIBLE_DIGEST; // -13; - public static final int KM_ERROR_INVALID_EXPIRATION_TIME = - ErrorCode.INVALID_EXPIRATION_TIME; // -14; - public static final int KM_ERROR_INVALID_USER_ID = - ErrorCode.INVALID_USER_ID; // -15; - public static final int KM_ERROR_INVALID_AUTHORIZATION_TIMEOUT = - ErrorCode.INVALID_AUTHORIZATION_TIMEOUT; // -16; - public static final int KM_ERROR_UNSUPPORTED_KEY_FORMAT = - ErrorCode.UNSUPPORTED_KEY_FORMAT; // -17; - public static final int KM_ERROR_INCOMPATIBLE_KEY_FORMAT = - ErrorCode.INCOMPATIBLE_KEY_FORMAT; // -18; - public static final int KM_ERROR_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM = - ErrorCode.UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM; // -19; - public static final int KM_ERROR_UNSUPPORTED_KEY_VERIFICATION_ALGORITHM = - ErrorCode.UNSUPPORTED_KEY_VERIFICATION_ALGORITHM; // -20; - public static final int KM_ERROR_INVALID_INPUT_LENGTH = - ErrorCode.INVALID_INPUT_LENGTH; // -21; - public static final int KM_ERROR_KEY_EXPORT_OPTIONS_INVALID = - ErrorCode.KEY_EXPORT_OPTIONS_INVALID; // -22; - public static final int KM_ERROR_DELEGATION_NOT_ALLOWED = - ErrorCode.DELEGATION_NOT_ALLOWED; // -23; - public static final int KM_ERROR_KEY_NOT_YET_VALID = - ErrorCode.KEY_NOT_YET_VALID; // -24; - public static final int KM_ERROR_KEY_EXPIRED = - ErrorCode.KEY_EXPIRED; // -25; - public static final int KM_ERROR_KEY_USER_NOT_AUTHENTICATED = - ErrorCode.KEY_USER_NOT_AUTHENTICATED; // -26; - public static final int KM_ERROR_OUTPUT_PARAMETER_NULL = - ErrorCode.OUTPUT_PARAMETER_NULL; // -27; - public static final int KM_ERROR_INVALID_OPERATION_HANDLE = - ErrorCode.INVALID_OPERATION_HANDLE; // -28; - public static final int KM_ERROR_INSUFFICIENT_BUFFER_SPACE = - ErrorCode.INSUFFICIENT_BUFFER_SPACE; // -29; - public static final int KM_ERROR_VERIFICATION_FAILED = - ErrorCode.VERIFICATION_FAILED; // -30; - public static final int KM_ERROR_TOO_MANY_OPERATIONS = - ErrorCode.TOO_MANY_OPERATIONS; // -31; - public static final int KM_ERROR_UNEXPECTED_NULL_POINTER = - ErrorCode.UNEXPECTED_NULL_POINTER; // -32; - public static final int KM_ERROR_INVALID_KEY_BLOB = - ErrorCode.INVALID_KEY_BLOB; // -33; - public static final int KM_ERROR_IMPORTED_KEY_NOT_ENCRYPTED = - ErrorCode.IMPORTED_KEY_NOT_ENCRYPTED; // -34; - public static final int KM_ERROR_IMPORTED_KEY_DECRYPTION_FAILED = - ErrorCode.IMPORTED_KEY_DECRYPTION_FAILED; // -35; - public static final int KM_ERROR_IMPORTED_KEY_NOT_SIGNED = - ErrorCode.IMPORTED_KEY_NOT_SIGNED; // -36; - public static final int KM_ERROR_IMPORTED_KEY_VERIFICATION_FAILED = - ErrorCode.IMPORTED_KEY_VERIFICATION_FAILED; // -37; - public static final int KM_ERROR_INVALID_ARGUMENT = - ErrorCode.INVALID_ARGUMENT; // -38; - public static final int KM_ERROR_UNSUPPORTED_TAG = - ErrorCode.UNSUPPORTED_TAG; // -39; - public static final int KM_ERROR_INVALID_TAG = - ErrorCode.INVALID_TAG; // -40; - public static final int KM_ERROR_MEMORY_ALLOCATION_FAILED = - ErrorCode.MEMORY_ALLOCATION_FAILED; // -41; - public static final int KM_ERROR_IMPORT_PARAMETER_MISMATCH = - ErrorCode.IMPORT_PARAMETER_MISMATCH; // -44; - public static final int KM_ERROR_SECURE_HW_ACCESS_DENIED = - ErrorCode.SECURE_HW_ACCESS_DENIED; // -45; - public static final int KM_ERROR_OPERATION_CANCELLED = - ErrorCode.OPERATION_CANCELLED; // -46; - public static final int KM_ERROR_CONCURRENT_ACCESS_CONFLICT = - ErrorCode.CONCURRENT_ACCESS_CONFLICT; // -47; - public static final int KM_ERROR_SECURE_HW_BUSY = - ErrorCode.SECURE_HW_BUSY; // -48; - public static final int KM_ERROR_SECURE_HW_COMMUNICATION_FAILED = - ErrorCode.SECURE_HW_COMMUNICATION_FAILED; // -49; - public static final int KM_ERROR_UNSUPPORTED_EC_FIELD = - ErrorCode.UNSUPPORTED_EC_FIELD; // -50; - public static final int KM_ERROR_MISSING_NONCE = - ErrorCode.MISSING_NONCE; // -51; - public static final int KM_ERROR_INVALID_NONCE = - ErrorCode.INVALID_NONCE; // -52; - public static final int KM_ERROR_MISSING_MAC_LENGTH = - ErrorCode.MISSING_MAC_LENGTH; // -53; - public static final int KM_ERROR_KEY_RATE_LIMIT_EXCEEDED = - ErrorCode.KEY_RATE_LIMIT_EXCEEDED; // -54; - public static final int KM_ERROR_CALLER_NONCE_PROHIBITED = - ErrorCode.CALLER_NONCE_PROHIBITED; // -55; - public static final int KM_ERROR_KEY_MAX_OPS_EXCEEDED = - ErrorCode.KEY_MAX_OPS_EXCEEDED; // -56; - public static final int KM_ERROR_INVALID_MAC_LENGTH = - ErrorCode.INVALID_MAC_LENGTH; // -57; - public static final int KM_ERROR_MISSING_MIN_MAC_LENGTH = - ErrorCode.MISSING_MIN_MAC_LENGTH; // -58; - public static final int KM_ERROR_UNSUPPORTED_MIN_MAC_LENGTH = - ErrorCode.UNSUPPORTED_MIN_MAC_LENGTH; // -59; - public static final int KM_ERROR_CANNOT_ATTEST_IDS = - ErrorCode.CANNOT_ATTEST_IDS; // -66; - public static final int KM_ERROR_HARDWARE_TYPE_UNAVAILABLE = - ErrorCode.HARDWARE_TYPE_UNAVAILABLE; // -68; - public static final int KM_ERROR_DEVICE_LOCKED = - ErrorCode.DEVICE_LOCKED; // -72; - public static final int KM_ERROR_UNIMPLEMENTED = - ErrorCode.UNIMPLEMENTED; // -100; - public static final int KM_ERROR_VERSION_MISMATCH = - ErrorCode.VERSION_MISMATCH; // -101; - public static final int KM_ERROR_UNKNOWN_ERROR = - ErrorCode.UNKNOWN_ERROR; // -1000; + public static final int KM_ERROR_OK = 0; + public static final int KM_ERROR_ROOT_OF_TRUST_ALREADY_SET = -1; + public static final int KM_ERROR_UNSUPPORTED_PURPOSE = -2; + public static final int KM_ERROR_INCOMPATIBLE_PURPOSE = -3; + public static final int KM_ERROR_UNSUPPORTED_ALGORITHM = -4; + public static final int KM_ERROR_INCOMPATIBLE_ALGORITHM = -5; + public static final int KM_ERROR_UNSUPPORTED_KEY_SIZE = -6; + public static final int KM_ERROR_UNSUPPORTED_BLOCK_MODE = -7; + public static final int KM_ERROR_INCOMPATIBLE_BLOCK_MODE = -8; + public static final int KM_ERROR_UNSUPPORTED_MAC_LENGTH = -9; + public static final int KM_ERROR_UNSUPPORTED_PADDING_MODE = -10; + public static final int KM_ERROR_INCOMPATIBLE_PADDING_MODE = -11; + public static final int KM_ERROR_UNSUPPORTED_DIGEST = -12; + public static final int KM_ERROR_INCOMPATIBLE_DIGEST = -13; + public static final int KM_ERROR_INVALID_EXPIRATION_TIME = -14; + public static final int KM_ERROR_INVALID_USER_ID = -15; + public static final int KM_ERROR_INVALID_AUTHORIZATION_TIMEOUT = -16; + public static final int KM_ERROR_UNSUPPORTED_KEY_FORMAT = -17; + public static final int KM_ERROR_INCOMPATIBLE_KEY_FORMAT = -18; + public static final int KM_ERROR_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM = -19; + public static final int KM_ERROR_UNSUPPORTED_KEY_VERIFICATION_ALGORITHM = -20; + public static final int KM_ERROR_INVALID_INPUT_LENGTH = -21; + public static final int KM_ERROR_KEY_EXPORT_OPTIONS_INVALID = -22; + public static final int KM_ERROR_DELEGATION_NOT_ALLOWED = -23; + public static final int KM_ERROR_KEY_NOT_YET_VALID = -24; + public static final int KM_ERROR_KEY_EXPIRED = -25; + public static final int KM_ERROR_KEY_USER_NOT_AUTHENTICATED = -26; + public static final int KM_ERROR_OUTPUT_PARAMETER_NULL = -27; + public static final int KM_ERROR_INVALID_OPERATION_HANDLE = -28; + public static final int KM_ERROR_INSUFFICIENT_BUFFER_SPACE = -29; + public static final int KM_ERROR_VERIFICATION_FAILED = -30; + public static final int KM_ERROR_TOO_MANY_OPERATIONS = -31; + public static final int KM_ERROR_UNEXPECTED_NULL_POINTER = -32; + public static final int KM_ERROR_INVALID_KEY_BLOB = -33; + public static final int KM_ERROR_IMPORTED_KEY_NOT_ENCRYPTED = -34; + public static final int KM_ERROR_IMPORTED_KEY_DECRYPTION_FAILED = -35; + public static final int KM_ERROR_IMPORTED_KEY_NOT_SIGNED = -36; + public static final int KM_ERROR_IMPORTED_KEY_VERIFICATION_FAILED = -37; + public static final int KM_ERROR_INVALID_ARGUMENT = -38; + public static final int KM_ERROR_UNSUPPORTED_TAG = -39; + public static final int KM_ERROR_INVALID_TAG = -40; + public static final int KM_ERROR_MEMORY_ALLOCATION_FAILED = -41; + public static final int KM_ERROR_INVALID_RESCOPING = -42; + public static final int KM_ERROR_IMPORT_PARAMETER_MISMATCH = -44; + public static final int KM_ERROR_SECURE_HW_ACCESS_DENIED = -45; + public static final int KM_ERROR_OPERATION_CANCELLED = -46; + public static final int KM_ERROR_CONCURRENT_ACCESS_CONFLICT = -47; + public static final int KM_ERROR_SECURE_HW_BUSY = -48; + public static final int KM_ERROR_SECURE_HW_COMMUNICATION_FAILED = -49; + public static final int KM_ERROR_UNSUPPORTED_EC_FIELD = -50; + public static final int KM_ERROR_MISSING_NONCE = -51; + public static final int KM_ERROR_INVALID_NONCE = -52; + public static final int KM_ERROR_MISSING_MAC_LENGTH = -53; + public static final int KM_ERROR_KEY_RATE_LIMIT_EXCEEDED = -54; + public static final int KM_ERROR_CALLER_NONCE_PROHIBITED = -55; + public static final int KM_ERROR_KEY_MAX_OPS_EXCEEDED = -56; + public static final int KM_ERROR_INVALID_MAC_LENGTH = -57; + public static final int KM_ERROR_MISSING_MIN_MAC_LENGTH = -58; + public static final int KM_ERROR_UNSUPPORTED_MIN_MAC_LENGTH = -59; + public static final int KM_ERROR_CANNOT_ATTEST_IDS = -66; + public static final int KM_ERROR_HARDWARE_TYPE_UNAVAILABLE = -68; + public static final int KM_ERROR_DEVICE_LOCKED = -72; + public static final int KM_ERROR_UNIMPLEMENTED = -100; + public static final int KM_ERROR_VERSION_MISMATCH = -101; + public static final int KM_ERROR_UNKNOWN_ERROR = -1000; public static final Map sErrorCodeToString = new HashMap(); static { From cfcb641959787ebad889e56ebc90330d3b4f4fd3 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Thu, 3 Dec 2020 17:53:55 -0800 Subject: [PATCH 048/192] Preserve text colors when applying font style The TextAppearance is re-evaluating the text field colors, causing issues in dark theme. Fixes: 174729670 Test: manual Change-Id: Ic6b937a51c093f3acffcc3c2d442554a5e615fbf (cherry picked from commit c1fd4b72d7b0262d2580503738d4d6a2d5f52fa8) --- .../row/wrapper/NotificationHeaderViewWrapper.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java index 37d5da24a7042..7c5d4a3efee72 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationHeaderViewWrapper.java @@ -20,6 +20,7 @@ import static com.android.systemui.statusbar.notification.TransformState.TRANSFO import android.app.Notification; import android.content.Context; +import android.content.res.ColorStateList; import android.util.ArraySet; import android.view.NotificationHeaderView; import android.view.NotificationTopLineView; @@ -168,9 +169,11 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper { public void applyConversationSkin() { if (mAppNameText != null) { + final ColorStateList colors = mAppNameText.getTextColors(); mAppNameText.setTextAppearance( com.android.internal.R.style .TextAppearance_DeviceDefault_Notification_Conversation_AppName); + mAppNameText.setTextColor(colors); MarginLayoutParams layoutParams = (MarginLayoutParams) mAppNameText.getLayoutParams(); layoutParams.setMarginStart(0); } @@ -189,11 +192,13 @@ public class NotificationHeaderViewWrapper extends NotificationViewWrapper { public void clearConversationSkin() { if (mAppNameText != null) { + final ColorStateList colors = mAppNameText.getTextColors(); final int textAppearance = Utils.getThemeAttr( mAppNameText.getContext(), com.android.internal.R.attr.notificationHeaderTextAppearance, com.android.internal.R.style.TextAppearance_DeviceDefault_Notification_Info); mAppNameText.setTextAppearance(textAppearance); + mAppNameText.setTextColor(colors); MarginLayoutParams layoutParams = (MarginLayoutParams) mAppNameText.getLayoutParams(); final int marginStart = mAppNameText.getResources().getDimensionPixelSize( com.android.internal.R.dimen.notification_header_app_name_margin_start); From 7c0ddc9a9bffa2acc58d2d51650151241cd8d489 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Thu, 3 Dec 2020 16:41:57 -0800 Subject: [PATCH 049/192] Fix background color resolution Test: manual Bug: 174729670 Change-Id: Ib9fe70ea4be0a4b56ba9a964b8a08f4e48ebbd52 (cherry picked from commit 16f1f2f7523274bac779df8d0994a20f5ccebcc4) --- core/java/android/app/Notification.java | 4 +++- core/res/res/layout/notification_top_line_views.xml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index a1135809fd4c7..fd484539f7faa 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -83,6 +83,7 @@ import android.util.Log; import android.util.Pair; import android.util.SparseArray; import android.util.proto.ProtoOutputStream; +import android.view.ContextThemeWrapper; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; @@ -6118,7 +6119,8 @@ public class Notification implements Parcelable private @ColorInt int obtainBackgroundColor() { int defaultColor = mInNightMode ? Color.BLACK : Color.WHITE; - Resources.Theme theme = mContext.getTheme(); + Resources.Theme theme = new ContextThemeWrapper(mContext, + R.style.Theme_DeviceDefault_DayNight).getTheme(); if (theme == null) { return defaultColor; } diff --git a/core/res/res/layout/notification_top_line_views.xml b/core/res/res/layout/notification_top_line_views.xml index c71e8863502c2..60507eddba224 100644 --- a/core/res/res/layout/notification_top_line_views.xml +++ b/core/res/res/layout/notification_top_line_views.xml @@ -88,7 +88,7 @@ Date: Tue, 8 Dec 2020 10:08:22 -0500 Subject: [PATCH 050/192] Update Settings version Test: atest Fixes: 175084979 Fixes: 175085402 Fixes: 175088017 Change-Id: I1243af2dcbc58e4ee77c758ddf2b19e471308dc2 (cherry picked from commit e61adb126e6554a68b837af9c50a7b6010eb581c) --- .../src/com/android/providers/settings/SettingsProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 271f2a71b5b58..c9e3b6f631354 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -3342,7 +3342,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { - private static final int SETTINGS_VERSION = 195; + private static final int SETTINGS_VERSION = 196; private final int mUserId; From 9f183204b2dd917857f0ea4318b24e1d8a378855 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Tue, 8 Dec 2020 19:07:11 -0800 Subject: [PATCH 051/192] use new theme colors on custom notifications Custom notifications are inflated using a different context, text colors should be replaced after infaltion, similarly to what we do on dark mode. Test: manual Test: atest com.android.systemui.statusbar.notification.row Fixes: 174763901 Change-Id: I009011a66056cb31c026b48217710c5f3d74b0b5 (cherry picked from commit cc0fbf9c37644e8295bcaf08d9994444fc57f243) --- packages/SystemUI/res/values/styles.xml | 2 - .../NotificationCustomViewWrapper.java | 4 ++ ...otificationDecoratedCustomViewWrapper.java | 5 ++ .../row/wrapper/NotificationViewWrapper.java | 50 +++++++++++++++++++ .../row/NotificationContentViewTest.java | 6 +++ .../wrapper/NotificationViewWrapperTest.java | 2 + 6 files changed, 67 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index 0697c5c0084c6..6c0635a3ce515 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -489,7 +489,6 @@ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCustomViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCustomViewWrapper.java index 4c9c2f95b35cb..414d62092ab23 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCustomViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCustomViewWrapper.java @@ -47,6 +47,10 @@ public class NotificationCustomViewWrapper extends NotificationViewWrapper { public void onContentUpdated(ExpandableNotificationRow row) { super.onContentUpdated(row); + // Custom views will most likely use just white or black as their text color. + // We need to scan through and replace these colors by Material NEXT colors. + ensureThemeOnChildren(); + // Let's invert the notification colors when we're in night mode and // the notification background isn't colorized. if (needsInversion(mBackgroundColor, mView)) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationDecoratedCustomViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationDecoratedCustomViewWrapper.java index 49a8d56e1e65d..79648457c521c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationDecoratedCustomViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationDecoratedCustomViewWrapper.java @@ -43,6 +43,11 @@ public class NotificationDecoratedCustomViewWrapper extends NotificationTemplate if (childIndex != null && childIndex != -1) { mWrappedView = container.getChildAt(childIndex); } + + // Custom views will most likely use just white or black as their text color. + // We need to scan through and replace these colors by Material NEXT colors. + ensureThemeOnChildren(); + if (needsInversion(resolveBackgroundColor(), mWrappedView)) { invertViewLuminosity(mWrappedView); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapper.java index 416c5af934008..2d706a48e90d0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapper.java @@ -29,11 +29,13 @@ import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Build; +import android.view.ContextThemeWrapper; import android.view.NotificationHeaderView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.graphics.ColorUtils; import com.android.internal.util.ContrastColorUtil; @@ -55,6 +57,9 @@ public abstract class NotificationViewWrapper implements TransformableView { private final Rect mTmpRect = new Rect(); protected int mBackgroundColor = 0; + private int mLightTextColor; + private int mDarkTextColor; + private int mDefaultTextColor; public static NotificationViewWrapper wrap(Context ctx, View v, ExpandableNotificationRow row) { if (v.getId() == com.android.internal.R.id.status_bar_latest_event_content) { @@ -110,6 +115,15 @@ public abstract class NotificationViewWrapper implements TransformableView { mBackgroundColor = backgroundColor; mView.setBackground(new ColorDrawable(Color.TRANSPARENT)); } + mLightTextColor = mView.getContext().getColor( + com.android.internal.R.color.notification_primary_text_color_light); + mDarkTextColor = mView.getContext().getColor( + R.color.notification_primary_text_color_dark); + + Context themedContext = new ContextThemeWrapper(mView.getContext(), + R.style.Theme_DeviceDefault_DayNight); + mDefaultTextColor = Utils.getColorAttr(themedContext, R.attr.textColorPrimary) + .getDefaultColor(); } protected boolean needsInversion(int defaultBackgroundColor, View view) { @@ -187,6 +201,42 @@ public abstract class NotificationViewWrapper implements TransformableView { return false; } + protected void ensureThemeOnChildren() { + if (mView == null) { + return; + } + + // Notifications with custom backgrounds should not be adjusted + if (mBackgroundColor != Color.TRANSPARENT + || getBackgroundColor(mView) != Color.TRANSPARENT) { + return; + } + + // Now let's check if there's unprotected text somewhere, and apply the theme if we find it. + if (!(mView instanceof ViewGroup)) { + return; + } + processChildrenTextColor((ViewGroup) mView); + } + + private void processChildrenTextColor(ViewGroup viewGroup) { + if (viewGroup == null) { + return; + } + + for (int i = 0; i < viewGroup.getChildCount(); i++) { + View child = viewGroup.getChildAt(i); + if (child instanceof TextView) { + int foreground = ((TextView) child).getCurrentTextColor(); + if (foreground == mLightTextColor || foreground == mDarkTextColor) { + ((TextView) child).setTextColor(mDefaultTextColor); + } + } else if (child instanceof ViewGroup) { + processChildrenTextColor((ViewGroup) child); + } + } + } + protected int getBackgroundColor(View view) { if (view == null) { return Color.TRANSPARENT; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java index d08b2b78d00b6..2101ea1766a18 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentViewTest.java @@ -81,12 +81,15 @@ public class NotificationContentViewTest extends SysuiTestCase { View mockContracted = mock(NotificationHeaderView.class); when(mockContracted.findViewById(com.android.internal.R.id.feedback)) .thenReturn(mockContracted); + when(mockContracted.getContext()).thenReturn(mContext); View mockExpanded = mock(NotificationHeaderView.class); when(mockExpanded.findViewById(com.android.internal.R.id.feedback)) .thenReturn(mockExpanded); + when(mockExpanded.getContext()).thenReturn(mContext); View mockHeadsUp = mock(NotificationHeaderView.class); when(mockHeadsUp.findViewById(com.android.internal.R.id.feedback)) .thenReturn(mockHeadsUp); + when(mockHeadsUp.getContext()).thenReturn(mContext); mView.setContractedChild(mockContracted); mView.setExpandedChild(mockExpanded); @@ -107,18 +110,21 @@ public class NotificationContentViewTest extends SysuiTestCase { when(mockContracted.animate()).thenReturn(mock(ViewPropertyAnimator.class)); when(mockContracted.findViewById(com.android.internal.R.id.expand_button)).thenReturn( mockContractedEB); + when(mockContracted.getContext()).thenReturn(mContext); View mockExpandedEB = mock(NotificationExpandButton.class); View mockExpanded = mock(NotificationHeaderView.class); when(mockExpanded.animate()).thenReturn(mock(ViewPropertyAnimator.class)); when(mockExpanded.findViewById(com.android.internal.R.id.expand_button)).thenReturn( mockExpandedEB); + when(mockExpanded.getContext()).thenReturn(mContext); View mockHeadsUpEB = mock(NotificationExpandButton.class); View mockHeadsUp = mock(NotificationHeaderView.class); when(mockHeadsUp.animate()).thenReturn(mock(ViewPropertyAnimator.class)); when(mockHeadsUp.findViewById(com.android.internal.R.id.expand_button)).thenReturn( mockHeadsUpEB); + when(mockHeadsUp.getContext()).thenReturn(mContext); // Set up all 3 child forms mView.setContractedChild(mockContracted); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapperTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapperTest.java index 085bd900debc9..93a9e597ca908 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapperTest.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.notification.row.wrapper; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import android.content.Context; import android.testing.AndroidTestingRunner; @@ -49,6 +50,7 @@ public class NotificationViewWrapperTest extends SysuiTestCase { public void setup() throws Exception { allowTestableLooperAsMainThread(); mView = mock(View.class); + when(mView.getContext()).thenReturn(mContext); NotificationTestHelper helper = new NotificationTestHelper( mContext, mDependency, From 5636bda52d7e6240f7e97408fa1526e32372f5af Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Wed, 16 Dec 2020 10:03:31 -0500 Subject: [PATCH 052/192] Fix NPE in user builds In user builds, we were not creating the menu item for the prototype but we were toggling it. Now just make it visible or not depending on the build. Test: manual Change-Id: I8ab6bf229b08c0819e4c1484fafa86a7c0019b9d (cherry picked from commit 1fff41fb3bd1a9039bf2f78528ba01333793f065) --- .../android/systemui/qs/customize/QSCustomizer.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java index d7933d3225f26..73ab9b037385b 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java @@ -77,11 +77,11 @@ public class QSCustomizer extends LinearLayout { toolbar.getMenu().add(Menu.NONE, MENU_RESET, 0, mContext.getString(com.android.internal.R.string.reset)); - if (Build.IS_ENG || Build.IS_USERDEBUG) { - // Prototype menu item - toolbar.getMenu().add(Menu.NONE, MENU_REMOVE_LABELS, Menu.NONE, "Remove labels") - .setCheckable(true); - } + // Prototype menu item + toolbar.getMenu() + .add(Menu.NONE, MENU_REMOVE_LABELS, Menu.NONE, "Remove labels") + .setCheckable(true) + .setVisible(Build.IS_ENG || Build.IS_USERDEBUG); toolbar.setTitle(R.string.qs_edit); mRecyclerView = findViewById(android.R.id.list); mTransparentView = findViewById(R.id.customizer_transparent_view); From b4a81bb7fc3feb6e918b8a39b465bbaf1ae0aa22 Mon Sep 17 00:00:00 2001 From: Kweku Adams Date: Wed, 16 Dec 2020 08:57:18 -0800 Subject: [PATCH 053/192] Handle NEVER-but-elevated-bucket case. There are situations where an app is in the NEVER bucket but has its effective standby bucket elevated. In that case, the app will have 0 expedited job quota without running any EJs, so the start alarm scheduling should acknowledge that case. Bug: 171305774 Bug: 175772165 Test: atest FrameworksMockingServicesTests:QuotaControllerTest Test: atest CtsJobSchedulerTestCases Change-Id: I905ea210a882d310e33ecb63198173aa9f2dd9c1 (cherry picked from commit aba1f2265449b86afdd0d3bbd7b878a4f60fef9c) --- .../job/controllers/QuotaController.java | 44 +++++++---- .../job/controllers/QuotaControllerTest.java | 73 +++++++++++++++++++ 2 files changed, 102 insertions(+), 15 deletions(-) diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java index 655fd80e61667..7b87dfbae2f6b 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java @@ -1563,11 +1563,11 @@ public final class QuotaController extends StateController { standbyBucket); final long remainingEJQuota = getRemainingEJExecutionTimeLocked(userId, packageName); - if (stats.executionTimeInWindowMs < mAllowedTimePerPeriodMs + final boolean inRegularQuota = stats.executionTimeInWindowMs < mAllowedTimePerPeriodMs && stats.executionTimeInMaxPeriodMs < mMaxExecutionTimeMs && isUnderJobCountQuota - && isUnderTimingSessionCountQuota - && remainingEJQuota > 0) { + && isUnderTimingSessionCountQuota; + if (inRegularQuota && remainingEJQuota > 0) { // Already in quota. Why was this method called? if (DEBUG) { Slog.e(TAG, "maybeScheduleStartAlarmLocked called for " + pkgString @@ -1582,10 +1582,7 @@ public final class QuotaController extends StateController { long inRegularQuotaTimeElapsed = Long.MAX_VALUE; long inEJQuotaTimeElapsed = Long.MAX_VALUE; - if (!(stats.executionTimeInWindowMs < mAllowedTimePerPeriodMs - && stats.executionTimeInMaxPeriodMs < mMaxExecutionTimeMs - && isUnderJobCountQuota - && isUnderTimingSessionCountQuota)) { + if (!inRegularQuota) { // The time this app will have quota again. long inQuotaTimeElapsed = stats.inQuotaTimeElapsed; if (!isUnderJobCountQuota && stats.bgJobCountInWindow < stats.jobCountLimit) { @@ -1603,18 +1600,35 @@ public final class QuotaController extends StateController { } if (remainingEJQuota <= 0) { final long limitMs = mEJLimitsMs[standbyBucket] - mQuotaBufferMs; - List timingSessions = mEJTimingSessions.get(userId, packageName); long sumMs = 0; - for (int i = timingSessions.size() - 1; i >= 0; --i) { - TimingSession ts = timingSessions.get(i); - final long durationMs = ts.endTimeElapsed - ts.startTimeElapsed; - sumMs += durationMs; + final Timer ejTimer = mEJPkgTimers.get(userId, packageName); + if (ejTimer != null && ejTimer.isActive()) { + final long nowElapsed = sElapsedRealtimeClock.millis(); + sumMs += ejTimer.getCurrentDuration(nowElapsed); if (sumMs >= limitMs) { - inEJQuotaTimeElapsed = - ts.startTimeElapsed + (sumMs - limitMs) + mEJLimitWindowSizeMs; - break; + inEJQuotaTimeElapsed = (nowElapsed - limitMs) + mEJLimitWindowSizeMs; } } + List timingSessions = mEJTimingSessions.get(userId, packageName); + if (timingSessions != null) { + for (int i = timingSessions.size() - 1; i >= 0; --i) { + TimingSession ts = timingSessions.get(i); + final long durationMs = ts.endTimeElapsed - ts.startTimeElapsed; + sumMs += durationMs; + if (sumMs >= limitMs) { + inEJQuotaTimeElapsed = + ts.startTimeElapsed + (sumMs - limitMs) + mEJLimitWindowSizeMs; + break; + } + } + } else if ((ejTimer == null || !ejTimer.isActive()) && inRegularQuota) { + // In some strange cases, an app may end be in the NEVER bucket but could have run + // some regular jobs. This results in no EJ timing sessions and QC having a bad + // time. + Slog.wtf(TAG, + string(userId, packageName) + " has 0 EJ quota without running anything"); + return; + } } long inQuotaTimeElapsed = Math.min(inRegularQuotaTimeElapsed, inEJQuotaTimeElapsed); diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java index 5f6f61c60600b..344a19a634877 100644 --- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java @@ -1960,6 +1960,79 @@ public class QuotaControllerTest { .set(anyInt(), eq(expectedAlarmTime), eq(TAG_QUOTA_CHECK), any(), any()); } + /** + * Test that QC handles invalid cases where an app is in the NEVER bucket but has still run + * jobs. + */ + @Test + public void testMaybeScheduleStartAlarmLocked_Never_EffectiveNotNever() { + // saveTimingSession calls maybeScheduleCleanupAlarmLocked which interferes with these tests + // because it schedules an alarm too. Prevent it from doing so. + spyOn(mQuotaController); + doNothing().when(mQuotaController).maybeScheduleCleanupAlarmLocked(); + + // The app is really in the NEVER bucket but is elevated somehow (eg via uidActive). + setStandbyBucket(NEVER_INDEX); + final int effectiveStandbyBucket = FREQUENT_INDEX; + + // No sessions saved yet. + synchronized (mQuotaController.mLock) { + mQuotaController.maybeScheduleStartAlarmLocked( + SOURCE_USER_ID, SOURCE_PACKAGE, effectiveStandbyBucket); + } + verify(mAlarmManager, never()).set(anyInt(), anyLong(), eq(TAG_QUOTA_CHECK), any(), any()); + + // Test with timing sessions out of window. + final long now = JobSchedulerService.sElapsedRealtimeClock.millis(); + mQuotaController.saveTimingSession(SOURCE_USER_ID, SOURCE_PACKAGE, + createTimingSession(now - 10 * HOUR_IN_MILLIS, 5 * MINUTE_IN_MILLIS, 1), false); + synchronized (mQuotaController.mLock) { + mQuotaController.maybeScheduleStartAlarmLocked( + SOURCE_USER_ID, SOURCE_PACKAGE, effectiveStandbyBucket); + } + verify(mAlarmManager, never()).set(anyInt(), anyLong(), eq(TAG_QUOTA_CHECK), any(), any()); + + // Test with timing sessions in window but still in quota. + final long start = now - (6 * HOUR_IN_MILLIS); + final long expectedAlarmTime = start + 8 * HOUR_IN_MILLIS + mQcConstants.IN_QUOTA_BUFFER_MS; + mQuotaController.saveTimingSession(SOURCE_USER_ID, SOURCE_PACKAGE, + createTimingSession(start, 5 * MINUTE_IN_MILLIS, 1), false); + synchronized (mQuotaController.mLock) { + mQuotaController.maybeScheduleStartAlarmLocked( + SOURCE_USER_ID, SOURCE_PACKAGE, effectiveStandbyBucket); + } + verify(mAlarmManager, never()).set(anyInt(), anyLong(), eq(TAG_QUOTA_CHECK), any(), any()); + + // Add some more sessions, but still in quota. + mQuotaController.saveTimingSession(SOURCE_USER_ID, SOURCE_PACKAGE, + createTimingSession(now - 3 * HOUR_IN_MILLIS, MINUTE_IN_MILLIS, 1), false); + mQuotaController.saveTimingSession(SOURCE_USER_ID, SOURCE_PACKAGE, + createTimingSession(now - HOUR_IN_MILLIS, 3 * MINUTE_IN_MILLIS, 1), false); + synchronized (mQuotaController.mLock) { + mQuotaController.maybeScheduleStartAlarmLocked( + SOURCE_USER_ID, SOURCE_PACKAGE, effectiveStandbyBucket); + } + verify(mAlarmManager, never()).set(anyInt(), anyLong(), eq(TAG_QUOTA_CHECK), any(), any()); + + // Test when out of quota. + mQuotaController.saveTimingSession(SOURCE_USER_ID, SOURCE_PACKAGE, + createTimingSession(now - HOUR_IN_MILLIS, MINUTE_IN_MILLIS, 1), false); + synchronized (mQuotaController.mLock) { + mQuotaController.maybeScheduleStartAlarmLocked( + SOURCE_USER_ID, SOURCE_PACKAGE, effectiveStandbyBucket); + } + verify(mAlarmManager, times(1)) + .set(anyInt(), eq(expectedAlarmTime), eq(TAG_QUOTA_CHECK), any(), any()); + + // Alarm already scheduled, so make sure it's not scheduled again. + synchronized (mQuotaController.mLock) { + mQuotaController.maybeScheduleStartAlarmLocked( + SOURCE_USER_ID, SOURCE_PACKAGE, effectiveStandbyBucket); + } + verify(mAlarmManager, times(1)) + .set(anyInt(), eq(expectedAlarmTime), eq(TAG_QUOTA_CHECK), any(), any()); + } + @Test public void testMaybeScheduleStartAlarmLocked_Rare() { // saveTimingSession calls maybeScheduleCleanupAlarmLocked which interferes with these tests From a6c032bbed14c0696e39c53f44fcb6d7011cd508 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Wed, 16 Dec 2020 13:01:49 -0500 Subject: [PATCH 054/192] Fix default for remove_labels setting Test: manual Fixes: 175763525 Change-Id: I837232af7eb47390c69789a7c70be51e2849fee3 (cherry picked from commit 7222fdcb0eae4a9b19ed03e71fca3eedc7c0bb4d) --- .../src/com/android/systemui/qs/QSPanelController.java | 2 +- .../android/systemui/qs/customize/QSCustomizerController.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index d58895e50d171..d3adc9b13fe0a 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -321,7 +321,7 @@ public class QSPanelController extends QSPanelControllerBase { @Override public void onTuningChanged(String key, String newValue) { if (QS_REMOVE_LABELS.equals(key)) { - boolean newShowLabels = "0".equals(newValue); + boolean newShowLabels = newValue == null || "0".equals(newValue); if (mShowLabels == newShowLabels) return; mShowLabels = newShowLabels; for (TileRecord t : mRecords) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java index 9bf3b8c69e7d8..2dfac1b55732f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java @@ -105,7 +105,8 @@ public class QSCustomizerController extends ViewController { private final TunerService.Tunable mTunable = new TunerService.Tunable() { @Override public void onTuningChanged(String key, String newValue) { - mToolbar.getMenu().findItem(MENU_REMOVE_LABELS).setChecked(!("0".equals(newValue))); + mToolbar.getMenu().findItem(MENU_REMOVE_LABELS) + .setChecked(newValue != null && !("0".equals(newValue))); } }; From e5f737e1ea6de45dea8219c32a701bcaac0a39dc Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Fri, 18 Dec 2020 17:25:33 +0000 Subject: [PATCH 055/192] Revert "Do not add display area features for untrusted display" This reverts commit b87dc233af9d01aafa83ca3107f1e12991963440. Reason for revert: Regression in SC, tracked in Bug: 175668832 Change-Id: I13387ae4aa89ba4b5d409afd3c5eb78e473a8064 (cherry picked from commit 2df72fb044a3ee0ba691d1872583afb62107e90e) --- .../android/server/wm/DisplayAreaPolicy.java | 60 +++++------- .../wm/DisplayAreaPolicyBuilderTest.java | 2 - .../server/wm/DisplayAreaPolicyTests.java | 97 +++++++++---------- 3 files changed, 68 insertions(+), 91 deletions(-) diff --git a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java index f8c375497b7b5..d4b319a525da5 100644 --- a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java @@ -99,41 +99,23 @@ public abstract class DisplayAreaPolicy { // Define the features that will be supported under the root of the whole logical // display. The policy will build the DisplayArea hierarchy based on this. - final HierarchyBuilder rootHierarchy = new HierarchyBuilder(root); - if (content.isTrusted()) { - // Only trusted display can have system decorations. - configureTrustedHierarchyBuilder(rootHierarchy, wmService, content); - } - // Set the essential containers (even the display doesn't support IME). - rootHierarchy.setImeContainer(imeContainer).setTaskDisplayAreas(tdaList); - - // Instantiate the policy with the hierarchy defined above. This will create and attach - // all the necessary DisplayAreas to the root. - return new DisplayAreaPolicyBuilder().setRootHierarchy(rootHierarchy).build(wmService); - } - - private void configureTrustedHierarchyBuilder(HierarchyBuilder rootHierarchy, - WindowManagerService wmService, DisplayContent content) { - // WindowedMagnification should be on the top so that there is only one surface - // to be magnified. - rootHierarchy.addFeature(new Feature.Builder(wmService.mPolicy, "WindowedMagnification", - FEATURE_WINDOWED_MAGNIFICATION) - .upTo(TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY) - .except(TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY) - // Make the DA dimmable so that the magnify window also mirrors the dim layer. - .setNewDisplayAreaSupplier(DisplayArea.Dimmable::new) - .build()); - if (content.isDefaultDisplay) { - // Only default display can have cutout. - // See LocalDisplayAdapter.LocalDisplayDevice#getDisplayDeviceInfoLocked. - rootHierarchy.addFeature(new Feature.Builder(wmService.mPolicy, "HideDisplayCutout", - FEATURE_HIDE_DISPLAY_CUTOUT) - .all() - .except(TYPE_NAVIGATION_BAR, TYPE_NAVIGATION_BAR_PANEL, - TYPE_STATUS_BAR, TYPE_NOTIFICATION_SHADE) - .build()); - } - rootHierarchy + HierarchyBuilder rootHierarchy = new HierarchyBuilder(root) + // WindowedMagnification should be on the top so that there is only one surface + // to be magnified. + .addFeature(new Feature.Builder(wmService.mPolicy, "WindowedMagnification", + FEATURE_WINDOWED_MAGNIFICATION) + .upTo(TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY) + .except(TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY) + // Make the DA dimmable so that the magnify window also mirrors the dim + // layer + .setNewDisplayAreaSupplier(DisplayArea.Dimmable::new) + .build()) + .addFeature(new Feature.Builder(wmService.mPolicy, "HideDisplayCutout", + FEATURE_HIDE_DISPLAY_CUTOUT) + .all() + .except(TYPE_NAVIGATION_BAR, TYPE_NAVIGATION_BAR_PANEL, TYPE_STATUS_BAR, + TYPE_NOTIFICATION_SHADE) + .build()) .addFeature(new Feature.Builder(wmService.mPolicy, "OneHanded", FEATURE_ONE_HANDED) .all() @@ -149,7 +131,13 @@ public abstract class DisplayAreaPolicy { .addFeature(new Feature.Builder(wmService.mPolicy, "ImePlaceholder", FEATURE_IME_PLACEHOLDER) .and(TYPE_INPUT_METHOD, TYPE_INPUT_METHOD_DIALOG) - .build()); + .build()) + .setImeContainer(imeContainer) + .setTaskDisplayAreas(tdaList); + + // Instantiate the policy with the hierarchy defined above. This will create and attach + // all the necessary DisplayAreas to the root. + return new DisplayAreaPolicyBuilder().setRootHierarchy(rootHierarchy).build(wmService); } } diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java index 3306e313f95e0..b33bb7bcd217d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java @@ -41,7 +41,6 @@ import static com.android.server.wm.DisplayAreaPolicyBuilder.Feature; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.testng.Assert.assertThrows; @@ -102,7 +101,6 @@ public class DisplayAreaPolicyBuilderTest { mRoot = new SurfacelessDisplayAreaRoot(mWms); mImeContainer = new DisplayArea.Tokens(mWms, ABOVE_TASKS, "ImeContainer"); mDisplayContent = mock(DisplayContent.class); - doReturn(true).when(mDisplayContent).isTrusted(); mDefaultTaskDisplayArea = new TaskDisplayArea(mDisplayContent, mWms, "Tasks", FEATURE_DEFAULT_TASK_CONTAINER); mTaskDisplayAreaList = new ArrayList<>(); diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyTests.java index d451180c72696..496b2b7447121 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyTests.java @@ -22,18 +22,15 @@ import static android.window.DisplayAreaOrganizer.FEATURE_DEFAULT_TASK_CONTAINER import static android.window.DisplayAreaOrganizer.FEATURE_VENDOR_FIRST; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.server.wm.DisplayArea.Type.ABOVE_TASKS; import static com.android.server.wm.WindowContainer.POSITION_BOTTOM; import static com.android.server.wm.WindowContainer.POSITION_TOP; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import android.platform.test.annotations.Presubmit; -import android.util.Pair; -import android.view.Display; -import android.view.DisplayInfo; import androidx.test.filters.SmallTest; @@ -41,8 +38,9 @@ import com.android.server.wm.DisplayAreaPolicyBuilderTest.SurfacelessDisplayArea import com.google.android.collect.Lists; +import org.junit.Before; +import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; import java.util.ArrayList; import java.util.Collections; @@ -56,65 +54,78 @@ import java.util.List; */ @SmallTest @Presubmit -@RunWith(WindowTestRunner.class) -public class DisplayAreaPolicyTests extends WindowTestsBase { +public class DisplayAreaPolicyTests { + + @Rule + public final SystemServicesTestRule mSystemServices = new SystemServicesTestRule(); + + private DisplayAreaPolicyBuilder.Result mPolicy; + private TaskDisplayArea mTaskDisplayArea1; + private TaskDisplayArea mTaskDisplayArea2; + private RootDisplayArea mRoot; + + @Before + public void setUp() throws Exception { + WindowManagerService wms = mSystemServices.getWindowManagerService(); + mRoot = new SurfacelessDisplayAreaRoot(wms); + spyOn(mRoot); + DisplayArea.Tokens ime = new DisplayArea.Tokens(wms, ABOVE_TASKS, "Ime"); + DisplayContent displayContent = mock(DisplayContent.class); + doReturn(true).when(displayContent).isTrusted(); + mTaskDisplayArea1 = new TaskDisplayArea(displayContent, wms, "Tasks1", + FEATURE_DEFAULT_TASK_CONTAINER); + mTaskDisplayArea2 = new TaskDisplayArea(displayContent, wms, "Tasks2", + FEATURE_VENDOR_FIRST); + List taskDisplayAreaList = new ArrayList<>(); + taskDisplayAreaList.add(mTaskDisplayArea1); + taskDisplayAreaList.add(mTaskDisplayArea2); + + mPolicy = new DisplayAreaPolicyBuilder() + .setRootHierarchy(new DisplayAreaPolicyBuilder.HierarchyBuilder(mRoot) + .setImeContainer(ime) + .setTaskDisplayAreas(taskDisplayAreaList)) + .build(wms); + } @Test public void testGetDefaultTaskDisplayArea() { - final Pair> result = - createPolicyWith2TaskDisplayAreas(); - final DisplayAreaPolicy policy = result.first; - final TaskDisplayArea taskDisplayArea1 = result.second.get(0); - assertEquals(taskDisplayArea1, policy.getDefaultTaskDisplayArea()); + assertEquals(mTaskDisplayArea1, mPolicy.getDefaultTaskDisplayArea()); } @Test public void testTaskDisplayArea_taskPositionChanged_updatesTaskDisplayAreaPosition() { - final Pair> result = - createPolicyWith2TaskDisplayAreas(); - final DisplayAreaPolicy policy = result.first; - final TaskDisplayArea taskDisplayArea1 = result.second.get(0); - final TaskDisplayArea taskDisplayArea2 = result.second.get(1); - final Task stack1 = taskDisplayArea1.createRootTask( + final Task stack1 = mTaskDisplayArea1.createRootTask( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); - final Task stack2 = taskDisplayArea2.createRootTask( + final Task stack2 = mTaskDisplayArea2.createRootTask( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); // Initial order - assertTaskDisplayAreasOrder(policy, taskDisplayArea1, taskDisplayArea2); + assertTaskDisplayAreasOrder(mPolicy, mTaskDisplayArea1, mTaskDisplayArea2); // Move stack in tda1 to top stack1.getParent().positionChildAt(POSITION_TOP, stack1, true /* includingParents */); - assertTaskDisplayAreasOrder(policy, taskDisplayArea2, taskDisplayArea1); + assertTaskDisplayAreasOrder(mPolicy, mTaskDisplayArea2, mTaskDisplayArea1); // Move stack in tda2 to top, but not including parents stack2.getParent().positionChildAt(POSITION_TOP, stack2, false /* includingParents */); - assertTaskDisplayAreasOrder(policy, taskDisplayArea2, taskDisplayArea1); + assertTaskDisplayAreasOrder(mPolicy, mTaskDisplayArea2, mTaskDisplayArea1); // Move stack in tda1 to bottom stack1.getParent().positionChildAt(POSITION_BOTTOM, stack1, true /* includingParents */); - assertTaskDisplayAreasOrder(policy, taskDisplayArea1, taskDisplayArea2); + assertTaskDisplayAreasOrder(mPolicy, mTaskDisplayArea1, mTaskDisplayArea2); // Move stack in tda2 to bottom, but not including parents stack2.getParent().positionChildAt(POSITION_BOTTOM, stack2, false /* includingParents */); - assertTaskDisplayAreasOrder(policy, taskDisplayArea1, taskDisplayArea2); - } - - @Test - public void testEmptyFeaturesOnUntrustedDisplay() { - final DisplayInfo info = new DisplayInfo(mDisplayInfo); - info.flags &= ~Display.FLAG_TRUSTED; - final DisplayContent untrustedDisplay = new TestDisplayContent.Builder(mAtm, info).build(); - assertTrue(untrustedDisplay.mFeatures.isEmpty()); + assertTaskDisplayAreasOrder(mPolicy, mTaskDisplayArea1, mTaskDisplayArea2); } @Test public void testDisplayAreaGroup_taskPositionChanged_updatesDisplayAreaGroupPosition() { - final WindowManagerService wms = mWm; + final WindowManagerService wms = mSystemServices.getWindowManagerService(); final DisplayContent displayContent = mock(DisplayContent.class); doReturn(true).when(displayContent).isTrusted(); final RootDisplayArea root = new SurfacelessDisplayAreaRoot(wms); @@ -192,24 +203,4 @@ public class DisplayAreaPolicyTests extends WindowTestsBase { }, false /* traverseTopToBottom */); assertEquals(expectOrder, actualOrder); } - - private Pair> createPolicyWith2TaskDisplayAreas() { - final SurfacelessDisplayAreaRoot root = new SurfacelessDisplayAreaRoot(mWm); - final DisplayArea.Tokens ime = new DisplayArea.Tokens(mWm, ABOVE_TASKS, "Ime"); - final DisplayContent displayContent = mock(DisplayContent.class); - doReturn(true).when(displayContent).isTrusted(); - final TaskDisplayArea taskDisplayArea1 = new TaskDisplayArea(displayContent, mWm, "Tasks1", - FEATURE_DEFAULT_TASK_CONTAINER); - final TaskDisplayArea taskDisplayArea2 = new TaskDisplayArea(displayContent, mWm, "Tasks2", - FEATURE_VENDOR_FIRST); - final List taskDisplayAreaList = new ArrayList<>(); - taskDisplayAreaList.add(taskDisplayArea1); - taskDisplayAreaList.add(taskDisplayArea2); - - return Pair.create(new DisplayAreaPolicyBuilder() - .setRootHierarchy(new DisplayAreaPolicyBuilder.HierarchyBuilder(root) - .setImeContainer(ime) - .setTaskDisplayAreas(taskDisplayAreaList)) - .build(mWm), taskDisplayAreaList); - } } From a3fecdaf67ccfa0aeece94e45d1a7415baa70cc2 Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Fri, 18 Dec 2020 17:25:33 +0000 Subject: [PATCH 056/192] Revert "Do not add display area features for untrusted display" This reverts commit b87dc233af9d01aafa83ca3107f1e12991963440. Reason for revert: Regression in SC, tracked in Bug: 175668832 Change-Id: I13387ae4aa89ba4b5d409afd3c5eb78e473a8064 (cherry picked from commit 2df72fb044a3ee0ba691d1872583afb62107e90e) --- .../android/server/wm/DisplayAreaPolicy.java | 60 +++++------- .../wm/DisplayAreaPolicyBuilderTest.java | 2 - .../server/wm/DisplayAreaPolicyTests.java | 97 +++++++++---------- 3 files changed, 68 insertions(+), 91 deletions(-) diff --git a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java index f8c375497b7b5..d4b319a525da5 100644 --- a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java @@ -99,41 +99,23 @@ public abstract class DisplayAreaPolicy { // Define the features that will be supported under the root of the whole logical // display. The policy will build the DisplayArea hierarchy based on this. - final HierarchyBuilder rootHierarchy = new HierarchyBuilder(root); - if (content.isTrusted()) { - // Only trusted display can have system decorations. - configureTrustedHierarchyBuilder(rootHierarchy, wmService, content); - } - // Set the essential containers (even the display doesn't support IME). - rootHierarchy.setImeContainer(imeContainer).setTaskDisplayAreas(tdaList); - - // Instantiate the policy with the hierarchy defined above. This will create and attach - // all the necessary DisplayAreas to the root. - return new DisplayAreaPolicyBuilder().setRootHierarchy(rootHierarchy).build(wmService); - } - - private void configureTrustedHierarchyBuilder(HierarchyBuilder rootHierarchy, - WindowManagerService wmService, DisplayContent content) { - // WindowedMagnification should be on the top so that there is only one surface - // to be magnified. - rootHierarchy.addFeature(new Feature.Builder(wmService.mPolicy, "WindowedMagnification", - FEATURE_WINDOWED_MAGNIFICATION) - .upTo(TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY) - .except(TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY) - // Make the DA dimmable so that the magnify window also mirrors the dim layer. - .setNewDisplayAreaSupplier(DisplayArea.Dimmable::new) - .build()); - if (content.isDefaultDisplay) { - // Only default display can have cutout. - // See LocalDisplayAdapter.LocalDisplayDevice#getDisplayDeviceInfoLocked. - rootHierarchy.addFeature(new Feature.Builder(wmService.mPolicy, "HideDisplayCutout", - FEATURE_HIDE_DISPLAY_CUTOUT) - .all() - .except(TYPE_NAVIGATION_BAR, TYPE_NAVIGATION_BAR_PANEL, - TYPE_STATUS_BAR, TYPE_NOTIFICATION_SHADE) - .build()); - } - rootHierarchy + HierarchyBuilder rootHierarchy = new HierarchyBuilder(root) + // WindowedMagnification should be on the top so that there is only one surface + // to be magnified. + .addFeature(new Feature.Builder(wmService.mPolicy, "WindowedMagnification", + FEATURE_WINDOWED_MAGNIFICATION) + .upTo(TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY) + .except(TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY) + // Make the DA dimmable so that the magnify window also mirrors the dim + // layer + .setNewDisplayAreaSupplier(DisplayArea.Dimmable::new) + .build()) + .addFeature(new Feature.Builder(wmService.mPolicy, "HideDisplayCutout", + FEATURE_HIDE_DISPLAY_CUTOUT) + .all() + .except(TYPE_NAVIGATION_BAR, TYPE_NAVIGATION_BAR_PANEL, TYPE_STATUS_BAR, + TYPE_NOTIFICATION_SHADE) + .build()) .addFeature(new Feature.Builder(wmService.mPolicy, "OneHanded", FEATURE_ONE_HANDED) .all() @@ -149,7 +131,13 @@ public abstract class DisplayAreaPolicy { .addFeature(new Feature.Builder(wmService.mPolicy, "ImePlaceholder", FEATURE_IME_PLACEHOLDER) .and(TYPE_INPUT_METHOD, TYPE_INPUT_METHOD_DIALOG) - .build()); + .build()) + .setImeContainer(imeContainer) + .setTaskDisplayAreas(tdaList); + + // Instantiate the policy with the hierarchy defined above. This will create and attach + // all the necessary DisplayAreas to the root. + return new DisplayAreaPolicyBuilder().setRootHierarchy(rootHierarchy).build(wmService); } } diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java index 3306e313f95e0..b33bb7bcd217d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java @@ -41,7 +41,6 @@ import static com.android.server.wm.DisplayAreaPolicyBuilder.Feature; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.testng.Assert.assertThrows; @@ -102,7 +101,6 @@ public class DisplayAreaPolicyBuilderTest { mRoot = new SurfacelessDisplayAreaRoot(mWms); mImeContainer = new DisplayArea.Tokens(mWms, ABOVE_TASKS, "ImeContainer"); mDisplayContent = mock(DisplayContent.class); - doReturn(true).when(mDisplayContent).isTrusted(); mDefaultTaskDisplayArea = new TaskDisplayArea(mDisplayContent, mWms, "Tasks", FEATURE_DEFAULT_TASK_CONTAINER); mTaskDisplayAreaList = new ArrayList<>(); diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyTests.java index d451180c72696..496b2b7447121 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyTests.java @@ -22,18 +22,15 @@ import static android.window.DisplayAreaOrganizer.FEATURE_DEFAULT_TASK_CONTAINER import static android.window.DisplayAreaOrganizer.FEATURE_VENDOR_FIRST; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; +import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; import static com.android.server.wm.DisplayArea.Type.ABOVE_TASKS; import static com.android.server.wm.WindowContainer.POSITION_BOTTOM; import static com.android.server.wm.WindowContainer.POSITION_TOP; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import android.platform.test.annotations.Presubmit; -import android.util.Pair; -import android.view.Display; -import android.view.DisplayInfo; import androidx.test.filters.SmallTest; @@ -41,8 +38,9 @@ import com.android.server.wm.DisplayAreaPolicyBuilderTest.SurfacelessDisplayArea import com.google.android.collect.Lists; +import org.junit.Before; +import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; import java.util.ArrayList; import java.util.Collections; @@ -56,65 +54,78 @@ import java.util.List; */ @SmallTest @Presubmit -@RunWith(WindowTestRunner.class) -public class DisplayAreaPolicyTests extends WindowTestsBase { +public class DisplayAreaPolicyTests { + + @Rule + public final SystemServicesTestRule mSystemServices = new SystemServicesTestRule(); + + private DisplayAreaPolicyBuilder.Result mPolicy; + private TaskDisplayArea mTaskDisplayArea1; + private TaskDisplayArea mTaskDisplayArea2; + private RootDisplayArea mRoot; + + @Before + public void setUp() throws Exception { + WindowManagerService wms = mSystemServices.getWindowManagerService(); + mRoot = new SurfacelessDisplayAreaRoot(wms); + spyOn(mRoot); + DisplayArea.Tokens ime = new DisplayArea.Tokens(wms, ABOVE_TASKS, "Ime"); + DisplayContent displayContent = mock(DisplayContent.class); + doReturn(true).when(displayContent).isTrusted(); + mTaskDisplayArea1 = new TaskDisplayArea(displayContent, wms, "Tasks1", + FEATURE_DEFAULT_TASK_CONTAINER); + mTaskDisplayArea2 = new TaskDisplayArea(displayContent, wms, "Tasks2", + FEATURE_VENDOR_FIRST); + List taskDisplayAreaList = new ArrayList<>(); + taskDisplayAreaList.add(mTaskDisplayArea1); + taskDisplayAreaList.add(mTaskDisplayArea2); + + mPolicy = new DisplayAreaPolicyBuilder() + .setRootHierarchy(new DisplayAreaPolicyBuilder.HierarchyBuilder(mRoot) + .setImeContainer(ime) + .setTaskDisplayAreas(taskDisplayAreaList)) + .build(wms); + } @Test public void testGetDefaultTaskDisplayArea() { - final Pair> result = - createPolicyWith2TaskDisplayAreas(); - final DisplayAreaPolicy policy = result.first; - final TaskDisplayArea taskDisplayArea1 = result.second.get(0); - assertEquals(taskDisplayArea1, policy.getDefaultTaskDisplayArea()); + assertEquals(mTaskDisplayArea1, mPolicy.getDefaultTaskDisplayArea()); } @Test public void testTaskDisplayArea_taskPositionChanged_updatesTaskDisplayAreaPosition() { - final Pair> result = - createPolicyWith2TaskDisplayAreas(); - final DisplayAreaPolicy policy = result.first; - final TaskDisplayArea taskDisplayArea1 = result.second.get(0); - final TaskDisplayArea taskDisplayArea2 = result.second.get(1); - final Task stack1 = taskDisplayArea1.createRootTask( + final Task stack1 = mTaskDisplayArea1.createRootTask( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); - final Task stack2 = taskDisplayArea2.createRootTask( + final Task stack2 = mTaskDisplayArea2.createRootTask( WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */); // Initial order - assertTaskDisplayAreasOrder(policy, taskDisplayArea1, taskDisplayArea2); + assertTaskDisplayAreasOrder(mPolicy, mTaskDisplayArea1, mTaskDisplayArea2); // Move stack in tda1 to top stack1.getParent().positionChildAt(POSITION_TOP, stack1, true /* includingParents */); - assertTaskDisplayAreasOrder(policy, taskDisplayArea2, taskDisplayArea1); + assertTaskDisplayAreasOrder(mPolicy, mTaskDisplayArea2, mTaskDisplayArea1); // Move stack in tda2 to top, but not including parents stack2.getParent().positionChildAt(POSITION_TOP, stack2, false /* includingParents */); - assertTaskDisplayAreasOrder(policy, taskDisplayArea2, taskDisplayArea1); + assertTaskDisplayAreasOrder(mPolicy, mTaskDisplayArea2, mTaskDisplayArea1); // Move stack in tda1 to bottom stack1.getParent().positionChildAt(POSITION_BOTTOM, stack1, true /* includingParents */); - assertTaskDisplayAreasOrder(policy, taskDisplayArea1, taskDisplayArea2); + assertTaskDisplayAreasOrder(mPolicy, mTaskDisplayArea1, mTaskDisplayArea2); // Move stack in tda2 to bottom, but not including parents stack2.getParent().positionChildAt(POSITION_BOTTOM, stack2, false /* includingParents */); - assertTaskDisplayAreasOrder(policy, taskDisplayArea1, taskDisplayArea2); - } - - @Test - public void testEmptyFeaturesOnUntrustedDisplay() { - final DisplayInfo info = new DisplayInfo(mDisplayInfo); - info.flags &= ~Display.FLAG_TRUSTED; - final DisplayContent untrustedDisplay = new TestDisplayContent.Builder(mAtm, info).build(); - assertTrue(untrustedDisplay.mFeatures.isEmpty()); + assertTaskDisplayAreasOrder(mPolicy, mTaskDisplayArea1, mTaskDisplayArea2); } @Test public void testDisplayAreaGroup_taskPositionChanged_updatesDisplayAreaGroupPosition() { - final WindowManagerService wms = mWm; + final WindowManagerService wms = mSystemServices.getWindowManagerService(); final DisplayContent displayContent = mock(DisplayContent.class); doReturn(true).when(displayContent).isTrusted(); final RootDisplayArea root = new SurfacelessDisplayAreaRoot(wms); @@ -192,24 +203,4 @@ public class DisplayAreaPolicyTests extends WindowTestsBase { }, false /* traverseTopToBottom */); assertEquals(expectOrder, actualOrder); } - - private Pair> createPolicyWith2TaskDisplayAreas() { - final SurfacelessDisplayAreaRoot root = new SurfacelessDisplayAreaRoot(mWm); - final DisplayArea.Tokens ime = new DisplayArea.Tokens(mWm, ABOVE_TASKS, "Ime"); - final DisplayContent displayContent = mock(DisplayContent.class); - doReturn(true).when(displayContent).isTrusted(); - final TaskDisplayArea taskDisplayArea1 = new TaskDisplayArea(displayContent, mWm, "Tasks1", - FEATURE_DEFAULT_TASK_CONTAINER); - final TaskDisplayArea taskDisplayArea2 = new TaskDisplayArea(displayContent, mWm, "Tasks2", - FEATURE_VENDOR_FIRST); - final List taskDisplayAreaList = new ArrayList<>(); - taskDisplayAreaList.add(taskDisplayArea1); - taskDisplayAreaList.add(taskDisplayArea2); - - return Pair.create(new DisplayAreaPolicyBuilder() - .setRootHierarchy(new DisplayAreaPolicyBuilder.HierarchyBuilder(root) - .setImeContainer(ime) - .setTaskDisplayAreas(taskDisplayAreaList)) - .build(mWm), taskDisplayAreaList); - } } From 79369f354f42116ecffc31fd24eb978c0ca2bdd9 Mon Sep 17 00:00:00 2001 From: bsears Date: Sat, 19 Dec 2020 07:37:48 +0000 Subject: [PATCH 057/192] Revert "Added profile-owner and device-owner on cmd user and dump user." This reverts commit 757491fd7be66ed9983bd75975fb1039ce3954f6. Reason for revert: Bug 175860401 - CL being reverted was identified as causing deadlocks, see b/175860401#comment10 Change-Id: Icf51a40a979f32c7cc1a1b2677ecf43e2656bf47 (cherry picked from commit ef53b3ff4e9a9bd9eb005ac2ed1d918ac15cf22a) --- .../admin/DevicePolicyManagerInternal.java | 8 +---- .../android/server/pm/UserManagerService.java | 35 +------------------ .../DevicePolicyManagerService.java | 9 ++--- 3 files changed, 4 insertions(+), 48 deletions(-) diff --git a/core/java/android/app/admin/DevicePolicyManagerInternal.java b/core/java/android/app/admin/DevicePolicyManagerInternal.java index a0d2977cf09a9..ce2fd4fb60b20 100644 --- a/core/java/android/app/admin/DevicePolicyManagerInternal.java +++ b/core/java/android/app/admin/DevicePolicyManagerInternal.java @@ -231,13 +231,7 @@ public abstract class DevicePolicyManagerInternal { * Returns the profile owner component for the given user, or {@code null} if there is not one. */ @Nullable - public abstract ComponentName getProfileOwnerAsUser(@UserIdInt int userId); - - /** - * Returns the user id of the device owner, or {@link UserHandle#USER_NULL} if there is not one. - */ - @UserIdInt - public abstract int getDeviceOwnerUserId(); + public abstract ComponentName getProfileOwnerAsUser(int userHandle); /** * Returns whether the given package is a device owner or a profile owner in the calling user. diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 225c998d4c50f..ccbf73ca9ab0f 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -4760,31 +4760,13 @@ public class UserManagerService extends IUserManager.Stub { final boolean hasParent = user.profileGroupId != user.id && user.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID; if (verbose) { - final DevicePolicyManagerInternal dpm = getDevicePolicyManagerInternal(); - String deviceOwner = ""; - String profileOwner = ""; - if (dpm != null) { - final long ident = Binder.clearCallingIdentity(); - try { - if (dpm.getDeviceOwnerUserId() == user.id) { - deviceOwner = " (device-owner)"; - } - if (dpm.getProfileOwnerAsUser(user.id) != null) { - profileOwner = " (profile-owner)"; - } - } finally { - Binder.restoreCallingIdentity(ident); - } - } - pw.printf("%d: id=%d, name=%s, flags=%s%s%s%s%s%s%s%s%s\n", i, user.id, - user.name, + pw.printf("%d: id=%d, name=%s, flags=%s%s%s%s%s%s%s\n", i, user.id, user.name, UserInfo.flagsToString(user.flags), hasParent ? " (parentId=" + user.profileGroupId + ")" : "", running ? " (running)" : "", user.partial ? " (partial)" : "", user.preCreated ? " (pre-created)" : "", user.convertedFromPreCreated ? " (converted)" : "", - deviceOwner, profileOwner, current ? " (current)" : ""); } else { // NOTE: the standard "list users" command is used by integration tests and @@ -4878,21 +4860,6 @@ public class UserManagerService extends IUserManager.Stub { if (userInfo.convertedFromPreCreated) { pw.print(" "); } - final DevicePolicyManagerInternal dpm = getDevicePolicyManagerInternal(); - if (dpm != null) { - final long ident = Binder.clearCallingIdentity(); - try { - if (dpm.getDeviceOwnerUserId() == userId) { - pw.print(" "); - } - if (dpm.getProfileOwnerAsUser(userId) != null) { - pw.print(" "); - } - } finally { - Binder.restoreCallingIdentity(ident); - } - } - pw.println(); pw.print(" Type: "); pw.println(userInfo.userType); pw.print(" Flags: "); pw.print(userInfo.flags); pw.print(" ("); diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index f2c65e230ec20..0c00e3d63f889 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -11766,13 +11766,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } @Override - public ComponentName getProfileOwnerAsUser(@UserIdInt int userId) { - return DevicePolicyManagerService.this.getProfileOwnerAsUser(userId); - } - - @Override - public int getDeviceOwnerUserId() { - return DevicePolicyManagerService.this.getDeviceOwnerUserId(); + public ComponentName getProfileOwnerAsUser(int userHandle) { + return DevicePolicyManagerService.this.getProfileOwnerAsUser(userHandle); } @Override From 884b0f6354b81400e2f62c0c4b71bd22f78c0035 Mon Sep 17 00:00:00 2001 From: Eugene Susla Date: Wed, 23 Dec 2020 18:14:15 -0800 Subject: [PATCH 058/192] Nullcheck device profile when re-granting on package change Test: presubmit Fixes: 176250389 Change-Id: I9c4e071b12335fdfc1177ab60e03002ae2704cc3 (cherry picked from commit d170c5c7f36db835dde03e9637c141313d8e35c5) --- .../CompanionDeviceManagerService.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index 70b2672f70b60..8a27acce03c35 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -872,20 +872,22 @@ public class CompanionDeviceManagerService extends SystemService implements Bind } private void grantDeviceProfile(Association association) { - mRoleManager.addRoleHolderAsUser( - association.getDeviceProfile(), - association.getPackageName(), - RoleManager.MANAGE_HOLDERS_FLAG_DONT_KILL_APP, - UserHandle.of(association.getUserId()), - getContext().getMainExecutor(), - success -> { - if (!success) { - Log.e(LOG_TAG, "Failed to grant device profile role " - + association.getDeviceProfile() - + " to " + association.getPackageName() - + " for user " + association.getUserId()); - } - }); + if (association.getDeviceProfile() != null) { + mRoleManager.addRoleHolderAsUser( + association.getDeviceProfile(), + association.getPackageName(), + RoleManager.MANAGE_HOLDERS_FLAG_DONT_KILL_APP, + UserHandle.of(association.getUserId()), + getContext().getMainExecutor(), + success -> { + if (!success) { + Log.e(LOG_TAG, "Failed to grant device profile role " + + association.getDeviceProfile() + + " to " + association.getPackageName() + + " for user " + association.getUserId()); + } + }); + } } void onDeviceDisconnected(String address) { From 87dc86e3b915b012070d153c3ff17ac7e77b99a3 Mon Sep 17 00:00:00 2001 From: Miranda Kephart Date: Wed, 6 Jan 2021 16:18:47 +0000 Subject: [PATCH 059/192] Revert "Add shared transitions for screenshot->markup" This reverts commit 6b330ef7eec82acae8ae5b4d503d0f6745f49455. Reason for revert: cause of bug: 176874121 Change-Id: Icc87484f7cbe26bbe479fc47dca0aadae82e377b (cherry picked from commit 524336dbbddf26475300561d9983a368065abe92) --- .../android/internal/app/ChooserActivity.java | 2 +- .../screenshot/SaveImageInBackgroundTask.java | 89 +++++++++--------- .../screenshot/ScreenshotController.java | 29 +++--- .../systemui/screenshot/ScreenshotView.java | 91 ++++++++----------- .../screenshot/TakeScreenshotService.java | 4 +- ...creenshotNotificationSmartActionsTest.java | 12 +-- 6 files changed, 100 insertions(+), 127 deletions(-) diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 666ee6e606a7b..e06413783fe4f 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -182,7 +182,7 @@ public class ChooserActivity extends ResolverActivity implements * To be used for shared element transition into this activity. * @hide */ - public static final String FIRST_IMAGE_PREVIEW_TRANSITION_NAME = "screenshot_preview_image"; + public static final String FIRST_IMAGE_PREVIEW_TRANSITION_NAME = "chooser_preview_image_1"; private static final String PREF_NUM_SHEET_EXPANSIONS = "pref_num_sheet_expansions"; diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java index 57a41d9149109..334693589503e 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java @@ -57,7 +57,7 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.systemui.R; import com.android.systemui.SystemUIFactory; -import com.android.systemui.screenshot.ScreenshotController.SavedImageData.ActionTransition; +import com.android.systemui.screenshot.ScreenshotController.SavedImageData.ShareTransition; import java.io.File; import java.io.IOException; @@ -98,11 +98,11 @@ class SaveImageInBackgroundTask extends AsyncTask { private final String mScreenshotId; private final boolean mSmartActionsEnabled; private final Random mRandom = new Random(); - private final Supplier mSharedElementTransition; + private final Supplier mSharedElementTransition; SaveImageInBackgroundTask(Context context, ScreenshotSmartActions screenshotSmartActions, ScreenshotController.SaveImageInBackgroundData data, - Supplier sharedElementTransition) { + Supplier sharedElementTransition) { mContext = context; mScreenshotSmartActions = screenshotSmartActions; mImageData = new ScreenshotController.SavedImageData(); @@ -239,7 +239,7 @@ class SaveImageInBackgroundTask extends AsyncTask { mImageData.uri = uri; mImageData.smartActions = smartActions; mImageData.shareTransition = createShareAction(mContext, mContext.getResources(), uri); - mImageData.editTransition = createEditAction(mContext, mContext.getResources(), uri); + mImageData.editAction = createEditAction(mContext, mContext.getResources(), uri); mImageData.deleteAction = createDeleteAction(mContext, mContext.getResources(), uri); mParams.mActionsReadyListener.onActionsReady(mImageData); @@ -293,9 +293,9 @@ class SaveImageInBackgroundTask extends AsyncTask { * Assumes that the action intent is sent immediately after being supplied. */ @VisibleForTesting - Supplier createShareAction(Context context, Resources r, Uri uri) { + Supplier createShareAction(Context context, Resources r, Uri uri) { return () -> { - ActionTransition transition = mSharedElementTransition.get(); + ShareTransition transition = mSharedElementTransition.get(); // Note: Both the share and edit actions are proxied through ActionProxyReceiver in // order to do some common work like dismissing the keyguard and sending @@ -348,57 +348,52 @@ class SaveImageInBackgroundTask extends AsyncTask { Icon.createWithResource(r, R.drawable.ic_screenshot_share), r.getString(com.android.internal.R.string.share), shareAction); - transition.action = shareActionBuilder.build(); + transition.shareAction = shareActionBuilder.build(); return transition; }; } @VisibleForTesting - Supplier createEditAction(Context context, Resources r, Uri uri) { - return () -> { - ActionTransition transition = mSharedElementTransition.get(); - // Note: Both the share and edit actions are proxied through ActionProxyReceiver in - // order to do some common work like dismissing the keyguard and sending - // closeSystemWindows + Notification.Action createEditAction(Context context, Resources r, Uri uri) { + // Note: Both the share and edit actions are proxied through ActionProxyReceiver in + // order to do some common work like dismissing the keyguard and sending + // closeSystemWindows - // Create an edit intent, if a specific package is provided as the editor, then - // launch that directly - String editorPackage = context.getString(R.string.config_screenshotEditor); - Intent editIntent = new Intent(Intent.ACTION_EDIT); - if (!TextUtils.isEmpty(editorPackage)) { - editIntent.setComponent(ComponentName.unflattenFromString(editorPackage)); - } - editIntent.setDataAndType(uri, "image/png"); - editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - editIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); - editIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + // Create an edit intent, if a specific package is provided as the editor, then + // launch that directly + String editorPackage = context.getString(R.string.config_screenshotEditor); + Intent editIntent = new Intent(Intent.ACTION_EDIT); + if (!TextUtils.isEmpty(editorPackage)) { + editIntent.setComponent(ComponentName.unflattenFromString(editorPackage)); + } + editIntent.setDataAndType(uri, "image/png"); + editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + editIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); + editIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - PendingIntent pendingIntent = PendingIntent.getActivityAsUser( - context, 0, editIntent, PendingIntent.FLAG_IMMUTABLE, - transition.bundle, UserHandle.CURRENT); + PendingIntent pendingIntent = PendingIntent.getActivityAsUser(context, 0, + editIntent, PendingIntent.FLAG_IMMUTABLE, null, UserHandle.CURRENT); - // Make sure pending intents for the system user are still unique across users - // by setting the (otherwise unused) request code to the current user id. - int requestCode = mContext.getUserId(); + // Make sure pending intents for the system user are still unique across users + // by setting the (otherwise unused) request code to the current user id. + int requestCode = mContext.getUserId(); - // Create a edit action - PendingIntent editAction = PendingIntent.getBroadcastAsUser(context, requestCode, - new Intent(context, ActionProxyReceiver.class) - .putExtra(ScreenshotController.EXTRA_ACTION_INTENT, pendingIntent) - .putExtra(ScreenshotController.EXTRA_ID, mScreenshotId) - .putExtra(ScreenshotController.EXTRA_SMART_ACTIONS_ENABLED, - mSmartActionsEnabled) - .setAction(Intent.ACTION_EDIT) - .addFlags(Intent.FLAG_RECEIVER_FOREGROUND), - PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE, - UserHandle.SYSTEM); - Notification.Action.Builder editActionBuilder = new Notification.Action.Builder( - Icon.createWithResource(r, R.drawable.ic_screenshot_edit), - r.getString(com.android.internal.R.string.screenshot_edit), editAction); + // Create a edit action + PendingIntent editAction = PendingIntent.getBroadcastAsUser(context, requestCode, + new Intent(context, ActionProxyReceiver.class) + .putExtra(ScreenshotController.EXTRA_ACTION_INTENT, pendingIntent) + .putExtra(ScreenshotController.EXTRA_ID, mScreenshotId) + .putExtra(ScreenshotController.EXTRA_SMART_ACTIONS_ENABLED, + mSmartActionsEnabled) + .setAction(Intent.ACTION_EDIT) + .addFlags(Intent.FLAG_RECEIVER_FOREGROUND), + PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE, + UserHandle.SYSTEM); + Notification.Action.Builder editActionBuilder = new Notification.Action.Builder( + Icon.createWithResource(r, R.drawable.ic_screenshot_edit), + r.getString(com.android.internal.R.string.screenshot_edit), editAction); - transition.action = editActionBuilder.build(); - return transition; - }; + return editActionBuilder.build(); } @VisibleForTesting diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java index 68d7343ec144c..d2fe5d284a97a 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java @@ -78,7 +78,7 @@ import com.android.internal.logging.UiEventLogger; import com.android.internal.policy.PhoneWindow; import com.android.settingslib.applications.InterestingConfigChanges; import com.android.systemui.R; -import com.android.systemui.screenshot.ScreenshotController.SavedImageData.ActionTransition; +import com.android.systemui.screenshot.ScreenshotController.SavedImageData.ShareTransition; import com.android.systemui.util.DeviceConfigProxy; import java.util.List; @@ -111,17 +111,17 @@ public class ScreenshotController { */ static class SavedImageData { public Uri uri; - public Supplier shareTransition; - public Supplier editTransition; + public Supplier shareTransition; + public Notification.Action editAction; public Notification.Action deleteAction; public List smartActions; /** - * POD for shared element transition. + * POD for shared element transition to share sheet. */ - static class ActionTransition { + static class ShareTransition { public Bundle bundle; - public Notification.Action action; + public Notification.Action shareAction; public Runnable onCancelRunnable; } @@ -131,7 +131,7 @@ public class ScreenshotController { public void reset() { uri = null; shareTransition = null; - editTransition = null; + editAction = null; deleteAction = null; smartActions = null; } @@ -339,10 +339,6 @@ public class ScreenshotController { } } - boolean isPendingSharedTransition() { - return mScreenshotView.isPendingSharedTransition(); - } - /** * Update resources on configuration change. Reinflate for theme/color changes. */ @@ -466,7 +462,7 @@ public class ScreenshotController { Log.d(TAG, "saveScreenshot: screenshotView is already attached, resetting. " + "(dismissing=" + mScreenshotView.isDismissing() + ")"); } - reloadAssets(); + mScreenshotView.reset(); } mScreenBitmap = screenshot; @@ -609,7 +605,7 @@ public class ScreenshotController { } mSaveInBgTask = new SaveImageInBackgroundTask(mContext, mScreenshotSmartActions, data, - getActionTransitionSupplier()); + getShareTransitionSupplier()); mSaveInBgTask.execute(); } @@ -663,7 +659,7 @@ public class ScreenshotController { * Supplies the necessary bits for the shared element transition to share sheet. * Note that once supplied, the action intent to share must be sent immediately after. */ - private Supplier getActionTransitionSupplier() { + private Supplier getShareTransitionSupplier() { return () -> { ExitTransitionCallbacks cb = new ExitTransitionCallbacks() { @Override @@ -672,8 +668,7 @@ public class ScreenshotController { } @Override - public void onFinish() { - } + public void onFinish() { } }; Pair transition = @@ -682,7 +677,7 @@ public class ScreenshotController { ChooserActivity.FIRST_IMAGE_PREVIEW_TRANSITION_NAME)); transition.second.startExit(); - ActionTransition supply = new ActionTransition(); + ShareTransition supply = new ShareTransition(); supply.bundle = transition.first.toBundle(); supply.onCancelRunnable = () -> ActivityOptions.stopSharedElementAnimation(mWindow); return supply; diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java index c6e0acead8b7a..357702ada82b1 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotView.java @@ -73,7 +73,7 @@ import android.widget.LinearLayout; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; -import com.android.systemui.screenshot.ScreenshotController.SavedImageData.ActionTransition; +import com.android.systemui.screenshot.ScreenshotController.SavedImageData.ShareTransition; import com.android.systemui.shared.system.QuickStepContract; import java.util.ArrayList; @@ -105,6 +105,7 @@ public class ScreenshotView extends FrameLayout implements private static final long SCREENSHOT_DISMISS_Y_DURATION_MS = 350; private static final long SCREENSHOT_DISMISS_ALPHA_DURATION_MS = 183; private static final long SCREENSHOT_DISMISS_ALPHA_OFFSET_MS = 50; // delay before starting fade + private static final long SCREENSHOT_DISMISS_SHARE_OFFSET_MS = 300; // delay after share clicked private static final float SCREENSHOT_ACTIONS_START_SCALE_X = .7f; private static final float ROUNDED_CORNER_RADIUS = .05f; private static final int SWIPE_PADDING_DP = 12; // extra padding around views to allow swipe @@ -139,7 +140,7 @@ public class ScreenshotView extends FrameLayout implements private UiEventLogger mUiEventLogger; private ScreenshotViewCallback mCallbacks; private Animator mDismissAnimation; - private boolean mPendingSharedTransition; + private boolean mIgnoreDismiss; private final ArrayList mSmartChips = new ArrayList<>(); private PendingInteraction mPendingInteraction; @@ -291,10 +292,6 @@ public class ScreenshotView extends FrameLayout implements requestFocus(); } - View getScreenshotPreview() { - return mScreenshotPreview; - } - /** * Set up the logger and callback on dismissal. * @@ -532,22 +529,44 @@ public class ScreenshotView extends FrameLayout implements }); return animator; } + protected View getScreenshotPreview() { + return mScreenshotPreview; + } void setChipIntents(ScreenshotController.SavedImageData imageData) { mShareChip.setOnClickListener(v -> { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SHARE_TAPPED); - startSharedTransition( - imageData.shareTransition.get()); - }); - mEditChip.setOnClickListener(v -> { - mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_EDIT_TAPPED); - startSharedTransition( - imageData.editTransition.get()); + ShareTransition transition = imageData.shareTransition.get(); + try { + mIgnoreDismiss = true; + transition.shareAction.actionIntent.send(); + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_SHARE_TAPPED); + + // Ensures that we delay dismissing until transition has started. + postDelayed(() -> { + mIgnoreDismiss = false; + animateDismissal(); + }, SCREENSHOT_DISMISS_SHARE_OFFSET_MS); + } catch (PendingIntent.CanceledException e) { + mIgnoreDismiss = false; + if (transition.onCancelRunnable != null) { + transition.onCancelRunnable.run(); + } + Log.e(TAG, "Share intent cancelled", e); + } }); + mEditChip.setPendingIntent(imageData.editAction.actionIntent, + () -> { + mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_EDIT_TAPPED); + animateDismissal(); + }); mScreenshotPreview.setOnClickListener(v -> { + try { + imageData.editAction.actionIntent.send(); + } catch (PendingIntent.CanceledException e) { + Log.e(TAG, "PendingIntent was cancelled", e); + } mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_PREVIEW_TAPPED); - startSharedTransition( - imageData.editTransition.get()); + animateDismissal(); }); if (mPendingInteraction != null) { @@ -586,16 +605,12 @@ public class ScreenshotView extends FrameLayout implements return (mDismissAnimation != null && mDismissAnimation.isRunning()); } - boolean isPendingSharedTransition() { - return mPendingSharedTransition; - } - void animateDismissal() { - animateDismissal(createScreenshotTranslateDismissAnimation()); + animateDismissal(createScreenshotDismissAnimation()); } private void animateDismissal(Animator dismissAnimation) { - if (mPendingSharedTransition) { + if (mIgnoreDismiss) { return; } if (DEBUG_WINDOW) { @@ -650,7 +665,6 @@ public class ScreenshotView extends FrameLayout implements getViewTreeObserver().removeOnComputeInternalInsetsListener(this); // Clear any references to the bitmap mScreenshotPreview.setImageDrawable(null); - mPendingSharedTransition = false; mActionsContainerBackground.setVisibility(View.GONE); mActionsContainer.setVisibility(View.GONE); mBackgroundProtection.setAlpha(0f); @@ -678,23 +692,7 @@ public class ScreenshotView extends FrameLayout implements mScreenshotSelectorView.stop(); } - private void startSharedTransition(ActionTransition transition) { - try { - mPendingSharedTransition = true; - transition.action.actionIntent.send(); - - // fade out non-preview UI - createScreenshotFadeDismissAnimation().start(); - } catch (PendingIntent.CanceledException e) { - mPendingSharedTransition = false; - if (transition.onCancelRunnable != null) { - transition.onCancelRunnable.run(); - } - Log.e(TAG, "Intent cancelled", e); - } - } - - private AnimatorSet createScreenshotTranslateDismissAnimation() { + private AnimatorSet createScreenshotDismissAnimation() { ValueAnimator alphaAnim = ValueAnimator.ofFloat(0, 1); alphaAnim.setStartDelay(SCREENSHOT_DISMISS_ALPHA_OFFSET_MS); alphaAnim.setDuration(SCREENSHOT_DISMISS_ALPHA_DURATION_MS); @@ -721,19 +719,6 @@ public class ScreenshotView extends FrameLayout implements return animSet; } - private ValueAnimator createScreenshotFadeDismissAnimation() { - ValueAnimator alphaAnim = ValueAnimator.ofFloat(0, 1); - alphaAnim.addUpdateListener(animation -> { - float alpha = 1 - animation.getAnimatedFraction(); - mDismissButton.setAlpha(alpha); - mActionsContainerBackground.setAlpha(alpha); - mActionsContainer.setAlpha(alpha); - mBackgroundProtection.setAlpha(alpha); - }); - alphaAnim.setDuration(600); - return alphaAnim; - } - /** * Create a drawable using the size of the bitmap and insets as the fractional inset parameters. */ diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java index 7621587ac838e..c2b20d37f3f39 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/TakeScreenshotService.java @@ -72,9 +72,7 @@ public class TakeScreenshotService extends Service { if (DEBUG_DISMISS) { Log.d(TAG, "Received ACTION_CLOSE_SYSTEM_DIALOGS"); } - if (!mScreenshot.isPendingSharedTransition()) { - mScreenshot.dismissScreenshot(false); - } + mScreenshot.dismissScreenshot(false); } } }; diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java index c79416a76fb2e..6759c90753567 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java @@ -43,7 +43,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.SystemUIFactory; import com.android.systemui.SysuiTestCase; -import com.android.systemui.screenshot.ScreenshotController.SavedImageData.ActionTransition; +import com.android.systemui.screenshot.ScreenshotController.SavedImageData.ShareTransition; import org.junit.Before; import org.junit.Test; @@ -177,10 +177,10 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { data.mActionsReadyListener = null; SaveImageInBackgroundTask task = new SaveImageInBackgroundTask(mContext, mScreenshotSmartActions, data, - ActionTransition::new); + ShareTransition::new); Notification.Action shareAction = task.createShareAction(mContext, mContext.getResources(), - Uri.parse("Screenshot_123.png")).get().action; + Uri.parse("Screenshot_123.png")).get().shareAction; Intent intent = shareAction.actionIntent.getIntent(); assertNotNull(intent); @@ -205,10 +205,10 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { data.mActionsReadyListener = null; SaveImageInBackgroundTask task = new SaveImageInBackgroundTask(mContext, mScreenshotSmartActions, data, - ActionTransition::new); + ShareTransition::new); Notification.Action editAction = task.createEditAction(mContext, mContext.getResources(), - Uri.parse("Screenshot_123.png")).get().action; + Uri.parse("Screenshot_123.png")); Intent intent = editAction.actionIntent.getIntent(); assertNotNull(intent); @@ -233,7 +233,7 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { data.mActionsReadyListener = null; SaveImageInBackgroundTask task = new SaveImageInBackgroundTask(mContext, mScreenshotSmartActions, data, - ActionTransition::new); + ShareTransition::new); Notification.Action deleteAction = task.createDeleteAction(mContext, mContext.getResources(), From 2cda7dde36909a63946853cb2506c6deaf0f5ef2 Mon Sep 17 00:00:00 2001 From: Connor O'Brien Date: Thu, 7 Jan 2021 23:48:35 +0000 Subject: [PATCH 060/192] Revert "Clear BPF data in KernelCpuUidTimeReader.removeUid()" This reverts commit 2eb8ad6245597ab05855448958360c3700a29bce. Reason for revert: Bug: 177011744 Change-Id: Ib9f1c0bda7d6df1b75dbe409f96dab39c1659781 (cherry picked from commit 0648bad1b66062de34297c7ed3bdf08684907213) --- core/java/com/android/internal/os/KernelCpuUidTimeReader.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/java/com/android/internal/os/KernelCpuUidTimeReader.java b/core/java/com/android/internal/os/KernelCpuUidTimeReader.java index 2dd51b4459e7d..f7fad2c5bbaa1 100644 --- a/core/java/com/android/internal/os/KernelCpuUidTimeReader.java +++ b/core/java/com/android/internal/os/KernelCpuUidTimeReader.java @@ -143,10 +143,6 @@ public abstract class KernelCpuUidTimeReader { */ public void removeUid(int uid) { mLastTimes.delete(uid); - - if (mBpfTimesAvailable) { - mBpfReader.removeUidsInRange(uid, uid); - } } /** From 06abe850f0209af926672dbe16455964434822fb Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Mon, 11 Jan 2021 18:08:49 +0800 Subject: [PATCH 061/192] Revert "Create surfacecontrol before layout in relayoutWindow" The change could break legacySplitScreen functionality. Upload a revert CL to verify flicker tests. This reverts commit d7bdb80ef4c64df8eb3421ed645bb1722d0e8027. Fixes: 177193568 Test: manual enter legacySplitScreen mode and dismiss Test: atest com.android.wm.shell.flicker.legacysplitscreen Change-Id: Ib25268f4a4a2045e44e13ea410997130bada0e6e (cherry picked from commit 0e07d7f44dfe569eb758b8b001b6af01fa1d76b8) --- .../server/wm/WindowManagerService.java | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 3bdc16f0107a9..4eeae6c0710c5 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2332,9 +2332,15 @@ public class WindowManagerService extends IWindowManager.Stub } } - // Create surfaceControl before surface placement otherwise layout will be skipped - // (because WS.isGoneForLayout() is true when there is no surface. + // We may be deferring layout passes at the moment, but since the client is interested + // in the new out values right now we need to force a layout. + mWindowPlacerLocked.performSurfacePlacement(true /* force */); + if (shouldRelayout) { + Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "relayoutWindow: viewVisibility_1"); + + result = win.relayoutVisibleWindow(result, attrChanges); + try { result = createSurfaceControl(outSurfaceControl, result, win, winAnimator); } catch (Exception e) { @@ -2346,17 +2352,6 @@ public class WindowManagerService extends IWindowManager.Stub Binder.restoreCallingIdentity(origId); return 0; } - } - - // We may be deferring layout passes at the moment, but since the client is interested - // in the new out values right now we need to force a layout. - mWindowPlacerLocked.performSurfacePlacement(true /* force */); - - if (shouldRelayout) { - Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "relayoutWindow: viewVisibility_1"); - - result = win.relayoutVisibleWindow(result, attrChanges); - if ((result & WindowManagerGlobal.RELAYOUT_RES_FIRST_TIME) != 0) { focusMayChange = true; } From 8e85414cc1ff56c21625d47b3363c0c8cb304ab1 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Fri, 11 Dec 2020 12:59:44 -0800 Subject: [PATCH 062/192] Added profile-owner and device-owner on cmd user list. Examples: $ adb shell cmd user list -v 3 users: 0: id=0, name=Driver, flags=ADMIN|INITIALIZED|PRIMARY|SYSTEM (running) (device-owner) 1: id=10, name=Driver, flags=ADMIN|FULL|INITIALIZED 2: id=11, name=HomerSimpson, flags=FULL|INITIALIZED (running) (converted) (profile-owner) (current) Test: see above Bug: 156263735 Bug: 175860401 Change-Id: I68a3394eb48ef11d6a4d71ad90df3df137af3874 (cherry picked from commit 112bf90c9e420168f2745ee6180447d157e1603f) --- .../admin/DevicePolicyManagerInternal.java | 8 ++++++- .../android/server/pm/UserManagerService.java | 21 ++++++++++++++++++- .../DevicePolicyManagerService.java | 9 ++++++-- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/core/java/android/app/admin/DevicePolicyManagerInternal.java b/core/java/android/app/admin/DevicePolicyManagerInternal.java index ce2fd4fb60b20..a0d2977cf09a9 100644 --- a/core/java/android/app/admin/DevicePolicyManagerInternal.java +++ b/core/java/android/app/admin/DevicePolicyManagerInternal.java @@ -231,7 +231,13 @@ public abstract class DevicePolicyManagerInternal { * Returns the profile owner component for the given user, or {@code null} if there is not one. */ @Nullable - public abstract ComponentName getProfileOwnerAsUser(int userHandle); + public abstract ComponentName getProfileOwnerAsUser(@UserIdInt int userId); + + /** + * Returns the user id of the device owner, or {@link UserHandle#USER_NULL} if there is not one. + */ + @UserIdInt + public abstract int getDeviceOwnerUserId(); /** * Returns whether the given package is a device owner or a profile owner in the calling user. diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index e20ed05dc4b4c..19a94b39ea202 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -4762,13 +4762,32 @@ public class UserManagerService extends IUserManager.Stub { final boolean hasParent = user.profileGroupId != user.id && user.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID; if (verbose) { - pw.printf("%d: id=%d, name=%s, flags=%s%s%s%s%s%s%s\n", i, user.id, user.name, + final DevicePolicyManagerInternal dpm = getDevicePolicyManagerInternal(); + String deviceOwner = ""; + String profileOwner = ""; + if (dpm != null) { + final long ident = Binder.clearCallingIdentity(); + // NOTE: dpm methods below CANNOT be called while holding the mUsersLock + try { + if (dpm.getDeviceOwnerUserId() == user.id) { + deviceOwner = " (device-owner)"; + } + if (dpm.getProfileOwnerAsUser(user.id) != null) { + profileOwner = " (profile-owner)"; + } + } finally { + Binder.restoreCallingIdentity(ident); + } + } + pw.printf("%d: id=%d, name=%s, flags=%s%s%s%s%s%s%s%s%s\n", i, user.id, + user.name, UserInfo.flagsToString(user.flags), hasParent ? " (parentId=" + user.profileGroupId + ")" : "", running ? " (running)" : "", user.partial ? " (partial)" : "", user.preCreated ? " (pre-created)" : "", user.convertedFromPreCreated ? " (converted)" : "", + deviceOwner, profileOwner, current ? " (current)" : ""); } else { // NOTE: the standard "list users" command is used by integration tests and diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 7d199cab1d358..4fe275250ddfd 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -12051,8 +12051,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } @Override - public ComponentName getProfileOwnerAsUser(int userHandle) { - return DevicePolicyManagerService.this.getProfileOwnerAsUser(userHandle); + public ComponentName getProfileOwnerAsUser(@UserIdInt int userId) { + return DevicePolicyManagerService.this.getProfileOwnerAsUser(userId); + } + + @Override + public int getDeviceOwnerUserId() { + return DevicePolicyManagerService.this.getDeviceOwnerUserId(); } @Override From 1e5b12890a829c70c9a359f24d276cdfdbd5526f Mon Sep 17 00:00:00 2001 From: Beverly Date: Thu, 14 Jan 2021 14:47:47 -0500 Subject: [PATCH 063/192] Revert LS/AOD clock color change Until new colors will take into account contrast with the wallpaper. Test: manual Bug: 170228350 Change-Id: Icd3628e1f8aedfaeeb3b1cd264c6d0851b0f8cce (cherry picked from commit ce5d7b481a541e2a68274ab73ca6b146d17be218) --- .../src/com/android/keyguard/AnimatableClockController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/keyguard/AnimatableClockController.java b/packages/SystemUI/src/com/android/keyguard/AnimatableClockController.java index 302a2620aac0c..59e81cf96bb23 100644 --- a/packages/SystemUI/src/com/android/keyguard/AnimatableClockController.java +++ b/packages/SystemUI/src/com/android/keyguard/AnimatableClockController.java @@ -85,8 +85,8 @@ public class AnimatableClockController extends ViewController Date: Fri, 15 Jan 2021 12:33:29 +0000 Subject: [PATCH 064/192] Re-add preinstalled for SYSTEM_ALERT_WINDOW Dailer currently uses SAW, regrant them SAW through preinstalled until we have another solution. This is reverting I2451d51f4ab42a852992505c5e1919a3c01525d0 and If7f0f041f96c9702181f3133383c3b7959851cbb Bug: 159616727 Bug: 173705498 Bug: 177399315 Test: atest PermissionPolicyTest Test: Manually verified that Phone is granted SAW Change-Id: Ibfde4561be64b7a4b6b578f745b785615cdefd03 (cherry picked from commit 620373b93c2e7e9f63b85a28d127e22b89830b70) --- core/res/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 51fb264cfeb8a..b705a016c5e34 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -2676,11 +2676,11 @@ The app can check whether it has this authorization by calling {@link android.provider.Settings#canDrawOverlays Settings.canDrawOverlays()}. -

Protection level: signature|appop|installer|pre23|development|recents --> +

Protection level: signature|appop|preinstalled|pre23|development --> + android:protectionLevel="signature|appop|preinstalled|pre23|development" /> - 4 + 6 - 4 + 3 3 diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java index 2dfac1b55732f..fa1f7c4e22f95 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizerController.java @@ -146,7 +146,8 @@ public class QSCustomizerController extends ViewController { RecyclerView recyclerView = mView.getRecyclerView(); recyclerView.setAdapter(mTileAdapter); mTileAdapter.getItemTouchHelper().attachToRecyclerView(recyclerView); - GridLayoutManager layout = new GridLayoutManager(getContext(), TileAdapter.NUM_COLUMNS) { + GridLayoutManager layout = + new GridLayoutManager(getContext(), mTileAdapter.getNumColumns()) { @Override public void onInitializeAccessibilityNodeInfoForItem(RecyclerView.Recycler recycler, RecyclerView.State state, View host, AccessibilityNodeInfoCompat info) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java index 036fa8667c6fd..507048c621860 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java @@ -61,7 +61,6 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta private static final long DRAG_LENGTH = 100; private static final float DRAG_SCALE = 1.2f; public static final long MOVE_DURATION = 150; - public static final int NUM_COLUMNS = 4; private static final int TYPE_TILE = 0; private static final int TYPE_EDIT = 1; @@ -99,6 +98,7 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta private final UiEventLogger mUiEventLogger; private final AccessibilityDelegateCompat mAccessibilityDelegate; private RecyclerView mRecyclerView; + private final int mNumColumns; @Inject public TileAdapter(Context context, QSTileHost qsHost, UiEventLogger uiEventLogger) { @@ -109,6 +109,7 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta mDecoration = new TileItemDecoration(context); mMarginDecoration = new MarginTileDecoration(); mMinNumTiles = context.getResources().getInteger(R.integer.quick_settings_min_num_tiles); + mNumColumns = context.getResources().getInteger(R.integer.quick_settings_num_columns); mAccessibilityDelegate = new TileAdapterDelegate(); } @@ -122,6 +123,10 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta mRecyclerView = null; } + public int getNumColumns() { + return mNumColumns; + } + public ItemTouchHelper getItemTouchHelper() { return mItemTouchHelper; } @@ -602,7 +607,7 @@ public class TileAdapter extends RecyclerView.Adapter implements TileSta public int getSpanSize(int position) { final int type = getItemViewType(position); if (type == TYPE_EDIT || type == TYPE_DIVIDER || type == TYPE_HEADER) { - return NUM_COLUMNS; + return mNumColumns; } else { return 1; } From 439452da9dd2f53d832eb11c06aba54aa09785ff Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Mon, 25 Jan 2021 16:06:54 +0000 Subject: [PATCH 076/192] Revert "[SettingsProvider] @Readable annotation to restrict acce..." Revert "[cts] tests for settings readable fields" Revert submission 13355582-settings_readable Reason for revert: b/178340718 b/178329499 b/178234427 Reverted Changes: Id1f133d52:[cts] tests for settings readable fields I8a2733580:[SettingsProvider] @Readable annotation to restric... Change-Id: Ia55e58106e49ba411603bbadd8d909e22516293e (cherry picked from commit 7fd1ba73f4634d88f90842d187e34ad1235a33d8) --- core/java/android/provider/Settings.java | 1586 +++-------------- .../providers/settings/SettingsProvider.java | 54 - 2 files changed, 265 insertions(+), 1375 deletions(-) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 743713c096be9..5a638c3ac4b44 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -89,11 +89,8 @@ import com.android.internal.util.Preconditions; import com.android.internal.widget.ILockSettings; import java.io.IOException; -import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.lang.reflect.Field; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.HashMap; @@ -102,6 +99,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; + /** * The Settings provider contains global system-level device preferences. */ @@ -2661,30 +2659,22 @@ public final class Settings { private final String mCallListCommand; private final String mCallSetAllCommand; - private final ArraySet mReadableFields; - private final ArraySet mAllFields; - @GuardedBy("this") private GenerationTracker mGenerationTracker; - NameValueCache(Uri uri, String getCommand, - String setCommand, ContentProviderHolder providerHolder, Class callerClass) { - this(uri, getCommand, setCommand, null, null, providerHolder, - callerClass); + public NameValueCache(Uri uri, String getCommand, String setCommand, + ContentProviderHolder providerHolder) { + this(uri, getCommand, setCommand, null, null, providerHolder); } - private NameValueCache(Uri uri, String getCommand, - String setCommand, String listCommand, String setAllCommand, - ContentProviderHolder providerHolder, Class callerClass) { + NameValueCache(Uri uri, String getCommand, String setCommand, String listCommand, + String setAllCommand, ContentProviderHolder providerHolder) { mUri = uri; mCallGetCommand = getCommand; mCallSetCommand = setCommand; mCallListCommand = listCommand; mCallSetAllCommand = setAllCommand; mProviderHolder = providerHolder; - mReadableFields = new ArraySet<>(); - mAllFields = new ArraySet<>(); - getPublicSettingsForClass(callerClass, mAllFields, mReadableFields); } public boolean putStringForUser(ContentResolver cr, String name, String value, @@ -2736,18 +2726,6 @@ public final class Settings { @UnsupportedAppUsage public String getStringForUser(ContentResolver cr, String name, final int userHandle) { - // Check if the target settings key is readable. Reject if the caller is not system and - // is trying to access a settings key defined in the Settings.Secure, Settings.System or - // Settings.Global and is not annotated as @Readable. - // Notice that a key string that is not defined in any of the Settings.* classes will - // still be regarded as readable. - if (!Settings.isInSystemServer() && mAllFields.contains(name) - && !mReadableFields.contains(name)) { - throw new SecurityException( - "Settings key: <" + name + "> is not readable. From S+, new public " - + "settings keys need to be annotated with @Readable unless they are " - + "annotated with @hide."); - } final boolean isSelf = (userHandle == UserHandle.myUserId()); int currentGeneration = -1; if (isSelf) { @@ -3088,39 +3066,6 @@ public final class Settings { == PackageManager.PERMISSION_GRANTED; } - /** - * This annotation indicates that the value of a setting is allowed to be read - * with the get* methods. The following settings should be readable: - * 1) all the public settings - * 2) all the hidden settings added before S - */ - @Target({ ElementType.FIELD }) - @Retention(RetentionPolicy.RUNTIME) - private @interface Readable { - } - - private static void getPublicSettingsForClass( - Class callerClass, Set allKeys, Set readableKeys) { - final Field[] allFields = callerClass.getDeclaredFields(); - try { - for (int i = 0; i < allFields.length; i++) { - final Field field = allFields[i]; - if (!field.getType().equals(String.class)) { - continue; - } - final Object value = field.get(callerClass); - if (!value.getClass().equals(String.class)) { - continue; - } - allKeys.add((String) value); - if (field.getAnnotation(Readable.class) != null) { - readableKeys.add((String) value); - } - } - } catch (IllegalAccessException ignored) { - } - } - /** * System settings, containing miscellaneous system preferences. This * table holds simple name/value pairs. There are convenience @@ -3148,8 +3093,7 @@ public final class Settings { CONTENT_URI, CALL_METHOD_GET_SYSTEM, CALL_METHOD_PUT_SYSTEM, - sProviderHolder, - System.class); + sProviderHolder); @UnsupportedAppUsage private static final HashSet MOVED_TO_SECURE; @@ -3203,11 +3147,8 @@ public final class Settings { MOVED_TO_SECURE_THEN_GLOBAL.add(Global.BLUETOOTH_ON); MOVED_TO_SECURE_THEN_GLOBAL.add(Global.DATA_ROAMING); MOVED_TO_SECURE_THEN_GLOBAL.add(Global.DEVICE_PROVISIONED); - MOVED_TO_SECURE_THEN_GLOBAL.add(Global.HTTP_PROXY); - MOVED_TO_SECURE_THEN_GLOBAL.add(Global.NETWORK_PREFERENCE); MOVED_TO_SECURE_THEN_GLOBAL.add(Global.USB_MASS_STORAGE_ENABLED); - MOVED_TO_SECURE_THEN_GLOBAL.add(Global.WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS); - MOVED_TO_SECURE_THEN_GLOBAL.add(Global.WIFI_MAX_DHCP_RETRY_COUNT); + MOVED_TO_SECURE_THEN_GLOBAL.add(Global.HTTP_PROXY); // these are moving directly from system to global MOVED_TO_GLOBAL.add(Settings.Global.AIRPLANE_MODE_ON); @@ -3245,12 +3186,6 @@ public final class Settings { MOVED_TO_GLOBAL.add(Settings.Global.SMS_SHORT_CODES_UPDATE_METADATA_URL); MOVED_TO_GLOBAL.add(Settings.Global.CERT_PIN_UPDATE_CONTENT_URL); MOVED_TO_GLOBAL.add(Settings.Global.CERT_PIN_UPDATE_METADATA_URL); - MOVED_TO_GLOBAL.add(Settings.Global.RADIO_NFC); - MOVED_TO_GLOBAL.add(Settings.Global.RADIO_CELL); - MOVED_TO_GLOBAL.add(Settings.Global.RADIO_WIFI); - MOVED_TO_GLOBAL.add(Settings.Global.RADIO_BLUETOOTH); - MOVED_TO_GLOBAL.add(Settings.Global.RADIO_WIMAX); - MOVED_TO_GLOBAL.add(Settings.Global.SHOW_PROCESSES); } /** @hide */ @@ -3275,11 +3210,6 @@ public final class Settings { sNameValueCache.clearGenerationTrackerForTest(); } - /** @hide */ - public static void getPublicSettings(Set allKeys, Set readableKeys) { - getPublicSettingsForClass(System.class, allKeys, readableKeys); - } - /** * Look up a name in the database. * @param resolver to access the database with @@ -3304,7 +3234,6 @@ public final class Settings { + " to android.provider.Settings.Global, returning read-only value."); return Global.getStringForUser(resolver, name, userHandle); } - return sNameValueCache.getStringForUser(resolver, name, userHandle); } @@ -3782,7 +3711,6 @@ public final class Settings { * 3 - The end button goes to the home screen. If the user is already on the * home screen, it puts the device to sleep. */ - @Readable public static final String END_BUTTON_BEHAVIOR = "end_button_behavior"; /** @@ -3807,7 +3735,6 @@ public final class Settings { * Is advanced settings mode turned on. 0 == no, 1 == yes * @hide */ - @Readable public static final String ADVANCED_SETTINGS = "advanced_settings"; /** @@ -3908,7 +3835,6 @@ public final class Settings { * @deprecated Use {@link WifiManager} instead */ @Deprecated - @Readable public static final String WIFI_USE_STATIC_IP = "wifi_use_static_ip"; /** @@ -3919,7 +3845,6 @@ public final class Settings { * @deprecated Use {@link WifiManager} instead */ @Deprecated - @Readable public static final String WIFI_STATIC_IP = "wifi_static_ip"; /** @@ -3930,7 +3855,6 @@ public final class Settings { * @deprecated Use {@link WifiManager} instead */ @Deprecated - @Readable public static final String WIFI_STATIC_GATEWAY = "wifi_static_gateway"; /** @@ -3941,7 +3865,6 @@ public final class Settings { * @deprecated Use {@link WifiManager} instead */ @Deprecated - @Readable public static final String WIFI_STATIC_NETMASK = "wifi_static_netmask"; /** @@ -3952,7 +3875,6 @@ public final class Settings { * @deprecated Use {@link WifiManager} instead */ @Deprecated - @Readable public static final String WIFI_STATIC_DNS1 = "wifi_static_dns1"; /** @@ -3963,7 +3885,6 @@ public final class Settings { * @deprecated Use {@link WifiManager} instead */ @Deprecated - @Readable public static final String WIFI_STATIC_DNS2 = "wifi_static_dns2"; /** @@ -3974,7 +3895,6 @@ public final class Settings { * 1 -- connectable but not discoverable * 0 -- neither connectable nor discoverable */ - @Readable public static final String BLUETOOTH_DISCOVERABILITY = "bluetooth_discoverability"; @@ -3983,7 +3903,6 @@ public final class Settings { * Bluetooth becomes discoverable for a certain number of seconds, * after which is becomes simply connectable. The value is in seconds. */ - @Readable public static final String BLUETOOTH_DISCOVERABILITY_TIMEOUT = "bluetooth_discoverability_timeout"; @@ -4017,13 +3936,11 @@ public final class Settings { * @deprecated Use {@link android.app.AlarmManager#getNextAlarmClock()}. */ @Deprecated - @Readable public static final String NEXT_ALARM_FORMATTED = "next_alarm_formatted"; /** * Scaling factor for fonts, float. */ - @Readable public static final String FONT_SCALE = "font_scale"; /** @@ -4035,7 +3952,6 @@ public final class Settings { * instead. * @hide */ - @Readable public static final String SYSTEM_LOCALES = "system_locales"; @@ -4061,14 +3977,12 @@ public final class Settings { * @deprecated This setting is no longer used. */ @Deprecated - @Readable public static final String DIM_SCREEN = "dim_screen"; /** * The display color mode. * @hide */ - @Readable public static final String DISPLAY_COLOR_MODE = "display_color_mode"; /** @@ -4077,7 +3991,6 @@ public final class Settings { * If this isn't set, 0 will be used. * @hide */ - @Readable public static final String MIN_REFRESH_RATE = "min_refresh_rate"; /** @@ -4086,7 +3999,6 @@ public final class Settings { * If this isn't set, the system falls back to a device specific default. * @hide */ - @Readable public static final String PEAK_REFRESH_RATE = "peak_refresh_rate"; /** @@ -4099,27 +4011,23 @@ public final class Settings { * This value is bounded by maximum timeout set by * {@link android.app.admin.DevicePolicyManager#setMaximumTimeToLock(ComponentName, long)}. */ - @Readable public static final String SCREEN_OFF_TIMEOUT = "screen_off_timeout"; /** * The screen backlight brightness between 0 and 255. */ - @Readable public static final String SCREEN_BRIGHTNESS = "screen_brightness"; /** * The screen backlight brightness between 0 and 255. * @hide */ - @Readable public static final String SCREEN_BRIGHTNESS_FOR_VR = "screen_brightness_for_vr"; /** * The screen backlight brightness between 0.0f and 1.0f. * @hide */ - @Readable public static final String SCREEN_BRIGHTNESS_FOR_VR_FLOAT = "screen_brightness_for_vr_float"; @@ -4127,13 +4035,11 @@ public final class Settings { * The screen backlight brightness between 0.0f and 1.0f. * @hide */ - @Readable public static final String SCREEN_BRIGHTNESS_FLOAT = "screen_brightness_float"; /** * Control whether to enable automatic brightness mode. */ - @Readable public static final String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode"; /** @@ -4142,7 +4048,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String SCREEN_AUTO_BRIGHTNESS_ADJ = "screen_auto_brightness_adj"; /** @@ -4186,7 +4091,6 @@ public final class Settings { * stream type's bit should be set to 1 if it should be muted when going * into an inaudible ringer mode. */ - @Readable public static final String MODE_RINGER_STREAMS_AFFECTED = "mode_ringer_streams_affected"; /** @@ -4194,14 +4098,12 @@ public final class Settings { * stream type's bit should be set to 1 if it should be muted when a mute request * is received. */ - @Readable public static final String MUTE_STREAMS_AFFECTED = "mute_streams_affected"; /** * Whether vibrate is on for different events. This is used internally, * changing this value will not change the vibrate. See AudioManager. */ - @Readable public static final String VIBRATE_ON = "vibrate_on"; /** @@ -4216,7 +4118,6 @@ public final class Settings { * * @hide */ - @Readable public static final String VIBRATE_INPUT_DEVICES = "vibrate_input_devices"; /** @@ -4233,7 +4134,6 @@ public final class Settings { * 3 - Strong vibrations * @hide */ - @Readable public static final String NOTIFICATION_VIBRATION_INTENSITY = "notification_vibration_intensity"; /** @@ -4250,7 +4150,6 @@ public final class Settings { * 3 - Strong vibrations * @hide */ - @Readable public static final String RING_VIBRATION_INTENSITY = "ring_vibration_intensity"; @@ -4268,7 +4167,6 @@ public final class Settings { * 3 - Strong vibrations * @hide */ - @Readable public static final String HAPTIC_FEEDBACK_INTENSITY = "haptic_feedback_intensity"; @@ -4278,7 +4176,6 @@ public final class Settings { * * @removed Not used by anything since API 2. */ - @Readable public static final String VOLUME_RING = "volume_ring"; /** @@ -4287,7 +4184,6 @@ public final class Settings { * * @removed Not used by anything since API 2. */ - @Readable public static final String VOLUME_SYSTEM = "volume_system"; /** @@ -4296,7 +4192,6 @@ public final class Settings { * * @removed Not used by anything since API 2. */ - @Readable public static final String VOLUME_VOICE = "volume_voice"; /** @@ -4305,7 +4200,6 @@ public final class Settings { * * @removed Not used by anything since API 2. */ - @Readable public static final String VOLUME_MUSIC = "volume_music"; /** @@ -4314,7 +4208,6 @@ public final class Settings { * * @removed Not used by anything since API 2. */ - @Readable public static final String VOLUME_ALARM = "volume_alarm"; /** @@ -4323,7 +4216,6 @@ public final class Settings { * * @removed Not used by anything since API 2. */ - @Readable public static final String VOLUME_NOTIFICATION = "volume_notification"; /** @@ -4332,7 +4224,6 @@ public final class Settings { * * @removed Not used by anything since API 2. */ - @Readable public static final String VOLUME_BLUETOOTH_SCO = "volume_bluetooth_sco"; /** @@ -4340,14 +4231,12 @@ public final class Settings { * Acessibility volume. This is used internally, changing this * value will not change the volume. */ - @Readable public static final String VOLUME_ACCESSIBILITY = "volume_a11y"; /** * @hide * Volume index for virtual assistant. */ - @Readable public static final String VOLUME_ASSISTANT = "volume_assistant"; /** @@ -4355,7 +4244,6 @@ public final class Settings { * * @hide */ - @Readable public static final String VOLUME_MASTER = "volume_master"; /** @@ -4364,7 +4252,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String MASTER_MONO = "master_mono"; /** @@ -4372,7 +4259,6 @@ public final class Settings { * * @hide */ - @Readable public static final String MASTER_BALANCE = "master_balance"; /** @@ -4390,7 +4276,6 @@ public final class Settings { * @deprecated */ @Deprecated - @Readable public static final String NOTIFICATIONS_USE_RING_VOLUME = "notifications_use_ring_volume"; @@ -4407,7 +4292,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String VIBRATE_IN_SILENT = "vibrate_in_silent"; /** @@ -4443,7 +4327,6 @@ public final class Settings { * * @removed Not used by anything since API 2. */ - @Readable public static final String APPEND_FOR_LAST_AUDIBLE = "_last_audible"; /** @@ -4455,7 +4338,6 @@ public final class Settings { * * @see #DEFAULT_RINGTONE_URI */ - @Readable public static final String RINGTONE = "ringtone"; /** @@ -4479,7 +4361,6 @@ public final class Settings { * @see #RINGTONE * @see #DEFAULT_NOTIFICATION_URI */ - @Readable public static final String NOTIFICATION_SOUND = "notification_sound"; /** @@ -4501,7 +4382,6 @@ public final class Settings { * @see #RINGTONE * @see #DEFAULT_ALARM_ALERT_URI */ - @Readable public static final String ALARM_ALERT = "alarm_alert"; /** @@ -4522,35 +4402,29 @@ public final class Settings { * * @hide */ - @Readable public static final String MEDIA_BUTTON_RECEIVER = "media_button_receiver"; /** * Setting to enable Auto Replace (AutoText) in text editors. 1 = On, 0 = Off */ - @Readable public static final String TEXT_AUTO_REPLACE = "auto_replace"; /** * Setting to enable Auto Caps in text editors. 1 = On, 0 = Off */ - @Readable public static final String TEXT_AUTO_CAPS = "auto_caps"; /** * Setting to enable Auto Punctuate in text editors. 1 = On, 0 = Off. This * feature converts two spaces to a "." and space. */ - @Readable public static final String TEXT_AUTO_PUNCTUATE = "auto_punctuate"; /** * Setting to showing password characters in text editors. 1 = On, 0 = Off */ - @Readable public static final String TEXT_SHOW_PASSWORD = "show_password"; - @Readable public static final String SHOW_GTALK_SERVICE_STATUS = "SHOW_GTALK_SERVICE_STATUS"; @@ -4560,7 +4434,6 @@ public final class Settings { * @deprecated Use {@link WallpaperManager} instead. */ @Deprecated - @Readable public static final String WALLPAPER_ACTIVITY = "wallpaper_activity"; /** @@ -4582,7 +4455,6 @@ public final class Settings { * 12 * 24 */ - @Readable public static final String TIME_12_24 = "time_12_24"; /** @@ -4591,7 +4463,6 @@ public final class Settings { * dd/mm/yyyy * yyyy/mm/dd */ - @Readable public static final String DATE_FORMAT = "date_format"; /** @@ -4601,7 +4472,6 @@ public final class Settings { * nonzero = it has been run in the past * 0 = it has not been run in the past */ - @Readable public static final String SETUP_WIZARD_HAS_RUN = "setup_wizard_has_run"; /** @@ -4638,7 +4508,6 @@ public final class Settings { * by the application; if 1, it will be used by default unless explicitly * disabled by the application. */ - @Readable public static final String ACCELEROMETER_ROTATION = "accelerometer_rotation"; /** @@ -4649,7 +4518,6 @@ public final class Settings { * * @see Display#getRotation */ - @Readable public static final String USER_ROTATION = "user_rotation"; /** @@ -4664,7 +4532,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String HIDE_ROTATION_LOCK_TOGGLE_FOR_ACCESSIBILITY = "hide_rotation_lock_toggle_for_accessibility"; @@ -4678,7 +4545,6 @@ public final class Settings { * relied on the setting, while this is purely about the vibration setting for incoming * calls. */ - @Readable public static final String VIBRATE_WHEN_RINGING = "vibrate_when_ringing"; /** @@ -4686,7 +4552,6 @@ public final class Settings { * {@code 0}, enhanced call blocking functionality is disabled. * @hide */ - @Readable public static final String DEBUG_ENABLE_ENHANCED_CALL_BLOCKING = "debug.enable_enhanced_calling"; @@ -4694,7 +4559,6 @@ public final class Settings { * Whether the audible DTMF tones are played by the dialer when dialing. The value is * boolean (1 or 0). */ - @Readable public static final String DTMF_TONE_WHEN_DIALING = "dtmf_tone"; /** @@ -4703,7 +4567,6 @@ public final class Settings { * 0 = Normal * 1 = Long */ - @Readable public static final String DTMF_TONE_TYPE_WHEN_DIALING = "dtmf_tone_type"; /** @@ -4712,7 +4575,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String HEARING_AID = "hearing_aid"; /** @@ -4725,21 +4587,18 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String TTY_MODE = "tty_mode"; /** * Whether the sounds effects (key clicks, lid open ...) are enabled. The value is * boolean (1 or 0). */ - @Readable public static final String SOUND_EFFECTS_ENABLED = "sound_effects_enabled"; /** * Whether haptic feedback (Vibrate on tap) is enabled. The value is * boolean (1 or 0). */ - @Readable public static final String HAPTIC_FEEDBACK_ENABLED = "haptic_feedback_enabled"; /** @@ -4747,7 +4606,6 @@ public final class Settings { * setting for this. */ @Deprecated - @Readable public static final String SHOW_WEB_SUGGESTIONS = "show_web_suggestions"; /** @@ -4756,7 +4614,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String NOTIFICATION_LIGHT_PULSE = "notification_light_pulse"; /** @@ -4766,7 +4623,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String POINTER_LOCATION = "pointer_location"; /** @@ -4776,7 +4632,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String SHOW_TOUCHES = "show_touches"; /** @@ -4787,7 +4642,6 @@ public final class Settings { * 1 = yes * @hide */ - @Readable public static final String WINDOW_ORIENTATION_LISTENER_LOG = "window_orientation_listener_log"; @@ -4813,14 +4667,12 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String LOCKSCREEN_SOUNDS_ENABLED = "lockscreen_sounds_enabled"; /** * Whether the lockscreen should be completely disabled. * @hide */ - @Readable public static final String LOCKSCREEN_DISABLED = "lockscreen.disabled"; /** @@ -4891,7 +4743,6 @@ public final class Settings { * 1 = yes * @hide */ - @Readable public static final String SIP_RECEIVE_CALLS = "sip_receive_calls"; /** @@ -4900,21 +4751,18 @@ public final class Settings { * "SIP_ADDRESS_ONLY" : Only if destination is a SIP address * @hide */ - @Readable public static final String SIP_CALL_OPTIONS = "sip_call_options"; /** * One of the sip call options: Always use SIP with network access. * @hide */ - @Readable public static final String SIP_ALWAYS = "SIP_ALWAYS"; /** * One of the sip call options: Only if destination is a SIP address. * @hide */ - @Readable public static final String SIP_ADDRESS_ONLY = "SIP_ADDRESS_ONLY"; /** @@ -4925,7 +4773,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String SIP_ASK_ME_EACH_TIME = "SIP_ASK_ME_EACH_TIME"; /** @@ -4937,14 +4784,12 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String POINTER_SPEED = "pointer_speed"; /** * Whether lock-to-app will be triggered by long-press on recents. * @hide */ - @Readable public static final String LOCK_TO_APP_ENABLED = "lock_to_app_enabled"; /** @@ -4954,7 +4799,6 @@ public final class Settings { * Backward-compatible with PrefGetPreference(prefAllowEasterEggs). * @hide */ - @Readable public static final String EGG_MODE = "egg_mode"; /** @@ -4963,7 +4807,6 @@ public final class Settings { * 1 - Show percentage * @hide */ - @Readable public static final String SHOW_BATTERY_PERCENT = "status_bar_show_battery_percent"; /** @@ -4972,7 +4815,6 @@ public final class Settings { * for instance pausing media apps when another starts. * @hide */ - @Readable public static final String MULTI_AUDIO_FOCUS_ENABLED = "multi_audio_focus_enabled"; /** @@ -5166,7 +5008,6 @@ public final class Settings { * @see android.telephony.TelephonyManager.WifiCallingChoices * @hide */ - @Readable public static final String WHEN_TO_MAKE_WIFI_CALLS = "when_to_make_wifi_calls"; // Settings moved to Settings.Secure @@ -5323,7 +5164,6 @@ public final class Settings { * instead */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = Secure.WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE; @@ -5338,7 +5178,6 @@ public final class Settings { * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS} instead */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS; @@ -5347,7 +5186,6 @@ public final class Settings { * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED} instead */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED; @@ -5357,7 +5195,6 @@ public final class Settings { * instead */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = Secure.WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS; @@ -5366,7 +5203,6 @@ public final class Settings { * {@link android.provider.Settings.Secure#WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT} instead */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = Secure.WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT; @@ -5401,7 +5237,6 @@ public final class Settings { * instead */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = Secure.WIFI_WATCHDOG_PING_TIMEOUT_MS; @@ -5451,8 +5286,7 @@ public final class Settings { CONTENT_URI, CALL_METHOD_GET_SECURE, CALL_METHOD_PUT_SECURE, - sProviderHolder, - Secure.class); + sProviderHolder); private static ILockSettings sLockSettings = null; @@ -5590,11 +5424,6 @@ public final class Settings { sNameValueCache.clearGenerationTrackerForTest(); } - /** @hide */ - public static void getPublicSettings(Set allKeys, Set readableKeys) { - getPublicSettingsForClass(Secure.class, allKeys, readableKeys); - } - /** * Look up a name in the database. * @param resolver to access the database with @@ -6090,7 +5919,6 @@ public final class Settings { * Control whether to enable adaptive sleep mode. * @hide */ - @Readable public static final String ADAPTIVE_SLEEP = "adaptive_sleep"; /** @@ -6108,7 +5936,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu"; /** @@ -6126,7 +5953,6 @@ public final class Settings { * @deprecated This settings is not used anymore. */ @Deprecated - @Readable public static final String ALLOW_MOCK_LOCATION = "mock_location"; /** @@ -6135,7 +5961,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String ODI_CAPTIONS_ENABLED = "odi_captions_enabled"; /** @@ -6175,7 +6000,6 @@ public final class Settings { * to the Instant App, it is generated when the Instant App is first installed and reset if * the user clears the Instant App. */ - @Readable public static final String ANDROID_ID = "android_id"; /** @@ -6194,14 +6018,12 @@ public final class Settings { * Setting to record the input method used by default, holding the ID * of the desired method. */ - @Readable public static final String DEFAULT_INPUT_METHOD = "default_input_method"; /** * Setting to record the input method subtype used by default, holding the ID * of the desired method. */ - @Readable public static final String SELECTED_INPUT_METHOD_SUBTYPE = "selected_input_method_subtype"; @@ -6210,14 +6032,12 @@ public final class Settings { * and its last used subtype. * @hide */ - @Readable public static final String INPUT_METHODS_SUBTYPE_HISTORY = "input_methods_subtype_history"; /** * Setting to record the visibility of input method selector */ - @Readable public static final String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility"; @@ -6226,7 +6046,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service"; /** @@ -6234,7 +6053,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String AUTOFILL_SERVICE = "autofill_service"; /** @@ -6245,7 +6063,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String AUTOFILL_FEATURE_FIELD_CLASSIFICATION = "autofill_field_classification"; @@ -6254,7 +6071,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DARK_MODE_DIALOG_SEEN = "dark_mode_dialog_seen"; @@ -6263,7 +6079,6 @@ public final class Settings { * Represented as milliseconds from midnight (e.g. 79200000 == 10pm). * @hide */ - @Readable public static final String DARK_THEME_CUSTOM_START_TIME = "dark_theme_custom_start_time"; @@ -6272,7 +6087,6 @@ public final class Settings { * Represented as milliseconds from midnight (e.g. 79200000 == 10pm). * @hide */ - @Readable public static final String DARK_THEME_CUSTOM_END_TIME = "dark_theme_custom_end_time"; @@ -6282,7 +6096,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String AUTOFILL_USER_DATA_MAX_USER_DATA_SIZE = "autofill_user_data_max_user_data_size"; @@ -6293,7 +6106,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String AUTOFILL_USER_DATA_MAX_FIELD_CLASSIFICATION_IDS_SIZE = "autofill_user_data_max_field_classification_size"; @@ -6304,7 +6116,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String AUTOFILL_USER_DATA_MAX_CATEGORY_COUNT = "autofill_user_data_max_category_count"; @@ -6314,7 +6125,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String AUTOFILL_USER_DATA_MAX_VALUE_LENGTH = "autofill_user_data_max_value_length"; @@ -6324,7 +6134,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String AUTOFILL_USER_DATA_MIN_VALUE_LENGTH = "autofill_user_data_min_value_length"; @@ -6337,7 +6146,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String CONTENT_CAPTURE_ENABLED = "content_capture_enabled"; /** @@ -6355,7 +6163,6 @@ public final class Settings { * * @hide */ - @Readable public static final String MANAGED_PROVISIONING_DPC_DOWNLOADED = "managed_provisioning_dpc_downloaded"; @@ -6366,7 +6173,6 @@ public final class Settings { *

* Type: int (0 for false, 1 for true) */ - @Readable public static final String SECURE_FRP_MODE = "secure_frp_mode"; /** @@ -6377,7 +6183,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String USER_SETUP_COMPLETE = "user_setup_complete"; /** @@ -6433,7 +6238,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String USER_SETUP_PERSONALIZATION_STATE = "user_setup_personalization_state"; @@ -6444,7 +6248,6 @@ public final class Settings { * * @hide */ - @Readable public static final String TV_USER_SETUP_COMPLETE = "tv_user_setup_complete"; /** @@ -6456,7 +6259,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String COMPLETED_CATEGORY_PREFIX = "suggested.completed_category."; /** @@ -6467,7 +6269,6 @@ public final class Settings { * Format like "ime0;subtype0;subtype1;subtype2:ime1:ime2;subtype0" * where imeId is ComponentName and subtype is int32. */ - @Readable public static final String ENABLED_INPUT_METHODS = "enabled_input_methods"; /** @@ -6476,7 +6277,6 @@ public final class Settings { * by ':'. * @hide */ - @Readable public static final String DISABLED_SYSTEM_INPUT_METHODS = "disabled_system_input_methods"; /** @@ -6485,7 +6285,6 @@ public final class Settings { * @hide */ @TestApi - @Readable @SuppressLint("NoSettingsProvider") public static final String SHOW_IME_WITH_HARD_KEYBOARD = "show_ime_with_hard_keyboard"; @@ -6503,7 +6302,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ALWAYS_ON_VPN_APP = "always_on_vpn_app"; /** @@ -6512,7 +6310,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ALWAYS_ON_VPN_LOCKDOWN = "always_on_vpn_lockdown"; /** @@ -6522,7 +6319,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ALWAYS_ON_VPN_LOCKDOWN_WHITELIST = "always_on_vpn_lockdown_whitelist"; @@ -6536,8 +6332,6 @@ public final class Settings { * {@link PackageManager#canRequestPackageInstalls()} * @see PackageManager#canRequestPackageInstalls() */ - @Deprecated - @Readable public static final String INSTALL_NON_MARKET_APPS = "install_non_market_apps"; /** @@ -6549,7 +6343,6 @@ public final class Settings { * * @hide */ - @Readable public static final String UNKNOWN_SOURCES_DEFAULT_REVERSED = "unknown_sources_default_reversed"; @@ -6563,7 +6356,6 @@ public final class Settings { * instead. */ @Deprecated - @Readable public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed"; /** @@ -6575,14 +6367,12 @@ public final class Settings { * {@link LocationManager#MODE_CHANGED_ACTION}. */ @Deprecated - @Readable public static final String LOCATION_MODE = "location_mode"; /** * The App or module that changes the location mode. * @hide */ - @Readable public static final String LOCATION_CHANGER = "location_changer"; /** @@ -6651,7 +6441,6 @@ public final class Settings { * android.app.timezonedetector.TimeZoneDetector#updateConfiguration} to update. * @hide */ - @Readable public static final String LOCATION_TIME_ZONE_DETECTION_ENABLED = "location_time_zone_detection_enabled"; @@ -6661,7 +6450,6 @@ public final class Settings { * * @hide */ - @Readable public static final String LOCATION_COARSE_ACCURACY_M = "locationCoarseAccuracy"; /** @@ -6669,7 +6457,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String LOCK_BIOMETRIC_WEAK_FLAGS = "lock_biometric_weak_flags"; @@ -6677,7 +6464,6 @@ public final class Settings { * Whether lock-to-app will lock the keyguard when exiting. * @hide */ - @Readable public static final String LOCK_TO_APP_EXIT_LOCKED = "lock_to_app_exit_locked"; /** @@ -6688,7 +6474,6 @@ public final class Settings { * {@link VERSION_CODES#M} or later throws a {@code SecurityException}. */ @Deprecated - @Readable public static final String LOCK_PATTERN_ENABLED = "lock_pattern_autolock"; /** @@ -6698,7 +6483,6 @@ public final class Settings { * {@link VERSION_CODES#M} or later throws a {@code SecurityException}. */ @Deprecated - @Readable public static final String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern"; /** @@ -6712,7 +6496,6 @@ public final class Settings { * {@link VERSION_CODES#M} or later throws a {@code SecurityException}. */ @Deprecated - @Readable public static final String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled"; @@ -6722,7 +6505,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String LOCK_SCREEN_LOCK_AFTER_TIMEOUT = "lock_screen_lock_after_timeout"; @@ -6732,7 +6514,6 @@ public final class Settings { * @deprecated */ @Deprecated - @Readable public static final String LOCK_SCREEN_OWNER_INFO = "lock_screen_owner_info"; /** @@ -6740,7 +6521,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String LOCK_SCREEN_APPWIDGET_IDS = "lock_screen_appwidget_ids"; @@ -6749,7 +6529,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String LOCK_SCREEN_FALLBACK_APPWIDGET_ID = "lock_screen_fallback_appwidget_id"; @@ -6758,7 +6537,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String LOCK_SCREEN_STICKY_APPWIDGET = "lock_screen_sticky_appwidget"; @@ -6769,7 +6547,6 @@ public final class Settings { */ @Deprecated @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String LOCK_SCREEN_OWNER_INFO_ENABLED = "lock_screen_owner_info_enabled"; @@ -6782,7 +6559,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS = "lock_screen_allow_private_notifications"; @@ -6791,7 +6567,6 @@ public final class Settings { * without having to unlock * @hide */ - @Readable public static final String LOCK_SCREEN_ALLOW_REMOTE_INPUT = "lock_screen_allow_remote_input"; @@ -6801,14 +6576,12 @@ public final class Settings { * {"clock": id, "_applied_timestamp": timestamp} * @hide */ - @Readable public static final String LOCK_SCREEN_CUSTOM_CLOCK_FACE = "lock_screen_custom_clock_face"; /** * Indicates which clock face to show on lock screen and AOD while docked. * @hide */ - @Readable public static final String DOCKED_CLOCK_FACE = "docked_clock_face"; /** @@ -6816,7 +6589,6 @@ public final class Settings { * the lockscreen notification policy. * @hide */ - @Readable public static final String SHOW_NOTE_ABOUT_NOTIFICATION_HIDING = "show_note_about_notification_hiding"; @@ -6824,7 +6596,6 @@ public final class Settings { * Set to 1 by the system after trust agents have been initialized. * @hide */ - @Readable public static final String TRUST_AGENTS_INITIALIZED = "trust_agents_initialized"; @@ -6835,7 +6606,6 @@ public final class Settings { * many collisions. It should not be used. */ @Deprecated - @Readable public static final String LOGGING_ID = "logging_id"; /** @@ -6847,19 +6617,16 @@ public final class Settings { /** * No longer supported. */ - @Readable public static final String PARENTAL_CONTROL_ENABLED = "parental_control_enabled"; /** * No longer supported. */ - @Readable public static final String PARENTAL_CONTROL_LAST_UPDATE = "parental_control_last_update"; /** * No longer supported. */ - @Readable public static final String PARENTAL_CONTROL_REDIRECT_URL = "parental_control_redirect_url"; /** @@ -6868,7 +6635,6 @@ public final class Settings { * and new Settings apps. */ // TODO: 881807 - @Readable public static final String SETTINGS_CLASSNAME = "settings_classname"; /** @@ -6886,14 +6652,12 @@ public final class Settings { /** * If accessibility is enabled. */ - @Readable public static final String ACCESSIBILITY_ENABLED = "accessibility_enabled"; /** * Setting specifying if the accessibility shortcut is enabled. * @hide */ - @Readable public static final String ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN = "accessibility_shortcut_on_lock_screen"; @@ -6901,7 +6665,6 @@ public final class Settings { * Setting specifying if the accessibility shortcut dialog has been shown to this user. * @hide */ - @Readable public static final String ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN = "accessibility_shortcut_dialog_shown"; @@ -6916,7 +6679,6 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi - @Readable public static final String ACCESSIBILITY_SHORTCUT_TARGET_SERVICE = "accessibility_shortcut_target_service"; @@ -6927,7 +6689,6 @@ public final class Settings { * accessibility feature. * @hide */ - @Readable public static final String ACCESSIBILITY_BUTTON_TARGET_COMPONENT = "accessibility_button_target_component"; @@ -6940,7 +6701,6 @@ public final class Settings { * accessibility feature. * @hide */ - @Readable public static final String ACCESSIBILITY_BUTTON_TARGETS = "accessibility_button_targets"; /** @@ -6949,20 +6709,17 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_SHORTCUT_TARGET_MAGNIFICATION_CONTROLLER = "com.android.server.accessibility.MagnificationController"; /** * If touch exploration is enabled. */ - @Readable public static final String TOUCH_EXPLORATION_ENABLED = "touch_exploration_enabled"; /** * List of the enabled accessibility providers. */ - @Readable public static final String ENABLED_ACCESSIBILITY_SERVICES = "enabled_accessibility_services"; @@ -6972,7 +6729,6 @@ public final class Settings { * * @hide */ - @Readable public static final String TOUCH_EXPLORATION_GRANTED_ACCESSIBILITY_SERVICES = "touch_exploration_granted_accessibility_services"; @@ -6980,14 +6736,12 @@ public final class Settings { * Whether the Global Actions Panel is enabled. * @hide */ - @Readable public static final String GLOBAL_ACTIONS_PANEL_ENABLED = "global_actions_panel_enabled"; /** * Whether the Global Actions Panel can be toggled on or off in Settings. * @hide */ - @Readable public static final String GLOBAL_ACTIONS_PANEL_AVAILABLE = "global_actions_panel_available"; @@ -6995,7 +6749,6 @@ public final class Settings { * Enables debug mode for the Global Actions Panel. * @hide */ - @Readable public static final String GLOBAL_ACTIONS_PANEL_DEBUG_ENABLED = "global_actions_panel_debug_enabled"; @@ -7004,28 +6757,24 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String HUSH_GESTURE_USED = "hush_gesture_used"; /** * Number of times the user has manually clicked the ringer toggle * @hide */ - @Readable public static final String MANUAL_RINGER_TOGGLE_COUNT = "manual_ringer_toggle_count"; /** * Whether to play a sound for charging events. * @hide */ - @Readable public static final String CHARGING_SOUNDS_ENABLED = "charging_sounds_enabled"; /** * Whether to vibrate for charging events. * @hide */ - @Readable public static final String CHARGING_VIBRATION_ENABLED = "charging_vibration_enabled"; /** @@ -7035,7 +6784,6 @@ public final class Settings { * user to specify a duration. * @hide */ - @Readable public static final String ZEN_DURATION = "zen_duration"; /** @hide */ public static final int ZEN_DURATION_PROMPT = -1; @@ -7045,28 +6793,24 @@ public final class Settings { * If nonzero, will show the zen upgrade notification when the user toggles DND on/off. * @hide */ - @Readable public static final String SHOW_ZEN_UPGRADE_NOTIFICATION = "show_zen_upgrade_notification"; /** * If nonzero, will show the zen update settings suggestion. * @hide */ - @Readable public static final String SHOW_ZEN_SETTINGS_SUGGESTION = "show_zen_settings_suggestion"; /** * If nonzero, zen has not been updated to reflect new changes. * @hide */ - @Readable public static final String ZEN_SETTINGS_UPDATED = "zen_settings_updated"; /** * If nonzero, zen setting suggestion has been viewed by user * @hide */ - @Readable public static final String ZEN_SETTINGS_SUGGESTION_VIEWED = "zen_settings_suggestion_viewed"; @@ -7075,7 +6819,6 @@ public final class Settings { * boolean (1 or 0). * @hide */ - @Readable public static final String IN_CALL_NOTIFICATION_ENABLED = "in_call_notification_enabled"; /** @@ -7084,7 +6827,6 @@ public final class Settings { * * @hide */ - @Readable public static final String KEYGUARD_SLICE_URI = "keyguard_slice_uri"; /** @@ -7097,7 +6839,6 @@ public final class Settings { * * @hide */ - @Readable public static final String FONT_WEIGHT_ADJUSTMENT = "font_weight_adjustment"; /** @@ -7108,7 +6849,6 @@ public final class Settings { * at all times, which was the behavior when this value was {@code true}. */ @Deprecated - @Readable public static final String ACCESSIBILITY_SPEAK_PASSWORD = "speak_password"; /** @@ -7116,7 +6856,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED = "high_text_contrast_enabled"; @@ -7130,7 +6869,6 @@ public final class Settings { */ @UnsupportedAppUsage @TestApi - @Readable public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED = "accessibility_display_magnification_enabled"; @@ -7146,7 +6884,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED = "accessibility_display_magnification_navbar_enabled"; @@ -7160,7 +6897,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE = "accessibility_display_magnification_scale"; @@ -7171,7 +6907,6 @@ public final class Settings { * @deprecated */ @Deprecated - @Readable public static final String ACCESSIBILITY_DISPLAY_MAGNIFICATION_AUTO_UPDATE = "accessibility_display_magnification_auto_update"; @@ -7181,7 +6916,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_SOFT_KEYBOARD_MODE = "accessibility_soft_keyboard_mode"; @@ -7215,7 +6949,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_CAPTIONING_ENABLED = "accessibility_captioning_enabled"; @@ -7226,7 +6959,6 @@ public final class Settings { * @see java.util.Locale#toString * @hide */ - @Readable public static final String ACCESSIBILITY_CAPTIONING_LOCALE = "accessibility_captioning_locale"; @@ -7241,7 +6973,6 @@ public final class Settings { * @see java.util.Locale#toString * @hide */ - @Readable public static final String ACCESSIBILITY_CAPTIONING_PRESET = "accessibility_captioning_preset"; @@ -7252,7 +6983,6 @@ public final class Settings { * @see android.graphics.Color#argb * @hide */ - @Readable public static final String ACCESSIBILITY_CAPTIONING_BACKGROUND_COLOR = "accessibility_captioning_background_color"; @@ -7263,7 +6993,6 @@ public final class Settings { * @see android.graphics.Color#argb * @hide */ - @Readable public static final String ACCESSIBILITY_CAPTIONING_FOREGROUND_COLOR = "accessibility_captioning_foreground_color"; @@ -7278,7 +7007,6 @@ public final class Settings { * @see #ACCESSIBILITY_CAPTIONING_EDGE_COLOR * @hide */ - @Readable public static final String ACCESSIBILITY_CAPTIONING_EDGE_TYPE = "accessibility_captioning_edge_type"; @@ -7290,7 +7018,6 @@ public final class Settings { * @see android.graphics.Color#argb * @hide */ - @Readable public static final String ACCESSIBILITY_CAPTIONING_EDGE_COLOR = "accessibility_captioning_edge_color"; @@ -7301,7 +7028,6 @@ public final class Settings { * @see android.graphics.Color#argb * @hide */ - @Readable public static final String ACCESSIBILITY_CAPTIONING_WINDOW_COLOR = "accessibility_captioning_window_color"; @@ -7318,7 +7044,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String ACCESSIBILITY_CAPTIONING_TYPEFACE = "accessibility_captioning_typeface"; @@ -7327,14 +7052,12 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_CAPTIONING_FONT_SCALE = "accessibility_captioning_font_scale"; /** * Setting that specifies whether display color inversion is enabled. */ - @Readable public static final String ACCESSIBILITY_DISPLAY_INVERSION_ENABLED = "accessibility_display_inversion_enabled"; @@ -7345,7 +7068,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED = "accessibility_display_daltonizer_enabled"; @@ -7362,7 +7084,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String ACCESSIBILITY_DISPLAY_DALTONIZER = "accessibility_display_daltonizer"; @@ -7373,7 +7094,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String ACCESSIBILITY_AUTOCLICK_ENABLED = "accessibility_autoclick_enabled"; @@ -7384,7 +7104,6 @@ public final class Settings { * @see #ACCESSIBILITY_AUTOCLICK_ENABLED * @hide */ - @Readable public static final String ACCESSIBILITY_AUTOCLICK_DELAY = "accessibility_autoclick_delay"; @@ -7395,7 +7114,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String ACCESSIBILITY_LARGE_POINTER_ICON = "accessibility_large_pointer_icon"; @@ -7404,7 +7122,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String LONG_PRESS_TIMEOUT = "long_press_timeout"; /** @@ -7412,7 +7129,6 @@ public final class Settings { * down event for an interaction to be considered part of the same multi-press. * @hide */ - @Readable public static final String MULTI_PRESS_TIMEOUT = "multi_press_timeout"; /** @@ -7421,7 +7137,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_NON_INTERACTIVE_UI_TIMEOUT_MS = "accessibility_non_interactive_ui_timeout_ms"; @@ -7431,7 +7146,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_INTERACTIVE_UI_TIMEOUT_MS = "accessibility_interactive_ui_timeout_ms"; @@ -7442,7 +7156,6 @@ public final class Settings { * * @hide */ - @Readable public static final String REDUCE_BRIGHT_COLORS_ACTIVATED = "reduce_bright_colors_activated"; @@ -7452,7 +7165,6 @@ public final class Settings { * * @hide */ - @Readable public static final String REDUCE_BRIGHT_COLORS_LEVEL = "reduce_bright_colors_level"; @@ -7461,7 +7173,6 @@ public final class Settings { * * @hide */ - @Readable public static final String REDUCE_BRIGHT_COLORS_PERSIST_ACROSS_REBOOTS = "reduce_bright_colors_persist_across_reboots"; @@ -7474,7 +7185,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String ENABLED_PRINT_SERVICES = "enabled_print_services"; @@ -7484,7 +7194,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String DISABLED_PRINT_SERVICES = "disabled_print_services"; @@ -7495,7 +7204,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DISPLAY_DENSITY_FORCED = "display_density_forced"; /** @@ -7508,25 +7216,21 @@ public final class Settings { * the framework text to speech APIs as of the Ice Cream Sandwich release. */ @Deprecated - @Readable public static final String TTS_USE_DEFAULTS = "tts_use_defaults"; /** * Default text-to-speech engine speech rate. 100 = 1x */ - @Readable public static final String TTS_DEFAULT_RATE = "tts_default_rate"; /** * Default text-to-speech engine pitch. 100 = 1x */ - @Readable public static final String TTS_DEFAULT_PITCH = "tts_default_pitch"; /** * Default text-to-speech engine. */ - @Readable public static final String TTS_DEFAULT_SYNTH = "tts_default_synth"; /** @@ -7538,7 +7242,6 @@ public final class Settings { * locale. {@link TextToSpeech#getLanguage()}. */ @Deprecated - @Readable public static final String TTS_DEFAULT_LANG = "tts_default_lang"; /** @@ -7550,7 +7253,6 @@ public final class Settings { * locale. {@link TextToSpeech#getLanguage()}. */ @Deprecated - @Readable public static final String TTS_DEFAULT_COUNTRY = "tts_default_country"; /** @@ -7562,7 +7264,6 @@ public final class Settings { * locale that is in use {@link TextToSpeech#getLanguage()}. */ @Deprecated - @Readable public static final String TTS_DEFAULT_VARIANT = "tts_default_variant"; /** @@ -7577,13 +7278,11 @@ public final class Settings { * * @hide */ - @Readable public static final String TTS_DEFAULT_LOCALE = "tts_default_locale"; /** * Space delimited list of plugin packages that are enabled. */ - @Readable public static final String TTS_ENABLED_PLUGINS = "tts_enabled_plugins"; /** @@ -7623,7 +7322,6 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE = "wifi_watchdog_acceptable_packet_loss_percentage"; @@ -7633,7 +7331,6 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_AP_COUNT = "wifi_watchdog_ap_count"; /** @@ -7641,7 +7338,6 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS = "wifi_watchdog_background_check_delay_ms"; @@ -7651,7 +7347,6 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED = "wifi_watchdog_background_check_enabled"; @@ -7660,7 +7355,6 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS = "wifi_watchdog_background_check_timeout_ms"; @@ -7672,7 +7366,6 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT = "wifi_watchdog_initial_ignored_ping_count"; @@ -7684,14 +7377,12 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_MAX_AP_CHECKS = "wifi_watchdog_max_ap_checks"; /** * @deprecated Use {@link android.provider.Settings.Global#WIFI_WATCHDOG_ON} instead */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on"; /** @@ -7699,7 +7390,6 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_WATCH_LIST = "wifi_watchdog_watch_list"; /** @@ -7707,7 +7397,6 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_PING_COUNT = "wifi_watchdog_ping_count"; /** @@ -7715,7 +7404,6 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms"; /** @@ -7723,7 +7411,6 @@ public final class Settings { * @deprecated This setting is not used. */ @Deprecated - @Readable public static final String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms"; /** @@ -7748,7 +7435,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CONNECTIVITY_RELEASE_PENDING_INTENT_DELAY_MS = "connectivity_release_pending_intent_delay_ms"; @@ -7762,14 +7448,12 @@ public final class Settings { * now appear disconnected. */ @Deprecated - @Readable public static final String BACKGROUND_DATA = "background_data"; /** * Origins for which browsers should allow geolocation by default. * The value is a space-separated list of origins. */ - @Readable public static final String ALLOWED_GEOLOCATION_ORIGINS = "allowed_geolocation_origins"; @@ -7780,7 +7464,6 @@ public final class Settings { * 3 = TTY VCO * @hide */ - @Readable public static final String PREFERRED_TTY_MODE = "preferred_tty_mode"; @@ -7790,7 +7473,6 @@ public final class Settings { * 1 = enhanced voice privacy * @hide */ - @Readable public static final String ENHANCED_VOICE_PRIVACY_ENABLED = "enhanced_voice_privacy_enabled"; /** @@ -7799,7 +7481,6 @@ public final class Settings { * 1 = enabled * @hide */ - @Readable public static final String TTY_MODE_ENABLED = "tty_mode_enabled"; /** @@ -7808,7 +7489,6 @@ public final class Settings { * 0 = OFF * 1 = ON */ - @Readable public static final String RTT_CALLING_MODE = "rtt_calling_mode"; /** @@ -7818,7 +7498,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String BACKUP_ENABLED = "backup_enabled"; /** @@ -7828,7 +7507,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String BACKUP_AUTO_RESTORE = "backup_auto_restore"; /** @@ -7837,7 +7515,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String BACKUP_PROVISIONED = "backup_provisioned"; /** @@ -7845,7 +7522,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String BACKUP_TRANSPORT = "backup_transport"; /** @@ -7855,7 +7531,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String LAST_SETUP_SHOWN = "last_setup_shown"; /** @@ -7878,7 +7553,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SEARCH_GLOBAL_SEARCH_ACTIVITY = "search_global_search_activity"; @@ -7886,25 +7560,21 @@ public final class Settings { * The number of promoted sources in GlobalSearch. * @hide */ - @Readable public static final String SEARCH_NUM_PROMOTED_SOURCES = "search_num_promoted_sources"; /** * The maximum number of suggestions returned by GlobalSearch. * @hide */ - @Readable public static final String SEARCH_MAX_RESULTS_TO_DISPLAY = "search_max_results_to_display"; /** * The number of suggestions GlobalSearch will ask each non-web search source for. * @hide */ - @Readable public static final String SEARCH_MAX_RESULTS_PER_SOURCE = "search_max_results_per_source"; /** * The number of suggestions the GlobalSearch will ask the web search source for. * @hide */ - @Readable public static final String SEARCH_WEB_RESULTS_OVERRIDE_LIMIT = "search_web_results_override_limit"; /** @@ -7912,81 +7582,69 @@ public final class Settings { * promoted sources before continuing with all other sources. * @hide */ - @Readable public static final String SEARCH_PROMOTED_SOURCE_DEADLINE_MILLIS = "search_promoted_source_deadline_millis"; /** * The number of milliseconds before GlobalSearch aborts search suggesiton queries. * @hide */ - @Readable public static final String SEARCH_SOURCE_TIMEOUT_MILLIS = "search_source_timeout_millis"; /** * The maximum number of milliseconds that GlobalSearch shows the previous results * after receiving a new query. * @hide */ - @Readable public static final String SEARCH_PREFILL_MILLIS = "search_prefill_millis"; /** * The maximum age of log data used for shortcuts in GlobalSearch. * @hide */ - @Readable public static final String SEARCH_MAX_STAT_AGE_MILLIS = "search_max_stat_age_millis"; /** * The maximum age of log data used for source ranking in GlobalSearch. * @hide */ - @Readable public static final String SEARCH_MAX_SOURCE_EVENT_AGE_MILLIS = "search_max_source_event_age_millis"; /** * The minimum number of impressions needed to rank a source in GlobalSearch. * @hide */ - @Readable public static final String SEARCH_MIN_IMPRESSIONS_FOR_SOURCE_RANKING = "search_min_impressions_for_source_ranking"; /** * The minimum number of clicks needed to rank a source in GlobalSearch. * @hide */ - @Readable public static final String SEARCH_MIN_CLICKS_FOR_SOURCE_RANKING = "search_min_clicks_for_source_ranking"; /** * The maximum number of shortcuts shown by GlobalSearch. * @hide */ - @Readable public static final String SEARCH_MAX_SHORTCUTS_RETURNED = "search_max_shortcuts_returned"; /** * The size of the core thread pool for suggestion queries in GlobalSearch. * @hide */ - @Readable public static final String SEARCH_QUERY_THREAD_CORE_POOL_SIZE = "search_query_thread_core_pool_size"; /** * The maximum size of the thread pool for suggestion queries in GlobalSearch. * @hide */ - @Readable public static final String SEARCH_QUERY_THREAD_MAX_POOL_SIZE = "search_query_thread_max_pool_size"; /** * The size of the core thread pool for shortcut refreshing in GlobalSearch. * @hide */ - @Readable public static final String SEARCH_SHORTCUT_REFRESH_CORE_POOL_SIZE = "search_shortcut_refresh_core_pool_size"; /** * The maximum size of the thread pool for shortcut refreshing in GlobalSearch. * @hide */ - @Readable public static final String SEARCH_SHORTCUT_REFRESH_MAX_POOL_SIZE = "search_shortcut_refresh_max_pool_size"; /** @@ -7994,14 +7652,12 @@ public final class Settings { * wait before terminating. * @hide */ - @Readable public static final String SEARCH_THREAD_KEEPALIVE_SECONDS = "search_thread_keepalive_seconds"; /** * The maximum number of concurrent suggestion queries to each source. * @hide */ - @Readable public static final String SEARCH_PER_SOURCE_CONCURRENT_QUERY_LIMIT = "search_per_source_concurrent_query_limit"; @@ -8010,28 +7666,24 @@ public final class Settings { * (0 = false, 1 = true) * @hide */ - @Readable public static final String MOUNT_PLAY_NOTIFICATION_SND = "mount_play_not_snd"; /** * Whether or not UMS auto-starts on UMS host detection. (0 = false, 1 = true) * @hide */ - @Readable public static final String MOUNT_UMS_AUTOSTART = "mount_ums_autostart"; /** * Whether or not a notification is displayed on UMS host detection. (0 = false, 1 = true) * @hide */ - @Readable public static final String MOUNT_UMS_PROMPT = "mount_ums_prompt"; /** * Whether or not a notification is displayed while UMS is enabled. (0 = false, 1 = true) * @hide */ - @Readable public static final String MOUNT_UMS_NOTIFY_ENABLED = "mount_ums_notify_enabled"; /** @@ -8043,7 +7695,6 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi - @Readable @SuppressLint("NoSettingsProvider") public static final String ANR_SHOW_BACKGROUND = "anr_show_background"; @@ -8053,7 +7704,6 @@ public final class Settings { * @hide */ @TestApi - @Readable @SuppressLint("NoSettingsProvider") public static final String SHOW_FIRST_CRASH_DIALOG_DEV_OPTION = "show_first_crash_dialog_dev_option"; @@ -8065,7 +7715,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String VOICE_RECOGNITION_SERVICE = "voice_recognition_service"; /** @@ -8076,7 +7725,6 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi - @Readable @SuppressLint("NoSettingsProvider") public static final String SELECTED_SPELL_CHECKER = "selected_spell_checker"; @@ -8089,7 +7737,6 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi - @Readable @SuppressLint("NoSettingsProvider") public static final String SELECTED_SPELL_CHECKER_SUBTYPE = "selected_spell_checker_subtype"; @@ -8099,7 +7746,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SPELL_CHECKER_ENABLED = "spell_checker_enabled"; /** @@ -8112,7 +7758,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String INCALL_POWER_BUTTON_BEHAVIOR = "incall_power_button_behavior"; /** @@ -8127,7 +7772,6 @@ public final class Settings { * * @hide */ - @Readable public static final String MINIMAL_POST_PROCESSING_ALLOWED = "minimal_post_processing_allowed"; @@ -8172,7 +7816,6 @@ public final class Settings { * @see #MATCH_CONTENT_FRAMERATE_ALWAYS * @hide */ - @Readable public static final String MATCH_CONTENT_FRAME_RATE = "match_content_frame_rate"; @@ -8204,7 +7847,6 @@ public final class Settings { * * @hide */ - @Readable public static final String INCALL_BACK_BUTTON_BEHAVIOR = "incall_back_button_behavior"; /** @@ -8230,7 +7872,6 @@ public final class Settings { * Whether the device should wake when the wake gesture sensor detects motion. * @hide */ - @Readable public static final String WAKE_GESTURE_ENABLED = "wake_gesture_enabled"; /** @@ -8238,7 +7879,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String DOZE_ENABLED = "doze_enabled"; /** @@ -8249,42 +7889,36 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String DOZE_ALWAYS_ON = "doze_always_on"; /** * Whether the device should pulse on pick up gesture. * @hide */ - @Readable public static final String DOZE_PICK_UP_GESTURE = "doze_pulse_on_pick_up"; /** * Whether the device should pulse on long press gesture. * @hide */ - @Readable public static final String DOZE_PULSE_ON_LONG_PRESS = "doze_pulse_on_long_press"; /** * Whether the device should pulse on double tap gesture. * @hide */ - @Readable public static final String DOZE_DOUBLE_TAP_GESTURE = "doze_pulse_on_double_tap"; /** * Whether the device should respond to the SLPI tap gesture. * @hide */ - @Readable public static final String DOZE_TAP_SCREEN_GESTURE = "doze_tap_gesture"; /** * Gesture that wakes up the display, showing some version of the lock screen. * @hide */ - @Readable public static final String DOZE_WAKE_LOCK_SCREEN_GESTURE = "doze_wake_screen_gesture"; /** @@ -8292,98 +7926,84 @@ public final class Settings { * {@link Display.STATE_DOZE}. * @hide */ - @Readable public static final String DOZE_WAKE_DISPLAY_GESTURE = "doze_wake_display_gesture"; /** * Whether the device should suppress the current doze configuration and disable dozing. * @hide */ - @Readable public static final String SUPPRESS_DOZE = "suppress_doze"; /** * Gesture that skips media. * @hide */ - @Readable public static final String SKIP_GESTURE = "skip_gesture"; /** * Count of successful gestures. * @hide */ - @Readable public static final String SKIP_GESTURE_COUNT = "skip_gesture_count"; /** * Count of non-gesture interaction. * @hide */ - @Readable public static final String SKIP_TOUCH_COUNT = "skip_touch_count"; /** * Direction to advance media for skip gesture * @hide */ - @Readable public static final String SKIP_DIRECTION = "skip_gesture_direction"; /** * Gesture that silences sound (alarms, notification, calls). * @hide */ - @Readable public static final String SILENCE_GESTURE = "silence_gesture"; /** * Count of successful silence alarms gestures. * @hide */ - @Readable public static final String SILENCE_ALARMS_GESTURE_COUNT = "silence_alarms_gesture_count"; /** * Count of successful silence timer gestures. * @hide */ - @Readable public static final String SILENCE_TIMER_GESTURE_COUNT = "silence_timer_gesture_count"; /** * Count of successful silence call gestures. * @hide */ - @Readable public static final String SILENCE_CALL_GESTURE_COUNT = "silence_call_gesture_count"; /** * Count of non-gesture interaction. * @hide */ - @Readable public static final String SILENCE_ALARMS_TOUCH_COUNT = "silence_alarms_touch_count"; /** * Count of non-gesture interaction. * @hide */ - @Readable public static final String SILENCE_TIMER_TOUCH_COUNT = "silence_timer_touch_count"; /** * Count of non-gesture interaction. * @hide */ - @Readable public static final String SILENCE_CALL_TOUCH_COUNT = "silence_call_touch_count"; /** * Number of successful "Motion Sense" tap gestures to pause media. * @hide */ - @Readable public static final String AWARE_TAP_PAUSE_GESTURE_COUNT = "aware_tap_pause_gesture_count"; /** @@ -8391,14 +8011,12 @@ public final class Settings { * have been used. * @hide */ - @Readable public static final String AWARE_TAP_PAUSE_TOUCH_COUNT = "aware_tap_pause_touch_count"; /** * For user preference if swipe bottom to expand notification gesture enabled. * @hide */ - @Readable public static final String SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED = "swipe_bottom_to_notification_enabled"; @@ -8406,28 +8024,24 @@ public final class Settings { * For user preference if One-Handed Mode enabled. * @hide */ - @Readable public static final String ONE_HANDED_MODE_ENABLED = "one_handed_mode_enabled"; /** * For user preference if One-Handed Mode timeout. * @hide */ - @Readable public static final String ONE_HANDED_MODE_TIMEOUT = "one_handed_mode_timeout"; /** * For user taps app to exit One-Handed Mode. * @hide */ - @Readable public static final String TAPS_APP_TO_EXIT = "taps_app_to_exit"; /** * Internal use, one handed mode tutorial showed times. * @hide */ - @Readable public static final String ONE_HANDED_TUTORIAL_SHOW_COUNT = "one_handed_tutorial_show_count"; @@ -8437,7 +8051,6 @@ public final class Settings { * UiModeManager. * @hide */ - @Readable public static final String UI_NIGHT_MODE = "ui_night_mode"; /** @@ -8446,14 +8059,12 @@ public final class Settings { * UiModeManager. * @hide */ - @Readable public static final String UI_NIGHT_MODE_OVERRIDE_ON = "ui_night_mode_override_on"; /** * The last computed night mode bool the last time the phone was on * @hide */ - @Readable public static final String UI_NIGHT_MODE_LAST_COMPUTED = "ui_night_mode_last_computed"; /** @@ -8462,14 +8073,12 @@ public final class Settings { * UiModeManager. * @hide */ - @Readable public static final String UI_NIGHT_MODE_OVERRIDE_OFF = "ui_night_mode_override_off"; /** * Whether screensavers are enabled. * @hide */ - @Readable public static final String SCREENSAVER_ENABLED = "screensaver_enabled"; /** @@ -8479,7 +8088,6 @@ public final class Settings { * battery, or upon dock insertion (if SCREENSAVER_ACTIVATE_ON_DOCK is set to 1). * @hide */ - @Readable public static final String SCREENSAVER_COMPONENTS = "screensaver_components"; /** @@ -8487,7 +8095,6 @@ public final class Settings { * when the device is inserted into a (desk) dock. * @hide */ - @Readable public static final String SCREENSAVER_ACTIVATE_ON_DOCK = "screensaver_activate_on_dock"; /** @@ -8495,14 +8102,12 @@ public final class Settings { * when the screen times out when not on battery. * @hide */ - @Readable public static final String SCREENSAVER_ACTIVATE_ON_SLEEP = "screensaver_activate_on_sleep"; /** * If screensavers are enabled, the default screensaver component. * @hide */ - @Readable public static final String SCREENSAVER_DEFAULT_COMPONENT = "screensaver_default_component"; /** @@ -8511,14 +8116,12 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi - @Readable public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component"; /** * Whether NFC payment is handled by the foreground application or a default. * @hide */ - @Readable public static final String NFC_PAYMENT_FOREGROUND = "nfc_payment_foreground"; /** @@ -8526,7 +8129,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String SMS_DEFAULT_APPLICATION = "sms_default_application"; /** @@ -8534,7 +8136,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String DIALER_DEFAULT_APPLICATION = "dialer_default_application"; /** @@ -8542,7 +8143,6 @@ public final class Settings { * application * @hide */ - @Readable public static final String CALL_SCREENING_DEFAULT_COMPONENT = "call_screening_default_component"; @@ -8553,7 +8153,6 @@ public final class Settings { * * @hide */ - @Readable public static final String EMERGENCY_ASSISTANCE_APPLICATION = "emergency_assistance_application"; /** @@ -8562,7 +8161,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ASSIST_STRUCTURE_ENABLED = "assist_structure_enabled"; /** @@ -8571,7 +8169,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ASSIST_SCREENSHOT_ENABLED = "assist_screenshot_enabled"; /** @@ -8583,7 +8180,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ASSIST_DISCLOSURE_ENABLED = "assist_disclosure_enabled"; /** @@ -8595,7 +8191,7 @@ public final class Settings { * * @hide */ - @Readable + public static final String SHOW_ROTATION_SUGGESTIONS = "show_rotation_suggestions"; /** @@ -8622,7 +8218,6 @@ public final class Settings { * introduced to rotation suggestions. * @hide */ - @Readable public static final String NUM_ROTATION_SUGGESTIONS_ACCEPTED = "num_rotation_suggestions_accepted"; @@ -8635,7 +8230,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String ENABLED_NOTIFICATION_ASSISTANT = "enabled_notification_assistant"; @@ -8649,7 +8243,6 @@ public final class Settings { */ @Deprecated @UnsupportedAppUsage - @Readable public static final String ENABLED_NOTIFICATION_LISTENERS = "enabled_notification_listeners"; /** @@ -8661,7 +8254,6 @@ public final class Settings { */ @Deprecated @TestApi - @Readable public static final String ENABLED_NOTIFICATION_POLICY_ACCESS_PACKAGES = "enabled_notification_policy_access_packages"; @@ -8675,7 +8267,6 @@ public final class Settings { * @hide */ @TestApi - @Readable @RequiresPermission(Manifest.permission.WRITE_SECURE_SETTINGS) public static final String SYNC_PARENT_SOUNDS = "sync_parent_sounds"; @@ -8684,7 +8275,6 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi - @Readable public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations"; /** @@ -8692,7 +8282,6 @@ public final class Settings { * * @hide */ - @Readable public static final String PRINT_SERVICE_SEARCH_URI = "print_service_search_uri"; /** @@ -8700,7 +8289,6 @@ public final class Settings { * * @hide */ - @Readable public static final String PAYMENT_SERVICE_SEARCH_URI = "payment_service_search_uri"; /** @@ -8708,7 +8296,6 @@ public final class Settings { * * @hide */ - @Readable public static final String AUTOFILL_SERVICE_SEARCH_URI = "autofill_service_search_uri"; /** @@ -8717,7 +8304,6 @@ public final class Settings { *

* Type : int (0 to show hints, 1 to skip showing hints) */ - @Readable public static final String SKIP_FIRST_USE_HINTS = "skip_first_use_hints"; /** @@ -8725,7 +8311,6 @@ public final class Settings { * * @hide */ - @Readable public static final String UNSAFE_VOLUME_MUSIC_ACTIVE_MS = "unsafe_volume_music_active_ms"; /** @@ -8736,7 +8321,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String LOCK_SCREEN_SHOW_NOTIFICATIONS = "lock_screen_show_notifications"; @@ -8747,7 +8331,6 @@ public final class Settings { * * @hide */ - @Readable public static final String LOCK_SCREEN_SHOW_SILENT_NOTIFICATIONS = "lock_screen_show_silent_notifications"; @@ -8758,7 +8341,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SHOW_NOTIFICATION_SNOOZE = "show_notification_snooze"; /** @@ -8767,7 +8349,6 @@ public final class Settings { * {@link android.net.Uri#encode(String)} and separated by ':'. * @hide */ - @Readable public static final String TV_INPUT_HIDDEN_INPUTS = "tv_input_hidden_inputs"; /** @@ -8776,7 +8357,6 @@ public final class Settings { * and separated by ','. Each pair is separated by ':'. * @hide */ - @Readable public static final String TV_INPUT_CUSTOM_LABELS = "tv_input_custom_labels"; /** @@ -8794,7 +8374,6 @@ public final class Settings { * * @hide */ - @Readable public static final String TV_APP_USES_NON_SYSTEM_INPUTS = "tv_app_uses_non_system_inputs"; /** @@ -8804,7 +8383,6 @@ public final class Settings { * * @hide */ - @Readable public static final String USB_AUDIO_AUTOMATIC_ROUTING_DISABLED = "usb_audio_automatic_routing_disabled"; @@ -8820,7 +8398,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SLEEP_TIMEOUT = "sleep_timeout"; /** @@ -8835,14 +8412,12 @@ public final class Settings { * * @hide */ - @Readable public static final String ATTENTIVE_TIMEOUT = "attentive_timeout"; /** * Controls whether double tap to wake is enabled. * @hide */ - @Readable public static final String DOUBLE_TAP_TO_WAKE = "double_tap_to_wake"; /** @@ -8856,7 +8431,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String ASSISTANT = "assistant"; /** @@ -8864,7 +8438,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAMERA_GESTURE_DISABLED = "camera_gesture_disabled"; /** @@ -8872,7 +8445,6 @@ public final class Settings { * * @hide */ - @Readable public static final String EMERGENCY_GESTURE_ENABLED = "emergency_gesture_enabled"; /** @@ -8880,7 +8452,6 @@ public final class Settings { * * @hide */ - @Readable public static final String EMERGENCY_GESTURE_SOUND_ENABLED = "emergency_gesture_sound_enabled"; @@ -8890,7 +8461,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAMERA_DOUBLE_TAP_POWER_GESTURE_DISABLED = "camera_double_tap_power_gesture_disabled"; @@ -8900,7 +8470,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED = "camera_double_twist_to_flip_enabled"; @@ -8910,7 +8479,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAMERA_LIFT_TRIGGER_ENABLED = "camera_lift_trigger_enabled"; /** @@ -8926,7 +8494,6 @@ public final class Settings { * * @hide */ - @Readable public static final String FLASHLIGHT_AVAILABLE = "flashlight_available"; /** @@ -8934,21 +8501,18 @@ public final class Settings { * * @hide */ - @Readable public static final String FLASHLIGHT_ENABLED = "flashlight_enabled"; /** * Whether or not face unlock is allowed on Keyguard. * @hide */ - @Readable public static final String FACE_UNLOCK_KEYGUARD_ENABLED = "face_unlock_keyguard_enabled"; /** * Whether or not face unlock dismisses the keyguard. * @hide */ - @Readable public static final String FACE_UNLOCK_DISMISSES_KEYGUARD = "face_unlock_dismisses_keyguard"; @@ -8956,7 +8520,6 @@ public final class Settings { * Whether or not media is shown automatically when bypassing as a heads up. * @hide */ - @Readable public static final String SHOW_MEDIA_WHEN_BYPASSING = "show_media_when_bypassing"; @@ -8965,7 +8528,6 @@ public final class Settings { * truth is obtained through the HAL. * @hide */ - @Readable public static final String FACE_UNLOCK_ATTENTION_REQUIRED = "face_unlock_attention_required"; @@ -8974,7 +8536,6 @@ public final class Settings { * cached value, the source of truth is obtained through the HAL. * @hide */ - @Readable public static final String FACE_UNLOCK_DIVERSITY_REQUIRED = "face_unlock_diversity_required"; @@ -8983,7 +8544,6 @@ public final class Settings { * Whether or not face unlock is allowed for apps (through BiometricPrompt). * @hide */ - @Readable public static final String FACE_UNLOCK_APP_ENABLED = "face_unlock_app_enabled"; /** @@ -8993,7 +8553,6 @@ public final class Settings { * setConfirmationRequired API. * @hide */ - @Readable public static final String FACE_UNLOCK_ALWAYS_REQUIRE_CONFIRMATION = "face_unlock_always_require_confirmation"; @@ -9008,14 +8567,12 @@ public final class Settings { * * @hide */ - @Readable public static final String FACE_UNLOCK_RE_ENROLL = "face_unlock_re_enroll"; /** * Whether or not debugging is enabled. * @hide */ - @Readable public static final String BIOMETRIC_DEBUG_ENABLED = "biometric_debug_enabled"; @@ -9024,7 +8581,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ASSIST_GESTURE_ENABLED = "assist_gesture_enabled"; /** @@ -9032,7 +8588,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ASSIST_GESTURE_SENSITIVITY = "assist_gesture_sensitivity"; /** @@ -9040,7 +8595,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ASSIST_GESTURE_SILENCE_ALERTS_ENABLED = "assist_gesture_silence_alerts_enabled"; @@ -9049,7 +8603,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ASSIST_GESTURE_WAKE_ENABLED = "assist_gesture_wake_enabled"; @@ -9061,42 +8614,36 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String ASSIST_GESTURE_SETUP_COMPLETE = "assist_gesture_setup_complete"; /** * Control whether Trust Agents are in active unlock or extend unlock mode. * @hide */ - @Readable public static final String TRUST_AGENTS_EXTEND_UNLOCK = "trust_agents_extend_unlock"; /** * Control whether the screen locks when trust is lost. * @hide */ - @Readable public static final String LOCK_SCREEN_WHEN_TRUST_LOST = "lock_screen_when_trust_lost"; /** * Control whether Night display is currently activated. * @hide */ - @Readable public static final String NIGHT_DISPLAY_ACTIVATED = "night_display_activated"; /** * Control whether Night display will automatically activate/deactivate. * @hide */ - @Readable public static final String NIGHT_DISPLAY_AUTO_MODE = "night_display_auto_mode"; /** * Control the color temperature of Night Display, represented in Kelvin. * @hide */ - @Readable public static final String NIGHT_DISPLAY_COLOR_TEMPERATURE = "night_display_color_temperature"; @@ -9105,7 +8652,6 @@ public final class Settings { * Represented as milliseconds from midnight (e.g. 79200000 == 10pm). * @hide */ - @Readable public static final String NIGHT_DISPLAY_CUSTOM_START_TIME = "night_display_custom_start_time"; @@ -9114,7 +8660,6 @@ public final class Settings { * Represented as milliseconds from midnight (e.g. 21600000 == 6am). * @hide */ - @Readable public static final String NIGHT_DISPLAY_CUSTOM_END_TIME = "night_display_custom_end_time"; /** @@ -9123,7 +8668,6 @@ public final class Settings { * legacy cases, this is represented by the time in milliseconds (since epoch). * @hide */ - @Readable public static final String NIGHT_DISPLAY_LAST_ACTIVATED_TIME = "night_display_last_activated_time"; @@ -9131,7 +8675,6 @@ public final class Settings { * Control whether display white balance is currently enabled. * @hide */ - @Readable public static final String DISPLAY_WHITE_BALANCE_ENABLED = "display_white_balance_enabled"; /** @@ -9142,7 +8685,6 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi - @Readable public static final String ENABLED_VR_LISTENERS = "enabled_vr_listeners"; /** @@ -9152,7 +8694,6 @@ public final class Settings { * * @hide */ - @Readable public static final String VR_DISPLAY_MODE = "vr_display_mode"; /** @@ -9186,7 +8727,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CARRIER_APPS_HANDLED = "carrier_apps_handled"; /** @@ -9194,7 +8734,6 @@ public final class Settings { * * @hide */ - @Readable public static final String MANAGED_PROFILE_CONTACT_REMOTE_SEARCH = "managed_profile_contact_remote_search"; @@ -9203,7 +8742,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CROSS_PROFILE_CALENDAR_ENABLED = "cross_profile_calendar_enabled"; @@ -9212,7 +8750,6 @@ public final class Settings { * * @hide */ - @Readable public static final String AUTOMATIC_STORAGE_MANAGER_ENABLED = "automatic_storage_manager_enabled"; @@ -9221,7 +8758,6 @@ public final class Settings { * * @hide */ - @Readable public static final String AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN = "automatic_storage_manager_days_to_retain"; @@ -9237,7 +8773,6 @@ public final class Settings { * * @hide */ - @Readable public static final String AUTOMATIC_STORAGE_MANAGER_BYTES_CLEARED = "automatic_storage_manager_bytes_cleared"; @@ -9246,7 +8781,6 @@ public final class Settings { * * @hide */ - @Readable public static final String AUTOMATIC_STORAGE_MANAGER_LAST_RUN = "automatic_storage_manager_last_run"; /** @@ -9256,7 +8790,6 @@ public final class Settings { * * @hide */ - @Readable public static final String AUTOMATIC_STORAGE_MANAGER_TURNED_OFF_BY_POLICY = "automatic_storage_manager_turned_off_by_policy"; @@ -9264,7 +8797,6 @@ public final class Settings { * Whether SystemUI navigation keys is enabled. * @hide */ - @Readable public static final String SYSTEM_NAVIGATION_KEYS_ENABLED = "system_navigation_keys_enabled"; @@ -9273,7 +8805,6 @@ public final class Settings { * * @hide */ - @Readable public static final String QS_TILES = "sysui_qs_tiles"; /** @@ -9284,7 +8815,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CONTROLS_ENABLED = "controls_enabled"; /** @@ -9294,7 +8824,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String POWER_MENU_LOCKED_SHOW_CONTENT = "power_menu_locked_show_content"; @@ -9304,21 +8833,18 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String INSTANT_APPS_ENABLED = "instant_apps_enabled"; /** * Has this pairable device been paired or upgraded from a previously paired system. * @hide */ - @Readable public static final String DEVICE_PAIRED = "device_paired"; /** * Specifies additional package name for broadcasting the CMAS messages. * @hide */ - @Readable public static final String CMAS_ADDITIONAL_BROADCAST_PKG = "cmas_additional_broadcast_pkg"; /** @@ -9328,7 +8854,6 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi - @Readable public static final String NOTIFICATION_BADGING = "notification_badging"; /** @@ -9338,7 +8863,6 @@ public final class Settings { * The value 1 - enable, 0 - disable * @hide */ - @Readable public static final String NOTIFICATION_HISTORY_ENABLED = "notification_history_enabled"; /** @@ -9347,7 +8871,6 @@ public final class Settings { * The value 1 - enable, 0 - disable * @hide */ - @Readable public static final String BUBBLE_IMPORTANT_CONVERSATIONS = "bubble_important_conversations"; @@ -9357,21 +8880,18 @@ public final class Settings { * * @hide */ - @Readable public static final String NOTIFICATION_DISMISS_RTL = "notification_dismiss_rtl"; /** * Comma separated list of QS tiles that have been auto-added already. * @hide */ - @Readable public static final String QS_AUTO_ADDED_TILES = "qs_auto_tiles"; /** * Whether the Lockdown button should be shown in the power menu. * @hide */ - @Readable public static final String LOCKDOWN_IN_POWER_MENU = "lockdown_in_power_menu"; /** @@ -9399,7 +8919,6 @@ public final class Settings { * Type: string * @hide */ - @Readable public static final String BACKUP_MANAGER_CONSTANTS = "backup_manager_constants"; @@ -9417,7 +8936,6 @@ public final class Settings { * Type: string * @hide */ - @Readable public static final String BACKUP_LOCAL_TRANSPORT_PARAMETERS = "backup_local_transport_parameters"; @@ -9426,7 +8944,6 @@ public final class Settings { * the user is driving. * @hide */ - @Readable public static final String BLUETOOTH_ON_WHILE_DRIVING = "bluetooth_on_while_driving"; /** @@ -9436,7 +8953,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String VOLUME_HUSH_GESTURE = "volume_hush_gesture"; /** @hide */ @@ -9453,7 +8969,6 @@ public final class Settings { * The number of times (integer) the user has manually enabled battery saver. * @hide */ - @Readable public static final String LOW_POWER_MANUAL_ACTIVATION_COUNT = "low_power_manual_activation_count"; @@ -9463,7 +8978,6 @@ public final class Settings { * * @hide */ - @Readable public static final String LOW_POWER_WARNING_ACKNOWLEDGED = "low_power_warning_acknowledged"; @@ -9472,7 +8986,6 @@ public final class Settings { * suppressed. * @hide */ - @Readable public static final String SUPPRESS_AUTO_BATTERY_SAVER_SUGGESTION = "suppress_auto_battery_saver_suggestion"; @@ -9481,7 +8994,6 @@ public final class Settings { * Type: string * @hide */ - @Readable public static final String PACKAGES_TO_CLEAR_DATA_BEFORE_FULL_RESTORE = "packages_to_clear_data_before_full_restore"; @@ -9490,7 +9002,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis"; @@ -9499,7 +9010,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis"; @@ -9509,7 +9019,6 @@ public final class Settings { */ @SystemApi @Deprecated - @Readable public static final String LOCATION_PERMISSIONS_UPGRADE_TO_Q_MODE = "location_permissions_upgrade_to_q_mode"; @@ -9518,7 +9027,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String AUTO_REVOKE_DISABLED = "auto_revoke_disabled"; /** @@ -9529,7 +9037,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String THEME_CUSTOMIZATION_OVERLAY_PACKAGES = "theme_customization_overlay_packages"; @@ -9540,7 +9047,6 @@ public final class Settings { * 2 = fully gestural * @hide */ - @Readable public static final String NAVIGATION_MODE = "navigation_mode"; @@ -9548,7 +9054,6 @@ public final class Settings { * Scale factor for the back gesture inset size on the left side of the screen. * @hide */ - @Readable public static final String BACK_GESTURE_INSET_SCALE_LEFT = "back_gesture_inset_scale_left"; @@ -9556,7 +9061,6 @@ public final class Settings { * Scale factor for the back gesture inset size on the right side of the screen. * @hide */ - @Readable public static final String BACK_GESTURE_INSET_SCALE_RIGHT = "back_gesture_inset_scale_right"; @@ -9566,35 +9070,30 @@ public final class Settings { * No VALIDATOR as this setting will not be backed up. * @hide */ - @Readable public static final String NEARBY_SHARING_COMPONENT = "nearby_sharing_component"; /** * Controls whether aware is enabled. * @hide */ - @Readable public static final String AWARE_ENABLED = "aware_enabled"; /** * Controls whether aware_lock is enabled. * @hide */ - @Readable public static final String AWARE_LOCK_ENABLED = "aware_lock_enabled"; /** * Controls whether tap gesture is enabled. * @hide */ - @Readable public static final String TAP_GESTURE = "tap_gesture"; /** * Controls whether the people strip is enabled. * @hide */ - @Readable public static final String PEOPLE_STRIP = "people_strip"; /** @@ -9604,7 +9103,6 @@ public final class Settings { * @see Settings.Global#SHOW_MEDIA_ON_QUICK_SETTINGS * @hide */ - @Readable public static final String MEDIA_CONTROLS_RESUME = "qs_media_resumption"; /** @@ -9613,7 +9111,6 @@ public final class Settings { * @see Settings.Secure#MEDIA_CONTROLS_RESUME * @hide */ - @Readable public static final String MEDIA_CONTROLS_RESUME_BLOCKED = "qs_media_resumption_blocked"; /** @@ -9625,7 +9122,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String ACCESSIBILITY_MAGNIFICATION_MODE = "accessibility_magnification_mode"; @@ -9661,7 +9157,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String ACCESSIBILITY_MAGNIFICATION_CAPABILITY = "accessibility_magnification_capability"; @@ -9671,7 +9166,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_SHOW_WINDOW_MAGNIFICATION_PROMPT = "accessibility_show_window_magnification_prompt"; @@ -9688,7 +9182,6 @@ public final class Settings { * @see #ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU * @hide */ - @Readable public static final String ACCESSIBILITY_BUTTON_MODE = "accessibility_button_mode"; @@ -9717,7 +9210,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_FLOATING_MENU_SIZE = "accessibility_floating_menu_size"; @@ -9730,7 +9222,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_FLOATING_MENU_ICON_TYPE = "accessibility_floating_menu_icon_type"; @@ -9740,7 +9231,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ACCESSIBILITY_FLOATING_MENU_OPACITY = "accessibility_floating_menu_opacity"; @@ -9749,7 +9239,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ADAPTIVE_CONNECTIVITY_ENABLED = "adaptive_connectivity_enabled"; /** @@ -9761,7 +9250,6 @@ public final class Settings { * * @hide */ - @Readable public static final String[] LEGACY_RESTORE_SETTINGS = { ENABLED_NOTIFICATION_LISTENERS, ENABLED_NOTIFICATION_ASSISTANT, @@ -9773,7 +9261,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ASSIST_HANDLES_LEARNING_TIME_ELAPSED_MILLIS = "reminder_exp_learning_time_elapsed"; @@ -9782,7 +9269,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ASSIST_HANDLES_LEARNING_EVENT_COUNT = "reminder_exp_learning_event_count"; @@ -9896,7 +9382,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String NOTIFICATION_BUBBLES = "notification_bubbles"; /** @@ -9905,7 +9390,6 @@ public final class Settings { * Type: int * @hide */ - @Readable public static final String ADD_USERS_WHEN_LOCKED = "add_users_when_locked"; /** @@ -9913,7 +9397,6 @@ public final class Settings { *

1 = apply ramping ringer *

0 = do not apply ramping ringer */ - @Readable public static final String APPLY_RAMPING_RINGER = "apply_ramping_ringer"; /** @@ -9925,14 +9408,12 @@ public final class Settings { * No longer used. Should be removed once all dependencies have been updated. */ @UnsupportedAppUsage - @Readable public static final String ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED = "enable_accessibility_global_gesture_enabled"; /** * Whether Airplane Mode is on. */ - @Readable public static final String AIRPLANE_MODE_ON = "airplane_mode_on"; /** @@ -9940,36 +9421,30 @@ public final class Settings { * {@hide} */ @SystemApi - @Readable public static final String THEATER_MODE_ON = "theater_mode_on"; /** * Constant for use in AIRPLANE_MODE_RADIOS to specify Bluetooth radio. */ - @Readable public static final String RADIO_BLUETOOTH = "bluetooth"; /** * Constant for use in AIRPLANE_MODE_RADIOS to specify Wi-Fi radio. */ - @Readable public static final String RADIO_WIFI = "wifi"; /** * {@hide} */ - @Readable public static final String RADIO_WIMAX = "wimax"; /** * Constant for use in AIRPLANE_MODE_RADIOS to specify Cellular radio. */ - @Readable public static final String RADIO_CELL = "cell"; /** * Constant for use in AIRPLANE_MODE_RADIOS to specify NFC radio. */ - @Readable public static final String RADIO_NFC = "nfc"; /** @@ -9977,7 +9452,6 @@ public final class Settings { * is on. This overrides WIFI_ON and BLUETOOTH_ON, if Wi-Fi and bluetooth are * included in the comma separated list. */ - @Readable public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios"; /** @@ -9989,7 +9463,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS = "airplane_mode_toggleable_radios"; /** @@ -9997,7 +9470,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BLUETOOTH_CLASS_OF_DEVICE = "bluetooth_class_of_device"; /** @@ -10005,7 +9477,6 @@ public final class Settings { * See {@link android.bluetooth.BluetoothProfile}. * {@hide} */ - @Readable public static final String BLUETOOTH_DISABLED_PROFILES = "bluetooth_disabled_profiles"; /** @@ -10018,7 +9489,6 @@ public final class Settings { * "00:11:22,0;01:02:03:04,2" * @hide */ - @Readable public static final String BLUETOOTH_INTEROPERABILITY_LIST = "bluetooth_interoperability_list"; /** @@ -10031,7 +9501,6 @@ public final class Settings { * @deprecated This is no longer used or set by the platform. */ @Deprecated - @Readable public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy"; /** @@ -10063,70 +9532,60 @@ public final class Settings { * Value to specify if the user prefers the date, time and time zone * to be automatically fetched from the network (NITZ). 1=yes, 0=no */ - @Readable public static final String AUTO_TIME = "auto_time"; /** * Value to specify if the user prefers the time zone * to be automatically fetched from the network (NITZ). 1=yes, 0=no */ - @Readable public static final String AUTO_TIME_ZONE = "auto_time_zone"; /** * URI for the car dock "in" event sound. * @hide */ - @Readable public static final String CAR_DOCK_SOUND = "car_dock_sound"; /** * URI for the car dock "out" event sound. * @hide */ - @Readable public static final String CAR_UNDOCK_SOUND = "car_undock_sound"; /** * URI for the desk dock "in" event sound. * @hide */ - @Readable public static final String DESK_DOCK_SOUND = "desk_dock_sound"; /** * URI for the desk dock "out" event sound. * @hide */ - @Readable public static final String DESK_UNDOCK_SOUND = "desk_undock_sound"; /** * Whether to play a sound for dock events. * @hide */ - @Readable public static final String DOCK_SOUNDS_ENABLED = "dock_sounds_enabled"; /** * Whether to play a sound for dock events, only when an accessibility service is on. * @hide */ - @Readable public static final String DOCK_SOUNDS_ENABLED_WHEN_ACCESSIBILITY = "dock_sounds_enabled_when_accessbility"; /** * URI for the "device locked" (keyguard shown) sound. * @hide */ - @Readable public static final String LOCK_SOUND = "lock_sound"; /** * URI for the "device unlocked" sound. * @hide */ - @Readable public static final String UNLOCK_SOUND = "unlock_sound"; /** @@ -10134,28 +9593,24 @@ public final class Settings { * state without unlocking. * @hide */ - @Readable public static final String TRUSTED_SOUND = "trusted_sound"; /** * URI for the low battery sound file. * @hide */ - @Readable public static final String LOW_BATTERY_SOUND = "low_battery_sound"; /** * Whether to play a sound for low-battery alerts. * @hide */ - @Readable public static final String POWER_SOUNDS_ENABLED = "power_sounds_enabled"; /** * URI for the "wireless charging started" sound. * @hide */ - @Readable public static final String WIRELESS_CHARGING_STARTED_SOUND = "wireless_charging_started_sound"; @@ -10163,7 +9618,6 @@ public final class Settings { * URI for "wired charging started" sound. * @hide */ - @Readable public static final String CHARGING_STARTED_SOUND = "charging_started_sound"; /** @@ -10193,7 +9647,6 @@ public final class Settings { * * These values can be OR-ed together. */ - @Readable public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in"; /** @@ -10201,7 +9654,6 @@ public final class Settings { * in the power menu. * @hide */ - @Readable public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu"; /** @@ -10210,7 +9662,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CUSTOM_BUGREPORT_HANDLER_APP = "custom_bugreport_handler_app"; /** @@ -10219,34 +9670,29 @@ public final class Settings { * * @hide */ - @Readable public static final String CUSTOM_BUGREPORT_HANDLER_USER = "custom_bugreport_handler_user"; /** * Whether ADB over USB is enabled. */ - @Readable public static final String ADB_ENABLED = "adb_enabled"; /** * Whether ADB over Wifi is enabled. * @hide */ - @Readable public static final String ADB_WIFI_ENABLED = "adb_wifi_enabled"; /** * Whether Views are allowed to save their attribute data. * @hide */ - @Readable public static final String DEBUG_VIEW_ATTRIBUTES = "debug_view_attributes"; /** * Which application package is allowed to save View attribute data. * @hide */ - @Readable public static final String DEBUG_VIEW_ATTRIBUTES_APPLICATION_PACKAGE = "debug_view_attributes_application_package"; @@ -10254,14 +9700,12 @@ public final class Settings { * Whether assisted GPS should be enabled or not. * @hide */ - @Readable public static final String ASSISTED_GPS_ENABLED = "assisted_gps_enabled"; /** * Whether bluetooth is enabled/disabled * 0=disabled. 1=enabled. */ - @Readable public static final String BLUETOOTH_ON = "bluetooth_on"; /** @@ -10270,7 +9714,6 @@ public final class Settings { * 1 = CDMA Cell Broadcast SMS enabled * @hide */ - @Readable public static final String CDMA_CELL_BROADCAST_SMS = "cdma_cell_broadcast_sms"; @@ -10280,7 +9723,6 @@ public final class Settings { * 2 = Roaming on any networks * @hide */ - @Readable public static final String CDMA_ROAMING_MODE = "roaming_settings"; /** @@ -10288,7 +9730,6 @@ public final class Settings { * 1 = NV * @hide */ - @Readable public static final String CDMA_SUBSCRIPTION_MODE = "subscription_mode"; /** @@ -10298,48 +9739,44 @@ public final class Settings { * * @hide */ - @Readable public static final String DEFAULT_RESTRICT_BACKGROUND_DATA = "default_restrict_background_data"; /** Inactivity timeout to track mobile data activity. - * - * If set to a positive integer, it indicates the inactivity timeout value in seconds to - * infer the data activity of mobile network. After a period of no activity on mobile - * networks with length specified by the timeout, an {@code ACTION_DATA_ACTIVITY_CHANGE} - * intent is fired to indicate a transition of network status from "active" to "idle". Any - * subsequent activity on mobile networks triggers the firing of {@code - * ACTION_DATA_ACTIVITY_CHANGE} intent indicating transition from "idle" to "active". - * - * Network activity refers to transmitting or receiving data on the network interfaces. - * - * Tracking is disabled if set to zero or negative value. - * - * @hide - */ - @Readable - public static final String DATA_ACTIVITY_TIMEOUT_MOBILE = "data_activity_timeout_mobile"; + * + * If set to a positive integer, it indicates the inactivity timeout value in seconds to + * infer the data activity of mobile network. After a period of no activity on mobile + * networks with length specified by the timeout, an {@code ACTION_DATA_ACTIVITY_CHANGE} + * intent is fired to indicate a transition of network status from "active" to "idle". Any + * subsequent activity on mobile networks triggers the firing of {@code + * ACTION_DATA_ACTIVITY_CHANGE} intent indicating transition from "idle" to "active". + * + * Network activity refers to transmitting or receiving data on the network interfaces. + * + * Tracking is disabled if set to zero or negative value. + * + * @hide + */ + public static final String DATA_ACTIVITY_TIMEOUT_MOBILE = "data_activity_timeout_mobile"; - /** Timeout to tracking Wifi data activity. Same as {@code DATA_ACTIVITY_TIMEOUT_MOBILE} - * but for Wifi network. - * @hide - */ - @Readable - public static final String DATA_ACTIVITY_TIMEOUT_WIFI = "data_activity_timeout_wifi"; + /** Timeout to tracking Wifi data activity. Same as {@code DATA_ACTIVITY_TIMEOUT_MOBILE} + * but for Wifi network. + * @hide + */ + public static final String DATA_ACTIVITY_TIMEOUT_WIFI = "data_activity_timeout_wifi"; - /** - * Whether or not data roaming is enabled. (0 = false, 1 = true) - */ - @Readable - public static final String DATA_ROAMING = "data_roaming"; + /** + * Whether or not data roaming is enabled. (0 = false, 1 = true) + */ + public static final String DATA_ROAMING = "data_roaming"; - /** - * The value passed to a Mobile DataConnection via bringUp which defines the - * number of retries to preform when setting up the initial connection. The default - * value defined in DataConnectionTrackerBase#DEFAULT_MDC_INITIAL_RETRY is currently 1. - * @hide - */ - public static final String MDC_INITIAL_MAX_RETRY = "mdc_initial_max_retry"; + /** + * The value passed to a Mobile DataConnection via bringUp which defines the + * number of retries to preform when setting up the initial connection. The default + * value defined in DataConnectionTrackerBase#DEFAULT_MDC_INITIAL_RETRY is currently 1. + * @hide + */ + public static final String MDC_INITIAL_MAX_RETRY = "mdc_initial_max_retry"; /** * Whether any package can be on external storage. When this is true, any @@ -10361,7 +9798,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String DEFAULT_SM_DP_PLUS = "default_sm_dp_plus"; /** @@ -10373,7 +9809,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String EUICC_PROVISIONED = "euicc_provisioned"; /** @@ -10389,7 +9824,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String EUICC_SUPPORTED_COUNTRIES = "euicc_supported_countries"; /** @@ -10405,7 +9839,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String EUICC_UNSUPPORTED_COUNTRIES = "euicc_unsupported_countries"; /** @@ -10414,7 +9847,6 @@ public final class Settings { * (0 = false, 1 = true) * @hide */ - @Readable public static final String DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES = "force_resizable_activities"; @@ -10422,7 +9854,6 @@ public final class Settings { * Whether to enable experimental freeform support for windows. * @hide */ - @Readable public static final String DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT = "enable_freeform_support"; @@ -10430,7 +9861,6 @@ public final class Settings { * Whether to enable experimental desktop mode on secondary displays. * @hide */ - @Readable public static final String DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS = "force_desktop_mode_on_external_displays"; @@ -10442,7 +9872,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String DEVELOPMENT_ENABLE_SIZECOMPAT_FREEFORM = "enable_sizecompat_freeform"; @@ -10453,7 +9882,6 @@ public final class Settings { * @hide */ @TestApi - @Readable @SuppressLint("NoSettingsProvider") public static final String DEVELOPMENT_ENABLE_NON_RESIZABLE_MULTI_WINDOW = "enable_non_resizable_multi_window"; @@ -10465,7 +9893,6 @@ public final class Settings { * (0 = false, 1 = true) * @hide */ - @Readable public static final String DEVELOPMENT_RENDER_SHADOWS_IN_COMPOSITOR = "render_shadows_in_compositor"; @@ -10474,7 +9901,6 @@ public final class Settings { * (0 = false, 1 = true) * @hide */ - @Readable public static final String DEVELOPMENT_USE_BLAST_ADAPTER_VR = "use_blast_adapter_vr"; @@ -10483,7 +9909,6 @@ public final class Settings { * (0 = false, 1 = true) * @hide */ - @Readable public static final String DEVELOPMENT_USE_BLAST_ADAPTER_SV = "use_blast_adapter_sv"; @@ -10493,24 +9918,21 @@ public final class Settings { * * @hide */ - @Readable public static final String DEVELOPMENT_WM_DISPLAY_SETTINGS_PATH = "wm_display_settings_path"; - /** + /** * Whether user has enabled development settings. */ - @Readable - public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled"; + public static final String DEVELOPMENT_SETTINGS_ENABLED = "development_settings_enabled"; - /** + /** * Whether the device has been provisioned (0 = false, 1 = true). *

On a multiuser device with a separate system user, the screen may be locked * as soon as this is set to true and further activities cannot be launched on the * system user unless they are marked to show over keyguard. */ - @Readable - public static final String DEVICE_PROVISIONED = "device_provisioned"; + public static final String DEVICE_PROVISIONED = "device_provisioned"; /** * Indicates whether mobile data should be allowed while the device is being provisioned. @@ -10523,58 +9945,52 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String DEVICE_PROVISIONING_MOBILE_DATA_ENABLED = "device_provisioning_mobile_data"; - /** + /** * The saved value for WindowManagerService.setForcedDisplaySize(). * Two integers separated by a comma. If unset, then use the real display size. * @hide */ - @Readable - public static final String DISPLAY_SIZE_FORCED = "display_size_forced"; + public static final String DISPLAY_SIZE_FORCED = "display_size_forced"; - /** + /** * The saved value for WindowManagerService.setForcedDisplayScalingMode(). * 0 or unset if scaling is automatic, 1 if scaling is disabled. * @hide */ - @Readable - public static final String DISPLAY_SCALING_FORCE = "display_scaling_force"; + public static final String DISPLAY_SCALING_FORCE = "display_scaling_force"; - /** + /** * The maximum size, in bytes, of a download that the download manager will transfer over * a non-wifi connection. * @hide */ - @Readable - public static final String DOWNLOAD_MAX_BYTES_OVER_MOBILE = + public static final String DOWNLOAD_MAX_BYTES_OVER_MOBILE = "download_manager_max_bytes_over_mobile"; - /** + /** * The recommended maximum size, in bytes, of a download that the download manager should * transfer over a non-wifi connection. Over this size, the use will be warned, but will * have the option to start the download over the mobile connection anyway. * @hide */ - @Readable - public static final String DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE = + public static final String DOWNLOAD_RECOMMENDED_MAX_BYTES_OVER_MOBILE = "download_manager_recommended_max_bytes_over_mobile"; - /** + /** * @deprecated Use {@link android.provider.Settings.Secure#INSTALL_NON_MARKET_APPS} instead */ - @Deprecated - public static final String INSTALL_NON_MARKET_APPS = Secure.INSTALL_NON_MARKET_APPS; + @Deprecated + public static final String INSTALL_NON_MARKET_APPS = Secure.INSTALL_NON_MARKET_APPS; - /** + /** * Whether HDMI control shall be enabled. If disabled, no CEC/MHL command will be * sent or processed. (0 = false, 1 = true) * @hide */ - @Readable - public static final String HDMI_CONTROL_ENABLED = "hdmi_control_enabled"; + public static final String HDMI_CONTROL_ENABLED = "hdmi_control_enabled"; /** * Controls whether volume control commands via HDMI CEC are enabled. (0 = false, 1 = @@ -10610,18 +10026,16 @@ public final class Settings { * @hide * @see android.hardware.hdmi.HdmiControlManager#setHdmiCecVolumeControlEnabled(boolean) */ - @Readable public static final String HDMI_CONTROL_VOLUME_CONTROL_ENABLED = "hdmi_control_volume_control_enabled"; - /** + /** * Whether HDMI System Audio Control feature is enabled. If enabled, TV will try to turn on * system audio mode if there's a connected CEC-enabled AV Receiver. Then audio stream will * be played on AVR instead of TV spaeker. If disabled, the system audio mode will never be * activated. * @hide */ - @Readable public static final String HDMI_SYSTEM_AUDIO_CONTROL_ENABLED = "hdmi_system_audio_control_enabled"; @@ -10631,7 +10045,6 @@ public final class Settings { * disabled, you can only switch the input via controls on this device. * @hide */ - @Readable public static final String HDMI_CEC_SWITCH_ENABLED = "hdmi_cec_switch_enabled"; @@ -10639,7 +10052,6 @@ public final class Settings { * HDMI CEC version to use. Defaults to v1.4b. * @hide */ - @Readable public static final String HDMI_CEC_VERSION = "hdmi_cec_version"; @@ -10649,7 +10061,6 @@ public final class Settings { * * @hide */ - @Readable public static final String HDMI_CONTROL_AUTO_WAKEUP_ENABLED = "hdmi_control_auto_wakeup_enabled"; @@ -10659,7 +10070,6 @@ public final class Settings { * * @hide */ - @Readable public static final String HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED = "hdmi_control_auto_device_off_enabled"; @@ -10681,7 +10091,6 @@ public final class Settings { * * @hide */ - @Readable public static final String HDMI_CONTROL_SEND_STANDBY_ON_SLEEP = "hdmi_control_send_standby_on_sleep"; @@ -10689,7 +10098,6 @@ public final class Settings { * Whether or not media is shown automatically when bypassing as a heads up. * @hide */ - @Readable public static final String SHOW_MEDIA_ON_QUICK_SETTINGS = "qs_media_player"; @@ -10699,7 +10107,6 @@ public final class Settings { * * @hide */ - @Readable public static final String LOCATION_BACKGROUND_THROTTLE_INTERVAL_MS = "location_background_throttle_interval_ms"; @@ -10708,7 +10115,6 @@ public final class Settings { * to request. * @hide */ - @Readable public static final String LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS = "location_background_throttle_proximity_alert_interval_ms"; @@ -10716,7 +10122,6 @@ public final class Settings { * Packages that are whitelisted for background throttling (throttling will not be applied). * @hide */ - @Readable public static final String LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST = "location_background_throttle_package_whitelist"; @@ -10726,7 +10131,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST = "location_ignore_settings_package_whitelist"; @@ -10735,26 +10139,23 @@ public final class Settings { * (0 = false, 1 = true) * @hide */ - @Readable - public static final String MHL_INPUT_SWITCHING_ENABLED = "mhl_input_switching_enabled"; + public static final String MHL_INPUT_SWITCHING_ENABLED = "mhl_input_switching_enabled"; - /** + /** * Whether TV will charge the mobile device connected at MHL port. (0 = false, 1 = true) * @hide */ - @Readable - public static final String MHL_POWER_CHARGE_ENABLED = "mhl_power_charge_enabled"; + public static final String MHL_POWER_CHARGE_ENABLED = "mhl_power_charge_enabled"; - /** + /** * Whether mobile data connections are allowed by the user. See * ConnectivityManager for more info. * @hide */ - @UnsupportedAppUsage - @Readable - public static final String MOBILE_DATA = "mobile_data"; + @UnsupportedAppUsage + public static final String MOBILE_DATA = "mobile_data"; - /** + /** * Whether the mobile data connection should remain active even when higher * priority networks like WiFi are active, to help make network switching faster. * @@ -10763,8 +10164,7 @@ public final class Settings { * (0 = disabled, 1 = enabled) * @hide */ - @Readable - public static final String MOBILE_DATA_ALWAYS_ON = "mobile_data_always_on"; + public static final String MOBILE_DATA_ALWAYS_ON = "mobile_data_always_on"; /** * Whether the wifi data connection should remain active even when higher @@ -10777,249 +10177,195 @@ public final class Settings { * (0 = disabled, 1 = enabled) * @hide */ - @Readable public static final String WIFI_ALWAYS_REQUESTED = "wifi_always_requested"; /** * Size of the event buffer for IP connectivity metrics. * @hide */ - @Readable public static final String CONNECTIVITY_METRICS_BUFFER_SIZE = "connectivity_metrics_buffer_size"; - /** {@hide} */ - @Readable - public static final String NETSTATS_ENABLED = "netstats_enabled"; - /** {@hide} */ - @Readable - public static final String NETSTATS_POLL_INTERVAL = "netstats_poll_interval"; - /** - * @deprecated - * {@hide} - */ - @Deprecated - @Readable - public static final String NETSTATS_TIME_CACHE_MAX_AGE = "netstats_time_cache_max_age"; - /** {@hide} */ - @Readable - public static final String NETSTATS_GLOBAL_ALERT_BYTES = "netstats_global_alert_bytes"; - /** {@hide} */ - @Readable - public static final String NETSTATS_SAMPLE_ENABLED = "netstats_sample_enabled"; - /** {@hide} */ - @Readable - public static final String NETSTATS_AUGMENT_ENABLED = "netstats_augment_enabled"; - /** {@hide} */ - @Readable - public static final String NETSTATS_COMBINE_SUBTYPE_ENABLED = - "netstats_combine_subtype_enabled"; + /** {@hide} */ + public static final String NETSTATS_ENABLED = "netstats_enabled"; + /** {@hide} */ + public static final String NETSTATS_POLL_INTERVAL = "netstats_poll_interval"; + /** {@hide} */ + @Deprecated + public static final String NETSTATS_TIME_CACHE_MAX_AGE = "netstats_time_cache_max_age"; + /** {@hide} */ + public static final String NETSTATS_GLOBAL_ALERT_BYTES = "netstats_global_alert_bytes"; + /** {@hide} */ + public static final String NETSTATS_SAMPLE_ENABLED = "netstats_sample_enabled"; + /** {@hide} */ + public static final String NETSTATS_AUGMENT_ENABLED = "netstats_augment_enabled"; + /** {@hide} */ + public static final String NETSTATS_COMBINE_SUBTYPE_ENABLED = "netstats_combine_subtype_enabled"; - /** {@hide} */ - @Readable - public static final String NETSTATS_DEV_BUCKET_DURATION = "netstats_dev_bucket_duration"; - /** {@hide} */ - @Readable - public static final String NETSTATS_DEV_PERSIST_BYTES = "netstats_dev_persist_bytes"; - /** {@hide} */ - @Readable - public static final String NETSTATS_DEV_ROTATE_AGE = "netstats_dev_rotate_age"; - /** {@hide} */ - @Readable - public static final String NETSTATS_DEV_DELETE_AGE = "netstats_dev_delete_age"; + /** {@hide} */ + public static final String NETSTATS_DEV_BUCKET_DURATION = "netstats_dev_bucket_duration"; + /** {@hide} */ + public static final String NETSTATS_DEV_PERSIST_BYTES = "netstats_dev_persist_bytes"; + /** {@hide} */ + public static final String NETSTATS_DEV_ROTATE_AGE = "netstats_dev_rotate_age"; + /** {@hide} */ + public static final String NETSTATS_DEV_DELETE_AGE = "netstats_dev_delete_age"; - /** {@hide} */ - @Readable - public static final String NETSTATS_UID_BUCKET_DURATION = "netstats_uid_bucket_duration"; - /** {@hide} */ - @Readable - public static final String NETSTATS_UID_PERSIST_BYTES = "netstats_uid_persist_bytes"; - /** {@hide} */ - @Readable - public static final String NETSTATS_UID_ROTATE_AGE = "netstats_uid_rotate_age"; - /** {@hide} */ - @Readable - public static final String NETSTATS_UID_DELETE_AGE = "netstats_uid_delete_age"; + /** {@hide} */ + public static final String NETSTATS_UID_BUCKET_DURATION = "netstats_uid_bucket_duration"; + /** {@hide} */ + public static final String NETSTATS_UID_PERSIST_BYTES = "netstats_uid_persist_bytes"; + /** {@hide} */ + public static final String NETSTATS_UID_ROTATE_AGE = "netstats_uid_rotate_age"; + /** {@hide} */ + public static final String NETSTATS_UID_DELETE_AGE = "netstats_uid_delete_age"; - /** {@hide} */ - @Readable - public static final String NETSTATS_UID_TAG_BUCKET_DURATION = - "netstats_uid_tag_bucket_duration"; - /** {@hide} */ - @Readable - public static final String NETSTATS_UID_TAG_PERSIST_BYTES = - "netstats_uid_tag_persist_bytes"; - /** {@hide} */ - @Readable - public static final String NETSTATS_UID_TAG_ROTATE_AGE = "netstats_uid_tag_rotate_age"; - /** {@hide} */ - @Readable - public static final String NETSTATS_UID_TAG_DELETE_AGE = "netstats_uid_tag_delete_age"; + /** {@hide} */ + public static final String NETSTATS_UID_TAG_BUCKET_DURATION = "netstats_uid_tag_bucket_duration"; + /** {@hide} */ + public static final String NETSTATS_UID_TAG_PERSIST_BYTES = "netstats_uid_tag_persist_bytes"; + /** {@hide} */ + public static final String NETSTATS_UID_TAG_ROTATE_AGE = "netstats_uid_tag_rotate_age"; + /** {@hide} */ + public static final String NETSTATS_UID_TAG_DELETE_AGE = "netstats_uid_tag_delete_age"; - /** {@hide} */ - @Readable - public static final String NETPOLICY_QUOTA_ENABLED = "netpolicy_quota_enabled"; - /** {@hide} */ - @Readable - public static final String NETPOLICY_QUOTA_UNLIMITED = "netpolicy_quota_unlimited"; - /** {@hide} */ - @Readable - public static final String NETPOLICY_QUOTA_LIMITED = "netpolicy_quota_limited"; - /** {@hide} */ - @Readable - public static final String NETPOLICY_QUOTA_FRAC_JOBS = "netpolicy_quota_frac_jobs"; - /** {@hide} */ - @Readable - public static final String NETPOLICY_QUOTA_FRAC_MULTIPATH = - "netpolicy_quota_frac_multipath"; + /** {@hide} */ + public static final String NETPOLICY_QUOTA_ENABLED = "netpolicy_quota_enabled"; + /** {@hide} */ + public static final String NETPOLICY_QUOTA_UNLIMITED = "netpolicy_quota_unlimited"; + /** {@hide} */ + public static final String NETPOLICY_QUOTA_LIMITED = "netpolicy_quota_limited"; + /** {@hide} */ + public static final String NETPOLICY_QUOTA_FRAC_JOBS = "netpolicy_quota_frac_jobs"; + /** {@hide} */ + public static final String NETPOLICY_QUOTA_FRAC_MULTIPATH = "netpolicy_quota_frac_multipath"; - /** {@hide} */ - @Readable - public static final String NETPOLICY_OVERRIDE_ENABLED = "netpolicy_override_enabled"; + /** {@hide} */ + public static final String NETPOLICY_OVERRIDE_ENABLED = "netpolicy_override_enabled"; - /** + /** * User preference for which network(s) should be used. Only the * connectivity service should touch this. */ - @Readable - public static final String NETWORK_PREFERENCE = "network_preference"; + public static final String NETWORK_PREFERENCE = "network_preference"; - /** + /** * Which package name to use for network scoring. If null, or if the package is not a valid * scorer app, external network scores will neither be requested nor accepted. * @hide */ - @Readable - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - public static final String NETWORK_SCORER_APP = "network_scorer_app"; + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) + public static final String NETWORK_SCORER_APP = "network_scorer_app"; /** * Whether night display forced auto mode is available. * 0 = unavailable, 1 = available. * @hide */ - @Readable public static final String NIGHT_DISPLAY_FORCED_AUTO_MODE_AVAILABLE = "night_display_forced_auto_mode_available"; - /** + /** * If the NITZ_UPDATE_DIFF time is exceeded then an automatic adjustment * to SystemClock will be allowed even if NITZ_UPDATE_SPACING has not been * exceeded. * @hide */ - @Readable - public static final String NITZ_UPDATE_DIFF = "nitz_update_diff"; + public static final String NITZ_UPDATE_DIFF = "nitz_update_diff"; - /** + /** * The length of time in milli-seconds that automatic small adjustments to * SystemClock are ignored if NITZ_UPDATE_DIFF is not exceeded. * @hide */ - @Readable - public static final String NITZ_UPDATE_SPACING = "nitz_update_spacing"; + public static final String NITZ_UPDATE_SPACING = "nitz_update_spacing"; - /** Preferred NTP server. {@hide} */ - @Readable - public static final String NTP_SERVER = "ntp_server"; - /** Timeout in milliseconds to wait for NTP server. {@hide} */ - @Readable - public static final String NTP_TIMEOUT = "ntp_timeout"; + /** Preferred NTP server. {@hide} */ + public static final String NTP_SERVER = "ntp_server"; + /** Timeout in milliseconds to wait for NTP server. {@hide} */ + public static final String NTP_TIMEOUT = "ntp_timeout"; - /** {@hide} */ - @Readable - public static final String STORAGE_BENCHMARK_INTERVAL = "storage_benchmark_interval"; + /** {@hide} */ + public static final String STORAGE_BENCHMARK_INTERVAL = "storage_benchmark_interval"; /** * Whether or not Settings should enable psd API. * {@hide} */ - @Readable public static final String SETTINGS_USE_PSD_API = "settings_use_psd_api"; /** * Whether or not Settings should enable external provider API. * {@hide} */ - @Readable public static final String SETTINGS_USE_EXTERNAL_PROVIDER_API = "settings_use_external_provider_api"; - /** + /** * Sample validity in seconds to configure for the system DNS resolver. * {@hide} */ - @Readable - public static final String DNS_RESOLVER_SAMPLE_VALIDITY_SECONDS = + public static final String DNS_RESOLVER_SAMPLE_VALIDITY_SECONDS = "dns_resolver_sample_validity_seconds"; - /** + /** * Success threshold in percent for use with the system DNS resolver. * {@hide} */ - @Readable - public static final String DNS_RESOLVER_SUCCESS_THRESHOLD_PERCENT = + public static final String DNS_RESOLVER_SUCCESS_THRESHOLD_PERCENT = "dns_resolver_success_threshold_percent"; - /** + /** * Minimum number of samples needed for statistics to be considered meaningful in the * system DNS resolver. * {@hide} */ - @Readable - public static final String DNS_RESOLVER_MIN_SAMPLES = "dns_resolver_min_samples"; + public static final String DNS_RESOLVER_MIN_SAMPLES = "dns_resolver_min_samples"; - /** + /** * Maximum number taken into account for statistics purposes in the system DNS resolver. * {@hide} */ - @Readable - public static final String DNS_RESOLVER_MAX_SAMPLES = "dns_resolver_max_samples"; + public static final String DNS_RESOLVER_MAX_SAMPLES = "dns_resolver_max_samples"; - /** + /** * Whether to disable the automatic scheduling of system updates. * 1 = system updates won't be automatically scheduled (will always * present notification instead). * 0 = system updates will be automatically scheduled. (default) * @hide */ - @SystemApi - @Readable - public static final String OTA_DISABLE_AUTOMATIC_UPDATE = "ota_disable_automatic_update"; + @SystemApi + public static final String OTA_DISABLE_AUTOMATIC_UPDATE = "ota_disable_automatic_update"; - /** Timeout for package verification. + /** Timeout for package verification. * @hide */ - @Readable - public static final String PACKAGE_VERIFIER_TIMEOUT = "verifier_timeout"; + public static final String PACKAGE_VERIFIER_TIMEOUT = "verifier_timeout"; /** Timeout for app integrity verification. * @hide */ - @Readable public static final String APP_INTEGRITY_VERIFICATION_TIMEOUT = "app_integrity_verification_timeout"; - /** Default response code for package verification. + /** Default response code for package verification. * @hide */ - @Readable - public static final String PACKAGE_VERIFIER_DEFAULT_RESPONSE = "verifier_default_response"; + public static final String PACKAGE_VERIFIER_DEFAULT_RESPONSE = "verifier_default_response"; - /** + /** * Show package verification setting in the Settings app. * 1 = show (default) * 0 = hide * @hide */ - @Readable - public static final String PACKAGE_VERIFIER_SETTING_VISIBLE = "verifier_setting_visible"; + public static final String PACKAGE_VERIFIER_SETTING_VISIBLE = "verifier_setting_visible"; - /** + /** * Run package verification on apps installed through ADB/ADT/USB * 1 = perform package verification on ADB installs (default) * 0 = bypass package verification on ADB installs * @hide */ - @Readable - public static final String PACKAGE_VERIFIER_INCLUDE_ADB = "verifier_verify_adb_installs"; + public static final String PACKAGE_VERIFIER_INCLUDE_ADB = "verifier_verify_adb_installs"; /** * Run integrity checks for integrity rule providers. @@ -11027,131 +10373,117 @@ public final class Settings { * 1 = perform integrity verification on installs from rule providers * @hide */ - @Readable public static final String INTEGRITY_CHECK_INCLUDES_RULE_PROVIDER = "verify_integrity_for_rule_provider"; - /** + /** * Time since last fstrim (milliseconds) after which we force one to happen * during device startup. If unset, the default is 3 days. * @hide */ - @Readable - public static final String FSTRIM_MANDATORY_INTERVAL = "fstrim_mandatory_interval"; + public static final String FSTRIM_MANDATORY_INTERVAL = "fstrim_mandatory_interval"; - /** + /** * The interval in milliseconds at which to check packet counts on the * mobile data interface when screen is on, to detect possible data * connection problems. * @hide */ - @Readable - public static final String PDP_WATCHDOG_POLL_INTERVAL_MS = + public static final String PDP_WATCHDOG_POLL_INTERVAL_MS = "pdp_watchdog_poll_interval_ms"; - /** + /** * The interval in milliseconds at which to check packet counts on the * mobile data interface when screen is off, to detect possible data * connection problems. * @hide */ - @Readable - public static final String PDP_WATCHDOG_LONG_POLL_INTERVAL_MS = + public static final String PDP_WATCHDOG_LONG_POLL_INTERVAL_MS = "pdp_watchdog_long_poll_interval_ms"; - /** + /** * The interval in milliseconds at which to check packet counts on the * mobile data interface after {@link #PDP_WATCHDOG_TRIGGER_PACKET_COUNT} * outgoing packets has been reached without incoming packets. * @hide */ - @Readable - public static final String PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS = + public static final String PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS = "pdp_watchdog_error_poll_interval_ms"; - /** + /** * The number of outgoing packets sent without seeing an incoming packet * that triggers a countdown (of {@link #PDP_WATCHDOG_ERROR_POLL_COUNT} * device is logged to the event log * @hide */ - @Readable - public static final String PDP_WATCHDOG_TRIGGER_PACKET_COUNT = + public static final String PDP_WATCHDOG_TRIGGER_PACKET_COUNT = "pdp_watchdog_trigger_packet_count"; - /** + /** * The number of polls to perform (at {@link #PDP_WATCHDOG_ERROR_POLL_INTERVAL_MS}) * after hitting {@link #PDP_WATCHDOG_TRIGGER_PACKET_COUNT} before * attempting data connection recovery. * @hide */ - @Readable - public static final String PDP_WATCHDOG_ERROR_POLL_COUNT = + public static final String PDP_WATCHDOG_ERROR_POLL_COUNT = "pdp_watchdog_error_poll_count"; - /** + /** * The number of failed PDP reset attempts before moving to something more * drastic: re-registering to the network. * @hide */ - @Readable - public static final String PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT = + public static final String PDP_WATCHDOG_MAX_PDP_RESET_FAIL_COUNT = "pdp_watchdog_max_pdp_reset_fail_count"; - /** + /** * URL to open browser on to allow user to manage a prepay account * @hide */ - @Readable - public static final String SETUP_PREPAID_DATA_SERVICE_URL = + public static final String SETUP_PREPAID_DATA_SERVICE_URL = "setup_prepaid_data_service_url"; - /** + /** * URL to attempt a GET on to see if this is a prepay device * @hide */ - @Readable - public static final String SETUP_PREPAID_DETECTION_TARGET_URL = + public static final String SETUP_PREPAID_DETECTION_TARGET_URL = "setup_prepaid_detection_target_url"; - /** + /** * Host to check for a redirect to after an attempt to GET * SETUP_PREPAID_DETECTION_TARGET_URL. (If we redirected there, * this is a prepaid device with zero balance.) * @hide */ - @Readable - public static final String SETUP_PREPAID_DETECTION_REDIR_HOST = + public static final String SETUP_PREPAID_DETECTION_REDIR_HOST = "setup_prepaid_detection_redir_host"; - /** + /** * The interval in milliseconds at which to check the number of SMS sent out without asking * for use permit, to limit the un-authorized SMS usage. * * @hide */ - @Readable - public static final String SMS_OUTGOING_CHECK_INTERVAL_MS = + public static final String SMS_OUTGOING_CHECK_INTERVAL_MS = "sms_outgoing_check_interval_ms"; - /** + /** * The number of outgoing SMS sent without asking for user permit (of {@link * #SMS_OUTGOING_CHECK_INTERVAL_MS} * * @hide */ - @Readable - public static final String SMS_OUTGOING_CHECK_MAX_COUNT = + public static final String SMS_OUTGOING_CHECK_MAX_COUNT = "sms_outgoing_check_max_count"; - /** + /** * Used to disable SMS short code confirmation - defaults to true. * True indcates we will do the check, etc. Set to false to disable. * @see com.android.internal.telephony.SmsUsageMonitor * @hide */ - @Readable - public static final String SMS_SHORT_CODE_CONFIRMATION = "sms_short_code_confirmation"; + public static final String SMS_SHORT_CODE_CONFIRMATION = "sms_short_code_confirmation"; /** * Used to select which country we use to determine premium sms codes. @@ -11160,7 +10492,6 @@ public final class Settings { * or com.android.internal.telephony.SMSDispatcher.PREMIUM_RULE_USE_BOTH. * @hide */ - @Readable public static final String SMS_SHORT_CODE_RULE = "sms_short_code_rule"; /** @@ -11168,7 +10499,6 @@ public final class Settings { * build config value. * @hide */ - @Readable public static final String TCP_DEFAULT_INIT_RWND = "tcp_default_init_rwnd"; /** @@ -11176,7 +10506,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String TETHER_SUPPORTED = "tether_supported"; /** @@ -11184,7 +10513,6 @@ public final class Settings { * which defaults to false. * @hide */ - @Readable public static final String TETHER_DUN_REQUIRED = "tether_dun_required"; /** @@ -11196,7 +10524,6 @@ public final class Settings { * note that empty fields can be omitted: "name,apn,,,,,,,,,310,260,,DUN" * @hide */ - @Readable public static final String TETHER_DUN_APN = "tether_dun_apn"; /** @@ -11207,7 +10534,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String TETHER_OFFLOAD_DISABLED = "tether_offload_disabled"; /** @@ -11217,7 +10543,6 @@ public final class Settings { * is interpreted as |false|. * @hide */ - @Readable public static final String TETHER_ENABLE_LEGACY_DHCP_SERVER = "tether_enable_legacy_dhcp_server"; @@ -11232,7 +10557,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String CARRIER_APP_WHITELIST = "carrier_app_whitelist"; /** @@ -11243,71 +10567,62 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String CARRIER_APP_NAMES = "carrier_app_names"; - /** + /** * USB Mass Storage Enabled */ - @Readable - public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled"; + public static final String USB_MASS_STORAGE_ENABLED = "usb_mass_storage_enabled"; - /** + /** * If this setting is set (to anything), then all references * to Gmail on the device must change to Google Mail. */ - @Readable - public static final String USE_GOOGLE_MAIL = "use_google_mail"; + public static final String USE_GOOGLE_MAIL = "use_google_mail"; /** * Whether or not switching/creating users is enabled by user. * @hide */ - @Readable public static final String USER_SWITCHER_ENABLED = "user_switcher_enabled"; /** * Webview Data reduction proxy key. * @hide */ - @Readable public static final String WEBVIEW_DATA_REDUCTION_PROXY_KEY = "webview_data_reduction_proxy_key"; - /** + /** * Name of the package used as WebView provider (if unset the provider is instead determined * by the system). * @hide */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable - public static final String WEBVIEW_PROVIDER = "webview_provider"; + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) + public static final String WEBVIEW_PROVIDER = "webview_provider"; - /** + /** * Developer setting to enable WebView multiprocess rendering. * @hide */ - @SystemApi - @Readable - public static final String WEBVIEW_MULTIPROCESS = "webview_multiprocess"; + @SystemApi + public static final String WEBVIEW_MULTIPROCESS = "webview_multiprocess"; - /** + /** * The maximum number of notifications shown in 24 hours when switching networks. * @hide */ - @Readable - public static final String NETWORK_SWITCH_NOTIFICATION_DAILY_LIMIT = + public static final String NETWORK_SWITCH_NOTIFICATION_DAILY_LIMIT = "network_switch_notification_daily_limit"; - /** + /** * The minimum time in milliseconds between notifications when switching networks. * @hide */ - @Readable - public static final String NETWORK_SWITCH_NOTIFICATION_RATE_LIMIT_MILLIS = + public static final String NETWORK_SWITCH_NOTIFICATION_RATE_LIMIT_MILLIS = "network_switch_notification_rate_limit_millis"; - /** + /** * Whether to automatically switch away from wifi networks that lose Internet access. * Only meaningful if config_networkAvoidBadWifi is set to 0, otherwise the system always * avoids such networks. Valid values are: @@ -11318,18 +10633,16 @@ public final class Settings { * * @hide */ - @Readable - public static final String NETWORK_AVOID_BAD_WIFI = "network_avoid_bad_wifi"; + public static final String NETWORK_AVOID_BAD_WIFI = "network_avoid_bad_wifi"; - /** + /** * User setting for ConnectivityManager.getMeteredMultipathPreference(). This value may be * overridden by the system based on device or application state. If null, the value * specified by config_networkMeteredMultipathPreference is used. * * @hide */ - @Readable - public static final String NETWORK_METERED_MULTIPATH_PREFERENCE = + public static final String NETWORK_METERED_MULTIPATH_PREFERENCE = "network_metered_multipath_preference"; /** @@ -11338,7 +10651,6 @@ public final class Settings { * from data plan or data limit/warning set by the user. * @hide */ - @Readable public static final String NETWORK_DEFAULT_DAILY_MULTIPATH_QUOTA_BYTES = "network_default_daily_multipath_quota_bytes"; @@ -11346,11 +10658,10 @@ public final class Settings { * Network watchlist last report time. * @hide */ - @Readable public static final String NETWORK_WATCHLIST_LAST_REPORT_TIME = "network_watchlist_last_report_time"; - /** + /** * The thresholds of the wifi throughput badging (SD, HD etc.) as a comma-delimited list of * colon-delimited key-value pairs. The key is the badging enum value defined in * android.net.ScoredNetwork and the value is the minimum sustained network throughput in @@ -11358,28 +10669,25 @@ public final class Settings { * * @hide */ - @SystemApi - @Readable - public static final String WIFI_BADGING_THRESHOLDS = "wifi_badging_thresholds"; + @SystemApi + public static final String WIFI_BADGING_THRESHOLDS = "wifi_badging_thresholds"; - /** + /** * Whether Wifi display is enabled/disabled * 0=disabled. 1=enabled. * @hide */ - @Readable - public static final String WIFI_DISPLAY_ON = "wifi_display_on"; + public static final String WIFI_DISPLAY_ON = "wifi_display_on"; - /** + /** * Whether Wifi display certification mode is enabled/disabled * 0=disabled. 1=enabled. * @hide */ - @Readable - public static final String WIFI_DISPLAY_CERTIFICATION_ON = + public static final String WIFI_DISPLAY_CERTIFICATION_ON = "wifi_display_certification_on"; - /** + /** * WPS Configuration method used by Wifi display, this setting only * takes effect when WIFI_DISPLAY_CERTIFICATION_ON is 1 (enabled). * @@ -11391,11 +10699,10 @@ public final class Settings { * WpsInfo.DISPLAY: use Display * @hide */ - @Readable - public static final String WIFI_DISPLAY_WPS_CONFIG = + public static final String WIFI_DISPLAY_WPS_CONFIG = "wifi_display_wps_config"; - /** + /** * Whether to notify the user of open networks. *

* If not connected and the scan results have an open network, we will @@ -11407,78 +10714,68 @@ public final class Settings { * @deprecated This feature is no longer controlled by this setting in * {@link android.os.Build.VERSION_CODES#O}. */ - @Deprecated - @Readable - public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = + @Deprecated + public static final String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wifi_networks_available_notification_on"; - /** + /** * {@hide} */ - @Readable - public static final String WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON = + public static final String WIMAX_NETWORKS_AVAILABLE_NOTIFICATION_ON = "wimax_networks_available_notification_on"; - /** + /** * Delay (in seconds) before repeating the Wi-Fi networks available notification. * Connecting to a network will reset the timer. * @deprecated This is no longer used or set by the platform. */ - @Deprecated - @Readable - public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = + @Deprecated + public static final String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY = "wifi_networks_available_repeat_delay"; - /** + /** * 802.11 country code in ISO 3166 format * @hide */ - @Readable - public static final String WIFI_COUNTRY_CODE = "wifi_country_code"; + public static final String WIFI_COUNTRY_CODE = "wifi_country_code"; - /** + /** * The interval in milliseconds to issue wake up scans when wifi needs * to connect. This is necessary to connect to an access point when * device is on the move and the screen is off. * @hide */ - @Readable - public static final String WIFI_FRAMEWORK_SCAN_INTERVAL_MS = + public static final String WIFI_FRAMEWORK_SCAN_INTERVAL_MS = "wifi_framework_scan_interval_ms"; - /** + /** * The interval in milliseconds after which Wi-Fi is considered idle. * When idle, it is possible for the device to be switched from Wi-Fi to * the mobile data network. * @hide */ - @Readable - public static final String WIFI_IDLE_MS = "wifi_idle_ms"; + public static final String WIFI_IDLE_MS = "wifi_idle_ms"; - /** + /** * When the number of open networks exceeds this number, the * least-recently-used excess networks will be removed. * @deprecated This is no longer used or set by the platform. */ - @Deprecated - @Readable - public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept"; + @Deprecated + public static final String WIFI_NUM_OPEN_NETWORKS_KEPT = "wifi_num_open_networks_kept"; - /** + /** * Whether the Wi-Fi should be on. Only the Wi-Fi service should touch this. */ - @Readable - public static final String WIFI_ON = "wifi_on"; + public static final String WIFI_ON = "wifi_on"; - /** + /** * Setting to allow scans to be enabled even wifi is turned off for connectivity. * @hide * @deprecated To be removed. Use {@link WifiManager#setScanAlwaysAvailable(boolean)} for * setting the value and {@link WifiManager#isScanAlwaysAvailable()} for query. */ - @Deprecated - @Readable - public static final String WIFI_SCAN_ALWAYS_AVAILABLE = + public static final String WIFI_SCAN_ALWAYS_AVAILABLE = "wifi_scan_always_enabled"; /** @@ -11488,8 +10785,6 @@ public final class Settings { * @hide * @deprecated To be removed. */ - @Deprecated - @Readable public static final String WIFI_P2P_PENDING_FACTORY_RESET = "wifi_p2p_pending_factory_reset"; @@ -11502,8 +10797,6 @@ public final class Settings { * setAutoShutdownEnabled(boolean)} for setting the value and {@link SoftApConfiguration# * isAutoShutdownEnabled()} for query. */ - @Deprecated - @Readable public static final String SOFT_AP_TIMEOUT_ENABLED = "soft_ap_timeout_enabled"; /** @@ -11516,7 +10809,6 @@ public final class Settings { */ @Deprecated @SystemApi - @Readable public static final String WIFI_WAKEUP_ENABLED = "wifi_wakeup_enabled"; /** @@ -11526,7 +10818,6 @@ public final class Settings { * Type: int (0 for false, 1 for true) * @hide */ - @Readable public static final String WIFI_MIGRATION_COMPLETED = "wifi_migration_completed"; /** @@ -11535,7 +10826,6 @@ public final class Settings { * Type: int (0 for false, 1 for true) * @hide */ - @Readable public static final String NETWORK_SCORING_UI_ENABLED = "network_scoring_ui_enabled"; /** @@ -11545,7 +10835,6 @@ public final class Settings { * Type: long * @hide */ - @Readable public static final String SPEED_LABEL_CACHE_EVICTION_AGE_MILLIS = "speed_label_cache_eviction_age_millis"; @@ -11564,8 +10853,6 @@ public final class Settings { * @hide * @deprecated To be removed. */ - @Deprecated - @Readable public static final String NETWORK_RECOMMENDATIONS_ENABLED = "network_recommendations_enabled"; @@ -11579,7 +10866,6 @@ public final class Settings { * Type: string - package name * @hide */ - @Readable public static final String NETWORK_RECOMMENDATIONS_PACKAGE = "network_recommendations_package"; @@ -11591,7 +10877,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String USE_OPEN_WIFI_PACKAGE = "use_open_wifi_package"; /** @@ -11601,7 +10886,6 @@ public final class Settings { * Type: long * @hide */ - @Readable public static final String RECOMMENDED_NETWORK_EVALUATOR_CACHE_EXPIRY_MS = "recommended_network_evaluator_cache_expiry_ms"; @@ -11613,8 +10897,6 @@ public final class Settings { * @deprecated Use {@link WifiManager#setScanThrottleEnabled(boolean)} for setting the value * and {@link WifiManager#isScanThrottleEnabled()} for query. */ - @Deprecated - @Readable public static final String WIFI_SCAN_THROTTLE_ENABLED = "wifi_scan_throttle_enabled"; /** @@ -11622,28 +10904,24 @@ public final class Settings { * connectivity. * @hide */ - @Readable public static final String BLE_SCAN_ALWAYS_AVAILABLE = "ble_scan_always_enabled"; /** * The length in milliseconds of a BLE scan window in a low-power scan mode. * @hide */ - @Readable public static final String BLE_SCAN_LOW_POWER_WINDOW_MS = "ble_scan_low_power_window_ms"; /** * The length in milliseconds of a BLE scan window in a balanced scan mode. * @hide */ - @Readable public static final String BLE_SCAN_BALANCED_WINDOW_MS = "ble_scan_balanced_window_ms"; /** * The length in milliseconds of a BLE scan window in a low-latency scan mode. * @hide */ - @Readable public static final String BLE_SCAN_LOW_LATENCY_WINDOW_MS = "ble_scan_low_latency_window_ms"; @@ -11651,7 +10929,6 @@ public final class Settings { * The length in milliseconds of a BLE scan interval in a low-power scan mode. * @hide */ - @Readable public static final String BLE_SCAN_LOW_POWER_INTERVAL_MS = "ble_scan_low_power_interval_ms"; @@ -11659,7 +10936,6 @@ public final class Settings { * The length in milliseconds of a BLE scan interval in a balanced scan mode. * @hide */ - @Readable public static final String BLE_SCAN_BALANCED_INTERVAL_MS = "ble_scan_balanced_interval_ms"; @@ -11667,7 +10943,6 @@ public final class Settings { * The length in milliseconds of a BLE scan interval in a low-latency scan mode. * @hide */ - @Readable public static final String BLE_SCAN_LOW_LATENCY_INTERVAL_MS = "ble_scan_low_latency_interval_ms"; @@ -11675,30 +10950,26 @@ public final class Settings { * The mode that BLE scanning clients will be moved to when in the background. * @hide */ - @Readable public static final String BLE_SCAN_BACKGROUND_MODE = "ble_scan_background_mode"; - /** + /** * The interval in milliseconds to scan as used by the wifi supplicant * @hide */ - @Readable - public static final String WIFI_SUPPLICANT_SCAN_INTERVAL_MS = + public static final String WIFI_SUPPLICANT_SCAN_INTERVAL_MS = "wifi_supplicant_scan_interval_ms"; /** * whether frameworks handles wifi auto-join * @hide */ - @Readable - public static final String WIFI_ENHANCED_AUTO_JOIN = + public static final String WIFI_ENHANCED_AUTO_JOIN = "wifi_enhanced_auto_join"; /** * whether settings show RSSI * @hide */ - @Readable public static final String WIFI_NETWORK_SHOW_RSSI = "wifi_network_show_rssi"; @@ -11706,36 +10977,31 @@ public final class Settings { * The interval in milliseconds to scan at supplicant when p2p is connected * @hide */ - @Readable - public static final String WIFI_SCAN_INTERVAL_WHEN_P2P_CONNECTED_MS = + public static final String WIFI_SCAN_INTERVAL_WHEN_P2P_CONNECTED_MS = "wifi_scan_interval_p2p_connected_ms"; - /** + /** * Whether the Wi-Fi watchdog is enabled. */ - @Readable - public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on"; + public static final String WIFI_WATCHDOG_ON = "wifi_watchdog_on"; - /** + /** * Setting to turn off poor network avoidance on Wi-Fi. Feature is enabled by default and * the setting needs to be set to 0 to disable it. * @hide */ - @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable - public static final String WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED = + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) + public static final String WIFI_WATCHDOG_POOR_NETWORK_TEST_ENABLED = "wifi_watchdog_poor_network_test_enabled"; - /** + /** * Setting to enable verbose logging in Wi-Fi; disabled by default, and setting to 1 * will enable it. In the future, additional values may be supported. * @hide * @deprecated Use {@link WifiManager#setVerboseLoggingEnabled(boolean)} for setting the * value and {@link WifiManager#isVerboseLoggingEnabled()} for query. */ - @Deprecated - @Readable - public static final String WIFI_VERBOSE_LOGGING_ENABLED = + public static final String WIFI_VERBOSE_LOGGING_ENABLED = "wifi_verbose_logging_enabled"; /** @@ -11745,7 +11011,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED = "wifi_connected_mac_randomization_enabled"; @@ -11762,28 +11027,24 @@ public final class Settings { * @hide * @deprecated This is no longer used or set by the platform. */ - @Deprecated - @Readable public static final String WIFI_SCORE_PARAMS = "wifi_score_params"; - /** + /** * The maximum number of times we will retry a connection to an access * point for which we have failed in acquiring an IP address from DHCP. * A value of N means that we will make N+1 connection attempts in all. */ - @Readable - public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count"; + public static final String WIFI_MAX_DHCP_RETRY_COUNT = "wifi_max_dhcp_retry_count"; - /** + /** * Maximum amount of time in milliseconds to hold a wakelock while waiting for mobile * data connectivity to be established after a disconnect from Wi-Fi. */ - @Readable - public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = + public static final String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS = "wifi_mobile_data_transition_wakelock_timeout_ms"; - /** + /** * This setting controls whether WiFi configurations created by a Device Owner app * should be locked down (that is, be editable or removable only by the Device Owner App, * not even by Settings app). @@ -11791,11 +11052,10 @@ public final class Settings { * are locked down. Value of zero means they are not. Default value in the absence of * actual value to this setting is 0. */ - @Readable - public static final String WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN = + public static final String WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN = "wifi_device_owner_configs_lockdown"; - /** + /** * The operational wifi frequency band * Set to one of {@link WifiManager#WIFI_FREQUENCY_BAND_AUTO}, * {@link WifiManager#WIFI_FREQUENCY_BAND_5GHZ} or @@ -11803,21 +11063,18 @@ public final class Settings { * * @hide */ - @Readable - public static final String WIFI_FREQUENCY_BAND = "wifi_frequency_band"; + public static final String WIFI_FREQUENCY_BAND = "wifi_frequency_band"; - /** + /** * The Wi-Fi peer-to-peer device name * @hide * @deprecated Use {@link WifiP2pManager#setDeviceName(WifiP2pManager.Channel, String, * WifiP2pManager.ActionListener)} for setting the value and * {@link android.net.wifi.p2p.WifiP2pDevice#deviceName} for query. */ - @Deprecated - @Readable - public static final String WIFI_P2P_DEVICE_NAME = "wifi_p2p_device_name"; + public static final String WIFI_P2P_DEVICE_NAME = "wifi_p2p_device_name"; - /** + /** * Timeout for ephemeral networks when all known BSSIDs go out of range. We will disconnect * from an ephemeral network if there is no BSSID for that network with a non-null score that * has been seen in this time period. @@ -11826,60 +11083,53 @@ public final class Settings { * for a non-null score from the currently connected or target BSSID. * @hide */ - @Readable - public static final String WIFI_EPHEMERAL_OUT_OF_RANGE_TIMEOUT_MS = + public static final String WIFI_EPHEMERAL_OUT_OF_RANGE_TIMEOUT_MS = "wifi_ephemeral_out_of_range_timeout_ms"; - /** + /** * The number of milliseconds to delay when checking for data stalls during * non-aggressive detection. (screen is turned off.) * @hide */ - @Readable - public static final String DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS = + public static final String DATA_STALL_ALARM_NON_AGGRESSIVE_DELAY_IN_MS = "data_stall_alarm_non_aggressive_delay_in_ms"; - /** + /** * The number of milliseconds to delay when checking for data stalls during * aggressive detection. (screen on or suspected data stall) * @hide */ - @Readable - public static final String DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS = + public static final String DATA_STALL_ALARM_AGGRESSIVE_DELAY_IN_MS = "data_stall_alarm_aggressive_delay_in_ms"; - /** + /** * The number of milliseconds to allow the provisioning apn to remain active * @hide */ - @Readable - public static final String PROVISIONING_APN_ALARM_DELAY_IN_MS = + public static final String PROVISIONING_APN_ALARM_DELAY_IN_MS = "provisioning_apn_alarm_delay_in_ms"; - /** + /** * The interval in milliseconds at which to check gprs registration * after the first registration mismatch of gprs and voice service, * to detect possible data network registration problems. * * @hide */ - @Readable - public static final String GPRS_REGISTER_CHECK_PERIOD_MS = + public static final String GPRS_REGISTER_CHECK_PERIOD_MS = "gprs_register_check_period_ms"; - /** + /** * Nonzero causes Log.wtf() to crash. * @hide */ - @Readable - public static final String WTF_IS_FATAL = "wtf_is_fatal"; + public static final String WTF_IS_FATAL = "wtf_is_fatal"; - /** + /** * Ringer mode. This is used internally, changing this value will not * change the ringer mode. See AudioManager. */ - @Readable - public static final String MODE_RINGER = "mode_ringer"; + public static final String MODE_RINGER = "mode_ringer"; /** * Overlay display devices setting. @@ -11920,7 +11170,6 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi - @Readable public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices"; /** @@ -11929,12 +11178,10 @@ public final class Settings { * * @hide */ - @Readable public static final String BATTERY_DISCHARGE_DURATION_THRESHOLD = "battery_discharge_duration_threshold"; /** @hide */ - @Readable public static final String BATTERY_DISCHARGE_THRESHOLD = "battery_discharge_threshold"; /** @@ -11946,7 +11193,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SEND_ACTION_APP_ERROR = "send_action_app_error"; /** @@ -11954,7 +11200,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DROPBOX_AGE_SECONDS = "dropbox_age_seconds"; /** @@ -11963,7 +11208,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DROPBOX_MAX_FILES = "dropbox_max_files"; /** @@ -11972,7 +11216,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DROPBOX_QUOTA_KB = "dropbox_quota_kb"; /** @@ -11981,7 +11224,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DROPBOX_QUOTA_PERCENT = "dropbox_quota_percent"; /** @@ -11990,7 +11232,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DROPBOX_RESERVE_PERCENT = "dropbox_reserve_percent"; /** @@ -11998,7 +11239,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DROPBOX_TAG_PREFIX = "dropbox:"; /** @@ -12009,7 +11249,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ERROR_LOGCAT_PREFIX = "logcat_for_"; /** @@ -12023,7 +11262,6 @@ public final class Settings { * * @hide */ - @Readable public static final String MAX_ERROR_BYTES_PREFIX = "max_error_bytes_for_"; /** @@ -12032,7 +11270,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SYS_FREE_STORAGE_LOG_INTERVAL = "sys_free_storage_log_interval"; /** @@ -12042,7 +11279,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DISK_FREE_CHANGE_REPORTING_THRESHOLD = "disk_free_change_reporting_threshold"; @@ -12055,7 +11291,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SYS_STORAGE_THRESHOLD_PERCENTAGE = "sys_storage_threshold_percentage"; @@ -12067,7 +11302,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SYS_STORAGE_THRESHOLD_MAX_BYTES = "sys_storage_threshold_max_bytes"; @@ -12078,7 +11312,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SYS_STORAGE_FULL_THRESHOLD_BYTES = "sys_storage_full_threshold_bytes"; @@ -12088,7 +11321,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SYS_STORAGE_CACHE_PERCENTAGE = "sys_storage_cache_percentage"; @@ -12098,7 +11330,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SYS_STORAGE_CACHE_MAX_BYTES = "sys_storage_cache_max_bytes"; @@ -12108,7 +11339,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SYNC_MAX_RETRY_DELAY_IN_SECONDS = "sync_max_retry_delay_in_seconds"; @@ -12118,7 +11348,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CONNECTIVITY_CHANGE_DELAY = "connectivity_change_delay"; @@ -12128,7 +11357,7 @@ public final class Settings { * * @hide */ - @Readable + public static final String CONNECTIVITY_SAMPLING_INTERVAL_IN_SECONDS = "connectivity_sampling_interval_in_seconds"; @@ -12138,7 +11367,6 @@ public final class Settings { * * @hide */ - @Readable public static final String PAC_CHANGE_DELAY = "pac_change_delay"; /** @@ -12171,7 +11399,6 @@ public final class Settings { * The default for this setting is CAPTIVE_PORTAL_MODE_PROMPT. * @hide */ - @Readable public static final String CAPTIVE_PORTAL_MODE = "captive_portal_mode"; /** @@ -12182,7 +11409,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String CAPTIVE_PORTAL_DETECTION_ENABLED = "captive_portal_detection_enabled"; @@ -12193,7 +11419,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAPTIVE_PORTAL_SERVER = "captive_portal_server"; /** @@ -12202,7 +11427,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAPTIVE_PORTAL_HTTPS_URL = "captive_portal_https_url"; /** @@ -12211,7 +11435,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAPTIVE_PORTAL_HTTP_URL = "captive_portal_http_url"; /** @@ -12220,7 +11443,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAPTIVE_PORTAL_FALLBACK_URL = "captive_portal_fallback_url"; /** @@ -12229,7 +11451,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAPTIVE_PORTAL_OTHER_FALLBACK_URLS = "captive_portal_other_fallback_urls"; @@ -12239,7 +11460,6 @@ public final class Settings { * by "@@,@@". * @hide */ - @Readable public static final String CAPTIVE_PORTAL_FALLBACK_PROBE_SPECS = "captive_portal_fallback_probe_specs"; @@ -12250,7 +11470,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAPTIVE_PORTAL_USE_HTTPS = "captive_portal_use_https"; /** @@ -12259,7 +11478,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CAPTIVE_PORTAL_USER_AGENT = "captive_portal_user_agent"; /** @@ -12267,7 +11485,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DATA_STALL_RECOVERY_ON_BAD_NETWORK = "data_stall_recovery_on_bad_network"; @@ -12276,7 +11493,6 @@ public final class Settings { * * @hide */ - @Readable public static final String MIN_DURATION_BETWEEN_RECOVERY_STEPS_IN_MS = "min_duration_between_recovery_steps"; /** @@ -12284,7 +11500,6 @@ public final class Settings { * * @hide */ - @Readable public static final String NSD_ON = "nsd_on"; /** @@ -12292,7 +11507,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SET_INSTALL_LOCATION = "set_install_location"; /** @@ -12302,7 +11516,6 @@ public final class Settings { * 2 = sdcard * @hide */ - @Readable public static final String DEFAULT_INSTALL_LOCATION = "default_install_location"; /** @@ -12311,7 +11524,6 @@ public final class Settings { * * @hide */ - @Readable public static final String INET_CONDITION_DEBOUNCE_UP_DELAY = "inet_condition_debounce_up_delay"; @@ -12321,12 +11533,10 @@ public final class Settings { * * @hide */ - @Readable public static final String INET_CONDITION_DEBOUNCE_DOWN_DELAY = "inet_condition_debounce_down_delay"; /** {@hide} */ - @Readable public static final String READ_EXTERNAL_STORAGE_ENFORCED_DEFAULT = "read_external_storage_enforced_default"; @@ -12334,7 +11544,6 @@ public final class Settings { * Host name and port for global http proxy. Uses ':' seperator for * between host and port. */ - @Readable public static final String HTTP_PROXY = "http_proxy"; /** @@ -12342,7 +11551,6 @@ public final class Settings { * * @hide */ - @Readable public static final String GLOBAL_HTTP_PROXY_HOST = "global_http_proxy_host"; /** @@ -12350,7 +11558,6 @@ public final class Settings { * * @hide */ - @Readable public static final String GLOBAL_HTTP_PROXY_PORT = "global_http_proxy_port"; /** @@ -12362,7 +11569,6 @@ public final class Settings { * * @hide */ - @Readable public static final String GLOBAL_HTTP_PROXY_EXCLUSION_LIST = "global_http_proxy_exclusion_list"; @@ -12370,7 +11576,6 @@ public final class Settings { * The location PAC File for the proxy. * @hide */ - @Readable public static final String GLOBAL_HTTP_PROXY_PAC = "global_proxy_pac_url"; @@ -12380,7 +11585,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SET_GLOBAL_HTTP_PROXY = "set_global_http_proxy"; /** @@ -12388,7 +11592,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DEFAULT_DNS_SERVER = "default_dns_server"; /** @@ -12401,13 +11604,11 @@ public final class Settings { * * @hide */ - @Readable public static final String PRIVATE_DNS_MODE = "private_dns_mode"; /** * @hide */ - @Readable public static final String PRIVATE_DNS_SPECIFIER = "private_dns_specifier"; /** @@ -12419,60 +11620,46 @@ public final class Settings { * * {@hide} */ - @Readable public static final String PRIVATE_DNS_DEFAULT_MODE = "private_dns_default_mode"; /** {@hide} */ - @Readable public static final String BLUETOOTH_BTSNOOP_DEFAULT_MODE = "bluetooth_btsnoop_default_mode"; /** {@hide} */ - @Readable public static final String BLUETOOTH_HEADSET_PRIORITY_PREFIX = "bluetooth_headset_priority_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_A2DP_SINK_PRIORITY_PREFIX = "bluetooth_a2dp_sink_priority_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_A2DP_SRC_PRIORITY_PREFIX = "bluetooth_a2dp_src_priority_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_A2DP_SUPPORTS_OPTIONAL_CODECS_PREFIX = "bluetooth_a2dp_supports_optional_codecs_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_A2DP_OPTIONAL_CODECS_ENABLED_PREFIX = "bluetooth_a2dp_optional_codecs_enabled_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_INPUT_DEVICE_PRIORITY_PREFIX = "bluetooth_input_device_priority_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_MAP_PRIORITY_PREFIX = "bluetooth_map_priority_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_MAP_CLIENT_PRIORITY_PREFIX = "bluetooth_map_client_priority_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_PBAP_CLIENT_PRIORITY_PREFIX = "bluetooth_pbap_client_priority_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_SAP_PRIORITY_PREFIX = "bluetooth_sap_priority_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_PAN_PRIORITY_PREFIX = "bluetooth_pan_priority_"; /** {@hide} */ - @Readable public static final String BLUETOOTH_HEARING_AID_PRIORITY_PREFIX = "bluetooth_hearing_aid_priority_"; @@ -12481,7 +11668,6 @@ public final class Settings { * * {@hide} */ - @Readable public static final String ENABLE_RADIO_BUG_DETECTION = "enable_radio_bug_detection"; @@ -12490,7 +11676,6 @@ public final class Settings { * * {@hide} */ - @Readable public static final String RADIO_BUG_WAKELOCK_TIMEOUT_COUNT_THRESHOLD = "radio_bug_wakelock_timeout_count_threshold"; @@ -12500,7 +11685,6 @@ public final class Settings { * * {@hide} */ - @Readable public static final String RADIO_BUG_SYSTEM_ERROR_COUNT_THRESHOLD = "radio_bug_system_error_count_threshold"; @@ -12547,7 +11731,6 @@ public final class Settings { * @hide * @see com.android.server.am.ActivityManagerConstants */ - @Readable public static final String ACTIVITY_MANAGER_CONSTANTS = "activity_manager_constants"; /** @@ -12556,7 +11739,6 @@ public final class Settings { * Default: 1 * @hide */ - @Readable public static final String ACTIVITY_STARTS_LOGGING_ENABLED = "activity_starts_logging_enabled"; @@ -12566,7 +11748,6 @@ public final class Settings { * Default: 1 * @hide */ - @Readable public static final String FOREGROUND_SERVICE_STARTS_LOGGING_ENABLED = "foreground_service_starts_logging_enabled"; @@ -12574,7 +11755,6 @@ public final class Settings { * @hide * @see com.android.server.appbinding.AppBindingConstants */ - @Readable public static final String APP_BINDING_CONSTANTS = "app_binding_constants"; /** @@ -12597,7 +11777,6 @@ public final class Settings { * @see com.android.server.AppOpsService.Constants */ @TestApi - @Readable public static final String APP_OPS_CONSTANTS = "app_ops_constants"; /** @@ -12633,7 +11812,6 @@ public final class Settings { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @TestApi - @Readable public static final String BATTERY_SAVER_CONSTANTS = "battery_saver_constants"; /** @@ -12651,7 +11829,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BATTERY_SAVER_DEVICE_SPECIFIC_CONSTANTS = "battery_saver_device_specific_constants"; @@ -12681,7 +11858,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BATTERY_TIP_CONSTANTS = "battery_tip_constants"; /** @@ -12707,7 +11883,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ANOMALY_DETECTION_CONSTANTS = "anomaly_detection_constants"; /** @@ -12715,7 +11890,6 @@ public final class Settings { * current version is 1. * @hide */ - @Readable public static final String ANOMALY_CONFIG_VERSION = "anomaly_config_version"; /** @@ -12723,7 +11897,6 @@ public final class Settings { * {@link android.app.StatsManager}. * @hide */ - @Readable public static final String ANOMALY_CONFIG = "anomaly_config"; /** @@ -12743,7 +11916,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ALWAYS_ON_DISPLAY_CONSTANTS = "always_on_display_constants"; /** @@ -12754,7 +11926,6 @@ public final class Settings { * Any other value defaults to enabled. * @hide */ - @Readable public static final String SYS_UIDCPUPOWER = "sys_uidcpupower"; /** @@ -12766,7 +11937,6 @@ public final class Settings { * Any other value defaults to disabled. * @hide */ - @Readable public static final String SYS_TRACED = "sys_traced"; /** @@ -12775,7 +11945,6 @@ public final class Settings { * * @hide */ - @Readable public static final String FPS_DEVISOR = "fps_divisor"; /** @@ -12785,7 +11954,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DISPLAY_PANEL_LPM = "display_panel_lpm"; /** @@ -12800,7 +11968,6 @@ public final class Settings { * Need to reboot the device for this setting to take effect. * @hide */ - @Readable public static final String APP_TIME_LIMIT_USAGE_SOURCE = "app_time_limit_usage_source"; /** @@ -12808,7 +11975,6 @@ public final class Settings { * 0 = disable, 1 = enable. * @hide */ - @Readable public static final String ART_VERIFIER_VERIFY_DEBUGGABLE = "art_verifier_verify_debuggable"; @@ -12829,7 +11995,6 @@ public final class Settings { * @hide * @see com.android.server.power.PowerManagerConstants */ - @Readable public static final String POWER_MANAGER_CONSTANTS = "power_manager_constants"; /** @@ -12855,7 +12020,6 @@ public final class Settings { * @hide * @see com.android.server.pm.ShortcutService.ConfigConstants */ - @Readable public static final String SHORTCUT_MANAGER_CONSTANTS = "shortcut_manager_constants"; /** @@ -12873,7 +12037,6 @@ public final class Settings { * @hide * see also com.android.server.devicepolicy.DevicePolicyConstants */ - @Readable public static final String DEVICE_POLICY_CONSTANTS = "device_policy_constants"; /** @@ -12910,7 +12073,6 @@ public final class Settings { * @hide * see also android.view.textclassifier.TextClassificationConstants */ - @Readable public static final String TEXT_CLASSIFIER_CONSTANTS = "text_classifier_constants"; /** @@ -12935,7 +12097,6 @@ public final class Settings { * @hide * see also com.android.internal.os.BatteryStatsImpl.Constants */ - @Readable public static final String BATTERY_STATS_CONSTANTS = "battery_stats_constants"; /** @@ -12946,7 +12107,6 @@ public final class Settings { * @hide * @see com.android.server.content.SyncManagerConstants */ - @Readable public static final String SYNC_MANAGER_CONSTANTS = "sync_manager_constants"; /** @@ -12966,7 +12126,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BROADCAST_FG_CONSTANTS = "bcast_fg_constants"; /** @@ -12977,7 +12136,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BROADCAST_BG_CONSTANTS = "bcast_bg_constants"; /** @@ -12988,7 +12146,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BROADCAST_OFFLOAD_CONSTANTS = "bcast_offload_constants"; /** @@ -13001,7 +12158,6 @@ public final class Settings { * @see #ADAPTIVE_BATTERY_MANAGEMENT_ENABLED */ @SystemApi - @Readable public static final String APP_STANDBY_ENABLED = "app_standby_enabled"; /** @@ -13012,7 +12168,6 @@ public final class Settings { * @hide * @see #APP_STANDBY_ENABLED */ - @Readable public static final String ADAPTIVE_BATTERY_MANAGEMENT_ENABLED = "adaptive_battery_management_enabled"; @@ -13024,7 +12179,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ENABLE_RESTRICTED_BUCKET = "enable_restricted_bucket"; /** @@ -13042,7 +12196,6 @@ public final class Settings { * * @hide */ - @Readable public static final String APP_AUTO_RESTRICTION_ENABLED = "app_auto_restriction_enabled"; @@ -13052,7 +12205,6 @@ public final class Settings { * Default: 1 * @hide */ - @Readable public static final String FORCED_APP_STANDBY_ENABLED = "forced_app_standby_enabled"; /** @@ -13061,7 +12213,6 @@ public final class Settings { * Default: 0 * @hide */ - @Readable public static final String FORCED_APP_STANDBY_FOR_SMALL_BATTERY_ENABLED = "forced_app_standby_for_small_battery_enabled"; @@ -13071,7 +12222,6 @@ public final class Settings { * Default: 0 * @hide */ - @Readable public static final String USER_ABSENT_RADIOS_OFF_FOR_SMALL_BATTERY_ENABLED = "user_absent_radios_off_for_small_battery_enabled"; @@ -13081,7 +12231,6 @@ public final class Settings { * Default: 0 * @hide */ - @Readable public static final String USER_ABSENT_TOUCH_OFF_FOR_SMALL_BATTERY_ENABLED = "user_absent_touch_off_for_small_battery_enabled"; @@ -13091,7 +12240,6 @@ public final class Settings { * Default: 1 * @hide */ - @Readable public static final String WIFI_ON_WHEN_PROXY_DISCONNECTED = "wifi_on_when_proxy_disconnected"; @@ -13110,7 +12258,6 @@ public final class Settings { * Type: string * @hide */ - @Readable public static final String TIME_ONLY_MODE_CONSTANTS = "time_only_mode_constants"; @@ -13121,7 +12268,6 @@ public final class Settings { * Default: 0 * @hide */ - @Readable public static final String UNGAZE_SLEEP_ENABLED = "ungaze_sleep_enabled"; /** @@ -13130,7 +12276,6 @@ public final class Settings { * Default: 0 * @hide */ - @Readable public static final String NETWORK_WATCHLIST_ENABLED = "network_watchlist_enabled"; /** @@ -13139,7 +12284,6 @@ public final class Settings { * Default: 1 * @hide */ - @Readable public static final String SHOW_HIDDEN_LAUNCHER_ICON_APPS_ENABLED = "show_hidden_icon_apps_enabled"; @@ -13149,7 +12293,6 @@ public final class Settings { * Default: 0 * @hide */ - @Readable public static final String SHOW_NEW_APP_INSTALLED_NOTIFICATION_ENABLED = "show_new_app_installed_notification_enabled"; @@ -13163,7 +12306,6 @@ public final class Settings { * * @hide */ - @Readable public static final String KEEP_PROFILE_IN_BACKGROUND = "keep_profile_in_background"; /** @@ -13185,7 +12327,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ADB_ALLOWED_CONNECTION_TIME = "adb_allowed_connection_time"; @@ -13193,14 +12334,12 @@ public final class Settings { * Scaling factor for normal window animations. Setting to 0 will * disable window animations. */ - @Readable public static final String WINDOW_ANIMATION_SCALE = "window_animation_scale"; /** * Scaling factor for activity transition animations. Setting to 0 will * disable window animations. */ - @Readable public static final String TRANSITION_ANIMATION_SCALE = "transition_animation_scale"; /** @@ -13208,7 +12347,6 @@ public final class Settings { * start delay and duration of all such animations. Setting to 0 will * cause animations to end immediately. The default value is 1. */ - @Readable public static final String ANIMATOR_DURATION_SCALE = "animator_duration_scale"; /** @@ -13217,7 +12355,6 @@ public final class Settings { * * @hide */ - @Readable public static final String FANCY_IME_ANIMATIONS = "fancy_ime_animations"; /** @@ -13226,7 +12363,6 @@ public final class Settings { * TODO: remove this settings before code freeze (bug/1907571) * @hide */ - @Readable public static final String COMPATIBILITY_MODE = "compatibility_mode"; /** @@ -13236,7 +12372,6 @@ public final class Settings { * 2 = Vibrate * @hide */ - @Readable public static final String EMERGENCY_TONE = "emergency_tone"; /** @@ -13245,7 +12380,6 @@ public final class Settings { * boolean (1 or 0). * @hide */ - @Readable public static final String CALL_AUTO_RETRY = "call_auto_retry"; /** @@ -13253,7 +12387,6 @@ public final class Settings { * The value is a boolean (1 or 0). * @hide */ - @Readable public static final String EMERGENCY_AFFORDANCE_NEEDED = "emergency_affordance_needed"; /** @@ -13263,7 +12396,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ENABLE_AUTOMATIC_SYSTEM_SERVER_HEAP_DUMPS = "enable_automatic_system_server_heap_dumps"; @@ -13272,21 +12404,18 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String PREFERRED_NETWORK_MODE = "preferred_network_mode"; /** * Name of an application package to be debugged. */ - @Readable public static final String DEBUG_APP = "debug_app"; /** * If 1, when launching DEBUG_APP it will wait for the debugger before * starting user code. If 0, it will run normally. */ - @Readable public static final String WAIT_FOR_DEBUGGER = "wait_for_debugger"; /** @@ -13295,14 +12424,12 @@ public final class Settings { * 1 = yes * @hide */ - @Readable public static final String ENABLE_GPU_DEBUG_LAYERS = "enable_gpu_debug_layers"; /** * App allowed to load GPU debug layers * @hide */ - @Readable public static final String GPU_DEBUG_APP = "gpu_debug_app"; /** @@ -13310,7 +12437,6 @@ public final class Settings { * to dumpable apps that opt-in. * @hide */ - @Readable public static final String ANGLE_DEBUG_PACKAGE = "angle_debug_package"; /** @@ -13318,14 +12444,12 @@ public final class Settings { * The value is a boolean (1 or 0). * @hide */ - @Readable public static final String ANGLE_GL_DRIVER_ALL_ANGLE = "angle_gl_driver_all_angle"; /** * List of PKGs that have an OpenGL driver selected * @hide */ - @Readable public static final String ANGLE_GL_DRIVER_SELECTION_PKGS = "angle_gl_driver_selection_pkgs"; @@ -13333,7 +12457,6 @@ public final class Settings { * List of selected OpenGL drivers, corresponding to the PKGs in GLOBAL_SETTINGS_DRIVER_PKGS * @hide */ - @Readable public static final String ANGLE_GL_DRIVER_SELECTION_VALUES = "angle_gl_driver_selection_values"; @@ -13341,7 +12464,6 @@ public final class Settings { * List of package names that should check ANGLE rules * @hide */ - @Readable public static final String ANGLE_ALLOWLIST = "angle_allowlist"; /** @@ -13351,7 +12473,6 @@ public final class Settings { * e.g. feature1:feature2:feature3,feature1:feature3:feature5 * @hide */ - @Readable public static final String ANGLE_EGL_FEATURES = "angle_egl_features"; /** @@ -13359,7 +12480,6 @@ public final class Settings { * The value is a boolean (1 or 0). * @hide */ - @Readable public static final String SHOW_ANGLE_IN_USE_DIALOG_BOX = "show_angle_in_use_dialog_box"; /** @@ -13370,7 +12490,6 @@ public final class Settings { * 3 = All Apps use system graphics driver * @hide */ - @Readable public static final String UPDATABLE_DRIVER_ALL_APPS = "updatable_driver_all_apps"; /** @@ -13378,7 +12497,6 @@ public final class Settings { * i.e. ,,..., * @hide */ - @Readable public static final String UPDATABLE_DRIVER_PRODUCTION_OPT_IN_APPS = "updatable_driver_production_opt_in_apps"; @@ -13387,7 +12505,6 @@ public final class Settings { * i.e. ,,..., * @hide */ - @Readable public static final String UPDATABLE_DRIVER_PRERELEASE_OPT_IN_APPS = "updatable_driver_prerelease_opt_in_apps"; @@ -13396,7 +12513,6 @@ public final class Settings { * i.e. ,,..., * @hide */ - @Readable public static final String UPDATABLE_DRIVER_PRODUCTION_OPT_OUT_APPS = "updatable_driver_production_opt_out_apps"; @@ -13404,7 +12520,6 @@ public final class Settings { * Apps on the denylist that are forbidden to use updatable production driver. * @hide */ - @Readable public static final String UPDATABLE_DRIVER_PRODUCTION_DENYLIST = "updatable_driver_production_denylist"; @@ -13413,7 +12528,6 @@ public final class Settings { * updatable production driver. * @hide */ - @Readable public static final String UPDATABLE_DRIVER_PRODUCTION_DENYLISTS = "updatable_driver_production_denylists"; @@ -13423,7 +12537,6 @@ public final class Settings { * i.e. ,,..., * @hide */ - @Readable public static final String UPDATABLE_DRIVER_PRODUCTION_ALLOWLIST = "updatable_driver_production_allowlist"; @@ -13433,7 +12546,6 @@ public final class Settings { * i.e. ::...: * @hide */ - @Readable public static final String UPDATABLE_DRIVER_SPHAL_LIBRARIES = "updatable_driver_sphal_libraries"; @@ -13442,7 +12554,6 @@ public final class Settings { * i.e. ::...: * @hide */ - @Readable public static final String GPU_DEBUG_LAYERS = "gpu_debug_layers"; /** @@ -13450,14 +12561,12 @@ public final class Settings { * i.e. ::...: * @hide */ - @Readable public static final String GPU_DEBUG_LAYERS_GLES = "gpu_debug_layers_gles"; /** * Addition app for GPU layer discovery * @hide */ - @Readable public static final String GPU_DEBUG_LAYER_APP = "gpu_debug_layer_app"; /** @@ -13467,7 +12576,6 @@ public final class Settings { * {@link android.os.Build.VERSION_CODES#N_MR1}. */ @Deprecated - @Readable public static final String SHOW_PROCESSES = "show_processes"; /** @@ -13475,7 +12583,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String LOW_POWER_MODE = "low_power"; /** @@ -13484,7 +12591,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String LOW_POWER_MODE_STICKY = "low_power_sticky"; /** @@ -13494,7 +12600,6 @@ public final class Settings { * * @hide */ - @Readable public static final String LOW_POWER_MODE_STICKY_AUTO_DISABLE_LEVEL = "low_power_sticky_auto_disable_level"; @@ -13504,7 +12609,6 @@ public final class Settings { * * @hide */ - @Readable public static final String LOW_POWER_MODE_STICKY_AUTO_DISABLE_ENABLED = "low_power_sticky_auto_disable_enabled"; @@ -13518,7 +12622,6 @@ public final class Settings { * @see android.os.PowerManager#getPowerSaveModeTrigger() * @hide */ - @Readable public static final String LOW_POWER_MODE_TRIGGER_LEVEL = "low_power_trigger_level"; /** @@ -13529,7 +12632,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String AUTOMATIC_POWER_SAVE_MODE = "automatic_power_save_mode"; /** @@ -13540,7 +12642,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD = "dynamic_power_savings_disable_threshold"; @@ -13551,7 +12652,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String DYNAMIC_POWER_SAVINGS_ENABLED = "dynamic_power_savings_enabled"; /** @@ -13563,7 +12663,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String TIME_REMAINING_ESTIMATE_MILLIS = "time_remaining_estimate_millis"; @@ -13577,7 +12676,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String TIME_REMAINING_ESTIMATE_BASED_ON_USAGE = "time_remaining_estimate_based_on_usage"; @@ -13590,7 +12688,6 @@ public final class Settings { * @hide */ @Deprecated - @Readable public static final String AVERAGE_TIME_TO_DISCHARGE = "average_time_to_discharge"; /** @@ -13602,7 +12699,6 @@ public final class Settings { * @deprecated No longer needed due to {@link PowerManager#getBatteryDischargePrediction}. */ @Deprecated - @Readable public static final String BATTERY_ESTIMATES_LAST_UPDATE_TIME = "battery_estimates_last_update_time"; @@ -13612,14 +12708,12 @@ public final class Settings { * * @hide */ - @Readable public static final String LOW_POWER_MODE_TRIGGER_LEVEL_MAX = "low_power_trigger_level_max"; /** * See com.android.settingslib.fuelgauge.BatterySaverUtils. * @hide */ - @Readable public static final String LOW_POWER_MODE_SUGGESTION_PARAMS = "low_power_mode_suggestion_params"; @@ -13628,7 +12722,6 @@ public final class Settings { * processes as soon as they are no longer needed. If 0, the normal * extended lifetime is used. */ - @Readable public static final String ALWAYS_FINISH_ACTIVITIES = "always_finish_activities"; /** @@ -13638,7 +12731,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String HIDE_ERROR_DIALOGS = "hide_error_dialogs"; /** @@ -13647,7 +12739,6 @@ public final class Settings { * 1 = enabled * @hide */ - @Readable public static final String DOCK_AUDIO_MEDIA_ENABLED = "dock_audio_media_enabled"; /** @@ -13707,7 +12798,6 @@ public final class Settings { * ENCODED_SURROUND_OUTPUT_MANUAL * @hide */ - @Readable public static final String ENCODED_SURROUND_OUTPUT = "encoded_surround_output"; /** @@ -13719,7 +12809,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ENCODED_SURROUND_OUTPUT_ENABLED_FORMATS = "encoded_surround_output_enabled_formats"; @@ -13727,42 +12816,36 @@ public final class Settings { * Persisted safe headphone volume management state by AudioService * @hide */ - @Readable public static final String AUDIO_SAFE_VOLUME_STATE = "audio_safe_volume_state"; /** * URL for tzinfo (time zone) updates * @hide */ - @Readable public static final String TZINFO_UPDATE_CONTENT_URL = "tzinfo_content_url"; /** * URL for tzinfo (time zone) update metadata * @hide */ - @Readable public static final String TZINFO_UPDATE_METADATA_URL = "tzinfo_metadata_url"; /** * URL for selinux (mandatory access control) updates * @hide */ - @Readable public static final String SELINUX_UPDATE_CONTENT_URL = "selinux_content_url"; /** * URL for selinux (mandatory access control) update metadata * @hide */ - @Readable public static final String SELINUX_UPDATE_METADATA_URL = "selinux_metadata_url"; /** * URL for sms short code updates * @hide */ - @Readable public static final String SMS_SHORT_CODES_UPDATE_CONTENT_URL = "sms_short_codes_content_url"; @@ -13770,7 +12853,6 @@ public final class Settings { * URL for sms short code update metadata * @hide */ - @Readable public static final String SMS_SHORT_CODES_UPDATE_METADATA_URL = "sms_short_codes_metadata_url"; @@ -13778,35 +12860,30 @@ public final class Settings { * URL for apn_db updates * @hide */ - @Readable public static final String APN_DB_UPDATE_CONTENT_URL = "apn_db_content_url"; /** * URL for apn_db update metadata * @hide */ - @Readable public static final String APN_DB_UPDATE_METADATA_URL = "apn_db_metadata_url"; /** * URL for cert pinlist updates * @hide */ - @Readable public static final String CERT_PIN_UPDATE_CONTENT_URL = "cert_pin_content_url"; /** * URL for cert pinlist updates * @hide */ - @Readable public static final String CERT_PIN_UPDATE_METADATA_URL = "cert_pin_metadata_url"; /** * URL for intent firewall updates * @hide */ - @Readable public static final String INTENT_FIREWALL_UPDATE_CONTENT_URL = "intent_firewall_content_url"; @@ -13814,7 +12891,6 @@ public final class Settings { * URL for intent firewall update metadata * @hide */ - @Readable public static final String INTENT_FIREWALL_UPDATE_METADATA_URL = "intent_firewall_metadata_url"; @@ -13822,21 +12898,18 @@ public final class Settings { * URL for lang id model updates * @hide */ - @Readable public static final String LANG_ID_UPDATE_CONTENT_URL = "lang_id_content_url"; /** * URL for lang id model update metadata * @hide */ - @Readable public static final String LANG_ID_UPDATE_METADATA_URL = "lang_id_metadata_url"; /** * URL for smart selection model updates * @hide */ - @Readable public static final String SMART_SELECTION_UPDATE_CONTENT_URL = "smart_selection_content_url"; @@ -13844,7 +12917,6 @@ public final class Settings { * URL for smart selection model update metadata * @hide */ - @Readable public static final String SMART_SELECTION_UPDATE_METADATA_URL = "smart_selection_metadata_url"; @@ -13852,7 +12924,6 @@ public final class Settings { * URL for conversation actions model updates * @hide */ - @Readable public static final String CONVERSATION_ACTIONS_UPDATE_CONTENT_URL = "conversation_actions_content_url"; @@ -13860,7 +12931,6 @@ public final class Settings { * URL for conversation actions model update metadata * @hide */ - @Readable public static final String CONVERSATION_ACTIONS_UPDATE_METADATA_URL = "conversation_actions_metadata_url"; @@ -13868,14 +12938,12 @@ public final class Settings { * SELinux enforcement status. If 0, permissive; if 1, enforcing. * @hide */ - @Readable public static final String SELINUX_STATUS = "selinux_status"; /** * Developer setting to force RTL layout. * @hide */ - @Readable public static final String DEVELOPMENT_FORCE_RTL = "debug.force_rtl"; /** @@ -13886,7 +12954,6 @@ public final class Settings { * * @hide */ - @Readable public static final String LOW_BATTERY_SOUND_TIMEOUT = "low_battery_sound_timeout"; /** @@ -13896,7 +12963,6 @@ public final class Settings { * * @hide */ - @Readable public static final String WIFI_BOUNCE_DELAY_OVERRIDE_MS = "wifi_bounce_delay_override_ms"; /** @@ -13906,7 +12972,6 @@ public final class Settings { * * @hide */ - @Readable public static final String POLICY_CONTROL = "policy_control"; /** @@ -13914,7 +12979,6 @@ public final class Settings { * * @hide */ - @Readable public static final String EMULATE_DISPLAY_CUTOUT = "emulate_display_cutout"; /** @hide */ public static final int EMULATE_DISPLAY_CUTOUT_OFF = 0; @@ -13925,7 +12989,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BLOCKED_SLICES = "blocked_slices"; /** @@ -13935,7 +12998,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String ZEN_MODE = "zen_mode"; /** @hide */ @@ -13975,7 +13037,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ZEN_MODE_RINGER_LEVEL = "zen_mode_ringer_level"; /** @@ -13984,7 +13045,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String ZEN_MODE_CONFIG_ETAG = "zen_mode_config_etag"; /** @@ -14014,7 +13074,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @Readable public static final String HEADS_UP_NOTIFICATIONS_ENABLED = "heads_up_notifications_enabled"; @@ -14028,7 +13087,6 @@ public final class Settings { /** * The name of the device */ - @Readable public static final String DEVICE_NAME = "device_name"; /** @@ -14037,7 +13095,6 @@ public final class Settings { * Type: int (0 for false, 1 for true) * @hide */ - @Readable public static final String NETWORK_SCORING_PROVISIONED = "network_scoring_provisioned"; /** @@ -14049,7 +13106,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt"; /** @@ -14063,7 +13119,6 @@ public final class Settings { * {@link android.provider.Telephony.SimInfo#COLUMN_ENHANCED_4G_MODE_ENABLED} instead. */ @Deprecated - @Readable public static final String ENHANCED_4G_MODE_ENABLED = Telephony.SimInfo.COLUMN_ENHANCED_4G_MODE_ENABLED; @@ -14076,7 +13131,6 @@ public final class Settings { * @deprecated Use {@link android.provider.Telephony.SimInfo#COLUMN_VT_IMS_ENABLED} instead. */ @Deprecated - @Readable public static final String VT_IMS_ENABLED = Telephony.SimInfo.COLUMN_VT_IMS_ENABLED; /** @@ -14089,7 +13143,6 @@ public final class Settings { * {@link android.provider.Telephony.SimInfo#COLUMN_WFC_IMS_ENABLED} instead. */ @Deprecated - @Readable public static final String WFC_IMS_ENABLED = Telephony.SimInfo.COLUMN_WFC_IMS_ENABLED; /** @@ -14101,7 +13154,6 @@ public final class Settings { * @deprecated Use {@link android.provider.Telephony.SimInfo#COLUMN_WFC_IMS_MODE} instead. */ @Deprecated - @Readable public static final String WFC_IMS_MODE = Telephony.SimInfo.COLUMN_WFC_IMS_MODE; /** @@ -14114,7 +13166,6 @@ public final class Settings { * instead. */ @Deprecated - @Readable public static final String WFC_IMS_ROAMING_MODE = Telephony.SimInfo.COLUMN_WFC_IMS_ROAMING_MODE; @@ -14128,7 +13179,6 @@ public final class Settings { * instead */ @Deprecated - @Readable public static final String WFC_IMS_ROAMING_ENABLED = Telephony.SimInfo.COLUMN_WFC_IMS_ROAMING_ENABLED; @@ -14139,7 +13189,6 @@ public final class Settings { * Type: int (0 for false, 1 for true) * @hide */ - @Readable public static final String LTE_SERVICE_FORCED = "lte_service_forced"; @@ -14149,7 +13198,6 @@ public final class Settings { * See WindowManagerPolicy.WindowManagerFuncs * @hide */ - @Readable public static final String LID_BEHAVIOR = "lid_behavior"; /** @@ -14158,7 +13206,6 @@ public final class Settings { * Type: int * @hide */ - @Readable public static final String EPHEMERAL_COOKIE_MAX_SIZE_BYTES = "ephemeral_cookie_max_size_bytes"; @@ -14170,7 +13217,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ENABLE_EPHEMERAL_FEATURE = "enable_ephemeral_feature"; /** @@ -14181,7 +13227,6 @@ public final class Settings { * * @hide */ - @Readable public static final String INSTANT_APP_DEXOPT_ENABLED = "instant_app_dexopt_enabled"; /** @@ -14190,7 +13235,6 @@ public final class Settings { * Type: long * @hide */ - @Readable public static final String INSTALLED_INSTANT_APP_MIN_CACHE_PERIOD = "installed_instant_app_min_cache_period"; @@ -14200,7 +13244,6 @@ public final class Settings { * Type: long * @hide */ - @Readable public static final String INSTALLED_INSTANT_APP_MAX_CACHE_PERIOD = "installed_instant_app_max_cache_period"; @@ -14210,7 +13253,6 @@ public final class Settings { * Type: long * @hide */ - @Readable public static final String UNINSTALLED_INSTANT_APP_MIN_CACHE_PERIOD = "uninstalled_instant_app_min_cache_period"; @@ -14220,7 +13262,6 @@ public final class Settings { * Type: long * @hide */ - @Readable public static final String UNINSTALLED_INSTANT_APP_MAX_CACHE_PERIOD = "uninstalled_instant_app_max_cache_period"; @@ -14230,7 +13271,6 @@ public final class Settings { * Type: long * @hide */ - @Readable public static final String UNUSED_STATIC_SHARED_LIB_MIN_CACHE_PERIOD = "unused_static_shared_lib_min_cache_period"; @@ -14240,7 +13280,6 @@ public final class Settings { * Type: int * @hide */ - @Readable public static final String ALLOW_USER_SWITCHING_WHEN_SYSTEM_USER_LOCKED = "allow_user_switching_when_system_user_locked"; @@ -14249,7 +13288,6 @@ public final class Settings { *

* Type: int */ - @Readable public static final String BOOT_COUNT = "boot_count"; /** @@ -14260,7 +13298,6 @@ public final class Settings { * before the user restrictions are loaded. * @hide */ - @Readable public static final String SAFE_BOOT_DISALLOWED = "safe_boot_disallowed"; /** @@ -14272,7 +13309,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String DEVICE_DEMO_MODE = "device_demo_mode"; /** @@ -14282,7 +13318,6 @@ public final class Settings { * * @hide */ - @Readable public static final String NETWORK_ACCESS_TIMEOUT_MS = "network_access_timeout_ms"; /** @@ -14293,7 +13328,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DATABASE_DOWNGRADE_REASON = "database_downgrade_reason"; /** @@ -14304,7 +13338,6 @@ public final class Settings { * * @hide */ - @Readable public static final String DATABASE_CREATION_BUILDID = "database_creation_buildid"; /** @@ -14313,7 +13346,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CONTACTS_DATABASE_WAL_ENABLED = "contacts_database_wal_enabled"; /** @@ -14321,7 +13353,6 @@ public final class Settings { * * @hide */ - @Readable public static final String LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED = "location_settings_link_to_permissions_enabled"; @@ -14332,7 +13363,6 @@ public final class Settings { * * @hide */ - @Readable public static final String EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS = "euicc_removing_invisible_profiles_timeout_millis"; @@ -14342,7 +13372,6 @@ public final class Settings { * * @hide */ - @Readable public static final String EUICC_FACTORY_RESET_TIMEOUT_MILLIS = "euicc_factory_reset_timeout_millis"; @@ -14352,7 +13381,6 @@ public final class Settings { * * @hide */ - @Readable public static final String STORAGE_SETTINGS_CLOBBER_THRESHOLD = "storage_settings_clobber_threshold"; @@ -14362,7 +13390,6 @@ public final class Settings { * * @hide */ - @Readable public static final String OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION = "override_settings_provider_restore_any_version"; /** @@ -14373,7 +13400,6 @@ public final class Settings { * * @hide */ - @Readable public static final String CHAINED_BATTERY_ATTRIBUTION_ENABLED = "chained_battery_attribution_enabled"; @@ -14386,7 +13412,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ENABLE_ADB_INCREMENTAL_INSTALL_DEFAULT = "enable_adb_incremental_install_default"; @@ -14404,7 +13429,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES = "autofill_compat_mode_allowed_packages"; @@ -14418,7 +13442,6 @@ public final class Settings { * * @hide */ - @Readable public static final String AUTOFILL_LOGGING_LEVEL = "autofill_logging_level"; /** @@ -14426,7 +13449,6 @@ public final class Settings { * * @hide */ - @Readable public static final String AUTOFILL_MAX_PARTITIONS_SIZE = "autofill_max_partitions_size"; /** @@ -14435,7 +13457,6 @@ public final class Settings { * * @hide */ - @Readable public static final String AUTOFILL_MAX_VISIBLE_DATASETS = "autofill_max_visible_datasets"; /** @@ -14444,7 +13465,6 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String HIDDEN_API_BLACKLIST_EXEMPTIONS = "hidden_api_blacklist_exemptions"; @@ -14457,16 +13477,14 @@ public final class Settings { * @hide */ @TestApi - @Readable public static final String HIDDEN_API_POLICY = "hidden_api_policy"; - /** + /** * Flag for forcing {@link com.android.server.compat.OverrideValidatorImpl} * to consider this a non-debuggable build. * * @hide */ - @Readable public static final String FORCE_NON_DEBUGGABLE_FINAL_BUILD_FOR_COMPAT = "force_non_debuggable_final_build_for_compat"; @@ -14476,7 +13494,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SIGNED_CONFIG_VERSION = "signed_config_version"; /** @@ -14485,7 +13502,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SOUND_TRIGGER_DETECTION_SERVICE_OP_TIMEOUT = "sound_trigger_detection_service_op_timeout"; @@ -14495,7 +13511,6 @@ public final class Settings { * * @hide */ - @Readable public static final String MAX_SOUND_TRIGGER_DETECTION_SERVICE_OPS_PER_DAY = "max_sound_trigger_detection_service_ops_per_day"; @@ -14503,7 +13518,6 @@ public final class Settings { * Indicates whether aware is available in the current location. * @hide */ - @Readable public static final String AWARE_ALLOWED = "aware_allowed"; /** @@ -14512,7 +13526,6 @@ public final class Settings { * Used by PhoneWindowManager. * @hide */ - @Readable public static final String POWER_BUTTON_LONG_PRESS = "power_button_long_press"; @@ -14522,7 +13535,6 @@ public final class Settings { * Used by PhoneWindowManager. * @hide */ - @Readable public static final String POWER_BUTTON_VERY_LONG_PRESS = "power_button_very_long_press"; @@ -14548,8 +13560,7 @@ public final class Settings { CONTENT_URI, CALL_METHOD_GET_GLOBAL, CALL_METHOD_PUT_GLOBAL, - sProviderHolder, - Global.class); + sProviderHolder); // Certain settings have been moved from global to the per-user secure namespace @UnsupportedAppUsage @@ -14578,11 +13589,6 @@ public final class Settings { sNameValueCache.clearGenerationTrackerForTest(); } - /** @hide */ - public static void getPublicSettings(Set allKeys, Set readableKeys) { - getPublicSettingsForClass(Global.class, allKeys, readableKeys); - } - /** * Look up a name in the database. * @param resolver to access the database with @@ -14992,7 +13998,6 @@ public final class Settings { * Subscription Id to be used for voice call on a multi sim device. * @hide */ - @Readable public static final String MULTI_SIM_VOICE_CALL_SUBSCRIPTION = "multi_sim_voice_call"; /** @@ -15001,21 +14006,18 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String MULTI_SIM_VOICE_PROMPT = "multi_sim_voice_prompt"; /** * Subscription Id to be used for data call on a multi sim device. * @hide */ - @Readable public static final String MULTI_SIM_DATA_CALL_SUBSCRIPTION = "multi_sim_data_call"; /** * Subscription Id to be used for SMS on a multi sim device. * @hide */ - @Readable public static final String MULTI_SIM_SMS_SUBSCRIPTION = "multi_sim_sms"; /** @@ -15023,7 +14025,6 @@ public final class Settings { * The value 1 - enable, 0 - disable * @hide */ - @Readable public static final String MULTI_SIM_SMS_PROMPT = "multi_sim_sms_prompt"; /** User preferred subscriptions setting. @@ -15033,7 +14034,6 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable public static final String[] MULTI_SIM_USER_PREFERRED_SUBS = {"user_preferred_sub1", "user_preferred_sub2","user_preferred_sub3"}; @@ -15041,7 +14041,6 @@ public final class Settings { * Which subscription is enabled for a physical slot. * @hide */ - @Readable public static final String ENABLED_SUBSCRIPTION_FOR_SLOT = "enabled_subscription_for_slot"; /** @@ -15049,7 +14048,6 @@ public final class Settings { * The value 1 - enable, 0 - disable * @hide */ - @Readable public static final String MODEM_STACK_ENABLED_FOR_SLOT = "modem_stack_enabled_for_slot"; /** @@ -15057,7 +14055,6 @@ public final class Settings { * The value 1 - enable, 0 - disable * @hide */ - @Readable public static final String NEW_CONTACT_AGGREGATOR = "new_contact_aggregator"; /** @@ -15067,14 +14064,12 @@ public final class Settings { * @removed */ @Deprecated - @Readable public static final String CONTACT_METADATA_SYNC = "contact_metadata_sync"; /** * Whether to enable contacts metadata syncing or not * The value 1 - enable, 0 - disable */ - @Readable public static final String CONTACT_METADATA_SYNC_ENABLED = "contact_metadata_sync_enabled"; /** @@ -15082,7 +14077,6 @@ public final class Settings { * The value 1 - enable, 0 - disable * @hide */ - @Readable public static final String ENABLE_CELLULAR_ON_BOOT = "enable_cellular_on_boot"; /** @@ -15091,7 +14085,6 @@ public final class Settings { * Should be a float, and includes updates only. * @hide */ - @Readable public static final String MAX_NOTIFICATION_ENQUEUE_RATE = "max_notification_enqueue_rate"; /** @@ -15100,7 +14093,6 @@ public final class Settings { * The value 1 - enable, 0 - disable * @hide */ - @Readable public static final String SHOW_NOTIFICATION_CHANNEL_WARNINGS = "show_notification_channel_warnings"; @@ -15108,7 +14100,6 @@ public final class Settings { * Whether cell is enabled/disabled * @hide */ - @Readable public static final String CELL_ON = "cell_on"; /** @@ -15137,35 +14128,30 @@ public final class Settings { * Whether to show the high temperature warning notification. * @hide */ - @Readable public static final String SHOW_TEMPERATURE_WARNING = "show_temperature_warning"; /** * Whether to show the usb high temperature alarm notification. * @hide */ - @Readable public static final String SHOW_USB_TEMPERATURE_ALARM = "show_usb_temperature_alarm"; /** * Temperature at which the high temperature warning notification should be shown. * @hide */ - @Readable public static final String WARNING_TEMPERATURE = "warning_temperature"; /** * Whether the diskstats logging task is enabled/disabled. * @hide */ - @Readable public static final String ENABLE_DISKSTATS_LOGGING = "enable_diskstats_logging"; /** * Whether the cache quota calculation task is enabled/disabled. * @hide */ - @Readable public static final String ENABLE_CACHE_QUOTA_CALCULATION = "enable_cache_quota_calculation"; @@ -15173,7 +14159,6 @@ public final class Settings { * Whether the Deletion Helper no threshold toggle is available. * @hide */ - @Readable public static final String ENABLE_DELETION_HELPER_NO_THRESHOLD_TOGGLE = "enable_deletion_helper_no_threshold_toggle"; @@ -15194,7 +14179,6 @@ public final class Settings { * Options will be used in order up to the maximum allowed by the UI. * @hide */ - @Readable public static final String NOTIFICATION_SNOOZE_OPTIONS = "notification_snooze_options"; @@ -15206,7 +14190,6 @@ public final class Settings { * The value 1 - enable, 0 - disable * @hide */ - @Readable public static final String NOTIFICATION_FEEDBACK_ENABLED = "notification_feedback_enabled"; /** @@ -15218,7 +14201,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BLOCKING_HELPER_DISMISS_TO_VIEW_RATIO_LIMIT = "blocking_helper_dismiss_to_view_ratio"; @@ -15230,7 +14212,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BLOCKING_HELPER_STREAK_LIMIT = "blocking_helper_streak_limit"; /** @@ -15258,7 +14239,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SQLITE_COMPATIBILITY_WAL_FLAGS = "sqlite_compatibility_wal_flags"; @@ -15268,7 +14248,6 @@ public final class Settings { * 1 = yes * @hide */ - @Readable public static final String ENABLE_GNSS_RAW_MEAS_FULL_TRACKING = "enable_gnss_raw_meas_full_tracking"; @@ -15280,7 +14259,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String INSTALL_CARRIER_APP_NOTIFICATION_PERSISTENT = "install_carrier_app_notification_persistent"; @@ -15292,7 +14270,6 @@ public final class Settings { * @hide */ @SystemApi - @Readable public static final String INSTALL_CARRIER_APP_NOTIFICATION_SLEEP_MILLIS = "install_carrier_app_notification_sleep_millis"; @@ -15302,7 +14279,6 @@ public final class Settings { * everything else is unspecified. * @hide */ - @Readable public static final String ZRAM_ENABLED = "zram_enabled"; @@ -15312,7 +14288,6 @@ public final class Settings { * "device_default" will let the system decide whether to enable the freezer or not * @hide */ - @Readable public static final String CACHED_APPS_FREEZER_ENABLED = "cached_apps_freezer"; /** @@ -15335,7 +14310,6 @@ public final class Settings { * @see com.android.systemui.statusbar.policy.SmartReplyConstants * @hide */ - @Readable public static final String SMART_REPLIES_IN_NOTIFICATIONS_FLAGS = "smart_replies_in_notifications_flags"; @@ -15352,7 +14326,6 @@ public final class Settings { * * @hide */ - @Readable public static final String SMART_SUGGESTIONS_IN_NOTIFICATIONS_FLAGS = "smart_suggestions_in_notifications_flags"; @@ -15362,7 +14335,6 @@ public final class Settings { * @hide */ @TestApi - @Readable @SuppressLint("NoSettingsProvider") public static final String SHOW_FIRST_CRASH_DIALOG = "show_first_crash_dialog"; @@ -15370,7 +14342,6 @@ public final class Settings { * If nonzero, crash dialogs will show an option to restart the app. * @hide */ - @Readable public static final String SHOW_RESTART_IN_CRASH_DIALOG = "show_restart_in_crash_dialog"; /** @@ -15378,7 +14349,6 @@ public final class Settings { * this app. * @hide */ - @Readable public static final String SHOW_MUTE_IN_CRASH_DIALOG = "show_mute_in_crash_dialog"; @@ -15434,7 +14404,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BACKUP_AGENT_TIMEOUT_PARAMETERS = "backup_agent_timeout_parameters"; @@ -15449,7 +14418,6 @@ public final class Settings { * * @hide */ - @Readable public static final String GNSS_SATELLITE_BLOCKLIST = "gnss_satellite_blocklist"; /** @@ -15461,7 +14429,6 @@ public final class Settings { * * @hide */ - @Readable public static final String GNSS_HAL_LOCATION_REQUEST_DURATION_MILLIS = "gnss_hal_location_request_duration_millis"; @@ -15478,7 +14445,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BINDER_CALLS_STATS = "binder_calls_stats"; /** @@ -15492,7 +14458,6 @@ public final class Settings { * * @hide */ - @Readable public static final String LOOPER_STATS = "looper_stats"; /** @@ -15507,7 +14472,6 @@ public final class Settings { * * @hide */ - @Readable public static final String KERNEL_CPU_THREAD_READER = "kernel_cpu_thread_reader"; /** @@ -15515,7 +14479,6 @@ public final class Settings { * reboot. The value "1" enables native flags health check; otherwise it's disabled. * @hide */ - @Readable public static final String NATIVE_FLAGS_HEALTH_CHECK_ENABLED = "native_flags_health_check_enabled"; @@ -15525,7 +14488,6 @@ public final class Settings { * * @hide */ - @Readable public static final String APPOP_HISTORY_MODE = "mode"; /** @@ -15535,7 +14497,6 @@ public final class Settings { * * @hide */ - @Readable public static final String APPOP_HISTORY_BASE_INTERVAL_MILLIS = "baseIntervalMillis"; /** @@ -15544,7 +14505,6 @@ public final class Settings { * * @hide */ - @Readable public static final String APPOP_HISTORY_INTERVAL_MULTIPLIER = "intervalMultiplier"; /** @@ -15566,7 +14526,6 @@ public final class Settings { * * @hide */ - @Readable public static final String APPOP_HISTORY_PARAMETERS = "appop_history_parameters"; @@ -15584,7 +14543,6 @@ public final class Settings { * * @hide */ - @Readable public static final String AUTO_REVOKE_PARAMETERS = "auto_revoke_parameters"; @@ -15596,7 +14554,6 @@ public final class Settings { * @see com.android.internal.os.BatteryStatsImpl.Constants.KEY_BATTERY_CHARGED_DELAY_MS * @hide */ - @Readable public static final String BATTERY_CHARGING_STATE_UPDATE_DELAY = "battery_charging_state_update_delay"; @@ -15605,7 +14562,6 @@ public final class Settings { * * @hide */ - @Readable public static final String TEXT_CLASSIFIER_ACTION_MODEL_PARAMS = "text_classifier_action_model_params"; @@ -15619,7 +14575,6 @@ public final class Settings { * * @hide */ - @Readable public static final String POWER_BUTTON_SUPPRESSION_DELAY_AFTER_GESTURE_WAKE = "power_button_suppression_delay_after_gesture_wake"; @@ -15628,7 +14583,6 @@ public final class Settings { * * @hide */ - @Readable public static final String ADVANCED_BATTERY_USAGE_AMOUNT = "advanced_battery_usage_amount"; /** @@ -15643,7 +14597,6 @@ public final class Settings { * 2: always on - All 5G NSA tracking indications are on whether the screen is on or off. * @hide */ - @Readable public static final String NR_NSA_TRACKING_SCREEN_OFF_MODE = "nr_nsa_tracking_screen_off_mode"; @@ -15654,7 +14607,6 @@ public final class Settings { * 1: Enabled * @hide */ - @Readable public static final String SHOW_PEOPLE_SPACE = "show_people_space"; /** @@ -15665,7 +14617,6 @@ public final class Settings { * 2: All conversations * @hide */ - @Readable public static final String PEOPLE_SPACE_CONVERSATION_TYPE = "people_space_conversation_type"; @@ -15676,7 +14627,6 @@ public final class Settings { * 1: Enabled * @hide */ - @Readable public static final String SHOW_NEW_LOCKSCREEN = "show_new_lockscreen"; /** @@ -15686,7 +14636,6 @@ public final class Settings { * 1: Enabled * @hide */ - @Readable public static final String SHOW_NEW_NOTIF_DISMISS = "show_new_notif_dismiss"; /** @@ -15701,7 +14650,6 @@ public final class Settings { * 1: Enabled (All apps will receive the new rules) * @hide */ - @Readable public static final String BACKPORT_S_NOTIF_RULES = "backport_s_notif_rules"; /** @@ -15745,7 +14693,6 @@ public final class Settings { * * @hide */ - @Readable public static final String BLOCK_UNTRUSTED_TOUCHES_MODE = "block_untrusted_touches"; /** @@ -15772,7 +14719,6 @@ public final class Settings { * * @hide */ - @Readable public static final String MAXIMUM_OBSCURING_OPACITY_FOR_TOUCH = "maximum_obscuring_opacity_for_touch"; @@ -15785,7 +14731,6 @@ public final class Settings { * 1: enabled * @hide */ - @Readable public static final String RESTRICTED_NETWORKING_MODE = "restricted_networking_mode"; } @@ -15807,8 +14752,7 @@ public final class Settings { CALL_METHOD_PUT_CONFIG, CALL_METHOD_LIST_CONFIG, CALL_METHOD_SET_ALL_CONFIG, - sProviderHolder, - Config.class); + sProviderHolder); /** * Look up a name in the database. diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 9de763026de1a..edb5506cb8ccf 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -297,24 +297,6 @@ public class SettingsProvider extends ContentProvider { Settings.System.getCloneFromParentOnValueSettings(sSystemCloneFromParentOnDependency); } - private static final Set sAllSecureSettings = new ArraySet<>(); - private static final Set sReadableSecureSettings = new ArraySet<>(); - static { - Settings.Secure.getPublicSettings(sAllSecureSettings, sReadableSecureSettings); - } - - private static final Set sAllSystemSettings = new ArraySet<>(); - private static final Set sReadableSystemSettings = new ArraySet<>(); - static { - Settings.System.getPublicSettings(sAllSystemSettings, sReadableSystemSettings); - } - - private static final Set sAllGlobalSettings = new ArraySet<>(); - private static final Set sReadableGlobalSettings = new ArraySet<>(); - static { - Settings.Global.getPublicSettings(sAllGlobalSettings, sReadableGlobalSettings); - } - private final Object mLock = new Object(); @GuardedBy("mLock") @@ -1937,7 +1919,6 @@ public class SettingsProvider extends ContentProvider { if (UserHandle.getAppId(Binder.getCallingUid()) < Process.FIRST_APPLICATION_UID) { return; } - checkReadableAnnotation(settingsType, settingName); ApplicationInfo ai = getCallingApplicationInfoOrThrow(); if (!ai.isInstantApp()) { return; @@ -1951,41 +1932,6 @@ public class SettingsProvider extends ContentProvider { } } - /** - * Check if the target settings key is readable. Reject if the caller app is trying to access a - * settings key defined in the Settings.Secure, Settings.System or Settings.Global and is not - * annotated as @Readable. - * Notice that a key string that is not defined in any of the Settings.* classes will still be - * regarded as readable. - */ - private void checkReadableAnnotation(int settingsType, String settingName) { - final Set allFields; - final Set readableFields; - switch (settingsType) { - case SETTINGS_TYPE_GLOBAL: - allFields = sAllGlobalSettings; - readableFields = sReadableGlobalSettings; - break; - case SETTINGS_TYPE_SYSTEM: - allFields = sAllSystemSettings; - readableFields = sReadableSystemSettings; - break; - case SETTINGS_TYPE_SECURE: - allFields = sAllSecureSettings; - readableFields = sReadableSecureSettings; - break; - default: - throw new IllegalArgumentException("Invalid settings type: " + settingsType); - } - - if (allFields.contains(settingName) && !readableFields.contains(settingName)) { - throw new SecurityException( - "Settings key: <" + settingName + "> is not readable. From S+, new public " - + "settings keys need to be annotated with @Readable unless they are " - + "annotated with @hide."); - } - } - private ApplicationInfo getCallingApplicationInfoOrThrow() { // We always use the callingUid for this lookup. This means that if hypothetically an // app was installed in user A with cross user and in user B as an Instant App From ec53cacc93b6245876bf880841a56c89c268662b Mon Sep 17 00:00:00 2001 From: Suprabh Shukla Date: Thu, 28 Jan 2021 18:03:02 +0000 Subject: [PATCH 077/192] Revert "Move allow-while-idle throttling to quotas" This reverts commit 2479d73d255d459e3491f653a1cfefd82b9c3702. Reason for revert: Causes b/178687870. Change-Id: Iff6fa5ee7859f0c8511247dfacbf7ac72f385372 (cherry picked from commit 5ba0c5bed53ea2a294a153a6b52a2542984f2b5c) --- .../android/server/AppStateTrackerImpl.java | 87 +++++- .../server/alarm/AlarmManagerService.java | 263 ++++++++++++------ .../android/server/AppStateTrackerTest.java | 43 ++- .../server/alarm/AlarmManagerServiceTest.java | 213 +++++++------- 4 files changed, 404 insertions(+), 202 deletions(-) diff --git a/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java b/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java index c332a598c30b9..cc3e9c33fe42c 100644 --- a/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java +++ b/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java @@ -105,6 +105,10 @@ public class AppStateTrackerImpl implements AppStateTracker { @GuardedBy("mLock") final SparseBooleanArray mActiveUids = new SparseBooleanArray(); + /** UIDs that are in the foreground. */ + @GuardedBy("mLock") + final SparseBooleanArray mForegroundUids = new SparseBooleanArray(); + /** * System except-idle + user exemption list in the device idle controller. */ @@ -281,6 +285,13 @@ public class AppStateTrackerImpl implements AppStateTracker { } } + /** + * This is called when the foreground state changed for a UID. + */ + private void onUidForegroundStateChanged(AppStateTrackerImpl sender, int uid) { + onUidForeground(uid, sender.isUidInForeground(uid)); + } + /** * This is called when the active/idle state changed for a UID. */ @@ -404,6 +415,14 @@ public class AppStateTrackerImpl implements AppStateTracker { public void unblockAlarmsForUidPackage(int uid, String packageName) { } + /** + * Called when a UID comes into the foreground or the background. + * + * @see #isUidInForeground(int) + */ + public void onUidForeground(int uid, boolean foreground) { + } + /** * Called when an ephemeral uid goes to the background, so its alarms need to be removed. */ @@ -441,6 +460,7 @@ public class AppStateTrackerImpl implements AppStateTracker { mExemptedBucketPackages.remove(userId, pkgName); mRunAnyRestrictedPackages.remove(Pair.create(uid, pkgName)); mActiveUids.delete(uid); + mForegroundUids.delete(uid); } break; } @@ -476,7 +496,8 @@ public class AppStateTrackerImpl implements AppStateTracker { mIActivityManager.registerUidObserver(new UidObserver(), ActivityManager.UID_OBSERVER_GONE | ActivityManager.UID_OBSERVER_IDLE - | ActivityManager.UID_OBSERVER_ACTIVE, + | ActivityManager.UID_OBSERVER_ACTIVE + | ActivityManager.UID_OBSERVER_PROCSTATE, ActivityManager.PROCESS_STATE_UNKNOWN, null); mAppOpsService.startWatchingMode(TARGET_OP, null, new AppOpsWatcher()); @@ -677,6 +698,7 @@ public class AppStateTrackerImpl implements AppStateTracker { private final class UidObserver extends IUidObserver.Stub { @Override public void onUidStateChanged(int uid, int procState, long procStateSeq, int capability) { + mHandler.onUidStateChanged(uid, procState); } @Override @@ -747,6 +769,7 @@ public class AppStateTrackerImpl implements AppStateTracker { private class MyHandler extends Handler { private static final int MSG_UID_ACTIVE_STATE_CHANGED = 0; + private static final int MSG_UID_FG_STATE_CHANGED = 1; private static final int MSG_RUN_ANY_CHANGED = 3; private static final int MSG_ALL_UNEXEMPTED = 4; private static final int MSG_ALL_EXEMPTION_LIST_CHANGED = 5; @@ -756,6 +779,7 @@ public class AppStateTrackerImpl implements AppStateTracker { private static final int MSG_FORCE_APP_STANDBY_FEATURE_FLAG_CHANGED = 9; private static final int MSG_EXEMPTED_BUCKET_CHANGED = 10; + private static final int MSG_ON_UID_STATE_CHANGED = 11; private static final int MSG_ON_UID_ACTIVE = 12; private static final int MSG_ON_UID_GONE = 13; private static final int MSG_ON_UID_IDLE = 14; @@ -768,6 +792,10 @@ public class AppStateTrackerImpl implements AppStateTracker { obtainMessage(MSG_UID_ACTIVE_STATE_CHANGED, uid, 0).sendToTarget(); } + public void notifyUidForegroundStateChanged(int uid) { + obtainMessage(MSG_UID_FG_STATE_CHANGED, uid, 0).sendToTarget(); + } + public void notifyRunAnyAppOpsChanged(int uid, @NonNull String packageName) { obtainMessage(MSG_RUN_ANY_CHANGED, uid, 0, packageName).sendToTarget(); } @@ -806,6 +834,10 @@ public class AppStateTrackerImpl implements AppStateTracker { obtainMessage(MSG_USER_REMOVED, userId, 0).sendToTarget(); } + public void onUidStateChanged(int uid, int procState) { + obtainMessage(MSG_ON_UID_STATE_CHANGED, uid, procState).sendToTarget(); + } + public void onUidActive(int uid) { obtainMessage(MSG_ON_UID_ACTIVE, uid, 0).sendToTarget(); } @@ -843,6 +875,13 @@ public class AppStateTrackerImpl implements AppStateTracker { mStatLogger.logDurationStat(Stats.UID_ACTIVE_STATE_CHANGED, start); return; + case MSG_UID_FG_STATE_CHANGED: + for (Listener l : cloneListeners()) { + l.onUidForegroundStateChanged(sender, msg.arg1); + } + mStatLogger.logDurationStat(Stats.UID_FG_STATE_CHANGED, start); + return; + case MSG_RUN_ANY_CHANGED: for (Listener l : cloneListeners()) { l.onRunAnyAppOpsChanged(sender, msg.arg1, (String) msg.obj); @@ -905,6 +944,9 @@ public class AppStateTrackerImpl implements AppStateTracker { handleUserRemoved(msg.arg1); return; + case MSG_ON_UID_STATE_CHANGED: + handleUidStateChanged(msg.arg1, msg.arg2); + return; case MSG_ON_UID_ACTIVE: handleUidActive(msg.arg1); return; @@ -929,6 +971,20 @@ public class AppStateTrackerImpl implements AppStateTracker { } } + public void handleUidStateChanged(int uid, int procState) { + synchronized (mLock) { + if (procState > ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND) { + if (removeUidFromArray(mForegroundUids, uid, false)) { + mHandler.notifyUidForegroundStateChanged(uid); + } + } else { + if (addUidToArray(mForegroundUids, uid)) { + mHandler.notifyUidForegroundStateChanged(uid); + } + } + } + } + public void handleUidActive(int uid) { synchronized (mLock) { if (addUidToArray(mActiveUids, uid)) { @@ -951,6 +1007,9 @@ public class AppStateTrackerImpl implements AppStateTracker { if (removeUidFromArray(mActiveUids, uid, remove)) { mHandler.notifyUidActiveStateChanged(uid); } + if (removeUidFromArray(mForegroundUids, uid, remove)) { + mHandler.notifyUidForegroundStateChanged(uid); + } } } } @@ -967,6 +1026,7 @@ public class AppStateTrackerImpl implements AppStateTracker { } } cleanUpArrayForUser(mActiveUids, removedUserId); + cleanUpArrayForUser(mForegroundUids, removedUserId); mExemptedBucketPackages.remove(removedUserId); } } @@ -1161,6 +1221,22 @@ public class AppStateTrackerImpl implements AppStateTracker { return ret; } + /** + * @return whether a UID is in the foreground or not. + * + * Note this information is based on the UID proc state callback, meaning it's updated + * asynchronously and may subtly be stale. If the fresh data is needed, use + * {@link ActivityManagerInternal#getUidProcessState} instead. + */ + public boolean isUidInForeground(int uid) { + if (UserHandle.isCore(uid)) { + return true; + } + synchronized (mLock) { + return mForegroundUids.get(uid); + } + } + /** * @return whether force all apps standby is enabled or not. */ @@ -1239,6 +1315,9 @@ public class AppStateTrackerImpl implements AppStateTracker { pw.print("Active uids: "); dumpUids(pw, mActiveUids); + pw.print("Foreground uids: "); + dumpUids(pw, mForegroundUids); + pw.print("Except-idle + user exemption list appids: "); pw.println(Arrays.toString(mPowerExemptAllAppIds)); @@ -1316,6 +1395,12 @@ public class AppStateTrackerImpl implements AppStateTracker { } } + for (int i = 0; i < mForegroundUids.size(); i++) { + if (mForegroundUids.valueAt(i)) { + proto.write(AppStateTrackerProto.FOREGROUND_UIDS, mForegroundUids.keyAt(i)); + } + } + for (int appId : mPowerExemptAllAppIds) { proto.write(AppStateTrackerProto.POWER_SAVE_EXEMPT_APP_IDS, appId); } diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java index d44169d16d5df..aa46cfdc5c8a5 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java @@ -90,6 +90,7 @@ import android.util.Slog; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseIntArray; +import android.util.SparseLongArray; import android.util.TimeUtils; import android.util.proto.ProtoOutputStream; @@ -151,8 +152,7 @@ public class AlarmManagerService extends SystemService { static final boolean DEBUG_BG_LIMIT = localLOGV || false; static final boolean DEBUG_STANDBY = localLOGV || false; static final boolean RECORD_ALARMS_IN_HISTORY = true; - // TODO (b/178484639): Turn off once allow-while-idle revamp is completed. - static final boolean RECORD_DEVICE_IDLE_ALARMS = true; + static final boolean RECORD_DEVICE_IDLE_ALARMS = false; static final String TIMEZONE_PROPERTY = "persist.sys.timezone"; static final int TICK_HISTORY_DEPTH = 10; @@ -208,7 +208,6 @@ public class AlarmManagerService extends SystemService { new ArrayList<>(); AlarmHandler mHandler; AppWakeupHistory mAppWakeupHistory; - AppWakeupHistory mAllowWhileIdleHistory; ClockReceiver mClockReceiver; final DeliveryTracker mDeliveryTracker = new DeliveryTracker(); IBinder.DeathRecipient mListenerDeathRecipient; @@ -231,6 +230,19 @@ public class AlarmManagerService extends SystemService { */ int mSystemUiUid; + /** + * For each uid, this is the last time we dispatched an "allow while idle" alarm, + * used to determine the earliest we can dispatch the next such alarm. Times are in the + * 'elapsed' timebase. + */ + final SparseLongArray mLastAllowWhileIdleDispatch = new SparseLongArray(); + + /** + * For each uid, we store whether the last allow-while-idle alarm was dispatched while + * the uid was in foreground or not. We will use the allow_while_idle_short_time in such cases. + */ + final SparseBooleanArray mUseAllowWhileIdleShortTime = new SparseBooleanArray(); + static boolean isTimeTickAlarm(Alarm a) { return a.uid == Process.SYSTEM_UID && TIME_TICK_TAG.equals(a.listenerTag); } @@ -278,11 +290,9 @@ public class AlarmManagerService extends SystemService { private boolean mAppStandbyParole; /** - * A container to keep rolling window history of previous times when an alarm was sent to - * a package. + * A rolling window history of previous times when an alarm was sent to a package. */ - @VisibleForTesting - static class AppWakeupHistory { + private static class AppWakeupHistory { private ArrayMap, LongArrayQueue> mPackageHistory = new ArrayMap<>(); private long mWindowSize; @@ -343,6 +353,7 @@ public class AlarmManagerService extends SystemService { } void dump(IndentingPrintWriter pw, long nowElapsed) { + pw.println("App Alarm history:"); pw.increaseIndent(); for (int i = 0; i < mPackageHistory.size(); i++) { final Pair packageUser = mPackageHistory.keyAt(i); @@ -378,6 +389,10 @@ public class AlarmManagerService extends SystemService { @VisibleForTesting static final String KEY_MAX_INTERVAL = "max_interval"; @VisibleForTesting + static final String KEY_ALLOW_WHILE_IDLE_SHORT_TIME = "allow_while_idle_short_time"; + @VisibleForTesting + static final String KEY_ALLOW_WHILE_IDLE_LONG_TIME = "allow_while_idle_long_time"; + @VisibleForTesting static final String KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION = "allow_while_idle_whitelist_duration"; @VisibleForTesting @@ -407,12 +422,11 @@ public class AlarmManagerService extends SystemService { private static final String KEY_TIME_TICK_ALLOWED_WHILE_IDLE = "time_tick_allowed_while_idle"; - @VisibleForTesting - static final String KEY_ALLOW_WHILE_IDLE_QUOTA = "allow_while_idle_quota"; - private static final long DEFAULT_MIN_FUTURITY = 5 * 1000; private static final long DEFAULT_MIN_INTERVAL = 60 * 1000; private static final long DEFAULT_MAX_INTERVAL = 365 * DateUtils.DAY_IN_MILLIS; + private static final long DEFAULT_ALLOW_WHILE_IDLE_SHORT_TIME = DEFAULT_MIN_FUTURITY; + private static final long DEFAULT_ALLOW_WHILE_IDLE_LONG_TIME = 9 * 60 * 1000; private static final long DEFAULT_ALLOW_WHILE_IDLE_WHITELIST_DURATION = 10 * 1000; private static final long DEFAULT_LISTENER_TIMEOUT = 5 * 1000; private static final int DEFAULT_MAX_ALARMS_PER_UID = 500; @@ -433,9 +447,6 @@ public class AlarmManagerService extends SystemService { private static final boolean DEFAULT_LAZY_BATCHING = true; private static final boolean DEFAULT_TIME_TICK_ALLOWED_WHILE_IDLE = true; - private static final int DEFAULT_ALLOW_WHILE_IDLE_QUOTA = 7; - public static final long ALLOW_WHILE_IDLE_WINDOW = 60 * 60 * 1000; // 1 hour. - // Minimum futurity of a new alarm public long MIN_FUTURITY = DEFAULT_MIN_FUTURITY; @@ -445,6 +456,12 @@ public class AlarmManagerService extends SystemService { // Maximum alarm recurrence interval public long MAX_INTERVAL = DEFAULT_MAX_INTERVAL; + // Minimum time between ALLOW_WHILE_IDLE alarms when system is not idle. + public long ALLOW_WHILE_IDLE_SHORT_TIME = DEFAULT_ALLOW_WHILE_IDLE_SHORT_TIME; + + // Minimum time between ALLOW_WHILE_IDLE alarms when system is idling. + public long ALLOW_WHILE_IDLE_LONG_TIME = DEFAULT_ALLOW_WHILE_IDLE_LONG_TIME; + // BroadcastOptions.setTemporaryAppWhitelistDuration() to use for FLAG_ALLOW_WHILE_IDLE. public long ALLOW_WHILE_IDLE_WHITELIST_DURATION = DEFAULT_ALLOW_WHILE_IDLE_WHITELIST_DURATION; @@ -461,8 +478,6 @@ public class AlarmManagerService extends SystemService { public boolean LAZY_BATCHING = DEFAULT_LAZY_BATCHING; public boolean TIME_TICK_ALLOWED_WHILE_IDLE = DEFAULT_TIME_TICK_ALLOWED_WHILE_IDLE; - public int ALLOW_WHILE_IDLE_QUOTA = DEFAULT_ALLOW_WHILE_IDLE_QUOTA; - private long mLastAllowWhileIdleWhitelistDuration = -1; Constants() { @@ -508,13 +523,15 @@ public class AlarmManagerService extends SystemService { MAX_INTERVAL = properties.getLong( KEY_MAX_INTERVAL, DEFAULT_MAX_INTERVAL); break; - case KEY_ALLOW_WHILE_IDLE_QUOTA: - ALLOW_WHILE_IDLE_QUOTA = properties.getInt(KEY_ALLOW_WHILE_IDLE_QUOTA, - DEFAULT_ALLOW_WHILE_IDLE_QUOTA); - if (ALLOW_WHILE_IDLE_QUOTA <= 0) { - Slog.w(TAG, "Cannot have allow-while-idle quota lower than 1."); - ALLOW_WHILE_IDLE_QUOTA = 1; - } + case KEY_ALLOW_WHILE_IDLE_SHORT_TIME: + ALLOW_WHILE_IDLE_SHORT_TIME = properties.getLong( + KEY_ALLOW_WHILE_IDLE_SHORT_TIME, + DEFAULT_ALLOW_WHILE_IDLE_SHORT_TIME); + break; + case KEY_ALLOW_WHILE_IDLE_LONG_TIME: + ALLOW_WHILE_IDLE_LONG_TIME = properties.getLong( + KEY_ALLOW_WHILE_IDLE_LONG_TIME, + DEFAULT_ALLOW_WHILE_IDLE_LONG_TIME); break; case KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION: ALLOW_WHILE_IDLE_WHITELIST_DURATION = properties.getLong( @@ -643,11 +660,14 @@ public class AlarmManagerService extends SystemService { TimeUtils.formatDuration(LISTENER_TIMEOUT, pw); pw.println(); - pw.print("allow_while_idle_window="); - TimeUtils.formatDuration(ALLOW_WHILE_IDLE_WINDOW, pw); + pw.print(KEY_ALLOW_WHILE_IDLE_SHORT_TIME); + pw.print("="); + TimeUtils.formatDuration(ALLOW_WHILE_IDLE_SHORT_TIME, pw); pw.println(); - pw.print(KEY_ALLOW_WHILE_IDLE_QUOTA, ALLOW_WHILE_IDLE_QUOTA); + pw.print(KEY_ALLOW_WHILE_IDLE_LONG_TIME); + pw.print("="); + TimeUtils.formatDuration(ALLOW_WHILE_IDLE_LONG_TIME, pw); pw.println(); pw.print(KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION); @@ -655,8 +675,9 @@ public class AlarmManagerService extends SystemService { TimeUtils.formatDuration(ALLOW_WHILE_IDLE_WHITELIST_DURATION, pw); pw.println(); - pw.print(KEY_MAX_ALARMS_PER_UID, MAX_ALARMS_PER_UID); - pw.println(); + pw.print(KEY_MAX_ALARMS_PER_UID); + pw.print("="); + pw.println(MAX_ALARMS_PER_UID); pw.print(KEY_APP_STANDBY_WINDOW); pw.print("="); @@ -664,12 +685,14 @@ public class AlarmManagerService extends SystemService { pw.println(); for (int i = 0; i < KEYS_APP_STANDBY_QUOTAS.length; i++) { - pw.print(KEYS_APP_STANDBY_QUOTAS[i], APP_STANDBY_QUOTAS[i]); - pw.println(); + pw.print(KEYS_APP_STANDBY_QUOTAS[i]); + pw.print("="); + pw.println(APP_STANDBY_QUOTAS[i]); } - pw.print(KEY_APP_STANDBY_RESTRICTED_QUOTA, APP_STANDBY_RESTRICTED_QUOTA); - pw.println(); + pw.print(KEY_APP_STANDBY_RESTRICTED_QUOTA); + pw.print("="); + pw.println(APP_STANDBY_RESTRICTED_QUOTA); pw.print(KEY_APP_STANDBY_RESTRICTED_WINDOW); pw.print("="); @@ -692,6 +715,10 @@ public class AlarmManagerService extends SystemService { proto.write(ConstantsProto.MIN_INTERVAL_DURATION_MS, MIN_INTERVAL); proto.write(ConstantsProto.MAX_INTERVAL_DURATION_MS, MAX_INTERVAL); proto.write(ConstantsProto.LISTENER_TIMEOUT_DURATION_MS, LISTENER_TIMEOUT); + proto.write(ConstantsProto.ALLOW_WHILE_IDLE_SHORT_DURATION_MS, + ALLOW_WHILE_IDLE_SHORT_TIME); + proto.write(ConstantsProto.ALLOW_WHILE_IDLE_LONG_DURATION_MS, + ALLOW_WHILE_IDLE_LONG_TIME); proto.write(ConstantsProto.ALLOW_WHILE_IDLE_WHITELIST_DURATION_MS, ALLOW_WHILE_IDLE_WHITELIST_DURATION); @@ -1241,7 +1268,6 @@ public class AlarmManagerService extends SystemService { mAlarmStore.setAlarmClockRemovalListener(mAlarmClockUpdater); mAppWakeupHistory = new AppWakeupHistory(Constants.DEFAULT_APP_STANDBY_WINDOW); - mAllowWhileIdleHistory = new AppWakeupHistory(Constants.ALLOW_WHILE_IDLE_WINDOW); mNextWakeup = mNextNonWakeup = 0; @@ -1610,28 +1636,25 @@ public class AlarmManagerService extends SystemService { return alarm.setPolicyElapsed(BATTERY_SAVER_POLICY_INDEX, nowElapsed); } - final long batterySaverPolicyElapsed; + final long batterSaverPolicyElapsed; if ((alarm.flags & (AlarmManager.FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED)) != 0) { // Unrestricted. - batterySaverPolicyElapsed = nowElapsed; + batterSaverPolicyElapsed = nowElapsed; } else if ((alarm.flags & AlarmManager.FLAG_ALLOW_WHILE_IDLE) != 0) { // Allowed but limited. - final int userId = UserHandle.getUserId(alarm.creatorUid); - final int quota = mConstants.ALLOW_WHILE_IDLE_QUOTA; - final int dispatchesInWindow = mAllowWhileIdleHistory.getTotalWakeupsInWindow( - alarm.sourcePackage, userId); - if (dispatchesInWindow < quota) { - // fine to go out immediately. - batterySaverPolicyElapsed = nowElapsed; + final long minDelay; + if (mUseAllowWhileIdleShortTime.get(alarm.creatorUid)) { + minDelay = mConstants.ALLOW_WHILE_IDLE_SHORT_TIME; } else { - batterySaverPolicyElapsed = mAllowWhileIdleHistory.getNthLastWakeupForPackage( - alarm.sourcePackage, userId, quota) + Constants.ALLOW_WHILE_IDLE_WINDOW; + minDelay = mConstants.ALLOW_WHILE_IDLE_LONG_TIME; } + final long lastDispatch = mLastAllowWhileIdleDispatch.get(alarm.creatorUid, 0); + batterSaverPolicyElapsed = (lastDispatch == 0) ? nowElapsed : lastDispatch + minDelay; } else { // Not allowed. - batterySaverPolicyElapsed = nowElapsed + INDEFINITE_DELAY; + batterSaverPolicyElapsed = nowElapsed + INDEFINITE_DELAY; } - return alarm.setPolicyElapsed(BATTERY_SAVER_POLICY_INDEX, batterySaverPolicyElapsed); + return alarm.setPolicyElapsed(BATTERY_SAVER_POLICY_INDEX, batterSaverPolicyElapsed); } /** @@ -1653,18 +1676,9 @@ public class AlarmManagerService extends SystemService { deviceIdlePolicyTime = nowElapsed; } else if ((alarm.flags & AlarmManager.FLAG_ALLOW_WHILE_IDLE) != 0) { // Allowed but limited. - final int userId = UserHandle.getUserId(alarm.creatorUid); - final int quota = mConstants.ALLOW_WHILE_IDLE_QUOTA; - final int dispatchesInWindow = mAllowWhileIdleHistory.getTotalWakeupsInWindow( - alarm.sourcePackage, userId); - if (dispatchesInWindow < quota) { - // fine to go out immediately. - deviceIdlePolicyTime = nowElapsed; - } else { - final long whenInQuota = mAllowWhileIdleHistory.getNthLastWakeupForPackage( - alarm.sourcePackage, userId, quota) + Constants.ALLOW_WHILE_IDLE_WINDOW; - deviceIdlePolicyTime = Math.min(whenInQuota, mPendingIdleUntil.getWhenElapsed()); - } + final long lastDispatch = mLastAllowWhileIdleDispatch.get(alarm.creatorUid, 0); + deviceIdlePolicyTime = (lastDispatch == 0) ? nowElapsed + : lastDispatch + mConstants.ALLOW_WHILE_IDLE_LONG_TIME; } else { // Not allowed. deviceIdlePolicyTime = mPendingIdleUntil.getWhenElapsed(); @@ -1709,11 +1723,11 @@ public class AlarmManagerService extends SystemService { if (wakeupsInWindow >= quotaForBucket) { final long minElapsed; if (quotaForBucket <= 0) { - // Just keep deferring indefinitely till the quota changes. - minElapsed = nowElapsed + INDEFINITE_DELAY; + // Just keep deferring for a day till the quota changes + minElapsed = nowElapsed + MILLIS_IN_DAY; } else { // Suppose the quota for window was q, and the qth last delivery time for this - // package was t(q) then the next delivery must be after t(q) + . + // package was t(q) then the next delivery must be after t(q) + final long t = mAppWakeupHistory.getNthLastWakeupForPackage( sourcePackage, sourceUserId, quotaForBucket); minElapsed = t + mConstants.APP_STANDBY_WINDOW; @@ -1734,10 +1748,17 @@ public class AlarmManagerService extends SystemService { ent.uid = a.uid; ent.pkg = a.operation.getCreatorPackage(); ent.tag = a.operation.getTag(""); - ent.op = "START IDLE"; + ent.op = "SET"; ent.elapsedRealtime = mInjector.getElapsedRealtime(); ent.argRealtime = a.getWhenElapsed(); mAllowWhileIdleDispatches.add(ent); + if (mPendingIdleUntil == null) { + IdleDispatchEntry ent2 = new IdleDispatchEntry(); + ent2.uid = 0; + ent2.pkg = "START IDLE"; + ent2.elapsedRealtime = mInjector.getElapsedRealtime(); + mAllowWhileIdleDispatches.add(ent2); + } } if ((mPendingIdleUntil != a) && (mPendingIdleUntil != null)) { Slog.wtfStack(TAG, "setImplLocked: idle until changed from " + mPendingIdleUntil @@ -2161,7 +2182,6 @@ public class AlarmManagerService extends SystemService { pw.println("]"); pw.println(); - pw.println("App Alarm history:"); mAppWakeupHistory.dump(pw, nowELAPSED); if (mPendingIdleUntil != null) { @@ -2239,8 +2259,30 @@ public class AlarmManagerService extends SystemService { pw.println(); } - pw.println("Allow while idle history:"); - mAllowWhileIdleHistory.dump(pw, nowELAPSED); + if (mLastAllowWhileIdleDispatch.size() > 0) { + pw.println("Last allow while idle dispatch times:"); + pw.increaseIndent(); + for (int i = 0; i < mLastAllowWhileIdleDispatch.size(); i++) { + pw.print("UID "); + final int uid = mLastAllowWhileIdleDispatch.keyAt(i); + UserHandle.formatUid(pw, uid); + pw.print(": "); + final long lastTime = mLastAllowWhileIdleDispatch.valueAt(i); + TimeUtils.formatDuration(lastTime, nowELAPSED, pw); + pw.println(); + } + pw.decreaseIndent(); + } + + pw.print("mUseAllowWhileIdleShortTime: ["); + for (int i = 0; i < mUseAllowWhileIdleShortTime.size(); i++) { + if (mUseAllowWhileIdleShortTime.valueAt(i)) { + UserHandle.formatUid(pw, mUseAllowWhileIdleShortTime.keyAt(i)); + pw.print(" "); + } + } + pw.println("]"); + pw.println(); if (mLog.dump(pw, "Recent problems:")) { pw.println(); @@ -2491,6 +2533,25 @@ public class AlarmManagerService extends SystemService { f.dumpDebug(proto, AlarmManagerServiceDumpProto.OUTSTANDING_DELIVERIES); } + for (int i = 0; i < mLastAllowWhileIdleDispatch.size(); ++i) { + final long token = proto.start( + AlarmManagerServiceDumpProto.LAST_ALLOW_WHILE_IDLE_DISPATCH_TIMES); + final int uid = mLastAllowWhileIdleDispatch.keyAt(i); + final long lastTime = mLastAllowWhileIdleDispatch.valueAt(i); + + proto.write(AlarmManagerServiceDumpProto.LastAllowWhileIdleDispatch.UID, uid); + proto.write(AlarmManagerServiceDumpProto.LastAllowWhileIdleDispatch.TIME_MS, + lastTime); + proto.end(token); + } + + for (int i = 0; i < mUseAllowWhileIdleShortTime.size(); i++) { + if (mUseAllowWhileIdleShortTime.valueAt(i)) { + proto.write(AlarmManagerServiceDumpProto.USE_ALLOW_WHILE_IDLE_SHORT_TIME, + mUseAllowWhileIdleShortTime.keyAt(i)); + } + } + mLog.dumpDebug(proto, AlarmManagerServiceDumpProto.RECENT_PROBLEMS); final FilterStats[] topFilters = new FilterStats[10]; @@ -2988,6 +3049,11 @@ public class AlarmManagerService extends SystemService { mPendingBackgroundAlarms.removeAt(i); } } + for (int i = mLastAllowWhileIdleDispatch.size() - 1; i >= 0; i--) { + if (UserHandle.getUserId(mLastAllowWhileIdleDispatch.keyAt(i)) == userHandle) { + mLastAllowWhileIdleDispatch.removeAt(i); + } + } if (mNextWakeFromIdle != null && whichAlarms.test(mNextWakeFromIdle)) { mNextWakeFromIdle = mAlarmStore.getNextWakeFromIdleAlarm(); if (mPendingIdleUntil != null) { @@ -3149,16 +3215,6 @@ public class AlarmManagerService extends SystemService { if (mPendingIdleUntil == alarm) { mPendingIdleUntil = null; mAlarmStore.updateAlarmDeliveries(a -> adjustDeliveryTimeBasedOnDeviceIdle(a)); - if (RECORD_DEVICE_IDLE_ALARMS) { - IdleDispatchEntry ent = new IdleDispatchEntry(); - ent.uid = alarm.uid; - ent.pkg = alarm.operation.getCreatorPackage(); - ent.tag = alarm.operation.getTag(""); - ent.op = "END IDLE"; - ent.elapsedRealtime = mInjector.getElapsedRealtime(); - ent.argRealtime = alarm.getWhenElapsed(); - mAllowWhileIdleDispatches.add(ent); - } } if (mNextWakeFromIdle == alarm) { mNextWakeFromIdle = mAlarmStore.getNextWakeFromIdleAlarm(); @@ -3773,6 +3829,7 @@ public class AlarmManagerService extends SystemService { IntentFilter sdFilter = new IntentFilter(); sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE); sdFilter.addAction(Intent.ACTION_USER_STOPPED); + sdFilter.addAction(Intent.ACTION_UID_REMOVED); getContext().registerReceiver(this, sdFilter); } @@ -3799,7 +3856,12 @@ public class AlarmManagerService extends SystemService { if (userHandle >= 0) { removeUserLocked(userHandle); mAppWakeupHistory.removeForUser(userHandle); - mAllowWhileIdleHistory.removeForUser(userHandle); + } + return; + case Intent.ACTION_UID_REMOVED: + if (uid >= 0) { + mLastAllowWhileIdleDispatch.delete(uid); + mUseAllowWhileIdleShortTime.delete(uid); } return; case Intent.ACTION_PACKAGE_REMOVED: @@ -3823,7 +3885,6 @@ public class AlarmManagerService extends SystemService { if (uid >= 0) { // package-removed and package-restarted case mAppWakeupHistory.removeForPackage(pkg, UserHandle.getUserId(uid)); - mAllowWhileIdleHistory.removeForPackage(pkg, UserHandle.getUserId(uid)); removeLocked(uid); } else { // external-applications-unavailable case @@ -3918,6 +3979,23 @@ public class AlarmManagerService extends SystemService { } } + @Override + public void onUidForeground(int uid, boolean foreground) { + synchronized (mLock) { + if (foreground) { + mUseAllowWhileIdleShortTime.put(uid, true); + if (mAlarmStore.updateAlarmDeliveries(a -> { + if (a.creatorUid != uid || (a.flags & FLAG_ALLOW_WHILE_IDLE) == 0) { + return false; + } + return adjustDeliveryTimeBasedOnBatterySaver(a); + })) { + rescheduleKernelAlarmsLocked(); + } + } + } + } + @Override public void removeAlarmsForUid(int uid) { synchronized (mLock) { @@ -4195,23 +4273,22 @@ public class AlarmManagerService extends SystemService { notifyBroadcastAlarmPendingLocked(alarm.uid); } if (allowWhileIdle) { - final boolean doze = (mPendingIdleUntil != null); - final boolean batterySaver = (mAppStateTracker != null - && mAppStateTracker.isForceAllAppsStandbyEnabled()); - if (doze || batterySaver) { - // Record the last time this uid handled an ALLOW_WHILE_IDLE alarm while the - // device was in doze or battery saver. - mAllowWhileIdleHistory.recordAlarmForPackage(alarm.sourcePackage, - UserHandle.getUserId(alarm.creatorUid), nowELAPSED); - mAlarmStore.updateAlarmDeliveries(a -> { - if (a.creatorUid != alarm.creatorUid - || (a.flags & FLAG_ALLOW_WHILE_IDLE) == 0) { - return false; - } - return (doze && adjustDeliveryTimeBasedOnDeviceIdle(a)) - || (batterySaver && adjustDeliveryTimeBasedOnBatterySaver(a)); - }); + // Record the last time this uid handled an ALLOW_WHILE_IDLE alarm. + mLastAllowWhileIdleDispatch.put(alarm.creatorUid, nowELAPSED); + if ((mAppStateTracker == null) + || mAppStateTracker.isUidInForeground(alarm.creatorUid)) { + mUseAllowWhileIdleShortTime.put(alarm.creatorUid, true); + } else { + mUseAllowWhileIdleShortTime.put(alarm.creatorUid, false); } + mAlarmStore.updateAlarmDeliveries(a -> { + if (a.creatorUid != alarm.creatorUid + || (a.flags & FLAG_ALLOW_WHILE_IDLE) == 0) { + return false; + } + return adjustDeliveryTimeBasedOnDeviceIdle(a) + | adjustDeliveryTimeBasedOnBatterySaver(a); + }); if (RECORD_DEVICE_IDLE_ALARMS) { IdleDispatchEntry ent = new IdleDispatchEntry(); ent.uid = alarm.uid; @@ -4223,6 +4300,8 @@ public class AlarmManagerService extends SystemService { } } if (!isExemptFromAppStandby(alarm)) { + final Pair packageUser = Pair.create(alarm.sourcePackage, + UserHandle.getUserId(alarm.creatorUid)); mAppWakeupHistory.recordAlarmForPackage(alarm.sourcePackage, UserHandle.getUserId(alarm.creatorUid), nowELAPSED); } diff --git a/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java b/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java index 607fb4760236d..a691a8d44e489 100644 --- a/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java @@ -271,7 +271,8 @@ public class AppStateTrackerTest { verify(mMockIActivityManager).registerUidObserver( uidObserverArgumentCaptor.capture(), eq(ActivityManager.UID_OBSERVER_GONE | ActivityManager.UID_OBSERVER_IDLE - | ActivityManager.UID_OBSERVER_ACTIVE), + | ActivityManager.UID_OBSERVER_ACTIVE + | ActivityManager.UID_OBSERVER_PROCSTATE), eq(ActivityManager.PROCESS_STATE_UNKNOWN), isNull()); verify(mMockIAppOpsService).startWatchingMode( @@ -649,6 +650,11 @@ public class AppStateTrackerTest { assertFalse(instance.isUidActiveSynced(UID_2)); assertTrue(instance.isUidActiveSynced(Process.SYSTEM_UID)); + assertFalse(instance.isUidInForeground(UID_1)); + assertFalse(instance.isUidInForeground(UID_2)); + assertTrue(instance.isUidInForeground(Process.SYSTEM_UID)); + + mIUidObserver.onUidStateChanged(UID_2, ActivityManager.PROCESS_STATE_BOUND_FOREGROUND_SERVICE, 0, ActivityManager.PROCESS_CAPABILITY_NONE); @@ -664,6 +670,11 @@ public class AppStateTrackerTest { assertFalse(instance.isUidActiveSynced(UID_2)); assertTrue(instance.isUidActiveSynced(Process.SYSTEM_UID)); + assertFalse(instance.isUidInForeground(UID_1)); + assertTrue(instance.isUidInForeground(UID_2)); + assertTrue(instance.isUidInForeground(Process.SYSTEM_UID)); + + mIUidObserver.onUidStateChanged(UID_1, ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE, 0, ActivityManager.PROCESS_CAPABILITY_NONE); @@ -675,6 +686,10 @@ public class AppStateTrackerTest { assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); + assertTrue(instance.isUidInForeground(UID_1)); + assertTrue(instance.isUidInForeground(UID_2)); + assertTrue(instance.isUidInForeground(Process.SYSTEM_UID)); + mIUidObserver.onUidGone(UID_1, true); waitUntilMainHandlerDrain(); @@ -684,6 +699,10 @@ public class AppStateTrackerTest { assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); + assertFalse(instance.isUidInForeground(UID_1)); + assertTrue(instance.isUidInForeground(UID_2)); + assertTrue(instance.isUidInForeground(Process.SYSTEM_UID)); + mIUidObserver.onUidIdle(UID_2, true); waitUntilMainHandlerDrain(); @@ -693,6 +712,10 @@ public class AppStateTrackerTest { assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); + assertFalse(instance.isUidInForeground(UID_1)); + assertFalse(instance.isUidInForeground(UID_2)); + assertTrue(instance.isUidInForeground(Process.SYSTEM_UID)); + mIUidObserver.onUidStateChanged(UID_1, ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND, 0, ActivityManager.PROCESS_CAPABILITY_NONE); @@ -704,6 +727,10 @@ public class AppStateTrackerTest { assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); + assertTrue(instance.isUidInForeground(UID_1)); + assertFalse(instance.isUidInForeground(UID_2)); + assertTrue(instance.isUidInForeground(Process.SYSTEM_UID)); + mIUidObserver.onUidStateChanged(UID_1, ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND, 0, ActivityManager.PROCESS_CAPABILITY_NONE); @@ -719,6 +746,10 @@ public class AppStateTrackerTest { assertFalse(instance.isUidActiveSynced(UID_2)); assertTrue(instance.isUidActiveSynced(Process.SYSTEM_UID)); + assertFalse(instance.isUidInForeground(UID_1)); + assertFalse(instance.isUidInForeground(UID_2)); + assertTrue(instance.isUidInForeground(Process.SYSTEM_UID)); + // The result from AMI.isUidActive() only affects isUidActiveSynced(). when(mMockIActivityManagerInternal.isUidActive(anyInt())).thenReturn(true); @@ -729,6 +760,11 @@ public class AppStateTrackerTest { assertTrue(instance.isUidActiveSynced(UID_1)); assertTrue(instance.isUidActiveSynced(UID_2)); assertTrue(instance.isUidActiveSynced(Process.SYSTEM_UID)); + + assertFalse(instance.isUidInForeground(UID_1)); + assertFalse(instance.isUidInForeground(UID_2)); + assertTrue(instance.isUidInForeground(Process.SYSTEM_UID)); + } @Test @@ -1444,6 +1480,7 @@ public class AppStateTrackerTest { callStart(instance); instance.mActiveUids.put(UID_1, true); + instance.mForegroundUids.put(UID_2, true); instance.mRunAnyRestrictedPackages.add(Pair.create(UID_1, PACKAGE_1)); instance.mExemptedBucketPackages.add(UserHandle.getUserId(UID_2), PACKAGE_2); @@ -1456,6 +1493,7 @@ public class AppStateTrackerTest { mReceiver.onReceive(mMockContext, packageRemoved); assertEquals(1, instance.mActiveUids.size()); + assertEquals(1, instance.mForegroundUids.size()); assertEquals(1, instance.mRunAnyRestrictedPackages.size()); assertEquals(1, instance.mExemptedBucketPackages.size()); @@ -1468,6 +1506,7 @@ public class AppStateTrackerTest { mReceiver.onReceive(mMockContext, packageRemoved); assertEquals(1, instance.mActiveUids.size()); + assertEquals(1, instance.mForegroundUids.size()); assertEquals(1, instance.mRunAnyRestrictedPackages.size()); assertEquals(1, instance.mExemptedBucketPackages.size()); @@ -1479,6 +1518,7 @@ public class AppStateTrackerTest { mReceiver.onReceive(mMockContext, packageRemoved); assertEquals(0, instance.mActiveUids.size()); + assertEquals(1, instance.mForegroundUids.size()); assertEquals(0, instance.mRunAnyRestrictedPackages.size()); assertEquals(1, instance.mExemptedBucketPackages.size()); @@ -1490,6 +1530,7 @@ public class AppStateTrackerTest { mReceiver.onReceive(mMockContext, packageRemoved); assertEquals(0, instance.mActiveUids.size()); + assertEquals(0, instance.mForegroundUids.size()); assertEquals(0, instance.mRunAnyRestrictedPackages.size()); assertEquals(0, instance.mExemptedBucketPackages.size()); } diff --git a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java index 1254df95a1c01..7a970a1c3d463 100644 --- a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java @@ -44,15 +44,14 @@ import static com.android.server.alarm.AlarmManagerService.ACTIVE_INDEX; import static com.android.server.alarm.AlarmManagerService.AlarmHandler.APP_STANDBY_BUCKET_CHANGED; import static com.android.server.alarm.AlarmManagerService.AlarmHandler.CHARGING_STATUS_CHANGED; import static com.android.server.alarm.AlarmManagerService.AlarmHandler.REMOVE_FOR_CANCELED; -import static com.android.server.alarm.AlarmManagerService.Constants.ALLOW_WHILE_IDLE_WINDOW; -import static com.android.server.alarm.AlarmManagerService.Constants.KEY_ALLOW_WHILE_IDLE_QUOTA; +import static com.android.server.alarm.AlarmManagerService.Constants.KEY_ALLOW_WHILE_IDLE_LONG_TIME; +import static com.android.server.alarm.AlarmManagerService.Constants.KEY_ALLOW_WHILE_IDLE_SHORT_TIME; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_LAZY_BATCHING; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_LISTENER_TIMEOUT; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MAX_INTERVAL; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MIN_FUTURITY; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MIN_INTERVAL; -import static com.android.server.alarm.AlarmManagerService.FREQUENT_INDEX; import static com.android.server.alarm.AlarmManagerService.INDEFINITE_DELAY; import static com.android.server.alarm.AlarmManagerService.IS_WAKEUP_MASK; import static com.android.server.alarm.AlarmManagerService.TIME_CHANGED_MASK; @@ -410,12 +409,6 @@ public class AlarmManagerServiceTest { return mockPi; } - private void setDeviceConfigInt(String key, int val) { - mDeviceConfigKeys.add(key); - doReturn(val).when(mDeviceConfigProperties).getInt(eq(key), anyInt()); - mService.mConstants.onPropertiesChanged(mDeviceConfigProperties); - } - private void setDeviceConfigLong(String key, long val) { mDeviceConfigKeys.add(key); doReturn(val).when(mDeviceConfigProperties).getLong(eq(key), anyLong()); @@ -437,12 +430,10 @@ public class AlarmManagerServiceTest { setDeviceConfigLong(KEY_MIN_INTERVAL, 0); mDeviceConfigKeys.add(mService.mConstants.KEYS_APP_STANDBY_QUOTAS[ACTIVE_INDEX]); mDeviceConfigKeys.add(mService.mConstants.KEYS_APP_STANDBY_QUOTAS[WORKING_INDEX]); - doReturn(50).when(mDeviceConfigProperties) + doReturn(8).when(mDeviceConfigProperties) .getInt(eq(mService.mConstants.KEYS_APP_STANDBY_QUOTAS[ACTIVE_INDEX]), anyInt()); - doReturn(35).when(mDeviceConfigProperties) + doReturn(5).when(mDeviceConfigProperties) .getInt(eq(mService.mConstants.KEYS_APP_STANDBY_QUOTAS[WORKING_INDEX]), anyInt()); - doReturn(20).when(mDeviceConfigProperties) - .getInt(eq(mService.mConstants.KEYS_APP_STANDBY_QUOTAS[FREQUENT_INDEX]), anyInt()); mService.mConstants.onPropertiesChanged(mDeviceConfigProperties); } @@ -505,13 +496,15 @@ public class AlarmManagerServiceTest { setDeviceConfigLong(KEY_MIN_FUTURITY, 5); setDeviceConfigLong(KEY_MIN_INTERVAL, 10); setDeviceConfigLong(KEY_MAX_INTERVAL, 15); - setDeviceConfigInt(KEY_ALLOW_WHILE_IDLE_QUOTA, 20); + setDeviceConfigLong(KEY_ALLOW_WHILE_IDLE_SHORT_TIME, 20); + setDeviceConfigLong(KEY_ALLOW_WHILE_IDLE_LONG_TIME, 25); setDeviceConfigLong(KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION, 30); setDeviceConfigLong(KEY_LISTENER_TIMEOUT, 35); assertEquals(5, mService.mConstants.MIN_FUTURITY); assertEquals(10, mService.mConstants.MIN_INTERVAL); assertEquals(15, mService.mConstants.MAX_INTERVAL); - assertEquals(20, mService.mConstants.ALLOW_WHILE_IDLE_QUOTA); + assertEquals(20, mService.mConstants.ALLOW_WHILE_IDLE_SHORT_TIME); + assertEquals(25, mService.mConstants.ALLOW_WHILE_IDLE_LONG_TIME); assertEquals(30, mService.mConstants.ALLOW_WHILE_IDLE_WHITELIST_DURATION); assertEquals(35, mService.mConstants.LISTENER_TIMEOUT); } @@ -1308,54 +1301,62 @@ public class AlarmManagerServiceTest { public void allowWhileIdleAlarmsWhileDeviceIdle() throws Exception { doReturn(0).when(mService).fuzzForDuration(anyLong()); - setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + ALLOW_WHILE_IDLE_WINDOW + 1000, - getNewMockPendingIntent()); - assertNotNull(mService.mPendingIdleUntil); + final long awiDelayForTest = 23; + setDeviceConfigLong(KEY_ALLOW_WHILE_IDLE_LONG_TIME, awiDelayForTest); - final int quota = mService.mConstants.ALLOW_WHILE_IDLE_QUOTA; - final long firstTrigger = mNowElapsedTest + 10; - for (int i = 0; i < quota; i++) { - setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + i, - getNewMockPendingIntent(), false); - mNowElapsedTest = mTestTimer.getElapsed(); - mTestTimer.expire(); - } - // This one should get deferred on set. - setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + quota, - getNewMockPendingIntent(), false); - final long expectedNextTrigger = firstTrigger + ALLOW_WHILE_IDLE_WINDOW; - assertEquals("Incorrect trigger when no quota left", expectedNextTrigger, - mTestTimer.getElapsed()); - - // Bring the idle until alarm back. - setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, expectedNextTrigger - 50, - getNewMockPendingIntent()); - assertEquals(expectedNextTrigger - 50, mService.mPendingIdleUntil.getWhenElapsed()); - assertEquals(expectedNextTrigger - 50, mTestTimer.getElapsed()); - } - - @Test - public void allowWhileIdleUnrestricted() throws Exception { - doReturn(0).when(mService).fuzzForDuration(anyLong()); - - // Both battery saver and doze are on. setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 1000, getNewMockPendingIntent()); assertNotNull(mService.mPendingIdleUntil); - when(mAppStateTracker.areAlarmsRestrictedByBatterySaver(TEST_CALLING_UID, - TEST_CALLING_PACKAGE)).thenReturn(true); - - final int numAlarms = mService.mConstants.ALLOW_WHILE_IDLE_QUOTA + 100; - final long firstTrigger = mNowElapsedTest + 10; + final long seedTrigger = mNowElapsedTest + 3; + final int numAlarms = 10; + final PendingIntent[] pis = new PendingIntent[numAlarms]; for (int i = 0; i < numAlarms; i++) { - setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + i, + pis[i] = getNewMockPendingIntent(); + setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, seedTrigger + i * i, pis[i], false); + } + + long lastAwiDispatch = -1; + int i = 0; + while (i < numAlarms) { + final long nextDispatch = (lastAwiDispatch >= 0) ? (lastAwiDispatch + awiDelayForTest) + : (seedTrigger + i * i); + assertEquals("Wrong allow-while-idle dispatch", nextDispatch, mTestTimer.getElapsed()); + + mNowElapsedTest = nextDispatch; + mTestTimer.expire(); + + while (i < numAlarms && (seedTrigger + i * i) <= nextDispatch) { + verify(pis[i]).send(eq(mMockContext), eq(0), any(Intent.class), any(), + any(Handler.class), isNull(), any()); + i++; + } + Log.d(TAG, "Dispatched alarms upto " + i + " at " + nextDispatch); + lastAwiDispatch = nextDispatch; + } + } + + @Test + public void allowWhileIdleUnrestrictedInIdle() throws Exception { + doReturn(0).when(mService).fuzzForDuration(anyLong()); + + final long awiDelayForTest = 127; + setDeviceConfigLong(KEY_ALLOW_WHILE_IDLE_LONG_TIME, awiDelayForTest); + setDeviceConfigLong(KEY_ALLOW_WHILE_IDLE_SHORT_TIME, 0); + + setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 1000, + getNewMockPendingIntent()); + assertNotNull(mService.mPendingIdleUntil); + + final long seedTrigger = mNowElapsedTest + 3; + for (int i = 1; i <= 5; i++) { + setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, seedTrigger + i * i, getNewMockPendingIntent(), true); } - // All of them should fire as expected. - for (int i = 0; i < numAlarms; i++) { - mNowElapsedTest = mTestTimer.getElapsed(); - assertEquals("Incorrect trigger at i=" + i, firstTrigger + i, mNowElapsedTest); + for (int i = 1; i <= 5; i++) { + final long nextTrigger = mTestTimer.getElapsed(); + assertEquals("Wrong trigger for alarm " + i, seedTrigger + i * i, nextTrigger); + mNowElapsedTest = nextTrigger; mTestTimer.expire(); } } @@ -1426,10 +1427,9 @@ public class AlarmManagerServiceTest { verify(mAppStateTracker).addListener(listenerArgumentCaptor.capture()); final AppStateTrackerImpl.Listener listener = listenerArgumentCaptor.getValue(); + final PendingIntent alarmPi = getNewMockPendingIntent(); when(mAppStateTracker.areAlarmsRestrictedByBatterySaver(TEST_CALLING_UID, TEST_CALLING_PACKAGE)).thenReturn(true); - - final PendingIntent alarmPi = getNewMockPendingIntent(); setTestAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 7, alarmPi); assertEquals(mNowElapsedTest + INDEFINITE_DELAY, mTestTimer.getElapsed()); @@ -1446,64 +1446,61 @@ public class AlarmManagerServiceTest { @Test public void allowWhileIdleAlarmsInBatterySaver() throws Exception { + final ArgumentCaptor listenerArgumentCaptor = + ArgumentCaptor.forClass(AppStateTrackerImpl.Listener.class); + verify(mAppStateTracker).addListener(listenerArgumentCaptor.capture()); + final AppStateTrackerImpl.Listener listener = listenerArgumentCaptor.getValue(); + + final long longDelay = 23; + final long shortDelay = 7; + setDeviceConfigLong(KEY_ALLOW_WHILE_IDLE_LONG_TIME, longDelay); + setDeviceConfigLong(KEY_ALLOW_WHILE_IDLE_SHORT_TIME, shortDelay); + when(mAppStateTracker.areAlarmsRestrictedByBatterySaver(TEST_CALLING_UID, TEST_CALLING_PACKAGE)).thenReturn(true); - when(mAppStateTracker.isForceAllAppsStandbyEnabled()).thenReturn(true); - - final int quota = mService.mConstants.ALLOW_WHILE_IDLE_QUOTA; - long firstTrigger = mNowElapsedTest + 10; - for (int i = 0; i < quota; i++) { - setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + i, - getNewMockPendingIntent(), false); - mNowElapsedTest = mTestTimer.getElapsed(); - mTestTimer.expire(); - } - // This one should get deferred on set. - setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + quota, + setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 1, getNewMockPendingIntent(), false); - long expectedNextTrigger = firstTrigger + ALLOW_WHILE_IDLE_WINDOW; - assertEquals("Incorrect trigger when no quota available", expectedNextTrigger, - mTestTimer.getElapsed()); - - // Refresh the state - mService.removeLocked(TEST_CALLING_UID); - mService.mAllowWhileIdleHistory.removeForPackage(TEST_CALLING_PACKAGE, TEST_CALLING_USER); - - firstTrigger = mNowElapsedTest + 10; - for (int i = 0; i < quota; i++) { - setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + i, - getNewMockPendingIntent(), false); - } - // This one should get deferred after the latest alarm expires. - setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + quota, + setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 2, getNewMockPendingIntent(), false); - for (int i = 0; i < quota; i++) { - mNowElapsedTest = mTestTimer.getElapsed(); - mTestTimer.expire(); - } - expectedNextTrigger = firstTrigger + ALLOW_WHILE_IDLE_WINDOW; - assertEquals("Incorrect trigger when no quota available", expectedNextTrigger, - mTestTimer.getElapsed()); - // Refresh the state - mService.removeLocked(TEST_CALLING_UID); - mService.mAllowWhileIdleHistory.removeForPackage(TEST_CALLING_PACKAGE, TEST_CALLING_USER); + assertEquals(mNowElapsedTest + 1, mTestTimer.getElapsed()); - firstTrigger = mNowElapsedTest + 10; - for (int i = 0; i < quota; i++) { - setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + i, - getNewMockPendingIntent(), false); - } - // This delivery time maintains the quota invariant. Should not be deferred. - expectedNextTrigger = firstTrigger + ALLOW_WHILE_IDLE_WINDOW + 5; - setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, expectedNextTrigger, + mNowElapsedTest += 1; + mTestTimer.expire(); + + assertEquals(mNowElapsedTest + longDelay, mTestTimer.getElapsed()); + listener.onUidForeground(TEST_CALLING_UID, true); + // The next alarm should be deferred by shortDelay. + assertEquals(mNowElapsedTest + shortDelay, mTestTimer.getElapsed()); + + mNowElapsedTest = mTestTimer.getElapsed(); + setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 1, getNewMockPendingIntent(), false); - for (int i = 0; i < quota; i++) { - mNowElapsedTest = mTestTimer.getElapsed(); - mTestTimer.expire(); - } - assertEquals("Incorrect trigger when no quota available", expectedNextTrigger, - mTestTimer.getElapsed()); + + when(mAppStateTracker.isUidInForeground(TEST_CALLING_UID)).thenReturn(true); + mTestTimer.expire(); + // The next alarm should be deferred by shortDelay again. + assertEquals(mNowElapsedTest + shortDelay, mTestTimer.getElapsed()); + + mNowElapsedTest = mTestTimer.getElapsed(); + setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 1, + getNewMockPendingIntent(), true); + when(mAppStateTracker.isUidInForeground(TEST_CALLING_UID)).thenReturn(false); + mTestTimer.expire(); + final long lastAwiDispatch = mNowElapsedTest; + // Unrestricted, so should not be changed. + assertEquals(mNowElapsedTest + 1, mTestTimer.getElapsed()); + + mNowElapsedTest = mTestTimer.getElapsed(); + // AWI_unrestricted should not affect normal AWI bookkeeping. + // The next alarm is after the short delay but before the long delay. + setAllowWhileIdleAlarm(ELAPSED_REALTIME_WAKEUP, lastAwiDispatch + shortDelay + 1, + getNewMockPendingIntent(), false); + mTestTimer.expire(); + assertEquals(lastAwiDispatch + longDelay, mTestTimer.getElapsed()); + + listener.onUidForeground(TEST_CALLING_UID, true); + assertEquals(lastAwiDispatch + shortDelay + 1, mTestTimer.getElapsed()); } @Test From 918a223e34cfbf90ff8962a26ed13216ac77b2de Mon Sep 17 00:00:00 2001 From: Matt Pietal Date: Fri, 29 Jan 2021 17:28:49 +0000 Subject: [PATCH 078/192] Revert "Bouncer - New PIN animations" This reverts commit 5a1c26ea2996ba383af99d90fcf3c241d6be816b. Reason for revert: b/178412096 Bug: 178412096 Change-Id: Ifc1626f2d4948e5956f8cf3c9b1411787ae01a98 (cherry picked from commit 6b587715388a27e2313a9ff92f6460aec8e3a396) --- .../drawable/ic_keyboard_tab_36dp.xml | 15 +-- .../drawable/num_pad_key_background.xml | 23 ----- .../res-keyguard/drawable/pin_divider.xml | 20 ++++ .../drawable/ripple_drawable_pin.xml | 20 ++++ .../layout/keyguard_num_pad_key.xml | 5 +- .../res-keyguard/layout/keyguard_pin_view.xml | 51 ++++++---- .../layout/keyguard_sim_pin_view.xml | 44 +++++---- .../layout/keyguard_sim_puk_view.xml | 43 +++++---- .../SystemUI/res-keyguard/values/attrs.xml | 2 - .../SystemUI/res-keyguard/values/dimens.xml | 6 -- .../SystemUI/res-keyguard/values/styles.xml | 23 ++--- packages/SystemUI/res/values/styles.xml | 1 - .../keyguard/KeyguardPinBasedInputView.java | 15 ++- .../com/android/keyguard/NumPadAnimator.java | 96 ------------------- .../com/android/keyguard/NumPadButton.java | 67 ------------- .../src/com/android/keyguard/NumPadKey.java | 42 +++----- 16 files changed, 164 insertions(+), 309 deletions(-) delete mode 100644 packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml create mode 100644 packages/SystemUI/res-keyguard/drawable/pin_divider.xml create mode 100644 packages/SystemUI/res-keyguard/drawable/ripple_drawable_pin.xml delete mode 100644 packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java delete mode 100644 packages/SystemUI/src/com/android/keyguard/NumPadButton.java diff --git a/packages/SystemUI/res-keyguard/drawable/ic_keyboard_tab_36dp.xml b/packages/SystemUI/res-keyguard/drawable/ic_keyboard_tab_36dp.xml index b844515f10882..21c9051157d1e 100644 --- a/packages/SystemUI/res-keyguard/drawable/ic_keyboard_tab_36dp.xml +++ b/packages/SystemUI/res-keyguard/drawable/ic_keyboard_tab_36dp.xml @@ -13,13 +13,8 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License --> - - - + + + + \ No newline at end of file diff --git a/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml b/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml deleted file mode 100644 index b7a9fafd0c44c..0000000000000 --- a/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/packages/SystemUI/res-keyguard/drawable/pin_divider.xml b/packages/SystemUI/res-keyguard/drawable/pin_divider.xml new file mode 100644 index 0000000000000..39104b575ecd9 --- /dev/null +++ b/packages/SystemUI/res-keyguard/drawable/pin_divider.xml @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/packages/SystemUI/res-keyguard/drawable/ripple_drawable_pin.xml b/packages/SystemUI/res-keyguard/drawable/ripple_drawable_pin.xml new file mode 100644 index 0000000000000..51c442abf2fd3 --- /dev/null +++ b/packages/SystemUI/res-keyguard/drawable/ripple_drawable_pin.xml @@ -0,0 +1,20 @@ + + + + diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_num_pad_key.xml b/packages/SystemUI/res-keyguard/layout/keyguard_num_pad_key.xml index 411fea5dd22de..72591d4665c9e 100644 --- a/packages/SystemUI/res-keyguard/layout/keyguard_num_pad_key.xml +++ b/packages/SystemUI/res-keyguard/layout/keyguard_num_pad_key.xml @@ -17,18 +17,15 @@ - diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_pin_view.xml b/packages/SystemUI/res-keyguard/layout/keyguard_pin_view.xml index aa14645a6093b..87c98d2e9597f 100644 --- a/packages/SystemUI/res-keyguard/layout/keyguard_pin_view.xml +++ b/packages/SystemUI/res-keyguard/layout/keyguard_pin_view.xml @@ -24,6 +24,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_max_height" android:orientation="vertical" > - - + + - - diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_sim_pin_view.xml b/packages/SystemUI/res-keyguard/layout/keyguard_sim_pin_view.xml index 64ccefd2e4eea..912d7bbf7ef50 100644 --- a/packages/SystemUI/res-keyguard/layout/keyguard_sim_pin_view.xml +++ b/packages/SystemUI/res-keyguard/layout/keyguard_sim_pin_view.xml @@ -25,14 +25,9 @@ android:layout_width="match_parent" android:layout_height="match_parent" androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_max_height" android:gravity="center_horizontal"> - - + - - diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_sim_puk_view.xml b/packages/SystemUI/res-keyguard/layout/keyguard_sim_puk_view.xml index dc77bd356e556..81b49648ab628 100644 --- a/packages/SystemUI/res-keyguard/layout/keyguard_sim_puk_view.xml +++ b/packages/SystemUI/res-keyguard/layout/keyguard_sim_puk_view.xml @@ -26,14 +26,9 @@ android:layout_width="match_parent" android:layout_height="match_parent" androidprv:layout_maxWidth="@dimen/keyguard_security_width" + androidprv:layout_maxHeight="@dimen/keyguard_security_max_height" android:gravity="center_horizontal"> - - + - - diff --git a/packages/SystemUI/res-keyguard/values/attrs.xml b/packages/SystemUI/res-keyguard/values/attrs.xml index eb7a1f73fbc92..bfcc56cdc660d 100644 --- a/packages/SystemUI/res-keyguard/values/attrs.xml +++ b/packages/SystemUI/res-keyguard/values/attrs.xml @@ -40,8 +40,6 @@ - - diff --git a/packages/SystemUI/res-keyguard/values/dimens.xml b/packages/SystemUI/res-keyguard/values/dimens.xml index aa87107f954f5..f9389ce24d96c 100644 --- a/packages/SystemUI/res-keyguard/values/dimens.xml +++ b/packages/SystemUI/res-keyguard/values/dimens.xml @@ -33,9 +33,6 @@ (includes 2x keyguard_security_view_top_margin) --> 450dp - - 80dp - 8dp 36dp @@ -84,7 +81,4 @@ -32dp - - - 2dp diff --git a/packages/SystemUI/res-keyguard/values/styles.xml b/packages/SystemUI/res-keyguard/values/styles.xml index 2e99dea6e18b8..71a1cc292ec90 100644 --- a/packages/SystemUI/res-keyguard/values/styles.xml +++ b/packages/SystemUI/res-keyguard/values/styles.xml @@ -30,13 +30,7 @@ 12dp 12dp - - - - - - From 60e0b4af9a5a5b0242b8c7df25a15cbf409ddb7e Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 29 Mar 2021 18:52:29 -0600 Subject: [PATCH 140/192] Temporary stop-gap for Chrome target SDK issue. The Chrome team was planning to provide a new prebuilt SDK last week which returned to targeting the official R SDK level, but other challenges prevented them from doing so. They still intend to land an updated prebuilt which targets R, but to unblock testing this change makes that change on their behalf; when we see a very specific Chrome version code we force the target SDK back to R. This code will safely become a no-op during their next prebuilt, which should have a different version code. Bug: 183905675 Test: manual Change-Id: I42d00d33f49ee708148233d608164459a9ca5929 (cherry picked from commit 8f5096b6d64b242f3e17d74e1292e7a5849afc70) --- .../android/content/pm/parsing/ParsingPackageUtils.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java index a1ffc0ca53784..36eb1089116fd 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java +++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java @@ -2800,6 +2800,12 @@ public class ParsingPackageUtils { } private void convertSplitPermissions(ParsingPackage pkg) { + // STOPSHIP(b/183905675): REMOVE THIS TERRIBLE, HORRIBLE, NO GOOD, VERY BAD HACK + if ("com.android.chrome".equals(pkg.getPackageName()) + && (445500383 == pkg.getVersionCode() || 438500084 == pkg.getVersionCode())) { + pkg.setTargetSdkVersion(Build.VERSION_CODES.R); + } + final int listSize = mSplitPermissionInfos.size(); for (int is = 0; is < listSize; is++) { final PermissionManager.SplitPermissionInfo spi = mSplitPermissionInfos.get(is); From 9e64a3c670bd99d65010191a2e49ad3e0dee0d2e Mon Sep 17 00:00:00 2001 From: Edgar Wang Date: Wed, 14 Apr 2021 16:10:10 +0800 Subject: [PATCH 141/192] Rename SettingsPreferenceTheme to PreferenceTheme.SettingsBase Bug: 185206291 Test: rebuild Change-Id: I89862583caec3db43716b55c8bc43c3f6580c919 (cherry picked from commit e0c507d5a8a7baa45160471b53dc96a240d24017) --- .../SettingsTheme/res/values/styles_preference.xml | 4 ++-- packages/SettingsLib/SettingsTheme/res/values/themes.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/SettingsLib/SettingsTheme/res/values/styles_preference.xml b/packages/SettingsLib/SettingsTheme/res/values/styles_preference.xml index dcbdc07d1335b..cec8b3294418b 100644 --- a/packages/SettingsLib/SettingsTheme/res/values/styles_preference.xml +++ b/packages/SettingsLib/SettingsTheme/res/values/styles_preference.xml @@ -15,7 +15,7 @@ limitations under the License. --> - + - From cee57881d3efd7fb5d59961e7f31807a9342951d Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Fri, 16 Apr 2021 19:16:57 +0000 Subject: [PATCH 142/192] Revert "Make sure activity is started in requested windowing mode" Revert "Stop using ATM#setTaskWindowingMode in CTS" Revert submission 14124672-migrate-ss-set-mode Reason for revert: b/185192439 Reverted Changes: I8f3b19b77:Stop using ATM#setTaskWindowingMode in CTS I43884c329:Make sure activity is started in requested windowi... Bug: 177190100 Bug: 185192439 Change-Id: I207f135a583f113b849afa28d61096e5385ce514 (cherry picked from commit 6455842a72ff7d23ef0b62f65563bc3eed1096fa) --- .../core/java/com/android/server/wm/ActivityStarter.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 1158a9c70158e..54a929191eacc 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -2633,12 +2633,6 @@ class ActivityStarter { mOptions = null; } } - - if (mPreferredWindowingMode != WINDOWING_MODE_UNDEFINED - && intentTask.getWindowingMode() != mPreferredWindowingMode) { - intentTask.setWindowingMode(mPreferredWindowingMode); - } - // Need to update mTargetRootTask because if task was moved out of it, the original root // task may be destroyed. mTargetRootTask = intentActivity.getRootTask(); From 6e9514f8e51e7ecefaee68097b6f47294950e84c Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Mon, 19 Apr 2021 18:39:17 +0000 Subject: [PATCH 143/192] Revert "Add icon for "Extra dim" used in accessibility shortcut" This reverts commit e9f44933ac3558b39eb2e7f88bee579ba8c03a7a. Reason for revert: Bug: 185737105 Change-Id: I7978fb859451a47182bf7a2147a50254731bfc2d (cherry picked from commit 56a7a55e651dbae3b370888063b325478e0f42b4) --- .../dialog/AccessibilityTargetHelper.java | 3 +- .../ic_accessibility_reduce_bright_colors.xml | 63 ------------------- core/res/res/values/colors.xml | 3 +- core/res/res/values/dimens.xml | 6 -- core/res/res/values/symbols.xml | 1 - 5 files changed, 3 insertions(+), 73 deletions(-) delete mode 100644 core/res/res/drawable/ic_accessibility_reduce_bright_colors.xml diff --git a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java index 0854955a92d5b..9d06bb92b2056 100644 --- a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java +++ b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java @@ -230,6 +230,7 @@ public final class AccessibilityTargetHelper { context.getDrawable(R.drawable.ic_accessibility_color_inversion), Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED); + // TODO: Update with shortcut icon final ToggleAllowListingFeatureTarget reduceBrightColors = new ToggleAllowListingFeatureTarget(context, shortcutType, @@ -237,7 +238,7 @@ public final class AccessibilityTargetHelper { REDUCE_BRIGHT_COLORS_COMPONENT_NAME.flattenToString()), REDUCE_BRIGHT_COLORS_COMPONENT_NAME.flattenToString(), context.getString(R.string.reduce_bright_colors_feature_name), - context.getDrawable(R.drawable.ic_accessibility_reduce_bright_colors), + null, Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED); targets.add(magnification); diff --git a/core/res/res/drawable/ic_accessibility_reduce_bright_colors.xml b/core/res/res/drawable/ic_accessibility_reduce_bright_colors.xml deleted file mode 100644 index 1e840d26ca133..0000000000000 --- a/core/res/res/drawable/ic_accessibility_reduce_bright_colors.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml index 3ad20c6031157..0213c60e9f60c 100644 --- a/core/res/res/values/colors.xml +++ b/core/res/res/values/colors.xml @@ -231,8 +231,7 @@ @color/loading_gradient_background_color_light @color/loading_gradient_highlight_color_light - #5F6368 - #3C4043 + #ff3C4043 #ffC4C6C6 diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 062b0809c2478..0e436e36b4742 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -570,12 +570,6 @@ 4dp - - 32dp - - - 18dp - 8dp diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 60383be30dbdb..5715fabd3f245 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3389,7 +3389,6 @@ - From dd71c30eb5dde848703d926d39f0fac1297ca939 Mon Sep 17 00:00:00 2001 From: Evan Severson Date: Tue, 20 Apr 2021 09:04:31 -0700 Subject: [PATCH 144/192] Fix typo in sensor privacy init Should be getting the value at index i, not using int i as a key. Also when iterating over the state we should be holding the lock. Test: Push sensor_privacy.xml file and reboot Fixes: 185881144 Change-Id: I09823d888b05b674b32254d39ab030ce0e6c2acf (cherry picked from commit 30a3a67dad3ae348c47f33976d36bdd28e322efe) --- .../android/server/SensorPrivacyService.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/services/core/java/com/android/server/SensorPrivacyService.java b/services/core/java/com/android/server/SensorPrivacyService.java index 3ba4c34fb1a7b..e8bc812e5ea88 100644 --- a/services/core/java/com/android/server/SensorPrivacyService.java +++ b/services/core/java/com/android/server/SensorPrivacyService.java @@ -197,16 +197,16 @@ public final class SensorPrivacyService extends SystemService { if (readPersistedSensorPrivacyStateLocked()) { persistSensorPrivacyStateLocked(); } - } - for (int i = 0; i < mIndividualEnabled.size(); i++) { - int userId = mIndividualEnabled.keyAt(i); - SparseBooleanArray userIndividualEnabled = - mIndividualEnabled.get(i); - for (int j = 0; j < userIndividualEnabled.size(); j++) { - int sensor = userIndividualEnabled.keyAt(i); - boolean enabled = userIndividualEnabled.valueAt(j); - setUserRestriction(userId, sensor, enabled); + for (int i = 0; i < mIndividualEnabled.size(); i++) { + int userId = mIndividualEnabled.keyAt(i); + SparseBooleanArray userIndividualEnabled = + mIndividualEnabled.valueAt(i); + for (int j = 0; j < userIndividualEnabled.size(); j++) { + int sensor = userIndividualEnabled.keyAt(i); + boolean enabled = userIndividualEnabled.valueAt(j); + setUserRestriction(userId, sensor, enabled); + } } } From 87d5d59690c275d4108658f68d3888f1b3051af7 Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Wed, 28 Apr 2021 22:32:20 +0000 Subject: [PATCH 145/192] Revert "Support FLAG_ACTIVITY_LAUNCH_ADJACENT for launch root with adjacent" This reverts commit d8abe76ba18e9baf6dcef68a65a03b6651c7e5ef. Reason for revert: Bug: 186614428 Change-Id: Id7d1f57a11f0698f9377b00008994f9a6c3038d3 (cherry picked from commit 48f90b317b9845ee241b0175cd73a7f55d5b1dd9) --- .../window/WindowContainerTransaction.java | 39 --------- .../shell/splitscreen/StageCoordinator.java | 3 - .../android/server/wm/ActivityStarter.java | 4 +- .../server/wm/RootWindowContainer.java | 24 +++-- .../core/java/com/android/server/wm/Task.java | 28 +----- .../android/server/wm/TaskDisplayArea.java | 87 ++++--------------- .../server/wm/TaskLaunchParamsModifier.java | 3 +- .../server/wm/WindowOrganizerController.java | 21 ----- .../server/wm/ActivityStarterTests.java | 8 +- .../server/wm/RootWindowContainerTests.java | 3 +- .../server/wm/TaskDisplayAreaTests.java | 60 ++----------- 11 files changed, 40 insertions(+), 240 deletions(-) diff --git a/core/java/android/window/WindowContainerTransaction.java b/core/java/android/window/WindowContainerTransaction.java index c0af57214e5e5..f93e413961529 100644 --- a/core/java/android/window/WindowContainerTransaction.java +++ b/core/java/android/window/WindowContainerTransaction.java @@ -338,33 +338,6 @@ public final class WindowContainerTransaction implements Parcelable { return this; } - /** - * Sets the container as launch adjacent flag root. Task starting with - * {@link FLAG_ACTIVITY_LAUNCH_ADJACENT} will be launching to. - * - * @hide - */ - @NonNull - public WindowContainerTransaction setLaunchAdjacentFlagRoot( - @NonNull WindowContainerToken container) { - mHierarchyOps.add(HierarchyOp.createForSetLaunchAdjacentFlagRoot(container.asBinder(), - false /* clearRoot */)); - return this; - } - - /** - * Clears launch adjacent flag root for the display area of passing container. - * - * @hide - */ - @NonNull - public WindowContainerTransaction clearLaunchAdjacentFlagRoot( - @NonNull WindowContainerToken container) { - mHierarchyOps.add(HierarchyOp.createForSetLaunchAdjacentFlagRoot(container.asBinder(), - true /* clearRoot */)); - return this; - } - /** * Starts a task by id. The task is expected to already exist (eg. as a recent task). * @param taskId Id of task to start. @@ -704,7 +677,6 @@ public final class WindowContainerTransaction implements Parcelable { public static final int HIERARCHY_OP_TYPE_SET_LAUNCH_ROOT = 3; public static final int HIERARCHY_OP_TYPE_SET_ADJACENT_ROOTS = 4; public static final int HIERARCHY_OP_TYPE_LAUNCH_TASK = 5; - public static final int HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT = 6; // The following key(s) are for use with mLaunchOptions: // When launching a task (eg. from recents), this is the taskId to be launched. @@ -762,14 +734,6 @@ public final class WindowContainerTransaction implements Parcelable { fullOptions); } - /** Create a hierarchy op for setting launch adjacent flag root. */ - public static HierarchyOp createForSetLaunchAdjacentFlagRoot(IBinder container, - boolean clearRoot) { - return new HierarchyOp(HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT, container, null, - null, null, clearRoot, null); - } - - private HierarchyOp(int type, @Nullable IBinder container, @Nullable IBinder reparent, int[] windowingModes, int[] activityTypes, boolean toTop, @Nullable Bundle launchOptions) { @@ -865,9 +829,6 @@ public final class WindowContainerTransaction implements Parcelable { + " adjacentRoot=" + mReparent + "}"; case HIERARCHY_OP_TYPE_LAUNCH_TASK: return "{LaunchTask: " + mLaunchOptions + "}"; - case HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT: - return "{SetAdjacentFlagRoot: container=" + mContainer + " clearRoot=" + mToTop - + "}"; default: return "{mType=" + mType + " container=" + mContainer + " reparent=" + mReparent + " mToTop=" + mToTop + " mWindowingMode=" + mWindowingModes diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index efaa2696cbebd..c91a92ad32427 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -337,7 +337,6 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, final WindowContainerTransaction wct = new WindowContainerTransaction(); // Make the stages adjacent to each other so they occlude what's behind them. wct.setAdjacentRoots(mMainStage.mRootTaskInfo.token, mSideStage.mRootTaskInfo.token); - wct.setLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token); mTaskOrganizer.applyTransaction(wct); } } @@ -347,7 +346,6 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, final WindowContainerTransaction wct = new WindowContainerTransaction(); // Deactivate the main stage if it no longer has a root task. mMainStage.deactivate(wct); - wct.clearLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token); mTaskOrganizer.applyTransaction(wct); } } @@ -451,7 +449,6 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, final WindowContainerTransaction wct = new WindowContainerTransaction(); // Make sure the main stage is active. mMainStage.activate(getMainStageBounds(), wct); - mSideStage.setBounds(getSideStageBounds(), wct); mTaskOrganizer.applyTransaction(wct); } } diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 08a9f0928b8b3..9be973be87fc3 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -2761,8 +2761,8 @@ class ActivityStarter { final boolean onTop = (aOptions == null || !aOptions.getAvoidMoveToFront()) && !mLaunchTaskBehind; - return mRootWindowContainer.getLaunchRootTask(r, aOptions, task, mSourceRootTask, onTop, - mLaunchParams, launchFlags, mRequest.realCallingPid, mRequest.realCallingUid); + return mRootWindowContainer.getLaunchRootTask(r, aOptions, task, onTop, mLaunchParams, + mRequest.realCallingPid, mRequest.realCallingUid); } private boolean isLaunchModeOneOf(int mode1, int mode2) { diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index d9c5fa43d9e40..c81f31eb9f77d 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -2810,11 +2810,10 @@ class RootWindowContainer extends WindowContainer return false; } - Task getLaunchRootTask(@Nullable ActivityRecord r, @Nullable ActivityOptions options, - @Nullable Task candidateTask, boolean onTop) { - return getLaunchRootTask(r, options, candidateTask, null /* sourceTask */, onTop, - null /* launchParams */, 0 /* launchFlags */, -1 /* no realCallingPid */, - -1 /* no realCallingUid */); + Task getLaunchRootTask(@Nullable ActivityRecord r, + @Nullable ActivityOptions options, @Nullable Task candidateTask, boolean onTop) { + return getLaunchRootTask(r, options, candidateTask, onTop, null /* launchParams */, + -1 /* no realCallingPid */, -1 /* no realCallingUid */); } /** @@ -2823,18 +2822,15 @@ class RootWindowContainer extends WindowContainer * @param r The activity we are trying to launch. Can be null. * @param options The activity options used to the launch. Can be null. * @param candidateTask The possible task the activity might be launched in. Can be null. - * @param sourceTask The task requesting to start activity. Can be null. * @param launchParams The resolved launch params to use. - * @param launchFlags The launch flags for this launch. * @param realCallingPid The pid from {@link ActivityStarter#setRealCallingPid} * @param realCallingUid The uid from {@link ActivityStarter#setRealCallingUid} * @return The root task to use for the launch or INVALID_TASK_ID. */ Task getLaunchRootTask(@Nullable ActivityRecord r, - @Nullable ActivityOptions options, @Nullable Task candidateTask, - @Nullable Task sourceTask, boolean onTop, - @Nullable LaunchParamsController.LaunchParams launchParams, int launchFlags, - int realCallingPid, int realCallingUid) { + @Nullable ActivityOptions options, @Nullable Task candidateTask, boolean onTop, + @Nullable LaunchParamsController.LaunchParams launchParams, int realCallingPid, + int realCallingUid) { int taskId = INVALID_TASK_ID; int displayId = INVALID_DISPLAY; TaskDisplayArea taskDisplayArea = null; @@ -2898,7 +2894,7 @@ class RootWindowContainer extends WindowContainer // Falling back to default task container taskDisplayArea = taskDisplayArea.mDisplayContent.getDefaultTaskDisplayArea(); rootTask = taskDisplayArea.getOrCreateRootTask(r, options, candidateTask, - sourceTask, launchParams, launchFlags, activityType, onTop); + launchParams, activityType, onTop); if (rootTask != null) { return rootTask; } @@ -2953,8 +2949,8 @@ class RootWindowContainer extends WindowContainer } } - return container.getOrCreateRootTask(r, options, candidateTask, sourceTask, launchParams, - launchFlags, activityType, onTop); + return container.getOrCreateRootTask( + r, options, candidateTask, launchParams, activityType, onTop); } /** @return true if activity record is null or can be launched on provided display. */ diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 2a0041afd9d0d..d4707d6f5f5ae 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -7952,17 +7952,6 @@ class Task extends WindowContainer { private boolean mHasBeenVisible; private boolean mRemoveWithTaskOrganizer; - /** - * Records the source task that requesting to build a new task, used to determine which of - * the adjacent roots should be launch root of the new task. - */ - private Task mSourceTask; - - /** - * Records launch flags to apply when launching new task. - */ - private int mLaunchFlags; - Builder(ActivityTaskManagerService atm) { mAtmService = atm; } @@ -7972,16 +7961,6 @@ class Task extends WindowContainer { return this; } - Builder setSourceTask(Task sourceTask) { - mSourceTask = sourceTask; - return this; - } - - Builder setLaunchFlags(int launchFlags) { - mLaunchFlags = launchFlags; - return this; - } - Builder setTaskId(int taskId) { mTaskId = taskId; return this; @@ -8236,14 +8215,9 @@ class Task extends WindowContainer { tda.getRootPinnedTask().dismissPip(); } - if (mIntent != null) { - mLaunchFlags |= mIntent.getFlags(); - } - // Task created by organizer are added as root. final Task launchRootTask = mCreatedByOrganizer - ? null : tda.getLaunchRootTask(mWindowingMode, mActivityType, mActivityOptions, - mSourceTask, mLaunchFlags); + ? null : tda.getLaunchRootTask(mWindowingMode, mActivityType, mActivityOptions); if (launchRootTask != null) { // Since this task will be put into a root task, its windowingMode will be // inherited. diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index cda8c4b78b0cd..4d85e7bda9000 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -27,7 +27,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; -import static android.content.Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; @@ -44,6 +43,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.annotation.Nullable; import android.app.ActivityOptions; import android.app.WindowConfiguration; +import android.content.Intent; import android.os.UserHandle; import android.util.IntArray; import android.util.Slog; @@ -132,11 +132,6 @@ final class TaskDisplayArea extends DisplayArea { } private final ArrayList mLaunchRootTasks = new ArrayList<>(); - /** - * A launch root task for activity launching with {@link FLAG_ACTIVITY_LAUNCH_ADJACENT} flag. - */ - private Task mLaunchAdjacentFlagRootTask; - /** * A focusable root task that is purposely to be positioned at the top. Although the root * task may not have the topmost index, it is used as a preferred candidate to prevent being @@ -1018,9 +1013,6 @@ final class TaskDisplayArea extends DisplayArea { if (mPreferredTopFocusableRootTask == rootTask) { mPreferredTopFocusableRootTask = null; } - if (mLaunchAdjacentFlagRootTask == rootTask) { - mLaunchAdjacentFlagRootTask = null; - } mDisplayContent.releaseSelfIfNeeded(); onRootTaskOrderChanged(rootTask); } @@ -1055,11 +1047,11 @@ final class TaskDisplayArea extends DisplayArea { * Returns an existing root task compatible with the windowing mode and activity type or * creates one if a compatible root task doesn't exist. * - * @see #getOrCreateRootTask(int, int, boolean, Task, Task, ActivityOptions, int) + * @see #getOrCreateRootTask(int, int, boolean, Intent, Task, ActivityOptions) */ Task getOrCreateRootTask(int windowingMode, int activityType, boolean onTop) { - return getOrCreateRootTask(windowingMode, activityType, onTop, null /* candidateTask */, - null /* sourceTask */, null /* options */, 0 /* intent */); + return getOrCreateRootTask(windowingMode, activityType, onTop, null /* intent */, + null /* candidateTask */, null /* options */); } /** @@ -1068,21 +1060,11 @@ final class TaskDisplayArea extends DisplayArea { * For one level task, the candidate task would be reused to also be the root task or create * a new root task if no candidate task. * - * @param windowingMode The windowing mode the root task should be created in. - * @param activityType The activityType the root task should be created in. - * @param onTop If true the root task will be created at the top of the display, - * else at the bottom. - * @param candidateTask The possible task the activity might be launched in. Can be null. - * @param sourceTask The task requesting to start activity. Used to determine which of the - * adjacent roots should be launch root of the new task. Can be null. - * @param options The activity options used to the launch. Can be null. - * @param launchFlags The launch flags for this launch. - * @return The root task to use for the launch. * @see #getRootTask(int, int) + * @see #createRootTask(int, int, boolean) */ Task getOrCreateRootTask(int windowingMode, int activityType, boolean onTop, - @Nullable Task candidateTask, @Nullable Task sourceTask, - @Nullable ActivityOptions options, int launchFlags) { + Intent intent, Task candidateTask, ActivityOptions options) { // Need to pass in a determined windowing mode to see if a new root task should be created, // so use its parent's windowing mode if it is undefined. if (!alwaysCreateRootTask( @@ -1095,8 +1077,7 @@ final class TaskDisplayArea extends DisplayArea { } else if (candidateTask != null) { final Task rootTask = candidateTask; final int position = onTop ? POSITION_TOP : POSITION_BOTTOM; - final Task launchRootTask = getLaunchRootTask(windowingMode, activityType, options, - sourceTask, launchFlags); + final Task launchRootTask = getLaunchRootTask(windowingMode, activityType, options); if (launchRootTask != null) { if (rootTask.getParent() == null) { @@ -1122,9 +1103,8 @@ final class TaskDisplayArea extends DisplayArea { .setActivityType(activityType) .setOnTop(onTop) .setParent(this) - .setSourceTask(sourceTask) + .setIntent(intent) .setActivityOptions(options) - .setLaunchFlags(launchFlags) .build(); } @@ -1134,9 +1114,9 @@ final class TaskDisplayArea extends DisplayArea { * * @see #getOrCreateRootTask(int, int, boolean) */ - Task getOrCreateRootTask(@Nullable ActivityRecord r, @Nullable ActivityOptions options, - @Nullable Task candidateTask, @Nullable Task sourceTask, - @Nullable LaunchParams launchParams, int launchFlags, int activityType, boolean onTop) { + Task getOrCreateRootTask(@Nullable ActivityRecord r, + @Nullable ActivityOptions options, @Nullable Task candidateTask, + @Nullable LaunchParams launchParams, int activityType, boolean onTop) { int windowingMode = WINDOWING_MODE_UNDEFINED; if (launchParams != null) { // If launchParams isn't null, windowing mode is already resolved. @@ -1150,8 +1130,8 @@ final class TaskDisplayArea extends DisplayArea { // UNDEFINED windowing mode is a valid result and means that the new root task will inherit // it's display's windowing mode. windowingMode = validateWindowingMode(windowingMode, r, candidateTask, activityType); - return getOrCreateRootTask(windowingMode, activityType, onTop, candidateTask, sourceTask, - options, launchFlags); + return getOrCreateRootTask(windowingMode, activityType, onTop, null /* intent */, + candidateTask, options); } @VisibleForTesting @@ -1219,24 +1199,6 @@ final class TaskDisplayArea extends DisplayArea { } } - void setLaunchAdjacentFlagRootTask(@Nullable Task adjacentFlagRootTask) { - if (adjacentFlagRootTask != null) { - if (!adjacentFlagRootTask.mCreatedByOrganizer) { - throw new IllegalArgumentException( - "Can't set not mCreatedByOrganizer as launch adjacent flag root tr=" - + adjacentFlagRootTask); - } - - if (adjacentFlagRootTask.mAdjacentTask == null) { - throw new UnsupportedOperationException( - "Can't set non-adjacent root as launch adjacent flag root tr=" - + adjacentFlagRootTask); - } - } - - mLaunchAdjacentFlagRootTask = adjacentFlagRootTask; - } - private @Nullable LaunchRootTaskDef getLaunchRootTaskDef(Task rootTask) { LaunchRootTaskDef def = null; for (int i = mLaunchRootTasks.size() - 1; i >= 0; --i) { @@ -1247,9 +1209,7 @@ final class TaskDisplayArea extends DisplayArea { return def; } - @Nullable - Task getLaunchRootTask(int windowingMode, int activityType, @Nullable ActivityOptions options, - @Nullable Task sourceTask, int launchFlags) { + Task getLaunchRootTask(int windowingMode, int activityType, ActivityOptions options) { // Try to use the launch root task in options if available. if (options != null) { final Task launchRootTask = Task.fromWindowContainerToken(options.getLaunchRootTask()); @@ -1259,19 +1219,6 @@ final class TaskDisplayArea extends DisplayArea { } } - // Use launch-adjacent-flag-root if launching with launch-adjacent flag. - if ((launchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0 - && mLaunchAdjacentFlagRootTask != null) { - // If the adjacent launch is coming from the same root, launch to adjacent root instead. - if (sourceTask != null - && sourceTask.getRootTask().mTaskId == mLaunchAdjacentFlagRootTask.mTaskId - && mLaunchAdjacentFlagRootTask.mAdjacentTask != null) { - return mLaunchAdjacentFlagRootTask.mAdjacentTask; - } else { - return mLaunchAdjacentFlagRootTask; - } - } - for (int i = mLaunchRootTasks.size() - 1; i >= 0; --i) { if (mLaunchRootTasks.get(i).contains(windowingMode, activityType)) { return mLaunchRootTasks.get(i).task; @@ -2016,11 +1963,7 @@ final class TaskDisplayArea extends DisplayArea { // Reparent task to corresponding launch root or display area. final WindowContainer launchRoot = task.supportsSplitScreenWindowingMode() ? toDisplayArea.getLaunchRootTask( - task.getWindowingMode(), - task.getActivityType(), - null /* options */, - null /* sourceTask */, - 0 /* launchFlags */) + task.getWindowingMode(), task.getActivityType(), null /* options */) : null; task.reparent(launchRoot == null ? toDisplayArea : launchRoot, POSITION_TOP); diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index 29677b22ea816..625cff3409124 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -292,8 +292,7 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { mSupervisor.mRootWindowContainer.resolveActivityType(root, options, task); display.forAllTaskDisplayAreas(displayArea -> { final Task launchRoot = displayArea.getLaunchRootTask( - resolvedMode, activityType, null /* ActivityOptions */, - null /* sourceTask*/, 0 /* launchFlags */); + resolvedMode, activityType, null /* ActivityOptions */); if (launchRoot == null) { return false; } diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index c29211f3bb656..12a6a54764d50 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -22,7 +22,6 @@ import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_REORDER; import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_REPARENT; import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_ADJACENT_ROOTS; -import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT; import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_LAUNCH_ROOT; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_WINDOW_ORGANIZER; @@ -321,26 +320,6 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub } break; } - case HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT: { - final WindowContainer wc = WindowContainer.fromBinder( - hop.getContainer()); - final Task task = wc != null ? wc.asTask() : null; - if (task == null) { - throw new IllegalArgumentException("Cannot set " - + "non-task as launch root: " + wc); - } else if (!task.mCreatedByOrganizer) { - throw new UnsupportedOperationException("Cannot set " - + "non-organized task as adjacent flag root: " + wc); - } else if (task.mAdjacentTask == null) { - throw new UnsupportedOperationException("Cannot set " - + "non-adjacent task as adjacent flag root: " + wc); - } - - final boolean clearRoot = hop.getToTop(); - task.getDisplayArea() - .setLaunchAdjacentFlagRootTask(clearRoot ? null : task); - break; - } case HIERARCHY_OP_TYPE_CHILDREN_TASKS_REPARENT: effects |= reparentChildrenTasksHierarchyOp(hop, transition, syncId); break; diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java index e6ac52d2bf6f0..98260318ea9d7 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java @@ -339,8 +339,8 @@ public class ActivityStarterTests extends WindowTestsBase { // Direct starter to use spy stack. doReturn(stack).when(mRootWindowContainer) .getLaunchRootTask(any(), any(), any(), anyBoolean()); - doReturn(stack).when(mRootWindowContainer).getLaunchRootTask(any(), any(), any(), any(), - anyBoolean(), any(), anyInt(), anyInt(), anyInt()); + doReturn(stack).when(mRootWindowContainer).getLaunchRootTask(any(), any(), any(), + anyBoolean(), any(), anyInt(), anyInt()); } // Set up mock package manager internal and make sure no unmocked methods are called @@ -1119,8 +1119,8 @@ public class ActivityStarterTests extends WindowTestsBase { stack.addChild(targetRecord); - doReturn(stack).when(mRootWindowContainer).getLaunchRootTask(any(), any(), any(), any(), - anyBoolean(), any(), anyInt(), anyInt(), anyInt()); + doReturn(stack).when(mRootWindowContainer) + .getLaunchRootTask(any(), any(), any(), anyBoolean(), any(), anyInt(), anyInt()); starter.mStartActivity = new ActivityBuilder(mAtm).build(); diff --git a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java index 4f5511b55d3a0..0bf237dc6545c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java @@ -980,8 +980,7 @@ public class RootWindowContainerTests extends WindowTestsBase { doReturn(true).when(mSupervisor).canPlaceEntityOnDisplay(secondaryDisplay.mDisplayId, 300 /* test realCallerPid */, 300 /* test realCallerUid */, r.info); final Task result = mRootWindowContainer.getLaunchRootTask(r, options, - null /* task */, null /* sourceTask */, true /* onTop */, null /* launchParams */, - 0 /* launchFlags */, 300 /* test realCallerPid */, + null /* task */, true /* onTop */, null, 300 /* test realCallerPid */, 300 /* test realCallerUid */); // Assert that the root task is returned as expected. diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java index 9289ce41cd1e4..92d4edec85f49 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java @@ -28,7 +28,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; -import static android.content.Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT; import static android.content.pm.ActivityInfo.FLAG_ALWAYS_FOCUSABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; @@ -75,52 +74,6 @@ import org.junit.runner.RunWith; @RunWith(WindowTestRunner.class) public class TaskDisplayAreaTests extends WindowTestsBase { - @Test - public void getLaunchRootTask_checksLaunchAdjacentFlagRoot() { - final Task rootTask = createTask( - mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD); - rootTask.mCreatedByOrganizer = true; - final Task adjacentRootTask = createTask( - mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD); - adjacentRootTask.mCreatedByOrganizer = true; - final TaskDisplayArea taskDisplayArea = rootTask.getDisplayArea(); - adjacentRootTask.mAdjacentTask = rootTask; - rootTask.mAdjacentTask = adjacentRootTask; - - taskDisplayArea.setLaunchAdjacentFlagRootTask(adjacentRootTask); - Task actualRootTask = taskDisplayArea.getLaunchRootTask( - WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD, null /* options */, - null /* sourceTask */, FLAG_ACTIVITY_LAUNCH_ADJACENT); - assertSame(adjacentRootTask, actualRootTask.getRootTask()); - - taskDisplayArea.setLaunchAdjacentFlagRootTask(null); - actualRootTask = taskDisplayArea.getLaunchRootTask(WINDOWING_MODE_UNDEFINED, - ACTIVITY_TYPE_STANDARD, null /* options */, null /* sourceTask */, - FLAG_ACTIVITY_LAUNCH_ADJACENT); - assertNull(actualRootTask); - } - - @Test - public void getLaunchRootTask_fromLaunchAdjacentFlagRoot_checksAdjacentRoot() { - final ActivityRecord activity = createNonAttachedActivityRecord(mDisplayContent); - final Task rootTask = createTask( - mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD); - rootTask.mCreatedByOrganizer = true; - final Task adjacentRootTask = createTask( - mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD); - adjacentRootTask.mCreatedByOrganizer = true; - final TaskDisplayArea taskDisplayArea = rootTask.getDisplayArea(); - adjacentRootTask.mAdjacentTask = rootTask; - rootTask.mAdjacentTask = adjacentRootTask; - - taskDisplayArea.setLaunchAdjacentFlagRootTask(adjacentRootTask); - final Task actualRootTask = taskDisplayArea.getLaunchRootTask( - WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD, null /* options */, - adjacentRootTask /* sourceTask */, FLAG_ACTIVITY_LAUNCH_ADJACENT); - - assertSame(rootTask, actualRootTask.getRootTask()); - } - @Test public void getOrCreateLaunchRootRespectsResolvedWindowingMode() { final Task rootTask = createTask( @@ -137,8 +90,8 @@ public class TaskDisplayAreaTests extends WindowTestsBase { launchParams.mWindowingMode = WINDOWING_MODE_FREEFORM; final Task actualRootTask = taskDisplayArea.getOrCreateRootTask( - activity, null /* options */, candidateRootTask, null /* sourceTask */, - launchParams, 0 /* launchFlags */, ACTIVITY_TYPE_STANDARD, true /* onTop */); + activity, null /* options */, candidateRootTask, + launchParams, ACTIVITY_TYPE_STANDARD, true /* onTop */); assertSame(rootTask, actualRootTask.getRootTask()); } @@ -158,9 +111,8 @@ public class TaskDisplayAreaTests extends WindowTestsBase { options.setLaunchWindowingMode(WINDOWING_MODE_FREEFORM); final Task actualRootTask = taskDisplayArea.getOrCreateRootTask( - activity, options, candidateRootTask, null /* sourceTask */, - null /* launchParams */, 0 /* launchFlags */, ACTIVITY_TYPE_STANDARD, - true /* onTop */); + activity, options, candidateRootTask, + null /* launchParams */, ACTIVITY_TYPE_STANDARD, true /* onTop */); assertSame(rootTask, actualRootTask.getRootTask()); } @@ -506,8 +458,8 @@ public class TaskDisplayAreaTests extends WindowTestsBase { boolean reuseCandidate) { final TaskDisplayArea taskDisplayArea = candidateTask.getDisplayArea(); final Task rootTask = taskDisplayArea.getOrCreateRootTask(windowingMode, activityType, - false /* onTop */, candidateTask /* candidateTask */, null /* sourceTask */, - null /* activityOptions */, 0 /* launchFlags */); + false /* onTop */, null /* intent */, candidateTask /* candidateTask */, + null /* activityOptions */); assertEquals(reuseCandidate, rootTask == candidateTask); } From a38ef5ea1a736c6e77883575e06fdd637c6f842e Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Wed, 28 Apr 2021 22:32:20 +0000 Subject: [PATCH 146/192] Revert "Support FLAG_ACTIVITY_LAUNCH_ADJACENT for launch root with adjacent" This reverts commit d8abe76ba18e9baf6dcef68a65a03b6651c7e5ef. Reason for revert: Bug: 186614428 Change-Id: Id7d1f57a11f0698f9377b00008994f9a6c3038d3 (cherry picked from commit 48f90b317b9845ee241b0175cd73a7f55d5b1dd9) --- .../window/WindowContainerTransaction.java | 39 --------- .../shell/splitscreen/StageCoordinator.java | 3 - .../android/server/wm/ActivityStarter.java | 4 +- .../server/wm/RootWindowContainer.java | 24 +++-- .../core/java/com/android/server/wm/Task.java | 28 +----- .../android/server/wm/TaskDisplayArea.java | 87 ++++--------------- .../server/wm/TaskLaunchParamsModifier.java | 3 +- .../server/wm/WindowOrganizerController.java | 21 ----- .../server/wm/ActivityStarterTests.java | 8 +- .../server/wm/RootWindowContainerTests.java | 3 +- .../server/wm/TaskDisplayAreaTests.java | 60 ++----------- 11 files changed, 40 insertions(+), 240 deletions(-) diff --git a/core/java/android/window/WindowContainerTransaction.java b/core/java/android/window/WindowContainerTransaction.java index c0af57214e5e5..f93e413961529 100644 --- a/core/java/android/window/WindowContainerTransaction.java +++ b/core/java/android/window/WindowContainerTransaction.java @@ -338,33 +338,6 @@ public final class WindowContainerTransaction implements Parcelable { return this; } - /** - * Sets the container as launch adjacent flag root. Task starting with - * {@link FLAG_ACTIVITY_LAUNCH_ADJACENT} will be launching to. - * - * @hide - */ - @NonNull - public WindowContainerTransaction setLaunchAdjacentFlagRoot( - @NonNull WindowContainerToken container) { - mHierarchyOps.add(HierarchyOp.createForSetLaunchAdjacentFlagRoot(container.asBinder(), - false /* clearRoot */)); - return this; - } - - /** - * Clears launch adjacent flag root for the display area of passing container. - * - * @hide - */ - @NonNull - public WindowContainerTransaction clearLaunchAdjacentFlagRoot( - @NonNull WindowContainerToken container) { - mHierarchyOps.add(HierarchyOp.createForSetLaunchAdjacentFlagRoot(container.asBinder(), - true /* clearRoot */)); - return this; - } - /** * Starts a task by id. The task is expected to already exist (eg. as a recent task). * @param taskId Id of task to start. @@ -704,7 +677,6 @@ public final class WindowContainerTransaction implements Parcelable { public static final int HIERARCHY_OP_TYPE_SET_LAUNCH_ROOT = 3; public static final int HIERARCHY_OP_TYPE_SET_ADJACENT_ROOTS = 4; public static final int HIERARCHY_OP_TYPE_LAUNCH_TASK = 5; - public static final int HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT = 6; // The following key(s) are for use with mLaunchOptions: // When launching a task (eg. from recents), this is the taskId to be launched. @@ -762,14 +734,6 @@ public final class WindowContainerTransaction implements Parcelable { fullOptions); } - /** Create a hierarchy op for setting launch adjacent flag root. */ - public static HierarchyOp createForSetLaunchAdjacentFlagRoot(IBinder container, - boolean clearRoot) { - return new HierarchyOp(HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT, container, null, - null, null, clearRoot, null); - } - - private HierarchyOp(int type, @Nullable IBinder container, @Nullable IBinder reparent, int[] windowingModes, int[] activityTypes, boolean toTop, @Nullable Bundle launchOptions) { @@ -865,9 +829,6 @@ public final class WindowContainerTransaction implements Parcelable { + " adjacentRoot=" + mReparent + "}"; case HIERARCHY_OP_TYPE_LAUNCH_TASK: return "{LaunchTask: " + mLaunchOptions + "}"; - case HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT: - return "{SetAdjacentFlagRoot: container=" + mContainer + " clearRoot=" + mToTop - + "}"; default: return "{mType=" + mType + " container=" + mContainer + " reparent=" + mReparent + " mToTop=" + mToTop + " mWindowingMode=" + mWindowingModes diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index efaa2696cbebd..c91a92ad32427 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -337,7 +337,6 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, final WindowContainerTransaction wct = new WindowContainerTransaction(); // Make the stages adjacent to each other so they occlude what's behind them. wct.setAdjacentRoots(mMainStage.mRootTaskInfo.token, mSideStage.mRootTaskInfo.token); - wct.setLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token); mTaskOrganizer.applyTransaction(wct); } } @@ -347,7 +346,6 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, final WindowContainerTransaction wct = new WindowContainerTransaction(); // Deactivate the main stage if it no longer has a root task. mMainStage.deactivate(wct); - wct.clearLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token); mTaskOrganizer.applyTransaction(wct); } } @@ -451,7 +449,6 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, final WindowContainerTransaction wct = new WindowContainerTransaction(); // Make sure the main stage is active. mMainStage.activate(getMainStageBounds(), wct); - mSideStage.setBounds(getSideStageBounds(), wct); mTaskOrganizer.applyTransaction(wct); } } diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 08a9f0928b8b3..9be973be87fc3 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -2761,8 +2761,8 @@ class ActivityStarter { final boolean onTop = (aOptions == null || !aOptions.getAvoidMoveToFront()) && !mLaunchTaskBehind; - return mRootWindowContainer.getLaunchRootTask(r, aOptions, task, mSourceRootTask, onTop, - mLaunchParams, launchFlags, mRequest.realCallingPid, mRequest.realCallingUid); + return mRootWindowContainer.getLaunchRootTask(r, aOptions, task, onTop, mLaunchParams, + mRequest.realCallingPid, mRequest.realCallingUid); } private boolean isLaunchModeOneOf(int mode1, int mode2) { diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index d9c5fa43d9e40..c81f31eb9f77d 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -2810,11 +2810,10 @@ class RootWindowContainer extends WindowContainer return false; } - Task getLaunchRootTask(@Nullable ActivityRecord r, @Nullable ActivityOptions options, - @Nullable Task candidateTask, boolean onTop) { - return getLaunchRootTask(r, options, candidateTask, null /* sourceTask */, onTop, - null /* launchParams */, 0 /* launchFlags */, -1 /* no realCallingPid */, - -1 /* no realCallingUid */); + Task getLaunchRootTask(@Nullable ActivityRecord r, + @Nullable ActivityOptions options, @Nullable Task candidateTask, boolean onTop) { + return getLaunchRootTask(r, options, candidateTask, onTop, null /* launchParams */, + -1 /* no realCallingPid */, -1 /* no realCallingUid */); } /** @@ -2823,18 +2822,15 @@ class RootWindowContainer extends WindowContainer * @param r The activity we are trying to launch. Can be null. * @param options The activity options used to the launch. Can be null. * @param candidateTask The possible task the activity might be launched in. Can be null. - * @param sourceTask The task requesting to start activity. Can be null. * @param launchParams The resolved launch params to use. - * @param launchFlags The launch flags for this launch. * @param realCallingPid The pid from {@link ActivityStarter#setRealCallingPid} * @param realCallingUid The uid from {@link ActivityStarter#setRealCallingUid} * @return The root task to use for the launch or INVALID_TASK_ID. */ Task getLaunchRootTask(@Nullable ActivityRecord r, - @Nullable ActivityOptions options, @Nullable Task candidateTask, - @Nullable Task sourceTask, boolean onTop, - @Nullable LaunchParamsController.LaunchParams launchParams, int launchFlags, - int realCallingPid, int realCallingUid) { + @Nullable ActivityOptions options, @Nullable Task candidateTask, boolean onTop, + @Nullable LaunchParamsController.LaunchParams launchParams, int realCallingPid, + int realCallingUid) { int taskId = INVALID_TASK_ID; int displayId = INVALID_DISPLAY; TaskDisplayArea taskDisplayArea = null; @@ -2898,7 +2894,7 @@ class RootWindowContainer extends WindowContainer // Falling back to default task container taskDisplayArea = taskDisplayArea.mDisplayContent.getDefaultTaskDisplayArea(); rootTask = taskDisplayArea.getOrCreateRootTask(r, options, candidateTask, - sourceTask, launchParams, launchFlags, activityType, onTop); + launchParams, activityType, onTop); if (rootTask != null) { return rootTask; } @@ -2953,8 +2949,8 @@ class RootWindowContainer extends WindowContainer } } - return container.getOrCreateRootTask(r, options, candidateTask, sourceTask, launchParams, - launchFlags, activityType, onTop); + return container.getOrCreateRootTask( + r, options, candidateTask, launchParams, activityType, onTop); } /** @return true if activity record is null or can be launched on provided display. */ diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 2a0041afd9d0d..d4707d6f5f5ae 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -7952,17 +7952,6 @@ class Task extends WindowContainer { private boolean mHasBeenVisible; private boolean mRemoveWithTaskOrganizer; - /** - * Records the source task that requesting to build a new task, used to determine which of - * the adjacent roots should be launch root of the new task. - */ - private Task mSourceTask; - - /** - * Records launch flags to apply when launching new task. - */ - private int mLaunchFlags; - Builder(ActivityTaskManagerService atm) { mAtmService = atm; } @@ -7972,16 +7961,6 @@ class Task extends WindowContainer { return this; } - Builder setSourceTask(Task sourceTask) { - mSourceTask = sourceTask; - return this; - } - - Builder setLaunchFlags(int launchFlags) { - mLaunchFlags = launchFlags; - return this; - } - Builder setTaskId(int taskId) { mTaskId = taskId; return this; @@ -8236,14 +8215,9 @@ class Task extends WindowContainer { tda.getRootPinnedTask().dismissPip(); } - if (mIntent != null) { - mLaunchFlags |= mIntent.getFlags(); - } - // Task created by organizer are added as root. final Task launchRootTask = mCreatedByOrganizer - ? null : tda.getLaunchRootTask(mWindowingMode, mActivityType, mActivityOptions, - mSourceTask, mLaunchFlags); + ? null : tda.getLaunchRootTask(mWindowingMode, mActivityType, mActivityOptions); if (launchRootTask != null) { // Since this task will be put into a root task, its windowingMode will be // inherited. diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index cda8c4b78b0cd..4d85e7bda9000 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -27,7 +27,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; -import static android.content.Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; @@ -44,6 +43,7 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM; import android.annotation.Nullable; import android.app.ActivityOptions; import android.app.WindowConfiguration; +import android.content.Intent; import android.os.UserHandle; import android.util.IntArray; import android.util.Slog; @@ -132,11 +132,6 @@ final class TaskDisplayArea extends DisplayArea { } private final ArrayList mLaunchRootTasks = new ArrayList<>(); - /** - * A launch root task for activity launching with {@link FLAG_ACTIVITY_LAUNCH_ADJACENT} flag. - */ - private Task mLaunchAdjacentFlagRootTask; - /** * A focusable root task that is purposely to be positioned at the top. Although the root * task may not have the topmost index, it is used as a preferred candidate to prevent being @@ -1018,9 +1013,6 @@ final class TaskDisplayArea extends DisplayArea { if (mPreferredTopFocusableRootTask == rootTask) { mPreferredTopFocusableRootTask = null; } - if (mLaunchAdjacentFlagRootTask == rootTask) { - mLaunchAdjacentFlagRootTask = null; - } mDisplayContent.releaseSelfIfNeeded(); onRootTaskOrderChanged(rootTask); } @@ -1055,11 +1047,11 @@ final class TaskDisplayArea extends DisplayArea { * Returns an existing root task compatible with the windowing mode and activity type or * creates one if a compatible root task doesn't exist. * - * @see #getOrCreateRootTask(int, int, boolean, Task, Task, ActivityOptions, int) + * @see #getOrCreateRootTask(int, int, boolean, Intent, Task, ActivityOptions) */ Task getOrCreateRootTask(int windowingMode, int activityType, boolean onTop) { - return getOrCreateRootTask(windowingMode, activityType, onTop, null /* candidateTask */, - null /* sourceTask */, null /* options */, 0 /* intent */); + return getOrCreateRootTask(windowingMode, activityType, onTop, null /* intent */, + null /* candidateTask */, null /* options */); } /** @@ -1068,21 +1060,11 @@ final class TaskDisplayArea extends DisplayArea { * For one level task, the candidate task would be reused to also be the root task or create * a new root task if no candidate task. * - * @param windowingMode The windowing mode the root task should be created in. - * @param activityType The activityType the root task should be created in. - * @param onTop If true the root task will be created at the top of the display, - * else at the bottom. - * @param candidateTask The possible task the activity might be launched in. Can be null. - * @param sourceTask The task requesting to start activity. Used to determine which of the - * adjacent roots should be launch root of the new task. Can be null. - * @param options The activity options used to the launch. Can be null. - * @param launchFlags The launch flags for this launch. - * @return The root task to use for the launch. * @see #getRootTask(int, int) + * @see #createRootTask(int, int, boolean) */ Task getOrCreateRootTask(int windowingMode, int activityType, boolean onTop, - @Nullable Task candidateTask, @Nullable Task sourceTask, - @Nullable ActivityOptions options, int launchFlags) { + Intent intent, Task candidateTask, ActivityOptions options) { // Need to pass in a determined windowing mode to see if a new root task should be created, // so use its parent's windowing mode if it is undefined. if (!alwaysCreateRootTask( @@ -1095,8 +1077,7 @@ final class TaskDisplayArea extends DisplayArea { } else if (candidateTask != null) { final Task rootTask = candidateTask; final int position = onTop ? POSITION_TOP : POSITION_BOTTOM; - final Task launchRootTask = getLaunchRootTask(windowingMode, activityType, options, - sourceTask, launchFlags); + final Task launchRootTask = getLaunchRootTask(windowingMode, activityType, options); if (launchRootTask != null) { if (rootTask.getParent() == null) { @@ -1122,9 +1103,8 @@ final class TaskDisplayArea extends DisplayArea { .setActivityType(activityType) .setOnTop(onTop) .setParent(this) - .setSourceTask(sourceTask) + .setIntent(intent) .setActivityOptions(options) - .setLaunchFlags(launchFlags) .build(); } @@ -1134,9 +1114,9 @@ final class TaskDisplayArea extends DisplayArea { * * @see #getOrCreateRootTask(int, int, boolean) */ - Task getOrCreateRootTask(@Nullable ActivityRecord r, @Nullable ActivityOptions options, - @Nullable Task candidateTask, @Nullable Task sourceTask, - @Nullable LaunchParams launchParams, int launchFlags, int activityType, boolean onTop) { + Task getOrCreateRootTask(@Nullable ActivityRecord r, + @Nullable ActivityOptions options, @Nullable Task candidateTask, + @Nullable LaunchParams launchParams, int activityType, boolean onTop) { int windowingMode = WINDOWING_MODE_UNDEFINED; if (launchParams != null) { // If launchParams isn't null, windowing mode is already resolved. @@ -1150,8 +1130,8 @@ final class TaskDisplayArea extends DisplayArea { // UNDEFINED windowing mode is a valid result and means that the new root task will inherit // it's display's windowing mode. windowingMode = validateWindowingMode(windowingMode, r, candidateTask, activityType); - return getOrCreateRootTask(windowingMode, activityType, onTop, candidateTask, sourceTask, - options, launchFlags); + return getOrCreateRootTask(windowingMode, activityType, onTop, null /* intent */, + candidateTask, options); } @VisibleForTesting @@ -1219,24 +1199,6 @@ final class TaskDisplayArea extends DisplayArea { } } - void setLaunchAdjacentFlagRootTask(@Nullable Task adjacentFlagRootTask) { - if (adjacentFlagRootTask != null) { - if (!adjacentFlagRootTask.mCreatedByOrganizer) { - throw new IllegalArgumentException( - "Can't set not mCreatedByOrganizer as launch adjacent flag root tr=" - + adjacentFlagRootTask); - } - - if (adjacentFlagRootTask.mAdjacentTask == null) { - throw new UnsupportedOperationException( - "Can't set non-adjacent root as launch adjacent flag root tr=" - + adjacentFlagRootTask); - } - } - - mLaunchAdjacentFlagRootTask = adjacentFlagRootTask; - } - private @Nullable LaunchRootTaskDef getLaunchRootTaskDef(Task rootTask) { LaunchRootTaskDef def = null; for (int i = mLaunchRootTasks.size() - 1; i >= 0; --i) { @@ -1247,9 +1209,7 @@ final class TaskDisplayArea extends DisplayArea { return def; } - @Nullable - Task getLaunchRootTask(int windowingMode, int activityType, @Nullable ActivityOptions options, - @Nullable Task sourceTask, int launchFlags) { + Task getLaunchRootTask(int windowingMode, int activityType, ActivityOptions options) { // Try to use the launch root task in options if available. if (options != null) { final Task launchRootTask = Task.fromWindowContainerToken(options.getLaunchRootTask()); @@ -1259,19 +1219,6 @@ final class TaskDisplayArea extends DisplayArea { } } - // Use launch-adjacent-flag-root if launching with launch-adjacent flag. - if ((launchFlags & FLAG_ACTIVITY_LAUNCH_ADJACENT) != 0 - && mLaunchAdjacentFlagRootTask != null) { - // If the adjacent launch is coming from the same root, launch to adjacent root instead. - if (sourceTask != null - && sourceTask.getRootTask().mTaskId == mLaunchAdjacentFlagRootTask.mTaskId - && mLaunchAdjacentFlagRootTask.mAdjacentTask != null) { - return mLaunchAdjacentFlagRootTask.mAdjacentTask; - } else { - return mLaunchAdjacentFlagRootTask; - } - } - for (int i = mLaunchRootTasks.size() - 1; i >= 0; --i) { if (mLaunchRootTasks.get(i).contains(windowingMode, activityType)) { return mLaunchRootTasks.get(i).task; @@ -2016,11 +1963,7 @@ final class TaskDisplayArea extends DisplayArea { // Reparent task to corresponding launch root or display area. final WindowContainer launchRoot = task.supportsSplitScreenWindowingMode() ? toDisplayArea.getLaunchRootTask( - task.getWindowingMode(), - task.getActivityType(), - null /* options */, - null /* sourceTask */, - 0 /* launchFlags */) + task.getWindowingMode(), task.getActivityType(), null /* options */) : null; task.reparent(launchRoot == null ? toDisplayArea : launchRoot, POSITION_TOP); diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java index 29677b22ea816..625cff3409124 100644 --- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java +++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java @@ -292,8 +292,7 @@ class TaskLaunchParamsModifier implements LaunchParamsModifier { mSupervisor.mRootWindowContainer.resolveActivityType(root, options, task); display.forAllTaskDisplayAreas(displayArea -> { final Task launchRoot = displayArea.getLaunchRootTask( - resolvedMode, activityType, null /* ActivityOptions */, - null /* sourceTask*/, 0 /* launchFlags */); + resolvedMode, activityType, null /* ActivityOptions */); if (launchRoot == null) { return false; } diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index c29211f3bb656..12a6a54764d50 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -22,7 +22,6 @@ import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_REORDER; import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_REPARENT; import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_ADJACENT_ROOTS; -import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT; import static android.window.WindowContainerTransaction.HierarchyOp.HIERARCHY_OP_TYPE_SET_LAUNCH_ROOT; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_WINDOW_ORGANIZER; @@ -321,26 +320,6 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub } break; } - case HIERARCHY_OP_TYPE_SET_LAUNCH_ADJACENT_FLAG_ROOT: { - final WindowContainer wc = WindowContainer.fromBinder( - hop.getContainer()); - final Task task = wc != null ? wc.asTask() : null; - if (task == null) { - throw new IllegalArgumentException("Cannot set " - + "non-task as launch root: " + wc); - } else if (!task.mCreatedByOrganizer) { - throw new UnsupportedOperationException("Cannot set " - + "non-organized task as adjacent flag root: " + wc); - } else if (task.mAdjacentTask == null) { - throw new UnsupportedOperationException("Cannot set " - + "non-adjacent task as adjacent flag root: " + wc); - } - - final boolean clearRoot = hop.getToTop(); - task.getDisplayArea() - .setLaunchAdjacentFlagRootTask(clearRoot ? null : task); - break; - } case HIERARCHY_OP_TYPE_CHILDREN_TASKS_REPARENT: effects |= reparentChildrenTasksHierarchyOp(hop, transition, syncId); break; diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java index e6ac52d2bf6f0..98260318ea9d7 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java @@ -339,8 +339,8 @@ public class ActivityStarterTests extends WindowTestsBase { // Direct starter to use spy stack. doReturn(stack).when(mRootWindowContainer) .getLaunchRootTask(any(), any(), any(), anyBoolean()); - doReturn(stack).when(mRootWindowContainer).getLaunchRootTask(any(), any(), any(), any(), - anyBoolean(), any(), anyInt(), anyInt(), anyInt()); + doReturn(stack).when(mRootWindowContainer).getLaunchRootTask(any(), any(), any(), + anyBoolean(), any(), anyInt(), anyInt()); } // Set up mock package manager internal and make sure no unmocked methods are called @@ -1119,8 +1119,8 @@ public class ActivityStarterTests extends WindowTestsBase { stack.addChild(targetRecord); - doReturn(stack).when(mRootWindowContainer).getLaunchRootTask(any(), any(), any(), any(), - anyBoolean(), any(), anyInt(), anyInt(), anyInt()); + doReturn(stack).when(mRootWindowContainer) + .getLaunchRootTask(any(), any(), any(), anyBoolean(), any(), anyInt(), anyInt()); starter.mStartActivity = new ActivityBuilder(mAtm).build(); diff --git a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java index 4f5511b55d3a0..0bf237dc6545c 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java @@ -980,8 +980,7 @@ public class RootWindowContainerTests extends WindowTestsBase { doReturn(true).when(mSupervisor).canPlaceEntityOnDisplay(secondaryDisplay.mDisplayId, 300 /* test realCallerPid */, 300 /* test realCallerUid */, r.info); final Task result = mRootWindowContainer.getLaunchRootTask(r, options, - null /* task */, null /* sourceTask */, true /* onTop */, null /* launchParams */, - 0 /* launchFlags */, 300 /* test realCallerPid */, + null /* task */, true /* onTop */, null, 300 /* test realCallerPid */, 300 /* test realCallerUid */); // Assert that the root task is returned as expected. diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java index 9289ce41cd1e4..92d4edec85f49 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java @@ -28,7 +28,6 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; -import static android.content.Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT; import static android.content.pm.ActivityInfo.FLAG_ALWAYS_FOCUSABLE; import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; @@ -75,52 +74,6 @@ import org.junit.runner.RunWith; @RunWith(WindowTestRunner.class) public class TaskDisplayAreaTests extends WindowTestsBase { - @Test - public void getLaunchRootTask_checksLaunchAdjacentFlagRoot() { - final Task rootTask = createTask( - mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD); - rootTask.mCreatedByOrganizer = true; - final Task adjacentRootTask = createTask( - mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD); - adjacentRootTask.mCreatedByOrganizer = true; - final TaskDisplayArea taskDisplayArea = rootTask.getDisplayArea(); - adjacentRootTask.mAdjacentTask = rootTask; - rootTask.mAdjacentTask = adjacentRootTask; - - taskDisplayArea.setLaunchAdjacentFlagRootTask(adjacentRootTask); - Task actualRootTask = taskDisplayArea.getLaunchRootTask( - WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD, null /* options */, - null /* sourceTask */, FLAG_ACTIVITY_LAUNCH_ADJACENT); - assertSame(adjacentRootTask, actualRootTask.getRootTask()); - - taskDisplayArea.setLaunchAdjacentFlagRootTask(null); - actualRootTask = taskDisplayArea.getLaunchRootTask(WINDOWING_MODE_UNDEFINED, - ACTIVITY_TYPE_STANDARD, null /* options */, null /* sourceTask */, - FLAG_ACTIVITY_LAUNCH_ADJACENT); - assertNull(actualRootTask); - } - - @Test - public void getLaunchRootTask_fromLaunchAdjacentFlagRoot_checksAdjacentRoot() { - final ActivityRecord activity = createNonAttachedActivityRecord(mDisplayContent); - final Task rootTask = createTask( - mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD); - rootTask.mCreatedByOrganizer = true; - final Task adjacentRootTask = createTask( - mDisplayContent, WINDOWING_MODE_MULTI_WINDOW, ACTIVITY_TYPE_STANDARD); - adjacentRootTask.mCreatedByOrganizer = true; - final TaskDisplayArea taskDisplayArea = rootTask.getDisplayArea(); - adjacentRootTask.mAdjacentTask = rootTask; - rootTask.mAdjacentTask = adjacentRootTask; - - taskDisplayArea.setLaunchAdjacentFlagRootTask(adjacentRootTask); - final Task actualRootTask = taskDisplayArea.getLaunchRootTask( - WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD, null /* options */, - adjacentRootTask /* sourceTask */, FLAG_ACTIVITY_LAUNCH_ADJACENT); - - assertSame(rootTask, actualRootTask.getRootTask()); - } - @Test public void getOrCreateLaunchRootRespectsResolvedWindowingMode() { final Task rootTask = createTask( @@ -137,8 +90,8 @@ public class TaskDisplayAreaTests extends WindowTestsBase { launchParams.mWindowingMode = WINDOWING_MODE_FREEFORM; final Task actualRootTask = taskDisplayArea.getOrCreateRootTask( - activity, null /* options */, candidateRootTask, null /* sourceTask */, - launchParams, 0 /* launchFlags */, ACTIVITY_TYPE_STANDARD, true /* onTop */); + activity, null /* options */, candidateRootTask, + launchParams, ACTIVITY_TYPE_STANDARD, true /* onTop */); assertSame(rootTask, actualRootTask.getRootTask()); } @@ -158,9 +111,8 @@ public class TaskDisplayAreaTests extends WindowTestsBase { options.setLaunchWindowingMode(WINDOWING_MODE_FREEFORM); final Task actualRootTask = taskDisplayArea.getOrCreateRootTask( - activity, options, candidateRootTask, null /* sourceTask */, - null /* launchParams */, 0 /* launchFlags */, ACTIVITY_TYPE_STANDARD, - true /* onTop */); + activity, options, candidateRootTask, + null /* launchParams */, ACTIVITY_TYPE_STANDARD, true /* onTop */); assertSame(rootTask, actualRootTask.getRootTask()); } @@ -506,8 +458,8 @@ public class TaskDisplayAreaTests extends WindowTestsBase { boolean reuseCandidate) { final TaskDisplayArea taskDisplayArea = candidateTask.getDisplayArea(); final Task rootTask = taskDisplayArea.getOrCreateRootTask(windowingMode, activityType, - false /* onTop */, candidateTask /* candidateTask */, null /* sourceTask */, - null /* activityOptions */, 0 /* launchFlags */); + false /* onTop */, null /* intent */, candidateTask /* candidateTask */, + null /* activityOptions */); assertEquals(reuseCandidate, rootTask == candidateTask); } From 5f0cc08a3fee74213582c090e168f172aa38871e Mon Sep 17 00:00:00 2001 From: George Mount Date: Mon, 26 Apr 2021 22:09:40 +0000 Subject: [PATCH 147/192] Allow intercept touch event while animating edge glow. Bug: 185906621 During overscroll animation, there is no need to call disallowInterceptTouchEvents(). This removed the call so that parents can intercept touch events. Test: Ia9ac6d81a5b60222f489ea87f31ecba0c1d48cea Test: manual testing Change-Id: Ie5d9428d95b86d7a976c2f3c519547151a45cec5 (cherry picked from commit 109e474959d042e80fcab685146d29d8c51e8d79) --- core/java/android/widget/HorizontalScrollView.java | 3 +-- core/java/android/widget/ScrollView.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/core/java/android/widget/HorizontalScrollView.java b/core/java/android/widget/HorizontalScrollView.java index 105c714930a2d..b5a58481ae2aa 100644 --- a/core/java/android/widget/HorizontalScrollView.java +++ b/core/java/android/widget/HorizontalScrollView.java @@ -706,8 +706,7 @@ public class HorizontalScrollView extends FrameLayout { if (getChildCount() == 0) { return false; } - if ((mIsBeingDragged = !mScroller.isFinished() || !mEdgeGlowRight.isFinished() - || !mEdgeGlowLeft.isFinished())) { + if (!mScroller.isFinished()) { final ViewParent parent = getParent(); if (parent != null) { parent.requestDisallowInterceptTouchEvent(true); diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java index 65f3da79afe0f..2dd7f022ff449 100644 --- a/core/java/android/widget/ScrollView.java +++ b/core/java/android/widget/ScrollView.java @@ -763,8 +763,7 @@ public class ScrollView extends FrameLayout { if (getChildCount() == 0) { return false; } - if ((mIsBeingDragged = !mScroller.isFinished() || !mEdgeGlowTop.isFinished() - || !mEdgeGlowBottom.isFinished())) { + if (!mScroller.isFinished()) { final ViewParent parent = getParent(); if (parent != null) { parent.requestDisallowInterceptTouchEvent(true); From c920ee7280cc12cdcb37f66961dcc104a6b0ac6a Mon Sep 17 00:00:00 2001 From: Evan Severson Date: Wed, 28 Apr 2021 00:27:37 +0000 Subject: [PATCH 148/192] Fix incorrect index usage in SensorPrivacyService init TODO: Add test coverage for service init Merged-In: I0ce26eda21035a34f1cb09a71c94ee84301aef84 Change-Id: I0ce26eda21035a34f1cb09a71c94ee84301aef84 Test: None yet Bug: 186578100 (cherry picked from commit adb86329d810172761021fbc1a6cdee48b18be9f) (cherry picked from commit c786cbe92a661441663d7b8140e30592dce4f2b2) --- services/core/java/com/android/server/SensorPrivacyService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/SensorPrivacyService.java b/services/core/java/com/android/server/SensorPrivacyService.java index cd3dca90b39b3..0f73897d2531c 100644 --- a/services/core/java/com/android/server/SensorPrivacyService.java +++ b/services/core/java/com/android/server/SensorPrivacyService.java @@ -203,7 +203,7 @@ public final class SensorPrivacyService extends SystemService { SparseBooleanArray userIndividualEnabled = mIndividualEnabled.valueAt(i); for (int j = 0; j < userIndividualEnabled.size(); j++) { - int sensor = userIndividualEnabled.keyAt(i); + int sensor = userIndividualEnabled.keyAt(j); boolean enabled = userIndividualEnabled.valueAt(j); setUserRestriction(userId, sensor, enabled); } From 3b9c828afd0f6e571ce4bc5537a248b1b0fa5f8d Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Thu, 29 Apr 2021 23:15:42 +0000 Subject: [PATCH 149/192] Revert "Fix notification top clipping" This reverts commit 6f97c0a8bf3c58c89d5ccd5ede7e32b6a02c5f83. Reason for revert: b/186760125 Change-Id: I2675bb52c453c872505bc5ad420bf33d669bf6e1 (cherry picked from commit 6782bec03d998bf0ca87f6a006832901c5ceb8e3) --- .../statusbar/notification/stack/StackScrollAlgorithm.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 27ee13ab4eafc..e3c5546d18da2 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 @@ -151,7 +151,9 @@ public class StackScrollAlgorithm { private void updateClipping(StackScrollAlgorithmState algorithmState, AmbientState ambientState) { - float drawStart = !ambientState.isOnKeyguard() ? ambientState.getStackY() : 0; + float drawStart = !ambientState.isOnKeyguard() ? ambientState.getTopPadding() + + ambientState.getStackTranslation() + : 0; float clipStart = 0; int childCount = algorithmState.visibleChildren.size(); boolean firstHeadsUp = true; @@ -164,7 +166,8 @@ public class StackScrollAlgorithm { float newYTranslation = state.yTranslation; float newHeight = state.height; float newNotificationEnd = newYTranslation + newHeight; - boolean isHeadsUp = (child instanceof ExpandableNotificationRow) && child.isPinned(); + boolean isHeadsUp = (child instanceof ExpandableNotificationRow) + && ((ExpandableNotificationRow) child).isPinned(); if (mClipNotificationScrollToTop && (!state.inShelf || (isHeadsUp && !firstHeadsUp)) && newYTranslation < clipStart From 6026940234d0e23a70d71c778827a59c989135e1 Mon Sep 17 00:00:00 2001 From: Nate Myren Date: Wed, 28 Apr 2021 21:17:05 -0700 Subject: [PATCH 150/192] TEMP: note "RECORD_AUDIO_HOTWORD" in SoundTriggerMiddleware note the RECORD_AUDIO_HOTWORD op, rather than the RECORD_AUDIO. In addition, check the RECORD_AUDIO permission for preflight, not data delivery Bug: 186164881 Test: Manual Change-Id: I3275647d0f9a6e3ce8b97a556f56723b49170c8e (cherry picked from commit c6c38cd6f0ee5eb0bfab38116aebaa35b5937636) --- .../SoundTriggerMiddlewarePermission.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java index d5ab574b56177..6f0741d20e459 100644 --- a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java +++ b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java @@ -21,6 +21,7 @@ import static android.Manifest.permission.RECORD_AUDIO; import android.annotation.NonNull; import android.annotation.Nullable; +import android.app.AppOpsManager; import android.content.Context; import android.content.PermissionChecker; import android.media.permission.Identity; @@ -132,7 +133,12 @@ public class SoundTriggerMiddlewarePermission implements ISoundTriggerMiddleware * Throws a {@link SecurityException} iff the originator has permission to receive data. */ void enforcePermissionsForDataDelivery(@NonNull Identity identity, @NonNull String reason) { - enforcePermissionForDataDelivery(mContext, identity, RECORD_AUDIO, reason); + // START TEMP HACK + enforcePermissionForPreflight(mContext, identity, RECORD_AUDIO); + int hotwordOp = AppOpsManager.strOpToOp(AppOpsManager.OPSTR_RECORD_AUDIO_HOTWORD); + mContext.getSystemService(AppOpsManager.class).noteOpNoThrow(hotwordOp, identity.uid, + identity.packageName, identity.attributionTag, reason); + // END TEMP HACK enforcePermissionForDataDelivery(mContext, identity, CAPTURE_AUDIO_HOTWORD, reason); } From 12fcb01ea8e925f3100c587454ab92b1ab456da8 Mon Sep 17 00:00:00 2001 From: Jerry Chang Date: Sat, 1 May 2021 01:10:37 +0800 Subject: [PATCH 151/192] Make sure to reorder side stage above main stage to prevent flicker Always reorder side stage to the top whenever there's a child task appeared in side stage. This is needed to prevent main stage occludes newly launched task in side stage and causing itself flipping between fullscreen and multi-window windowing mode. Fix: 186614428 Bug: 169271875 Test: enter staged split by launching task with adjacent flag, screen won't flicker Change-Id: I9176a97439d687bbc7b0bf2dd9ddfdaecacfa455 (cherry picked from commit 57b13e327fe1d98981c29f6a2a32b07417283849) --- .../com/android/wm/shell/splitscreen/StageCoordinator.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index efaa2696cbebd..f7160e55012c3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -452,6 +452,10 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, // Make sure the main stage is active. mMainStage.activate(getMainStageBounds(), wct); mSideStage.setBounds(getSideStageBounds(), wct); + // Reorder side stage to the top whenever there's a new child task appeared in side + // stage. This is needed to prevent main stage occludes side stage and makes main stage + // flipping between fullscreen and multi-window windowing mode. + wct.reorder(mSideStage.mRootTaskInfo.token, true); mTaskOrganizer.applyTransaction(wct); } } From 60e9595134edfe626e9dcad12999e4a92ca2e152 Mon Sep 17 00:00:00 2001 From: Collin Fijalkovich Date: Fri, 30 Apr 2021 16:33:02 +0000 Subject: [PATCH 152/192] Revert "Enable remote animation for keygaurd going away." This reverts commit d0ba2859dd8cc851475b0e481adde30cb0eae795. Reason for revert: Checking for cause of test breakage Change-Id: I32f434f2e0c9b7d20bcd0ba51c0b770df8dfa575 (cherry picked from commit 124c7e37e446e928d8ff91c45851520579883d01) --- .../systemui/keyguard/KeyguardService.java | 28 ++++--------------- .../KeyguardUnlockAnimationController.kt | 2 +- .../keyguard/KeyguardViewMediator.java | 2 +- .../server/policy/PhoneWindowManager.java | 2 +- .../keyguard/KeyguardServiceDelegate.java | 6 ++-- .../server/wm/WindowManagerService.java | 27 ++---------------- 6 files changed, 13 insertions(+), 54 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java index f1431f5cd40be..666afed41c351 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java @@ -51,7 +51,6 @@ import com.android.internal.policy.IKeyguardExitCallback; import com.android.internal.policy.IKeyguardService; import com.android.internal.policy.IKeyguardStateCallback; import com.android.systemui.SystemUIApplication; -import com.android.wm.shell.transition.Transitions; import javax.inject.Inject; @@ -63,29 +62,16 @@ public class KeyguardService extends Service { * Run Keyguard animation as remote animation in System UI instead of local animation in * the server process. * - * 0: Runs all keyguard animation as local animation - * 1: Only runs keyguard going away animation as remote animation - * 2: Runs all keyguard animation as remote animation - * * Note: Must be consistent with WindowManagerService. */ private static final String ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY = "persist.wm.enable_remote_keyguard_animation"; - private static final int sEnableRemoteKeyguardAnimation = - SystemProperties.getInt(ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY, 1); - /** * @see #ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY */ - public static boolean sEnableRemoteKeyguardGoingAwayAnimation = - !Transitions.ENABLE_SHELL_TRANSITIONS && sEnableRemoteKeyguardAnimation >= 1; - - /** - * @see #ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY - */ - public static boolean sEnableRemoteKeyguardOccludeAnimation = - !Transitions.ENABLE_SHELL_TRANSITIONS && sEnableRemoteKeyguardAnimation >= 2; + static boolean sEnableRemoteKeyguardAnimation = + SystemProperties.getBoolean(ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY, false); private final KeyguardViewMediator mKeyguardViewMediator; private final KeyguardLifecyclesDispatcher mKeyguardLifecyclesDispatcher; @@ -97,22 +83,20 @@ public class KeyguardService extends Service { mKeyguardViewMediator = keyguardViewMediator; mKeyguardLifecyclesDispatcher = keyguardLifecyclesDispatcher; - RemoteAnimationDefinition definition = new RemoteAnimationDefinition(); - if (sEnableRemoteKeyguardGoingAwayAnimation) { + if (sEnableRemoteKeyguardAnimation) { + RemoteAnimationDefinition definition = new RemoteAnimationDefinition(); final RemoteAnimationAdapter exitAnimationAdapter = new RemoteAnimationAdapter(mExitAnimationRunner, 0, 0); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_GOING_AWAY, exitAnimationAdapter); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_GOING_AWAY_ON_WALLPAPER, exitAnimationAdapter); - } - if (sEnableRemoteKeyguardOccludeAnimation) { final RemoteAnimationAdapter occludeAnimationAdapter = new RemoteAnimationAdapter(mOccludeAnimationRunner, 0, 0); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_OCCLUDE, occludeAnimationAdapter); definition.addRemoteAnimation(TRANSIT_OLD_KEYGUARD_UNOCCLUDE, occludeAnimationAdapter); + ActivityTaskManager.getInstance().registerRemoteAnimationsForDisplay( + DEFAULT_DISPLAY, definition); } - ActivityTaskManager.getInstance().registerRemoteAnimationsForDisplay( - DEFAULT_DISPLAY, definition); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt index 85ee0dca88059..411c328cd3101 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardUnlockAnimationController.kt @@ -280,7 +280,7 @@ class KeyguardUnlockAnimationController @Inject constructor( } override fun onKeyguardDismissAmountChanged() { - if (!KeyguardService.sEnableRemoteKeyguardGoingAwayAnimation) { + if (!KeyguardService.sEnableRemoteKeyguardAnimation) { return } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index b7da7addf027a..48f9a58d7d1ac 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -2100,7 +2100,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, playSounds(false); } - if (KeyguardService.sEnableRemoteKeyguardGoingAwayAnimation) { + if (KeyguardService.sEnableRemoteKeyguardAnimation) { mSurfaceBehindRemoteAnimationFinishedCallback = finishedCallback; mSurfaceBehindRemoteAnimationRunning = true; diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 7f325f1590ec8..27f5350661f0b 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3014,7 +3014,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private int handleStartTransitionForKeyguardLw(boolean keyguardGoingAway, long duration) { final int res = applyKeyguardOcclusionChange(); if (res != 0) return res; - if (!WindowManagerService.sEnableRemoteKeyguardGoingAwayAnimation && keyguardGoingAway) { + if (!WindowManagerService.sEnableRemoteKeyguardAnimation && keyguardGoingAway) { if (DEBUG_KEYGUARD) Slog.d(TAG, "Starting keyguard exit animation"); startKeyguardExitAnimation(SystemClock.uptimeMillis(), duration); } diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java index 6e478ee7bf1b5..44f14b4d5b0df 100644 --- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java +++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java @@ -263,8 +263,7 @@ public class KeyguardServiceDelegate { */ @Deprecated public void setOccluded(boolean isOccluded, boolean animate) { - if (!WindowManagerService.sEnableRemoteKeyguardOccludeAnimation - && mKeyguardService != null) { + if (!WindowManagerService.sEnableRemoteKeyguardAnimation && mKeyguardService != null) { if (DEBUG) Log.v(TAG, "setOccluded(" + isOccluded + ") animate=" + animate); mKeyguardService.setOccluded(isOccluded, animate); } @@ -404,8 +403,7 @@ public class KeyguardServiceDelegate { } public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) { - if (!WindowManagerService.sEnableRemoteKeyguardGoingAwayAnimation - && mKeyguardService != null) { + if (!WindowManagerService.sEnableRemoteKeyguardAnimation && mKeyguardService != null) { mKeyguardService.startKeyguardExitAnimation(startTime, fadeoutDuration); } } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index fbeb968eb90ff..1657a136d61d3 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -420,42 +420,19 @@ public class WindowManagerService extends IWindowManager.Stub static boolean sDisableCustomTaskAnimationProperty = SystemProperties.getBoolean(DISABLE_CUSTOM_TASK_ANIMATION_PROPERTY, true); - /** - * Use WMShell for app transition. - */ - public static final String ENABLE_SHELL_TRANSITIONS = "persist.debug.shell_transit"; - - /** - * @see #ENABLE_SHELL_TRANSITIONS - */ - public static final boolean sEnableShellTransitions = - SystemProperties.getBoolean(ENABLE_SHELL_TRANSITIONS, false); - /** * Run Keyguard animation as remote animation in System UI instead of local animation in * the server process. - * - * 0: Runs all keyguard animation as local animation - * 1: Only runs keyguard going away animation as remote animation - * 2: Runs all keyguard animation as remote animation */ private static final String ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY = "persist.wm.enable_remote_keyguard_animation"; - private static final int sEnableRemoteKeyguardAnimation = - SystemProperties.getInt(ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY, 1); - /** * @see #ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY */ - public static final boolean sEnableRemoteKeyguardGoingAwayAnimation = !sEnableShellTransitions - && sEnableRemoteKeyguardAnimation >= 1; + public static boolean sEnableRemoteKeyguardAnimation = + SystemProperties.getBoolean(ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY, false); - /** - * @see #ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY - */ - public static final boolean sEnableRemoteKeyguardOccludeAnimation = !sEnableShellTransitions - && sEnableRemoteKeyguardAnimation >= 2; /** * Allows a fullscreen windowing mode activity to launch in its desired orientation directly From 9e6b51cbca97e9a05f4010aec98b90acde49ca7c Mon Sep 17 00:00:00 2001 From: Josh Tsuji Date: Fri, 30 Apr 2021 15:09:41 -0400 Subject: [PATCH 153/192] Call StatusBar#finishKeyguardFadingAway after the fling animation. This isn't currently isn't being called with the new keyguard unlock animation if bypassing the keyguard due to biometric unlock. This results in ScrimController#expansionAffectsAlpha remaining false after an unlock, which in turn results in a transparent shade scrim even when unlocked+expanded. Filed b/186873982 to track a permanent fix (for a safer fix-forward, I am checking if the new unlock animation is running before calling #finishKeyguardFadingAway, but that's likely not necessary). Bug: 186760125 Test: manual Change-Id: I79a70034a02af45d69dc0e80554141c65f6b5ed8 (cherry picked from commit 261120400fe146ef5c342e4bafb3ec460fbd25a9) --- .../statusbar/phone/StatusBarKeyguardViewManager.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index f403cc94d831d..1ef8470180f34 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -591,6 +591,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb if (mStatusBar.isInLaunchTransition() || mKeyguardStateController.isFlingingToDismissKeyguard()) { + final boolean wasFlingingToDismissKeyguard = + mKeyguardStateController.isFlingingToDismissKeyguard(); mStatusBar.fadeKeyguardAfterLaunchTransition(new Runnable() { @Override public void run() { @@ -604,6 +606,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb public void run() { mStatusBar.hideKeyguard(); mNotificationShadeWindowController.setKeyguardFadingAway(false); + + if (wasFlingingToDismissKeyguard) { + mStatusBar.finishKeyguardFadingAway(); + } + mViewMediatorCallback.keyguardGone(); executeAfterKeyguardGoneAction(); } From 8244759d5f02ddaf54292d08ced5ee93ece8572a Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Mon, 3 May 2021 19:55:48 +0000 Subject: [PATCH 154/192] Revert "Fix VIP conversations alerting incorrectly." This reverts commit 64c85ac6f5f20d031a7e192366b8335fab0253c2. Reason for revert: DF blocking Bug: 187009701 Change-Id: I04dfdf20ad5c7df3c6dddf0cc12540b179162f0b (cherry picked from commit 25c273584ad92f566c41c635a886be9375f50d39) --- .../statusbar/NotificationListener.java | 3 +- .../NotificationGroupManagerLegacy.java | 438 ++---------------- .../NotificationGroupAlertTransferHelper.java | 365 ++++----------- 3 files changed, 118 insertions(+), 688 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java index 5437ce63475ec..7f31fddbfb6c3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java @@ -18,6 +18,7 @@ package com.android.systemui.statusbar; import static com.android.systemui.statusbar.RemoteInputController.processForRemoteInput; import static com.android.systemui.statusbar.notification.NotificationEntryManager.UNDEFINED_DISMISS_REASON; +import static com.android.systemui.statusbar.phone.StatusBar.DEBUG; import android.annotation.NonNull; import android.annotation.SuppressLint; @@ -34,7 +35,6 @@ import android.util.Log; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.statusbar.dagger.StatusBarModule; import com.android.systemui.statusbar.phone.NotificationListenerWithPlugins; -import com.android.systemui.statusbar.phone.StatusBar; import java.util.ArrayList; import java.util.List; @@ -46,7 +46,6 @@ import java.util.List; @SuppressLint("OverrideAbstract") public class NotificationListener extends NotificationListenerWithPlugins { private static final String TAG = "NotificationListener"; - private static final boolean DEBUG = StatusBar.DEBUG; private final Context mContext; private final NotificationManager mNotificationManager; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java index d95c265c14608..d6356de5ea51b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java @@ -16,9 +16,7 @@ package com.android.systemui.statusbar.notification.collection.legacy; -import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.Notification; import android.service.notification.StatusBarNotification; import android.util.ArraySet; import android.util.Log; @@ -33,7 +31,6 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager; import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier; -import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener; import com.android.wm.shell.bubbles.Bubbles; @@ -42,12 +39,10 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.TreeSet; import javax.inject.Inject; @@ -63,21 +58,13 @@ import dagger.Lazy; public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, StateListener, GroupMembershipManager, GroupExpansionManager, Dumpable { - private static final String TAG = "NotifGroupManager"; - private static final boolean DEBUG = StatusBar.DEBUG; - private static final boolean SPEW = StatusBar.SPEW; - /** - * The maximum amount of time (in ms) between the posting of notifications that can be - * considered part of the same update batch. - */ - private static final long POST_BATCH_MAX_AGE = 5000; + private static final String TAG = "NotificationGroupManager"; private final HashMap mGroupMap = new HashMap<>(); private final ArraySet mExpansionChangeListeners = new ArraySet<>(); private final ArraySet mGroupChangeListeners = new ArraySet<>(); private final Lazy mPeopleNotificationIdentifier; private final Optional mBubblesOptional; - private final EventBuffer mEventBuffer = new EventBuffer(); private int mBarState = -1; private HashMap mIsolatedEntries = new HashMap<>(); private HeadsUpManager mHeadsUpManager; @@ -147,14 +134,8 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, * When we want to remove an entry from being tracked for grouping */ public void onEntryRemoved(NotificationEntry removed) { - if (SPEW) { - Log.d(TAG, "onEntryRemoved: entry=" + removed); - } onEntryRemovedInternal(removed, removed.getSbn()); - StatusBarNotification oldSbn = mIsolatedEntries.remove(removed.getKey()); - if (oldSbn != null) { - updateSuppression(mGroupMap.get(oldSbn.getGroupKey())); - } + mIsolatedEntries.remove(removed.getKey()); } /** @@ -181,9 +162,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, // the close future. See b/23676310 for reference. return; } - if (SPEW) { - Log.d(TAG, "onEntryRemovedInternal: entry=" + removed + " group=" + group.groupKey); - } if (isGroupChild(removed.getKey(), isGroup, isGroupSummary)) { group.children.remove(removed.getKey()); } else { @@ -204,9 +182,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, * Notify the group manager that a new entry was added */ public void onEntryAdded(final NotificationEntry added) { - if (SPEW) { - Log.d(TAG, "onEntryAdded: entry=" + added); - } updateIsolation(added); onEntryAddedInternal(added); } @@ -220,16 +195,13 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, String groupKey = getGroupKey(sbn); NotificationGroup group = mGroupMap.get(groupKey); if (group == null) { - group = new NotificationGroup(groupKey); + group = new NotificationGroup(); mGroupMap.put(groupKey, group); for (OnGroupChangeListener listener : mGroupChangeListeners) { listener.onGroupCreated(group, groupKey); } } - if (SPEW) { - Log.d(TAG, "onEntryAddedInternal: entry=" + added + " group=" + group.groupKey); - } if (isGroupChild) { NotificationEntry existing = group.children.get(added.getKey()); if (existing != null && existing != added) { @@ -241,11 +213,9 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, + " added removed" + added.isRowRemoved(), new Throwable()); } group.children.put(added.getKey(), added); - addToPostBatchHistory(group, added); updateSuppression(group); } else { group.summary = added; - addToPostBatchHistory(group, added); group.expanded = added.areChildrenExpanded(); updateSuppression(group); if (!group.children.isEmpty()) { @@ -261,27 +231,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, } } - private void addToPostBatchHistory(NotificationGroup group, @Nullable NotificationEntry entry) { - if (entry == null) { - return; - } - boolean didAdd = group.postBatchHistory.add(new PostRecord(entry)); - if (didAdd) { - trimPostBatchHistory(group.postBatchHistory); - } - } - - /** remove all history that's too old to be in the batch. */ - private void trimPostBatchHistory(@NonNull TreeSet postBatchHistory) { - if (postBatchHistory.size() <= 1) { - return; - } - long batchStartTime = postBatchHistory.last().postTime - POST_BATCH_MAX_AGE; - while (!postBatchHistory.isEmpty() && postBatchHistory.first().postTime < batchStartTime) { - postBatchHistory.pollFirst(); - } - } - private void onEntryBecomingChild(NotificationEntry entry) { updateIsolation(entry); } @@ -290,9 +239,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, if (group == null) { return; } - NotificationEntry prevAlertOverride = group.alertOverride; - group.alertOverride = getPriorityConversationAlertOverride(group); - int childCount = 0; boolean hasBubbles = false; for (NotificationEntry entry : group.children.values()) { @@ -309,148 +255,18 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, group.suppressed = group.summary != null && !group.expanded && (childCount == 1 || (childCount == 0 - && group.summary.getSbn().getNotification().isGroupSummary() - && (hasIsolatedChildren(group) || hasBubbles))); - - boolean alertOverrideChanged = prevAlertOverride != group.alertOverride; - boolean suppressionChanged = prevSuppressed != group.suppressed; - if (alertOverrideChanged || suppressionChanged) { - if (DEBUG && alertOverrideChanged) { - Log.d(TAG, group + " alertOverride was=" + prevAlertOverride + " now=" - + group.alertOverride); - } - if (DEBUG && suppressionChanged) { - Log.d(TAG, group + " suppressed changed to " + group.suppressed); - } - if (!mIsUpdatingUnchangedGroup) { - if (alertOverrideChanged) { - mEventBuffer.notifyAlertOverrideChanged(group, prevAlertOverride); - } - if (suppressionChanged) { - for (OnGroupChangeListener listener : mGroupChangeListeners) { - listener.onGroupSuppressionChanged(group, group.suppressed); - } - } - mEventBuffer.notifyGroupsChanged(); - } else { - if (DEBUG) { - Log.d(TAG, group + " did not notify listeners of above change(s)"); + && group.summary.getSbn().getNotification().isGroupSummary() + && (hasIsolatedChildren(group) || hasBubbles))); + if (prevSuppressed != group.suppressed) { + for (OnGroupChangeListener listener : mGroupChangeListeners) { + if (!mIsUpdatingUnchangedGroup) { + listener.onGroupSuppressionChanged(group, group.suppressed); + listener.onGroupsChanged(); } } } } - /** - * Finds the isolated logical child of this group which is should be alerted instead. - * - * Notifications from priority conversations are isolated from their groups to make them more - * prominent, however apps may post these with a GroupAlertBehavior that has the group receiving - * the alert. This would lead to the group alerting even though the conversation that was - * updated was not actually a part of that group. This method finds the best priority - * conversation in this situation, if there is one, so they can be set as the alertOverride of - * the group. - * - * @param group the group to check - * @return the entry which should receive the alert instead of the group, if any. - */ - @Nullable - private NotificationEntry getPriorityConversationAlertOverride(NotificationGroup group) { - // GOAL: if there is a priority child which wouldn't alert based on its groupAlertBehavior, - // but which should be alerting (because priority conversations are isolated), find it. - if (group == null || group.summary == null) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: null group or summary"); - } - return null; - } - if (isIsolated(group.summary.getKey())) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: isolated group"); - } - return null; - } - - // Precondiions: - // * Only necessary when all notifications in the group use GROUP_ALERT_SUMMARY - // * Only necessary when at least one notification in the group is on a priority channel - if (group.summary.getSbn().getNotification().getGroupAlertBehavior() - != Notification.GROUP_ALERT_SUMMARY) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: summary != GROUP_ALERT_SUMMARY"); - } - return null; - } - - // Get the important children first, copy the keys for the final importance check, - // then add the non-isolated children to the map for unified lookup. - HashMap children = getImportantConversations(group); - if (children == null || children.isEmpty()) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: no important conversations"); - } - return null; - } - HashSet importantChildKeys = new HashSet<>(children.keySet()); - children.putAll(group.children); - - // Ensure all children have GROUP_ALERT_SUMMARY - for (NotificationEntry child : children.values()) { - if (child.getSbn().getNotification().getGroupAlertBehavior() - != Notification.GROUP_ALERT_SUMMARY) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: " - + "child != GROUP_ALERT_SUMMARY"); - } - return null; - } - } - - // Create a merged post history from all the children - TreeSet combinedHistory = new TreeSet<>(group.postBatchHistory); - for (String importantChildKey : importantChildKeys) { - NotificationGroup importantChildGroup = mGroupMap.get(importantChildKey); - combinedHistory.addAll(importantChildGroup.postBatchHistory); - } - trimPostBatchHistory(combinedHistory); - - // This is a streamlined implementation of the following idea: - // * From the subset of notifications in the latest 'batch' of updates. A batch is: - // * Notifs posted less than POST_BATCH_MAX_AGE before the most recently posted. - // * Only including notifs newer than the second-to-last post of any notification. - // * Find the newest child in the batch -- the with the largest 'when' value. - // * If the newest child is a priority conversation, set that as the override. - HashSet batchKeys = new HashSet<>(); - long newestChildWhen = -1; - NotificationEntry newestChild = null; - // Iterate backwards through the post history, tracking the child with the smallest sort key - for (PostRecord record : combinedHistory.descendingSet()) { - if (batchKeys.contains(record.key)) { - // Once you see a notification again, the batch has ended - break; - } - batchKeys.add(record.key); - NotificationEntry child = children.get(record.key); - if (child != null) { - long childWhen = child.getSbn().getNotification().when; - if (newestChild == null || childWhen > newestChildWhen) { - newestChildWhen = childWhen; - newestChild = child; - } - } - } - if (newestChild != null && importantChildKeys.contains(newestChild.getKey())) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: result=" + newestChild); - } - return newestChild; - } - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: result=null, newestChild=" - + newestChild); - } - return null; - } - private boolean hasIsolatedChildren(NotificationGroup group) { return getNumberOfIsolatedChildren(group.summary.getSbn().getGroupKey()) != 0; } @@ -465,33 +281,12 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, return count; } - @Nullable - private HashMap getImportantConversations(NotificationGroup group) { - String groupKey = group.summary.getSbn().getGroupKey(); - HashMap result = null; - for (StatusBarNotification sbn : mIsolatedEntries.values()) { - if (sbn.getGroupKey().equals(groupKey)) { - NotificationEntry entry = mGroupMap.get(sbn.getKey()).summary; - if (isImportantConversation(entry)) { - if (result == null) { - result = new HashMap<>(); - } - result.put(sbn.getKey(), entry); - } - } - } - return result; - } - /** * Update an entry's group information * @param entry notification entry to update * @param oldNotification previous notification info before this update */ public void onEntryUpdated(NotificationEntry entry, StatusBarNotification oldNotification) { - if (SPEW) { - Log.d(TAG, "onEntryUpdated: entry=" + entry); - } onEntryUpdated(entry, oldNotification.getGroupKey(), oldNotification.isGroup(), oldNotification.getNotification().isGroupSummary()); } @@ -530,17 +325,7 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, * Whether the given notification is the summary of a group that is being suppressed */ public boolean isSummaryOfSuppressedGroup(StatusBarNotification sbn) { - return sbn.getNotification().isGroupSummary() && isGroupSuppressed(getGroupKey(sbn)); - } - - /** - * If the given notification is a summary, get the group for it. - */ - public NotificationGroup getGroupForSummary(StatusBarNotification sbn) { - if (sbn.getNotification().isGroupSummary()) { - return mGroupMap.get(getGroupKey(sbn)); - } - return null; + return isGroupSuppressed(getGroupKey(sbn)) && sbn.getNotification().isGroupSummary(); } private boolean isOnlyChild(StatusBarNotification sbn) { @@ -760,7 +545,9 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, if (!sbn.isGroup() || sbn.getNotification().isGroupSummary()) { return false; } - if (isImportantConversation(entry)) { + int peopleNotificationType = + mPeopleNotificationIdentifier.get().getPeopleNotificationType(entry); + if (peopleNotificationType == PeopleNotificationIdentifier.TYPE_IMPORTANT_PERSON) { return true; } if (mHeadsUpManager != null && !mHeadsUpManager.isAlerting(entry.getKey())) { @@ -773,25 +560,18 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, || isGroupNotFullyVisible(notificationGroup)); } - private boolean isImportantConversation(NotificationEntry entry) { - int peopleNotificationType = - mPeopleNotificationIdentifier.get().getPeopleNotificationType(entry); - return peopleNotificationType == PeopleNotificationIdentifier.TYPE_IMPORTANT_PERSON; - } - /** * Isolate a notification from its group so that it visually shows as its own group. * * @param entry the notification to isolate */ private void isolateNotification(NotificationEntry entry) { - if (SPEW) { - Log.d(TAG, "isolateNotification: entry=" + entry); - } + StatusBarNotification sbn = entry.getSbn(); + // We will be isolated now, so lets update the groups onEntryRemovedInternal(entry, entry.getSbn()); - mIsolatedEntries.put(entry.getKey(), entry.getSbn()); + mIsolatedEntries.put(sbn.getKey(), sbn); onEntryAddedInternal(entry); // We also need to update the suppression of the old group, because this call comes @@ -808,14 +588,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, * Update the isolation of an entry, splitting it from the group. */ public void updateIsolation(NotificationEntry entry) { - // We need to buffer a few events because we do isolation changes in 3 steps: - // removeInternal, update mIsolatedEntries, addInternal. This means that often the - // alertOverride will update on the removal, however processing the event in that case can - // cause problems because the mIsolatedEntries map is not in its final state, so the event - // listener may be unable to correctly determine the true state of the group. By delaying - // the alertOverride change until after the add phase, we can ensure that listeners only - // have to handle a consistent state. - mEventBuffer.startBuffering(); boolean isIsolated = isIsolated(entry.getSbn().getKey()); if (shouldIsolate(entry)) { if (!isIsolated) { @@ -824,7 +596,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, } else if (isIsolated) { stopIsolatingNotification(entry); } - mEventBuffer.flushAndStopBuffering(); } /** @@ -833,15 +604,15 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, * @param entry the notification to un-isolate */ private void stopIsolatingNotification(NotificationEntry entry) { - if (SPEW) { - Log.d(TAG, "stopIsolatingNotification: entry=" + entry); - } - // not isolated anymore, we need to update the groups - onEntryRemovedInternal(entry, entry.getSbn()); - mIsolatedEntries.remove(entry.getKey()); - onEntryAddedInternal(entry); - for (OnGroupChangeListener listener : mGroupChangeListeners) { - listener.onGroupsChanged(); + StatusBarNotification sbn = entry.getSbn(); + if (isIsolated(sbn.getKey())) { + // not isolated anymore, we need to update the groups + onEntryRemovedInternal(entry, entry.getSbn()); + mIsolatedEntries.remove(sbn.getKey()); + onEntryAddedInternal(entry); + for (OnGroupChangeListener listener : mGroupChangeListeners) { + listener.onGroupsChanged(); + } } } @@ -876,155 +647,34 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, setStatusBarState(newState); } - /** - * A record of a notification being posted, containing the time of the post and the key of the - * notification entry. These are stored in a TreeSet by the NotificationGroup and used to - * calculate a batch of notifications. - */ - public static class PostRecord implements Comparable { - public final long postTime; - public final String key; - - /** constructs a record containing the post time and key from the notification entry */ - public PostRecord(@NonNull NotificationEntry entry) { - this.postTime = entry.getSbn().getPostTime(); - this.key = entry.getKey(); - } - - @Override - public int compareTo(PostRecord o) { - int postTimeComparison = Long.compare(this.postTime, o.postTime); - return postTimeComparison == 0 - ? String.CASE_INSENSITIVE_ORDER.compare(this.key, o.key) - : postTimeComparison; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - PostRecord that = (PostRecord) o; - return postTime == that.postTime && key.equals(that.key); - } - - @Override - public int hashCode() { - return Objects.hash(postTime, key); - } - } - /** * Represents a notification group in the notification shade. */ public static class NotificationGroup { - public final String groupKey; public final HashMap children = new HashMap<>(); - public final TreeSet postBatchHistory = new TreeSet<>(); public NotificationEntry summary; public boolean expanded; /** * Is this notification group suppressed, i.e its summary is hidden */ public boolean suppressed; - /** - * The child (which is isolated from this group) to which the alert should be transferred, - * due to priority conversations. - */ - public NotificationEntry alertOverride; - - NotificationGroup(String groupKey) { - this.groupKey = groupKey; - } @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append(" groupKey: ").append(groupKey); - sb.append("\n summary:"); - appendEntry(sb, summary); - sb.append("\n children size: ").append(children.size()); + String result = " summary:\n " + + (summary != null ? summary.getSbn() : "null") + + (summary != null && summary.getDebugThrowable() != null + ? Log.getStackTraceString(summary.getDebugThrowable()) + : ""); + result += "\n children size: " + children.size(); for (NotificationEntry child : children.values()) { - appendEntry(sb, child); - } - sb.append("\n alertOverride:"); - appendEntry(sb, alertOverride); - sb.append("\n summary suppressed: ").append(suppressed); - return sb.toString(); - } - - private void appendEntry(StringBuilder sb, NotificationEntry entry) { - sb.append("\n ").append(entry != null ? entry.getSbn() : "null"); - if (entry != null && entry.getDebugThrowable() != null) { - sb.append(Log.getStackTraceString(entry.getDebugThrowable())); - } - } - } - - /** - * This class is a toggleable buffer for a subset of events of {@link OnGroupChangeListener}. - * When buffering, instead of notifying the listeners it will set internal state that will allow - * it to notify listeners of those events later - */ - private class EventBuffer { - private final HashMap mOldAlertOverrideByGroup = new HashMap<>(); - private boolean mIsBuffering = false; - private boolean mDidGroupsChange = false; - - void notifyAlertOverrideChanged(NotificationGroup group, - NotificationEntry oldAlertOverride) { - if (mIsBuffering) { - // The value in this map is the override before the event. If there is an entry - // already in the map, then we are effectively coalescing two events, which means - // we need to preserve the original initial value. - mOldAlertOverrideByGroup.putIfAbsent(group.groupKey, oldAlertOverride); - } else { - for (OnGroupChangeListener listener : mGroupChangeListeners) { - listener.onGroupAlertOverrideChanged(group, oldAlertOverride, - group.alertOverride); - } - } - } - - void notifyGroupsChanged() { - if (mIsBuffering) { - mDidGroupsChange = true; - } else { - for (OnGroupChangeListener listener : mGroupChangeListeners) { - listener.onGroupsChanged(); - } - } - } - - void startBuffering() { - mIsBuffering = true; - } - - void flushAndStopBuffering() { - // stop buffering so that we can call our own helpers - mIsBuffering = false; - // alert all group alert override changes for groups that were not removed - for (Map.Entry entry : mOldAlertOverrideByGroup.entrySet()) { - NotificationGroup group = mGroupMap.get(entry.getKey()); - if (group == null) { - // The group can be null if this alertOverride changed before the group was - // permanently removed, meaning that there's no guarantee that listeners will - // that field clear. - continue; - } - NotificationEntry oldAlertOverride = entry.getValue(); - if (group.alertOverride == oldAlertOverride) { - // If the final alertOverride equals the initial, it means we coalesced two - // events which undid the change, so we can drop it entirely. - continue; - } - notifyAlertOverrideChanged(group, oldAlertOverride); - } - mOldAlertOverrideByGroup.clear(); - // alert that groups changed - if (mDidGroupsChange) { - notifyGroupsChanged(); - mDidGroupsChange = false; + result += "\n " + child.getSbn() + + (child.getDebugThrowable() != null + ? Log.getStackTraceString(child.getDebugThrowable()) + : ""); } + result += "\n summary suppressed: " + suppressed; + return result; } } @@ -1063,18 +713,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, NotificationGroup group, boolean suppressed) {} - /** - * The alert override of a group has changed. - * - * @param group the group that has changed - * @param oldAlertOverride the previous notification to which the group's alerts were sent - * @param newAlertOverride the notification to which the group's alerts should now be sent - */ - default void onGroupAlertOverrideChanged( - NotificationGroup group, - @Nullable NotificationEntry oldAlertOverride, - @Nullable NotificationEntry newAlertOverride) {} - /** * A group of children just received a summary notification and should therefore become * children of it. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java index 9787a9446019c..3181f520dca22 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java @@ -22,12 +22,12 @@ import android.app.Notification; import android.os.SystemClock; import android.service.notification.StatusBarNotification; import android.util.ArrayMap; -import android.util.Log; import com.android.internal.statusbar.NotificationVisibility; import com.android.systemui.Dependency; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener; +import com.android.systemui.statusbar.AlertingNotificationManager; import com.android.systemui.statusbar.notification.NotificationEntryListener; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; @@ -41,21 +41,17 @@ import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener; import java.util.ArrayList; -import java.util.List; import java.util.Objects; /** * A helper class dealing with the alert interactions between {@link NotificationGroupManagerLegacy} * and {@link HeadsUpManager}. In particular, this class deals with keeping - * the correct notification in a group alerting based off the group suppression and alertOverride. + * the correct notification in a group alerting based off the group suppression. */ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedListener, StateListener { private static final long ALERT_TRANSFER_TIMEOUT = 300; - private static final String TAG = "NotifGroupAlertTransfer"; - private static final boolean DEBUG = StatusBar.DEBUG; - private static final boolean SPEW = StatusBar.SPEW; /** * The list of entries containing group alert metadata for each group. Keyed by group key. @@ -146,98 +142,41 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis @Override public void onGroupSuppressionChanged(NotificationGroup group, boolean suppressed) { - if (DEBUG) { - Log.d(TAG, "!! onGroupSuppressionChanged: group.summary=" + group.summary - + " suppressed=" + suppressed); + if (suppressed) { + if (mHeadsUpManager.isAlerting(group.summary.getKey())) { + handleSuppressedSummaryAlerted(group.summary, mHeadsUpManager); + } + } else { + // Group summary can be null if we are no longer suppressed because the summary was + // removed. In that case, we don't need to alert the summary. + if (group.summary == null) { + return; + } + GroupAlertEntry groupAlertEntry = mGroupAlertEntries.get(mGroupManager.getGroupKey( + group.summary.getSbn())); + // Group is no longer suppressed. We should check if we need to transfer the alert + // back to the summary now that it's no longer suppressed. + if (groupAlertEntry.mAlertSummaryOnNextAddition) { + if (!mHeadsUpManager.isAlerting(group.summary.getKey())) { + alertNotificationWhenPossible(group.summary, mHeadsUpManager); + } + groupAlertEntry.mAlertSummaryOnNextAddition = false; + } else { + checkShouldTransferBack(groupAlertEntry); + } } - NotificationEntry oldAlertOverride = group.alertOverride; - onGroupChanged(group, oldAlertOverride); - } - - @Override - public void onGroupAlertOverrideChanged(NotificationGroup group, - @Nullable NotificationEntry oldAlertOverride, - @Nullable NotificationEntry newAlertOverride) { - if (DEBUG) { - Log.d(TAG, "!! onGroupAlertOverrideChanged: group.summary=" + group.summary - + " oldAlertOverride=" + oldAlertOverride - + " newAlertOverride=" + newAlertOverride); - } - onGroupChanged(group, oldAlertOverride); } }; - /** - * Called when either the suppressed or alertOverride fields of the group changed - * - * @param group the group which changed - * @param oldAlertOverride the previous value of group.alertOverride - */ - private void onGroupChanged(NotificationGroup group, - NotificationEntry oldAlertOverride) { - // Group summary can be null if we are no longer suppressed because the summary was - // removed. In that case, we don't need to alert the summary. - if (group.summary == null) { - if (DEBUG) { - Log.d(TAG, "onGroupChanged: summary is null"); - } - return; - } - if (group.suppressed || group.alertOverride != null) { - checkForForwardAlertTransfer(group.summary, oldAlertOverride); - } else { - if (DEBUG) { - Log.d(TAG, "onGroupChanged: maybe transfer back"); - } - GroupAlertEntry groupAlertEntry = mGroupAlertEntries.get(mGroupManager.getGroupKey( - group.summary.getSbn())); - // Group is no longer suppressed or overridden. - // We should check if we need to transfer the alert back to the summary. - if (groupAlertEntry.mAlertSummaryOnNextAddition) { - if (!mHeadsUpManager.isAlerting(group.summary.getKey())) { - alertNotificationWhenPossible(group.summary); - } - groupAlertEntry.mAlertSummaryOnNextAddition = false; - } else { - checkShouldTransferBack(groupAlertEntry); - } - } - } - @Override public void onHeadsUpStateChanged(NotificationEntry entry, boolean isHeadsUp) { - if (DEBUG) { - Log.d(TAG, "!! onHeadsUpStateChanged: entry=" + entry + " isHeadsUp=" + isHeadsUp); - } - if (isHeadsUp && entry.getSbn().getNotification().isGroupSummary()) { - // a group summary is alerting; trigger the forward transfer checks - checkForForwardAlertTransfer(entry, /* oldAlertOverride */ null); - } + onAlertStateChanged(entry, isHeadsUp, mHeadsUpManager); } - /** - * Handles changes in a group's suppression or alertOverride, but where at least one of those - * conditions is still true (either the group is suppressed, the group has an alertOverride, - * or both). The method determined which kind of child needs to receive the alert, finds the - * entry currently alerting, and makes the transfer. - * - * Internally, this is handled with two main cases: the override needs the alert, or there is - * no override but the summary is suppressed (so an isolated child needs the alert). - * - * @param summary the notification entry of the summary of the logical group. - * @param oldAlertOverride the former value of group.alertOverride, before whatever event - * required us to check for for a transfer condition. - */ - private void checkForForwardAlertTransfer(NotificationEntry summary, - NotificationEntry oldAlertOverride) { - if (DEBUG) { - Log.d(TAG, "checkForForwardAlertTransfer: enter"); - } - NotificationGroup group = mGroupManager.getGroupForSummary(summary.getSbn()); - if (group != null && group.alertOverride != null) { - handleOverriddenSummaryAlerted(summary); - } else if (mGroupManager.isSummaryOfSuppressedGroup(summary.getSbn())) { - handleSuppressedSummaryAlerted(summary, oldAlertOverride); + private void onAlertStateChanged(NotificationEntry entry, boolean isAlerting, + AlertingNotificationManager alertManager) { + if (isAlerting && mGroupManager.isSummaryOfSuppressedGroup(entry.getSbn())) { + handleSuppressedSummaryAlerted(entry, alertManager); } } @@ -247,16 +186,9 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis // see as early as we can if we need to abort a transfer. @Override public void onPendingEntryAdded(NotificationEntry entry) { - if (DEBUG) { - Log.d(TAG, "!! onPendingEntryAdded: entry=" + entry); - } String groupKey = mGroupManager.getGroupKey(entry.getSbn()); GroupAlertEntry groupAlertEntry = mGroupAlertEntries.get(groupKey); - if (groupAlertEntry != null && groupAlertEntry.mGroup.alertOverride == null) { - // new pending group entries require us to transfer back from the child to the - // group, but alertOverrides are only present in very limited circumstances, so - // while it's possible the group should ALSO alert, the previous detection which set - // this alertOverride won't be invalidated by this notification added to this group. + if (groupAlertEntry != null) { checkShouldTransferBack(groupAlertEntry); } } @@ -330,128 +262,43 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis } /** - * Handles the scenario where a summary that has been suppressed is itself, or has a former - * alertOverride (in the form of an isolated logical child) which was alerted. A suppressed + * Handles the scenario where a summary that has been suppressed is alerted. A suppressed * summary should for all intents and purposes be invisible to the user and as a result should * not alert. When this is the case, it is our responsibility to pass the alert to the * appropriate child which will be the representative notification alerting for the group. * - * @param summary the summary that is suppressed and (potentially) alerting - * @param oldAlertOverride the alertOverride before whatever event triggered this method. If - * the alert override was removed, this will be the entry that should - * be transferred back from. + * @param summary the summary that is suppressed and alerting + * @param alertManager the alert manager that manages the alerting summary */ private void handleSuppressedSummaryAlerted(@NonNull NotificationEntry summary, - NotificationEntry oldAlertOverride) { - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: summary=" + summary); - } + @NonNull AlertingNotificationManager alertManager) { + StatusBarNotification sbn = summary.getSbn(); GroupAlertEntry groupAlertEntry = - mGroupAlertEntries.get(mGroupManager.getGroupKey(summary.getSbn())); - + mGroupAlertEntries.get(mGroupManager.getGroupKey(sbn)); if (!mGroupManager.isSummaryOfSuppressedGroup(summary.getSbn()) + || !alertManager.isAlerting(sbn.getKey()) || groupAlertEntry == null) { - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: invalid state"); - } - return; - } - boolean summaryIsAlerting = mHeadsUpManager.isAlerting(summary.getKey()); - boolean priorityIsAlerting = oldAlertOverride != null - && mHeadsUpManager.isAlerting(oldAlertOverride.getKey()); - if (!summaryIsAlerting && !priorityIsAlerting) { - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: no summary or override alerting"); - } return; } if (pendingInflationsWillAddChildren(groupAlertEntry.mGroup)) { // New children will actually be added to this group, let's not transfer the alert. - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: pending inflations"); - } return; } NotificationEntry child = mGroupManager.getLogicalChildren(summary.getSbn()).iterator().next(); - if (summaryIsAlerting) { - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: transfer summary -> child"); + if (child != null) { + if (child.getRow().keepInParent() + || child.isRowRemoved() + || child.isRowDismissed()) { + // The notification is actually already removed. No need to alert it. + return; } - tryTransferAlertState(summary, /*from*/ summary, /*to*/ child, groupAlertEntry); - return; - } - // Summary didn't have the alert, so we're in "transfer back" territory. First, make sure - // it's not too late to transfer back, then transfer the alert from the oldAlertOverride to - // the isolated child which should receive the alert. - if (!canStillTransferBack(groupAlertEntry)) { - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: transfer from override: too late"); - } - return; - } - - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: transfer override -> child"); - } - tryTransferAlertState(summary, /*from*/ oldAlertOverride, /*to*/ child, groupAlertEntry); - } - - /** - * Checks for and handles the scenario where the given entry is the summary of a group which - * has an alertOverride, and either the summary itself or one of its logical isolated children - * is currently alerting (which happens if the summary is suppressed). - */ - private void handleOverriddenSummaryAlerted(NotificationEntry summary) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: summary=" + summary); - } - GroupAlertEntry groupAlertEntry = - mGroupAlertEntries.get(mGroupManager.getGroupKey(summary.getSbn())); - NotificationGroup group = mGroupManager.getGroupForSummary(summary.getSbn()); - if (group == null || group.alertOverride == null || groupAlertEntry == null) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: invalid state"); - } - return; - } - boolean summaryIsAlerting = mHeadsUpManager.isAlerting(summary.getKey()); - if (summaryIsAlerting) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: transfer summary -> override"); - } - tryTransferAlertState(summary, /*from*/ summary, group.alertOverride, groupAlertEntry); - return; - } - // Summary didn't have the alert, so we're in "transfer back" territory. First, make sure - // it's not too late to transfer back, then remove the alert from any of the logical - // children, and if one of them was alerting, we can alert the override. - if (!canStillTransferBack(groupAlertEntry)) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: transfer from child: too late"); - } - return; - } - List children = mGroupManager.getLogicalChildren(summary.getSbn()); - if (children == null) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: no children"); - } - return; - } - children.remove(group.alertOverride); // do not release the alert on our desired destination - boolean releasedChild = releaseChildAlerts(children); - if (releasedChild) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: transfer child -> override"); - } - tryTransferAlertState(summary, /*from*/ null, group.alertOverride, groupAlertEntry); - } else { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: no child alert released"); + if (!alertManager.isAlerting(child.getKey()) && onlySummaryAlerts(summary)) { + groupAlertEntry.mLastAlertTransferTime = SystemClock.elapsedRealtime(); } + transferAlertState(summary, child, alertManager); } } @@ -460,37 +307,14 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis * immediately to have the incorrect one up as short as possible. The second should alert * when possible. * - * @param summary entry of the summary * @param fromEntry entry to transfer alert from * @param toEntry entry to transfer to + * @param alertManager alert manager for the alert type */ - private void tryTransferAlertState( - NotificationEntry summary, - NotificationEntry fromEntry, - NotificationEntry toEntry, - GroupAlertEntry groupAlertEntry) { - if (toEntry != null) { - if (toEntry.getRow().keepInParent() - || toEntry.isRowRemoved() - || toEntry.isRowDismissed()) { - // The notification is actually already removed. No need to alert it. - return; - } - if (!mHeadsUpManager.isAlerting(toEntry.getKey()) && onlySummaryAlerts(summary)) { - groupAlertEntry.mLastAlertTransferTime = SystemClock.elapsedRealtime(); - } - if (DEBUG) { - Log.d(TAG, "transferAlertState: fromEntry=" + fromEntry + " toEntry=" + toEntry); - } - transferAlertState(fromEntry, toEntry); - } - } - private void transferAlertState(@Nullable NotificationEntry fromEntry, - @NonNull NotificationEntry toEntry) { - if (fromEntry != null) { - mHeadsUpManager.removeNotification(fromEntry.getKey(), true /* releaseImmediately */); - } - alertNotificationWhenPossible(toEntry); + private void transferAlertState(@NonNull NotificationEntry fromEntry, @NonNull NotificationEntry toEntry, + @NonNull AlertingNotificationManager alertManager) { + alertManager.removeNotification(fromEntry.getKey(), true /* releaseImmediately */); + alertNotificationWhenPossible(toEntry, alertManager); } /** @@ -502,13 +326,11 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis * more children are coming. Thus, if a child is added within a certain timeframe after we * transfer, we back out and alert the summary again. * - * An alert can only transfer back within a small window of time after a transfer away from the - * summary to a child happened. - * * @param groupAlertEntry group alert entry to check */ private void checkShouldTransferBack(@NonNull GroupAlertEntry groupAlertEntry) { - if (canStillTransferBack(groupAlertEntry)) { + if (SystemClock.elapsedRealtime() - groupAlertEntry.mLastAlertTransferTime + < ALERT_TRANSFER_TIMEOUT) { NotificationEntry summary = groupAlertEntry.mGroup.summary; if (!onlySummaryAlerts(summary)) { @@ -516,17 +338,30 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis } ArrayList children = mGroupManager.getLogicalChildren( summary.getSbn()); - int numActiveChildren = children.size(); + int numChildren = children.size(); int numPendingChildren = getPendingChildrenNotAlerting(groupAlertEntry.mGroup); - int numChildren = numActiveChildren + numPendingChildren; + numChildren += numPendingChildren; if (numChildren <= 1) { return; } - boolean releasedChild = releaseChildAlerts(children); + boolean releasedChild = false; + for (int i = 0; i < children.size(); i++) { + NotificationEntry entry = children.get(i); + if (onlySummaryAlerts(entry) && mHeadsUpManager.isAlerting(entry.getKey())) { + releasedChild = true; + mHeadsUpManager.removeNotification( + entry.getKey(), true /* releaseImmediately */); + } + if (mPendingAlerts.containsKey(entry.getKey())) { + // This is the child that would've been removed if it was inflated. + releasedChild = true; + mPendingAlerts.get(entry.getKey()).mAbortOnInflation = true; + } + } if (releasedChild && !mHeadsUpManager.isAlerting(summary.getKey())) { - boolean notifyImmediately = numActiveChildren > 1; + boolean notifyImmediately = (numChildren - numPendingChildren) > 1; if (notifyImmediately) { - alertNotificationWhenPossible(summary); + alertNotificationWhenPossible(summary, mHeadsUpManager); } else { // Should wait until the pending child inflates before alerting. groupAlertEntry.mAlertSummaryOnNextAddition = true; @@ -536,61 +371,25 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis } } - private boolean canStillTransferBack(@NonNull GroupAlertEntry groupAlertEntry) { - return SystemClock.elapsedRealtime() - groupAlertEntry.mLastAlertTransferTime - < ALERT_TRANSFER_TIMEOUT; - } - - private boolean releaseChildAlerts(List children) { - boolean releasedChild = false; - if (SPEW) { - Log.d(TAG, "releaseChildAlerts: numChildren=" + children.size()); - } - for (int i = 0; i < children.size(); i++) { - NotificationEntry entry = children.get(i); - if (SPEW) { - Log.d(TAG, "releaseChildAlerts: checking i=" + i + " entry=" + entry - + " onlySummaryAlerts=" + onlySummaryAlerts(entry) - + " isAlerting=" + mHeadsUpManager.isAlerting(entry.getKey()) - + " isPendingAlert=" + mPendingAlerts.containsKey(entry.getKey())); - } - if (onlySummaryAlerts(entry) && mHeadsUpManager.isAlerting(entry.getKey())) { - releasedChild = true; - mHeadsUpManager.removeNotification( - entry.getKey(), true /* releaseImmediately */); - } - if (mPendingAlerts.containsKey(entry.getKey())) { - // This is the child that would've been removed if it was inflated. - releasedChild = true; - mPendingAlerts.get(entry.getKey()).mAbortOnInflation = true; - } - } - if (SPEW) { - Log.d(TAG, "releaseChildAlerts: didRelease=" + releasedChild); - } - return releasedChild; - } - /** * Tries to alert the notification. If its content view is not inflated, we inflate and continue * when the entry finishes inflating the view. * * @param entry entry to show + * @param alertManager alert manager for the alert type */ - private void alertNotificationWhenPossible(@NonNull NotificationEntry entry) { - @InflationFlag int contentFlag = mHeadsUpManager.getContentFlag(); + private void alertNotificationWhenPossible(@NonNull NotificationEntry entry, + @NonNull AlertingNotificationManager alertManager) { + @InflationFlag int contentFlag = alertManager.getContentFlag(); final RowContentBindParams params = mRowContentBindStage.getStageParams(entry); if ((params.getContentViews() & contentFlag) == 0) { - if (DEBUG) { - Log.d(TAG, "alertNotificationWhenPossible: async requestRebind entry=" + entry); - } mPendingAlerts.put(entry.getKey(), new PendingAlertInfo(entry)); params.requireContentViews(contentFlag); mRowContentBindStage.requestRebind(entry, en -> { PendingAlertInfo alertInfo = mPendingAlerts.remove(entry.getKey()); if (alertInfo != null) { if (alertInfo.isStillValid()) { - alertNotificationWhenPossible(entry); + alertNotificationWhenPossible(entry, mHeadsUpManager); } else { // The transfer is no longer valid. Free the content. mRowContentBindStage.getStageParams(entry).markContentViewsFreeable( @@ -601,16 +400,10 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis }); return; } - if (mHeadsUpManager.isAlerting(entry.getKey())) { - if (DEBUG) { - Log.d(TAG, "alertNotificationWhenPossible: continue alerting entry=" + entry); - } - mHeadsUpManager.updateNotification(entry.getKey(), true /* alert */); + if (alertManager.isAlerting(entry.getKey())) { + alertManager.updateNotification(entry.getKey(), true /* alert */); } else { - if (DEBUG) { - Log.d(TAG, "alertNotificationWhenPossible: start alerting entry=" + entry); - } - mHeadsUpManager.showNotification(entry); + alertManager.showNotification(entry); } } From c42c5a3347798c09c556d3365af6a8cae077d1ed Mon Sep 17 00:00:00 2001 From: Daniel Chapin Date: Mon, 3 May 2021 19:55:48 +0000 Subject: [PATCH 155/192] Revert "Fix VIP conversations alerting incorrectly." This reverts commit 64c85ac6f5f20d031a7e192366b8335fab0253c2. Reason for revert: DF blocking Bug: 187009701 Change-Id: I04dfdf20ad5c7df3c6dddf0cc12540b179162f0b (cherry picked from commit 25c273584ad92f566c41c635a886be9375f50d39) --- .../statusbar/NotificationListener.java | 3 +- .../NotificationGroupManagerLegacy.java | 438 ++---------------- .../NotificationGroupAlertTransferHelper.java | 365 ++++----------- 3 files changed, 118 insertions(+), 688 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java index 5437ce63475ec..7f31fddbfb6c3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java @@ -18,6 +18,7 @@ package com.android.systemui.statusbar; import static com.android.systemui.statusbar.RemoteInputController.processForRemoteInput; import static com.android.systemui.statusbar.notification.NotificationEntryManager.UNDEFINED_DISMISS_REASON; +import static com.android.systemui.statusbar.phone.StatusBar.DEBUG; import android.annotation.NonNull; import android.annotation.SuppressLint; @@ -34,7 +35,6 @@ import android.util.Log; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.statusbar.dagger.StatusBarModule; import com.android.systemui.statusbar.phone.NotificationListenerWithPlugins; -import com.android.systemui.statusbar.phone.StatusBar; import java.util.ArrayList; import java.util.List; @@ -46,7 +46,6 @@ import java.util.List; @SuppressLint("OverrideAbstract") public class NotificationListener extends NotificationListenerWithPlugins { private static final String TAG = "NotificationListener"; - private static final boolean DEBUG = StatusBar.DEBUG; private final Context mContext; private final NotificationManager mNotificationManager; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java index d95c265c14608..d6356de5ea51b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/legacy/NotificationGroupManagerLegacy.java @@ -16,9 +16,7 @@ package com.android.systemui.statusbar.notification.collection.legacy; -import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.Notification; import android.service.notification.StatusBarNotification; import android.util.ArraySet; import android.util.Log; @@ -33,7 +31,6 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager; import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier; -import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener; import com.android.wm.shell.bubbles.Bubbles; @@ -42,12 +39,10 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.TreeSet; import javax.inject.Inject; @@ -63,21 +58,13 @@ import dagger.Lazy; public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, StateListener, GroupMembershipManager, GroupExpansionManager, Dumpable { - private static final String TAG = "NotifGroupManager"; - private static final boolean DEBUG = StatusBar.DEBUG; - private static final boolean SPEW = StatusBar.SPEW; - /** - * The maximum amount of time (in ms) between the posting of notifications that can be - * considered part of the same update batch. - */ - private static final long POST_BATCH_MAX_AGE = 5000; + private static final String TAG = "NotificationGroupManager"; private final HashMap mGroupMap = new HashMap<>(); private final ArraySet mExpansionChangeListeners = new ArraySet<>(); private final ArraySet mGroupChangeListeners = new ArraySet<>(); private final Lazy mPeopleNotificationIdentifier; private final Optional mBubblesOptional; - private final EventBuffer mEventBuffer = new EventBuffer(); private int mBarState = -1; private HashMap mIsolatedEntries = new HashMap<>(); private HeadsUpManager mHeadsUpManager; @@ -147,14 +134,8 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, * When we want to remove an entry from being tracked for grouping */ public void onEntryRemoved(NotificationEntry removed) { - if (SPEW) { - Log.d(TAG, "onEntryRemoved: entry=" + removed); - } onEntryRemovedInternal(removed, removed.getSbn()); - StatusBarNotification oldSbn = mIsolatedEntries.remove(removed.getKey()); - if (oldSbn != null) { - updateSuppression(mGroupMap.get(oldSbn.getGroupKey())); - } + mIsolatedEntries.remove(removed.getKey()); } /** @@ -181,9 +162,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, // the close future. See b/23676310 for reference. return; } - if (SPEW) { - Log.d(TAG, "onEntryRemovedInternal: entry=" + removed + " group=" + group.groupKey); - } if (isGroupChild(removed.getKey(), isGroup, isGroupSummary)) { group.children.remove(removed.getKey()); } else { @@ -204,9 +182,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, * Notify the group manager that a new entry was added */ public void onEntryAdded(final NotificationEntry added) { - if (SPEW) { - Log.d(TAG, "onEntryAdded: entry=" + added); - } updateIsolation(added); onEntryAddedInternal(added); } @@ -220,16 +195,13 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, String groupKey = getGroupKey(sbn); NotificationGroup group = mGroupMap.get(groupKey); if (group == null) { - group = new NotificationGroup(groupKey); + group = new NotificationGroup(); mGroupMap.put(groupKey, group); for (OnGroupChangeListener listener : mGroupChangeListeners) { listener.onGroupCreated(group, groupKey); } } - if (SPEW) { - Log.d(TAG, "onEntryAddedInternal: entry=" + added + " group=" + group.groupKey); - } if (isGroupChild) { NotificationEntry existing = group.children.get(added.getKey()); if (existing != null && existing != added) { @@ -241,11 +213,9 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, + " added removed" + added.isRowRemoved(), new Throwable()); } group.children.put(added.getKey(), added); - addToPostBatchHistory(group, added); updateSuppression(group); } else { group.summary = added; - addToPostBatchHistory(group, added); group.expanded = added.areChildrenExpanded(); updateSuppression(group); if (!group.children.isEmpty()) { @@ -261,27 +231,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, } } - private void addToPostBatchHistory(NotificationGroup group, @Nullable NotificationEntry entry) { - if (entry == null) { - return; - } - boolean didAdd = group.postBatchHistory.add(new PostRecord(entry)); - if (didAdd) { - trimPostBatchHistory(group.postBatchHistory); - } - } - - /** remove all history that's too old to be in the batch. */ - private void trimPostBatchHistory(@NonNull TreeSet postBatchHistory) { - if (postBatchHistory.size() <= 1) { - return; - } - long batchStartTime = postBatchHistory.last().postTime - POST_BATCH_MAX_AGE; - while (!postBatchHistory.isEmpty() && postBatchHistory.first().postTime < batchStartTime) { - postBatchHistory.pollFirst(); - } - } - private void onEntryBecomingChild(NotificationEntry entry) { updateIsolation(entry); } @@ -290,9 +239,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, if (group == null) { return; } - NotificationEntry prevAlertOverride = group.alertOverride; - group.alertOverride = getPriorityConversationAlertOverride(group); - int childCount = 0; boolean hasBubbles = false; for (NotificationEntry entry : group.children.values()) { @@ -309,148 +255,18 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, group.suppressed = group.summary != null && !group.expanded && (childCount == 1 || (childCount == 0 - && group.summary.getSbn().getNotification().isGroupSummary() - && (hasIsolatedChildren(group) || hasBubbles))); - - boolean alertOverrideChanged = prevAlertOverride != group.alertOverride; - boolean suppressionChanged = prevSuppressed != group.suppressed; - if (alertOverrideChanged || suppressionChanged) { - if (DEBUG && alertOverrideChanged) { - Log.d(TAG, group + " alertOverride was=" + prevAlertOverride + " now=" - + group.alertOverride); - } - if (DEBUG && suppressionChanged) { - Log.d(TAG, group + " suppressed changed to " + group.suppressed); - } - if (!mIsUpdatingUnchangedGroup) { - if (alertOverrideChanged) { - mEventBuffer.notifyAlertOverrideChanged(group, prevAlertOverride); - } - if (suppressionChanged) { - for (OnGroupChangeListener listener : mGroupChangeListeners) { - listener.onGroupSuppressionChanged(group, group.suppressed); - } - } - mEventBuffer.notifyGroupsChanged(); - } else { - if (DEBUG) { - Log.d(TAG, group + " did not notify listeners of above change(s)"); + && group.summary.getSbn().getNotification().isGroupSummary() + && (hasIsolatedChildren(group) || hasBubbles))); + if (prevSuppressed != group.suppressed) { + for (OnGroupChangeListener listener : mGroupChangeListeners) { + if (!mIsUpdatingUnchangedGroup) { + listener.onGroupSuppressionChanged(group, group.suppressed); + listener.onGroupsChanged(); } } } } - /** - * Finds the isolated logical child of this group which is should be alerted instead. - * - * Notifications from priority conversations are isolated from their groups to make them more - * prominent, however apps may post these with a GroupAlertBehavior that has the group receiving - * the alert. This would lead to the group alerting even though the conversation that was - * updated was not actually a part of that group. This method finds the best priority - * conversation in this situation, if there is one, so they can be set as the alertOverride of - * the group. - * - * @param group the group to check - * @return the entry which should receive the alert instead of the group, if any. - */ - @Nullable - private NotificationEntry getPriorityConversationAlertOverride(NotificationGroup group) { - // GOAL: if there is a priority child which wouldn't alert based on its groupAlertBehavior, - // but which should be alerting (because priority conversations are isolated), find it. - if (group == null || group.summary == null) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: null group or summary"); - } - return null; - } - if (isIsolated(group.summary.getKey())) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: isolated group"); - } - return null; - } - - // Precondiions: - // * Only necessary when all notifications in the group use GROUP_ALERT_SUMMARY - // * Only necessary when at least one notification in the group is on a priority channel - if (group.summary.getSbn().getNotification().getGroupAlertBehavior() - != Notification.GROUP_ALERT_SUMMARY) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: summary != GROUP_ALERT_SUMMARY"); - } - return null; - } - - // Get the important children first, copy the keys for the final importance check, - // then add the non-isolated children to the map for unified lookup. - HashMap children = getImportantConversations(group); - if (children == null || children.isEmpty()) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: no important conversations"); - } - return null; - } - HashSet importantChildKeys = new HashSet<>(children.keySet()); - children.putAll(group.children); - - // Ensure all children have GROUP_ALERT_SUMMARY - for (NotificationEntry child : children.values()) { - if (child.getSbn().getNotification().getGroupAlertBehavior() - != Notification.GROUP_ALERT_SUMMARY) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: " - + "child != GROUP_ALERT_SUMMARY"); - } - return null; - } - } - - // Create a merged post history from all the children - TreeSet combinedHistory = new TreeSet<>(group.postBatchHistory); - for (String importantChildKey : importantChildKeys) { - NotificationGroup importantChildGroup = mGroupMap.get(importantChildKey); - combinedHistory.addAll(importantChildGroup.postBatchHistory); - } - trimPostBatchHistory(combinedHistory); - - // This is a streamlined implementation of the following idea: - // * From the subset of notifications in the latest 'batch' of updates. A batch is: - // * Notifs posted less than POST_BATCH_MAX_AGE before the most recently posted. - // * Only including notifs newer than the second-to-last post of any notification. - // * Find the newest child in the batch -- the with the largest 'when' value. - // * If the newest child is a priority conversation, set that as the override. - HashSet batchKeys = new HashSet<>(); - long newestChildWhen = -1; - NotificationEntry newestChild = null; - // Iterate backwards through the post history, tracking the child with the smallest sort key - for (PostRecord record : combinedHistory.descendingSet()) { - if (batchKeys.contains(record.key)) { - // Once you see a notification again, the batch has ended - break; - } - batchKeys.add(record.key); - NotificationEntry child = children.get(record.key); - if (child != null) { - long childWhen = child.getSbn().getNotification().when; - if (newestChild == null || childWhen > newestChildWhen) { - newestChildWhen = childWhen; - newestChild = child; - } - } - } - if (newestChild != null && importantChildKeys.contains(newestChild.getKey())) { - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: result=" + newestChild); - } - return newestChild; - } - if (SPEW) { - Log.d(TAG, "getPriorityConversationAlertOverride: result=null, newestChild=" - + newestChild); - } - return null; - } - private boolean hasIsolatedChildren(NotificationGroup group) { return getNumberOfIsolatedChildren(group.summary.getSbn().getGroupKey()) != 0; } @@ -465,33 +281,12 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, return count; } - @Nullable - private HashMap getImportantConversations(NotificationGroup group) { - String groupKey = group.summary.getSbn().getGroupKey(); - HashMap result = null; - for (StatusBarNotification sbn : mIsolatedEntries.values()) { - if (sbn.getGroupKey().equals(groupKey)) { - NotificationEntry entry = mGroupMap.get(sbn.getKey()).summary; - if (isImportantConversation(entry)) { - if (result == null) { - result = new HashMap<>(); - } - result.put(sbn.getKey(), entry); - } - } - } - return result; - } - /** * Update an entry's group information * @param entry notification entry to update * @param oldNotification previous notification info before this update */ public void onEntryUpdated(NotificationEntry entry, StatusBarNotification oldNotification) { - if (SPEW) { - Log.d(TAG, "onEntryUpdated: entry=" + entry); - } onEntryUpdated(entry, oldNotification.getGroupKey(), oldNotification.isGroup(), oldNotification.getNotification().isGroupSummary()); } @@ -530,17 +325,7 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, * Whether the given notification is the summary of a group that is being suppressed */ public boolean isSummaryOfSuppressedGroup(StatusBarNotification sbn) { - return sbn.getNotification().isGroupSummary() && isGroupSuppressed(getGroupKey(sbn)); - } - - /** - * If the given notification is a summary, get the group for it. - */ - public NotificationGroup getGroupForSummary(StatusBarNotification sbn) { - if (sbn.getNotification().isGroupSummary()) { - return mGroupMap.get(getGroupKey(sbn)); - } - return null; + return isGroupSuppressed(getGroupKey(sbn)) && sbn.getNotification().isGroupSummary(); } private boolean isOnlyChild(StatusBarNotification sbn) { @@ -760,7 +545,9 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, if (!sbn.isGroup() || sbn.getNotification().isGroupSummary()) { return false; } - if (isImportantConversation(entry)) { + int peopleNotificationType = + mPeopleNotificationIdentifier.get().getPeopleNotificationType(entry); + if (peopleNotificationType == PeopleNotificationIdentifier.TYPE_IMPORTANT_PERSON) { return true; } if (mHeadsUpManager != null && !mHeadsUpManager.isAlerting(entry.getKey())) { @@ -773,25 +560,18 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, || isGroupNotFullyVisible(notificationGroup)); } - private boolean isImportantConversation(NotificationEntry entry) { - int peopleNotificationType = - mPeopleNotificationIdentifier.get().getPeopleNotificationType(entry); - return peopleNotificationType == PeopleNotificationIdentifier.TYPE_IMPORTANT_PERSON; - } - /** * Isolate a notification from its group so that it visually shows as its own group. * * @param entry the notification to isolate */ private void isolateNotification(NotificationEntry entry) { - if (SPEW) { - Log.d(TAG, "isolateNotification: entry=" + entry); - } + StatusBarNotification sbn = entry.getSbn(); + // We will be isolated now, so lets update the groups onEntryRemovedInternal(entry, entry.getSbn()); - mIsolatedEntries.put(entry.getKey(), entry.getSbn()); + mIsolatedEntries.put(sbn.getKey(), sbn); onEntryAddedInternal(entry); // We also need to update the suppression of the old group, because this call comes @@ -808,14 +588,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, * Update the isolation of an entry, splitting it from the group. */ public void updateIsolation(NotificationEntry entry) { - // We need to buffer a few events because we do isolation changes in 3 steps: - // removeInternal, update mIsolatedEntries, addInternal. This means that often the - // alertOverride will update on the removal, however processing the event in that case can - // cause problems because the mIsolatedEntries map is not in its final state, so the event - // listener may be unable to correctly determine the true state of the group. By delaying - // the alertOverride change until after the add phase, we can ensure that listeners only - // have to handle a consistent state. - mEventBuffer.startBuffering(); boolean isIsolated = isIsolated(entry.getSbn().getKey()); if (shouldIsolate(entry)) { if (!isIsolated) { @@ -824,7 +596,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, } else if (isIsolated) { stopIsolatingNotification(entry); } - mEventBuffer.flushAndStopBuffering(); } /** @@ -833,15 +604,15 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, * @param entry the notification to un-isolate */ private void stopIsolatingNotification(NotificationEntry entry) { - if (SPEW) { - Log.d(TAG, "stopIsolatingNotification: entry=" + entry); - } - // not isolated anymore, we need to update the groups - onEntryRemovedInternal(entry, entry.getSbn()); - mIsolatedEntries.remove(entry.getKey()); - onEntryAddedInternal(entry); - for (OnGroupChangeListener listener : mGroupChangeListeners) { - listener.onGroupsChanged(); + StatusBarNotification sbn = entry.getSbn(); + if (isIsolated(sbn.getKey())) { + // not isolated anymore, we need to update the groups + onEntryRemovedInternal(entry, entry.getSbn()); + mIsolatedEntries.remove(sbn.getKey()); + onEntryAddedInternal(entry); + for (OnGroupChangeListener listener : mGroupChangeListeners) { + listener.onGroupsChanged(); + } } } @@ -876,155 +647,34 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, setStatusBarState(newState); } - /** - * A record of a notification being posted, containing the time of the post and the key of the - * notification entry. These are stored in a TreeSet by the NotificationGroup and used to - * calculate a batch of notifications. - */ - public static class PostRecord implements Comparable { - public final long postTime; - public final String key; - - /** constructs a record containing the post time and key from the notification entry */ - public PostRecord(@NonNull NotificationEntry entry) { - this.postTime = entry.getSbn().getPostTime(); - this.key = entry.getKey(); - } - - @Override - public int compareTo(PostRecord o) { - int postTimeComparison = Long.compare(this.postTime, o.postTime); - return postTimeComparison == 0 - ? String.CASE_INSENSITIVE_ORDER.compare(this.key, o.key) - : postTimeComparison; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - PostRecord that = (PostRecord) o; - return postTime == that.postTime && key.equals(that.key); - } - - @Override - public int hashCode() { - return Objects.hash(postTime, key); - } - } - /** * Represents a notification group in the notification shade. */ public static class NotificationGroup { - public final String groupKey; public final HashMap children = new HashMap<>(); - public final TreeSet postBatchHistory = new TreeSet<>(); public NotificationEntry summary; public boolean expanded; /** * Is this notification group suppressed, i.e its summary is hidden */ public boolean suppressed; - /** - * The child (which is isolated from this group) to which the alert should be transferred, - * due to priority conversations. - */ - public NotificationEntry alertOverride; - - NotificationGroup(String groupKey) { - this.groupKey = groupKey; - } @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append(" groupKey: ").append(groupKey); - sb.append("\n summary:"); - appendEntry(sb, summary); - sb.append("\n children size: ").append(children.size()); + String result = " summary:\n " + + (summary != null ? summary.getSbn() : "null") + + (summary != null && summary.getDebugThrowable() != null + ? Log.getStackTraceString(summary.getDebugThrowable()) + : ""); + result += "\n children size: " + children.size(); for (NotificationEntry child : children.values()) { - appendEntry(sb, child); - } - sb.append("\n alertOverride:"); - appendEntry(sb, alertOverride); - sb.append("\n summary suppressed: ").append(suppressed); - return sb.toString(); - } - - private void appendEntry(StringBuilder sb, NotificationEntry entry) { - sb.append("\n ").append(entry != null ? entry.getSbn() : "null"); - if (entry != null && entry.getDebugThrowable() != null) { - sb.append(Log.getStackTraceString(entry.getDebugThrowable())); - } - } - } - - /** - * This class is a toggleable buffer for a subset of events of {@link OnGroupChangeListener}. - * When buffering, instead of notifying the listeners it will set internal state that will allow - * it to notify listeners of those events later - */ - private class EventBuffer { - private final HashMap mOldAlertOverrideByGroup = new HashMap<>(); - private boolean mIsBuffering = false; - private boolean mDidGroupsChange = false; - - void notifyAlertOverrideChanged(NotificationGroup group, - NotificationEntry oldAlertOverride) { - if (mIsBuffering) { - // The value in this map is the override before the event. If there is an entry - // already in the map, then we are effectively coalescing two events, which means - // we need to preserve the original initial value. - mOldAlertOverrideByGroup.putIfAbsent(group.groupKey, oldAlertOverride); - } else { - for (OnGroupChangeListener listener : mGroupChangeListeners) { - listener.onGroupAlertOverrideChanged(group, oldAlertOverride, - group.alertOverride); - } - } - } - - void notifyGroupsChanged() { - if (mIsBuffering) { - mDidGroupsChange = true; - } else { - for (OnGroupChangeListener listener : mGroupChangeListeners) { - listener.onGroupsChanged(); - } - } - } - - void startBuffering() { - mIsBuffering = true; - } - - void flushAndStopBuffering() { - // stop buffering so that we can call our own helpers - mIsBuffering = false; - // alert all group alert override changes for groups that were not removed - for (Map.Entry entry : mOldAlertOverrideByGroup.entrySet()) { - NotificationGroup group = mGroupMap.get(entry.getKey()); - if (group == null) { - // The group can be null if this alertOverride changed before the group was - // permanently removed, meaning that there's no guarantee that listeners will - // that field clear. - continue; - } - NotificationEntry oldAlertOverride = entry.getValue(); - if (group.alertOverride == oldAlertOverride) { - // If the final alertOverride equals the initial, it means we coalesced two - // events which undid the change, so we can drop it entirely. - continue; - } - notifyAlertOverrideChanged(group, oldAlertOverride); - } - mOldAlertOverrideByGroup.clear(); - // alert that groups changed - if (mDidGroupsChange) { - notifyGroupsChanged(); - mDidGroupsChange = false; + result += "\n " + child.getSbn() + + (child.getDebugThrowable() != null + ? Log.getStackTraceString(child.getDebugThrowable()) + : ""); } + result += "\n summary suppressed: " + suppressed; + return result; } } @@ -1063,18 +713,6 @@ public class NotificationGroupManagerLegacy implements OnHeadsUpChangedListener, NotificationGroup group, boolean suppressed) {} - /** - * The alert override of a group has changed. - * - * @param group the group that has changed - * @param oldAlertOverride the previous notification to which the group's alerts were sent - * @param newAlertOverride the notification to which the group's alerts should now be sent - */ - default void onGroupAlertOverrideChanged( - NotificationGroup group, - @Nullable NotificationEntry oldAlertOverride, - @Nullable NotificationEntry newAlertOverride) {} - /** * A group of children just received a summary notification and should therefore become * children of it. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java index 9787a9446019c..3181f520dca22 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java @@ -22,12 +22,12 @@ import android.app.Notification; import android.os.SystemClock; import android.service.notification.StatusBarNotification; import android.util.ArrayMap; -import android.util.Log; import com.android.internal.statusbar.NotificationVisibility; import com.android.systemui.Dependency; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener; +import com.android.systemui.statusbar.AlertingNotificationManager; import com.android.systemui.statusbar.notification.NotificationEntryListener; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; @@ -41,21 +41,17 @@ import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener; import java.util.ArrayList; -import java.util.List; import java.util.Objects; /** * A helper class dealing with the alert interactions between {@link NotificationGroupManagerLegacy} * and {@link HeadsUpManager}. In particular, this class deals with keeping - * the correct notification in a group alerting based off the group suppression and alertOverride. + * the correct notification in a group alerting based off the group suppression. */ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedListener, StateListener { private static final long ALERT_TRANSFER_TIMEOUT = 300; - private static final String TAG = "NotifGroupAlertTransfer"; - private static final boolean DEBUG = StatusBar.DEBUG; - private static final boolean SPEW = StatusBar.SPEW; /** * The list of entries containing group alert metadata for each group. Keyed by group key. @@ -146,98 +142,41 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis @Override public void onGroupSuppressionChanged(NotificationGroup group, boolean suppressed) { - if (DEBUG) { - Log.d(TAG, "!! onGroupSuppressionChanged: group.summary=" + group.summary - + " suppressed=" + suppressed); + if (suppressed) { + if (mHeadsUpManager.isAlerting(group.summary.getKey())) { + handleSuppressedSummaryAlerted(group.summary, mHeadsUpManager); + } + } else { + // Group summary can be null if we are no longer suppressed because the summary was + // removed. In that case, we don't need to alert the summary. + if (group.summary == null) { + return; + } + GroupAlertEntry groupAlertEntry = mGroupAlertEntries.get(mGroupManager.getGroupKey( + group.summary.getSbn())); + // Group is no longer suppressed. We should check if we need to transfer the alert + // back to the summary now that it's no longer suppressed. + if (groupAlertEntry.mAlertSummaryOnNextAddition) { + if (!mHeadsUpManager.isAlerting(group.summary.getKey())) { + alertNotificationWhenPossible(group.summary, mHeadsUpManager); + } + groupAlertEntry.mAlertSummaryOnNextAddition = false; + } else { + checkShouldTransferBack(groupAlertEntry); + } } - NotificationEntry oldAlertOverride = group.alertOverride; - onGroupChanged(group, oldAlertOverride); - } - - @Override - public void onGroupAlertOverrideChanged(NotificationGroup group, - @Nullable NotificationEntry oldAlertOverride, - @Nullable NotificationEntry newAlertOverride) { - if (DEBUG) { - Log.d(TAG, "!! onGroupAlertOverrideChanged: group.summary=" + group.summary - + " oldAlertOverride=" + oldAlertOverride - + " newAlertOverride=" + newAlertOverride); - } - onGroupChanged(group, oldAlertOverride); } }; - /** - * Called when either the suppressed or alertOverride fields of the group changed - * - * @param group the group which changed - * @param oldAlertOverride the previous value of group.alertOverride - */ - private void onGroupChanged(NotificationGroup group, - NotificationEntry oldAlertOverride) { - // Group summary can be null if we are no longer suppressed because the summary was - // removed. In that case, we don't need to alert the summary. - if (group.summary == null) { - if (DEBUG) { - Log.d(TAG, "onGroupChanged: summary is null"); - } - return; - } - if (group.suppressed || group.alertOverride != null) { - checkForForwardAlertTransfer(group.summary, oldAlertOverride); - } else { - if (DEBUG) { - Log.d(TAG, "onGroupChanged: maybe transfer back"); - } - GroupAlertEntry groupAlertEntry = mGroupAlertEntries.get(mGroupManager.getGroupKey( - group.summary.getSbn())); - // Group is no longer suppressed or overridden. - // We should check if we need to transfer the alert back to the summary. - if (groupAlertEntry.mAlertSummaryOnNextAddition) { - if (!mHeadsUpManager.isAlerting(group.summary.getKey())) { - alertNotificationWhenPossible(group.summary); - } - groupAlertEntry.mAlertSummaryOnNextAddition = false; - } else { - checkShouldTransferBack(groupAlertEntry); - } - } - } - @Override public void onHeadsUpStateChanged(NotificationEntry entry, boolean isHeadsUp) { - if (DEBUG) { - Log.d(TAG, "!! onHeadsUpStateChanged: entry=" + entry + " isHeadsUp=" + isHeadsUp); - } - if (isHeadsUp && entry.getSbn().getNotification().isGroupSummary()) { - // a group summary is alerting; trigger the forward transfer checks - checkForForwardAlertTransfer(entry, /* oldAlertOverride */ null); - } + onAlertStateChanged(entry, isHeadsUp, mHeadsUpManager); } - /** - * Handles changes in a group's suppression or alertOverride, but where at least one of those - * conditions is still true (either the group is suppressed, the group has an alertOverride, - * or both). The method determined which kind of child needs to receive the alert, finds the - * entry currently alerting, and makes the transfer. - * - * Internally, this is handled with two main cases: the override needs the alert, or there is - * no override but the summary is suppressed (so an isolated child needs the alert). - * - * @param summary the notification entry of the summary of the logical group. - * @param oldAlertOverride the former value of group.alertOverride, before whatever event - * required us to check for for a transfer condition. - */ - private void checkForForwardAlertTransfer(NotificationEntry summary, - NotificationEntry oldAlertOverride) { - if (DEBUG) { - Log.d(TAG, "checkForForwardAlertTransfer: enter"); - } - NotificationGroup group = mGroupManager.getGroupForSummary(summary.getSbn()); - if (group != null && group.alertOverride != null) { - handleOverriddenSummaryAlerted(summary); - } else if (mGroupManager.isSummaryOfSuppressedGroup(summary.getSbn())) { - handleSuppressedSummaryAlerted(summary, oldAlertOverride); + private void onAlertStateChanged(NotificationEntry entry, boolean isAlerting, + AlertingNotificationManager alertManager) { + if (isAlerting && mGroupManager.isSummaryOfSuppressedGroup(entry.getSbn())) { + handleSuppressedSummaryAlerted(entry, alertManager); } } @@ -247,16 +186,9 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis // see as early as we can if we need to abort a transfer. @Override public void onPendingEntryAdded(NotificationEntry entry) { - if (DEBUG) { - Log.d(TAG, "!! onPendingEntryAdded: entry=" + entry); - } String groupKey = mGroupManager.getGroupKey(entry.getSbn()); GroupAlertEntry groupAlertEntry = mGroupAlertEntries.get(groupKey); - if (groupAlertEntry != null && groupAlertEntry.mGroup.alertOverride == null) { - // new pending group entries require us to transfer back from the child to the - // group, but alertOverrides are only present in very limited circumstances, so - // while it's possible the group should ALSO alert, the previous detection which set - // this alertOverride won't be invalidated by this notification added to this group. + if (groupAlertEntry != null) { checkShouldTransferBack(groupAlertEntry); } } @@ -330,128 +262,43 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis } /** - * Handles the scenario where a summary that has been suppressed is itself, or has a former - * alertOverride (in the form of an isolated logical child) which was alerted. A suppressed + * Handles the scenario where a summary that has been suppressed is alerted. A suppressed * summary should for all intents and purposes be invisible to the user and as a result should * not alert. When this is the case, it is our responsibility to pass the alert to the * appropriate child which will be the representative notification alerting for the group. * - * @param summary the summary that is suppressed and (potentially) alerting - * @param oldAlertOverride the alertOverride before whatever event triggered this method. If - * the alert override was removed, this will be the entry that should - * be transferred back from. + * @param summary the summary that is suppressed and alerting + * @param alertManager the alert manager that manages the alerting summary */ private void handleSuppressedSummaryAlerted(@NonNull NotificationEntry summary, - NotificationEntry oldAlertOverride) { - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: summary=" + summary); - } + @NonNull AlertingNotificationManager alertManager) { + StatusBarNotification sbn = summary.getSbn(); GroupAlertEntry groupAlertEntry = - mGroupAlertEntries.get(mGroupManager.getGroupKey(summary.getSbn())); - + mGroupAlertEntries.get(mGroupManager.getGroupKey(sbn)); if (!mGroupManager.isSummaryOfSuppressedGroup(summary.getSbn()) + || !alertManager.isAlerting(sbn.getKey()) || groupAlertEntry == null) { - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: invalid state"); - } - return; - } - boolean summaryIsAlerting = mHeadsUpManager.isAlerting(summary.getKey()); - boolean priorityIsAlerting = oldAlertOverride != null - && mHeadsUpManager.isAlerting(oldAlertOverride.getKey()); - if (!summaryIsAlerting && !priorityIsAlerting) { - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: no summary or override alerting"); - } return; } if (pendingInflationsWillAddChildren(groupAlertEntry.mGroup)) { // New children will actually be added to this group, let's not transfer the alert. - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: pending inflations"); - } return; } NotificationEntry child = mGroupManager.getLogicalChildren(summary.getSbn()).iterator().next(); - if (summaryIsAlerting) { - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: transfer summary -> child"); + if (child != null) { + if (child.getRow().keepInParent() + || child.isRowRemoved() + || child.isRowDismissed()) { + // The notification is actually already removed. No need to alert it. + return; } - tryTransferAlertState(summary, /*from*/ summary, /*to*/ child, groupAlertEntry); - return; - } - // Summary didn't have the alert, so we're in "transfer back" territory. First, make sure - // it's not too late to transfer back, then transfer the alert from the oldAlertOverride to - // the isolated child which should receive the alert. - if (!canStillTransferBack(groupAlertEntry)) { - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: transfer from override: too late"); - } - return; - } - - if (DEBUG) { - Log.d(TAG, "handleSuppressedSummaryAlerted: transfer override -> child"); - } - tryTransferAlertState(summary, /*from*/ oldAlertOverride, /*to*/ child, groupAlertEntry); - } - - /** - * Checks for and handles the scenario where the given entry is the summary of a group which - * has an alertOverride, and either the summary itself or one of its logical isolated children - * is currently alerting (which happens if the summary is suppressed). - */ - private void handleOverriddenSummaryAlerted(NotificationEntry summary) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: summary=" + summary); - } - GroupAlertEntry groupAlertEntry = - mGroupAlertEntries.get(mGroupManager.getGroupKey(summary.getSbn())); - NotificationGroup group = mGroupManager.getGroupForSummary(summary.getSbn()); - if (group == null || group.alertOverride == null || groupAlertEntry == null) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: invalid state"); - } - return; - } - boolean summaryIsAlerting = mHeadsUpManager.isAlerting(summary.getKey()); - if (summaryIsAlerting) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: transfer summary -> override"); - } - tryTransferAlertState(summary, /*from*/ summary, group.alertOverride, groupAlertEntry); - return; - } - // Summary didn't have the alert, so we're in "transfer back" territory. First, make sure - // it's not too late to transfer back, then remove the alert from any of the logical - // children, and if one of them was alerting, we can alert the override. - if (!canStillTransferBack(groupAlertEntry)) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: transfer from child: too late"); - } - return; - } - List children = mGroupManager.getLogicalChildren(summary.getSbn()); - if (children == null) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: no children"); - } - return; - } - children.remove(group.alertOverride); // do not release the alert on our desired destination - boolean releasedChild = releaseChildAlerts(children); - if (releasedChild) { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: transfer child -> override"); - } - tryTransferAlertState(summary, /*from*/ null, group.alertOverride, groupAlertEntry); - } else { - if (DEBUG) { - Log.d(TAG, "handleOverriddenSummaryAlerted: no child alert released"); + if (!alertManager.isAlerting(child.getKey()) && onlySummaryAlerts(summary)) { + groupAlertEntry.mLastAlertTransferTime = SystemClock.elapsedRealtime(); } + transferAlertState(summary, child, alertManager); } } @@ -460,37 +307,14 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis * immediately to have the incorrect one up as short as possible. The second should alert * when possible. * - * @param summary entry of the summary * @param fromEntry entry to transfer alert from * @param toEntry entry to transfer to + * @param alertManager alert manager for the alert type */ - private void tryTransferAlertState( - NotificationEntry summary, - NotificationEntry fromEntry, - NotificationEntry toEntry, - GroupAlertEntry groupAlertEntry) { - if (toEntry != null) { - if (toEntry.getRow().keepInParent() - || toEntry.isRowRemoved() - || toEntry.isRowDismissed()) { - // The notification is actually already removed. No need to alert it. - return; - } - if (!mHeadsUpManager.isAlerting(toEntry.getKey()) && onlySummaryAlerts(summary)) { - groupAlertEntry.mLastAlertTransferTime = SystemClock.elapsedRealtime(); - } - if (DEBUG) { - Log.d(TAG, "transferAlertState: fromEntry=" + fromEntry + " toEntry=" + toEntry); - } - transferAlertState(fromEntry, toEntry); - } - } - private void transferAlertState(@Nullable NotificationEntry fromEntry, - @NonNull NotificationEntry toEntry) { - if (fromEntry != null) { - mHeadsUpManager.removeNotification(fromEntry.getKey(), true /* releaseImmediately */); - } - alertNotificationWhenPossible(toEntry); + private void transferAlertState(@NonNull NotificationEntry fromEntry, @NonNull NotificationEntry toEntry, + @NonNull AlertingNotificationManager alertManager) { + alertManager.removeNotification(fromEntry.getKey(), true /* releaseImmediately */); + alertNotificationWhenPossible(toEntry, alertManager); } /** @@ -502,13 +326,11 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis * more children are coming. Thus, if a child is added within a certain timeframe after we * transfer, we back out and alert the summary again. * - * An alert can only transfer back within a small window of time after a transfer away from the - * summary to a child happened. - * * @param groupAlertEntry group alert entry to check */ private void checkShouldTransferBack(@NonNull GroupAlertEntry groupAlertEntry) { - if (canStillTransferBack(groupAlertEntry)) { + if (SystemClock.elapsedRealtime() - groupAlertEntry.mLastAlertTransferTime + < ALERT_TRANSFER_TIMEOUT) { NotificationEntry summary = groupAlertEntry.mGroup.summary; if (!onlySummaryAlerts(summary)) { @@ -516,17 +338,30 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis } ArrayList children = mGroupManager.getLogicalChildren( summary.getSbn()); - int numActiveChildren = children.size(); + int numChildren = children.size(); int numPendingChildren = getPendingChildrenNotAlerting(groupAlertEntry.mGroup); - int numChildren = numActiveChildren + numPendingChildren; + numChildren += numPendingChildren; if (numChildren <= 1) { return; } - boolean releasedChild = releaseChildAlerts(children); + boolean releasedChild = false; + for (int i = 0; i < children.size(); i++) { + NotificationEntry entry = children.get(i); + if (onlySummaryAlerts(entry) && mHeadsUpManager.isAlerting(entry.getKey())) { + releasedChild = true; + mHeadsUpManager.removeNotification( + entry.getKey(), true /* releaseImmediately */); + } + if (mPendingAlerts.containsKey(entry.getKey())) { + // This is the child that would've been removed if it was inflated. + releasedChild = true; + mPendingAlerts.get(entry.getKey()).mAbortOnInflation = true; + } + } if (releasedChild && !mHeadsUpManager.isAlerting(summary.getKey())) { - boolean notifyImmediately = numActiveChildren > 1; + boolean notifyImmediately = (numChildren - numPendingChildren) > 1; if (notifyImmediately) { - alertNotificationWhenPossible(summary); + alertNotificationWhenPossible(summary, mHeadsUpManager); } else { // Should wait until the pending child inflates before alerting. groupAlertEntry.mAlertSummaryOnNextAddition = true; @@ -536,61 +371,25 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis } } - private boolean canStillTransferBack(@NonNull GroupAlertEntry groupAlertEntry) { - return SystemClock.elapsedRealtime() - groupAlertEntry.mLastAlertTransferTime - < ALERT_TRANSFER_TIMEOUT; - } - - private boolean releaseChildAlerts(List children) { - boolean releasedChild = false; - if (SPEW) { - Log.d(TAG, "releaseChildAlerts: numChildren=" + children.size()); - } - for (int i = 0; i < children.size(); i++) { - NotificationEntry entry = children.get(i); - if (SPEW) { - Log.d(TAG, "releaseChildAlerts: checking i=" + i + " entry=" + entry - + " onlySummaryAlerts=" + onlySummaryAlerts(entry) - + " isAlerting=" + mHeadsUpManager.isAlerting(entry.getKey()) - + " isPendingAlert=" + mPendingAlerts.containsKey(entry.getKey())); - } - if (onlySummaryAlerts(entry) && mHeadsUpManager.isAlerting(entry.getKey())) { - releasedChild = true; - mHeadsUpManager.removeNotification( - entry.getKey(), true /* releaseImmediately */); - } - if (mPendingAlerts.containsKey(entry.getKey())) { - // This is the child that would've been removed if it was inflated. - releasedChild = true; - mPendingAlerts.get(entry.getKey()).mAbortOnInflation = true; - } - } - if (SPEW) { - Log.d(TAG, "releaseChildAlerts: didRelease=" + releasedChild); - } - return releasedChild; - } - /** * Tries to alert the notification. If its content view is not inflated, we inflate and continue * when the entry finishes inflating the view. * * @param entry entry to show + * @param alertManager alert manager for the alert type */ - private void alertNotificationWhenPossible(@NonNull NotificationEntry entry) { - @InflationFlag int contentFlag = mHeadsUpManager.getContentFlag(); + private void alertNotificationWhenPossible(@NonNull NotificationEntry entry, + @NonNull AlertingNotificationManager alertManager) { + @InflationFlag int contentFlag = alertManager.getContentFlag(); final RowContentBindParams params = mRowContentBindStage.getStageParams(entry); if ((params.getContentViews() & contentFlag) == 0) { - if (DEBUG) { - Log.d(TAG, "alertNotificationWhenPossible: async requestRebind entry=" + entry); - } mPendingAlerts.put(entry.getKey(), new PendingAlertInfo(entry)); params.requireContentViews(contentFlag); mRowContentBindStage.requestRebind(entry, en -> { PendingAlertInfo alertInfo = mPendingAlerts.remove(entry.getKey()); if (alertInfo != null) { if (alertInfo.isStillValid()) { - alertNotificationWhenPossible(entry); + alertNotificationWhenPossible(entry, mHeadsUpManager); } else { // The transfer is no longer valid. Free the content. mRowContentBindStage.getStageParams(entry).markContentViewsFreeable( @@ -601,16 +400,10 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis }); return; } - if (mHeadsUpManager.isAlerting(entry.getKey())) { - if (DEBUG) { - Log.d(TAG, "alertNotificationWhenPossible: continue alerting entry=" + entry); - } - mHeadsUpManager.updateNotification(entry.getKey(), true /* alert */); + if (alertManager.isAlerting(entry.getKey())) { + alertManager.updateNotification(entry.getKey(), true /* alert */); } else { - if (DEBUG) { - Log.d(TAG, "alertNotificationWhenPossible: start alerting entry=" + entry); - } - mHeadsUpManager.showNotification(entry); + alertManager.showNotification(entry); } } From 77061033fc1f5314ab7875767182536ee8b0a274 Mon Sep 17 00:00:00 2001 From: Songchun Fan Date: Wed, 5 May 2021 11:25:10 -0700 Subject: [PATCH 156/192] [SettingProvider] add checks for null applicationInfo BUG: 187301322 Test: builds Change-Id: I20d68f5dd11d0e34acc35d6a985fee0991157741 (cherry picked from commit d7baae817045f5ce4f756fd0787b6344c11fc444) --- .../providers/settings/SettingsProvider.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 941f47f525510..0a57390964879 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -1873,6 +1873,9 @@ public class SettingsProvider extends ContentProvider { // The calling package is already verified. PackageInfo packageInfo = getCallingPackageInfoOrThrow(userId); + if (packageInfo.applicationInfo == null) { + return; + } // Privileged apps can do whatever they want. if ((packageInfo.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0) { @@ -1893,6 +1896,10 @@ public class SettingsProvider extends ContentProvider { // The calling package is already verified. PackageInfo packageInfo = getCallingPackageInfoOrThrow(userId); + if (packageInfo.applicationInfo == null) { + return; + } + // Privileged apps can do whatever they want. if ((packageInfo.applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0) { @@ -2577,6 +2584,9 @@ public class SettingsProvider extends ContentProvider { final String ssaid = HexEncoding.encodeToString(m.doFinal(), false /* upperCase */) .substring(0, 16); + if (callingPkg.applicationInfo == null) { + throw new IllegalStateException("Application info not accessible"); + } // Save the ssaid in the ssaid table. final String uid = Integer.toString(callingPkg.applicationInfo.uid); final SettingsState ssaidSettings = getSettingsLocked(SETTINGS_TYPE_SSAID, userId); @@ -2604,6 +2614,9 @@ public class SettingsProvider extends ContentProvider { } final Set appUids = new HashSet<>(); for (PackageInfo info : packages) { + if (info == null || info.applicationInfo == null) { + continue; + } appUids.add(Integer.toString(info.applicationInfo.uid)); } @@ -3804,6 +3817,9 @@ public class SettingsProvider extends ContentProvider { final SettingsState ssaidSettings = getSsaidSettingsLocked(userId); for (PackageInfo info : packages) { + if (info == null || info.applicationInfo == null) { + continue; + } // Check if the UID already has an entry in the table. final String uid = Integer.toString(info.applicationInfo.uid); final Setting ssaid = ssaidSettings.getSettingLocked(uid); From e9601fc435b3a369eb22d84d7a164fdc9370a324 Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Wed, 5 May 2021 20:46:25 +0000 Subject: [PATCH 157/192] Revert "Migrate the usage of sCompatibilityModeEnabled" This reverts commit 0a98d27b04f225d5b87efa206ef289ba08ee5ad9. Reason for revert: b/187301322 Change-Id: Iae9acc88841f214a5e3a14f83c3d5ee8b9ffd422 Bug: 187301322 (cherry picked from commit a02ce471bea5f0715108ee34372c0772f00eeb48) --- .../pm/parsing/ParsingPackageUtils.java | 7 ----- .../server/pm/PackageManagerService.java | 28 +++++-------------- .../server/pm/parsing/PackageInfoUtils.java | 2 +- 3 files changed, 8 insertions(+), 29 deletions(-) diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java index 725576fda3895..22d75ef931377 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java +++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java @@ -3066,13 +3066,6 @@ public class ParsingPackageUtils { } } - /** - * @hide - */ - public static void setCompatibilityModeEnabled(boolean compatibilityModeEnabled) { - sCompatibilityModeEnabled = compatibilityModeEnabled; - } - /** * @hide */ diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index db2b166aac63a..219fa3ca52707 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -134,7 +134,6 @@ import static com.android.server.pm.PackageManagerServiceUtils.getLastModifiedTi import static com.android.server.pm.PackageManagerServiceUtils.logCriticalInfo; import static com.android.server.pm.PackageManagerServiceUtils.makeDirRecursive; import static com.android.server.pm.PackageManagerServiceUtils.verifySignatures; -import static com.android.server.pm.parsing.PackageInfoUtils.checkUseInstalledOrHidden; import android.Manifest; import android.annotation.AppIdInt; @@ -2516,8 +2515,8 @@ public class PackageManagerService extends IPackageManager.Stub if (DEBUG_PACKAGE_INFO) Log.v(TAG, "getActivityInfo " + component + ": " + a); AndroidPackage pkg = a == null ? null : mPackages.get(a.getPackageName()); - PackageSetting ps = a == null ? null : mSettings.getPackageLPr(a.getPackageName()); if (pkg != null && mSettings.isEnabledAndMatchLPr(pkg, a, flags, userId)) { + PackageSetting ps = mSettings.getPackageLPr(component.getPackageName()); if (ps == null) return null; if (shouldFilterApplicationLocked( ps, filterCallingUid, component, TYPE_ACTIVITY, userId)) { @@ -2527,8 +2526,8 @@ public class PackageManagerService extends IPackageManager.Stub a, flags, ps.readUserState(userId), userId, ps); } if (resolveComponentName().equals(component)) { - return generateDelegateActivityInfo(pkg, ps, new PackageUserState(), - mResolveActivity, flags, userId); + return PackageParser.generateActivityInfo( + mResolveActivity, flags, new PackageUserState(), userId); } return null; } @@ -3174,8 +3173,8 @@ public class PackageManagerService extends IPackageManager.Stub return result; } final ResolveInfo ephemeralInstaller = new ResolveInfo(mInstantAppInstallerInfo); - ephemeralInstaller.activityInfo = generateDelegateActivityInfo(ps.getPkg(), ps, - ps.readUserState(userId), instantAppInstallerActivity(), 0 /*flags*/, userId); + ephemeralInstaller.activityInfo = PackageParser.generateActivityInfo( + instantAppInstallerActivity(), 0, ps.readUserState(userId), userId); ephemeralInstaller.match = IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART | IntentFilter.MATCH_ADJUSTMENT_NORMAL; // add a non-generic filter @@ -3259,7 +3258,7 @@ public class PackageManagerService extends IPackageManager.Stub ai.flags = ps.pkgFlags; ai.privateFlags = ps.pkgPrivateFlags; pi.applicationInfo = - PackageInfoUtils.generateApplicationInfo(p, flags, state, userId, ps); + PackageParser.generateApplicationInfo(ai, flags, state, userId); if (DEBUG_PACKAGE_INFO) Log.v(TAG, "ps.pkg is n/a for [" + ps.name + "]. Provides a minimum info."); @@ -3375,19 +3374,6 @@ public class PackageManagerService extends IPackageManager.Stub return getInstalledPackagesBody(flags, userId, callingUid); } - private static ActivityInfo generateDelegateActivityInfo(@Nullable AndroidPackage pkg, - @Nullable PackageSetting ps, @NonNull PackageUserState state, - @Nullable ActivityInfo activity, int flags, int userId) { - if (activity == null || pkg == null - || !checkUseInstalledOrHidden(pkg, ps, state, flags)) { - return null; - } - final ActivityInfo info = new ActivityInfo(activity); - info.applicationInfo = - PackageInfoUtils.generateApplicationInfo(pkg, flags, state, userId, ps); - return info; - } - public ParceledListSlice getInstalledPackagesBody(int flags, int userId, int callingUid) { // writer @@ -23672,7 +23658,7 @@ public class PackageManagerService extends IPackageManager.Stub boolean compatibilityModeEnabled = android.provider.Settings.Global.getInt( mContext.getContentResolver(), android.provider.Settings.Global.COMPATIBILITY_MODE, 1) == 1; - ParsingPackageUtils.setCompatibilityModeEnabled(compatibilityModeEnabled); + PackageParser.setCompatibilityModeEnabled(compatibilityModeEnabled); if (DEBUG_SETTINGS) { Log.d(TAG, "compatibility mode:" + compatibilityModeEnabled); diff --git a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java index b89dbdc863e0c..61f51e36202cf 100644 --- a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java +++ b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java @@ -417,7 +417,7 @@ public class PackageInfoUtils { * Returns true if the package is installed and not hidden, or if the caller * explicitly wanted all uninstalled and hidden packages as well. */ - public static boolean checkUseInstalledOrHidden(AndroidPackage pkg, + private static boolean checkUseInstalledOrHidden(AndroidPackage pkg, PackageSetting pkgSetting, PackageUserState state, @PackageManager.PackageInfoFlags int flags) { // Returns false if the package is hidden system app until installed. From 01b3df15e9727a402d01569cb0e71dd6e123a80b Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Wed, 5 May 2021 20:46:25 +0000 Subject: [PATCH 158/192] Revert "Migrate the usage of sCompatibilityModeEnabled" This reverts commit 0a98d27b04f225d5b87efa206ef289ba08ee5ad9. Reason for revert: b/187301322 Change-Id: Iae9acc88841f214a5e3a14f83c3d5ee8b9ffd422 Bug: 187301322 (cherry picked from commit a02ce471bea5f0715108ee34372c0772f00eeb48) --- .../pm/parsing/ParsingPackageUtils.java | 7 ----- .../server/pm/PackageManagerService.java | 28 +++++-------------- .../server/pm/parsing/PackageInfoUtils.java | 2 +- 3 files changed, 8 insertions(+), 29 deletions(-) diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java index 725576fda3895..22d75ef931377 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java +++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java @@ -3066,13 +3066,6 @@ public class ParsingPackageUtils { } } - /** - * @hide - */ - public static void setCompatibilityModeEnabled(boolean compatibilityModeEnabled) { - sCompatibilityModeEnabled = compatibilityModeEnabled; - } - /** * @hide */ diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index db2b166aac63a..219fa3ca52707 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -134,7 +134,6 @@ import static com.android.server.pm.PackageManagerServiceUtils.getLastModifiedTi import static com.android.server.pm.PackageManagerServiceUtils.logCriticalInfo; import static com.android.server.pm.PackageManagerServiceUtils.makeDirRecursive; import static com.android.server.pm.PackageManagerServiceUtils.verifySignatures; -import static com.android.server.pm.parsing.PackageInfoUtils.checkUseInstalledOrHidden; import android.Manifest; import android.annotation.AppIdInt; @@ -2516,8 +2515,8 @@ public class PackageManagerService extends IPackageManager.Stub if (DEBUG_PACKAGE_INFO) Log.v(TAG, "getActivityInfo " + component + ": " + a); AndroidPackage pkg = a == null ? null : mPackages.get(a.getPackageName()); - PackageSetting ps = a == null ? null : mSettings.getPackageLPr(a.getPackageName()); if (pkg != null && mSettings.isEnabledAndMatchLPr(pkg, a, flags, userId)) { + PackageSetting ps = mSettings.getPackageLPr(component.getPackageName()); if (ps == null) return null; if (shouldFilterApplicationLocked( ps, filterCallingUid, component, TYPE_ACTIVITY, userId)) { @@ -2527,8 +2526,8 @@ public class PackageManagerService extends IPackageManager.Stub a, flags, ps.readUserState(userId), userId, ps); } if (resolveComponentName().equals(component)) { - return generateDelegateActivityInfo(pkg, ps, new PackageUserState(), - mResolveActivity, flags, userId); + return PackageParser.generateActivityInfo( + mResolveActivity, flags, new PackageUserState(), userId); } return null; } @@ -3174,8 +3173,8 @@ public class PackageManagerService extends IPackageManager.Stub return result; } final ResolveInfo ephemeralInstaller = new ResolveInfo(mInstantAppInstallerInfo); - ephemeralInstaller.activityInfo = generateDelegateActivityInfo(ps.getPkg(), ps, - ps.readUserState(userId), instantAppInstallerActivity(), 0 /*flags*/, userId); + ephemeralInstaller.activityInfo = PackageParser.generateActivityInfo( + instantAppInstallerActivity(), 0, ps.readUserState(userId), userId); ephemeralInstaller.match = IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART | IntentFilter.MATCH_ADJUSTMENT_NORMAL; // add a non-generic filter @@ -3259,7 +3258,7 @@ public class PackageManagerService extends IPackageManager.Stub ai.flags = ps.pkgFlags; ai.privateFlags = ps.pkgPrivateFlags; pi.applicationInfo = - PackageInfoUtils.generateApplicationInfo(p, flags, state, userId, ps); + PackageParser.generateApplicationInfo(ai, flags, state, userId); if (DEBUG_PACKAGE_INFO) Log.v(TAG, "ps.pkg is n/a for [" + ps.name + "]. Provides a minimum info."); @@ -3375,19 +3374,6 @@ public class PackageManagerService extends IPackageManager.Stub return getInstalledPackagesBody(flags, userId, callingUid); } - private static ActivityInfo generateDelegateActivityInfo(@Nullable AndroidPackage pkg, - @Nullable PackageSetting ps, @NonNull PackageUserState state, - @Nullable ActivityInfo activity, int flags, int userId) { - if (activity == null || pkg == null - || !checkUseInstalledOrHidden(pkg, ps, state, flags)) { - return null; - } - final ActivityInfo info = new ActivityInfo(activity); - info.applicationInfo = - PackageInfoUtils.generateApplicationInfo(pkg, flags, state, userId, ps); - return info; - } - public ParceledListSlice getInstalledPackagesBody(int flags, int userId, int callingUid) { // writer @@ -23672,7 +23658,7 @@ public class PackageManagerService extends IPackageManager.Stub boolean compatibilityModeEnabled = android.provider.Settings.Global.getInt( mContext.getContentResolver(), android.provider.Settings.Global.COMPATIBILITY_MODE, 1) == 1; - ParsingPackageUtils.setCompatibilityModeEnabled(compatibilityModeEnabled); + PackageParser.setCompatibilityModeEnabled(compatibilityModeEnabled); if (DEBUG_SETTINGS) { Log.d(TAG, "compatibility mode:" + compatibilityModeEnabled); diff --git a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java index b89dbdc863e0c..61f51e36202cf 100644 --- a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java +++ b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java @@ -417,7 +417,7 @@ public class PackageInfoUtils { * Returns true if the package is installed and not hidden, or if the caller * explicitly wanted all uninstalled and hidden packages as well. */ - public static boolean checkUseInstalledOrHidden(AndroidPackage pkg, + private static boolean checkUseInstalledOrHidden(AndroidPackage pkg, PackageSetting pkgSetting, PackageUserState state, @PackageManager.PackageInfoFlags int flags) { // Returns false if the package is hidden system app until installed. From 605a2a263fe0676600c49fa68348235b270a5709 Mon Sep 17 00:00:00 2001 From: Makoto Onuki Date: Thu, 6 May 2021 17:48:29 +0000 Subject: [PATCH 159/192] Revert "Don't defer FGS notification if it's already shown" Revert "Verify behavior when FGS uses existing notification" Revert submission 14414063-fgs-defer-fixes Reason for revert: b/187373264 Reverted Changes: I081a3cc88:Don't defer FGS notification if it's already shown... I083583550:Verify behavior when FGS uses existing notificatio... Bug: 187373264 Change-Id: I82edba69c583791ec603107b3407ce7a5efe83a0 (cherry picked from commit 94badc521453fa4be8c906fd94cea812889f0a58) --- .../java/com/android/server/am/ActiveServices.java | 12 ------------ .../notification/NotificationManagerInternal.java | 3 --- .../notification/NotificationManagerService.java | 7 ------- 3 files changed, 22 deletions(-) diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index b261231794110..5700bb367b041 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -155,7 +155,6 @@ import com.android.server.AppStateTracker; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.am.ActivityManagerService.ItemMatcher; -import com.android.server.notification.NotificationManagerInternal; import com.android.server.uri.NeededUriGrants; import com.android.server.wm.ActivityServiceConnectionsHolder; @@ -1977,17 +1976,6 @@ public final class ActiveServices { // DeviceConfig element has been set showNow = isLegacyApp && mAm.mConstants.mFlagFgsNotificationDeferralApiGated; } - if (!showNow) { - // did we already show it? - showNow = r.mFgsNotificationShown; - } - if (!showNow) { - // Is the notification already showing for any reason? - final NotificationManagerInternal nmi = - LocalServices.getService(NotificationManagerInternal.class); - showNow = nmi.isNotificationShown(r.appInfo.packageName, null, - r.foregroundId, UserHandle.getUserId(uid)); - } if (!showNow) { // has the app forced deferral? if (!r.foregroundNoti.isForegroundDisplayForceDeferred()) { diff --git a/services/core/java/com/android/server/notification/NotificationManagerInternal.java b/services/core/java/com/android/server/notification/NotificationManagerInternal.java index 0528b95d1a6e6..dc9839c6da0ef 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerInternal.java +++ b/services/core/java/com/android/server/notification/NotificationManagerInternal.java @@ -30,9 +30,6 @@ public interface NotificationManagerInternal { void cancelNotification(String pkg, String basePkg, int callingUid, int callingPid, String tag, int id, int userId); - /** is the given notification currently showing? */ - boolean isNotificationShown(String pkg, String tag, int notificationId, int userId); - void removeForegroundServiceFlagFromNotification(String pkg, int notificationId, int userId); void onConversationRemoved(String pkg, int uid, Set shortcuts); diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 6083bc5612192..0840e75823b50 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -6047,13 +6047,6 @@ public class NotificationManagerService extends SystemService { cancelNotificationInternal(pkg, opPkg, callingUid, callingPid, tag, id, userId); } - @Override - public boolean isNotificationShown(String pkg, String tag, int notificationId, int userId) { - synchronized (mNotificationLock) { - return findNotificationLocked(pkg, tag, notificationId, userId) != null; - } - } - @Override public void removeForegroundServiceFlagFromNotification(String pkg, int notificationId, int userId) { From 11cc7a64b4996831e4d5cd80918ce018a3191cd9 Mon Sep 17 00:00:00 2001 From: Kweku Adams Date: Wed, 5 May 2021 17:50:21 -0700 Subject: [PATCH 160/192] Avoid using stale sessions for cleanup alarm. Remove old EJ timing sessions before we schedule the next cleanup alarm. If we don't remove them, then we will continue to use stale sessions as the basis for the next cleanup alarm, which would eventually result in scheduling alarms in the past. Bug: 187351354 Test: atest FrameworksMockingServicesTest:QuotaControllerTest Change-Id: I1b968e0461efe9aad3e785760a3cd2f5d8d4de8b (cherry picked from commit 061f335321a5cc232f8ca9e0769aa392d8e2131b) --- .../job/controllers/QuotaController.java | 69 ++++++++++++++----- .../job/controllers/QuotaControllerTest.java | 2 - 2 files changed, 50 insertions(+), 21 deletions(-) diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java index 3322841dacb00..75bf8e7cfd229 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java @@ -1493,13 +1493,14 @@ public final class QuotaController extends StateController { /** Schedule a cleanup alarm if necessary and there isn't already one scheduled. */ @VisibleForTesting void maybeScheduleCleanupAlarmLocked() { - if (mNextCleanupTimeElapsed > sElapsedRealtimeClock.millis()) { + final long nowElapsed = sElapsedRealtimeClock.millis(); + if (mNextCleanupTimeElapsed > nowElapsed) { // There's already an alarm scheduled. Just stick with that one. There's no way we'll // end up scheduling an earlier alarm. if (DEBUG) { Slog.v(TAG, "Not scheduling cleanup since there's already one at " - + mNextCleanupTimeElapsed + " (in " + (mNextCleanupTimeElapsed - - sElapsedRealtimeClock.millis()) + "ms)"); + + mNextCleanupTimeElapsed + + " (in " + (mNextCleanupTimeElapsed - nowElapsed) + "ms)"); } return; } @@ -1521,7 +1522,7 @@ public final class QuotaController extends StateController { if (nextCleanupElapsed - mNextCleanupTimeElapsed <= 10 * MINUTE_IN_MILLIS) { // No need to clean up too often. Delay the alarm if the next cleanup would be too soon // after it. - nextCleanupElapsed += 10 * MINUTE_IN_MILLIS; + nextCleanupElapsed = mNextCleanupTimeElapsed + 10 * MINUTE_IN_MILLIS; } mNextCleanupTimeElapsed = nextCleanupElapsed; mAlarmManager.set(AlarmManager.ELAPSED_REALTIME, nextCleanupElapsed, ALARM_TAG_CLEANUP, @@ -2462,30 +2463,60 @@ public final class QuotaController extends StateController { } } - private final class DeleteTimingSessionsFunctor implements Consumer> { - private final Predicate mTooOld = new Predicate() { - public boolean test(TimingSession ts) { - return ts.endTimeElapsed <= sElapsedRealtimeClock.millis() - MAX_PERIOD_MS; - } - }; + private static final class TimingSessionTooOldPredicate implements Predicate { + private long mNowElapsed; + + private void updateNow() { + mNowElapsed = sElapsedRealtimeClock.millis(); + } @Override - public void accept(List sessions) { - if (sessions != null) { - // Remove everything older than MAX_PERIOD_MS time ago. - sessions.removeIf(mTooOld); - } + public boolean test(TimingSession ts) { + return ts.endTimeElapsed <= mNowElapsed - MAX_PERIOD_MS; } } - private final DeleteTimingSessionsFunctor mDeleteOldSessionsFunctor = - new DeleteTimingSessionsFunctor(); + private final TimingSessionTooOldPredicate mTimingSessionTooOld = + new TimingSessionTooOldPredicate(); + + private final Consumer> mDeleteOldSessionsFunctor = sessions -> { + if (sessions != null) { + // Remove everything older than MAX_PERIOD_MS time ago. + sessions.removeIf(mTimingSessionTooOld); + } + }; @VisibleForTesting void deleteObsoleteSessionsLocked() { + mTimingSessionTooOld.updateNow(); + + // Regular sessions mTimingSessions.forEach(mDeleteOldSessionsFunctor); - // Don't delete EJ timing sessions here. They'll be removed in - // getRemainingEJExecutionTimeLocked(). + + // EJ sessions + for (int uIdx = 0; uIdx < mEJTimingSessions.numMaps(); ++uIdx) { + final int userId = mEJTimingSessions.keyAt(uIdx); + for (int pIdx = 0; pIdx < mEJTimingSessions.numElementsForKey(userId); ++pIdx) { + final String packageName = mEJTimingSessions.keyAt(uIdx, pIdx); + final ShrinkableDebits debits = getEJDebitsLocked(userId, packageName); + final List sessions = mEJTimingSessions.get(userId, packageName); + if (sessions == null) { + continue; + } + + while (sessions.size() > 0) { + final TimingSession ts = sessions.get(0); + if (mTimingSessionTooOld.test(ts)) { + // Stale sessions may still be factored into tally. Remove them. + final long duration = ts.endTimeElapsed - ts.startTimeElapsed; + debits.transactLocked(-duration); + sessions.remove(0); + } else { + break; + } + } + } + } } private class QcHandler extends Handler { diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java index 64687908dc9b9..029930abe6b1d 100644 --- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java @@ -68,7 +68,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; -import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; @@ -475,7 +474,6 @@ public class QuotaControllerTest { expectedRegular.add(thr); expectedRegular.add(two); expectedRegular.add(one); - expectedEJ.add(fiv); // EJ list should be unaffected expectedEJ.add(fou); expectedEJ.add(one); mQuotaController.saveTimingSession(0, "com.android.test", fiv, false); From ef16546dccfb828692e046560e65f6d1d6170ce1 Mon Sep 17 00:00:00 2001 From: Aurimas Liutikas Date: Wed, 12 May 2021 21:56:31 +0000 Subject: [PATCH 161/192] Revert "Fix incompatibilities with Kotlin 1.5.0" This reverts commit b8ca1157ab6d463a19f6a7bbfeb25d1f9f1be911. Reason for revert: b/187908823 Change-Id: I9606c5730f4e8697a9319939acda0a9b7a74634d (cherry picked from commit c5b4071877530ba3eb6ce5f55fc8c101ea1f35e4) --- .../android/systemui/controls/ui/ControlsUiControllerImpl.kt | 2 +- .../src/com/android/systemui/privacy/PrivacyChipBuilder.kt | 2 +- tools/codegen/src/com/android/codegen/Utils.kt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt index a904cefc48a06..26be98743eed9 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt @@ -120,7 +120,7 @@ class ControlsUiControllerImpl @Inject constructor ( private val onSeedingComplete = Consumer { accepted -> if (accepted) { - selectedStructure = controlsController.get().getFavorites().maxByOrNull { + selectedStructure = controlsController.get().getFavorites().maxBy { it.controls.size } ?: EMPTY_STRUCTURE updatePreferences(selectedStructure) diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyChipBuilder.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyChipBuilder.kt index eec69f98b9be7..1d2e74703b42b 100644 --- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyChipBuilder.kt +++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyChipBuilder.kt @@ -28,7 +28,7 @@ class PrivacyChipBuilder(private val context: Context, itemsList: List Unit) { * cccc dd */ fun Iterable>.columnize(separator: String = " | "): String { - val col1w = map { (a, _) -> a.length }.maxOrNull()!! - val col2w = map { (_, b) -> b.length }.maxOrNull()!! + val col1w = map { (a, _) -> a.length }.max()!! + val col2w = map { (_, b) -> b.length }.max()!! return map { it.first.padEnd(col1w) + separator + it.second.padEnd(col2w) }.joinToString("\n") } From 2cfc073172d9722e0df72b51298db6d471e90360 Mon Sep 17 00:00:00 2001 From: Aurimas Liutikas Date: Wed, 12 May 2021 21:56:31 +0000 Subject: [PATCH 162/192] Revert "Fix incompatibilities with Kotlin 1.5.0" This reverts commit b8ca1157ab6d463a19f6a7bbfeb25d1f9f1be911. Reason for revert: b/187908823 Change-Id: I9606c5730f4e8697a9319939acda0a9b7a74634d (cherry picked from commit c5b4071877530ba3eb6ce5f55fc8c101ea1f35e4) --- .../android/systemui/controls/ui/ControlsUiControllerImpl.kt | 2 +- .../src/com/android/systemui/privacy/PrivacyChipBuilder.kt | 2 +- tools/codegen/src/com/android/codegen/Utils.kt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt index a904cefc48a06..26be98743eed9 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt @@ -120,7 +120,7 @@ class ControlsUiControllerImpl @Inject constructor ( private val onSeedingComplete = Consumer { accepted -> if (accepted) { - selectedStructure = controlsController.get().getFavorites().maxByOrNull { + selectedStructure = controlsController.get().getFavorites().maxBy { it.controls.size } ?: EMPTY_STRUCTURE updatePreferences(selectedStructure) diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyChipBuilder.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyChipBuilder.kt index eec69f98b9be7..1d2e74703b42b 100644 --- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyChipBuilder.kt +++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyChipBuilder.kt @@ -28,7 +28,7 @@ class PrivacyChipBuilder(private val context: Context, itemsList: List Unit) { * cccc dd */ fun Iterable>.columnize(separator: String = " | "): String { - val col1w = map { (a, _) -> a.length }.maxOrNull()!! - val col2w = map { (_, b) -> b.length }.maxOrNull()!! + val col1w = map { (a, _) -> a.length }.max()!! + val col2w = map { (_, b) -> b.length }.max()!! return map { it.first.padEnd(col1w) + separator + it.second.padEnd(col2w) }.joinToString("\n") } From 0f17621c2ba90ebf3ba4c9f0272e42866196ea80 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 13 May 2021 11:36:04 -0600 Subject: [PATCH 163/192] Emergency workaround to patch over ID shuffling. Bug: 188050150, 188011554 Test: manual Change-Id: If865def2961b28d45b50a055272d8b24af7bbd32 (cherry picked from commit 62c5678f62ad1f11e5c90c3c927974fa1cdaa219) --- core/api/current.txt | 1 + core/res/res/values/public.xml | 1 + 2 files changed, 2 insertions(+) diff --git a/core/api/current.txt b/core/api/current.txt index 98c2d40aa9527..6d0d34426f6a8 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -245,6 +245,7 @@ package android { public static final class R.attr { ctor public R.attr(); + field public static final int __removed3; field public static final int absListViewStyle = 16842858; // 0x101006a field public static final int accessibilityEventTypes = 16843648; // 0x1010380 field public static final int accessibilityFeedbackType = 16843650; // 0x1010382 diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index f7a99309ec5a1..641b2ad9bfc4d 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -3064,6 +3064,7 @@ + From 8b7cc810075cd4fa353934a64cdba1138df64fa6 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Sun, 16 May 2021 20:45:07 -0600 Subject: [PATCH 164/192] Guard against null BluetoothDevice extras. Bug: 188364781 Change-Id: If976318763fac7e5cb4b59300f104c9cd9392eaf (cherry picked from commit 804cb8801d61c4c2a37802b192c1bd1b3542364d) --- core/java/android/content/Intent.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index bacb773a4746e..a436fa48a5f26 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -11470,7 +11470,9 @@ public class Intent implements Parcelable, Cloneable { if (mAction != null && mAction.startsWith("android.bluetooth.") && hasExtra(BluetoothDevice.EXTRA_DEVICE)) { final BluetoothDevice device = getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); - device.prepareToEnterProcess(source); + if (device != null) { + device.prepareToEnterProcess(source); + } } } From 6e620ef5e316ca53c74dd945816f4f4469fa045a Mon Sep 17 00:00:00 2001 From: Ocean Chen Date: Thu, 20 May 2021 07:00:10 +0000 Subject: [PATCH 165/192] Revert "Create non-bypassable op restrictions" This reverts commit a023924afd388a6ca9fa7ec36b99b1de1795c32b. Reason for revert: Test Monitor triggers the test build Bug: 188708756 Bug: 188733943 Change-Id: I2d17d4f77287020953fb559cf98ff8475f32ed1b (cherry picked from commit 0d02112ea44132563cd729cfa5b500a30fb5da16) --- core/java/android/app/AppOpsManager.java | 12 +-- .../android/internal/app/IAppOpsService.aidl | 2 +- .../android/server/SensorPrivacyService.java | 75 +++---------------- .../android/server/appop/AppOpsService.java | 52 ++----------- 4 files changed, 17 insertions(+), 124 deletions(-) diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 92756b6b1391b..ed0043646608a 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -7413,18 +7413,8 @@ public class AppOpsManager { */ public void setUserRestrictionForUser(int code, boolean restricted, IBinder token, @Nullable Map excludedPackageTags, int userId) { - setUserRestrictionForUser(code, restricted, token, excludedPackageTags, userId, false); - } - - /** - * An empty array of attribution tags means exclude all tags under that package. - * @hide - */ - public void setUserRestrictionForUser(int code, boolean restricted, IBinder token, - @Nullable Map excludedPackageTags, int userId, boolean rejectBypass) { try { - mService.setUserRestriction(code, restricted, token, userId, excludedPackageTags, - rejectBypass); + mService.setUserRestriction(code, restricted, token, userId, excludedPackageTags); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl index 3cc7e6401462e..3cf46214fbec8 100644 --- a/core/java/com/android/internal/app/IAppOpsService.aidl +++ b/core/java/com/android/internal/app/IAppOpsService.aidl @@ -92,7 +92,7 @@ interface IAppOpsService { void setAudioRestriction(int code, int usage, int uid, int mode, in String[] exceptionPackages); void setUserRestrictions(in Bundle restrictions, IBinder token, int userHandle); - void setUserRestriction(int code, boolean restricted, IBinder token, int userHandle, in Map excludedPackageTags, boolean rejectBypass); + void setUserRestriction(int code, boolean restricted, IBinder token, int userHandle, in Map excludedPackageTags); void removeUser(int userHandle); void startWatchingActive(in int[] ops, IAppOpsActiveCallback callback); diff --git a/services/core/java/com/android/server/SensorPrivacyService.java b/services/core/java/com/android/server/SensorPrivacyService.java index 2bf4edc67d7cd..b0d6d65fdd4c3 100644 --- a/services/core/java/com/android/server/SensorPrivacyService.java +++ b/services/core/java/com/android/server/SensorPrivacyService.java @@ -26,6 +26,7 @@ import static android.app.AppOpsManager.OP_CAMERA; import static android.app.AppOpsManager.OP_PHONE_CALL_CAMERA; import static android.app.AppOpsManager.OP_PHONE_CALL_MICROPHONE; import static android.app.AppOpsManager.OP_RECORD_AUDIO; +import static android.app.AppOpsManager.OP_RECORD_AUDIO_HOTWORD; import static android.content.Intent.EXTRA_PACKAGE_NAME; import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS; import static android.content.pm.PackageManager.PERMISSION_GRANTED; @@ -54,7 +55,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; -import android.content.pm.UserInfo; import android.graphics.drawable.Icon; import android.hardware.ISensorPrivacyListener; import android.hardware.ISensorPrivacyManager; @@ -167,8 +167,6 @@ public final class SensorPrivacyService extends SystemService { private EmergencyCallHelper mEmergencyCallHelper; private KeyguardManager mKeyguardManager; - private int mCurrentUser = -1; - public SensorPrivacyService(Context context) { super(context); mContext = context; @@ -179,19 +177,6 @@ public final class SensorPrivacyService extends SystemService { mTelephonyManager = context.getSystemService(TelephonyManager.class); mSensorPrivacyServiceImpl = new SensorPrivacyServiceImpl(); - - mUserManagerInternal.addUserLifecycleListener( - new UserManagerInternal.UserLifecycleListener() { - @Override - public void onUserCreated(UserInfo user, Object token) { - setCurrentUserRestriction(); - } - - @Override - public void onUserRemoved(UserInfo user) { - removeUserRestrictions(user.id); - } - }); } @Override @@ -210,20 +195,6 @@ public final class SensorPrivacyService extends SystemService { } } - @Override - public void onUserStarting(TargetUser user) { - if (mCurrentUser == -1) { - mCurrentUser = user.getUserIdentifier(); - setCurrentUserRestriction(); - } - } - - @Override - public void onUserSwitching(TargetUser from, TargetUser to) { - mCurrentUser = to.getUserIdentifier(); - setCurrentUserRestriction(); - } - class SensorPrivacyServiceImpl extends ISensorPrivacyManager.Stub implements AppOpsManager.OnOpNotedListener, AppOpsManager.OnOpStartedListener, IBinder.DeathRecipient, UserManagerInternal.UserRestrictionsListener { @@ -1386,45 +1357,17 @@ public final class SensorPrivacyService extends SystemService { } private void setUserRestriction(int userId, int sensor, boolean enabled) { - if (userId == mCurrentUser) { - setCurrentUserRestriction(sensor, enabled); + if (sensor == CAMERA) { + mAppOpsManager.setUserRestrictionForUser(OP_CAMERA, enabled, + mAppOpsRestrictionToken, null, userId); + } else if (sensor == MICROPHONE) { + mAppOpsManager.setUserRestrictionForUser(OP_RECORD_AUDIO, enabled, + mAppOpsRestrictionToken, null, userId); + mAppOpsManager.setUserRestrictionForUser(OP_RECORD_AUDIO_HOTWORD, enabled, + mAppOpsRestrictionToken, null, userId); } } - private void setCurrentUserRestriction() { - boolean micState = mSensorPrivacyServiceImpl - .isIndividualSensorPrivacyEnabled(mCurrentUser, MICROPHONE); - boolean camState = mSensorPrivacyServiceImpl - .isIndividualSensorPrivacyEnabled(mCurrentUser, CAMERA); - - setCurrentUserRestriction(MICROPHONE, micState); - setCurrentUserRestriction(CAMERA, camState); - } - - private void setCurrentUserRestriction(int sensor, boolean enabled) { - int[] userIds = mUserManagerInternal.getUserIds(); - int code; - if (sensor == MICROPHONE) { - code = OP_RECORD_AUDIO; - } else if (sensor == CAMERA) { - code = OP_CAMERA; - } else { - Log.w(TAG, "Invalid sensor id: " + sensor, new RuntimeException()); - return; - } - for (int i = 0; i < userIds.length; i++) { - mAppOpsManager.setUserRestrictionForUser(code, enabled, - mAppOpsRestrictionToken, null, userIds[i], true); - } - } - - private void removeUserRestrictions(int userId) { - mAppOpsManager.setUserRestrictionForUser(OP_RECORD_AUDIO, false, - mAppOpsRestrictionToken, null, userId, true); - mAppOpsManager.setUserRestrictionForUser(OP_CAMERA, false, - mAppOpsRestrictionToken, null, userId, true); - } - private final class DeathRecipient implements IBinder.DeathRecipient { private ISensorPrivacyListener mListener; diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 3182913b18d5e..b6aec8368ac09 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -4568,9 +4568,6 @@ public class AppOpsService extends IAppOpsService.Stub { // package is exempt from the restriction. ClientRestrictionState restrictionState = mOpUserRestrictions.valueAt(i); if (restrictionState.hasRestriction(code, packageName, attributionTag, userHandle)) { - if (restrictionState.rejectBypass(code, userHandle)) { - return true; - } RestrictionBypass opBypass = opAllowSystemBypassRestriction(code); if (opBypass != null) { // If we are the system, bypass user restrictions for certain codes @@ -6152,8 +6149,6 @@ public class AppOpsService extends IAppOpsService.Stub { for (int j = 0; j < restrictionCount; j++) { int userId = restrictionState.perUserRestrictions.keyAt(j); boolean[] restrictedOps = restrictionState.perUserRestrictions.valueAt(j); - boolean[] rejectBypassOps = - restrictionState.perUserRejectBypasses.valueAt(j); if (restrictedOps == null) { continue; } @@ -6178,9 +6173,6 @@ public class AppOpsService extends IAppOpsService.Stub { restrictedOpsValue.append(", "); } restrictedOpsValue.append(AppOpsManager.opToName(k)); - if (rejectBypassOps != null && rejectBypassOps[k]) { - restrictedOpsValue.append(" rejectBypass=true"); - } } } restrictedOpsValue.append("]"); @@ -6261,14 +6253,14 @@ public class AppOpsService extends IAppOpsService.Stub { String restriction = AppOpsManager.opToRestriction(i); if (restriction != null) { setUserRestrictionNoCheck(i, restrictions.getBoolean(restriction, false), token, - userHandle, null, false); + userHandle, null); } } } @Override public void setUserRestriction(int code, boolean restricted, IBinder token, int userHandle, - Map excludedPackageTags, boolean rejectBypass) { + Map excludedPackageTags) { if (Binder.getCallingPid() != Process.myPid()) { mContext.enforcePermission(Manifest.permission.MANAGE_APP_OPS_RESTRICTIONS, Binder.getCallingPid(), Binder.getCallingUid(), null); @@ -6284,12 +6276,11 @@ public class AppOpsService extends IAppOpsService.Stub { } verifyIncomingOp(code); Objects.requireNonNull(token); - setUserRestrictionNoCheck(code, restricted, token, userHandle, excludedPackageTags, - rejectBypass); + setUserRestrictionNoCheck(code, restricted, token, userHandle, excludedPackageTags); } private void setUserRestrictionNoCheck(int code, boolean restricted, IBinder token, - int userHandle, Map excludedPackageTags, boolean rejectBypass) { + int userHandle, Map excludedPackageTags) { synchronized (AppOpsService.this) { ClientRestrictionState restrictionState = mOpUserRestrictions.get(token); @@ -6303,7 +6294,7 @@ public class AppOpsService extends IAppOpsService.Stub { } if (restrictionState.setRestriction(code, restricted, excludedPackageTags, - userHandle, rejectBypass)) { + userHandle)) { mHandler.sendMessage(PooledLambda.obtainMessage( AppOpsService::notifyWatchersOfChange, this, code, UID_ANY)); mHandler.sendMessage(PooledLambda.obtainMessage( @@ -6834,10 +6825,8 @@ public class AppOpsService extends IAppOpsService.Stub { private final class ClientRestrictionState implements DeathRecipient { private final IBinder token; SparseArray perUserRestrictions; - SparseArray perUserRejectBypasses; SparseArray> perUserExcludedPackageTags; - public ClientRestrictionState(IBinder token) throws RemoteException { token.linkToDeath(this, 0); @@ -6845,17 +6834,13 @@ public class AppOpsService extends IAppOpsService.Stub { } public boolean setRestriction(int code, boolean restricted, - Map excludedPackageTags, int userId, boolean rejectBypass) { + Map excludedPackageTags, int userId) { boolean changed = false; if (perUserRestrictions == null && restricted) { perUserRestrictions = new SparseArray<>(); } - if (perUserRejectBypasses == null && rejectBypass) { - perUserRejectBypasses = new SparseArray<>(); - } - int[] users; if (userId == UserHandle.USER_ALL) { // TODO(b/162888972): this call is returning all users, not just live ones - we @@ -6915,20 +6900,6 @@ public class AppOpsService extends IAppOpsService.Stub { } changed = true; } - - boolean[] userRejectBypasses = perUserRejectBypasses.get(thisUserId); - if (userRejectBypasses == null && rejectBypass) { - userRejectBypasses = new boolean[AppOpsManager._NUM_OP]; - perUserRejectBypasses.put(thisUserId, userRejectBypasses); - } - if (userRejectBypasses != null - && userRejectBypasses[code] != rejectBypass) { - userRejectBypasses[code] = rejectBypass; - if (!rejectBypass && isDefault(userRejectBypasses)) { - perUserRejectBypasses.remove(thisUserId); - } - changed = true; - } } } } @@ -6966,17 +6937,6 @@ public class AppOpsService extends IAppOpsService.Stub { return !ArrayUtils.contains(excludedTags, attributionTag); } - public boolean rejectBypass(int restriction, int userId) { - if (perUserRejectBypasses == null) { - return false; - } - boolean[] rejectBypasses = perUserRejectBypasses.get(userId); - if (rejectBypasses == null) { - return false; - } - return rejectBypasses[restriction]; - } - public void removeUser(int userId) { if (perUserExcludedPackageTags != null) { perUserExcludedPackageTags.remove(userId); From 3f672c54a21d99a01c95e2cc7c0f003343be88fe Mon Sep 17 00:00:00 2001 From: Silin Huang Date: Thu, 20 May 2021 15:59:05 -0700 Subject: [PATCH 166/192] Recreate QuickAccessWallet for Wallet Tile and Lockscreen Icon when the default payment app has changed. Also to avoid a wallet client that doesn't have ServiceInfo is living too long, don't make it final and re-create the wallet client if it has a null service info. Fix: 187972400 Test: manual, see demo- the default payment app is GPay, check Tile and Lockscreen Icon, then change the default payment app and check again. https://drive.google.com/file/d/10-I339VPuxJRGXJT-XmwmnZs4MHaH3gm/view?usp=sharing&resourcekey=0-wDtRXNNr_Tg9ptxk1Tpxsw Change-Id: Ie9a05795bff447424b299132fa60ae2efb2092be (cherry picked from commit bda8ed85a711776dae6ecdd3dfa647b0f9aea9ae) --- .../qs/tiles/QuickAccessWalletTile.java | 66 +++++++++++++++++-- .../phone/KeyguardBottomAreaView.java | 35 ++++++++-- .../NotificationPanelViewController.java | 6 +- .../systemui/wallet/ui/WalletActivity.java | 16 +++-- .../qs/tiles/QuickAccessWalletTileTest.java | 12 +++- .../phone/NotificationPanelViewTest.java | 4 -- 6 files changed, 112 insertions(+), 27 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java index e467925551013..611f0e366859f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java @@ -20,9 +20,11 @@ import static android.provider.Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT; import android.content.Intent; import android.content.pm.PackageManager; +import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Looper; +import android.provider.Settings; import android.service.quickaccesswallet.GetWalletCardsError; import android.service.quickaccesswallet.GetWalletCardsRequest; import android.service.quickaccesswallet.GetWalletCardsResponse; @@ -66,16 +68,16 @@ public class QuickAccessWalletTile extends QSTileImpl { private final CharSequence mLabel = mContext.getString(R.string.wallet_title); private final WalletCardRetriever mCardRetriever = new WalletCardRetriever(); - // TODO(b/180959290): Re-create the QAW Client when the default NFC payment app changes. - private final QuickAccessWalletClient mQuickAccessWalletClient; private final KeyguardStateController mKeyguardStateController; private final PackageManager mPackageManager; private final SecureSettings mSecureSettings; private final Executor mExecutor; private final FeatureFlags mFeatureFlags; - @VisibleForTesting Drawable mCardViewDrawable; + private QuickAccessWalletClient mQuickAccessWalletClient; + private ContentObserver mDefaultPaymentAppObserver; private WalletCard mSelectedCard; + @VisibleForTesting Drawable mCardViewDrawable; @Inject public QuickAccessWalletTile( @@ -87,15 +89,14 @@ public class QuickAccessWalletTile extends QSTileImpl { StatusBarStateController statusBarStateController, ActivityStarter activityStarter, QSLogger qsLogger, - QuickAccessWalletClient quickAccessWalletClient, KeyguardStateController keyguardStateController, PackageManager packageManager, SecureSettings secureSettings, - @Background Executor executor, + @Main Executor executor, FeatureFlags featureFlags) { super(host, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger); - mQuickAccessWalletClient = quickAccessWalletClient; + mQuickAccessWalletClient = QuickAccessWalletClient.create(mContext); mKeyguardStateController = keyguardStateController; mPackageManager = packageManager; mSecureSettings = secureSettings; @@ -115,6 +116,12 @@ public class QuickAccessWalletTile extends QSTileImpl { protected void handleSetListening(boolean listening) { super.handleSetListening(listening); if (listening) { + setupDefaultPaymentAppObserver(); + // Re-create wallet client to avoid a client that doesn't have service info is living + // too long. + if (!mQuickAccessWalletClient.isWalletServiceAvailable()) { + reCreateWalletClient(); + } queryWalletCards(); } } @@ -174,6 +181,7 @@ public class QuickAccessWalletTile extends QSTileImpl { state.stateDescription = state.secondaryLabel; } else { state.state = Tile.STATE_UNAVAILABLE; + state.secondaryLabel = null; } state.sideViewCustomDrawable = isDeviceLocked ? null : mCardViewDrawable; } @@ -202,7 +210,30 @@ public class QuickAccessWalletTile extends QSTileImpl { return label == null ? mLabel : label; } + @Override + protected void handleDestroy() { + super.handleDestroy(); + if (mDefaultPaymentAppObserver != null) { + mSecureSettings.unregisterContentObserver(mDefaultPaymentAppObserver); + } + mQuickAccessWalletClient = null; + } + + @VisibleForTesting + void overrideQuickAccessWalletClientForTest(QuickAccessWalletClient quickAccessWalletClient) { + mQuickAccessWalletClient = quickAccessWalletClient; + } + + @VisibleForTesting + QuickAccessWalletClient getQuickAccessWalletClient() { + return mQuickAccessWalletClient; + } + private void queryWalletCards() { + if (!mQuickAccessWalletClient.isWalletFeatureAvailable()) { + Log.w(TAG, "QAW feature not unavailable, unable to query wallet cards,"); + return; + } int cardWidth = mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_width); int cardHeight = @@ -213,6 +244,29 @@ public class QuickAccessWalletTile extends QSTileImpl { mQuickAccessWalletClient.getWalletCards(mExecutor, request, mCardRetriever); } + private void reCreateWalletClient() { + mQuickAccessWalletClient = QuickAccessWalletClient.create(mContext); + } + + private void setupDefaultPaymentAppObserver() { + if (mDefaultPaymentAppObserver == null) { + mDefaultPaymentAppObserver = new ContentObserver(null /* handler */) { + @Override + public void onChange(boolean selfChange) { + mExecutor.execute(() -> { + reCreateWalletClient(); + queryWalletCards(); + }); + } + }; + + mSecureSettings.registerContentObserver( + Settings.Secure.getUriFor(Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT), + false /* notifyForDescendants */, + mDefaultPaymentAppObserver); + } + } + private class WalletCardRetriever implements QuickAccessWalletClient.OnWalletCardsRetrievedCallback { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java index 7f919b5f5cf5e..04be581e0ccfa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java @@ -194,6 +194,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private ActivityIntentHelper mActivityIntentHelper; private KeyguardUpdateMonitor mKeyguardUpdateMonitor; private ContentObserver mWalletPreferenceObserver; + private ContentObserver mDefaultPaymentAppObserver; private SecureSettings mSecureSettings; public KeyguardBottomAreaView(Context context) { @@ -335,6 +336,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL if (mWalletPreferenceObserver != null) { mSecureSettings.unregisterContentObserver(mWalletPreferenceObserver); } + if (mDefaultPaymentAppObserver != null) { + mSecureSettings.unregisterContentObserver(mDefaultPaymentAppObserver); + } } private void initAccessibility() { @@ -935,9 +939,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL /** * Initialize the wallet feature, only enabling if the feature is enabled within the platform. */ - public void initWallet(QuickAccessWalletClient client, Executor uiExecutor, - SecureSettings secureSettings) { - mQuickAccessWalletClient = client; + public void initWallet(Executor uiExecutor, SecureSettings secureSettings) { + mQuickAccessWalletClient = QuickAccessWalletClient.create(mContext); mSecureSettings = secureSettings; setupWalletPreferenceObserver(); updateWalletPreference(); @@ -953,7 +956,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL mWalletPreferenceObserver = new ContentObserver(null /* handler */) { @Override public void onChange(boolean selfChange) { - mUiExecutor.execute(() -> updateWalletPreference()); + mUiExecutor.execute(() -> { + updateWalletPreference(); + }); } }; @@ -962,10 +967,30 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL false /* notifyForDescendants */, mWalletPreferenceObserver); } + + if (mDefaultPaymentAppObserver == null) { + mDefaultPaymentAppObserver = new ContentObserver(null /* handler */) { + @Override + public void onChange(boolean selfChange) { + mUiExecutor.execute(() -> { + mQuickAccessWalletClient = QuickAccessWalletClient.create(mContext); + updateWalletPreference(); + queryWalletCards(); + updateWalletVisibility(); + }); + } + }; + + mSecureSettings.registerContentObserver( + Settings.Secure.getUriFor(Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT), + false /* notifyForDescendants */, + mDefaultPaymentAppObserver); + } } private void updateWalletPreference() { - mWalletEnabled = mQuickAccessWalletClient.isWalletFeatureAvailable() + mWalletEnabled = mQuickAccessWalletClient.isWalletServiceAvailable() + && mQuickAccessWalletClient.isWalletFeatureAvailable() && mQuickAccessWalletClient.isWalletFeatureAvailableWhenDeviceLocked(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 9d8a9bfafe49c..0e0e14538fb55 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -54,7 +54,6 @@ import android.os.PowerManager; import android.os.SystemClock; import android.os.UserManager; import android.os.VibrationEffect; -import android.service.quickaccesswallet.QuickAccessWalletClient; import android.util.Log; import android.util.MathUtils; import android.view.DisplayCutout; @@ -573,7 +572,6 @@ public class NotificationPanelViewController extends PanelViewController { private int mScreenCornerRadius; private int mNotificationScrimPadding; - private final QuickAccessWalletClient mQuickAccessWalletClient; private final Executor mUiExecutor; private final SecureSettings mSecureSettings; @@ -649,7 +647,6 @@ public class NotificationPanelViewController extends PanelViewController { AmbientState ambientState, LockIconViewController lockIconViewController, FeatureFlags featureFlags, - QuickAccessWalletClient quickAccessWalletClient, KeyguardMediaController keyguardMediaController, PrivacyDotViewController privacyDotViewController, @Main Executor uiExecutor, @@ -703,7 +700,6 @@ public class NotificationPanelViewController extends PanelViewController { mScrimController.setClipsQsScrim(!mShouldUseSplitNotificationShade); mUserManager = userManager; mMediaDataManager = mediaDataManager; - mQuickAccessWalletClient = quickAccessWalletClient; mUiExecutor = uiExecutor; mSecureSettings = secureSettings; pulseExpansionHandler.setPulseExpandAbortListener(() -> { @@ -1098,7 +1094,7 @@ public class NotificationPanelViewController extends PanelViewController { mKeyguardBottomArea.setFalsingManager(mFalsingManager); if (mFeatureFlags.isQuickAccessWalletEnabled()) { - mKeyguardBottomArea.initWallet(mQuickAccessWalletClient, mUiExecutor, mSecureSettings); + mKeyguardBottomArea.initWallet(mUiExecutor, mSecureSettings); } } diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java index 83aa01f8d3931..c6123e77076d7 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java @@ -24,6 +24,7 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.service.quickaccesswallet.QuickAccessWalletClient; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.Window; @@ -52,7 +53,7 @@ import javax.inject.Inject; */ public class WalletActivity extends LifecycleActivity { - private final QuickAccessWalletClient mQuickAccessWalletClient; + private static final String TAG = "WalletActivity"; private final KeyguardStateController mKeyguardStateController; private final KeyguardDismissUtil mKeyguardDismissUtil; private final ActivityStarter mActivityStarter; @@ -65,7 +66,6 @@ public class WalletActivity extends LifecycleActivity { @Inject public WalletActivity( - QuickAccessWalletClient quickAccessWalletClient, KeyguardStateController keyguardStateController, KeyguardDismissUtil keyguardDismissUtil, ActivityStarter activityStarter, @@ -74,7 +74,6 @@ public class WalletActivity extends LifecycleActivity { FalsingManager falsingManager, UserTracker userTracker, StatusBarKeyguardViewManager keyguardViewManager) { - mQuickAccessWalletClient = quickAccessWalletClient; mKeyguardStateController = keyguardStateController; mKeyguardDismissUtil = keyguardDismissUtil; mActivityStarter = activityStarter; @@ -103,10 +102,11 @@ public class WalletActivity extends LifecycleActivity { getActionBar().setHomeActionContentDescription(R.string.accessibility_desc_close); WalletView walletView = requireViewById(R.id.wallet_view); + QuickAccessWalletClient walletClient = QuickAccessWalletClient.create(this); mWalletScreenController = new WalletScreenController( this, walletView, - mQuickAccessWalletClient, + walletClient, mActivityStarter, mExecutor, mHandler, @@ -116,6 +116,10 @@ public class WalletActivity extends LifecycleActivity { walletView.getAppButton().setOnClickListener( v -> { + if (walletClient.createWalletIntent() == null) { + Log.w(TAG, "Unable to create wallet app intent."); + return; + } if (!mKeyguardStateController.isUnlocked() && mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { return; @@ -123,12 +127,12 @@ public class WalletActivity extends LifecycleActivity { if (mKeyguardStateController.isUnlocked()) { mActivityStarter.startActivity( - mQuickAccessWalletClient.createWalletIntent(), true); + walletClient.createWalletIntent(), true); finish(); } else { mKeyguardDismissUtil.executeWhenUnlocked(() -> { mActivityStarter.startActivity( - mQuickAccessWalletClient.createWalletIntent(), true); + walletClient.createWalletIntent(), true); finish(); return false; }, false, true); diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java index 7533cf1310de9..fdd880d0846fc 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java @@ -21,6 +21,7 @@ import static android.provider.Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT; import static com.google.common.truth.Truth.assertThat; +import static junit.framework.Assert.assertNotSame; import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertFalse; import static junit.framework.TestCase.assertNotNull; @@ -155,12 +156,12 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { mStatusBarStateController, mActivityStarter, mQSLogger, - mQuickAccessWalletClient, mKeyguardStateController, mPackageManager, mSecureSettings, MoreExecutors.directExecutor(), mFeatureFlags); + mTile.overrideQuickAccessWalletClientForTest(mQuickAccessWalletClient); } @Test @@ -174,6 +175,15 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { assertFalse(mTile.isAvailable()); } + @Test + public void testWalletServiceUnavailable_recreateWalletClient() { + when(mQuickAccessWalletClient.isWalletServiceAvailable()).thenReturn(false); + + mTile.handleSetListening(true); + + assertNotSame(mQuickAccessWalletClient, mTile.getQuickAccessWalletClient()); + } + @Test public void testIsAvailable_qawFeatureAvailable() { when(mPackageManager.hasSystemFeature(FEATURE_NFC_HOST_CARD_EMULATION)).thenReturn(true); 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 6b4797fc57235..4fc3bfea90ec8 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 @@ -39,7 +39,6 @@ import android.content.res.Resources; import android.hardware.biometrics.BiometricSourceType; import android.os.PowerManager; import android.os.UserManager; -import android.service.quickaccesswallet.QuickAccessWalletClient; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.util.DisplayMetrics; @@ -245,8 +244,6 @@ public class NotificationPanelViewTest extends SysuiTestCase { @Mock private LockIconViewController mLockIconViewController; @Mock - private QuickAccessWalletClient mQuickAccessWalletClient; - @Mock private KeyguardMediaController mKeyguardMediaController; @Mock private PrivacyDotViewController mPrivacyDotViewController; @@ -361,7 +358,6 @@ public class NotificationPanelViewTest extends SysuiTestCase { mAmbientState, mLockIconViewController, mFeatureFlags, - mQuickAccessWalletClient, mKeyguardMediaController, mPrivacyDotViewController, new FakeExecutor(new FakeSystemClock()), From 66bd1bd7cdd320edc186d63538320612b9cfbc63 Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Thu, 20 May 2021 18:38:54 -0400 Subject: [PATCH 167/192] Show a small toast when a double tap is needed. When falsing rejects a single tap, we now show a toast on top of the shade and quick settings. Bug: 188895666 Test: atest SystemUITests && manual Change-Id: I9705803a57dc3ea4af987583c0eaeff2498fb288 (cherry picked from commit 46121d2f9c982bb35a868a62e9c5bc8e105dc43c) --- .../res/layout/status_bar_expanded.xml | 16 ++- .../classifier/FalsingManagerFake.java | 7 +- .../phone/KeyguardIndicationTextView.java | 1 - .../phone/NotificationPanelView.java | 6 + .../NotificationPanelViewController.java | 27 +++-- .../statusbar/phone/TapAgainView.java | 111 ++++++++++++++++++ .../phone/TapAgainViewController.java | 96 +++++++++++++++ .../phone/dagger/StatusBarViewModule.java | 8 ++ .../phone/NotificationPanelViewTest.java | 60 +++++++++- 9 files changed, 319 insertions(+), 13 deletions(-) create mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainView.java create mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainViewController.java diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml index c16f13ef5ae69..09d46856dec80 100644 --- a/packages/SystemUI/res/layout/status_bar_expanded.xml +++ b/packages/SystemUI/res/layout/status_bar_expanded.xml @@ -129,7 +129,21 @@ android:layout_marginTop="@dimen/status_bar_header_height_keyguard" android:text="@string/report_rejected_touch" android:visibility="gone" /> - + mFalsingBeliefListeners = new ArrayList<>(); + private final List mTapListeners = new ArrayList<>(); @Override public void onSuccessfulUnlock() { @@ -148,11 +149,15 @@ public class FalsingManagerFake implements FalsingManager { @Override public void addTapListener(FalsingTapListener falsingTapListener) { - + mTapListeners.add(falsingTapListener); } @Override public void removeTapListener(FalsingTapListener falsingTapListener) { + mTapListeners.remove(falsingTapListener); + } + public List getTapListeners() { + return mTapListeners; } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java index d84bb908fe699..68e20705fbeb2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java @@ -142,7 +142,6 @@ public class KeyguardIndicationTextView extends TextView { Animator yTranslate = ObjectAnimator.ofFloat(this, View.TRANSLATION_Y, 0, -getYTranslationPixels()); yTranslate.setDuration(getFadeOutDuration()); - fadeOut.setInterpolator(Interpolators.FAST_OUT_LINEAR_IN); animatorSet.playTogether(fadeOut, yTranslate); return animatorSet; 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 0f3af095f7be8..d9ba494a4d63d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -24,6 +24,8 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.util.AttributeSet; +import com.android.systemui.R; + public class NotificationPanelView extends PanelView { private static final boolean DEBUG = false; @@ -92,6 +94,10 @@ public class NotificationPanelView extends PanelView { mRtlChangeListener = listener; } + public TapAgainView getTapAgainView() { + return findViewById(R.id.shade_falsing_tap_again); + } + interface RtlChangeListener { void onRtlPropertielsChanged(int layoutDirection); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 3bbabeb0cf7e2..f2ca186daefe6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -97,8 +97,8 @@ import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.dagger.qualifiers.DisplayId; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.doze.DozeLog; -import com.android.systemui.fragments.FragmentHostManager; import com.android.systemui.fragments.FragmentHostManager.FragmentListener; +import com.android.systemui.fragments.FragmentService; import com.android.systemui.media.KeyguardMediaController; import com.android.systemui.media.MediaDataManager; import com.android.systemui.media.MediaHierarchyManager; @@ -306,6 +306,7 @@ public class NotificationPanelViewController extends PanelViewController { private final KeyguardUserSwitcherComponent.Factory mKeyguardUserSwitcherComponentFactory; private final KeyguardStatusBarViewComponent.Factory mKeyguardStatusBarViewComponentFactory; private final QSDetailDisplayer mQSDetailDisplayer; + private final FragmentService mFragmentService; private final FeatureFlags mFeatureFlags; private final ScrimController mScrimController; private final PrivacyDotViewController mPrivacyDotViewController; @@ -314,6 +315,7 @@ public class NotificationPanelViewController extends PanelViewController { // If there are exactly 1 + mMaxKeyguardNotifications, then still shows all notifications private final int mMaxKeyguardNotifications; private final LockscreenShadeTransitionController mLockscreenShadeTransitionController; + private final TapAgainViewController mTapAgainViewController; private boolean mShouldUseSplitNotificationShade; // Current max allowed keyguard notifications determined by measuring the panel private int mMaxAllowedKeyguardNotifications; @@ -604,7 +606,12 @@ public class NotificationPanelViewController extends PanelViewController { private final FalsingTapListener mFalsingTapListener = new FalsingTapListener() { @Override public void onDoubleTapRequired() { - showTransientIndication(R.string.notification_tap_again); + if (mStatusBarStateController.getState() == StatusBarState.SHADE_LOCKED) { + mTapAgainViewController.show(); + } else { + mKeyguardIndicationController.showTransientIndication( + R.string.notification_tap_again); + } mVibratorHelper.vibrate(VibrationEffect.EFFECT_STRENGTH_MEDIUM); } }; @@ -653,6 +660,8 @@ public class NotificationPanelViewController extends PanelViewController { QuickAccessWalletClient quickAccessWalletClient, KeyguardMediaController keyguardMediaController, PrivacyDotViewController privacyDotViewController, + TapAgainViewController tapAgainViewController, + FragmentService fragmentService, @Main Executor uiExecutor, SecureSettings secureSettings) { super(view, falsingManager, dozeLog, keyguardStateController, @@ -679,6 +688,7 @@ public class NotificationPanelViewController extends PanelViewController { mKeyguardQsUserSwitchComponentFactory = keyguardQsUserSwitchComponentFactory; mKeyguardUserSwitcherComponentFactory = keyguardUserSwitcherComponentFactory; mQSDetailDisplayer = qsDetailDisplayer; + mFragmentService = fragmentService; mKeyguardUserSwitcherEnabled = mResources.getBoolean( com.android.internal.R.bool.config_keyguardUserSwitcher); mKeyguardQsUserSwitchEnabled = @@ -705,6 +715,7 @@ public class NotificationPanelViewController extends PanelViewController { mUserManager = userManager; mMediaDataManager = mediaDataManager; mQuickAccessWalletClient = quickAccessWalletClient; + mTapAgainViewController = tapAgainViewController; mUiExecutor = uiExecutor; mSecureSettings = secureSettings; pulseExpansionHandler.setPulseExpandAbortListener(() -> { @@ -843,6 +854,8 @@ public class NotificationPanelViewController extends PanelViewController { if (mShouldUseSplitNotificationShade) { updateResources(); } + + mTapAgainViewController.init(); } @Override @@ -3671,10 +3684,6 @@ public class NotificationPanelViewController extends PanelViewController { updateMaxDisplayedNotifications(true); } - public void showTransientIndication(int id) { - mKeyguardIndicationController.showTransientIndication(id); - } - public void setAlpha(float alpha) { mView.setAlpha(alpha); } @@ -4260,7 +4269,8 @@ public class NotificationPanelViewController extends PanelViewController { private class OnAttachStateChangeListener implements View.OnAttachStateChangeListener { @Override public void onViewAttachedToWindow(View v) { - FragmentHostManager.get(mView).addTagListener(QS.TAG, mFragmentListener); + mFragmentService.getFragmentHostManager(mView) + .addTagListener(QS.TAG, mFragmentListener); mStatusBarStateController.addCallback(mStatusBarStateListener); mConfigurationController.addCallback(mConfigurationListener); mUpdateMonitor.registerCallback(mKeyguardUpdateCallback); @@ -4274,7 +4284,8 @@ public class NotificationPanelViewController extends PanelViewController { @Override public void onViewDetachedFromWindow(View v) { - FragmentHostManager.get(mView).removeTagListener(QS.TAG, mFragmentListener); + mFragmentService.getFragmentHostManager(mView) + .removeTagListener(QS.TAG, mFragmentListener); mStatusBarStateController.removeCallback(mStatusBarStateListener); mConfigurationController.removeCallback(mConfigurationListener); mUpdateMonitor.removeCallback(mKeyguardUpdateCallback); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainView.java new file mode 100644 index 0000000000000..9856795c89039 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainView.java @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2021 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.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.android.systemui.R; +import com.android.wm.shell.animation.Interpolators; + +/** + * View to show a toast-like popup on the notification shade and quick settings. + */ +public class TapAgainView extends FrameLayout { + public TapAgainView( + @NonNull Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + updateBgColor(); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + + TextView text = new TextView(mContext); + text.setText(R.string.notification_tap_again); + addView(text); + } + + void updateBgColor() { + setBackgroundResource(R.drawable.rounded_bg_full); + } + + /** Make the view visible. */ + public void animateIn() { + int yTranslation = mContext.getResources().getDimensionPixelSize( + R.dimen.keyguard_indication_y_translation); + + AnimatorSet animatorSet = new AnimatorSet(); + ObjectAnimator fadeIn = ObjectAnimator.ofFloat(this, View.ALPHA, 1f); + fadeIn.setStartDelay(150); // From KeyguardIndicationTextView#getFadeInDelay + fadeIn.setDuration(317); // From KeyguardIndicationTextView#getFadeInDuration + fadeIn.setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN); + + Animator yTranslate = + ObjectAnimator.ofFloat(this, View.TRANSLATION_Y, yTranslation, 0); + yTranslate.setDuration(600); // From KeyguardIndicationTextView#getYInDuration + yTranslate.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationCancel(Animator animation) { + setTranslationY(0); + } + }); + animatorSet.playTogether(yTranslate, fadeIn); + animatorSet.start(); + setVisibility(View.VISIBLE); + } + + /** Make the view gone. */ + public void animateOut() { + long fadeOutDuration = 167L; // From KeyguardIndicationTextView#getFadeOutDuration + int yTranslation = mContext.getResources().getDimensionPixelSize( + com.android.systemui.R.dimen.keyguard_indication_y_translation); + + AnimatorSet animatorSet = new AnimatorSet(); + ObjectAnimator fadeOut = ObjectAnimator.ofFloat(this, View.ALPHA, 0f); + fadeOut.setDuration(fadeOutDuration); + fadeOut.setInterpolator(Interpolators.FAST_OUT_LINEAR_IN); + + Animator yTranslate = + ObjectAnimator.ofFloat(this, View.TRANSLATION_Y, 0, -yTranslation); + yTranslate.setDuration(fadeOutDuration); + animatorSet.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + setVisibility(GONE); + } + + @Override + public void onAnimationCancel(Animator animation) { + setVisibility(GONE); + } + }); + animatorSet.playTogether(yTranslate, fadeOut); + animatorSet.start(); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainViewController.java new file mode 100644 index 0000000000000..bb53bad7df70c --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainViewController.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2021 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 static com.android.systemui.classifier.FalsingModule.DOUBLE_TAP_TIMEOUT_MS; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.statusbar.phone.dagger.StatusBarComponent; +import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; +import com.android.systemui.util.ViewController; +import com.android.systemui.util.concurrency.DelayableExecutor; + +import javax.inject.Inject; +import javax.inject.Named; + +/** + * Controller for {@link TapAgainView}. + */ +@StatusBarComponent.StatusBarScope +public class TapAgainViewController extends ViewController { + private final DelayableExecutor mDelayableExecutor; + private final ConfigurationController mConfigurationController; + private final long mDoubleTapTimeMs; + + private Runnable mHideCanceler; + + @VisibleForTesting + final ConfigurationListener mConfigurationListener = new ConfigurationListener() { + @Override + public void onOverlayChanged() { + mView.updateBgColor(); + } + + @Override + public void onUiModeChanged() { + mView.updateBgColor(); + } + + @Override + public void onThemeChanged() { + mView.updateBgColor(); + } + }; + + @Inject + protected TapAgainViewController(TapAgainView view, + @Main DelayableExecutor delayableExecutor, + ConfigurationController configurationController, + @Named(DOUBLE_TAP_TIMEOUT_MS) long doubleTapTimeMs) { + super(view); + mDelayableExecutor = delayableExecutor; + mConfigurationController = configurationController; + mDoubleTapTimeMs = doubleTapTimeMs; + } + + @Override + protected void onViewAttached() { + mConfigurationController.addCallback(mConfigurationListener); + } + + @Override + protected void onViewDetached() { + mConfigurationController.removeCallback(mConfigurationListener); + } + + /** Shows the associated view, possibly animating it. */ + public void show() { + if (mHideCanceler != null) { + mHideCanceler.run(); + } + mView.animateIn(); + mHideCanceler = mDelayableExecutor.executeDelayed(this::hide, mDoubleTapTimeMs); + } + + /** Hides the associated view, possibly animating it. */ + public void hide() { + mHideCanceler = null; + mView.animateOut(); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java index 008c0aea7ce9a..27d71edd5e8ad 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java @@ -23,6 +23,7 @@ import com.android.systemui.R; import com.android.systemui.biometrics.AuthRippleView; import com.android.systemui.statusbar.phone.NotificationPanelView; import com.android.systemui.statusbar.phone.NotificationShadeWindowView; +import com.android.systemui.statusbar.phone.TapAgainView; import dagger.Module; import dagger.Provides; @@ -53,4 +54,11 @@ public abstract class StatusBarViewModule { NotificationShadeWindowView notificationShadeWindowView) { return notificationShadeWindowView.findViewById(R.id.auth_ripple); } + + /** */ + @Provides + @StatusBarComponent.StatusBarScope + public static TapAgainView getTapAgainView(NotificationPanelView npv) { + return npv.getTapAgainView(); + } } 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 6b4797fc57235..83a1872a0a451 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 @@ -20,12 +20,15 @@ import static android.content.res.Configuration.ORIENTATION_PORTRAIT; import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; import static com.android.systemui.statusbar.StatusBarState.SHADE; +import static com.android.systemui.statusbar.StatusBarState.SHADE_LOCKED; +import static com.android.systemui.statusbar.notification.ViewGroupFadeHelper.reset; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -75,13 +78,17 @@ import com.android.systemui.biometrics.AuthController; import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.classifier.FalsingManagerFake; import com.android.systemui.doze.DozeLog; +import com.android.systemui.fragments.FragmentHostManager; +import com.android.systemui.fragments.FragmentService; import com.android.systemui.media.KeyguardMediaController; import com.android.systemui.media.MediaDataManager; import com.android.systemui.media.MediaHierarchyManager; +import com.android.systemui.plugins.FalsingManager; import com.android.systemui.qs.QSDetailDisplayer; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.KeyguardAffordanceView; +import com.android.systemui.statusbar.KeyguardIndicationController; import com.android.systemui.statusbar.LockscreenShadeTransitionController; import com.android.systemui.statusbar.NotificationLockscreenUserManager; import com.android.systemui.statusbar.NotificationShadeDepthController; @@ -252,11 +259,21 @@ public class NotificationPanelViewTest extends SysuiTestCase { private PrivacyDotViewController mPrivacyDotViewController; @Mock private SecureSettings mSecureSettings; + @Mock + private TapAgainViewController mTapAgainViewController; + @Mock + private KeyguardIndicationController mKeyguardIndicationController; + @Mock + private FragmentService mFragmentService; + @Mock + private FragmentHostManager mFragmentHostManager; private SysuiStatusBarStateController mStatusBarStateController; private NotificationPanelViewController mNotificationPanelViewController; private View.AccessibilityDelegate mAccessibiltyDelegate; private NotificationsQuickSettingsContainer mNotificationContainerParent; + private List mOnAttachStateChangeListeners; + private FalsingManagerFake mFalsingManager = new FalsingManagerFake(); @Before public void setup() { @@ -297,6 +314,7 @@ public class NotificationPanelViewTest extends SysuiTestCase { mNotificationContainerParent.addView(newViewWithId(R.id.keyguard_status_view)); when(mView.findViewById(R.id.notification_container_parent)) .thenReturn(mNotificationContainerParent); + when(mFragmentService.getFragmentHostManager(mView)).thenReturn(mFragmentHostManager); FlingAnimationUtils.Builder flingAnimationUtilsBuilder = new FlingAnimationUtils.Builder( mDisplayMetrics); @@ -317,7 +335,7 @@ public class NotificationPanelViewTest extends SysuiTestCase { mKeyguardBypassController, mHeadsUpManager, mock(NotificationRoundnessManager.class), mStatusBarStateController, - new FalsingManagerFake(), + mFalsingManager, mLockscreenShadeTransitionController, new FalsingCollectorFake()); when(mKeyguardStatusViewComponentFactory.build(any())) @@ -331,11 +349,12 @@ public class NotificationPanelViewTest extends SysuiTestCase { when(mKeyguardStatusBarViewComponent.getKeyguardStatusBarViewController()) .thenReturn(mKeyguardStatusBarViewController); + reset(mView); mNotificationPanelViewController = new NotificationPanelViewController(mView, mResources, mLayoutInflater, coordinator, expansionHandler, mDynamicPrivacyController, mKeyguardBypassController, - new FalsingManagerFake(), new FalsingCollectorFake(), + mFalsingManager, new FalsingCollectorFake(), mNotificationLockscreenUserManager, mNotificationEntryManager, mKeyguardStateController, mStatusBarStateController, mDozeLog, mDozeParameters, mCommandQueue, mVibratorHelper, @@ -364,6 +383,8 @@ public class NotificationPanelViewTest extends SysuiTestCase { mQuickAccessWalletClient, mKeyguardMediaController, mPrivacyDotViewController, + mTapAgainViewController, + mFragmentService, new FakeExecutor(new FakeSystemClock()), mSecureSettings); mNotificationPanelViewController.initDependencies( @@ -371,6 +392,13 @@ public class NotificationPanelViewTest extends SysuiTestCase { mNotificationShelfController); mNotificationPanelViewController.setHeadsUpManager(mHeadsUpManager); mNotificationPanelViewController.setBar(mPanelBar); + mNotificationPanelViewController.setKeyguardIndicationController( + mKeyguardIndicationController); + ArgumentCaptor onAttachStateChangeListenerArgumentCaptor = + ArgumentCaptor.forClass(View.OnAttachStateChangeListener.class); + verify(mView, atLeast(1)).addOnAttachStateChangeListener( + onAttachStateChangeListenerArgumentCaptor.capture()); + mOnAttachStateChangeListeners = onAttachStateChangeListenerArgumentCaptor.getAllValues(); ArgumentCaptor accessibilityDelegateArgumentCaptor = ArgumentCaptor.forClass(View.AccessibilityDelegate.class); @@ -616,6 +644,34 @@ public class NotificationPanelViewTest extends SysuiTestCase { verify(mKeyguardStateController).notifyPanelFlingEnd(); } + @Test + public void testDoubleTapRequired_Keyguard() { + FalsingManager.FalsingTapListener listener = getFalsingTapListener(); + mStatusBarStateController.setState(KEYGUARD); + + listener.onDoubleTapRequired(); + + verify(mKeyguardIndicationController).showTransientIndication(anyInt()); + } + + @Test + public void testDoubleTapRequired_ShadeLocked() { + FalsingManager.FalsingTapListener listener = getFalsingTapListener(); + mStatusBarStateController.setState(SHADE_LOCKED); + + listener.onDoubleTapRequired(); + + verify(mTapAgainViewController).show(); + } + + private FalsingManager.FalsingTapListener getFalsingTapListener() { + for (View.OnAttachStateChangeListener listener : mOnAttachStateChangeListeners) { + listener.onViewAttachedToWindow(mView); + } + assertThat(mFalsingManager.getTapListeners().size()).isEqualTo(1); + return mFalsingManager.getTapListeners().get(0); + } + private View newViewWithId(int id) { View view = new View(mContext); view.setId(id); From bbbb81d1c3ec465d24f05caad753f3efbe73d1f5 Mon Sep 17 00:00:00 2001 From: Silin Huang Date: Thu, 20 May 2021 15:59:05 -0700 Subject: [PATCH 168/192] Recreate QuickAccessWallet for Wallet Tile and Lockscreen Icon when the default payment app has changed. Also to avoid a wallet client that doesn't have ServiceInfo is living too long, don't make it final and re-create the wallet client if it has a null service info. Fix: 187972400 Test: atest Test: manual, see demo- the default payment app is GPay, check Tile and Lockscreen Icon, then change the default payment app and check again. https://drive.google.com/file/d/10-I339VPuxJRGXJT-XmwmnZs4MHaH3gm/view?usp=sharing&resourcekey=0-wDtRXNNr_Tg9ptxk1Tpxsw Change-Id: Ie9a05795bff447424b299132fa60ae2efb2092be (cherry picked from commit 3b4f91e9aff6a4aa110dd876a486aff73391debb) --- .../qs/tiles/QuickAccessWalletTile.java | 51 +++-- .../phone/KeyguardBottomAreaView.java | 83 ++----- .../NotificationPanelViewController.java | 10 +- .../QuickAccessWalletController.java | 207 ++++++++++++++++++ .../systemui/wallet/ui/WalletActivity.java | 16 +- .../qs/tiles/QuickAccessWalletTileTest.java | 62 ++---- .../phone/NotificationPanelViewTest.java | 8 +- .../QuickAccessWalletControllerTest.java | 158 +++++++++++++ 8 files changed, 454 insertions(+), 141 deletions(-) create mode 100644 packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java create mode 100644 packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java index e467925551013..64aec5e0b32b5 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java @@ -18,13 +18,14 @@ package com.android.systemui.qs.tiles; import static android.provider.Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT; +import static com.android.systemui.wallet.controller.QuickAccessWalletController.WalletChangeEvent.DEFAULT_PAYMENT_APP_CHANGE; + import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Looper; import android.service.quickaccesswallet.GetWalletCardsError; -import android.service.quickaccesswallet.GetWalletCardsRequest; import android.service.quickaccesswallet.GetWalletCardsResponse; import android.service.quickaccesswallet.QuickAccessWalletClient; import android.service.quickaccesswallet.WalletCard; @@ -51,6 +52,7 @@ import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.settings.SecureSettings; +import com.android.systemui.wallet.controller.QuickAccessWalletController; import com.android.systemui.wallet.ui.WalletActivity; import java.util.List; @@ -66,16 +68,15 @@ public class QuickAccessWalletTile extends QSTileImpl { private final CharSequence mLabel = mContext.getString(R.string.wallet_title); private final WalletCardRetriever mCardRetriever = new WalletCardRetriever(); - // TODO(b/180959290): Re-create the QAW Client when the default NFC payment app changes. - private final QuickAccessWalletClient mQuickAccessWalletClient; private final KeyguardStateController mKeyguardStateController; private final PackageManager mPackageManager; private final SecureSettings mSecureSettings; private final Executor mExecutor; + private final QuickAccessWalletController mController; private final FeatureFlags mFeatureFlags; - @VisibleForTesting Drawable mCardViewDrawable; private WalletCard mSelectedCard; + @VisibleForTesting Drawable mCardViewDrawable; @Inject public QuickAccessWalletTile( @@ -87,15 +88,15 @@ public class QuickAccessWalletTile extends QSTileImpl { StatusBarStateController statusBarStateController, ActivityStarter activityStarter, QSLogger qsLogger, - QuickAccessWalletClient quickAccessWalletClient, KeyguardStateController keyguardStateController, PackageManager packageManager, SecureSettings secureSettings, - @Background Executor executor, + @Main Executor executor, + QuickAccessWalletController quickAccessWalletController, FeatureFlags featureFlags) { super(host, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger); - mQuickAccessWalletClient = quickAccessWalletClient; + mController = quickAccessWalletController; mKeyguardStateController = keyguardStateController; mPackageManager = packageManager; mSecureSettings = secureSettings; @@ -115,7 +116,11 @@ public class QuickAccessWalletTile extends QSTileImpl { protected void handleSetListening(boolean listening) { super.handleSetListening(listening); if (listening) { - queryWalletCards(); + mController.setupWalletChangeObservers(mCardRetriever, DEFAULT_PAYMENT_APP_CHANGE); + if (!mController.getWalletClient().isWalletServiceAvailable()) { + mController.reCreateWalletClient(); + } + mController.queryWalletCards(mCardRetriever); } } @@ -139,12 +144,13 @@ public class QuickAccessWalletTile extends QSTileImpl { mContext.startActivity(intent); } } else { - if (mQuickAccessWalletClient.createWalletIntent() == null) { + if (mController.getWalletClient().createWalletIntent() == null) { Log.w(TAG, "Could not get intent of the wallet app."); return; } mActivityStarter.postStartActivityDismissingKeyguard( - mQuickAccessWalletClient.createWalletIntent(), /* delay= */ 0, + mController.getWalletClient().createWalletIntent(), + /* delay= */ 0, animationController); } }); @@ -152,30 +158,34 @@ public class QuickAccessWalletTile extends QSTileImpl { @Override protected void handleUpdateState(State state, Object arg) { - CharSequence label = mQuickAccessWalletClient.getServiceLabel(); + CharSequence label = mController.getWalletClient().getServiceLabel(); state.label = label == null ? mLabel : label; state.contentDescription = state.label; state.icon = ResourceIcon.get(R.drawable.ic_wallet_lockscreen); boolean isDeviceLocked = !mKeyguardStateController.isUnlocked(); - if (mQuickAccessWalletClient.isWalletServiceAvailable()) { + if (mController.getWalletClient().isWalletServiceAvailable()) { if (mSelectedCard != null) { if (isDeviceLocked) { state.state = Tile.STATE_INACTIVE; state.secondaryLabel = mContext.getString(R.string.wallet_secondary_label_device_locked); + state.sideViewCustomDrawable = null; } else { state.state = Tile.STATE_ACTIVE; state.secondaryLabel = mSelectedCard.getContentDescription(); + state.sideViewCustomDrawable = mCardViewDrawable; } } else { state.state = Tile.STATE_INACTIVE; state.secondaryLabel = mContext.getString(R.string.wallet_secondary_label_no_card); + state.sideViewCustomDrawable = null; } state.stateDescription = state.secondaryLabel; } else { state.state = Tile.STATE_UNAVAILABLE; + state.secondaryLabel = null; + state.sideViewCustomDrawable = null; } - state.sideViewCustomDrawable = isDeviceLocked ? null : mCardViewDrawable; } @Override @@ -198,19 +208,14 @@ public class QuickAccessWalletTile extends QSTileImpl { @Override public CharSequence getTileLabel() { - CharSequence label = mQuickAccessWalletClient.getServiceLabel(); + CharSequence label = mController.getWalletClient().getServiceLabel(); return label == null ? mLabel : label; } - private void queryWalletCards() { - int cardWidth = - mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_width); - int cardHeight = - mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_height); - int iconSizePx = mContext.getResources().getDimensionPixelSize(R.dimen.wallet_icon_size); - GetWalletCardsRequest request = - new GetWalletCardsRequest(cardWidth, cardHeight, iconSizePx, /* maxCards= */ 1); - mQuickAccessWalletClient.getWalletCards(mExecutor, request, mCardRetriever); + @Override + protected void handleDestroy() { + super.handleDestroy(); + mController.unregisterWalletChangeObservers(DEFAULT_PAYMENT_APP_CHANGE); } private class WalletCardRetriever implements diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java index 7f919b5f5cf5e..4d8e7de376064 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java @@ -24,6 +24,8 @@ import static com.android.systemui.tuner.LockscreenFragment.LOCKSCREEN_LEFT_BUTT import static com.android.systemui.tuner.LockscreenFragment.LOCKSCREEN_LEFT_UNLOCK; import static com.android.systemui.tuner.LockscreenFragment.LOCKSCREEN_RIGHT_BUTTON; import static com.android.systemui.tuner.LockscreenFragment.LOCKSCREEN_RIGHT_UNLOCK; +import static com.android.systemui.wallet.controller.QuickAccessWalletController.WalletChangeEvent.DEFAULT_PAYMENT_APP_CHANGE; +import static com.android.systemui.wallet.controller.QuickAccessWalletController.WalletChangeEvent.WALLET_PREFERENCE_CHANGE; import android.app.ActivityManager; import android.app.ActivityOptions; @@ -39,7 +41,6 @@ import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Configuration; -import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; @@ -49,13 +50,10 @@ import android.os.Messenger; import android.os.RemoteException; import android.os.UserHandle; import android.provider.MediaStore; -import android.provider.Settings; import android.service.media.CameraPrewarmService; import android.service.quickaccesswallet.GetWalletCardsError; -import android.service.quickaccesswallet.GetWalletCardsRequest; import android.service.quickaccesswallet.GetWalletCardsResponse; import android.service.quickaccesswallet.QuickAccessWalletClient; -import android.service.quickaccesswallet.QuickAccessWalletClientImpl; import android.telecom.TelecomManager; import android.text.TextUtils; import android.util.AttributeSet; @@ -71,7 +69,6 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.widget.LockPatternUtils; @@ -97,11 +94,9 @@ import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.PreviewInflater; import com.android.systemui.tuner.LockscreenFragment.LockButtonFactory; import com.android.systemui.tuner.TunerService; -import com.android.systemui.util.settings.SecureSettings; +import com.android.systemui.wallet.controller.QuickAccessWalletController; import com.android.systemui.wallet.ui.WalletActivity; -import java.util.concurrent.Executor; - /** * Implementation for the bottom area of the Keyguard, including camera/phone affordance and status * text. @@ -137,10 +132,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private KeyguardAffordanceView mLeftAffordanceView; private ImageView mWalletButton; - private boolean mWalletEnabled = false; private boolean mHasCard = false; private WalletCardRetriever mCardRetriever = new WalletCardRetriever(); - private QuickAccessWalletClient mQuickAccessWalletClient; + private QuickAccessWalletController mQuickAccessWalletController; private ViewGroup mIndicationArea; private TextView mIndicationText; @@ -159,7 +153,6 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private StatusBar mStatusBar; private KeyguardAffordanceHelper mAffordanceHelper; private FalsingManager mFalsingManager; - @Nullable private Executor mUiExecutor; private boolean mUserSetupComplete; private boolean mPrewarmBound; private Messenger mPrewarmMessenger; @@ -193,8 +186,6 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private int mBurnInYOffset; private ActivityIntentHelper mActivityIntentHelper; private KeyguardUpdateMonitor mKeyguardUpdateMonitor; - private ContentObserver mWalletPreferenceObserver; - private SecureSettings mSecureSettings; public KeyguardBottomAreaView(Context context) { this(context, null); @@ -332,8 +323,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL getContext().unregisterReceiver(mDevicePolicyReceiver); mKeyguardUpdateMonitor.removeCallback(mUpdateMonitorCallback); - if (mWalletPreferenceObserver != null) { - mSecureSettings.unregisterContentObserver(mWalletPreferenceObserver); + if (mQuickAccessWalletController != null) { + mQuickAccessWalletController.unregisterWalletChangeObservers( + WALLET_PREFERENCE_CHANGE, DEFAULT_PAYMENT_APP_CHANGE); } } @@ -456,7 +448,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL } private void updateWalletVisibility() { - if (mDozing || !mWalletEnabled || !mHasCard) { + if (mDozing + || mQuickAccessWalletController == null + || !mQuickAccessWalletController.isWalletEnabled() + || !mHasCard) { mWalletButton.setVisibility(GONE); mIndicationArea.setPadding(0, 0, 0, 0); } else { @@ -690,7 +685,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL @Override public void onKeyguardShowingChanged() { if (mKeyguardStateController.isShowing()) { - queryWalletCards(); + if (mQuickAccessWalletController != null) { + mQuickAccessWalletController.queryWalletCards(mCardRetriever); + } } } @@ -935,50 +932,17 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL /** * Initialize the wallet feature, only enabling if the feature is enabled within the platform. */ - public void initWallet(QuickAccessWalletClient client, Executor uiExecutor, - SecureSettings secureSettings) { - mQuickAccessWalletClient = client; - mSecureSettings = secureSettings; - setupWalletPreferenceObserver(); - updateWalletPreference(); - - mUiExecutor = uiExecutor; - queryWalletCards(); + public void initWallet( + QuickAccessWalletController controller) { + mQuickAccessWalletController = controller; + mQuickAccessWalletController.setupWalletChangeObservers( + mCardRetriever, WALLET_PREFERENCE_CHANGE, DEFAULT_PAYMENT_APP_CHANGE); + mQuickAccessWalletController.updateWalletPreference(); + mQuickAccessWalletController.queryWalletCards(mCardRetriever); updateWalletVisibility(); } - private void setupWalletPreferenceObserver() { - if (mWalletPreferenceObserver == null) { - mWalletPreferenceObserver = new ContentObserver(null /* handler */) { - @Override - public void onChange(boolean selfChange) { - mUiExecutor.execute(() -> updateWalletPreference()); - } - }; - - mSecureSettings.registerContentObserver( - Settings.Secure.getUriFor(QuickAccessWalletClientImpl.SETTING_KEY), - false /* notifyForDescendants */, - mWalletPreferenceObserver); - } - } - - private void updateWalletPreference() { - mWalletEnabled = mQuickAccessWalletClient.isWalletFeatureAvailable() - && mQuickAccessWalletClient.isWalletFeatureAvailableWhenDeviceLocked(); - } - - private void queryWalletCards() { - if (!mWalletEnabled || mUiExecutor == null) { - return; - } - GetWalletCardsRequest request = - new GetWalletCardsRequest(1 /* cardWidth */, 1 /* cardHeight */, - 1 /* iconSizePx */, 1 /* maxCards */); - mQuickAccessWalletClient.getWalletCards(mUiExecutor, request, mCardRetriever); - } - private void onWalletClick(View v) { // More coming here; need to inform the user about how to proceed if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { @@ -991,12 +955,13 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); } else { - if (mQuickAccessWalletClient.createWalletIntent() == null) { + if (mQuickAccessWalletController.getWalletClient().createWalletIntent() == null) { Log.w(TAG, "Could not get intent of the wallet app."); return; } mActivityStarter.postStartActivityDismissingKeyguard( - mQuickAccessWalletClient.createWalletIntent(), /* delay= */ 0); + mQuickAccessWalletController.getWalletClient().createWalletIntent(), + /* delay= */ 0); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index f2ca186daefe6..5a965c73912b7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -54,7 +54,6 @@ import android.os.PowerManager; import android.os.SystemClock; import android.os.UserManager; import android.os.VibrationEffect; -import android.service.quickaccesswallet.QuickAccessWalletClient; import android.util.Log; import android.util.MathUtils; import android.view.DisplayCutout; @@ -153,6 +152,7 @@ import com.android.systemui.statusbar.policy.KeyguardUserSwitcherView; import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener; import com.android.systemui.util.Utils; import com.android.systemui.util.settings.SecureSettings; +import com.android.systemui.wallet.controller.QuickAccessWalletController; import com.android.wm.shell.animation.FlingAnimationUtils; import java.io.FileDescriptor; @@ -310,6 +310,7 @@ public class NotificationPanelViewController extends PanelViewController { private final FeatureFlags mFeatureFlags; private final ScrimController mScrimController; private final PrivacyDotViewController mPrivacyDotViewController; + private final QuickAccessWalletController mQuickAccessWalletController; // Maximum # notifications to show on Keyguard; extras will be collapsed in an overflow card. // If there are exactly 1 + mMaxKeyguardNotifications, then still shows all notifications @@ -576,7 +577,6 @@ public class NotificationPanelViewController extends PanelViewController { private int mScreenCornerRadius; private int mNotificationScrimPadding; - private final QuickAccessWalletClient mQuickAccessWalletClient; private final Executor mUiExecutor; private final SecureSettings mSecureSettings; @@ -657,11 +657,11 @@ public class NotificationPanelViewController extends PanelViewController { AmbientState ambientState, LockIconViewController lockIconViewController, FeatureFlags featureFlags, - QuickAccessWalletClient quickAccessWalletClient, KeyguardMediaController keyguardMediaController, PrivacyDotViewController privacyDotViewController, TapAgainViewController tapAgainViewController, FragmentService fragmentService, + QuickAccessWalletController quickAccessWalletController, @Main Executor uiExecutor, SecureSettings secureSettings) { super(view, falsingManager, dozeLog, keyguardStateController, @@ -672,6 +672,7 @@ public class NotificationPanelViewController extends PanelViewController { mVibratorHelper = vibratorHelper; mKeyguardMediaController = keyguardMediaController; mPrivacyDotViewController = privacyDotViewController; + mQuickAccessWalletController = quickAccessWalletController; mMetricsLogger = metricsLogger; mActivityManager = activityManager; mConfigurationController = configurationController; @@ -714,7 +715,6 @@ public class NotificationPanelViewController extends PanelViewController { mScrimController.setClipsQsScrim(!mShouldUseSplitNotificationShade); mUserManager = userManager; mMediaDataManager = mediaDataManager; - mQuickAccessWalletClient = quickAccessWalletClient; mTapAgainViewController = tapAgainViewController; mUiExecutor = uiExecutor; mSecureSettings = secureSettings; @@ -1111,7 +1111,7 @@ public class NotificationPanelViewController extends PanelViewController { mKeyguardBottomArea.setFalsingManager(mFalsingManager); if (mFeatureFlags.isQuickAccessWalletEnabled()) { - mKeyguardBottomArea.initWallet(mQuickAccessWalletClient, mUiExecutor, mSecureSettings); + mKeyguardBottomArea.initWallet(mQuickAccessWalletController); } } diff --git a/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java b/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java new file mode 100644 index 0000000000000..9d0cc6a00ec0e --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/wallet/controller/QuickAccessWalletController.java @@ -0,0 +1,207 @@ +/* + * Copyright (C) 2021 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.wallet.controller; + +import static com.android.systemui.wallet.controller.QuickAccessWalletController.WalletChangeEvent.DEFAULT_PAYMENT_APP_CHANGE; +import static com.android.systemui.wallet.controller.QuickAccessWalletController.WalletChangeEvent.WALLET_PREFERENCE_CHANGE; + +import android.content.Context; +import android.database.ContentObserver; +import android.provider.Settings; +import android.service.quickaccesswallet.GetWalletCardsRequest; +import android.service.quickaccesswallet.QuickAccessWalletClient; +import android.service.quickaccesswallet.QuickAccessWalletClientImpl; +import android.util.Log; + +import com.android.systemui.R; +import com.android.systemui.dagger.SysUISingleton; +import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.util.settings.SecureSettings; + +import java.util.concurrent.Executor; + +import javax.inject.Inject; + +/** + * Controller to handle communication between SystemUI and Quick Access Wallet Client. + */ +@SysUISingleton +public class QuickAccessWalletController { + + /** + * Event for the wallet status change, e.g. the default payment app change and the wallet + * preference change. + */ + public enum WalletChangeEvent { + DEFAULT_PAYMENT_APP_CHANGE, + WALLET_PREFERENCE_CHANGE, + } + + private static final String TAG = "QAWController"; + private final Context mContext; + private final Executor mExecutor; + private final SecureSettings mSecureSettings; + + private QuickAccessWalletClient mQuickAccessWalletClient; + private ContentObserver mWalletPreferenceObserver; + private ContentObserver mDefaultPaymentAppObserver; + private int mWalletPreferenceChangeEvents = 0; + private int mDefaultPaymentAppChangeEvents = 0; + private boolean mWalletEnabled = false; + + @Inject + public QuickAccessWalletController( + Context context, + @Main Executor executor, + SecureSettings secureSettings, + QuickAccessWalletClient quickAccessWalletClient) { + mContext = context; + mExecutor = executor; + mSecureSettings = secureSettings; + mQuickAccessWalletClient = quickAccessWalletClient; + } + + /** + * Returns true if the Quick Access Wallet service & feature is available. + */ + public boolean isWalletEnabled() { + return mWalletEnabled; + } + + /** + * Returns the current instance of {@link QuickAccessWalletClient} in the controller. + */ + public QuickAccessWalletClient getWalletClient() { + return mQuickAccessWalletClient; + } + + /** + * Setup the wallet change observers per {@link WalletChangeEvent} + * + * @param cardsRetriever a callback that retrieves the wallet cards + * @param events {@link WalletChangeEvent} need to be handled. + */ + public void setupWalletChangeObservers( + QuickAccessWalletClient.OnWalletCardsRetrievedCallback cardsRetriever, + WalletChangeEvent... events) { + for (WalletChangeEvent event : events) { + if (event == WALLET_PREFERENCE_CHANGE) { + setupWalletPreferenceObserver(); + } else if (event == DEFAULT_PAYMENT_APP_CHANGE) { + setupDefaultPaymentAppObserver(cardsRetriever); + } + } + } + + /** + * Unregister wallet change observers per {@link WalletChangeEvent} if needed. + * + */ + public void unregisterWalletChangeObservers(WalletChangeEvent... events) { + for (WalletChangeEvent event : events) { + if (event == WALLET_PREFERENCE_CHANGE && mWalletPreferenceObserver != null) { + mWalletPreferenceChangeEvents--; + if (mWalletPreferenceChangeEvents == 0) { + mSecureSettings.unregisterContentObserver(mWalletPreferenceObserver); + } + } else if (event == DEFAULT_PAYMENT_APP_CHANGE && mDefaultPaymentAppObserver != null) { + mDefaultPaymentAppChangeEvents--; + if (mDefaultPaymentAppChangeEvents == 0) { + mSecureSettings.unregisterContentObserver(mDefaultPaymentAppObserver); + } + } + } + } + + /** + * Update the "show wallet" preference. + */ + public void updateWalletPreference() { + mWalletEnabled = mQuickAccessWalletClient.isWalletServiceAvailable() + && mQuickAccessWalletClient.isWalletFeatureAvailable() + && mQuickAccessWalletClient.isWalletFeatureAvailableWhenDeviceLocked(); + } + + /** + * Query the wallet cards from {@link QuickAccessWalletClient}. + * + * @param cardsRetriever a callback to retrieve wallet cards. + */ + public void queryWalletCards( + QuickAccessWalletClient.OnWalletCardsRetrievedCallback cardsRetriever) { + if (!mWalletEnabled) { + Log.w(TAG, "QuickAccessWallet is unavailable, unable to query cards."); + return; + } + int cardWidth = + mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_width); + int cardHeight = + mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_height); + int iconSizePx = mContext.getResources().getDimensionPixelSize(R.dimen.wallet_icon_size); + GetWalletCardsRequest request = + new GetWalletCardsRequest(cardWidth, cardHeight, iconSizePx, /* maxCards= */ 1); + mQuickAccessWalletClient.getWalletCards(mExecutor, request, cardsRetriever); + } + + /** + * Re-create the {@link QuickAccessWalletClient} of the controller. + */ + public void reCreateWalletClient() { + mQuickAccessWalletClient = QuickAccessWalletClient.create(mContext); + } + + private void setupDefaultPaymentAppObserver( + QuickAccessWalletClient.OnWalletCardsRetrievedCallback cardsRetriever) { + if (mDefaultPaymentAppObserver == null) { + mDefaultPaymentAppObserver = new ContentObserver(null /* handler */) { + @Override + public void onChange(boolean selfChange) { + mExecutor.execute(() -> { + reCreateWalletClient(); + updateWalletPreference(); + queryWalletCards(cardsRetriever); + }); + } + }; + + mSecureSettings.registerContentObserver( + Settings.Secure.getUriFor(Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT), + false /* notifyForDescendants */, + mDefaultPaymentAppObserver); + } + mDefaultPaymentAppChangeEvents++; + } + + private void setupWalletPreferenceObserver() { + if (mWalletPreferenceObserver == null) { + mWalletPreferenceObserver = new ContentObserver(null /* handler */) { + @Override + public void onChange(boolean selfChange) { + mExecutor.execute(() -> { + updateWalletPreference(); + }); + } + }; + + mSecureSettings.registerContentObserver( + Settings.Secure.getUriFor(QuickAccessWalletClientImpl.SETTING_KEY), + false /* notifyForDescendants */, + mWalletPreferenceObserver); + } + mWalletPreferenceChangeEvents++; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java index 83aa01f8d3931..c6123e77076d7 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java @@ -24,6 +24,7 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.service.quickaccesswallet.QuickAccessWalletClient; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.Window; @@ -52,7 +53,7 @@ import javax.inject.Inject; */ public class WalletActivity extends LifecycleActivity { - private final QuickAccessWalletClient mQuickAccessWalletClient; + private static final String TAG = "WalletActivity"; private final KeyguardStateController mKeyguardStateController; private final KeyguardDismissUtil mKeyguardDismissUtil; private final ActivityStarter mActivityStarter; @@ -65,7 +66,6 @@ public class WalletActivity extends LifecycleActivity { @Inject public WalletActivity( - QuickAccessWalletClient quickAccessWalletClient, KeyguardStateController keyguardStateController, KeyguardDismissUtil keyguardDismissUtil, ActivityStarter activityStarter, @@ -74,7 +74,6 @@ public class WalletActivity extends LifecycleActivity { FalsingManager falsingManager, UserTracker userTracker, StatusBarKeyguardViewManager keyguardViewManager) { - mQuickAccessWalletClient = quickAccessWalletClient; mKeyguardStateController = keyguardStateController; mKeyguardDismissUtil = keyguardDismissUtil; mActivityStarter = activityStarter; @@ -103,10 +102,11 @@ public class WalletActivity extends LifecycleActivity { getActionBar().setHomeActionContentDescription(R.string.accessibility_desc_close); WalletView walletView = requireViewById(R.id.wallet_view); + QuickAccessWalletClient walletClient = QuickAccessWalletClient.create(this); mWalletScreenController = new WalletScreenController( this, walletView, - mQuickAccessWalletClient, + walletClient, mActivityStarter, mExecutor, mHandler, @@ -116,6 +116,10 @@ public class WalletActivity extends LifecycleActivity { walletView.getAppButton().setOnClickListener( v -> { + if (walletClient.createWalletIntent() == null) { + Log.w(TAG, "Unable to create wallet app intent."); + return; + } if (!mKeyguardStateController.isUnlocked() && mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { return; @@ -123,12 +127,12 @@ public class WalletActivity extends LifecycleActivity { if (mKeyguardStateController.isUnlocked()) { mActivityStarter.startActivity( - mQuickAccessWalletClient.createWalletIntent(), true); + walletClient.createWalletIntent(), true); finish(); } else { mKeyguardDismissUtil.executeWhenUnlocked(() -> { mActivityStarter.startActivity( - mQuickAccessWalletClient.createWalletIntent(), true); + walletClient.createWalletIntent(), true); finish(); return false; }, false, true); diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java index 7533cf1310de9..b09afab3d242f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java @@ -73,6 +73,7 @@ import com.android.systemui.qs.tileimpl.QSTileImpl; import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.settings.SecureSettings; +import com.android.systemui.wallet.controller.QuickAccessWalletController; import com.google.common.util.concurrent.MoreExecutors; @@ -119,6 +120,8 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { @Mock private SecureSettings mSecureSettings; @Mock + private QuickAccessWalletController mController; + @Mock private FeatureFlags mFeatureFlags; @Captor ArgumentCaptor mIntentCaptor; @@ -145,6 +148,8 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { when(mQuickAccessWalletClient.getServiceLabel()).thenReturn(LABEL); when(mQuickAccessWalletClient.isWalletFeatureAvailable()).thenReturn(true); when(mQuickAccessWalletClient.isWalletServiceAvailable()).thenReturn(true); + when(mQuickAccessWalletClient.isWalletFeatureAvailableWhenDeviceLocked()).thenReturn(true); + when(mController.getWalletClient()).thenReturn(mQuickAccessWalletClient); mTile = new QuickAccessWalletTile( mHost, @@ -155,11 +160,11 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { mStatusBarStateController, mActivityStarter, mQSLogger, - mQuickAccessWalletClient, mKeyguardStateController, mPackageManager, mSecureSettings, MoreExecutors.directExecutor(), + mController, mFeatureFlags); } @@ -174,6 +179,15 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { assertFalse(mTile.isAvailable()); } + @Test + public void testWalletServiceUnavailable_recreateWalletClient() { + when(mQuickAccessWalletClient.isWalletServiceAvailable()).thenReturn(false); + + mTile.handleSetListening(true); + + verify(mController, times(1)).reCreateWalletClient(); + } + @Test public void testIsAvailable_qawFeatureAvailable() { when(mPackageManager.hasSystemFeature(FEATURE_NFC_HOST_CARD_EMULATION)).thenReturn(true); @@ -330,17 +344,8 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { public void testHandleSetListening_queryCards() { mTile.handleSetListening(true); - verify(mQuickAccessWalletClient) - .getWalletCards(any(), mRequestCaptor.capture(), mCallbackCaptor.capture()); + verify(mController).queryWalletCards(mCallbackCaptor.capture()); - GetWalletCardsRequest request = mRequestCaptor.getValue(); - assertEquals( - mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_width), - request.getCardWidthPx()); - assertEquals( - mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_height), - request.getCardHeightPx()); - assertEquals(1, request.getMaxCards()); assertThat(mCallbackCaptor.getValue()).isInstanceOf( QuickAccessWalletClient.OnWalletCardsRetrievedCallback.class); } @@ -353,37 +358,6 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { assertNotNull(mTile.getState().sideViewCustomDrawable); } - @Test - public void testState_queryCards_hasCards_then_noCards() { - when(mKeyguardStateController.isUnlocked()).thenReturn(true); - GetWalletCardsResponse responseWithCards = - new GetWalletCardsResponse( - Collections.singletonList(createWalletCard(mContext)), 0); - GetWalletCardsResponse responseWithoutCards = - new GetWalletCardsResponse(Collections.EMPTY_LIST, 0); - - mTile.handleSetListening(true); - - verify(mQuickAccessWalletClient).getWalletCards(any(), any(), mCallbackCaptor.capture()); - - // query wallet cards, has cards - mCallbackCaptor.getValue().onWalletCardsRetrieved(responseWithCards); - mTestableLooper.processAllMessages(); - - assertNotNull(mTile.getState().sideViewCustomDrawable); - - mTile.handleSetListening(true); - - verify(mQuickAccessWalletClient, times(2)) - .getWalletCards(any(), any(), mCallbackCaptor.capture()); - - // query wallet cards, has no cards - mCallbackCaptor.getValue().onWalletCardsRetrieved(responseWithoutCards); - mTestableLooper.processAllMessages(); - - assertNull(mTile.getState().sideViewCustomDrawable); - } - @Test public void testQueryCards_noCards_notUpdateSideViewDrawable() { setUpWalletCard(/* hasCard= */ false); @@ -398,7 +372,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { mTile.handleSetListening(true); - verify(mQuickAccessWalletClient).getWalletCards(any(), any(), mCallbackCaptor.capture()); + verify(mController).queryWalletCards(mCallbackCaptor.capture()); mCallbackCaptor.getValue().onWalletCardRetrievalError(error); mTestableLooper.processAllMessages(); @@ -422,7 +396,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { mTile.handleSetListening(true); - verify(mQuickAccessWalletClient).getWalletCards(any(), any(), mCallbackCaptor.capture()); + verify(mController).queryWalletCards(mCallbackCaptor.capture()); mCallbackCaptor.getValue().onWalletCardsRetrieved(response); mTestableLooper.processAllMessages(); 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 83a1872a0a451..ee8d1209a5cb3 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 @@ -42,7 +42,6 @@ import android.content.res.Resources; import android.hardware.biometrics.BiometricSourceType; import android.os.PowerManager; import android.os.UserManager; -import android.service.quickaccesswallet.QuickAccessWalletClient; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.util.DisplayMetrics; @@ -112,6 +111,7 @@ import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.settings.SecureSettings; import com.android.systemui.util.time.FakeSystemClock; +import com.android.systemui.wallet.controller.QuickAccessWalletController; import com.android.wm.shell.animation.FlingAnimationUtils; import org.junit.Before; @@ -252,8 +252,6 @@ public class NotificationPanelViewTest extends SysuiTestCase { @Mock private LockIconViewController mLockIconViewController; @Mock - private QuickAccessWalletClient mQuickAccessWalletClient; - @Mock private KeyguardMediaController mKeyguardMediaController; @Mock private PrivacyDotViewController mPrivacyDotViewController; @@ -267,6 +265,8 @@ public class NotificationPanelViewTest extends SysuiTestCase { private FragmentService mFragmentService; @Mock private FragmentHostManager mFragmentHostManager; + @Mock + private QuickAccessWalletController mQuickAccessWalletController; private SysuiStatusBarStateController mStatusBarStateController; private NotificationPanelViewController mNotificationPanelViewController; @@ -380,11 +380,11 @@ public class NotificationPanelViewTest extends SysuiTestCase { mAmbientState, mLockIconViewController, mFeatureFlags, - mQuickAccessWalletClient, mKeyguardMediaController, mPrivacyDotViewController, mTapAgainViewController, mFragmentService, + mQuickAccessWalletController, new FakeExecutor(new FakeSystemClock()), mSecureSettings); mNotificationPanelViewController.initDependencies( diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java new file mode 100644 index 0000000000000..33666bc5b4627 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/QuickAccessWalletControllerTest.java @@ -0,0 +1,158 @@ +/* + * Copyright (C) 2021 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.wallet.controller; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.service.quickaccesswallet.GetWalletCardsRequest; +import android.service.quickaccesswallet.QuickAccessWalletClient; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; + +import androidx.test.filters.SmallTest; + +import com.android.systemui.R; +import com.android.systemui.SysuiTestCase; +import com.android.systemui.util.settings.SecureSettings; + +import com.google.common.util.concurrent.MoreExecutors; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper +@SmallTest +public class QuickAccessWalletControllerTest extends SysuiTestCase { + + @Mock + private QuickAccessWalletClient mQuickAccessWalletClient; + @Mock + private SecureSettings mSecureSettings; + @Mock + private QuickAccessWalletClient.OnWalletCardsRetrievedCallback mCardsRetriever; + @Captor + private ArgumentCaptor mRequestCaptor; + + private QuickAccessWalletController mController; + private TestableLooper mTestableLooper; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mTestableLooper = TestableLooper.get(this); + when(mQuickAccessWalletClient.isWalletServiceAvailable()).thenReturn(true); + when(mQuickAccessWalletClient.isWalletFeatureAvailable()).thenReturn(true); + when(mQuickAccessWalletClient.isWalletFeatureAvailableWhenDeviceLocked()).thenReturn(true); + + mController = new QuickAccessWalletController( + mContext, + MoreExecutors.directExecutor(), + mSecureSettings, + mQuickAccessWalletClient); + } + + @Test + public void walletEnabled() { + mController.updateWalletPreference(); + + assertTrue(mController.isWalletEnabled()); + } + + @Test + public void walletServiceUnavailable_walletNotEnabled() { + when(mQuickAccessWalletClient.isWalletServiceAvailable()).thenReturn(false); + + mController.updateWalletPreference(); + + assertFalse(mController.isWalletEnabled()); + } + + @Test + public void walletFeatureUnavailable_walletNotEnabled() { + when(mQuickAccessWalletClient.isWalletFeatureAvailable()).thenReturn(false); + + mController.updateWalletPreference(); + + assertFalse(mController.isWalletEnabled()); + } + + @Test + public void walletFeatureWhenLockedUnavailable_walletNotEnabled() { + when(mQuickAccessWalletClient.isWalletFeatureAvailableWhenDeviceLocked()).thenReturn(false); + + mController.updateWalletPreference(); + + assertFalse(mController.isWalletEnabled()); + } + + @Test + public void getWalletClient_NoRecreation_sameClient() { + assertSame(mQuickAccessWalletClient, mController.getWalletClient()); + } + + @Test + public void getWalletClient_reCreateClient_notSameClient() { + mController.reCreateWalletClient(); + + assertNotSame(mQuickAccessWalletClient, mController.getWalletClient()); + } + + @Test + public void queryWalletCards_walletNotEnabled_notQuery() { + when(mQuickAccessWalletClient.isWalletServiceAvailable()).thenReturn(false); + + mController.queryWalletCards(mCardsRetriever); + + verify(mQuickAccessWalletClient, never()).getWalletCards(any(), any(), any()); + } + + @Test + public void queryWalletCards_walletEnabled_queryCards() { + mController.updateWalletPreference(); + mController.queryWalletCards(mCardsRetriever); + + verify(mQuickAccessWalletClient) + .getWalletCards( + eq(MoreExecutors.directExecutor()), + mRequestCaptor.capture(), + eq(mCardsRetriever)); + + GetWalletCardsRequest request = mRequestCaptor.getValue(); + assertEquals(1, mRequestCaptor.getValue().getMaxCards()); + assertEquals( + mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_width), + request.getCardWidthPx()); + assertEquals( + mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_height), + request.getCardHeightPx()); + } +} From f1285f7cbffc9570702868ef7ef52fa48e75fe68 Mon Sep 17 00:00:00 2001 From: Evan Laird Date: Wed, 26 May 2021 16:14:54 -0400 Subject: [PATCH 169/192] Copy configuration when getting resources for a rotation Avoids changing the orientation field on the current configuration. Fixes: 189338162 Test: manual; kill sysui in portrait mode and make sure the context returns `portrat` instead of `landscape` Change-Id: I971daa9d332fb399b7801805af467fbf775cdb55 (cherry picked from commit 8213c706b71f16442316a9a02375e66835af5e5f) --- .../src/com/android/systemui/util/leak/RotationUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/RotationUtils.java b/packages/SystemUI/src/com/android/systemui/util/leak/RotationUtils.java index b9b7730c67f3b..0b2f004537d69 100644 --- a/packages/SystemUI/src/com/android/systemui/util/leak/RotationUtils.java +++ b/packages/SystemUI/src/com/android/systemui/util/leak/RotationUtils.java @@ -116,7 +116,7 @@ public class RotationUtils { default: throw new IllegalArgumentException("Unknown rotation: " + rot); } - Configuration c = context.getResources().getConfiguration(); + Configuration c = new Configuration(context.getResources().getConfiguration()); c.orientation = orientation; Context rotated = context.createConfigurationContext(c); return rotated.getResources(); From a19a2ce911826aa4eacc0d0b61d1ab12f7152f39 Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Wed, 26 May 2021 14:21:44 -0400 Subject: [PATCH 170/192] Visual changes to tap-again toast. Smaller margins. New text and bg color. Update colors when switching to dark theme. Lower elevation. New text. Bug: 188895666 Test: manual Change-Id: I10fae63037994c3e6fcd91f989faee4828df55ed (cherry picked from commit 9c72d6ee0abfb3708cd540a39215eec11869dfd7) --- .../SystemUI/res/layout/status_bar_expanded.xml | 11 ++++++----- packages/SystemUI/res/values/strings.xml | 3 +++ .../systemui/statusbar/phone/TapAgainView.java | 17 ++++++++--------- .../statusbar/phone/TapAgainViewController.java | 6 +++--- 4 files changed, 20 insertions(+), 17 deletions(-) diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml index 09d46856dec80..fb39d3e4027d5 100644 --- a/packages/SystemUI/res/layout/status_bar_expanded.xml +++ b/packages/SystemUI/res/layout/status_bar_expanded.xml @@ -137,11 +137,12 @@ systemui:layout_constraintRight_toRightOf="parent" systemui:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="20dp" - android:paddingLeft="20dp" - android:paddingRight="20dp" - android:paddingTop="10dp" - android:paddingBottom="10dp" - android:elevation="10dp" + android:paddingHorizontal="16dp" + android:minHeight="44dp" + android:elevation="4dp" + android:background="@drawable/rounded_bg_full" + android:gravity="center" + android:text="@string/tap_again" android:visibility="gone" /> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 01d0dde6da5e3..db3fae6fa491c 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -1062,6 +1062,9 @@ Tap again to open + + Tap again + Swipe up to open diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainView.java index 9856795c89039..52e0e8a7a0cb6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainView.java @@ -23,7 +23,6 @@ import android.animation.ObjectAnimator; import android.content.Context; import android.util.AttributeSet; import android.view.View; -import android.widget.FrameLayout; import android.widget.TextView; import androidx.annotation.NonNull; @@ -35,24 +34,24 @@ import com.android.wm.shell.animation.Interpolators; /** * View to show a toast-like popup on the notification shade and quick settings. */ -public class TapAgainView extends FrameLayout { +public class TapAgainView extends TextView { + private TextView mTextView; + public TapAgainView( @NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); - updateBgColor(); } @Override protected void onFinishInflate() { super.onFinishInflate(); - - TextView text = new TextView(mContext); - text.setText(R.string.notification_tap_again); - addView(text); + updateColor(); } - void updateBgColor() { - setBackgroundResource(R.drawable.rounded_bg_full); + void updateColor() { + int textColor = getResources().getColor(R.color.notif_pill_text, mContext.getTheme()); + setTextColor(textColor); + setBackground(getResources().getDrawable(R.drawable.rounded_bg_full, mContext.getTheme())); } /** Make the view visible. */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainViewController.java index bb53bad7df70c..0c5502bac8fc0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/TapAgainViewController.java @@ -44,17 +44,17 @@ public class TapAgainViewController extends ViewController { final ConfigurationListener mConfigurationListener = new ConfigurationListener() { @Override public void onOverlayChanged() { - mView.updateBgColor(); + mView.updateColor(); } @Override public void onUiModeChanged() { - mView.updateBgColor(); + mView.updateColor(); } @Override public void onThemeChanged() { - mView.updateBgColor(); + mView.updateColor(); } }; From 6d49787fb510faa6ee2cf9a249e89f0f8edd6ac7 Mon Sep 17 00:00:00 2001 From: TYM Tsai Date: Sat, 22 May 2021 00:36:02 +0800 Subject: [PATCH 171/192] Force to notify ContentCapture event even view is not laid out Some recycled views cached its layout and a relayout is unnecessary. In this case, system still needs to notify content capture the view appeared. Bug: 177687849 Test: atest CtsContentCaptureServiceTestCases Test: atest ContentCapturePerfTests Change-Id: I480436c4fc3508b9eed485421a1cc778d55d5dde (cherry picked from commit 1d0ad768721b0005cbd5925cb4715e8f029f534c) --- core/java/android/view/View.java | 35 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 0acacb60da3fb..908d236c6c02e 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -9828,30 +9828,37 @@ public class View implements Drawable.Callback, KeyEvent.Callback, if (mContext.getContentCaptureOptions() == null) return; if (appeared) { - if (!isLaidOut() || getVisibility() != VISIBLE - || (mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) != 0) { + // The appeared event stops sending to AiAi. + // 1. The view is hidden. + // 2. The same event was sent. + // 3. The view is not laid out, and it will be laid out in the future. + // Some recycled views cached its layout and a relayout is unnecessary. In this case, + // system still needs to notify content capture the view appeared. When a view is + // recycled, it will set the flag PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED. + final boolean isRecycledWithoutRelayout = getNotifiedContentCaptureDisappeared() + && getVisibility() == VISIBLE + && !isLayoutRequested(); + if (getVisibility() != VISIBLE || getNotifiedContentCaptureAppeared() + || !(isLaidOut() || isRecycledWithoutRelayout)) { 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)); + + ": alreadyNotifiedAppeared=" + getNotifiedContentCaptureAppeared() + + ", alreadyNotifiedDisappeared=" + + getNotifiedContentCaptureDisappeared()); } return; } } else { - if ((mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) == 0 - || (mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED) != 0) { + if (!getNotifiedContentCaptureAppeared() || getNotifiedContentCaptureDisappeared()) { 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)); + + ": alreadyNotifiedAppeared=" + getNotifiedContentCaptureAppeared() + + ", alreadyNotifiedDisappeared=" + + getNotifiedContentCaptureDisappeared()); } return; } @@ -9899,6 +9906,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } + private boolean getNotifiedContentCaptureDisappeared() { + return (mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED) != 0; + } + /** * Sets the (optional) {@link ContentCaptureSession} associated with this view. * From f19d30a4f4dc63bec35fd27749a2b8cb27ac1d45 Mon Sep 17 00:00:00 2001 From: Li Li Date: Wed, 26 May 2021 21:11:44 -0700 Subject: [PATCH 172/192] Fix process group of webview zygote New processes forked from webview zygote should have their own process group. Otherwise, some operations applied to any children will wrongly impact all other children, like freezing or kill. Bug: 62435375 Bug: 168907513 Bug: 189211698 Test: Verified webview children have their own cgroupfs node. Also, freezing any children won't impact other children and webview zygote itself. Change-Id: I0606a8c8360fbb9e0851e2f799c6aaee521937ca (cherry picked from commit da9ad351295b69485663594fcd23faf74fc5c663) --- .../java/com/android/server/am/ProcessList.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index 457fe0f88aa7c..9098e68392fd3 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -2377,6 +2377,7 @@ public final class ProcessList { } final Process.ProcessStartResult startResult; + boolean regularZygote = false; if (hostingRecord.usesWebviewZygote()) { startResult = startWebView(entryPoint, app.processName, uid, uid, gids, runtimeFlags, mountExternal, @@ -2396,12 +2397,8 @@ public final class ProcessList { app.getDisabledCompatChanges(), pkgDataInfoMap, allowlistedAppDataInfoMap, false, false, new String[]{PROC_START_SEQ_IDENT + app.getStartSeq()}); - - if (Process.createProcessGroup(uid, startResult.pid) < 0) { - Slog.e(ActivityManagerService.TAG, "Unable to create process group for " - + app.processName + " (" + startResult.pid + ")"); - } } else { + regularZygote = true; startResult = Process.start(entryPoint, app.processName, uid, uid, gids, runtimeFlags, mountExternal, app.info.targetSdkVersion, seInfo, requiredAbi, instructionSet, @@ -2410,6 +2407,15 @@ public final class ProcessList { allowlistedAppDataInfoMap, bindMountAppsData, bindMountAppStorageDirs, new String[]{PROC_START_SEQ_IDENT + app.getStartSeq()}); } + + if (!regularZygote) { + // webview and app zygote don't have the permission to create the nodes + if (Process.createProcessGroup(uid, startResult.pid) < 0) { + Slog.e(ActivityManagerService.TAG, "Unable to create process group for " + + app.processName + " (" + startResult.pid + ")"); + } + } + // This runs after Process.start() as this method may block app process starting time // if dir is not cached. Running this method after Process.start() can make it // cache the dir asynchronously, so zygote can use it without waiting for it. From 77b6bb96656109097b10ecd685f730e14d5bf3de Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Tue, 1 Jun 2021 15:12:15 -0400 Subject: [PATCH 173/192] Don't destroy the FalsingManager in Wallet. When FalsingManager#cleanupInternal is called, it no longer produces valid results. With this change, we check that the FalsingManager is not used after being destroyed, and also avoid destroying it in WalletScreenController. Fixes: 188174214 Test: manual Change-Id: I0ce67de5a326b56dee11c1d63c1d592640c0713d (cherry picked from commit dbdeb8da5ab0dad02f25edfe313e59d506e718f3) --- .../systemui/plugins/FalsingManager.java | 11 ++++++-- .../classifier/BrightLineFalsingManager.java | 19 +++++++++++++- .../classifier/FalsingManagerProxy.java | 8 +++--- .../wallet/ui/WalletScreenController.java | 1 - .../classifier/BrightLineClassifierTest.java | 2 +- .../classifier/FalsingManagerFake.java | 25 ++++++++++++++----- 6 files changed, 51 insertions(+), 15 deletions(-) rename packages/SystemUI/{ => tests}/src/com/android/systemui/classifier/FalsingManagerFake.java (85%) diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java index 5ac8961aceebc..b4fac5cbb6ab4 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java @@ -114,7 +114,12 @@ public interface FalsingManager { /** From com.android.systemui.Dumpable. */ void dump(FileDescriptor fd, PrintWriter pw, String[] args); - void cleanup(); + /** + * Don't call this. It's meant for internal use to allow switching between implementations. + * + * Tests may also call it. + **/ + void cleanupInternal(); /** Call to report a ProximityEvent to the FalsingManager. */ void onProximityEvent(ProximityEvent proximityEvent); @@ -136,7 +141,9 @@ public interface FalsingManager { void onFalse(); } - /** Listener that is alerted when a double tap is required to confirm a single tap. */ + /** + * Listener that is alerted when a double tap is required to confirm a single tap. + **/ interface FalsingTapListener { void onDoubleTapRequired(); } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java index c821d100f5534..020401ecd2f82 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java @@ -82,6 +82,8 @@ public class BrightLineFalsingManager implements FalsingManager { private final List mFalsingBeliefListeners = new ArrayList<>(); private List mFalsingTapListeners = new ArrayList<>(); + private boolean mDestroyed; + private final SessionListener mSessionListener = new SessionListener() { @Override public void onSessionEnded() { @@ -196,6 +198,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseTouch(@Classifier.InteractionType int interactionType) { + checkDestroyed(); + mPriorInteractionType = interactionType; if (skipFalsing(interactionType)) { mPriorResults = getPassedResult(1); @@ -221,6 +225,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isSimpleTap() { + checkDestroyed(); + FalsingClassifier.Result result = mSingleTapClassifier.isTap( mDataProvider.getRecentMotionEvents(), 0); mPriorResults = Collections.singleton(result); @@ -228,8 +234,16 @@ public class BrightLineFalsingManager implements FalsingManager { return !result.isFalse(); } + private void checkDestroyed() { + if (mDestroyed) { + Log.wtf(TAG, "Tried to use FalsingManager after being destroyed!"); + } + } + @Override public boolean isFalseTap(@Penalty int penalty) { + checkDestroyed(); + if (skipFalsing(GENERIC)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); @@ -292,6 +306,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseDoubleTap() { + checkDestroyed(); + if (skipFalsing(GENERIC)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); @@ -406,7 +422,8 @@ public class BrightLineFalsingManager implements FalsingManager { } @Override - public void cleanup() { + public void cleanupInternal() { + mDestroyed = true; mDataProvider.removeSessionListener(mSessionListener); mDataProvider.removeGestureCompleteListener(mGestureFinalizedListener); mClassifiers.forEach(FalsingClassifier::cleanup); diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java index ee0dba0a50873..5a24f354eaf65 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java @@ -79,7 +79,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { public void onPluginConnected(FalsingPlugin plugin, Context context) { FalsingManager pluginFalsingManager = plugin.getFalsingManager(context); if (pluginFalsingManager != null) { - mInternalFalsingManager.cleanup(); + mInternalFalsingManager.cleanupInternal(); mInternalFalsingManager = pluginFalsingManager; } } @@ -109,7 +109,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { */ private void setupFalsingManager() { if (mInternalFalsingManager != null) { - mInternalFalsingManager.cleanup(); + mInternalFalsingManager.cleanupInternal(); } mInternalFalsingManager = mBrightLineFalsingManagerProvider.get(); } @@ -195,10 +195,10 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { } @Override - public void cleanup() { + public void cleanupInternal() { mDeviceConfig.removeOnPropertiesChangedListener(mDeviceConfigListener); mPluginManager.removePluginListener(mPluginListener); mDumpManager.unregisterDumpable(DUMPABLE_TAG); - mInternalFalsingManager.cleanup(); + mInternalFalsingManager.cleanupInternal(); } } diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java index d0662e7301d86..8da80caefdd37 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java @@ -260,7 +260,6 @@ public class WalletScreenController implements mIsDismissed = true; mSelectedCardId = null; mHandler.removeCallbacks(mSelectionRunnable); - mFalsingManager.cleanup(); mWalletClient.notifyWalletDismissed(); mWalletClient.removeWalletServiceEventListener(this); mWalletView.animateDismissal(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java index a7f9fe4e0a2c2..3eb1a9e624c8e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java @@ -118,7 +118,7 @@ public class BrightLineClassifierTest extends SysuiTestCase { verify(mFalsingDataProvider).addSessionListener( any(FalsingDataProvider.SessionListener.class)); - mBrightLineFalsingManager.cleanup(); + mBrightLineFalsingManager.cleanupInternal(); verify(mFalsingDataProvider).removeSessionListener( any(FalsingDataProvider.SessionListener.class)); } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java similarity index 85% rename from packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java rename to packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java index dba530edc27fc..87d1b6b8cb303 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2021 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. @@ -16,6 +16,8 @@ package com.android.systemui.classifier; +import static com.google.common.truth.Truth.assertWithMessage; + import android.net.Uri; import com.android.internal.annotations.VisibleForTesting; @@ -34,10 +36,11 @@ public class FalsingManagerFake implements FalsingManager { private boolean mIsSimpleTap; private boolean mIsFalseDoubleTap; private boolean mIsUnlockingDisabled; - private boolean mIsClassiferEnabled; + private boolean mIsClassifierEnabled; private boolean mShouldEnforceBouncer; private boolean mIsReportingEnabled; private boolean mIsFalseRobustTap; + private boolean mDestroyed; private final List mFalsingBeliefListeners = new ArrayList<>(); private final List mTapListeners = new ArrayList<>(); @@ -64,6 +67,7 @@ public class FalsingManagerFake implements FalsingManager { @Override public boolean isFalseTouch(@Classifier.InteractionType int interactionType) { + checkDestroyed(); return mIsFalseTouch; } @@ -81,27 +85,30 @@ public class FalsingManagerFake implements FalsingManager { @Override public boolean isSimpleTap() { + checkDestroyed(); return mIsSimpleTap; } @Override public boolean isFalseTap(@Penalty int penalty) { + checkDestroyed(); return mIsFalseRobustTap; } @Override public boolean isFalseDoubleTap() { + checkDestroyed(); return mIsFalseDoubleTap; } @VisibleForTesting - public void setIsClassiferEnabled(boolean isClassiferEnabled) { - mIsClassiferEnabled = isClassiferEnabled; + public void setIsClassifierEnabled(boolean isClassifierEnabled) { + mIsClassifierEnabled = isClassifierEnabled; } @Override public boolean isClassifierEnabled() { - return mIsClassiferEnabled; + return mIsClassifierEnabled; } @Override @@ -129,7 +136,13 @@ public class FalsingManagerFake implements FalsingManager { } @Override - public void cleanup() { + public void cleanupInternal() { + mDestroyed = true; + } + + private void checkDestroyed() { + assertWithMessage("FakeFasingManager has been destroyed") + .that(mDestroyed).isFalse(); } @Override From 293fd61abe9343566744d008f35d1a2388bf28da Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Tue, 1 Jun 2021 15:12:15 -0400 Subject: [PATCH 174/192] Don't destroy the FalsingManager in Wallet. When FalsingManager#cleanupInternal is called, it no longer produces valid results. With this change, we check that the FalsingManager is not used after being destroyed, and also avoid destroying it in WalletScreenController. Fixes: 188174214 Test: manual Change-Id: I0ce67de5a326b56dee11c1d63c1d592640c0713d (cherry picked from commit dbdeb8da5ab0dad02f25edfe313e59d506e718f3) --- .../systemui/plugins/FalsingManager.java | 11 ++++++-- .../classifier/BrightLineFalsingManager.java | 19 +++++++++++++- .../classifier/FalsingManagerProxy.java | 8 +++--- .../wallet/ui/WalletScreenController.java | 1 - .../classifier/BrightLineClassifierTest.java | 2 +- .../classifier/FalsingManagerFake.java | 25 ++++++++++++++----- 6 files changed, 51 insertions(+), 15 deletions(-) rename packages/SystemUI/{ => tests}/src/com/android/systemui/classifier/FalsingManagerFake.java (85%) diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java index 5ac8961aceebc..b4fac5cbb6ab4 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java @@ -114,7 +114,12 @@ public interface FalsingManager { /** From com.android.systemui.Dumpable. */ void dump(FileDescriptor fd, PrintWriter pw, String[] args); - void cleanup(); + /** + * Don't call this. It's meant for internal use to allow switching between implementations. + * + * Tests may also call it. + **/ + void cleanupInternal(); /** Call to report a ProximityEvent to the FalsingManager. */ void onProximityEvent(ProximityEvent proximityEvent); @@ -136,7 +141,9 @@ public interface FalsingManager { void onFalse(); } - /** Listener that is alerted when a double tap is required to confirm a single tap. */ + /** + * Listener that is alerted when a double tap is required to confirm a single tap. + **/ interface FalsingTapListener { void onDoubleTapRequired(); } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java index c821d100f5534..020401ecd2f82 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java @@ -82,6 +82,8 @@ public class BrightLineFalsingManager implements FalsingManager { private final List mFalsingBeliefListeners = new ArrayList<>(); private List mFalsingTapListeners = new ArrayList<>(); + private boolean mDestroyed; + private final SessionListener mSessionListener = new SessionListener() { @Override public void onSessionEnded() { @@ -196,6 +198,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseTouch(@Classifier.InteractionType int interactionType) { + checkDestroyed(); + mPriorInteractionType = interactionType; if (skipFalsing(interactionType)) { mPriorResults = getPassedResult(1); @@ -221,6 +225,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isSimpleTap() { + checkDestroyed(); + FalsingClassifier.Result result = mSingleTapClassifier.isTap( mDataProvider.getRecentMotionEvents(), 0); mPriorResults = Collections.singleton(result); @@ -228,8 +234,16 @@ public class BrightLineFalsingManager implements FalsingManager { return !result.isFalse(); } + private void checkDestroyed() { + if (mDestroyed) { + Log.wtf(TAG, "Tried to use FalsingManager after being destroyed!"); + } + } + @Override public boolean isFalseTap(@Penalty int penalty) { + checkDestroyed(); + if (skipFalsing(GENERIC)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); @@ -292,6 +306,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseDoubleTap() { + checkDestroyed(); + if (skipFalsing(GENERIC)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); @@ -406,7 +422,8 @@ public class BrightLineFalsingManager implements FalsingManager { } @Override - public void cleanup() { + public void cleanupInternal() { + mDestroyed = true; mDataProvider.removeSessionListener(mSessionListener); mDataProvider.removeGestureCompleteListener(mGestureFinalizedListener); mClassifiers.forEach(FalsingClassifier::cleanup); diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java index ee0dba0a50873..5a24f354eaf65 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java @@ -79,7 +79,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { public void onPluginConnected(FalsingPlugin plugin, Context context) { FalsingManager pluginFalsingManager = plugin.getFalsingManager(context); if (pluginFalsingManager != null) { - mInternalFalsingManager.cleanup(); + mInternalFalsingManager.cleanupInternal(); mInternalFalsingManager = pluginFalsingManager; } } @@ -109,7 +109,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { */ private void setupFalsingManager() { if (mInternalFalsingManager != null) { - mInternalFalsingManager.cleanup(); + mInternalFalsingManager.cleanupInternal(); } mInternalFalsingManager = mBrightLineFalsingManagerProvider.get(); } @@ -195,10 +195,10 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { } @Override - public void cleanup() { + public void cleanupInternal() { mDeviceConfig.removeOnPropertiesChangedListener(mDeviceConfigListener); mPluginManager.removePluginListener(mPluginListener); mDumpManager.unregisterDumpable(DUMPABLE_TAG); - mInternalFalsingManager.cleanup(); + mInternalFalsingManager.cleanupInternal(); } } diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java index d0662e7301d86..8da80caefdd37 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java @@ -260,7 +260,6 @@ public class WalletScreenController implements mIsDismissed = true; mSelectedCardId = null; mHandler.removeCallbacks(mSelectionRunnable); - mFalsingManager.cleanup(); mWalletClient.notifyWalletDismissed(); mWalletClient.removeWalletServiceEventListener(this); mWalletView.animateDismissal(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java index a7f9fe4e0a2c2..3eb1a9e624c8e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java @@ -118,7 +118,7 @@ public class BrightLineClassifierTest extends SysuiTestCase { verify(mFalsingDataProvider).addSessionListener( any(FalsingDataProvider.SessionListener.class)); - mBrightLineFalsingManager.cleanup(); + mBrightLineFalsingManager.cleanupInternal(); verify(mFalsingDataProvider).removeSessionListener( any(FalsingDataProvider.SessionListener.class)); } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java similarity index 85% rename from packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java rename to packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java index dba530edc27fc..87d1b6b8cb303 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2021 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. @@ -16,6 +16,8 @@ package com.android.systemui.classifier; +import static com.google.common.truth.Truth.assertWithMessage; + import android.net.Uri; import com.android.internal.annotations.VisibleForTesting; @@ -34,10 +36,11 @@ public class FalsingManagerFake implements FalsingManager { private boolean mIsSimpleTap; private boolean mIsFalseDoubleTap; private boolean mIsUnlockingDisabled; - private boolean mIsClassiferEnabled; + private boolean mIsClassifierEnabled; private boolean mShouldEnforceBouncer; private boolean mIsReportingEnabled; private boolean mIsFalseRobustTap; + private boolean mDestroyed; private final List mFalsingBeliefListeners = new ArrayList<>(); private final List mTapListeners = new ArrayList<>(); @@ -64,6 +67,7 @@ public class FalsingManagerFake implements FalsingManager { @Override public boolean isFalseTouch(@Classifier.InteractionType int interactionType) { + checkDestroyed(); return mIsFalseTouch; } @@ -81,27 +85,30 @@ public class FalsingManagerFake implements FalsingManager { @Override public boolean isSimpleTap() { + checkDestroyed(); return mIsSimpleTap; } @Override public boolean isFalseTap(@Penalty int penalty) { + checkDestroyed(); return mIsFalseRobustTap; } @Override public boolean isFalseDoubleTap() { + checkDestroyed(); return mIsFalseDoubleTap; } @VisibleForTesting - public void setIsClassiferEnabled(boolean isClassiferEnabled) { - mIsClassiferEnabled = isClassiferEnabled; + public void setIsClassifierEnabled(boolean isClassifierEnabled) { + mIsClassifierEnabled = isClassifierEnabled; } @Override public boolean isClassifierEnabled() { - return mIsClassiferEnabled; + return mIsClassifierEnabled; } @Override @@ -129,7 +136,13 @@ public class FalsingManagerFake implements FalsingManager { } @Override - public void cleanup() { + public void cleanupInternal() { + mDestroyed = true; + } + + private void checkDestroyed() { + assertWithMessage("FakeFasingManager has been destroyed") + .that(mDestroyed).isFalse(); } @Override From 35ad1127efed455b9594b27205e5ff5fba1ba38a Mon Sep 17 00:00:00 2001 From: Lyn Han Date: Tue, 1 Jun 2021 13:05:40 -0500 Subject: [PATCH 175/192] Fix disappearing notifications when closing fullscreen QS We might be setting alpha to 0 for wakeup-related events at that point. Let's not do that when shade is open. This change adds a keyguard check Bug: 189313235 Test: manual Change-Id: Ibc73f71d31f3b10714a9c7ce4bb9a121e497ed5b (cherry picked from commit cc8afa6b5020d0fe153baf2dd8656a87510f31f8) --- .../notification/stack/StackScrollAlgorithm.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) 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 86465b6f6b1ab..b60ef1d62ef55 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 @@ -382,13 +382,15 @@ public class StackScrollAlgorithm { final boolean isHunGoingToShade = ambientState.isShadeExpanded() && view == ambientState.getTrackedHeadsUpRow(); - if (!isHunGoingToShade) { - if (ambientState.isExpansionChanging() && !ambientState.isOnKeyguard()) { - viewState.alpha = Interpolators.getNotificationScrimAlpha( - ambientState.getExpansionFraction(), true /* notification */); - } else { - viewState.alpha = 1f - ambientState.getHideAmount(); - } + if (isHunGoingToShade) { + // Keep 100% opacity for heads up notification going to shade. + } else if (ambientState.isOnKeyguard()) { + // Adjust alpha for wakeup to lockscreen. + viewState.alpha = 1f - ambientState.getHideAmount(); + } else if (ambientState.isExpansionChanging()) { + // Adjust alpha for shade open & close. + viewState.alpha = Interpolators.getNotificationScrimAlpha( + ambientState.getExpansionFraction(), true /* notification */); } if (view.mustStayOnScreen() && viewState.yTranslation >= 0) { From acb13e1f769a9a2cabb1eac9fa8e3cee39d5aa8b Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Tue, 1 Jun 2021 15:12:15 -0400 Subject: [PATCH 176/192] Don't destroy the FalsingManager in Wallet. When FalsingManager#cleanupInternal is called, it no longer produces valid results. With this change, we check that the FalsingManager is not used after being destroyed, and also avoid destroying it in WalletScreenController. Fixes: 188174214 Test: manual Change-Id: I0ce67de5a326b56dee11c1d63c1d592640c0713d (cherry picked from commit b4935a25caccfb4021c8546209b5db7219747792) --- packages/SystemUI/Android.bp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index 4f587ebba89cd..b357a9478ab61 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -105,11 +105,21 @@ android_library { filegroup { name: "SystemUI-tests-utils", srcs: [ + "tests/src/com/android/systemui/SysuiTestCase.java", + "tests/src/com/android/systemui/TestableDependency.java", + "tests/src/com/android/systemui/classifier/FalsingManagerFake.java", "tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryBuilder.java", "tests/src/com/android/systemui/statusbar/RankingBuilder.java", "tests/src/com/android/systemui/statusbar/SbnBuilder.java", - "tests/src/com/android/systemui/util/concurrency/FakeExecutor.java", - "tests/src/com/android/systemui/util/time/FakeSystemClock.java", + "tests/src/com/android/systemui/SysuiTestableContext.java", + "tests/src/com/android/systemui/utils/leaks/BaseLeakChecker.java", + "tests/src/com/android/systemui/utils/leaks/LeakCheckedTest.java", + "tests/src/com/android/systemui/**/Fake*.java", + "tests/src/com/android/systemui/**/Fake*.kt", + ], + exclude_srcs: [ + "tests/src/com/android/systemui/**/*Test.java", + "tests/src/com/android/systemui/**/*Test.kt", ], path: "tests/src", } From 5653aff5760aff87ae4b6489ec5dc0a0dfa46002 Mon Sep 17 00:00:00 2001 From: Santiago Etchebehere Date: Wed, 2 Jun 2021 15:24:49 -0700 Subject: [PATCH 177/192] Remove color font and icons overlays These are not used anymore with the new theming Bug: 189919452 Test: manually built Change-Id: I06bfb81e9e66aa0906fab1aa5191ad8fd2ae9679 (cherry picked from commit 126b2450b89ff9d9e9feee17a63fd7f2b1416a25) --- .../AccentColorAmethystOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 26 -- .../res/values/colors_device_defaults.xml | 23 -- .../res/values/strings.xml | 24 -- .../AccentColorAquamarineOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 26 -- .../res/values/colors_device_defaults.xml | 23 -- .../res/values/strings.xml | 24 -- .../AccentColorBlackOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 25 -- .../res/values/colors_device_defaults.xml | 22 -- .../res/values/strings.xml | 23 -- .../AccentColorCarbonOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 23 -- .../res/values/colors_device_defaults.xml | 20 -- .../res/values/strings.xml | 21 -- .../AccentColorCinnamonOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 25 -- .../res/values/colors_device_defaults.xml | 22 -- .../res/values/strings.xml | 23 -- .../AccentColorGreenOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 25 -- .../res/values/colors_device_defaults.xml | 22 -- .../res/values/strings.xml | 23 -- .../AccentColorOceanOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 25 -- .../res/values/colors_device_defaults.xml | 22 -- .../res/values/strings.xml | 23 -- .../AccentColorOrchidOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 25 -- .../res/values/colors_device_defaults.xml | 22 -- .../res/values/strings.xml | 23 -- .../AccentColorPaletteOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 23 -- .../res/values/colors_device_defaults.xml | 20 -- .../res/values/strings.xml | 21 -- .../AccentColorPurpleOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 25 -- .../res/values/colors_device_defaults.xml | 22 -- .../res/values/strings.xml | 23 -- .../AccentColorSandOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 23 -- .../res/values/colors_device_defaults.xml | 20 -- .../res/values/strings.xml | 21 -- .../AccentColorSpaceOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 25 -- .../res/values/colors_device_defaults.xml | 22 -- .../res/values/strings.xml | 23 -- .../AccentColorTangerineOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 25 -- .../res/values/colors_device_defaults.xml | 23 -- .../res/values/strings.xml | 25 -- packages/overlays/Android.mk | 49 --- packages/overlays/CleanSpec.mk | 2 - .../IconPackCircularAndroidOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../ic_signal_wifi_transient_animation_0.xml | 34 -- .../ic_signal_wifi_transient_animation_1.xml | 34 -- .../ic_signal_wifi_transient_animation_2.xml | 34 -- .../ic_signal_wifi_transient_animation_3.xml | 34 -- .../ic_signal_wifi_transient_animation_4.xml | 21 -- .../res/drawable/ic_audio_alarm.xml | 35 -- .../res/drawable/ic_audio_alarm_mute.xml | 35 -- .../res/drawable/ic_battery_80_24dp.xml | 25 -- .../res/drawable/ic_bluetooth_share_icon.xml | 26 -- .../ic_bluetooth_transient_animation.xml | 28 -- ...bluetooth_transient_animation_drawable.xml | 58 ---- .../res/drawable/ic_bt_headphones_a2dp.xml | 26 -- .../res/drawable/ic_bt_headset_hfp.xml | 26 -- .../res/drawable/ic_bt_hearing_aid.xml | 25 -- .../res/drawable/ic_bt_laptop.xml | 26 -- .../res/drawable/ic_bt_misc_hid.xml | 26 -- .../res/drawable/ic_bt_network_pan.xml | 32 -- .../res/drawable/ic_bt_pointing_hid.xml | 26 -- .../res/drawable/ic_corp_badge.xml | 29 -- .../res/drawable/ic_expand_more.xml | 26 -- .../res/drawable/ic_faster_emergency.xml | 29 -- .../res/drawable/ic_file_copy.xml | 26 -- .../ic_hotspot_transient_animation.xml | 31 -- ...c_hotspot_transient_animation_drawable.xml | 48 --- .../res/drawable/ic_info_outline_24.xml | 31 -- .../res/drawable/ic_lock.xml | 28 -- .../res/drawable/ic_lock_bugreport.xml | 32 -- .../res/drawable/ic_lock_open.xml | 28 -- .../res/drawable/ic_lock_power_off.xml | 29 -- .../res/drawable/ic_lockscreen_ime.xml | 53 --- .../res/drawable/ic_mode_edit.xml | 29 -- .../res/drawable/ic_notifications_alerted.xml | 34 -- .../res/drawable/ic_phone.xml | 27 -- .../res/drawable/ic_qs_airplane.xml | 25 -- .../res/drawable/ic_qs_auto_rotate.xml | 28 -- .../res/drawable/ic_qs_battery_saver.xml | 30 -- .../res/drawable/ic_qs_bluetooth.xml | 26 -- .../res/drawable/ic_qs_dnd.xml | 28 -- .../res/drawable/ic_qs_flashlight.xml | 28 -- .../res/drawable/ic_qs_night_display_on.xml | 25 -- .../res/drawable/ic_qs_ui_mode_night.xml | 27 -- .../res/drawable/ic_restart.xml | 29 -- .../res/drawable/ic_screenshot.xml | 32 -- .../res/drawable/ic_settings_bluetooth.xml | 26 -- .../drawable/ic_signal_cellular_0_4_bar.xml | 50 --- .../drawable/ic_signal_cellular_0_5_bar.xml | 52 --- .../drawable/ic_signal_cellular_1_4_bar.xml | 48 --- .../drawable/ic_signal_cellular_1_5_bar.xml | 49 --- .../drawable/ic_signal_cellular_2_4_bar.xml | 46 --- .../drawable/ic_signal_cellular_2_5_bar.xml | 46 --- .../drawable/ic_signal_cellular_3_4_bar.xml | 44 --- .../drawable/ic_signal_cellular_3_5_bar.xml | 43 --- .../drawable/ic_signal_cellular_4_4_bar.xml | 42 --- .../drawable/ic_signal_cellular_4_5_bar.xml | 40 --- .../drawable/ic_signal_cellular_5_5_bar.xml | 37 -- .../res/drawable/ic_signal_location.xml | 28 -- .../ic_signal_wifi_transient_animation.xml | 34 -- ...gnal_wifi_transient_animation_drawable.xml | 54 --- .../res/drawable/ic_wifi_signal_0.xml | 46 --- .../res/drawable/ic_wifi_signal_1.xml | 43 --- .../res/drawable/ic_wifi_signal_2.xml | 40 --- .../res/drawable/ic_wifi_signal_3.xml | 37 -- .../res/drawable/ic_wifi_signal_4.xml | 34 -- .../perm_group_activity_recognition.xml | 29 -- .../res/drawable/perm_group_aural.xml | 40 --- .../res/drawable/perm_group_calendar.xml | 29 -- .../res/drawable/perm_group_call_log.xml | 35 -- .../res/drawable/perm_group_camera.xml | 29 -- .../res/drawable/perm_group_contacts.xml | 37 -- .../res/drawable/perm_group_location.xml | 29 -- .../res/drawable/perm_group_microphone.xml | 29 -- .../res/drawable/perm_group_phone_calls.xml | 26 -- .../res/drawable/perm_group_sensors.xml | 26 -- .../res/drawable/perm_group_sms.xml | 35 -- .../res/drawable/perm_group_storage.xml | 26 -- .../res/drawable/perm_group_visual.xml | 32 -- .../res/values/config.xml | 41 --- .../Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_corp.xml | 26 -- .../res/drawable/ic_corp_off.xml | 26 -- .../res/drawable/ic_drag_handle.xml | 29 -- .../res/drawable/ic_hourglass_top.xml | 26 -- .../res/drawable/ic_info_no_shadow.xml | 32 -- .../res/drawable/ic_install_no_shadow.xml | 29 -- .../res/drawable/ic_palette.xml | 46 --- .../res/drawable/ic_pin.xml | 26 -- .../res/drawable/ic_remove_no_shadow.xml | 26 -- .../res/drawable/ic_screenshot.xml | 29 -- .../res/drawable/ic_select.xml | 23 -- .../res/drawable/ic_setting.xml | 26 -- .../res/drawable/ic_share.xml | 39 --- .../drawable/ic_smartspace_preferences.xml | 26 -- .../res/drawable/ic_split_screen.xml | 29 -- .../res/drawable/ic_uninstall_no_shadow.xml | 32 -- .../res/drawable/ic_warning.xml | 32 -- .../res/drawable/ic_widget.xml | 35 -- .../Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/drag_handle.xml | 29 -- .../res/drawable/ic_add_24dp.xml | 26 -- .../res/drawable/ic_airplanemode_active.xml | 26 -- .../res/drawable/ic_android.xml | 35 -- .../res/drawable/ic_apps.xml | 49 --- .../res/drawable/ic_arrow_back.xml | 27 -- .../res/drawable/ic_arrow_down_24dp.xml | 26 -- .../res/drawable/ic_battery_charging_full.xml | 28 -- .../drawable/ic_battery_status_good_24dp.xml | 28 -- .../drawable/ic_battery_status_maybe_24dp.xml | 31 -- .../res/drawable/ic_call_24dp.xml | 26 -- .../res/drawable/ic_cancel.xml | 28 -- .../res/drawable/ic_cast_24dp.xml | 35 -- .../res/drawable/ic_cellular_off.xml | 33 -- .../res/drawable/ic_chevron_right_24dp.xml | 27 -- .../drawable/ic_content_copy_grey600_24dp.xml | 26 -- .../res/drawable/ic_data_saver.xml | 33 -- .../res/drawable/ic_delete.xml | 32 -- .../res/drawable/ic_devices_other.xml | 32 -- .../res/drawable/ic_devices_other_32dp.xml | 32 -- .../drawable/ic_do_not_disturb_on_24dp.xml | 29 -- .../res/drawable/ic_eject_24dp.xml | 29 -- .../res/drawable/ic_expand_less.xml | 26 -- .../res/drawable/ic_expand_more_inverse.xml | 26 -- .../res/drawable/ic_find_in_page_24px.xml | 32 -- .../res/drawable/ic_folder_vd_theme_24.xml | 26 -- .../res/drawable/ic_friction_lock_closed.xml | 29 -- .../res/drawable/ic_gray_scale_24dp.xml | 25 -- .../res/drawable/ic_headset_24dp.xml | 26 -- .../res/drawable/ic_help.xml | 31 -- .../res/drawable/ic_help_actionbar.xml | 33 -- .../res/drawable/ic_homepage_search.xml | 26 -- .../res/drawable/ic_info_outline_24.xml | 32 -- .../res/drawable/ic_local_movies.xml | 26 -- .../res/drawable/ic_local_phone_24_lib.xml | 26 -- .../res/drawable/ic_lock.xml | 29 -- .../res/drawable/ic_media_stream.xml | 26 -- .../res/drawable/ic_media_stream_off.xml | 29 -- .../res/drawable/ic_network_cell.xml | 44 --- .../res/drawable/ic_notifications.xml | 29 -- .../res/drawable/ic_notifications_alert.xml | 34 -- .../drawable/ic_notifications_off_24dp.xml | 33 -- .../res/drawable/ic_phone_info.xml | 31 -- .../res/drawable/ic_photo_library.xml | 32 -- .../res/drawable/ic_scan_24dp.xml | 55 --- .../res/drawable/ic_search_24dp.xml | 26 -- .../res/drawable/ic_settings_accent.xml | 26 -- .../drawable/ic_settings_accessibility.xml | 37 -- .../res/drawable/ic_settings_accounts.xml | 28 -- .../res/drawable/ic_settings_backup.xml | 29 -- .../drawable/ic_settings_battery_white.xml | 25 -- .../res/drawable/ic_settings_data_usage.xml | 28 -- .../res/drawable/ic_settings_date_time.xml | 29 -- .../res/drawable/ic_settings_delete.xml | 31 -- .../res/drawable/ic_settings_disable.xml | 37 -- .../drawable/ic_settings_display_white.xml | 28 -- .../res/drawable/ic_settings_enable.xml | 37 -- .../res/drawable/ic_settings_home.xml | 29 -- .../res/drawable/ic_settings_language.xml | 26 -- .../res/drawable/ic_settings_location.xml | 28 -- .../res/drawable/ic_settings_multiuser.xml | 29 -- .../drawable/ic_settings_night_display.xml | 26 -- .../res/drawable/ic_settings_open.xml | 28 -- .../res/drawable/ic_settings_print.xml | 29 -- .../res/drawable/ic_settings_privacy.xml | 31 -- .../drawable/ic_settings_security_white.xml | 28 -- .../res/drawable/ic_settings_sim.xml | 44 --- .../ic_settings_system_dashboard_white.xml | 31 -- .../res/drawable/ic_settings_wireless.xml | 35 -- .../res/drawable/ic_storage.xml | 41 --- .../res/drawable/ic_storage_white.xml | 40 --- .../drawable/ic_suggestion_night_display.xml | 26 -- .../res/drawable/ic_sync.xml | 29 -- .../res/drawable/ic_sync_problem_24dp.xml | 37 -- .../res/drawable/ic_system_update.xml | 29 -- .../res/drawable/ic_videogame_vd_theme_24.xml | 35 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 38 --- .../res/drawable/ic_volume_up_24dp.xml | 31 -- .../res/drawable/ic_vpn_key.xml | 29 -- .../res/drawable/ic_wifi_tethering.xml | 32 -- .../Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_alarm.xml | 34 -- .../res/drawable/ic_alarm_dim.xml | 34 -- .../res/drawable/ic_arrow_back.xml | 27 -- .../res/drawable/ic_bluetooth_connected.xml | 31 -- .../res/drawable/ic_brightness_thumb.xml | 31 -- .../res/drawable/ic_camera.xml | 28 -- .../res/drawable/ic_cast.xml | 34 -- .../res/drawable/ic_cast_connected.xml | 37 -- .../res/drawable/ic_cast_connected_fill.xml | 26 -- .../res/drawable/ic_close_white.xml | 25 -- .../res/drawable/ic_data_saver.xml | 31 -- .../res/drawable/ic_data_saver_off.xml | 27 -- .../res/drawable/ic_drag_handle.xml | 28 -- .../res/drawable/ic_headset.xml | 25 -- .../res/drawable/ic_headset_mic.xml | 25 -- .../res/drawable/ic_hotspot.xml | 31 -- .../res/drawable/ic_info.xml | 31 -- .../res/drawable/ic_info_outline.xml | 31 -- .../res/drawable/ic_invert_colors.xml | 25 -- .../res/drawable/ic_location.xml | 28 -- .../res/drawable/ic_lockscreen_ime.xml | 52 --- .../res/drawable/ic_notifications_alert.xml | 34 -- .../res/drawable/ic_notifications_silence.xml | 31 -- .../res/drawable/ic_power_low.xml | 31 -- .../res/drawable/ic_power_saver.xml | 28 -- .../drawable/ic_qs_bluetooth_connecting.xml | 32 -- .../res/drawable/ic_qs_bluetooth_on.xml | 26 -- .../res/drawable/ic_qs_cancel.xml | 28 -- .../res/drawable/ic_qs_no_sim.xml | 28 -- .../res/drawable/ic_qs_wifi_0.xml | 49 --- .../res/drawable/ic_qs_wifi_1.xml | 46 --- .../res/drawable/ic_qs_wifi_2.xml | 43 --- .../res/drawable/ic_qs_wifi_3.xml | 40 --- .../res/drawable/ic_qs_wifi_4.xml | 37 -- .../res/drawable/ic_qs_wifi_disconnected.xml | 52 --- .../res/drawable/ic_screenrecord.xml | 18 - .../res/drawable/ic_screenshot_delete.xml | 31 -- .../res/drawable/ic_settings.xml | 25 -- .../res/drawable/ic_settings_16dp.xml | 29 -- .../res/drawable/ic_swap_vert.xml | 28 -- .../res/drawable/ic_tune_black_16dp.xml | 40 --- .../res/drawable/ic_volume_alarm.xml | 35 -- .../res/drawable/ic_volume_alarm_mute.xml | 35 -- .../res/drawable/ic_volume_bt_sco.xml | 29 -- .../res/drawable/ic_volume_media.xml | 26 -- .../res/drawable/ic_volume_media_mute.xml | 29 -- .../res/drawable/ic_volume_odi_captions.xml | 51 --- .../ic_volume_odi_captions_disabled.xml | 56 --- .../res/drawable/ic_volume_ringer.xml | 29 -- .../res/drawable/ic_volume_ringer_mute.xml | 32 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 37 -- .../res/drawable/ic_volume_voice.xml | 26 -- .../res/drawable/stat_sys_camera.xml | 28 -- .../stat_sys_managed_profile_status.xml | 28 -- .../res/drawable/stat_sys_mic_none.xml | 28 -- .../res/drawable/stat_sys_vpn_ic.xml | 28 -- .../Android.bp | 31 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_add_24px.xml | 25 -- .../res/drawable/ic_close_24px.xml | 25 -- .../res/drawable/ic_colorize_24px.xml | 25 -- .../res/drawable/ic_delete_24px.xml | 31 -- .../res/drawable/ic_font.xml | 28 -- .../res/drawable/ic_nav_clock.xml | 28 -- .../res/drawable/ic_nav_grid.xml | 25 -- .../res/drawable/ic_nav_theme.xml | 25 -- .../res/drawable/ic_nav_wallpaper.xml | 40 --- .../res/drawable/ic_shapes_24px.xml | 28 -- .../res/drawable/ic_tune.xml | 40 --- .../res/drawable/ic_wifi_24px.xml | 34 -- .../IconPackFilledAndroidOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_audio_alarm.xml | 32 -- .../res/drawable/ic_audio_alarm_mute.xml | 35 -- .../res/drawable/ic_battery_80_24dp.xml | 31 -- .../res/drawable/ic_bluetooth_share_icon.xml | 26 -- .../ic_bluetooth_transient_animation.xml | 28 -- ...bluetooth_transient_animation_drawable.xml | 58 ---- .../res/drawable/ic_bt_headphones_a2dp.xml | 26 -- .../res/drawable/ic_bt_headset_hfp.xml | 26 -- .../res/drawable/ic_bt_hearing_aid.xml | 25 -- .../res/drawable/ic_bt_laptop.xml | 26 -- .../res/drawable/ic_bt_misc_hid.xml | 26 -- .../res/drawable/ic_bt_network_pan.xml | 32 -- .../res/drawable/ic_bt_pointing_hid.xml | 26 -- .../res/drawable/ic_corp_badge.xml | 27 -- .../res/drawable/ic_expand_more.xml | 26 -- .../res/drawable/ic_faster_emergency.xml | 27 -- .../res/drawable/ic_file_copy.xml | 27 -- .../ic_hotspot_transient_animation.xml | 31 -- ...c_hotspot_transient_animation_drawable.xml | 48 --- .../res/drawable/ic_info_outline_24.xml | 25 -- .../res/drawable/ic_lock.xml | 25 -- .../res/drawable/ic_lock_bugreport.xml | 26 -- .../res/drawable/ic_lock_open.xml | 25 -- .../res/drawable/ic_lock_power_off.xml | 29 -- .../res/drawable/ic_lockscreen_ime.xml | 53 --- .../res/drawable/ic_mode_edit.xml | 29 -- .../res/drawable/ic_notifications_alerted.xml | 34 -- .../res/drawable/ic_phone.xml | 27 -- .../res/drawable/ic_qs_airplane.xml | 25 -- .../res/drawable/ic_qs_auto_rotate.xml | 28 -- .../res/drawable/ic_qs_battery_saver.xml | 27 -- .../res/drawable/ic_qs_bluetooth.xml | 26 -- .../res/drawable/ic_qs_dnd.xml | 25 -- .../res/drawable/ic_qs_flashlight.xml | 28 -- .../res/drawable/ic_qs_night_display_on.xml | 25 -- .../res/drawable/ic_qs_ui_mode_night.xml | 25 -- .../res/drawable/ic_restart.xml | 29 -- .../res/drawable/ic_screenshot.xml | 32 -- .../res/drawable/ic_settings_bluetooth.xml | 26 -- .../drawable/ic_signal_cellular_0_4_bar.xml | 28 -- .../drawable/ic_signal_cellular_0_5_bar.xml | 28 -- .../drawable/ic_signal_cellular_1_4_bar.xml | 31 -- .../drawable/ic_signal_cellular_1_5_bar.xml | 29 -- .../drawable/ic_signal_cellular_2_4_bar.xml | 31 -- .../drawable/ic_signal_cellular_2_5_bar.xml | 29 -- .../drawable/ic_signal_cellular_3_4_bar.xml | 31 -- .../drawable/ic_signal_cellular_3_5_bar.xml | 29 -- .../drawable/ic_signal_cellular_4_4_bar.xml | 25 -- .../drawable/ic_signal_cellular_4_5_bar.xml | 29 -- .../drawable/ic_signal_cellular_5_5_bar.xml | 25 -- .../res/drawable/ic_signal_location.xml | 25 -- .../ic_signal_wifi_transient_animation.xml | 64 ---- ...gnal_wifi_transient_animation_drawable.xml | 113 ------- .../res/drawable/ic_wifi_signal_0.xml | 28 -- .../res/drawable/ic_wifi_signal_1.xml | 31 -- .../res/drawable/ic_wifi_signal_2.xml | 31 -- .../res/drawable/ic_wifi_signal_3.xml | 31 -- .../res/drawable/ic_wifi_signal_4.xml | 25 -- .../perm_group_activity_recognition.xml | 27 -- .../res/drawable/perm_group_aural.xml | 27 -- .../res/drawable/perm_group_calendar.xml | 26 -- .../res/drawable/perm_group_call_log.xml | 35 -- .../res/drawable/perm_group_camera.xml | 29 -- .../res/drawable/perm_group_contacts.xml | 27 -- .../res/drawable/perm_group_location.xml | 26 -- .../res/drawable/perm_group_microphone.xml | 29 -- .../res/drawable/perm_group_phone_calls.xml | 26 -- .../res/drawable/perm_group_sensors.xml | 26 -- .../res/drawable/perm_group_sms.xml | 27 -- .../res/drawable/perm_group_storage.xml | 26 -- .../res/drawable/perm_group_visual.xml | 29 -- .../res/values/config.xml | 44 --- .../IconPackFilledLauncherOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_corp.xml | 23 -- .../res/drawable/ic_corp_off.xml | 26 -- .../res/drawable/ic_drag_handle.xml | 29 -- .../res/drawable/ic_hourglass_top.xml | 26 -- .../res/drawable/ic_info_no_shadow.xml | 26 -- .../res/drawable/ic_install_no_shadow.xml | 29 -- .../res/drawable/ic_palette.xml | 26 -- .../res/drawable/ic_pin.xml | 26 -- .../res/drawable/ic_remove_no_shadow.xml | 26 -- .../res/drawable/ic_screenshot.xml | 29 -- .../res/drawable/ic_select.xml | 23 -- .../res/drawable/ic_setting.xml | 26 -- .../res/drawable/ic_share.xml | 39 --- .../drawable/ic_smartspace_preferences.xml | 32 -- .../res/drawable/ic_split_screen.xml | 29 -- .../res/drawable/ic_uninstall_no_shadow.xml | 29 -- .../res/drawable/ic_warning.xml | 26 -- .../res/drawable/ic_widget.xml | 35 -- .../IconPackFilledSettingsOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/drag_handle.xml | 29 -- .../res/drawable/ic_add_24dp.xml | 26 -- .../res/drawable/ic_airplanemode_active.xml | 26 -- .../res/drawable/ic_android.xml | 35 -- .../res/drawable/ic_apps.xml | 49 --- .../res/drawable/ic_arrow_back.xml | 27 -- .../res/drawable/ic_arrow_down_24dp.xml | 26 -- .../res/drawable/ic_battery_charging_full.xml | 25 -- .../drawable/ic_battery_status_good_24dp.xml | 25 -- .../drawable/ic_battery_status_maybe_24dp.xml | 25 -- .../res/drawable/ic_call_24dp.xml | 26 -- .../res/drawable/ic_cancel.xml | 25 -- .../res/drawable/ic_cast_24dp.xml | 35 -- .../res/drawable/ic_cellular_off.xml | 33 -- .../res/drawable/ic_chevron_right_24dp.xml | 27 -- .../drawable/ic_content_copy_grey600_24dp.xml | 27 -- .../res/drawable/ic_data_saver.xml | 33 -- .../res/drawable/ic_delete.xml | 29 -- .../res/drawable/ic_devices_other.xml | 32 -- .../res/drawable/ic_devices_other_32dp.xml | 32 -- .../drawable/ic_do_not_disturb_on_24dp.xml | 26 -- .../res/drawable/ic_eject_24dp.xml | 29 -- .../res/drawable/ic_expand_less.xml | 26 -- .../res/drawable/ic_expand_more_inverse.xml | 26 -- .../res/drawable/ic_find_in_page_24px.xml | 27 -- .../res/drawable/ic_folder_vd_theme_24.xml | 26 -- .../res/drawable/ic_friction_lock_closed.xml | 26 -- .../res/drawable/ic_gray_scale_24dp.xml | 25 -- .../res/drawable/ic_headset_24dp.xml | 26 -- .../res/drawable/ic_help.xml | 25 -- .../res/drawable/ic_help_actionbar.xml | 27 -- .../res/drawable/ic_homepage_search.xml | 27 -- .../res/drawable/ic_info_outline_24.xml | 26 -- .../res/drawable/ic_local_movies.xml | 26 -- .../res/drawable/ic_local_phone_24_lib.xml | 26 -- .../res/drawable/ic_lock.xml | 26 -- .../res/drawable/ic_media_stream.xml | 26 -- .../res/drawable/ic_media_stream_off.xml | 29 -- .../res/drawable/ic_network_cell.xml | 27 -- .../res/drawable/ic_notifications.xml | 29 -- .../res/drawable/ic_notifications_alert.xml | 34 -- .../drawable/ic_notifications_off_24dp.xml | 33 -- .../res/drawable/ic_phone_info.xml | 31 -- .../res/drawable/ic_photo_library.xml | 29 -- .../res/drawable/ic_scan_24dp.xml | 27 -- .../res/drawable/ic_search_24dp.xml | 27 -- .../res/drawable/ic_settings_accent.xml | 26 -- .../drawable/ic_settings_accessibility.xml | 37 -- .../res/drawable/ic_settings_accounts.xml | 25 -- .../res/drawable/ic_settings_backup.xml | 26 -- .../drawable/ic_settings_battery_white.xml | 25 -- .../res/drawable/ic_settings_data_usage.xml | 29 -- .../res/drawable/ic_settings_date_time.xml | 26 -- .../res/drawable/ic_settings_delete.xml | 28 -- .../res/drawable/ic_settings_disable.xml | 36 -- .../drawable/ic_settings_display_white.xml | 25 -- .../res/drawable/ic_settings_enable.xml | 36 -- .../res/drawable/ic_settings_home.xml | 26 -- .../res/drawable/ic_settings_language.xml | 26 -- .../res/drawable/ic_settings_location.xml | 25 -- .../res/drawable/ic_settings_multiuser.xml | 29 -- .../drawable/ic_settings_night_display.xml | 26 -- .../res/drawable/ic_settings_open.xml | 29 -- .../res/drawable/ic_settings_print.xml | 29 -- .../res/drawable/ic_settings_privacy.xml | 31 -- .../drawable/ic_settings_security_white.xml | 25 -- .../res/drawable/ic_settings_sim.xml | 26 -- .../ic_settings_system_dashboard_white.xml | 25 -- .../res/drawable/ic_settings_wireless.xml | 32 -- .../res/drawable/ic_storage.xml | 32 -- .../res/drawable/ic_storage_white.xml | 31 -- .../drawable/ic_suggestion_night_display.xml | 26 -- .../res/drawable/ic_sync.xml | 29 -- .../res/drawable/ic_sync_problem_24dp.xml | 27 -- .../res/drawable/ic_system_update.xml | 29 -- .../res/drawable/ic_videogame_vd_theme_24.xml | 26 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 38 --- .../res/drawable/ic_volume_up_24dp.xml | 31 -- .../res/drawable/ic_vpn_key.xml | 26 -- .../res/drawable/ic_wifi_tethering.xml | 32 -- .../IconPackFilledSystemUIOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_alarm.xml | 31 -- .../res/drawable/ic_alarm_dim.xml | 31 -- .../res/drawable/ic_arrow_back.xml | 27 -- .../res/drawable/ic_bluetooth_connected.xml | 31 -- .../res/drawable/ic_brightness_thumb.xml | 28 -- .../res/drawable/ic_camera.xml | 28 -- .../res/drawable/ic_cast.xml | 34 -- .../res/drawable/ic_cast_connected.xml | 37 -- .../res/drawable/ic_cast_connected_fill.xml | 26 -- .../res/drawable/ic_close_white.xml | 25 -- .../res/drawable/ic_data_saver.xml | 31 -- .../res/drawable/ic_data_saver_off.xml | 28 -- .../res/drawable/ic_drag_handle.xml | 28 -- .../res/drawable/ic_headset.xml | 25 -- .../res/drawable/ic_headset_mic.xml | 25 -- .../res/drawable/ic_hotspot.xml | 31 -- .../res/drawable/ic_info.xml | 25 -- .../res/drawable/ic_info_outline.xml | 25 -- .../res/drawable/ic_invert_colors.xml | 25 -- .../res/drawable/ic_location.xml | 25 -- .../res/drawable/ic_lockscreen_ime.xml | 52 --- .../res/drawable/ic_notifications_alert.xml | 34 -- .../res/drawable/ic_notifications_silence.xml | 31 -- .../res/drawable/ic_power_low.xml | 25 -- .../res/drawable/ic_power_saver.xml | 25 -- .../drawable/ic_qs_bluetooth_connecting.xml | 32 -- .../res/drawable/ic_qs_bluetooth_on.xml | 26 -- .../res/drawable/ic_qs_cancel.xml | 25 -- .../res/drawable/ic_qs_no_sim.xml | 28 -- .../res/drawable/ic_qs_wifi_0.xml | 28 -- .../res/drawable/ic_qs_wifi_1.xml | 31 -- .../res/drawable/ic_qs_wifi_2.xml | 31 -- .../res/drawable/ic_qs_wifi_3.xml | 31 -- .../res/drawable/ic_qs_wifi_4.xml | 31 -- .../res/drawable/ic_qs_wifi_disconnected.xml | 31 -- .../res/drawable/ic_screenrecord.xml | 18 - .../res/drawable/ic_screenshot_delete.xml | 28 -- .../res/drawable/ic_settings.xml | 25 -- .../res/drawable/ic_settings_16dp.xml | 26 -- .../res/drawable/ic_swap_vert.xml | 28 -- .../res/drawable/ic_tune_black_16dp.xml | 40 --- .../res/drawable/ic_volume_alarm.xml | 32 -- .../res/drawable/ic_volume_alarm_mute.xml | 35 -- .../res/drawable/ic_volume_bt_sco.xml | 29 -- .../res/drawable/ic_volume_media.xml | 26 -- .../res/drawable/ic_volume_media_mute.xml | 29 -- .../res/drawable/ic_volume_odi_captions.xml | 31 -- .../ic_volume_odi_captions_disabled.xml | 29 -- .../res/drawable/ic_volume_ringer.xml | 29 -- .../res/drawable/ic_volume_ringer_mute.xml | 32 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 37 -- .../res/drawable/ic_volume_voice.xml | 26 -- .../res/drawable/stat_sys_camera.xml | 28 -- .../stat_sys_managed_profile_status.xml | 26 -- .../res/drawable/stat_sys_mic_none.xml | 28 -- .../res/drawable/stat_sys_vpn_ic.xml | 25 -- .../Android.bp | 31 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_add_24px.xml | 25 -- .../res/drawable/ic_close_24px.xml | 25 -- .../res/drawable/ic_colorize_24px.xml | 25 -- .../res/drawable/ic_delete_24px.xml | 28 -- .../res/drawable/ic_font.xml | 28 -- .../res/drawable/ic_nav_clock.xml | 25 -- .../res/drawable/ic_nav_grid.xml | 25 -- .../res/drawable/ic_nav_theme.xml | 25 -- .../res/drawable/ic_nav_wallpaper.xml | 40 --- .../res/drawable/ic_shapes_24px.xml | 28 -- .../res/drawable/ic_tune.xml | 40 --- .../res/drawable/ic_wifi_24px.xml | 31 -- .../IconPackKaiAndroidOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/ic_audio_alarm.xml | 34 -- .../res/drawable/ic_audio_alarm_mute.xml | 21 -- .../res/drawable/ic_battery_80_24dp.xml | 18 - .../res/drawable/ic_bluetooth_share_icon.xml | 18 - .../ic_bluetooth_transient_animation.xml | 225 ------------- .../res/drawable/ic_bt_headphones_a2dp.xml | 18 - .../res/drawable/ic_bt_headset_hfp.xml | 18 - .../res/drawable/ic_bt_hearing_aid.xml | 20 -- .../res/drawable/ic_bt_laptop.xml | 19 -- .../res/drawable/ic_bt_misc_hid.xml | 21 -- .../res/drawable/ic_bt_network_pan.xml | 20 -- .../res/drawable/ic_bt_pointing_hid.xml | 18 - .../res/drawable/ic_corp_badge.xml | 19 -- .../res/drawable/ic_expand_more.xml | 18 - .../res/drawable/ic_faster_emergency.xml | 19 -- .../res/drawable/ic_file_copy.xml | 19 -- .../ic_hotspot_transient_animation.xml | 203 ----------- .../res/drawable/ic_lock.xml | 19 -- .../res/drawable/ic_lock_bugreport.xml | 20 -- .../res/drawable/ic_lock_open.xml | 19 -- .../res/drawable/ic_lock_power_off.xml | 19 -- .../res/drawable/ic_lockscreen_ime.xml | 27 -- .../res/drawable/ic_mode_edit.xml | 18 - .../res/drawable/ic_notifications_alerted.xml | 21 -- .../res/drawable/ic_phone.xml | 18 - .../res/drawable/ic_qs_airplane.xml | 18 - .../res/drawable/ic_qs_auto_rotate.xml | 19 -- .../res/drawable/ic_qs_battery_saver.xml | 19 -- .../res/drawable/ic_qs_bluetooth.xml | 18 - .../res/drawable/ic_qs_dnd.xml | 19 -- .../res/drawable/ic_qs_flashlight.xml | 19 -- .../res/drawable/ic_qs_night_display_on.xml | 18 - .../res/drawable/ic_qs_ui_mode_night.xml | 18 - .../res/drawable/ic_restart.xml | 19 -- .../res/drawable/ic_rules.xml | 15 - .../res/drawable/ic_screenshot.xml | 30 -- .../res/drawable/ic_settings_bluetooth.xml | 18 - .../drawable/ic_signal_cellular_0_4_bar.xml | 22 -- .../drawable/ic_signal_cellular_1_4_bar.xml | 22 -- .../drawable/ic_signal_cellular_2_4_bar.xml | 22 -- .../drawable/ic_signal_cellular_3_4_bar.xml | 22 -- .../drawable/ic_signal_cellular_4_4_bar.xml | 22 -- .../res/drawable/ic_signal_location.xml | 19 -- .../ic_signal_wifi_transient_animation.xml | 182 ---------- .../res/drawable/ic_wifi_signal_0.xml | 21 -- .../res/drawable/ic_wifi_signal_1.xml | 21 -- .../res/drawable/ic_wifi_signal_2.xml | 21 -- .../res/drawable/ic_wifi_signal_3.xml | 21 -- .../res/drawable/ic_wifi_signal_4.xml | 21 -- .../res/drawable/ic_work_apps_off.xml | 19 -- .../perm_group_activity_recognition.xml | 19 -- .../res/drawable/perm_group_aural.xml | 20 -- .../res/drawable/perm_group_calendar.xml | 19 -- .../res/drawable/perm_group_call_log.xml | 21 -- .../res/drawable/perm_group_camera.xml | 19 -- .../res/drawable/perm_group_contacts.xml | 21 -- .../res/drawable/perm_group_location.xml | 19 -- .../res/drawable/perm_group_microphone.xml | 19 -- .../res/drawable/perm_group_phone_calls.xml | 18 - .../res/drawable/perm_group_sensors.xml | 18 - .../res/drawable/perm_group_sms.xml | 21 -- .../res/drawable/perm_group_storage.xml | 18 - .../res/drawable/perm_group_visual.xml | 20 -- .../IconPackKaiLauncherOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/ic_corp.xml | 19 -- .../res/drawable/ic_drag_handle.xml | 19 -- .../res/drawable/ic_hourglass_top.xml | 18 - .../res/drawable/ic_info_no_shadow.xml | 20 -- .../res/drawable/ic_install_no_shadow.xml | 19 -- .../res/drawable/ic_palette.xml | 22 -- .../res/drawable/ic_pin.xml | 18 - .../res/drawable/ic_screenshot.xml | 30 -- .../res/drawable/ic_select.xml | 24 -- .../res/drawable/ic_setting.xml | 19 -- .../res/drawable/ic_share.xml | 31 -- .../drawable/ic_smartspace_preferences.xml | 21 -- .../res/drawable/ic_split_screen.xml | 19 -- .../res/drawable/ic_uninstall_no_shadow.xml | 20 -- .../res/drawable/ic_warning.xml | 20 -- .../res/drawable/ic_widget.xml | 21 -- .../IconPackKaiSettingsOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/drag_handle.xml | 19 -- .../res/drawable/ic_accessibility_generic.xml | 22 -- .../res/drawable/ic_add_24dp.xml | 18 - .../res/drawable/ic_airplanemode_active.xml | 18 - .../res/drawable/ic_android.xml | 18 - .../res/drawable/ic_apps.xml | 26 -- .../res/drawable/ic_arrow_back.xml | 18 - .../res/drawable/ic_arrow_down_24dp.xml | 18 - .../res/drawable/ic_battery_charging_full.xml | 19 -- .../drawable/ic_battery_status_good_24dp.xml | 19 -- .../drawable/ic_battery_status_maybe_24dp.xml | 20 -- .../res/drawable/ic_call_24dp.xml | 18 - .../res/drawable/ic_cancel.xml | 19 -- .../res/drawable/ic_cast_24dp.xml | 21 -- .../res/drawable/ic_cellular_off.xml | 19 -- .../res/drawable/ic_chevron_right_24dp.xml | 18 - .../drawable/ic_content_copy_grey600_24dp.xml | 19 -- .../res/drawable/ic_data_saver.xml | 20 -- .../res/drawable/ic_delete.xml | 20 -- .../res/drawable/ic_devices_other.xml | 20 -- .../drawable/ic_do_not_disturb_on_24dp.xml | 19 -- .../res/drawable/ic_eject_24dp.xml | 19 -- .../res/drawable/ic_expand_less.xml | 18 - .../res/drawable/ic_expand_more_inverse.xml | 18 - .../res/drawable/ic_find_in_page_24px.xml | 18 - .../res/drawable/ic_folder_vd_theme_24.xml | 18 - .../res/drawable/ic_friction_lock_closed.xml | 19 -- .../res/drawable/ic_gray_scale_24dp.xml | 18 - .../res/drawable/ic_headset_24dp.xml | 18 - .../res/drawable/ic_help.xml | 20 -- .../res/drawable/ic_help_actionbar.xml | 20 -- .../res/drawable/ic_homepage_search.xml | 18 - .../res/drawable/ic_info_outline_24.xml | 20 -- .../res/drawable/ic_local_movies.xml | 18 - .../res/drawable/ic_local_phone_24_lib.xml | 18 - .../res/drawable/ic_media_stream.xml | 18 - .../res/drawable/ic_media_stream_off.xml | 19 -- .../res/drawable/ic_network_cell.xml | 22 -- .../res/drawable/ic_notifications.xml | 19 -- .../res/drawable/ic_notifications_alert.xml | 21 -- .../drawable/ic_notifications_off_24dp.xml | 20 -- .../res/drawable/ic_phone_info.xml | 20 -- .../res/drawable/ic_photo_library.xml | 20 -- .../res/drawable/ic_restore.xml | 19 -- .../res/drawable/ic_search_24dp.xml | 18 - .../res/drawable/ic_settings_accent.xml | 19 -- .../drawable/ic_settings_accessibility.xml | 22 -- .../res/drawable/ic_settings_accounts.xml | 19 -- .../res/drawable/ic_settings_backup.xml | 19 -- .../drawable/ic_settings_battery_white.xml | 18 - .../res/drawable/ic_settings_data_usage.xml | 19 -- .../res/drawable/ic_settings_date_time.xml | 19 -- .../res/drawable/ic_settings_delete.xml | 20 -- .../res/drawable/ic_settings_disable.xml | 19 -- .../drawable/ic_settings_display_white.xml | 19 -- .../res/drawable/ic_settings_enable.xml | 19 -- .../res/drawable/ic_settings_force_stop.xml | 20 -- .../res/drawable/ic_settings_gestures.xml | 19 -- .../res/drawable/ic_settings_home.xml | 18 - .../res/drawable/ic_settings_language.xml | 18 - .../res/drawable/ic_settings_location.xml | 19 -- .../res/drawable/ic_settings_multiuser.xml | 19 -- .../drawable/ic_settings_night_display.xml | 18 - .../res/drawable/ic_settings_open.xml | 19 -- .../res/drawable/ic_settings_print.xml | 19 -- .../res/drawable/ic_settings_privacy.xml | 20 -- .../drawable/ic_settings_security_white.xml | 19 -- .../res/drawable/ic_settings_sim.xml | 24 -- .../ic_settings_system_dashboard_white.xml | 20 -- .../res/drawable/ic_settings_wireless.xml | 20 -- .../res/drawable/ic_storage.xml | 20 -- .../res/drawable/ic_storage_white.xml | 20 -- .../drawable/ic_suggestion_night_display.xml | 18 - .../res/drawable/ic_sync.xml | 19 -- .../res/drawable/ic_sync_problem_24dp.xml | 20 -- .../res/drawable/ic_system_update.xml | 19 -- .../res/drawable/ic_videogame_vd_theme_24.xml | 21 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 22 -- .../res/drawable/ic_volume_up_24dp.xml | 20 -- .../res/drawable/ic_vpn_key.xml | 19 -- .../res/drawable/ic_wifi_tethering.xml | 20 -- .../IconPackKaiSystemUIOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/anim/lock_lock.xml | 318 ------------------ .../res/anim/lock_scanning.xml | 18 - .../res/anim/lock_to_error.xml | 18 - .../res/anim/lock_unlock.xml | 296 ---------------- .../res/drawable/ic_alarm.xml | 21 -- .../res/drawable/ic_alarm_dim.xml | 21 -- .../res/drawable/ic_arrow_back.xml | 18 - .../res/drawable/ic_bluetooth_connected.xml | 20 -- .../res/drawable/ic_brightness_thumb.xml | 20 -- .../res/drawable/ic_camera.xml | 19 -- .../res/drawable/ic_cast.xml | 21 -- .../res/drawable/ic_cast_connected.xml | 22 -- .../res/drawable/ic_close_white.xml | 18 - .../res/drawable/ic_data_saver.xml | 20 -- .../res/drawable/ic_data_saver_off.xml | 19 -- .../res/drawable/ic_drag_handle.xml | 19 -- .../res/drawable/ic_headset.xml | 18 - .../res/drawable/ic_headset_mic.xml | 18 - .../res/drawable/ic_hotspot.xml | 20 -- .../res/drawable/ic_info.xml | 20 -- .../res/drawable/ic_info_outline.xml | 20 -- .../res/drawable/ic_invert_colors.xml | 18 - .../res/drawable/ic_location.xml | 19 -- .../res/drawable/ic_lockscreen_ime.xml | 27 -- .../res/drawable/ic_notifications_alert.xml | 21 -- .../res/drawable/ic_notifications_silence.xml | 20 -- .../res/drawable/ic_power_low.xml | 20 -- .../res/drawable/ic_power_saver.xml | 19 -- .../drawable/ic_qs_bluetooth_connecting.xml | 20 -- .../res/drawable/ic_qs_cancel.xml | 19 -- .../res/drawable/ic_qs_no_sim.xml | 19 -- .../res/drawable/ic_qs_wifi_0.xml | 22 -- .../res/drawable/ic_qs_wifi_1.xml | 22 -- .../res/drawable/ic_qs_wifi_2.xml | 22 -- .../res/drawable/ic_qs_wifi_3.xml | 22 -- .../res/drawable/ic_qs_wifi_4.xml | 22 -- .../res/drawable/ic_qs_wifi_disconnected.xml | 22 -- .../res/drawable/ic_screenrecord.xml | 18 - .../res/drawable/ic_screenshot.xml | 30 -- .../res/drawable/ic_screenshot_delete.xml | 20 -- .../res/drawable/ic_settings.xml | 19 -- .../res/drawable/ic_swap_vert.xml | 19 -- .../res/drawable/ic_tune_black_16dp.xml | 23 -- .../res/drawable/ic_volume_alarm_mute.xml | 21 -- .../res/drawable/ic_volume_bt_sco.xml | 19 -- .../drawable/ic_volume_collapse_animation.xml | 69 ---- .../drawable/ic_volume_expand_animation.xml | 69 ---- .../res/drawable/ic_volume_media.xml | 18 - .../res/drawable/ic_volume_media_mute.xml | 19 -- .../res/drawable/ic_volume_odi_captions.xml | 22 -- .../ic_volume_odi_captions_disabled.xml | 22 -- .../res/drawable/ic_volume_ringer.xml | 19 -- .../res/drawable/ic_volume_ringer_mute.xml | 20 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 22 -- .../res/drawable/ic_volume_voice.xml | 18 - .../stat_sys_managed_profile_status.xml | 19 -- .../res/drawable/stat_sys_mic_none.xml | 19 -- .../res/drawable/stat_sys_vpn_ic.xml | 19 -- .../IconPackKaiThemePickerOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/ic_add_24px.xml | 18 - .../res/drawable/ic_close_24px.xml | 18 - .../res/drawable/ic_colorize_24px.xml | 18 - .../res/drawable/ic_font.xml | 19 -- .../res/drawable/ic_nav_clock.xml | 19 -- .../res/drawable/ic_nav_grid.xml | 18 - .../res/drawable/ic_nav_theme.xml | 18 - .../res/drawable/ic_nav_wallpaper.xml | 23 -- .../res/drawable/ic_shapes_24px.xml | 19 -- .../res/drawable/ic_tune.xml | 23 -- .../res/drawable/ic_wifi_24px.xml | 20 -- .../IconPackRoundedAndroidOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_audio_alarm.xml | 35 -- .../res/drawable/ic_audio_alarm_mute.xml | 38 --- .../res/drawable/ic_battery_80_24dp.xml | 25 -- .../res/drawable/ic_bluetooth_share_icon.xml | 26 -- .../ic_bluetooth_transient_animation.xml | 28 -- ...bluetooth_transient_animation_drawable.xml | 58 ---- .../res/drawable/ic_bt_headphones_a2dp.xml | 26 -- .../res/drawable/ic_bt_headset_hfp.xml | 26 -- .../res/drawable/ic_bt_hearing_aid.xml | 25 -- .../res/drawable/ic_bt_laptop.xml | 26 -- .../res/drawable/ic_bt_misc_hid.xml | 26 -- .../res/drawable/ic_bt_network_pan.xml | 32 -- .../res/drawable/ic_bt_pointing_hid.xml | 26 -- .../res/drawable/ic_corp_badge.xml | 29 -- .../res/drawable/ic_expand_more.xml | 26 -- .../res/drawable/ic_faster_emergency.xml | 29 -- .../res/drawable/ic_file_copy.xml | 26 -- .../ic_hotspot_transient_animation.xml | 31 -- ...c_hotspot_transient_animation_drawable.xml | 48 --- .../res/drawable/ic_info_outline_24.xml | 31 -- .../res/drawable/ic_lock.xml | 28 -- .../res/drawable/ic_lock_bugreport.xml | 32 -- .../res/drawable/ic_lock_open.xml | 28 -- .../res/drawable/ic_lock_power_off.xml | 29 -- .../res/drawable/ic_lockscreen_ime.xml | 53 --- .../res/drawable/ic_mode_edit.xml | 32 -- .../res/drawable/ic_notifications_alerted.xml | 34 -- .../res/drawable/ic_phone.xml | 27 -- .../res/drawable/ic_qs_airplane.xml | 25 -- .../res/drawable/ic_qs_auto_rotate.xml | 28 -- .../res/drawable/ic_qs_battery_saver.xml | 30 -- .../res/drawable/ic_qs_bluetooth.xml | 26 -- .../res/drawable/ic_qs_dnd.xml | 28 -- .../res/drawable/ic_qs_flashlight.xml | 28 -- .../res/drawable/ic_qs_night_display_on.xml | 25 -- .../res/drawable/ic_qs_ui_mode_night.xml | 27 -- .../res/drawable/ic_restart.xml | 29 -- .../res/drawable/ic_screenshot.xml | 32 -- .../res/drawable/ic_settings_bluetooth.xml | 26 -- .../drawable/ic_signal_cellular_0_4_bar.xml | 25 -- .../drawable/ic_signal_cellular_0_5_bar.xml | 25 -- .../drawable/ic_signal_cellular_1_4_bar.xml | 25 -- .../drawable/ic_signal_cellular_1_5_bar.xml | 28 -- .../drawable/ic_signal_cellular_2_4_bar.xml | 25 -- .../drawable/ic_signal_cellular_2_5_bar.xml | 28 -- .../drawable/ic_signal_cellular_3_4_bar.xml | 25 -- .../drawable/ic_signal_cellular_3_5_bar.xml | 28 -- .../drawable/ic_signal_cellular_4_4_bar.xml | 25 -- .../drawable/ic_signal_cellular_4_5_bar.xml | 28 -- .../drawable/ic_signal_cellular_5_5_bar.xml | 25 -- .../res/drawable/ic_signal_location.xml | 28 -- .../ic_signal_wifi_transient_animation.xml | 46 --- ...gnal_wifi_transient_animation_drawable.xml | 80 ----- .../res/drawable/ic_wifi_signal_0.xml | 25 -- .../res/drawable/ic_wifi_signal_1.xml | 25 -- .../res/drawable/ic_wifi_signal_2.xml | 25 -- .../res/drawable/ic_wifi_signal_3.xml | 25 -- .../res/drawable/ic_wifi_signal_4.xml | 25 -- .../perm_group_activity_recognition.xml | 29 -- .../res/drawable/perm_group_aural.xml | 40 --- .../res/drawable/perm_group_calendar.xml | 29 -- .../res/drawable/perm_group_call_log.xml | 35 -- .../res/drawable/perm_group_camera.xml | 29 -- .../res/drawable/perm_group_contacts.xml | 35 -- .../res/drawable/perm_group_location.xml | 29 -- .../res/drawable/perm_group_microphone.xml | 29 -- .../res/drawable/perm_group_phone_calls.xml | 26 -- .../res/drawable/perm_group_sensors.xml | 26 -- .../res/drawable/perm_group_sms.xml | 35 -- .../res/drawable/perm_group_storage.xml | 26 -- .../res/drawable/perm_group_visual.xml | 32 -- .../res/values/config.xml | 41 --- .../IconPackRoundedLauncherOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_corp.xml | 26 -- .../res/drawable/ic_corp_off.xml | 26 -- .../res/drawable/ic_drag_handle.xml | 29 -- .../res/drawable/ic_hourglass_top.xml | 26 -- .../res/drawable/ic_info_no_shadow.xml | 32 -- .../res/drawable/ic_install_no_shadow.xml | 29 -- .../res/drawable/ic_palette.xml | 46 --- .../res/drawable/ic_pin.xml | 26 -- .../res/drawable/ic_remove_no_shadow.xml | 26 -- .../res/drawable/ic_screenshot.xml | 29 -- .../res/drawable/ic_select.xml | 23 -- .../res/drawable/ic_setting.xml | 29 -- .../res/drawable/ic_share.xml | 39 --- .../drawable/ic_smartspace_preferences.xml | 26 -- .../res/drawable/ic_split_screen.xml | 29 -- .../res/drawable/ic_uninstall_no_shadow.xml | 32 -- .../res/drawable/ic_warning.xml | 32 -- .../res/drawable/ic_widget.xml | 35 -- .../IconPackRoundedSettingsOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/drag_handle.xml | 29 -- .../res/drawable/ic_add_24dp.xml | 26 -- .../res/drawable/ic_airplanemode_active.xml | 26 -- .../res/drawable/ic_android.xml | 26 -- .../res/drawable/ic_apps.xml | 49 --- .../res/drawable/ic_arrow_back.xml | 27 -- .../res/drawable/ic_arrow_down_24dp.xml | 26 -- .../res/drawable/ic_battery_charging_full.xml | 28 -- .../drawable/ic_battery_status_good_24dp.xml | 28 -- .../drawable/ic_battery_status_maybe_24dp.xml | 31 -- .../res/drawable/ic_call_24dp.xml | 26 -- .../res/drawable/ic_cancel.xml | 28 -- .../res/drawable/ic_cast_24dp.xml | 35 -- .../res/drawable/ic_cellular_off.xml | 27 -- .../res/drawable/ic_chevron_right_24dp.xml | 27 -- .../drawable/ic_content_copy_grey600_24dp.xml | 26 -- .../res/drawable/ic_data_saver.xml | 33 -- .../res/drawable/ic_delete.xml | 32 -- .../res/drawable/ic_devices_other.xml | 32 -- .../res/drawable/ic_devices_other_32dp.xml | 32 -- .../drawable/ic_do_not_disturb_on_24dp.xml | 29 -- .../res/drawable/ic_eject_24dp.xml | 29 -- .../res/drawable/ic_expand_less.xml | 26 -- .../res/drawable/ic_expand_more_inverse.xml | 26 -- .../res/drawable/ic_find_in_page_24px.xml | 32 -- .../res/drawable/ic_folder_vd_theme_24.xml | 26 -- .../res/drawable/ic_friction_lock_closed.xml | 29 -- .../res/drawable/ic_gray_scale_24dp.xml | 25 -- .../res/drawable/ic_headset_24dp.xml | 26 -- .../res/drawable/ic_help.xml | 31 -- .../res/drawable/ic_help_actionbar.xml | 33 -- .../res/drawable/ic_homepage_search.xml | 26 -- .../res/drawable/ic_info_outline_24.xml | 32 -- .../res/drawable/ic_local_movies.xml | 26 -- .../res/drawable/ic_local_phone_24_lib.xml | 26 -- .../res/drawable/ic_lock.xml | 29 -- .../res/drawable/ic_media_stream.xml | 26 -- .../res/drawable/ic_media_stream_off.xml | 29 -- .../res/drawable/ic_network_cell.xml | 27 -- .../res/drawable/ic_notifications.xml | 29 -- .../res/drawable/ic_notifications_alert.xml | 34 -- .../drawable/ic_notifications_off_24dp.xml | 33 -- .../res/drawable/ic_phone_info.xml | 31 -- .../res/drawable/ic_photo_library.xml | 32 -- .../res/drawable/ic_scan_24dp.xml | 55 --- .../res/drawable/ic_search_24dp.xml | 26 -- .../res/drawable/ic_settings_accent.xml | 29 -- .../drawable/ic_settings_accessibility.xml | 37 -- .../res/drawable/ic_settings_accounts.xml | 28 -- .../res/drawable/ic_settings_backup.xml | 29 -- .../drawable/ic_settings_battery_white.xml | 25 -- .../res/drawable/ic_settings_data_usage.xml | 28 -- .../res/drawable/ic_settings_date_time.xml | 29 -- .../res/drawable/ic_settings_delete.xml | 31 -- .../res/drawable/ic_settings_disable.xml | 37 -- .../drawable/ic_settings_display_white.xml | 28 -- .../res/drawable/ic_settings_enable.xml | 37 -- .../res/drawable/ic_settings_home.xml | 26 -- .../res/drawable/ic_settings_language.xml | 26 -- .../res/drawable/ic_settings_location.xml | 28 -- .../res/drawable/ic_settings_multiuser.xml | 29 -- .../drawable/ic_settings_night_display.xml | 26 -- .../res/drawable/ic_settings_open.xml | 28 -- .../res/drawable/ic_settings_print.xml | 29 -- .../res/drawable/ic_settings_privacy.xml | 31 -- .../drawable/ic_settings_security_white.xml | 28 -- .../res/drawable/ic_settings_sim.xml | 44 --- .../ic_settings_system_dashboard_white.xml | 31 -- .../res/drawable/ic_settings_wireless.xml | 35 -- .../res/drawable/ic_storage.xml | 41 --- .../res/drawable/ic_storage_white.xml | 40 --- .../drawable/ic_suggestion_night_display.xml | 26 -- .../res/drawable/ic_sync.xml | 29 -- .../res/drawable/ic_sync_problem_24dp.xml | 37 -- .../res/drawable/ic_system_update.xml | 29 -- .../res/drawable/ic_videogame_vd_theme_24.xml | 35 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 38 --- .../res/drawable/ic_volume_up_24dp.xml | 31 -- .../res/drawable/ic_vpn_key.xml | 29 -- .../res/drawable/ic_wifi_tethering.xml | 32 -- .../IconPackRoundedSystemUIOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_alarm.xml | 34 -- .../res/drawable/ic_alarm_dim.xml | 34 -- .../res/drawable/ic_arrow_back.xml | 27 -- .../res/drawable/ic_bluetooth_connected.xml | 31 -- .../res/drawable/ic_brightness_thumb.xml | 28 -- .../res/drawable/ic_camera.xml | 28 -- .../res/drawable/ic_cast.xml | 34 -- .../res/drawable/ic_cast_connected.xml | 37 -- .../res/drawable/ic_cast_connected_fill.xml | 26 -- .../res/drawable/ic_close_white.xml | 25 -- .../res/drawable/ic_data_saver.xml | 31 -- .../res/drawable/ic_data_saver_off.xml | 27 -- .../res/drawable/ic_drag_handle.xml | 28 -- .../res/drawable/ic_headset.xml | 25 -- .../res/drawable/ic_headset_mic.xml | 25 -- .../res/drawable/ic_hotspot.xml | 31 -- .../res/drawable/ic_info.xml | 31 -- .../res/drawable/ic_info_outline.xml | 31 -- .../res/drawable/ic_invert_colors.xml | 25 -- .../res/drawable/ic_location.xml | 28 -- .../res/drawable/ic_lockscreen_ime.xml | 52 --- .../res/drawable/ic_notifications_alert.xml | 34 -- .../res/drawable/ic_notifications_silence.xml | 31 -- .../res/drawable/ic_power_low.xml | 31 -- .../res/drawable/ic_power_saver.xml | 28 -- .../drawable/ic_qs_bluetooth_connecting.xml | 32 -- .../res/drawable/ic_qs_bluetooth_on.xml | 26 -- .../res/drawable/ic_qs_cancel.xml | 28 -- .../res/drawable/ic_qs_no_sim.xml | 28 -- .../res/drawable/ic_qs_wifi_0.xml | 31 -- .../res/drawable/ic_qs_wifi_1.xml | 31 -- .../res/drawable/ic_qs_wifi_2.xml | 31 -- .../res/drawable/ic_qs_wifi_3.xml | 31 -- .../res/drawable/ic_qs_wifi_4.xml | 31 -- .../res/drawable/ic_qs_wifi_disconnected.xml | 34 -- .../res/drawable/ic_screenrecord.xml | 18 - .../res/drawable/ic_screenshot_delete.xml | 31 -- .../res/drawable/ic_settings.xml | 28 -- .../res/drawable/ic_settings_16dp.xml | 29 -- .../res/drawable/ic_swap_vert.xml | 28 -- .../res/drawable/ic_tune_black_16dp.xml | 40 --- .../res/drawable/ic_volume_alarm.xml | 35 -- .../res/drawable/ic_volume_alarm_mute.xml | 38 --- .../res/drawable/ic_volume_bt_sco.xml | 29 -- .../res/drawable/ic_volume_media.xml | 26 -- .../res/drawable/ic_volume_media_mute.xml | 29 -- .../res/drawable/ic_volume_odi_captions.xml | 51 --- .../ic_volume_odi_captions_disabled.xml | 61 ---- .../res/drawable/ic_volume_ringer.xml | 29 -- .../res/drawable/ic_volume_ringer_mute.xml | 32 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 37 -- .../res/drawable/ic_volume_voice.xml | 26 -- .../res/drawable/stat_sys_camera.xml | 28 -- .../stat_sys_managed_profile_status.xml | 28 -- .../res/drawable/stat_sys_mic_none.xml | 28 -- .../res/drawable/stat_sys_vpn_ic.xml | 28 -- .../Android.bp | 30 -- .../AndroidManifest.xml | 24 -- .../res/drawable/ic_add_24px.xml | 25 -- .../res/drawable/ic_close_24px.xml | 25 -- .../res/drawable/ic_colorize_24px.xml | 25 -- .../res/drawable/ic_delete_24px.xml | 31 -- .../res/drawable/ic_font.xml | 28 -- .../res/drawable/ic_nav_clock.xml | 28 -- .../res/drawable/ic_nav_grid.xml | 25 -- .../res/drawable/ic_nav_theme.xml | 25 -- .../res/drawable/ic_nav_wallpaper.xml | 40 --- .../res/drawable/ic_shapes_24px.xml | 28 -- .../res/drawable/ic_tune.xml | 40 --- .../res/drawable/ic_wifi_24px.xml | 34 -- .../IconPackSamAndroidOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/ic_audio_alarm.xml | 31 -- .../res/drawable/ic_audio_alarm_mute.xml | 21 -- .../res/drawable/ic_battery_80_24dp.xml | 18 - .../res/drawable/ic_bluetooth_share_icon.xml | 18 - .../ic_bluetooth_transient_animation.xml | 18 - .../res/drawable/ic_bt_headphones_a2dp.xml | 18 - .../res/drawable/ic_bt_headset_hfp.xml | 18 - .../res/drawable/ic_bt_hearing_aid.xml | 20 -- .../res/drawable/ic_bt_laptop.xml | 19 -- .../res/drawable/ic_bt_misc_hid.xml | 21 -- .../res/drawable/ic_bt_network_pan.xml | 20 -- .../res/drawable/ic_bt_pointing_hid.xml | 20 -- .../res/drawable/ic_corp_badge.xml | 18 - .../res/drawable/ic_expand_more.xml | 18 - .../res/drawable/ic_faster_emergency.xml | 18 - .../res/drawable/ic_file_copy.xml | 18 - .../ic_hotspot_transient_animation.xml | 18 - .../res/drawable/ic_lock.xml | 18 - .../res/drawable/ic_lock_bugreport.xml | 18 - .../res/drawable/ic_lock_open.xml | 18 - .../res/drawable/ic_lock_power_off.xml | 19 -- .../res/drawable/ic_lockscreen_ime.xml | 18 - .../res/drawable/ic_mode_edit.xml | 19 -- .../res/drawable/ic_notifications_alerted.xml | 21 -- .../res/drawable/ic_phone.xml | 18 - .../res/drawable/ic_qs_airplane.xml | 18 - .../res/drawable/ic_qs_auto_rotate.xml | 19 -- .../res/drawable/ic_qs_battery_saver.xml | 18 - .../res/drawable/ic_qs_bluetooth.xml | 18 - .../res/drawable/ic_qs_dnd.xml | 18 - .../res/drawable/ic_qs_flashlight.xml | 19 -- .../res/drawable/ic_qs_night_display_on.xml | 18 - .../res/drawable/ic_qs_ui_mode_night.xml | 18 - .../res/drawable/ic_restart.xml | 19 -- .../res/drawable/ic_rules.xml | 15 - .../res/drawable/ic_screenshot.xml | 30 -- .../res/drawable/ic_settings_bluetooth.xml | 18 - .../drawable/ic_signal_cellular_0_4_bar.xml | 18 - .../drawable/ic_signal_cellular_1_4_bar.xml | 18 - .../drawable/ic_signal_cellular_2_4_bar.xml | 18 - .../drawable/ic_signal_cellular_3_4_bar.xml | 18 - .../drawable/ic_signal_cellular_4_4_bar.xml | 18 - .../res/drawable/ic_signal_location.xml | 18 - .../ic_signal_wifi_transient_animation.xml | 18 - .../res/drawable/ic_wifi_signal_0.xml | 18 - .../res/drawable/ic_wifi_signal_1.xml | 18 - .../res/drawable/ic_wifi_signal_2.xml | 18 - .../res/drawable/ic_wifi_signal_3.xml | 18 - .../res/drawable/ic_wifi_signal_4.xml | 18 - .../res/drawable/ic_work_apps_off.xml | 19 -- .../perm_group_activity_recognition.xml | 18 - .../res/drawable/perm_group_aural.xml | 19 -- .../res/drawable/perm_group_calendar.xml | 19 -- .../res/drawable/perm_group_call_log.xml | 21 -- .../res/drawable/perm_group_camera.xml | 18 - .../res/drawable/perm_group_contacts.xml | 18 - .../res/drawable/perm_group_location.xml | 18 - .../res/drawable/perm_group_microphone.xml | 19 -- .../res/drawable/perm_group_phone_calls.xml | 18 - .../res/drawable/perm_group_sensors.xml | 18 - .../res/drawable/perm_group_sms.xml | 18 - .../res/drawable/perm_group_storage.xml | 18 - .../res/drawable/perm_group_visual.xml | 19 -- .../IconPackSamLauncherOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/ic_corp.xml | 18 - .../res/drawable/ic_drag_handle.xml | 18 - .../res/drawable/ic_hourglass_top.xml | 18 - .../res/drawable/ic_info_no_shadow.xml | 18 - .../res/drawable/ic_install_no_shadow.xml | 19 -- .../res/drawable/ic_palette.xml | 18 - .../res/drawable/ic_pin.xml | 18 - .../res/drawable/ic_screenshot.xml | 30 -- .../res/drawable/ic_select.xml | 24 -- .../res/drawable/ic_setting.xml | 18 - .../res/drawable/ic_share.xml | 31 -- .../drawable/ic_smartspace_preferences.xml | 21 -- .../res/drawable/ic_split_screen.xml | 19 -- .../res/drawable/ic_uninstall_no_shadow.xml | 19 -- .../res/drawable/ic_warning.xml | 20 -- .../res/drawable/ic_widget.xml | 21 -- .../IconPackSamSettingsOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/drag_handle.xml | 18 - .../res/drawable/ic_accessibility_generic.xml | 22 -- .../res/drawable/ic_add_24dp.xml | 18 - .../res/drawable/ic_airplanemode_active.xml | 18 - .../res/drawable/ic_android.xml | 18 - .../res/drawable/ic_apps.xml | 26 -- .../res/drawable/ic_arrow_back.xml | 18 - .../res/drawable/ic_arrow_down_24dp.xml | 18 - .../res/drawable/ic_battery_charging_full.xml | 18 - .../drawable/ic_battery_status_good_24dp.xml | 18 - .../drawable/ic_battery_status_maybe_24dp.xml | 18 - .../res/drawable/ic_call_24dp.xml | 18 - .../res/drawable/ic_cancel.xml | 19 -- .../res/drawable/ic_cast_24dp.xml | 21 -- .../res/drawable/ic_cellular_off.xml | 20 -- .../res/drawable/ic_chevron_right_24dp.xml | 18 - .../drawable/ic_content_copy_grey600_24dp.xml | 18 - .../res/drawable/ic_data_saver.xml | 20 -- .../res/drawable/ic_delete.xml | 19 -- .../res/drawable/ic_devices_other.xml | 18 - .../drawable/ic_do_not_disturb_on_24dp.xml | 18 - .../res/drawable/ic_eject_24dp.xml | 19 -- .../res/drawable/ic_expand_less.xml | 18 - .../res/drawable/ic_expand_more_inverse.xml | 18 - .../res/drawable/ic_find_in_page_24px.xml | 19 -- .../res/drawable/ic_folder_vd_theme_24.xml | 18 - .../res/drawable/ic_friction_lock_closed.xml | 18 - .../res/drawable/ic_gray_scale_24dp.xml | 18 - .../res/drawable/ic_headset_24dp.xml | 18 - .../res/drawable/ic_help.xml | 18 - .../res/drawable/ic_help_actionbar.xml | 18 - .../res/drawable/ic_homepage_search.xml | 18 - .../res/drawable/ic_info_outline_24.xml | 18 - .../res/drawable/ic_local_movies.xml | 18 - .../res/drawable/ic_local_phone_24_lib.xml | 18 - .../res/drawable/ic_media_stream.xml | 18 - .../res/drawable/ic_media_stream_off.xml | 19 -- .../res/drawable/ic_network_cell.xml | 18 - .../res/drawable/ic_notifications.xml | 19 -- .../res/drawable/ic_notifications_alert.xml | 21 -- .../drawable/ic_notifications_off_24dp.xml | 20 -- .../res/drawable/ic_phone_info.xml | 20 -- .../res/drawable/ic_photo_library.xml | 19 -- .../res/drawable/ic_restore.xml | 19 -- .../res/drawable/ic_search_24dp.xml | 18 - .../res/drawable/ic_settings_accent.xml | 18 - .../drawable/ic_settings_accessibility.xml | 22 -- .../res/drawable/ic_settings_accounts.xml | 19 -- .../res/drawable/ic_settings_backup.xml | 18 - .../drawable/ic_settings_battery_white.xml | 18 - .../res/drawable/ic_settings_data_usage.xml | 19 -- .../res/drawable/ic_settings_date_time.xml | 18 - .../res/drawable/ic_settings_delete.xml | 19 -- .../res/drawable/ic_settings_disable.xml | 19 -- .../drawable/ic_settings_display_white.xml | 19 -- .../res/drawable/ic_settings_enable.xml | 19 -- .../res/drawable/ic_settings_force_stop.xml | 20 -- .../res/drawable/ic_settings_gestures.xml | 20 -- .../res/drawable/ic_settings_home.xml | 18 - .../res/drawable/ic_settings_language.xml | 18 - .../res/drawable/ic_settings_location.xml | 18 - .../res/drawable/ic_settings_multiuser.xml | 19 -- .../drawable/ic_settings_night_display.xml | 18 - .../res/drawable/ic_settings_open.xml | 19 -- .../res/drawable/ic_settings_print.xml | 18 - .../res/drawable/ic_settings_privacy.xml | 20 -- .../drawable/ic_settings_security_white.xml | 18 - .../res/drawable/ic_settings_sim.xml | 18 - .../ic_settings_system_dashboard_white.xml | 18 - .../res/drawable/ic_settings_wireless.xml | 20 -- .../res/drawable/ic_storage.xml | 20 -- .../res/drawable/ic_storage_white.xml | 20 -- .../drawable/ic_suggestion_night_display.xml | 18 - .../res/drawable/ic_sync.xml | 19 -- .../res/drawable/ic_sync_problem_24dp.xml | 20 -- .../res/drawable/ic_system_update.xml | 19 -- .../res/drawable/ic_videogame_vd_theme_24.xml | 18 - .../res/drawable/ic_volume_ringer_vibrate.xml | 22 -- .../res/drawable/ic_volume_up_24dp.xml | 20 -- .../res/drawable/ic_vpn_key.xml | 18 - .../res/drawable/ic_wifi_tethering.xml | 20 -- .../IconPackSamSystemUIOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/anim/lock_lock.xml | 18 - .../res/anim/lock_scanning.xml | 18 - .../res/anim/lock_to_error.xml | 18 - .../res/anim/lock_unlock.xml | 18 - .../res/drawable/ic_alarm.xml | 20 -- .../res/drawable/ic_alarm_dim.xml | 20 -- .../res/drawable/ic_arrow_back.xml | 18 - .../res/drawable/ic_bluetooth_connected.xml | 20 -- .../res/drawable/ic_brightness_thumb.xml | 20 -- .../res/drawable/ic_camera.xml | 18 - .../res/drawable/ic_cast.xml | 21 -- .../res/drawable/ic_cast_connected.xml | 22 -- .../res/drawable/ic_close_white.xml | 18 - .../res/drawable/ic_data_saver.xml | 20 -- .../res/drawable/ic_data_saver_off.xml | 19 -- .../res/drawable/ic_drag_handle.xml | 18 - .../res/drawable/ic_headset.xml | 18 - .../res/drawable/ic_headset_mic.xml | 18 - .../res/drawable/ic_hotspot.xml | 20 -- .../res/drawable/ic_info.xml | 18 - .../res/drawable/ic_info_outline.xml | 18 - .../res/drawable/ic_invert_colors.xml | 18 - .../res/drawable/ic_location.xml | 18 - .../res/drawable/ic_lockscreen_ime.xml | 18 - .../res/drawable/ic_notifications_alert.xml | 21 -- .../res/drawable/ic_notifications_silence.xml | 20 -- .../res/drawable/ic_power_low.xml | 18 - .../res/drawable/ic_power_saver.xml | 18 - .../drawable/ic_qs_bluetooth_connecting.xml | 20 -- .../res/drawable/ic_qs_cancel.xml | 19 -- .../res/drawable/ic_qs_no_sim.xml | 19 -- .../res/drawable/ic_qs_wifi_0.xml | 19 -- .../res/drawable/ic_qs_wifi_1.xml | 19 -- .../res/drawable/ic_qs_wifi_2.xml | 19 -- .../res/drawable/ic_qs_wifi_3.xml | 19 -- .../res/drawable/ic_qs_wifi_4.xml | 19 -- .../res/drawable/ic_qs_wifi_disconnected.xml | 20 -- .../res/drawable/ic_screenrecord.xml | 18 - .../res/drawable/ic_screenshot.xml | 30 -- .../res/drawable/ic_screenshot_delete.xml | 19 -- .../res/drawable/ic_settings.xml | 18 - .../res/drawable/ic_swap_vert.xml | 19 -- .../res/drawable/ic_tune_black_16dp.xml | 18 - .../res/drawable/ic_volume_alarm_mute.xml | 21 -- .../res/drawable/ic_volume_bt_sco.xml | 19 -- .../drawable/ic_volume_collapse_animation.xml | 18 - .../drawable/ic_volume_expand_animation.xml | 18 - .../res/drawable/ic_volume_media.xml | 18 - .../res/drawable/ic_volume_media_mute.xml | 19 -- .../res/drawable/ic_volume_odi_captions.xml | 18 - .../ic_volume_odi_captions_disabled.xml | 19 -- .../res/drawable/ic_volume_ringer.xml | 19 -- .../res/drawable/ic_volume_ringer_mute.xml | 20 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 22 -- .../res/drawable/ic_volume_voice.xml | 18 - .../stat_sys_managed_profile_status.xml | 18 - .../res/drawable/stat_sys_mic_none.xml | 19 -- .../res/drawable/stat_sys_vpn_ic.xml | 18 - .../IconPackSamThemePickerOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/ic_add_24px.xml | 18 - .../res/drawable/ic_close_24px.xml | 18 - .../res/drawable/ic_colorize_24px.xml | 18 - .../res/drawable/ic_font.xml | 19 -- .../res/drawable/ic_nav_clock.xml | 18 - .../res/drawable/ic_nav_grid.xml | 18 - .../res/drawable/ic_nav_theme.xml | 18 - .../res/drawable/ic_nav_wallpaper.xml | 23 -- .../res/drawable/ic_shapes_24px.xml | 19 -- .../res/drawable/ic_tune.xml | 18 - .../res/drawable/ic_wifi_24px.xml | 20 -- .../IconPackVictorAndroidOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/ic_audio_alarm.xml | 34 -- .../res/drawable/ic_audio_alarm_mute.xml | 22 -- .../res/drawable/ic_battery_80_24dp.xml | 18 - .../res/drawable/ic_bluetooth_share_icon.xml | 18 - .../ic_bluetooth_transient_animation.xml | 219 ------------ .../res/drawable/ic_bt_headphones_a2dp.xml | 18 - .../res/drawable/ic_bt_headset_hfp.xml | 18 - .../res/drawable/ic_bt_hearing_aid.xml | 20 -- .../res/drawable/ic_bt_laptop.xml | 19 -- .../res/drawable/ic_bt_misc_hid.xml | 21 -- .../res/drawable/ic_bt_network_pan.xml | 20 -- .../res/drawable/ic_bt_pointing_hid.xml | 18 - .../res/drawable/ic_corp_badge.xml | 19 -- .../res/drawable/ic_expand_more.xml | 18 - .../res/drawable/ic_faster_emergency.xml | 19 -- .../res/drawable/ic_file_copy.xml | 19 -- .../ic_hotspot_transient_animation.xml | 204 ----------- .../res/drawable/ic_lock.xml | 19 -- .../res/drawable/ic_lock_bugreport.xml | 20 -- .../res/drawable/ic_lock_open.xml | 19 -- .../res/drawable/ic_lock_power_off.xml | 19 -- .../res/drawable/ic_lockscreen_ime.xml | 27 -- .../res/drawable/ic_mode_edit.xml | 18 - .../res/drawable/ic_notifications_alerted.xml | 21 -- .../res/drawable/ic_phone.xml | 18 - .../res/drawable/ic_qs_airplane.xml | 18 - .../res/drawable/ic_qs_auto_rotate.xml | 19 -- .../res/drawable/ic_qs_battery_saver.xml | 19 -- .../res/drawable/ic_qs_bluetooth.xml | 18 - .../res/drawable/ic_qs_dnd.xml | 19 -- .../res/drawable/ic_qs_flashlight.xml | 19 -- .../res/drawable/ic_qs_night_display_on.xml | 18 - .../res/drawable/ic_qs_ui_mode_night.xml | 18 - .../res/drawable/ic_restart.xml | 19 -- .../res/drawable/ic_rules.xml | 15 - .../res/drawable/ic_screenshot.xml | 30 -- .../res/drawable/ic_settings_bluetooth.xml | 18 - .../drawable/ic_signal_cellular_0_4_bar.xml | 18 - .../drawable/ic_signal_cellular_1_4_bar.xml | 18 - .../drawable/ic_signal_cellular_2_4_bar.xml | 18 - .../drawable/ic_signal_cellular_3_4_bar.xml | 18 - .../drawable/ic_signal_cellular_4_4_bar.xml | 18 - .../res/drawable/ic_signal_location.xml | 19 -- .../ic_signal_wifi_transient_animation.xml | 18 - .../res/drawable/ic_wifi_signal_0.xml | 18 - .../res/drawable/ic_wifi_signal_1.xml | 18 - .../res/drawable/ic_wifi_signal_2.xml | 18 - .../res/drawable/ic_wifi_signal_3.xml | 18 - .../res/drawable/ic_wifi_signal_4.xml | 18 - .../res/drawable/ic_work_apps_off.xml | 19 -- .../perm_group_activity_recognition.xml | 19 -- .../res/drawable/perm_group_aural.xml | 20 -- .../res/drawable/perm_group_calendar.xml | 19 -- .../res/drawable/perm_group_call_log.xml | 21 -- .../res/drawable/perm_group_camera.xml | 19 -- .../res/drawable/perm_group_contacts.xml | 21 -- .../res/drawable/perm_group_location.xml | 19 -- .../res/drawable/perm_group_microphone.xml | 19 -- .../res/drawable/perm_group_phone_calls.xml | 18 - .../res/drawable/perm_group_sensors.xml | 18 - .../res/drawable/perm_group_sms.xml | 21 -- .../res/drawable/perm_group_storage.xml | 18 - .../res/drawable/perm_group_visual.xml | 20 -- .../IconPackVictorLauncherOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/ic_corp.xml | 19 -- .../res/drawable/ic_drag_handle.xml | 19 -- .../res/drawable/ic_hourglass_top.xml | 18 - .../res/drawable/ic_info_no_shadow.xml | 20 -- .../res/drawable/ic_install_no_shadow.xml | 19 -- .../res/drawable/ic_palette.xml | 22 -- .../res/drawable/ic_pin.xml | 18 - .../res/drawable/ic_screenshot.xml | 30 -- .../res/drawable/ic_select.xml | 24 -- .../res/drawable/ic_setting.xml | 19 -- .../res/drawable/ic_share.xml | 31 -- .../drawable/ic_smartspace_preferences.xml | 21 -- .../res/drawable/ic_split_screen.xml | 19 -- .../res/drawable/ic_uninstall_no_shadow.xml | 20 -- .../res/drawable/ic_warning.xml | 20 -- .../res/drawable/ic_widget.xml | 21 -- .../IconPackVictorSettingsOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/drag_handle.xml | 19 -- .../res/drawable/ic_accessibility_generic.xml | 19 -- .../res/drawable/ic_add_24dp.xml | 18 - .../res/drawable/ic_airplanemode_active.xml | 18 - .../res/drawable/ic_android.xml | 18 - .../res/drawable/ic_apps.xml | 26 -- .../res/drawable/ic_arrow_back.xml | 18 - .../res/drawable/ic_arrow_down_24dp.xml | 18 - .../res/drawable/ic_battery_charging_full.xml | 19 -- .../drawable/ic_battery_status_good_24dp.xml | 19 -- .../drawable/ic_battery_status_maybe_24dp.xml | 20 -- .../res/drawable/ic_call_24dp.xml | 18 - .../res/drawable/ic_cancel.xml | 19 -- .../res/drawable/ic_cast_24dp.xml | 21 -- .../res/drawable/ic_cellular_off.xml | 20 -- .../res/drawable/ic_chevron_right_24dp.xml | 18 - .../drawable/ic_content_copy_grey600_24dp.xml | 19 -- .../res/drawable/ic_data_saver.xml | 20 -- .../res/drawable/ic_delete.xml | 20 -- .../res/drawable/ic_devices_other.xml | 20 -- .../drawable/ic_do_not_disturb_on_24dp.xml | 19 -- .../res/drawable/ic_eject_24dp.xml | 19 -- .../res/drawable/ic_expand_less.xml | 18 - .../res/drawable/ic_expand_more_inverse.xml | 18 - .../res/drawable/ic_find_in_page_24px.xml | 18 - .../res/drawable/ic_folder_vd_theme_24.xml | 18 - .../res/drawable/ic_friction_lock_closed.xml | 19 -- .../res/drawable/ic_gray_scale_24dp.xml | 18 - .../res/drawable/ic_headset_24dp.xml | 18 - .../res/drawable/ic_help.xml | 20 -- .../res/drawable/ic_help_actionbar.xml | 20 -- .../res/drawable/ic_homepage_search.xml | 18 - .../res/drawable/ic_info_outline_24.xml | 20 -- .../res/drawable/ic_local_movies.xml | 18 - .../res/drawable/ic_local_phone_24_lib.xml | 18 - .../res/drawable/ic_media_stream.xml | 18 - .../res/drawable/ic_media_stream_off.xml | 19 -- .../res/drawable/ic_network_cell.xml | 18 - .../res/drawable/ic_notifications.xml | 19 -- .../res/drawable/ic_notifications_alert.xml | 21 -- .../drawable/ic_notifications_off_24dp.xml | 20 -- .../res/drawable/ic_phone_info.xml | 20 -- .../res/drawable/ic_photo_library.xml | 20 -- .../res/drawable/ic_restore.xml | 19 -- .../res/drawable/ic_search_24dp.xml | 18 - .../res/drawable/ic_settings_accent.xml | 19 -- .../drawable/ic_settings_accessibility.xml | 19 -- .../res/drawable/ic_settings_accounts.xml | 19 -- .../res/drawable/ic_settings_backup.xml | 19 -- .../drawable/ic_settings_battery_white.xml | 18 - .../res/drawable/ic_settings_data_usage.xml | 19 -- .../res/drawable/ic_settings_date_time.xml | 19 -- .../res/drawable/ic_settings_delete.xml | 20 -- .../res/drawable/ic_settings_disable.xml | 19 -- .../drawable/ic_settings_display_white.xml | 19 -- .../res/drawable/ic_settings_enable.xml | 19 -- .../res/drawable/ic_settings_force_stop.xml | 20 -- .../res/drawable/ic_settings_gestures.xml | 20 -- .../res/drawable/ic_settings_home.xml | 18 - .../res/drawable/ic_settings_language.xml | 18 - .../res/drawable/ic_settings_location.xml | 19 -- .../res/drawable/ic_settings_multiuser.xml | 19 -- .../drawable/ic_settings_night_display.xml | 18 - .../res/drawable/ic_settings_open.xml | 19 -- .../res/drawable/ic_settings_print.xml | 18 - .../res/drawable/ic_settings_privacy.xml | 20 -- .../drawable/ic_settings_security_white.xml | 19 -- .../res/drawable/ic_settings_sim.xml | 24 -- .../ic_settings_system_dashboard_white.xml | 20 -- .../res/drawable/ic_settings_wireless.xml | 20 -- .../res/drawable/ic_storage.xml | 20 -- .../res/drawable/ic_storage_white.xml | 20 -- .../drawable/ic_suggestion_night_display.xml | 18 - .../res/drawable/ic_sync.xml | 19 -- .../res/drawable/ic_sync_problem_24dp.xml | 20 -- .../res/drawable/ic_system_update.xml | 19 -- .../res/drawable/ic_videogame_vd_theme_24.xml | 21 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 22 -- .../res/drawable/ic_volume_up_24dp.xml | 20 -- .../res/drawable/ic_vpn_key.xml | 19 -- .../res/drawable/ic_wifi_tethering.xml | 20 -- .../IconPackVictorSystemUIOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/anim/lock_lock.xml | 18 - .../res/anim/lock_scanning.xml | 18 - .../res/anim/lock_to_error.xml | 18 - .../res/anim/lock_unlock.xml | 18 - .../res/drawable/ic_alarm.xml | 21 -- .../res/drawable/ic_alarm_dim.xml | 21 -- .../res/drawable/ic_arrow_back.xml | 18 - .../res/drawable/ic_bluetooth_connected.xml | 20 -- .../res/drawable/ic_brightness_thumb.xml | 20 -- .../res/drawable/ic_camera.xml | 19 -- .../res/drawable/ic_cast.xml | 21 -- .../res/drawable/ic_cast_connected.xml | 22 -- .../res/drawable/ic_close_white.xml | 18 - .../res/drawable/ic_data_saver.xml | 20 -- .../res/drawable/ic_data_saver_off.xml | 19 -- .../res/drawable/ic_drag_handle.xml | 19 -- .../res/drawable/ic_headset.xml | 18 - .../res/drawable/ic_headset_mic.xml | 18 - .../res/drawable/ic_hotspot.xml | 20 -- .../res/drawable/ic_info.xml | 20 -- .../res/drawable/ic_info_outline.xml | 20 -- .../res/drawable/ic_invert_colors.xml | 18 - .../res/drawable/ic_location.xml | 19 -- .../res/drawable/ic_lockscreen_ime.xml | 27 -- .../res/drawable/ic_notifications_alert.xml | 21 -- .../res/drawable/ic_notifications_silence.xml | 20 -- .../res/drawable/ic_power_low.xml | 20 -- .../res/drawable/ic_power_saver.xml | 19 -- .../drawable/ic_qs_bluetooth_connecting.xml | 20 -- .../res/drawable/ic_qs_cancel.xml | 19 -- .../res/drawable/ic_qs_no_sim.xml | 19 -- .../res/drawable/ic_qs_wifi_0.xml | 19 -- .../res/drawable/ic_qs_wifi_1.xml | 19 -- .../res/drawable/ic_qs_wifi_2.xml | 19 -- .../res/drawable/ic_qs_wifi_3.xml | 19 -- .../res/drawable/ic_qs_wifi_4.xml | 19 -- .../res/drawable/ic_qs_wifi_disconnected.xml | 20 -- .../res/drawable/ic_screenrecord.xml | 18 - .../res/drawable/ic_screenshot.xml | 30 -- .../res/drawable/ic_screenshot_delete.xml | 20 -- .../res/drawable/ic_settings.xml | 19 -- .../res/drawable/ic_swap_vert.xml | 19 -- .../res/drawable/ic_tune_black_16dp.xml | 23 -- .../res/drawable/ic_volume_alarm_mute.xml | 22 -- .../res/drawable/ic_volume_bt_sco.xml | 19 -- .../drawable/ic_volume_collapse_animation.xml | 18 - .../drawable/ic_volume_expand_animation.xml | 18 - .../res/drawable/ic_volume_media.xml | 18 - .../res/drawable/ic_volume_media_mute.xml | 19 -- .../res/drawable/ic_volume_odi_captions.xml | 22 -- .../ic_volume_odi_captions_disabled.xml | 22 -- .../res/drawable/ic_volume_ringer.xml | 19 -- .../res/drawable/ic_volume_ringer_mute.xml | 20 -- .../res/drawable/ic_volume_ringer_vibrate.xml | 22 -- .../res/drawable/ic_volume_voice.xml | 18 - .../stat_sys_managed_profile_status.xml | 19 -- .../res/drawable/stat_sys_mic_none.xml | 19 -- .../res/drawable/stat_sys_vpn_ic.xml | 19 -- .../Android.bp | 30 -- .../AndroidManifest.xml | 22 -- .../res/drawable/ic_add_24px.xml | 18 - .../res/drawable/ic_close_24px.xml | 18 - .../res/drawable/ic_colorize_24px.xml | 18 - .../res/drawable/ic_font.xml | 19 -- .../res/drawable/ic_nav_clock.xml | 19 -- .../res/drawable/ic_nav_grid.xml | 18 - .../res/drawable/ic_nav_theme.xml | 18 - .../res/drawable/ic_nav_wallpaper.xml | 23 -- .../res/drawable/ic_shapes_24px.xml | 19 -- .../res/drawable/ic_tune.xml | 23 -- .../res/drawable/ic_wifi_24px.xml | 20 -- .../overlays/IconShapeHeartOverlay/Android.bp | 30 -- .../IconShapeHeartOverlay/AndroidManifest.xml | 29 -- .../res/values/config.xml | 30 -- .../res/values/strings.xml | 23 -- .../AndroidManifest.xml | 0 .../IconShapePebbleOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 28 -- .../res/values/config.xml | 30 -- .../res/values/strings.xml | 23 -- .../IconShapeRoundedRectOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 27 -- .../res/values/config.xml | 30 -- .../res/values/strings.xml | 23 -- .../IconShapeSquareOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 27 -- .../res/values/config.xml | 30 -- .../res/values/strings.xml | 23 -- .../IconShapeSquircleOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 27 -- .../res/values/config.xml | 30 -- .../res/values/strings.xml | 23 -- .../IconShapeTaperedRectOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 27 -- .../res/values/config.xml | 28 -- .../res/values/strings.xml | 20 -- .../IconShapeTeardropOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 27 -- .../res/values/config.xml | 30 -- .../res/values/strings.xml | 23 -- .../IconShapeVesselOverlay/Android.bp | 30 -- .../AndroidManifest.xml | 26 -- .../res/values/config.xml | 27 -- .../res/values/strings.xml | 21 -- 1553 files changed, 40795 deletions(-) delete mode 100644 packages/overlays/AccentColorAmethystOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorAmethystOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorAmethystOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorAmethystOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorAquamarineOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorAquamarineOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorAquamarineOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorAquamarineOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorBlackOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorBlackOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorBlackOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorBlackOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorCarbonOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorCarbonOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorCarbonOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorCarbonOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorCinnamonOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorCinnamonOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorCinnamonOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorCinnamonOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorGreenOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorGreenOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorGreenOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorGreenOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorOceanOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorOceanOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorOceanOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorOceanOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorOrchidOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorOrchidOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorOrchidOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorOrchidOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorPaletteOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorPaletteOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorPaletteOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorPaletteOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorPurpleOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorPurpleOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorPurpleOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorPurpleOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorSandOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorSandOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorSandOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorSandOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorSpaceOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorSpaceOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorSpaceOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorSpaceOverlay/res/values/strings.xml delete mode 100644 packages/overlays/AccentColorTangerineOverlay/Android.bp delete mode 100644 packages/overlays/AccentColorTangerineOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/AccentColorTangerineOverlay/res/values/colors_device_defaults.xml delete mode 100644 packages/overlays/AccentColorTangerineOverlay/res/values/strings.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/Android.bp delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_0.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_1.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_2.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_3.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_4.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_audio_alarm.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_battery_80_24dp.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_laptop.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_misc_hid.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_network_pan.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_corp_badge.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_expand_more.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_faster_emergency.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_file_copy.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_info_outline_24.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_bugreport.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_open.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_power_off.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_mode_edit.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_notifications_alerted.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_phone.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_airplane.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_battery_saver.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_bluetooth.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_dnd.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_flashlight.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_night_display_on.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_restart.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_settings_bluetooth.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_location.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_0.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_1.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_2.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_3.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_4.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_activity_recognition.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_aural.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_calendar.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_call_log.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_camera.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_contacts.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_location.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_microphone.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_phone_calls.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sensors.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_storage.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_visual.xml delete mode 100644 packages/overlays/IconPackCircularAndroidOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/Android.bp delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_corp.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_corp_off.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_hourglass_top.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_info_no_shadow.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_install_no_shadow.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_palette.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_pin.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_remove_no_shadow.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_select.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_setting.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_share.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_smartspace_preferences.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_split_screen.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_warning.xml delete mode 100644 packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_widget.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/Android.bp delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/drag_handle.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_add_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_airplanemode_active.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_android.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_apps.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_charging_full.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_call_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cancel.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cast_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cellular_off.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_delete.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other_32dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_eject_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_expand_less.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_expand_more_inverse.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_find_in_page_24px.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_friction_lock_closed.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_headset_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help_actionbar.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_homepage_search.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_info_outline_24.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_local_movies.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_lock.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_media_stream.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_media_stream_off.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_network_cell.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_phone_info.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_photo_library.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_scan_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_search_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accent.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accessibility.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accounts.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_backup.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_battery_white.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_data_usage.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_date_time.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_delete.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_disable.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_display_white.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_enable.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_home.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_language.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_location.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_multiuser.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_night_display.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_open.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_print.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_privacy.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_security_white.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_sim.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_wireless.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_storage.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_storage_white.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_suggestion_night_display.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_sync.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_system_update.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_volume_up_24dp.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_vpn_key.xml delete mode 100644 packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_wifi_tethering.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/Android.bp delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_alarm.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_alarm_dim.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_brightness_thumb.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_camera.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast_connected.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_close_white.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver_off.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_headset.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_headset_mic.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_hotspot.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_info.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_info_outline.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_invert_colors.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_location.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_notifications_silence.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_power_low.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_power_saver.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_cancel.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_no_sim.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenrecord.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenshot_delete.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_settings.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_settings_16dp.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_swap_vert.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_media.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_media_mute.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_voice.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_camera.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_mic_none.xml delete mode 100644 packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/Android.bp delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_add_24px.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_close_24px.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_colorize_24px.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_delete_24px.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_font.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_clock.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_grid.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_theme.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_shapes_24px.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_tune.xml delete mode 100644 packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_wifi_24px.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/Android.bp delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_audio_alarm.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_battery_80_24dp.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_laptop.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_misc_hid.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_network_pan.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_corp_badge.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_expand_more.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_faster_emergency.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_file_copy.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_info_outline_24.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_bugreport.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_open.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_power_off.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_mode_edit.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_notifications_alerted.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_phone.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_airplane.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_battery_saver.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_bluetooth.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_dnd.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_flashlight.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_night_display_on.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_restart.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_settings_bluetooth.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_location.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_0.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_1.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_2.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_3.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_4.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_activity_recognition.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_aural.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_calendar.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_call_log.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_camera.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_contacts.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_location.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_microphone.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_phone_calls.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sensors.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_storage.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_visual.xml delete mode 100644 packages/overlays/IconPackFilledAndroidOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/Android.bp delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_corp.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_corp_off.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_hourglass_top.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_info_no_shadow.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_install_no_shadow.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_palette.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_pin.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_remove_no_shadow.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_select.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_setting.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_share.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_smartspace_preferences.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_split_screen.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_warning.xml delete mode 100644 packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_widget.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/Android.bp delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/drag_handle.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_add_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_airplanemode_active.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_android.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_apps.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_charging_full.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_call_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cancel.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cast_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cellular_off.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_delete.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other_32dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_eject_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_expand_less.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_expand_more_inverse.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_find_in_page_24px.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_friction_lock_closed.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_headset_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help_actionbar.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_homepage_search.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_info_outline_24.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_local_movies.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_lock.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_media_stream.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_media_stream_off.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_network_cell.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_phone_info.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_photo_library.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_scan_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_search_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accent.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accessibility.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accounts.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_backup.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_battery_white.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_data_usage.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_date_time.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_delete.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_disable.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_display_white.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_enable.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_home.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_language.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_location.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_multiuser.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_night_display.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_open.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_print.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_privacy.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_security_white.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_sim.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_wireless.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_storage.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_storage_white.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_suggestion_night_display.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_sync.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_system_update.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_volume_up_24dp.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_vpn_key.xml delete mode 100644 packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_wifi_tethering.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/Android.bp delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_alarm.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_alarm_dim.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_brightness_thumb.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_camera.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_close_white.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver_off.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_headset.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_headset_mic.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_hotspot.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_info.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_info_outline.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_invert_colors.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_location.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_notifications_silence.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_power_low.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_power_saver.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_cancel.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_no_sim.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenrecord.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenshot_delete.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_settings.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_settings_16dp.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_swap_vert.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_media.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_media_mute.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_voice.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_camera.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_mic_none.xml delete mode 100644 packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/Android.bp delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_add_24px.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_close_24px.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_colorize_24px.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_delete_24px.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_font.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_clock.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_grid.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_theme.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_shapes_24px.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_tune.xml delete mode 100644 packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_wifi_24px.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/Android.bp delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_battery_80_24dp.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_laptop.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_misc_hid.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_network_pan.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_corp_badge.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_expand_more.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_faster_emergency.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_file_copy.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_bugreport.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_open.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_power_off.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_mode_edit.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_notifications_alerted.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_phone.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_airplane.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_battery_saver.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_bluetooth.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_dnd.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_flashlight.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_night_display_on.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_restart.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_rules.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_settings_bluetooth.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_location.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_0.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_1.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_2.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_3.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_4.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_work_apps_off.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_activity_recognition.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_aural.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_calendar.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_call_log.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_camera.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_contacts.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_location.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_microphone.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_phone_calls.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_sensors.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_sms.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_storage.xml delete mode 100644 packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_visual.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/Android.bp delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_corp.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_hourglass_top.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_info_no_shadow.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_install_no_shadow.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_palette.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_pin.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_select.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_setting.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_share.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_smartspace_preferences.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_split_screen.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_warning.xml delete mode 100644 packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_widget.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/Android.bp delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/drag_handle.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_accessibility_generic.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_add_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_airplanemode_active.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_android.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_apps.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_charging_full.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_call_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cancel.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cast_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cellular_off.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_delete.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_devices_other.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_eject_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_expand_less.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_expand_more_inverse.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_find_in_page_24px.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_friction_lock_closed.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_headset_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_help.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_help_actionbar.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_homepage_search.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_info_outline_24.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_local_movies.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_media_stream.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_media_stream_off.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_network_cell.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_phone_info.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_photo_library.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_restore.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_search_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accent.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accessibility.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accounts.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_backup.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_battery_white.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_data_usage.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_date_time.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_delete.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_disable.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_display_white.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_enable.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_force_stop.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_gestures.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_home.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_language.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_location.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_multiuser.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_night_display.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_open.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_print.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_privacy.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_security_white.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_sim.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_wireless.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_storage.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_storage_white.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_suggestion_night_display.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_sync.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_system_update.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_volume_up_24dp.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_vpn_key.xml delete mode 100644 packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_wifi_tethering.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/Android.bp delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_lock.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_scanning.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_to_error.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_unlock.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_alarm.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_alarm_dim.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_brightness_thumb.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_camera.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_cast.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_cast_connected.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_close_white.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_data_saver_off.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_headset.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_headset_mic.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_hotspot.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_info.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_info_outline.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_invert_colors.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_location.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_notifications_silence.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_power_low.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_power_saver.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_cancel.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_no_sim.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenrecord.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot_delete.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_settings.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_swap_vert.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_media.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_media_mute.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_voice.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_mic_none.xml delete mode 100644 packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/Android.bp delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_add_24px.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_close_24px.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_colorize_24px.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_font.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_clock.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_grid.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_theme.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_shapes_24px.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_tune.xml delete mode 100644 packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_wifi_24px.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/Android.bp delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_audio_alarm.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_battery_80_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_laptop.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_misc_hid.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_network_pan.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_corp_badge.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_expand_more.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_faster_emergency.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_file_copy.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_info_outline_24.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_bugreport.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_open.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_power_off.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_mode_edit.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_notifications_alerted.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_phone.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_airplane.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_battery_saver.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_bluetooth.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_dnd.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_flashlight.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_night_display_on.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_restart.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_settings_bluetooth.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_location.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_0.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_1.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_2.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_3.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_4.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_activity_recognition.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_aural.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_calendar.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_call_log.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_camera.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_contacts.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_location.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_microphone.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_phone_calls.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sensors.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_storage.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_visual.xml delete mode 100644 packages/overlays/IconPackRoundedAndroidOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/Android.bp delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_corp.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_corp_off.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_hourglass_top.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_info_no_shadow.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_install_no_shadow.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_palette.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_pin.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_remove_no_shadow.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_select.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_setting.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_share.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_smartspace_preferences.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_split_screen.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_warning.xml delete mode 100644 packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_widget.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/Android.bp delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/drag_handle.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_add_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_airplanemode_active.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_android.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_apps.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_charging_full.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_call_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cancel.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cast_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cellular_off.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_delete.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other_32dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_eject_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_expand_less.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_expand_more_inverse.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_find_in_page_24px.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_friction_lock_closed.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_headset_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help_actionbar.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_homepage_search.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_info_outline_24.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_local_movies.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_lock.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_media_stream.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_media_stream_off.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_network_cell.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_phone_info.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_photo_library.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_scan_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_search_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accent.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accessibility.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accounts.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_backup.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_battery_white.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_data_usage.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_date_time.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_delete.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_disable.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_display_white.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_enable.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_home.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_language.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_location.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_multiuser.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_night_display.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_open.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_print.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_privacy.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_security_white.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_sim.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_wireless.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_storage.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_storage_white.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_suggestion_night_display.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_sync.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_system_update.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_volume_up_24dp.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_vpn_key.xml delete mode 100644 packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_wifi_tethering.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/Android.bp delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_alarm.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_alarm_dim.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_camera.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_close_white.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver_off.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_headset.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_headset_mic.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_hotspot.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_info.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_info_outline.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_invert_colors.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_location.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_notifications_silence.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_power_low.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_power_saver.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_cancel.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_no_sim.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenrecord.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenshot_delete.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_settings.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_settings_16dp.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_swap_vert.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_media.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_media_mute.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_voice.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_camera.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_mic_none.xml delete mode 100644 packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/Android.bp delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_add_24px.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_close_24px.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_colorize_24px.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_delete_24px.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_font.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_clock.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_grid.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_theme.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_shapes_24px.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_tune.xml delete mode 100644 packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_wifi_24px.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/Android.bp delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_battery_80_24dp.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_laptop.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_misc_hid.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_network_pan.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_corp_badge.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_expand_more.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_faster_emergency.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_file_copy.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_bugreport.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_open.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_power_off.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_mode_edit.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_notifications_alerted.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_phone.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_airplane.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_battery_saver.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_bluetooth.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_dnd.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_flashlight.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_night_display_on.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_restart.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_rules.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_settings_bluetooth.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_location.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_0.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_1.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_2.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_3.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_4.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_work_apps_off.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_activity_recognition.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_aural.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_calendar.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_call_log.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_camera.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_contacts.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_location.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_microphone.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_phone_calls.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_sensors.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_sms.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_storage.xml delete mode 100644 packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_visual.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/Android.bp delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_corp.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_hourglass_top.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_info_no_shadow.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_install_no_shadow.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_palette.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_pin.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_select.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_setting.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_share.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_smartspace_preferences.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_split_screen.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_warning.xml delete mode 100644 packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_widget.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/Android.bp delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/drag_handle.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_accessibility_generic.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_add_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_airplanemode_active.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_android.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_apps.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_charging_full.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_call_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cancel.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cast_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cellular_off.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_delete.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_devices_other.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_eject_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_expand_less.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_expand_more_inverse.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_find_in_page_24px.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_friction_lock_closed.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_headset_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_help.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_help_actionbar.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_homepage_search.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_info_outline_24.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_local_movies.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_media_stream.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_media_stream_off.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_network_cell.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_phone_info.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_photo_library.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_restore.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_search_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accent.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accessibility.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accounts.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_backup.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_battery_white.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_data_usage.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_date_time.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_delete.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_disable.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_display_white.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_enable.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_force_stop.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_gestures.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_home.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_language.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_location.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_multiuser.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_night_display.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_open.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_print.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_privacy.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_security_white.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_sim.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_wireless.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_storage.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_storage_white.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_suggestion_night_display.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_sync.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_system_update.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_volume_up_24dp.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_vpn_key.xml delete mode 100644 packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_wifi_tethering.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/Android.bp delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_lock.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_scanning.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_to_error.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_unlock.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_alarm.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_alarm_dim.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_brightness_thumb.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_camera.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_cast.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_cast_connected.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_close_white.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_data_saver_off.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_headset.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_headset_mic.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_hotspot.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_info.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_info_outline.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_invert_colors.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_location.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_notifications_silence.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_power_low.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_power_saver.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_cancel.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_no_sim.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenrecord.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot_delete.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_settings.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_swap_vert.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_media.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_media_mute.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_voice.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_mic_none.xml delete mode 100644 packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/Android.bp delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_add_24px.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_close_24px.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_colorize_24px.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_font.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_clock.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_grid.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_theme.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_shapes_24px.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_tune.xml delete mode 100644 packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_wifi_24px.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/Android.bp delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_battery_80_24dp.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_laptop.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_misc_hid.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_network_pan.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_corp_badge.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_expand_more.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_faster_emergency.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_file_copy.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_bugreport.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_open.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_power_off.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_mode_edit.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_notifications_alerted.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_phone.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_airplane.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_battery_saver.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_bluetooth.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_dnd.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_flashlight.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_night_display_on.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_restart.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_rules.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_settings_bluetooth.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_location.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_0.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_1.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_2.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_3.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_4.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_work_apps_off.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_activity_recognition.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_aural.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_calendar.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_call_log.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_camera.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_contacts.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_location.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_microphone.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_phone_calls.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_sensors.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_sms.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_storage.xml delete mode 100644 packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_visual.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/Android.bp delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_corp.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_hourglass_top.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_info_no_shadow.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_install_no_shadow.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_palette.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_pin.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_select.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_setting.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_share.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_smartspace_preferences.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_split_screen.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_warning.xml delete mode 100644 packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_widget.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/Android.bp delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/drag_handle.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_accessibility_generic.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_add_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_airplanemode_active.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_android.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_apps.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_charging_full.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_call_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cancel.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cast_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cellular_off.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_delete.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_devices_other.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_eject_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_expand_less.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_expand_more_inverse.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_find_in_page_24px.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_friction_lock_closed.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_headset_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_help.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_help_actionbar.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_homepage_search.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_info_outline_24.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_local_movies.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_media_stream.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_media_stream_off.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_network_cell.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_phone_info.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_photo_library.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_restore.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_search_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accent.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accessibility.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accounts.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_backup.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_battery_white.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_data_usage.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_date_time.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_delete.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_disable.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_display_white.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_enable.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_force_stop.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_gestures.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_home.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_language.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_location.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_multiuser.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_night_display.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_open.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_print.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_privacy.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_security_white.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_sim.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_wireless.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_storage.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_storage_white.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_suggestion_night_display.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_sync.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_system_update.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_volume_up_24dp.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_vpn_key.xml delete mode 100644 packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_wifi_tethering.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/Android.bp delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_lock.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_scanning.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_to_error.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_unlock.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_alarm.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_alarm_dim.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_arrow_back.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_brightness_thumb.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_camera.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_cast.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_cast_connected.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_close_white.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_data_saver.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_data_saver_off.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_drag_handle.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_headset.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_headset_mic.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_hotspot.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_info.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_info_outline.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_invert_colors.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_location.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_notifications_alert.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_notifications_silence.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_power_low.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_power_saver.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_cancel.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_no_sim.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenrecord.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot_delete.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_settings.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_swap_vert.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_media.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_media_mute.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_voice.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_mic_none.xml delete mode 100644 packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/Android.bp delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_add_24px.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_close_24px.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_colorize_24px.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_font.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_clock.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_grid.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_theme.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_shapes_24px.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_tune.xml delete mode 100644 packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_wifi_24px.xml delete mode 100644 packages/overlays/IconShapeHeartOverlay/Android.bp delete mode 100644 packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconShapeHeartOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconShapeHeartOverlay/res/values/strings.xml delete mode 100644 packages/overlays/IconShapeHexagonOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconShapePebbleOverlay/Android.bp delete mode 100644 packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconShapePebbleOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconShapePebbleOverlay/res/values/strings.xml delete mode 100644 packages/overlays/IconShapeRoundedRectOverlay/Android.bp delete mode 100644 packages/overlays/IconShapeRoundedRectOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconShapeRoundedRectOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconShapeRoundedRectOverlay/res/values/strings.xml delete mode 100644 packages/overlays/IconShapeSquareOverlay/Android.bp delete mode 100644 packages/overlays/IconShapeSquareOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconShapeSquareOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconShapeSquareOverlay/res/values/strings.xml delete mode 100644 packages/overlays/IconShapeSquircleOverlay/Android.bp delete mode 100644 packages/overlays/IconShapeSquircleOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconShapeSquircleOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconShapeSquircleOverlay/res/values/strings.xml delete mode 100644 packages/overlays/IconShapeTaperedRectOverlay/Android.bp delete mode 100644 packages/overlays/IconShapeTaperedRectOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconShapeTaperedRectOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconShapeTaperedRectOverlay/res/values/strings.xml delete mode 100644 packages/overlays/IconShapeTeardropOverlay/Android.bp delete mode 100644 packages/overlays/IconShapeTeardropOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconShapeTeardropOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconShapeTeardropOverlay/res/values/strings.xml delete mode 100644 packages/overlays/IconShapeVesselOverlay/Android.bp delete mode 100644 packages/overlays/IconShapeVesselOverlay/AndroidManifest.xml delete mode 100644 packages/overlays/IconShapeVesselOverlay/res/values/config.xml delete mode 100644 packages/overlays/IconShapeVesselOverlay/res/values/strings.xml diff --git a/packages/overlays/AccentColorAmethystOverlay/Android.bp b/packages/overlays/AccentColorAmethystOverlay/Android.bp deleted file mode 100644 index 186d770c09a5d..0000000000000 --- a/packages/overlays/AccentColorAmethystOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (C) 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorAmethystOverlay", - theme: "AccentColorAmethyst", - product_specific: true, -} diff --git a/packages/overlays/AccentColorAmethystOverlay/AndroidManifest.xml b/packages/overlays/AccentColorAmethystOverlay/AndroidManifest.xml deleted file mode 100644 index e5a8826770575..0000000000000 --- a/packages/overlays/AccentColorAmethystOverlay/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - diff --git a/packages/overlays/AccentColorAmethystOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorAmethystOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index e17aebcb3adad..0000000000000 --- a/packages/overlays/AccentColorAmethystOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - #A03EFF - #BD78FF - - diff --git a/packages/overlays/AccentColorAmethystOverlay/res/values/strings.xml b/packages/overlays/AccentColorAmethystOverlay/res/values/strings.xml deleted file mode 100644 index ecfa2a87c23ec..0000000000000 --- a/packages/overlays/AccentColorAmethystOverlay/res/values/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Amethyst - - - diff --git a/packages/overlays/AccentColorAquamarineOverlay/Android.bp b/packages/overlays/AccentColorAquamarineOverlay/Android.bp deleted file mode 100644 index 7fd64f3745225..0000000000000 --- a/packages/overlays/AccentColorAquamarineOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (C) 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorAquamarineOverlay", - theme: "AccentColorAquamarine", - product_specific: true, -} diff --git a/packages/overlays/AccentColorAquamarineOverlay/AndroidManifest.xml b/packages/overlays/AccentColorAquamarineOverlay/AndroidManifest.xml deleted file mode 100644 index 27e2470bf36d9..0000000000000 --- a/packages/overlays/AccentColorAquamarineOverlay/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - diff --git a/packages/overlays/AccentColorAquamarineOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorAquamarineOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index 2e69b5dfc6147..0000000000000 --- a/packages/overlays/AccentColorAquamarineOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - #23847D - #1AFFCB - - diff --git a/packages/overlays/AccentColorAquamarineOverlay/res/values/strings.xml b/packages/overlays/AccentColorAquamarineOverlay/res/values/strings.xml deleted file mode 100644 index 918ba50242590..0000000000000 --- a/packages/overlays/AccentColorAquamarineOverlay/res/values/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - Aquamarine - - - diff --git a/packages/overlays/AccentColorBlackOverlay/Android.bp b/packages/overlays/AccentColorBlackOverlay/Android.bp deleted file mode 100644 index ac923ebd7cd98..0000000000000 --- a/packages/overlays/AccentColorBlackOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2018, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorBlackOverlay", - theme: "AccentColorBlack", - product_specific: true, -} diff --git a/packages/overlays/AccentColorBlackOverlay/AndroidManifest.xml b/packages/overlays/AccentColorBlackOverlay/AndroidManifest.xml deleted file mode 100644 index 3b99648d20aa9..0000000000000 --- a/packages/overlays/AccentColorBlackOverlay/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorBlackOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorBlackOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index c73cbba9d939d..0000000000000 --- a/packages/overlays/AccentColorBlackOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - #202020 - #D7DEE6 - diff --git a/packages/overlays/AccentColorBlackOverlay/res/values/strings.xml b/packages/overlays/AccentColorBlackOverlay/res/values/strings.xml deleted file mode 100644 index da1036159d344..0000000000000 --- a/packages/overlays/AccentColorBlackOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Black - - diff --git a/packages/overlays/AccentColorCarbonOverlay/Android.bp b/packages/overlays/AccentColorCarbonOverlay/Android.bp deleted file mode 100644 index f4f1b8b50a1e6..0000000000000 --- a/packages/overlays/AccentColorCarbonOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2018, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorCarbonOverlay", - theme: "AccentColorCarbon", - product_specific: true, -} diff --git a/packages/overlays/AccentColorCarbonOverlay/AndroidManifest.xml b/packages/overlays/AccentColorCarbonOverlay/AndroidManifest.xml deleted file mode 100644 index d7779f5980138..0000000000000 --- a/packages/overlays/AccentColorCarbonOverlay/AndroidManifest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorCarbonOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorCarbonOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index 1fef36346c468..0000000000000 --- a/packages/overlays/AccentColorCarbonOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - #434E58 - #3DDCFF - diff --git a/packages/overlays/AccentColorCarbonOverlay/res/values/strings.xml b/packages/overlays/AccentColorCarbonOverlay/res/values/strings.xml deleted file mode 100644 index dcd53e89760e9..0000000000000 --- a/packages/overlays/AccentColorCarbonOverlay/res/values/strings.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Carbon - - diff --git a/packages/overlays/AccentColorCinnamonOverlay/Android.bp b/packages/overlays/AccentColorCinnamonOverlay/Android.bp deleted file mode 100644 index 53899bfefd987..0000000000000 --- a/packages/overlays/AccentColorCinnamonOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorCinnamonOverlay", - theme: "AccentColorCinnamon", - product_specific: true, -} diff --git a/packages/overlays/AccentColorCinnamonOverlay/AndroidManifest.xml b/packages/overlays/AccentColorCinnamonOverlay/AndroidManifest.xml deleted file mode 100644 index bcb6c4faf3bcd..0000000000000 --- a/packages/overlays/AccentColorCinnamonOverlay/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorCinnamonOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorCinnamonOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index a99f705dbde87..0000000000000 --- a/packages/overlays/AccentColorCinnamonOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - #AF6050 - #C3A6A2 - diff --git a/packages/overlays/AccentColorCinnamonOverlay/res/values/strings.xml b/packages/overlays/AccentColorCinnamonOverlay/res/values/strings.xml deleted file mode 100644 index ac8ca7da263c6..0000000000000 --- a/packages/overlays/AccentColorCinnamonOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Cinnamon - - diff --git a/packages/overlays/AccentColorGreenOverlay/Android.bp b/packages/overlays/AccentColorGreenOverlay/Android.bp deleted file mode 100644 index 5b1f7447a7ca0..0000000000000 --- a/packages/overlays/AccentColorGreenOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2018, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorGreenOverlay", - theme: "AccentColorGreen", - product_specific: true, -} diff --git a/packages/overlays/AccentColorGreenOverlay/AndroidManifest.xml b/packages/overlays/AccentColorGreenOverlay/AndroidManifest.xml deleted file mode 100644 index 609d5be8a7588..0000000000000 --- a/packages/overlays/AccentColorGreenOverlay/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorGreenOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorGreenOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index 089f08c6bb196..0000000000000 --- a/packages/overlays/AccentColorGreenOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - #1B873B - #84C188 - diff --git a/packages/overlays/AccentColorGreenOverlay/res/values/strings.xml b/packages/overlays/AccentColorGreenOverlay/res/values/strings.xml deleted file mode 100644 index 623a1dafb48de..0000000000000 --- a/packages/overlays/AccentColorGreenOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Green - - diff --git a/packages/overlays/AccentColorOceanOverlay/Android.bp b/packages/overlays/AccentColorOceanOverlay/Android.bp deleted file mode 100644 index a85883044dc26..0000000000000 --- a/packages/overlays/AccentColorOceanOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorOceanOverlay", - theme: "AccentColorOcean", - product_specific: true, -} diff --git a/packages/overlays/AccentColorOceanOverlay/AndroidManifest.xml b/packages/overlays/AccentColorOceanOverlay/AndroidManifest.xml deleted file mode 100644 index bbee10d36a5ce..0000000000000 --- a/packages/overlays/AccentColorOceanOverlay/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorOceanOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorOceanOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index 449639bdfef2a..0000000000000 --- a/packages/overlays/AccentColorOceanOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - #0C80A7 - #28BDD7 - diff --git a/packages/overlays/AccentColorOceanOverlay/res/values/strings.xml b/packages/overlays/AccentColorOceanOverlay/res/values/strings.xml deleted file mode 100644 index 9342d4833064d..0000000000000 --- a/packages/overlays/AccentColorOceanOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Ocean - - diff --git a/packages/overlays/AccentColorOrchidOverlay/Android.bp b/packages/overlays/AccentColorOrchidOverlay/Android.bp deleted file mode 100644 index 31ed30921664c..0000000000000 --- a/packages/overlays/AccentColorOrchidOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorOrchidOverlay", - theme: "AccentColorOrchid", - product_specific: true, -} diff --git a/packages/overlays/AccentColorOrchidOverlay/AndroidManifest.xml b/packages/overlays/AccentColorOrchidOverlay/AndroidManifest.xml deleted file mode 100644 index 0290b681742cf..0000000000000 --- a/packages/overlays/AccentColorOrchidOverlay/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorOrchidOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorOrchidOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index 47079a8d9c3a6..0000000000000 --- a/packages/overlays/AccentColorOrchidOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - #C42CC9 - #E68AED - diff --git a/packages/overlays/AccentColorOrchidOverlay/res/values/strings.xml b/packages/overlays/AccentColorOrchidOverlay/res/values/strings.xml deleted file mode 100644 index 4e7ec4831eb02..0000000000000 --- a/packages/overlays/AccentColorOrchidOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Orchid - - diff --git a/packages/overlays/AccentColorPaletteOverlay/Android.bp b/packages/overlays/AccentColorPaletteOverlay/Android.bp deleted file mode 100644 index a6cc1dec37dde..0000000000000 --- a/packages/overlays/AccentColorPaletteOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2018, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorPaletteOverlay", - theme: "AccentColorPalette", - product_specific: true, -} diff --git a/packages/overlays/AccentColorPaletteOverlay/AndroidManifest.xml b/packages/overlays/AccentColorPaletteOverlay/AndroidManifest.xml deleted file mode 100644 index dd089deda9b65..0000000000000 --- a/packages/overlays/AccentColorPaletteOverlay/AndroidManifest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorPaletteOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorPaletteOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index cea0539aeaff4..0000000000000 --- a/packages/overlays/AccentColorPaletteOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - #c01668 - #ffb6d9 - diff --git a/packages/overlays/AccentColorPaletteOverlay/res/values/strings.xml b/packages/overlays/AccentColorPaletteOverlay/res/values/strings.xml deleted file mode 100644 index ed267b034e5b7..0000000000000 --- a/packages/overlays/AccentColorPaletteOverlay/res/values/strings.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Palette - - diff --git a/packages/overlays/AccentColorPurpleOverlay/Android.bp b/packages/overlays/AccentColorPurpleOverlay/Android.bp deleted file mode 100644 index 80e0ab1159b7a..0000000000000 --- a/packages/overlays/AccentColorPurpleOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2018, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorPurpleOverlay", - theme: "AccentColorPurple", - product_specific: true, -} diff --git a/packages/overlays/AccentColorPurpleOverlay/AndroidManifest.xml b/packages/overlays/AccentColorPurpleOverlay/AndroidManifest.xml deleted file mode 100644 index 497a35815554a..0000000000000 --- a/packages/overlays/AccentColorPurpleOverlay/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorPurpleOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorPurpleOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index 7e34bac3d9fb7..0000000000000 --- a/packages/overlays/AccentColorPurpleOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - #725AFF - #B5A9FC - diff --git a/packages/overlays/AccentColorPurpleOverlay/res/values/strings.xml b/packages/overlays/AccentColorPurpleOverlay/res/values/strings.xml deleted file mode 100644 index d1c71688979ee..0000000000000 --- a/packages/overlays/AccentColorPurpleOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Purple - - diff --git a/packages/overlays/AccentColorSandOverlay/Android.bp b/packages/overlays/AccentColorSandOverlay/Android.bp deleted file mode 100644 index 771abca4c3f6e..0000000000000 --- a/packages/overlays/AccentColorSandOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2018, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorSandOverlay", - theme: "AccentColorSand", - product_specific: true, -} diff --git a/packages/overlays/AccentColorSandOverlay/AndroidManifest.xml b/packages/overlays/AccentColorSandOverlay/AndroidManifest.xml deleted file mode 100644 index c323cc9076331..0000000000000 --- a/packages/overlays/AccentColorSandOverlay/AndroidManifest.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorSandOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorSandOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index 7fb514ee32407..0000000000000 --- a/packages/overlays/AccentColorSandOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - #795548 - #c8ac94 - diff --git a/packages/overlays/AccentColorSandOverlay/res/values/strings.xml b/packages/overlays/AccentColorSandOverlay/res/values/strings.xml deleted file mode 100644 index 20a26cb176a13..0000000000000 --- a/packages/overlays/AccentColorSandOverlay/res/values/strings.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Sand - - diff --git a/packages/overlays/AccentColorSpaceOverlay/Android.bp b/packages/overlays/AccentColorSpaceOverlay/Android.bp deleted file mode 100644 index 8e4abacf1ef28..0000000000000 --- a/packages/overlays/AccentColorSpaceOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorSpaceOverlay", - theme: "AccentColorSpace", - product_specific: true, -} diff --git a/packages/overlays/AccentColorSpaceOverlay/AndroidManifest.xml b/packages/overlays/AccentColorSpaceOverlay/AndroidManifest.xml deleted file mode 100644 index b9f1fa992dc69..0000000000000 --- a/packages/overlays/AccentColorSpaceOverlay/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorSpaceOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorSpaceOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index f147aeb79bc96..0000000000000 --- a/packages/overlays/AccentColorSpaceOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - #47618A - #99ACCC - diff --git a/packages/overlays/AccentColorSpaceOverlay/res/values/strings.xml b/packages/overlays/AccentColorSpaceOverlay/res/values/strings.xml deleted file mode 100644 index 55cd5ae64fd0e..0000000000000 --- a/packages/overlays/AccentColorSpaceOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Space - - diff --git a/packages/overlays/AccentColorTangerineOverlay/Android.bp b/packages/overlays/AccentColorTangerineOverlay/Android.bp deleted file mode 100644 index 75c708ec9fe7a..0000000000000 --- a/packages/overlays/AccentColorTangerineOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (C) 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "AccentColorTangerineOverlay", - theme: "AccentColorTangerine", - product_specific: true, -} diff --git a/packages/overlays/AccentColorTangerineOverlay/AndroidManifest.xml b/packages/overlays/AccentColorTangerineOverlay/AndroidManifest.xml deleted file mode 100644 index 024d4cdf58736..0000000000000 --- a/packages/overlays/AccentColorTangerineOverlay/AndroidManifest.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - diff --git a/packages/overlays/AccentColorTangerineOverlay/res/values/colors_device_defaults.xml b/packages/overlays/AccentColorTangerineOverlay/res/values/colors_device_defaults.xml deleted file mode 100644 index ee663cf13cb1d..0000000000000 --- a/packages/overlays/AccentColorTangerineOverlay/res/values/colors_device_defaults.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - #C85125 - #F19D7D - - diff --git a/packages/overlays/AccentColorTangerineOverlay/res/values/strings.xml b/packages/overlays/AccentColorTangerineOverlay/res/values/strings.xml deleted file mode 100644 index 4e8d8e6d539a9..0000000000000 --- a/packages/overlays/AccentColorTangerineOverlay/res/values/strings.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - Tangerine - - - - diff --git a/packages/overlays/Android.mk b/packages/overlays/Android.mk index 99dfd9eab891c..928892c60e47a 100644 --- a/packages/overlays/Android.mk +++ b/packages/overlays/Android.mk @@ -20,61 +20,12 @@ LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 LOCAL_LICENSE_CONDITIONS := notice LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../../NOTICE LOCAL_REQUIRED_MODULES := \ - AccentColorBlackOverlay \ - AccentColorCinnamonOverlay \ - AccentColorOceanOverlay \ - AccentColorOrchidOverlay \ - AccentColorSpaceOverlay \ - AccentColorGreenOverlay \ - AccentColorPurpleOverlay \ - AccentColorPaletteOverlay \ - AccentColorCarbonOverlay \ - AccentColorSandOverlay \ - AccentColorAmethystOverlay \ - AccentColorAquamarineOverlay \ - AccentColorTangerineOverlay \ DisplayCutoutEmulationCornerOverlay \ DisplayCutoutEmulationDoubleOverlay \ DisplayCutoutEmulationHoleOverlay \ DisplayCutoutEmulationTallOverlay \ DisplayCutoutEmulationWaterfallOverlay \ FontNotoSerifSourceOverlay \ - IconPackCircularAndroidOverlay \ - IconPackCircularLauncherOverlay \ - IconPackCircularSettingsOverlay \ - IconPackCircularSystemUIOverlay \ - IconPackCircularThemePickerOverlay \ - IconPackVictorAndroidOverlay \ - IconPackVictorLauncherOverlay \ - IconPackVictorSettingsOverlay \ - IconPackVictorSystemUIOverlay \ - IconPackVictorThemePickerOverlay \ - IconPackSamAndroidOverlay \ - IconPackSamLauncherOverlay \ - IconPackSamSettingsOverlay \ - IconPackSamSystemUIOverlay \ - IconPackSamThemePickerOverlay \ - IconPackKaiAndroidOverlay \ - IconPackKaiLauncherOverlay \ - IconPackKaiSettingsOverlay \ - IconPackKaiSystemUIOverlay \ - IconPackKaiThemePickerOverlay \ - IconPackFilledAndroidOverlay \ - IconPackFilledLauncherOverlay \ - IconPackFilledSettingsOverlay \ - IconPackFilledSystemUIOverlay \ - IconPackFilledThemePickerOverlay \ - IconPackRoundedAndroidOverlay \ - IconPackRoundedLauncherOverlay \ - IconPackRoundedSettingsOverlay \ - IconPackRoundedSystemUIOverlay \ - IconPackRoundedThemePickerOverlay \ - IconShapePebbleOverlay \ - IconShapeRoundedRectOverlay \ - IconShapeSquircleOverlay \ - IconShapeTaperedRectOverlay \ - IconShapeTeardropOverlay \ - IconShapeVesselOverlay \ NavigationBarMode3ButtonOverlay \ NavigationBarModeGesturalOverlay \ NavigationBarModeGesturalOverlayNarrowBack \ diff --git a/packages/overlays/CleanSpec.mk b/packages/overlays/CleanSpec.mk index 16fbaa202aa1c..f4ae800e2d4a6 100644 --- a/packages/overlays/CleanSpec.mk +++ b/packages/overlays/CleanSpec.mk @@ -44,9 +44,7 @@ #$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f) #$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*) -$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/overlay/AccentColor*) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/overlay/DisplayCutout*) -$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/overlay/IconShape*) # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST diff --git a/packages/overlays/IconPackCircularAndroidOverlay/Android.bp b/packages/overlays/IconPackCircularAndroidOverlay/Android.bp deleted file mode 100644 index 70403588da33c..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackCircularAndroidOverlay", - theme: "IconPackCircularAndroid", - product_specific: true, -} diff --git a/packages/overlays/IconPackCircularAndroidOverlay/AndroidManifest.xml b/packages/overlays/IconPackCircularAndroidOverlay/AndroidManifest.xml deleted file mode 100644 index 94056767ac4e3..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_0.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_0.xml deleted file mode 100644 index 1be546840e6d2..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_0.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_1.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_1.xml deleted file mode 100644 index c9fd424f7ad3a..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_1.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_2.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_2.xml deleted file mode 100644 index b34d3088e87ee..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_2.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_3.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_3.xml deleted file mode 100644 index 9d2b3a4f80160..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_3.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_4.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_4.xml deleted file mode 100644 index 943893dfb3617..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/anim/ic_signal_wifi_transient_animation_4.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_audio_alarm.xml deleted file mode 100644 index 4393903785caa..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_audio_alarm.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml deleted file mode 100644 index 9bdc79a230086..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_battery_80_24dp.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_battery_80_24dp.xml deleted file mode 100644 index 4d8dbdba92075..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_battery_80_24dp.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml deleted file mode 100644 index 4d844a1c4e0f0..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml deleted file mode 100644 index bd5aefac7187a..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml deleted file mode 100644 index b7acaeb65d099..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml deleted file mode 100644 index cf620c4ddbdd3..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml deleted file mode 100644 index aec7bf48bd909..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml deleted file mode 100644 index 6397e078b38b4..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_laptop.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_laptop.xml deleted file mode 100644 index 2f13fb8685f9e..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_laptop.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ 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 deleted file mode 100644 index 5096f2f0f2e9d..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_misc_hid.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_network_pan.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_network_pan.xml deleted file mode 100644 index c7a0266cbfca3..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_network_pan.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml deleted file mode 100644 index a5f66069e19c4..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_corp_badge.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_corp_badge.xml deleted file mode 100644 index 586e7a68b7acd..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_corp_badge.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_expand_more.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_expand_more.xml deleted file mode 100644 index 6419515cc5946..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_expand_more.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_faster_emergency.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_faster_emergency.xml deleted file mode 100644 index f3364feb8608f..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_faster_emergency.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_file_copy.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_file_copy.xml deleted file mode 100644 index b8e9845d5039a..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_file_copy.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml deleted file mode 100644 index 9d43e51dc4698..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml deleted file mode 100644 index 15f273569fabc..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_info_outline_24.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_info_outline_24.xml deleted file mode 100644 index 4adc9ce2923f9..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_info_outline_24.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock.xml deleted file mode 100644 index 5a67f95788ee3..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_bugreport.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_bugreport.xml deleted file mode 100644 index d1f92433bfda3..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_bugreport.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_open.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_open.xml deleted file mode 100644 index 21abd6e2d3ba7..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_open.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_power_off.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_power_off.xml deleted file mode 100644 index e2296fb3839cd..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lock_power_off.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index 455bdd50ceba8..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_mode_edit.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_mode_edit.xml deleted file mode 100644 index aca3d52c1a244..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_mode_edit.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_notifications_alerted.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_notifications_alerted.xml deleted file mode 100644 index 86863b3b6c987..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_notifications_alerted.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ 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 deleted file mode 100644 index 85c184b9f9a8a..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_phone.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_airplane.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_airplane.xml deleted file mode 100644 index c2f93c27f16e6..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_airplane.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml deleted file mode 100644 index 5628fb76da6bc..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_battery_saver.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_battery_saver.xml deleted file mode 100644 index 73310b03f625b..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_battery_saver.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_bluetooth.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_bluetooth.xml deleted file mode 100644 index 19731249bfc72..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_bluetooth.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_dnd.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_dnd.xml deleted file mode 100644 index dadaaa8f35cf5..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_dnd.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_flashlight.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_flashlight.xml deleted file mode 100644 index 5c2b0246a3d4e..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_flashlight.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_night_display_on.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_night_display_on.xml deleted file mode 100644 index a39a742354a90..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_night_display_on.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml deleted file mode 100644 index 3cf7541219f06..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_restart.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_restart.xml deleted file mode 100644 index ac6a8204ec19e..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_restart.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index 294898ebaeb8a..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_settings_bluetooth.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_settings_bluetooth.xml deleted file mode 100644 index 19731249bfc72..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_settings_bluetooth.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file 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 deleted file mode 100644 index d9dfa54697e49..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml deleted file mode 100644 index ed510f0920789..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - \ 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 deleted file mode 100644 index 70f91afab7d5c..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml deleted file mode 100644 index 7a5e570424400..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - \ 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 deleted file mode 100644 index f014eea9354f9..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml deleted file mode 100644 index 06be365241218..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - \ 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 deleted file mode 100644 index 9b83fab35144b..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml deleted file mode 100644 index f5b82ead4d3fe..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - \ 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 deleted file mode 100644 index 6f7f48d1ea964..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml deleted file mode 100644 index ab2f3f7374865..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml deleted file mode 100644 index a53768be3a966..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_location.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_location.xml deleted file mode 100644 index 213b01b04eef4..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_location.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml deleted file mode 100644 index 20418a34f200d..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml deleted file mode 100644 index 6dfe9d70e95f2..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_0.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_0.xml deleted file mode 100644 index 9c5f866c42faa..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_0.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_1.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_1.xml deleted file mode 100644 index 931b10123ba06..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_1.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_2.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_2.xml deleted file mode 100644 index 3c56e1babbd29..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_2.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_3.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_3.xml deleted file mode 100644 index dce7b4390e152..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_3.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_4.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_4.xml deleted file mode 100644 index 6dacb3ff42755..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/ic_wifi_signal_4.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ 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 deleted file mode 100644 index cbd60d880fb24..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_activity_recognition.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_aural.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_aural.xml deleted file mode 100644 index 64802640a9ec5..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_aural.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_calendar.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_calendar.xml deleted file mode 100644 index 397050fd88f47..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_calendar.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_call_log.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_call_log.xml deleted file mode 100644 index b56eec39334c9..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_call_log.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_camera.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_camera.xml deleted file mode 100644 index c8cb2e2cfc1f9..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_camera.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_contacts.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_contacts.xml deleted file mode 100644 index 6124df86e9316..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_contacts.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_location.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_location.xml deleted file mode 100644 index 77ff42ad3e257..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_location.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_microphone.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_microphone.xml deleted file mode 100644 index 06aa0cd3f238f..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_microphone.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_phone_calls.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_phone_calls.xml deleted file mode 100644 index 3aea5f44902b6..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_phone_calls.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sensors.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sensors.xml deleted file mode 100644 index 4d70fc90850e4..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sensors.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml deleted file mode 100644 index 30ed8c92a1985..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_sms.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_storage.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_storage.xml deleted file mode 100644 index 52cd4c1c7153b..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_storage.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_visual.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_visual.xml deleted file mode 100644 index 1c461791c8680..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/drawable/perm_group_visual.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularAndroidOverlay/res/values/config.xml b/packages/overlays/IconPackCircularAndroidOverlay/res/values/config.xml deleted file mode 100644 index 30f29f7788580..0000000000000 --- a/packages/overlays/IconPackCircularAndroidOverlay/res/values/config.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - M 8,1 C 8,0.45 7.55,0 7,0 H 5 C 4.45,0 4,0.45 4,1 H 3 C 1.34,1 0,2.34 0,4 V 17 C 0,18.66 1.34,20 3,20 H 9 C 10.66,20 12,18.66 12,17 V 4 C 12,2.34 10.66,1 9,1 Z M 10.5,4 V 17 C 10.5,17.83 9.83,18.5 9,18.5 H 3 C 2.17,18.5 1.5,17.83 1.5,17 V 4 C 1.5,3.17 2.17,2.5 3,2.5 H 9 C 9.83,2.5 10.5,3.17 10.5,4 Z - - - M 10.5,4 V 17 C 10.5,17.83 9.83,18.5 9,18.5 H 3 C 2.17,18.5 1.5,17.83 1.5,17 V 4 C 1.5,3.17 2.17,2.5 3,2.5 H 9 C 9.83,2.5 10.5,3.17 10.5,4 Z - - - M 8.08,9.5 H 7 V 5.99 C 7,5.73 6.65,5.64 6.53,5.87 L 3.7,11.13 C 3.61,11.3 3.73,11.5 3.92,11.5 H 5 V 15.01 C 5,15.27 5.35,15.36 5.47,15.13 L 8.3,9.87 C 8.39,9.7 8.27,9.5 8.08,9.5 Z - - - M 3.75,11.25 H 5.25 V 12.75 C 5.25,13.16 5.59,13.5 6,13.5 6.41,13.5 6.75,13.16 6.75,12.75 V 11.25 H 8.25 C 8.66,11.25 9,10.91 9,10.5 9,10.09 8.6601,9.75 8.25,9.75 H 6.75 V 8.25 C 6.75,7.84 6.41,7.5 6,7.5 5.59,7.5 5.25,7.84 5.25,8.25 V 9.75 H 3.75 C 3.34,9.75 3,10.09 3,10.5 3,10.91 3.34,11.25 3.75,11.25 Z - - - - M 17.81,18.75 L 19.81,16.75 C 20.01,16.56 20.09,16.28 20.02,16.02 C 19.96,15.75 19.75,15.54 19.48,15.47 C 19.22,15.41 18.94,15.49 18.75,15.69 L 16.75,17.69 L 14.75,15.69 C 14.56,15.49 14.28,15.41 14.02,15.47 C 13.75,15.54 13.54,15.75 13.47,16.02 C 13.41,16.28 13.49,16.56 13.69,16.75 L 15.69,18.75 L 13.69,20.75 C 13.4,21.04 13.4,21.52 13.69,21.81 C 13.98,22.1 14.46,22.1 14.75,21.81 L 16.75,19.81 L 18.75,21.81 C 19.04,22.1 19.52,22.1 19.81,21.81 C 20.1,21.52 20.1,21.04 19.81,20.75 Z - - - 10.5 - 11 - diff --git a/packages/overlays/IconPackCircularLauncherOverlay/Android.bp b/packages/overlays/IconPackCircularLauncherOverlay/Android.bp deleted file mode 100644 index 4f8b6637a2b5f..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackCircularLauncherOverlay", - theme: "IconPackCircularLauncher", - product_specific: true, -} diff --git a/packages/overlays/IconPackCircularLauncherOverlay/AndroidManifest.xml b/packages/overlays/IconPackCircularLauncherOverlay/AndroidManifest.xml deleted file mode 100644 index 0b69ecaf96feb..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_corp.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_corp.xml deleted file mode 100644 index a05a38996ed89..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_corp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_corp_off.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_corp_off.xml deleted file mode 100644 index a8102519361bd..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_corp_off.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 5e640bab83924..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_hourglass_top.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_hourglass_top.xml deleted file mode 100644 index 14c6603040f6a..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_hourglass_top.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_info_no_shadow.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_info_no_shadow.xml deleted file mode 100644 index 730f1eacab989..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_info_no_shadow.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_install_no_shadow.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_install_no_shadow.xml deleted file mode 100644 index 41b6338f7d86d..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_install_no_shadow.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_palette.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_palette.xml deleted file mode 100644 index e086ebd95cf78..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_palette.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_pin.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_pin.xml deleted file mode 100644 index 86b4318e8ccbb..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_pin.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_remove_no_shadow.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_remove_no_shadow.xml deleted file mode 100644 index f73989127dd57..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_remove_no_shadow.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index e8608a598fbfa..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_select.xml deleted file mode 100644 index 0f375610865d3..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_select.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_setting.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_setting.xml deleted file mode 100644 index f1f0f507d4b9a..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_setting.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_share.xml deleted file mode 100644 index 726d1aa5e1c2b..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_share.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_smartspace_preferences.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_smartspace_preferences.xml deleted file mode 100644 index 0717cf99847cb..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_smartspace_preferences.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_split_screen.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_split_screen.xml deleted file mode 100644 index af5cb0553a1a3..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_split_screen.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml deleted file mode 100644 index 955f5aa70a6ff..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_warning.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_warning.xml deleted file mode 100644 index 035d9d416e61a..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_warning.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_widget.xml b/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_widget.xml deleted file mode 100644 index fcddfc36f9394..0000000000000 --- a/packages/overlays/IconPackCircularLauncherOverlay/res/drawable/ic_widget.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/Android.bp b/packages/overlays/IconPackCircularSettingsOverlay/Android.bp deleted file mode 100644 index 93220c87dcf9a..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackCircularSettingsOverlay", - theme: "IconPackCircularSettings", - product_specific: true, -} diff --git a/packages/overlays/IconPackCircularSettingsOverlay/AndroidManifest.xml b/packages/overlays/IconPackCircularSettingsOverlay/AndroidManifest.xml deleted file mode 100644 index c1a56985a4fd6..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/drag_handle.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/drag_handle.xml deleted file mode 100644 index 03f7de774a3ad..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/drag_handle.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_add_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_add_24dp.xml deleted file mode 100644 index e0fbaf1c108ec..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_add_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_airplanemode_active.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_airplanemode_active.xml deleted file mode 100644 index 530fe66820a12..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_airplanemode_active.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_android.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_android.xml deleted file mode 100644 index 23f607532a78a..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_android.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_apps.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_apps.xml deleted file mode 100644 index 95c08678ca9ad..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_apps.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_back.xml deleted file mode 100644 index a9e1ffe6d69e4..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml deleted file mode 100644 index 6419515cc5946..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_charging_full.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_charging_full.xml deleted file mode 100644 index 34dda4e91010f..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_charging_full.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml deleted file mode 100644 index ab1a240756bb2..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml deleted file mode 100644 index 4f4b15258f1d7..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_call_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_call_24dp.xml deleted file mode 100644 index 42d975b6564e6..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_call_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cancel.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cancel.xml deleted file mode 100644 index 4f4e9a679d492..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cancel.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cast_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cast_24dp.xml deleted file mode 100644 index cbd266c46590c..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cast_24dp.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ 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 deleted file mode 100644 index 6df47564407e2..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_cellular_off.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml deleted file mode 100644 index 82df1de6211c7..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file 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 deleted file mode 100644 index b8e9845d5039a..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index ba3c5808d26cd..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_delete.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_delete.xml deleted file mode 100644 index 35453a938e2e6..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_delete.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ 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 deleted file mode 100644 index 454b2e2603343..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other_32dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other_32dp.xml deleted file mode 100644 index f0754ed062533..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_devices_other_32dp.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml deleted file mode 100644 index 87d82e58cd67a..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_eject_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_eject_24dp.xml deleted file mode 100644 index abbab51e90e17..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_eject_24dp.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_expand_less.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_expand_less.xml deleted file mode 100644 index 402883f7be01f..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_expand_less.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_expand_more_inverse.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_expand_more_inverse.xml deleted file mode 100644 index bd04de971d7c7..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_expand_more_inverse.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file 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 deleted file mode 100644 index fd1a00dc738b0..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_find_in_page_24px.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml deleted file mode 100644 index 52cd4c1c7153b..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_friction_lock_closed.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_friction_lock_closed.xml deleted file mode 100644 index f0734d2c4a9fc..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_friction_lock_closed.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml deleted file mode 100644 index 4e5497a76991b..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_headset_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_headset_24dp.xml deleted file mode 100644 index cf620c4ddbdd3..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_headset_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help.xml deleted file mode 100644 index 4e99add13424e..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ 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 deleted file mode 100644 index b980a2cce7108..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_help_actionbar.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_homepage_search.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_homepage_search.xml deleted file mode 100644 index d9de63a96957a..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_homepage_search.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_info_outline_24.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_info_outline_24.xml deleted file mode 100644 index 2de16c98d2505..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_info_outline_24.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_local_movies.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_local_movies.xml deleted file mode 100644 index 5b0e442ee60e5..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_local_movies.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml deleted file mode 100644 index 3aea5f44902b6..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_lock.xml deleted file mode 100644 index 57b9ae09ef9d7..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_lock.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_media_stream.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_media_stream.xml deleted file mode 100644 index 2497769ed745a..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_media_stream.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_media_stream_off.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_media_stream_off.xml deleted file mode 100644 index 3e8915ca6e02d..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_media_stream_off.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_network_cell.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_network_cell.xml deleted file mode 100644 index 1d72e5fa284f0..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_network_cell.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications.xml deleted file mode 100644 index 7530e3f9b21e2..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index e66d9204769d5..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ 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 deleted file mode 100644 index 2a21776232b42..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_phone_info.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_phone_info.xml deleted file mode 100644 index 1cafbfe562c90..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_phone_info.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_photo_library.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_photo_library.xml deleted file mode 100644 index 1c461791c8680..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_photo_library.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_scan_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_scan_24dp.xml deleted file mode 100644 index f160fe9cdd1e0..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_scan_24dp.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_search_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_search_24dp.xml deleted file mode 100644 index c27e80ebc8a60..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_search_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accent.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accent.xml deleted file mode 100644 index e10898feaf7bc..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accent.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accessibility.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accessibility.xml deleted file mode 100644 index 4c57d8db3a2fc..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accessibility.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accounts.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accounts.xml deleted file mode 100644 index c63ec5b914184..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_accounts.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_backup.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_backup.xml deleted file mode 100644 index b46a7f172d110..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_backup.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_battery_white.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_battery_white.xml deleted file mode 100644 index 780fa2ee42411..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_battery_white.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_data_usage.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_data_usage.xml deleted file mode 100644 index 855e4bb2a39da..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_data_usage.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_date_time.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_date_time.xml deleted file mode 100644 index bfabc4509e867..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_date_time.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_delete.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_delete.xml deleted file mode 100644 index a87186bf29666..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_delete.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_disable.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_disable.xml deleted file mode 100644 index 0572fb72f82e8..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_disable.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_display_white.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_display_white.xml deleted file mode 100644 index 8dabc535d4e89..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_display_white.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_enable.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_enable.xml deleted file mode 100644 index 41962b27b2702..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_enable.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_home.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_home.xml deleted file mode 100644 index c9ddc2bb427a4..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_home.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ 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 deleted file mode 100644 index 2c83c3481ba4d..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_language.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_location.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_location.xml deleted file mode 100644 index 32234a1a28f14..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_location.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_multiuser.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_multiuser.xml deleted file mode 100644 index d6d655871b746..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_multiuser.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_night_display.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_night_display.xml deleted file mode 100644 index 4bd1946b57b6e..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_night_display.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_open.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_open.xml deleted file mode 100644 index 6e919c466572d..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_open.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_print.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_print.xml deleted file mode 100644 index 77dfad94cb462..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_print.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_privacy.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_privacy.xml deleted file mode 100644 index 86b9a1d99f6ac..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_privacy.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_security_white.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_security_white.xml deleted file mode 100644 index 6fc58fa2533ae..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_security_white.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_sim.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_sim.xml deleted file mode 100644 index 415d057a2fc0d..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_sim.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml deleted file mode 100644 index 67ddf46439e63..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_wireless.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_wireless.xml deleted file mode 100644 index 91670fca1be07..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_settings_wireless.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_storage.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_storage.xml deleted file mode 100644 index 5d666924120e0..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_storage.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_storage_white.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_storage_white.xml deleted file mode 100644 index 807c3bf3e5338..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_storage_white.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_suggestion_night_display.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_suggestion_night_display.xml deleted file mode 100644 index 4bd1946b57b6e..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_suggestion_night_display.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_sync.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_sync.xml deleted file mode 100644 index e8f5e8616162d..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_sync.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml deleted file mode 100644 index a0233ba8acc9a..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_system_update.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_system_update.xml deleted file mode 100644 index c2fd678dba68e..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_system_update.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml deleted file mode 100644 index 18c03328ff0ad..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 2bbb8ace52e74..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_volume_up_24dp.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_volume_up_24dp.xml deleted file mode 100644 index 1a0613712df50..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_volume_up_24dp.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_vpn_key.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_vpn_key.xml deleted file mode 100644 index b4c4fecc86875..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_vpn_key.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_wifi_tethering.xml b/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_wifi_tethering.xml deleted file mode 100644 index be2b350728b79..0000000000000 --- a/packages/overlays/IconPackCircularSettingsOverlay/res/drawable/ic_wifi_tethering.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/Android.bp b/packages/overlays/IconPackCircularSystemUIOverlay/Android.bp deleted file mode 100644 index 4eaa4205fe96f..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackCircularSystemUIOverlay", - theme: "IconPackCircularSystemUI", - product_specific: true, -} diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/AndroidManifest.xml b/packages/overlays/IconPackCircularSystemUIOverlay/AndroidManifest.xml deleted file mode 100644 index 356b7e28395eb..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_alarm.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_alarm.xml deleted file mode 100644 index 2d7fc4d916578..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_alarm_dim.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_alarm_dim.xml deleted file mode 100644 index 2d7fc4d916578..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_alarm_dim.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ 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 deleted file mode 100644 index a9e1ffe6d69e4..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml deleted file mode 100644 index 66963b7fb838e..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_brightness_thumb.xml deleted file mode 100644 index fae73a4c0e092..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_brightness_thumb.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_camera.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_camera.xml deleted file mode 100644 index 77197a58a04ae..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_camera.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast.xml deleted file mode 100644 index 05b490f781f7f..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast_connected.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast_connected.xml deleted file mode 100644 index a7547db2a8e54..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast_connected.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml deleted file mode 100644 index 18f81e76d5836..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_close_white.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_close_white.xml deleted file mode 100644 index ddfb980bea886..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_close_white.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index cdc3bfbd3d5ff..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ 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 deleted file mode 100644 index 7dab949f9da50..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_data_saver_off.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 950cb0c45cbbf..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_headset.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_headset.xml deleted file mode 100644 index a80fe92f26aba..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_headset.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_headset_mic.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_headset_mic.xml deleted file mode 100644 index bbbebb574aa1d..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_headset_mic.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_hotspot.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_hotspot.xml deleted file mode 100644 index 32929a807a087..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_hotspot.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_info.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_info.xml deleted file mode 100644 index 4adc9ce2923f9..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_info.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_info_outline.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_info_outline.xml deleted file mode 100644 index 4adc9ce2923f9..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_info_outline.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_invert_colors.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_invert_colors.xml deleted file mode 100644 index b2d086838c502..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_invert_colors.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_location.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_location.xml deleted file mode 100644 index ce07fc9959a2c..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_location.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index 4344e32a75aa0..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index 86863b3b6c987..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_notifications_silence.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_notifications_silence.xml deleted file mode 100644 index 09a3e881923d6..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_notifications_silence.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_power_low.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_power_low.xml deleted file mode 100644 index 8d8434fe14736..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_power_low.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_power_saver.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_power_saver.xml deleted file mode 100644 index a558337902c47..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_power_saver.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ 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 deleted file mode 100644 index c7a0266cbfca3..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml deleted file mode 100644 index 7d9489eca0374..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_cancel.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_cancel.xml deleted file mode 100644 index 4f4e9a679d492..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_cancel.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_no_sim.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_no_sim.xml deleted file mode 100644 index 585f6317e28bb..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_no_sim.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml deleted file mode 100644 index 8fcf955e57091..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml deleted file mode 100644 index d746348cdccb9..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml deleted file mode 100644 index b17aa3623e5a7..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml deleted file mode 100644 index 661950a48b276..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml deleted file mode 100644 index 41779c67a1e95..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml deleted file mode 100644 index 6582aaf7eeb81..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenrecord.xml deleted file mode 100644 index a875a23c3a172..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenrecord.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenshot_delete.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenshot_delete.xml deleted file mode 100644 index a87186bf29666..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_screenshot_delete.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_settings.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_settings.xml deleted file mode 100644 index 4c9b5d7b1c48a..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_settings.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_settings_16dp.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_settings_16dp.xml deleted file mode 100644 index 12c4e35e4e0a5..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_settings_16dp.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_swap_vert.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_swap_vert.xml deleted file mode 100644 index e7f2e4c4a08c7..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_swap_vert.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml deleted file mode 100644 index ffeb16322b0fa..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm.xml deleted file mode 100644 index 870d3a08907e7..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml deleted file mode 100644 index 9bdc79a230086..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml deleted file mode 100644 index 25fb5f789ad92..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_media.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_media.xml deleted file mode 100644 index 2497769ed745a..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_media.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_media_mute.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_media_mute.xml deleted file mode 100644 index 3e8915ca6e02d..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_media_mute.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml deleted file mode 100644 index e210bcb04849a..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml deleted file mode 100644 index 660f64a8cead4..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer.xml deleted file mode 100644 index 7530e3f9b21e2..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml deleted file mode 100644 index 2dc6545c0fe3d..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 533d886d01883..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_voice.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_voice.xml deleted file mode 100644 index 3aea5f44902b6..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/ic_volume_voice.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_camera.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_camera.xml deleted file mode 100644 index c4728eb3f3890..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_camera.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml deleted file mode 100644 index 488d15ae9deec..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_mic_none.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_mic_none.xml deleted file mode 100644 index 3869e7f4d2d9b..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_mic_none.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml b/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml deleted file mode 100644 index 0cb5c7c6748e4..0000000000000 --- a/packages/overlays/IconPackCircularSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/Android.bp b/packages/overlays/IconPackCircularThemePickerOverlay/Android.bp deleted file mode 100644 index 5105b79319220..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/Android.bp +++ /dev/null @@ -1,31 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackCircularThemePickerOverlay", - theme: "IconPackCircularThemePicker", - certificate: "platform", - product_specific: true, -} diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/AndroidManifest.xml b/packages/overlays/IconPackCircularThemePickerOverlay/AndroidManifest.xml deleted file mode 100644 index f7c5b550b193c..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_add_24px.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_add_24px.xml deleted file mode 100644 index 900aaa0371b42..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_add_24px.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_close_24px.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_close_24px.xml deleted file mode 100644 index ddfb980bea886..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_close_24px.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_colorize_24px.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_colorize_24px.xml deleted file mode 100644 index f572af605268e..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_colorize_24px.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_delete_24px.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_delete_24px.xml deleted file mode 100644 index a87186bf29666..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_delete_24px.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_font.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_font.xml deleted file mode 100644 index edaf3c7e0b42a..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_font.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_clock.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_clock.xml deleted file mode 100644 index 2884d71cefea5..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_clock.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_grid.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_grid.xml deleted file mode 100644 index d50dbd4e0cace..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_grid.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_theme.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_theme.xml deleted file mode 100644 index 7375bc9316653..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_theme.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml deleted file mode 100644 index bdb74424c82e8..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_shapes_24px.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_shapes_24px.xml deleted file mode 100644 index b7e6bf9e9a125..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_shapes_24px.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_tune.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_tune.xml deleted file mode 100644 index 9c8821152466b..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_tune.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_wifi_24px.xml b/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_wifi_24px.xml deleted file mode 100644 index fde996584f572..0000000000000 --- a/packages/overlays/IconPackCircularThemePickerOverlay/res/drawable/ic_wifi_24px.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/Android.bp b/packages/overlays/IconPackFilledAndroidOverlay/Android.bp deleted file mode 100644 index 3c4025d6026ca..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackFilledAndroidOverlay", - theme: "IconPackFilledAndroid", - product_specific: true, -} diff --git a/packages/overlays/IconPackFilledAndroidOverlay/AndroidManifest.xml b/packages/overlays/IconPackFilledAndroidOverlay/AndroidManifest.xml deleted file mode 100644 index 6613407ea5b9a..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_audio_alarm.xml deleted file mode 100644 index ee77bd1e6cd29..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_audio_alarm.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml deleted file mode 100644 index e498f803f6871..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_battery_80_24dp.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_battery_80_24dp.xml deleted file mode 100644 index eb8550fb9f442..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_battery_80_24dp.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml deleted file mode 100644 index 8ff3c1cf06f55..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml deleted file mode 100644 index bd5aefac7187a..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml deleted file mode 100644 index 4b98a0f92706a..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml deleted file mode 100644 index 1924ba8fd4218..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml deleted file mode 100644 index 26527ead9cc45..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml deleted file mode 100644 index 562ed17ae1ec6..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_laptop.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_laptop.xml deleted file mode 100644 index 464658b53b279..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_laptop.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ 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 deleted file mode 100644 index 6b9735c1acfb3..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_misc_hid.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_network_pan.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_network_pan.xml deleted file mode 100644 index 59a18bad6c664..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_network_pan.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml deleted file mode 100644 index a05cf658b2ece..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_corp_badge.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_corp_badge.xml deleted file mode 100644 index 1eba6a49a0347..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_corp_badge.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_expand_more.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_expand_more.xml deleted file mode 100644 index 82436f52dd4ac..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_expand_more.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_faster_emergency.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_faster_emergency.xml deleted file mode 100644 index cf9166a7a70fa..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_faster_emergency.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_file_copy.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_file_copy.xml deleted file mode 100644 index e479f506bac5c..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_file_copy.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml deleted file mode 100644 index eb2345204e7c3..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml deleted file mode 100644 index 317126228e34e..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_info_outline_24.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_info_outline_24.xml deleted file mode 100644 index ce233b7f26143..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_info_outline_24.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock.xml deleted file mode 100644 index b2fa85f9fd160..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_bugreport.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_bugreport.xml deleted file mode 100644 index bea2b9ebe97f0..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_bugreport.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_open.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_open.xml deleted file mode 100644 index 13bfbf901adbe..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_open.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_power_off.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_power_off.xml deleted file mode 100644 index e9da50e597bf4..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lock_power_off.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index 16541e6149657..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_mode_edit.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_mode_edit.xml deleted file mode 100644 index bb3c043f68f57..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_mode_edit.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_notifications_alerted.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_notifications_alerted.xml deleted file mode 100644 index 0847a35649981..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_notifications_alerted.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ 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 deleted file mode 100644 index adf521c853ae8..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_phone.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_airplane.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_airplane.xml deleted file mode 100644 index 52178649cd62d..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_airplane.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml deleted file mode 100644 index aa938b4c6b87b..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_battery_saver.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_battery_saver.xml deleted file mode 100644 index 4f7d96381e6e5..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_battery_saver.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_bluetooth.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_bluetooth.xml deleted file mode 100644 index 18a60d82faedf..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_bluetooth.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_dnd.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_dnd.xml deleted file mode 100644 index 0655ac0b12b93..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_dnd.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_flashlight.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_flashlight.xml deleted file mode 100644 index c0bcb68b54dc6..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_flashlight.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_night_display_on.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_night_display_on.xml deleted file mode 100644 index 8eaddd542f763..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_night_display_on.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml deleted file mode 100644 index 5eea8895aaa1b..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_restart.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_restart.xml deleted file mode 100644 index e4780d97044c9..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_restart.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index e98d2c03e1daf..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_settings_bluetooth.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_settings_bluetooth.xml deleted file mode 100644 index 18a60d82faedf..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_settings_bluetooth.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml deleted file mode 100644 index 560309ec69457..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml deleted file mode 100644 index 560309ec69457..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml deleted file mode 100644 index 6f6ecaf22e898..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml deleted file mode 100644 index f986c489ee02e..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml deleted file mode 100644 index 876cd0320f032..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml deleted file mode 100644 index d6b61c86a74f7..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml deleted file mode 100644 index 883740f858365..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml deleted file mode 100644 index 8ca2eb6c61d93..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml deleted file mode 100644 index fe2f04e6fd912..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml deleted file mode 100644 index 350b1b596d70f..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml deleted file mode 100644 index fe2f04e6fd912..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_location.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_location.xml deleted file mode 100644 index ecab3a3d9b219..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_location.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml deleted file mode 100644 index 1407d0f1004b0..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml deleted file mode 100644 index 12092cb77cc5b..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_0.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_0.xml deleted file mode 100644 index 679651998d230..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_0.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_1.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_1.xml deleted file mode 100644 index 5067e876e5c25..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_1.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_2.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_2.xml deleted file mode 100644 index 1e8546a6df8e3..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_2.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_3.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_3.xml deleted file mode 100644 index 1a87f764c7ec3..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_3.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_4.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_4.xml deleted file mode 100644 index 325f2dd36cc2e..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/ic_wifi_signal_4.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_activity_recognition.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_activity_recognition.xml deleted file mode 100644 index 67d28c60b7a0b..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_activity_recognition.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_aural.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_aural.xml deleted file mode 100644 index 3f5c75b66f4cd..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_aural.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_calendar.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_calendar.xml deleted file mode 100644 index 0144ba2fbf36c..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_calendar.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_call_log.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_call_log.xml deleted file mode 100644 index 590ced09e4af2..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_call_log.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_camera.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_camera.xml deleted file mode 100644 index b063e2bb69854..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_camera.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_contacts.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_contacts.xml deleted file mode 100644 index 54cfeec0355ed..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_contacts.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_location.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_location.xml deleted file mode 100644 index 3815921846b7f..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_location.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_microphone.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_microphone.xml deleted file mode 100644 index e6493bc95ff2c..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_microphone.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_phone_calls.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_phone_calls.xml deleted file mode 100644 index ae84541e08019..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_phone_calls.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sensors.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sensors.xml deleted file mode 100644 index 88f0c541caf5c..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sensors.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml deleted file mode 100644 index 7a320e0c81e27..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_sms.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_storage.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_storage.xml deleted file mode 100644 index 0ad7e6d3484b1..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_storage.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_visual.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_visual.xml deleted file mode 100644 index d5bdb872825ec..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/drawable/perm_group_visual.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledAndroidOverlay/res/values/config.xml b/packages/overlays/IconPackFilledAndroidOverlay/res/values/config.xml deleted file mode 100644 index f1d8c73453966..0000000000000 --- a/packages/overlays/IconPackFilledAndroidOverlay/res/values/config.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - M 4,0 V 2 H 2.33 C 1.6,2 1,2.6 1,3.33 V 18.66 C 1,19.4 1.6,20 2.33,20 H 9.66 C 10.4,20 11,19.4 11,18.67 V 3.33 C 11,2.6 10.4,2 9.67,2 H 8 V 0 Z - - - M 3.5,0 V 0.5 1.5 H 2.3301 C 1.3261,1.5 0.5,2.3261 0.5,3.3301 V 18.16 C 0.5,19.17 1.3261,20 2.3301,20 H 9.6602 C 10.67,20 11.5,19.174 11.5,18.17 V 3.3301 C 11.5,2.3261 10.674,1.5 9.6699,1.5 H 8.5 V 0 Z M 9.1698,2.9999 C 9.6259,2.9999 9.9999,3.374 9.9999,3.83 V 17.67 C 9.9999,18.126 9.6299,18.5 9.1601,18.5 H 2.83 C 2.3741,18.5 2,18.13 2,17.66 V 3.83 C 2,3.374 2.3741,2.9999 2.83,2.9999 Z - - - M 4,0 V 2 H 2.33 C 1.6,2 1,2.6 1,3.33 V 18.66 C 1,19.4 1.6,20 2.33,20 H 9.66 C 10.4,20 11,19.4 11,18.67 V 3.33 C 11,2.6 10.4,2 9.67,2 H 8 V 0 Z - - - M 8.58,10 C 8.77,10 8.89,10.2 8.8,10.37 L 5.94,15.74 C 5.7,16.19 5,16.02 5,15.5 V 12 H 3.42 C 3.23,12 3.11,11.8 3.2,11.63 L 6.06,6.26 C 6.3,5.81 7,5.98 7,6.5 V 10 Z - - - M 9,11 C 9,11.55 8.55,12 8,12 H 7 V 13 C 7,13.55 6.55,14 6,14 5.45,14 5,13.55 5,13 V 12 H 4 C 3.45,12 3,11.55 3,11 3,10.45 3.45,10.005 4,10 H 5 V 9 C 5,8.45 5.45,8 6,8 6.55,8 7,8.45 7,9 V 10 H 8 C 8.55,10 9,10.45 9,11 Z - - true - - - M 21.7,20.28 L 19.92,18.5 L 21.7,16.72 C 22.1,16.32 22.1,15.68 21.71,15.29 C 21.32,14.9 20.68,14.9 20.28,15.3 L 18.5,17.08 L 16.72,15.3 C 16.32,14.9 15.68,14.9 15.29,15.29 C 14.9,15.68 14.9,16.32 15.3,16.72 L 17.08,18.5 L 15.3,20.28 C 14.9,20.68 14.9,21.32 15.29,21.71 C 15.68,22.1 16.32,22.1 16.72,21.7 L 18.5,19.92 L 20.28,21.7 C 20.68,22.1 21.32,22.1 21.71,21.71 C 22.1,21.32 22.1,20.68 21.7,20.28 - - - 11 - 11 - diff --git a/packages/overlays/IconPackFilledLauncherOverlay/Android.bp b/packages/overlays/IconPackFilledLauncherOverlay/Android.bp deleted file mode 100644 index 3c5078ce59335..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackFilledLauncherOverlay", - theme: "IconPackFilledLauncher", - product_specific: true, -} diff --git a/packages/overlays/IconPackFilledLauncherOverlay/AndroidManifest.xml b/packages/overlays/IconPackFilledLauncherOverlay/AndroidManifest.xml deleted file mode 100644 index 0b9f636931c05..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_corp.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_corp.xml deleted file mode 100644 index 0dfaf8188f8d4..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_corp.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_corp_off.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_corp_off.xml deleted file mode 100644 index b3f353a169437..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_corp_off.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 1e14a3b8195dc..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_hourglass_top.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_hourglass_top.xml deleted file mode 100644 index b90019c9489a2..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_hourglass_top.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_info_no_shadow.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_info_no_shadow.xml deleted file mode 100644 index dd095ab801b44..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_info_no_shadow.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_install_no_shadow.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_install_no_shadow.xml deleted file mode 100644 index 2855bfc9caa7e..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_install_no_shadow.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_palette.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_palette.xml deleted file mode 100644 index 7e7094272529f..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_palette.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_pin.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_pin.xml deleted file mode 100644 index 80232d887001e..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_pin.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_remove_no_shadow.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_remove_no_shadow.xml deleted file mode 100644 index f9532a1159df4..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_remove_no_shadow.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index 1d291c93fb4d6..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_select.xml deleted file mode 100644 index 51d4a1183fb91..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_select.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_setting.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_setting.xml deleted file mode 100644 index b3625ac9cf155..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_setting.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_share.xml deleted file mode 100644 index 89ee5274e48f0..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_share.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_smartspace_preferences.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_smartspace_preferences.xml deleted file mode 100644 index e0b39fc41b1f0..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_smartspace_preferences.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_split_screen.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_split_screen.xml deleted file mode 100644 index c2c7ede6f7969..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_split_screen.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml deleted file mode 100644 index b7cc52a96ebea..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_warning.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_warning.xml deleted file mode 100644 index 697f5d832d383..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_warning.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_widget.xml b/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_widget.xml deleted file mode 100644 index 329c0d65f467f..0000000000000 --- a/packages/overlays/IconPackFilledLauncherOverlay/res/drawable/ic_widget.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/Android.bp b/packages/overlays/IconPackFilledSettingsOverlay/Android.bp deleted file mode 100644 index b5148c23e0536..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackFilledSettingsOverlay", - theme: "IconPackFilledSettings", - product_specific: true, -} diff --git a/packages/overlays/IconPackFilledSettingsOverlay/AndroidManifest.xml b/packages/overlays/IconPackFilledSettingsOverlay/AndroidManifest.xml deleted file mode 100644 index de81e21a8bcaf..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/drag_handle.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/drag_handle.xml deleted file mode 100644 index 413e9b9e46870..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/drag_handle.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_add_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_add_24dp.xml deleted file mode 100644 index ec1167f83a74e..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_add_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_airplanemode_active.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_airplanemode_active.xml deleted file mode 100644 index e853e072180f2..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_airplanemode_active.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_android.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_android.xml deleted file mode 100644 index afa84e43a2262..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_android.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_apps.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_apps.xml deleted file mode 100644 index 74b13fd4c1ece..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_apps.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_back.xml deleted file mode 100644 index deb77c820ecb5..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml deleted file mode 100644 index 82436f52dd4ac..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_charging_full.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_charging_full.xml deleted file mode 100644 index 6778b04568442..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_charging_full.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml deleted file mode 100644 index 0cd743b469989..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml deleted file mode 100644 index 15b8279bb012e..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_call_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_call_24dp.xml deleted file mode 100644 index b3d54051f5b02..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_call_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cancel.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cancel.xml deleted file mode 100644 index 2a668cb3c4def..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cancel.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cast_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cast_24dp.xml deleted file mode 100644 index 5ab76eb54363f..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cast_24dp.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cellular_off.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cellular_off.xml deleted file mode 100644 index 466ae50cb46aa..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_cellular_off.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml deleted file mode 100644 index b5b514a57e9da..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file 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 deleted file mode 100644 index e479f506bac5c..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index 5c85eb36b41c9..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_delete.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_delete.xml deleted file mode 100644 index 6f92fed79e487..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_delete.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other.xml deleted file mode 100644 index 33a4b29aba00a..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other_32dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other_32dp.xml deleted file mode 100644 index c78050eeab0e7..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_devices_other_32dp.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml deleted file mode 100644 index b4baf231d1b61..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_eject_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_eject_24dp.xml deleted file mode 100644 index 7af92461d3f9e..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_eject_24dp.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_expand_less.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_expand_less.xml deleted file mode 100644 index 7721ad625c4e1..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_expand_less.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_expand_more_inverse.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_expand_more_inverse.xml deleted file mode 100644 index 4c4967befbb3b..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_expand_more_inverse.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file 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 deleted file mode 100644 index dd35dae227b06..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_find_in_page_24px.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml deleted file mode 100644 index 0ad7e6d3484b1..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_friction_lock_closed.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_friction_lock_closed.xml deleted file mode 100644 index 34e0ba1ee1b28..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_friction_lock_closed.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml deleted file mode 100644 index 6b5903c569c04..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_headset_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_headset_24dp.xml deleted file mode 100644 index 1924ba8fd4218..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_headset_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help.xml deleted file mode 100644 index 42854a4777d20..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ 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 deleted file mode 100644 index 4d6d9dd0a9e50..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_help_actionbar.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_homepage_search.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_homepage_search.xml deleted file mode 100644 index 58cc0b461164b..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_homepage_search.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_info_outline_24.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_info_outline_24.xml deleted file mode 100644 index 39907123f2213..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_info_outline_24.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_local_movies.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_local_movies.xml deleted file mode 100644 index 7031634c76928..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_local_movies.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml deleted file mode 100644 index ae84541e08019..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_lock.xml deleted file mode 100644 index 39b62c0975444..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_lock.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_media_stream.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_media_stream.xml deleted file mode 100644 index 0422d8e904a3f..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_media_stream.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_media_stream_off.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_media_stream_off.xml deleted file mode 100644 index e3a4e24a04da1..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_media_stream_off.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_network_cell.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_network_cell.xml deleted file mode 100644 index d62758e51976c..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_network_cell.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications.xml deleted file mode 100644 index 71dfb13f8006c..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index 2f5bdb0ecbe39..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml deleted file mode 100644 index c6cd0159854e5..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_phone_info.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_phone_info.xml deleted file mode 100644 index e932b9b88a0f8..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_phone_info.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_photo_library.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_photo_library.xml deleted file mode 100644 index d5bdb872825ec..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_photo_library.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_scan_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_scan_24dp.xml deleted file mode 100644 index 146e20fc68d00..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_scan_24dp.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_search_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_search_24dp.xml deleted file mode 100644 index 30d47963b2713..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_search_24dp.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accent.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accent.xml deleted file mode 100644 index f2741d19b2e59..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accent.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accessibility.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accessibility.xml deleted file mode 100644 index db456387f3698..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accessibility.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accounts.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accounts.xml deleted file mode 100644 index 0d4a244e70403..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_accounts.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_backup.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_backup.xml deleted file mode 100644 index 9087b969d196b..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_backup.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_battery_white.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_battery_white.xml deleted file mode 100644 index bb1138831db75..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_battery_white.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_data_usage.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_data_usage.xml deleted file mode 100644 index f6b837e94bba9..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_data_usage.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_date_time.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_date_time.xml deleted file mode 100644 index 96cbbf116ac66..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_date_time.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_delete.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_delete.xml deleted file mode 100644 index 94c63118cf763..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_delete.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_disable.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_disable.xml deleted file mode 100644 index b816e4e838fe9..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_disable.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_display_white.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_display_white.xml deleted file mode 100644 index 2c931e48fa156..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_display_white.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_enable.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_enable.xml deleted file mode 100644 index d0b6209b38ad5..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_enable.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_home.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_home.xml deleted file mode 100644 index 85430f020b2cb..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_home.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_language.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_language.xml deleted file mode 100644 index e23b9b6ebf58f..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_language.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_location.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_location.xml deleted file mode 100644 index 8732ea5cb99dc..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_location.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ 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 deleted file mode 100644 index accc694238d91..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_multiuser.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_night_display.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_night_display.xml deleted file mode 100644 index b5456ac30b9e8..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_night_display.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_open.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_open.xml deleted file mode 100644 index 890fcf75c764b..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_open.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_print.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_print.xml deleted file mode 100644 index b9d6d9ab2922e..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_print.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_privacy.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_privacy.xml deleted file mode 100644 index 2ebdc8f3fc961..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_privacy.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_security_white.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_security_white.xml deleted file mode 100644 index ecaed01a945f2..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_security_white.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_sim.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_sim.xml deleted file mode 100644 index b58d034827da5..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_sim.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml deleted file mode 100644 index 659a926bf7a34..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_wireless.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_wireless.xml deleted file mode 100644 index 6e80d1349fc27..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_settings_wireless.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_storage.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_storage.xml deleted file mode 100644 index ab2186deb3e87..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_storage.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_storage_white.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_storage_white.xml deleted file mode 100644 index 9eb336c441412..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_storage_white.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_suggestion_night_display.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_suggestion_night_display.xml deleted file mode 100644 index b5456ac30b9e8..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_suggestion_night_display.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_sync.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_sync.xml deleted file mode 100644 index 27954a983b99c..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_sync.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml deleted file mode 100644 index f2dd9e818fc40..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_system_update.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_system_update.xml deleted file mode 100644 index 149564cebd0c4..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_system_update.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml deleted file mode 100644 index 45c23d7d81e5f..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 552e8a920f69b..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_volume_up_24dp.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_volume_up_24dp.xml deleted file mode 100644 index b94035100e403..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_volume_up_24dp.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_vpn_key.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_vpn_key.xml deleted file mode 100644 index f9f558460a9bf..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_vpn_key.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_wifi_tethering.xml b/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_wifi_tethering.xml deleted file mode 100644 index c8bcd52899d53..0000000000000 --- a/packages/overlays/IconPackFilledSettingsOverlay/res/drawable/ic_wifi_tethering.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/Android.bp b/packages/overlays/IconPackFilledSystemUIOverlay/Android.bp deleted file mode 100644 index eb040a5a132d8..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackFilledSystemUIOverlay", - theme: "IconPackFilledSystemUI", - product_specific: true, -} diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/AndroidManifest.xml b/packages/overlays/IconPackFilledSystemUIOverlay/AndroidManifest.xml deleted file mode 100644 index a1210c7243417..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_alarm.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_alarm.xml deleted file mode 100644 index 426a3033f8c5d..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_alarm_dim.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_alarm_dim.xml deleted file mode 100644 index 426a3033f8c5d..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_alarm_dim.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ 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 deleted file mode 100644 index deb77c820ecb5..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml deleted file mode 100644 index 6881b393737d9..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_brightness_thumb.xml deleted file mode 100644 index 1b881eac9fc22..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_brightness_thumb.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ 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 deleted file mode 100644 index fac551cf4a632..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_camera.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast.xml deleted file mode 100644 index c13bcf9ef7d67..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected.xml deleted file mode 100644 index bbe2cff627203..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml deleted file mode 100644 index 1b21db0d95d04..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_close_white.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_close_white.xml deleted file mode 100644 index 4bfff2cb3ad81..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_close_white.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index 28b8ba1bccfc8..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver_off.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver_off.xml deleted file mode 100644 index 5bb56f452141e..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_data_saver_off.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 824ad49d441ec..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_headset.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_headset.xml deleted file mode 100644 index 1b0f2525d19a6..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_headset.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_headset_mic.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_headset_mic.xml deleted file mode 100644 index 57ad6f07bd624..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_headset_mic.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_hotspot.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_hotspot.xml deleted file mode 100644 index 616b4f75dc2d6..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_hotspot.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_info.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_info.xml deleted file mode 100644 index ce233b7f26143..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_info.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_info_outline.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_info_outline.xml deleted file mode 100644 index ce233b7f26143..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_info_outline.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_invert_colors.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_invert_colors.xml deleted file mode 100644 index 24ec6e55de5fe..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_invert_colors.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_location.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_location.xml deleted file mode 100644 index fd68b1759bdeb..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_location.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index 4cd05f3374c96..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index 0847a35649981..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_notifications_silence.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_notifications_silence.xml deleted file mode 100644 index 73ab8f382c3dc..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_notifications_silence.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_power_low.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_power_low.xml deleted file mode 100644 index 15b8279bb012e..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_power_low.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_power_saver.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_power_saver.xml deleted file mode 100644 index 22e183c694d51..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_power_saver.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml deleted file mode 100644 index 59a18bad6c664..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml deleted file mode 100644 index 1342c3e5a517f..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_cancel.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_cancel.xml deleted file mode 100644 index 2a668cb3c4def..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_cancel.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_no_sim.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_no_sim.xml deleted file mode 100644 index e91f33b0c420b..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_no_sim.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml deleted file mode 100644 index 147b4b93bea06..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml deleted file mode 100644 index ea0ee5dfc282e..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml deleted file mode 100644 index e5412e2e9dd25..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml deleted file mode 100644 index c864952208fe3..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml deleted file mode 100644 index 33863d39b8e1f..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml deleted file mode 100644 index 4c9ff9d72009a..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenrecord.xml deleted file mode 100644 index 1a7c63c088944..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenrecord.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenshot_delete.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenshot_delete.xml deleted file mode 100644 index 94c63118cf763..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_screenshot_delete.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_settings.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_settings.xml deleted file mode 100644 index 30e8660956752..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_settings.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_settings_16dp.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_settings_16dp.xml deleted file mode 100644 index c78e533cae002..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_settings_16dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_swap_vert.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_swap_vert.xml deleted file mode 100644 index f19c6cdb4a89a..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_swap_vert.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml deleted file mode 100644 index d3b2dd1ac6033..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm.xml deleted file mode 100644 index e27c2edf09d0b..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml deleted file mode 100644 index e498f803f6871..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml deleted file mode 100644 index cbe7d8c427b4d..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_media.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_media.xml deleted file mode 100644 index 0422d8e904a3f..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_media.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_media_mute.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_media_mute.xml deleted file mode 100644 index e3a4e24a04da1..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_media_mute.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml deleted file mode 100644 index 42ef41cfe9c02..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml deleted file mode 100644 index f164ba8770969..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer.xml deleted file mode 100644 index 71dfb13f8006c..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml deleted file mode 100644 index 9944bb5b4f69a..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 9f8dbb7184f02..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_voice.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_voice.xml deleted file mode 100644 index ae84541e08019..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/ic_volume_voice.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_camera.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_camera.xml deleted file mode 100644 index ae3e7e2d60c6e..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_camera.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml deleted file mode 100644 index 10d6d3d2f18c2..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_mic_none.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_mic_none.xml deleted file mode 100644 index 4ce578bb23b91..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_mic_none.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml b/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml deleted file mode 100644 index ee48413b47b03..0000000000000 --- a/packages/overlays/IconPackFilledSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/Android.bp b/packages/overlays/IconPackFilledThemePickerOverlay/Android.bp deleted file mode 100644 index bee48089109b1..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/Android.bp +++ /dev/null @@ -1,31 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackFilledThemePickerOverlay", - theme: "IconPackFilledThemePicker", - certificate: "platform", - product_specific: true, -} diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/AndroidManifest.xml b/packages/overlays/IconPackFilledThemePickerOverlay/AndroidManifest.xml deleted file mode 100644 index 503a063ac8695..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_add_24px.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_add_24px.xml deleted file mode 100644 index 1768723b65e9a..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_add_24px.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_close_24px.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_close_24px.xml deleted file mode 100644 index 4bfff2cb3ad81..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_close_24px.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_colorize_24px.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_colorize_24px.xml deleted file mode 100644 index aa3a925b50c80..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_colorize_24px.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_delete_24px.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_delete_24px.xml deleted file mode 100644 index 94c63118cf763..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_delete_24px.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_font.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_font.xml deleted file mode 100644 index 760382385f794..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_font.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_clock.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_clock.xml deleted file mode 100644 index 11260159e3bd5..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_clock.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_grid.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_grid.xml deleted file mode 100644 index 0397b6c3744cd..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_grid.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_theme.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_theme.xml deleted file mode 100644 index 6f0462cd99329..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_theme.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml deleted file mode 100644 index ea195ca209e7b..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_shapes_24px.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_shapes_24px.xml deleted file mode 100644 index cea09b56dd1d2..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_shapes_24px.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_tune.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_tune.xml deleted file mode 100644 index ae03b51f70107..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_tune.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_wifi_24px.xml b/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_wifi_24px.xml deleted file mode 100644 index 03e142e2be359..0000000000000 --- a/packages/overlays/IconPackFilledThemePickerOverlay/res/drawable/ic_wifi_24px.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/Android.bp b/packages/overlays/IconPackKaiAndroidOverlay/Android.bp deleted file mode 100644 index ee588c1f1c55c..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (C) 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackKaiAndroidOverlay", - theme: "IconPackKaiAndroid", - product_specific: true, -} diff --git a/packages/overlays/IconPackKaiAndroidOverlay/AndroidManifest.xml b/packages/overlays/IconPackKaiAndroidOverlay/AndroidManifest.xml deleted file mode 100644 index f722d21af5155..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm.xml deleted file mode 100644 index 683e2b60a52c0..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml deleted file mode 100644 index c1588817ff4d4..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_battery_80_24dp.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_battery_80_24dp.xml deleted file mode 100644 index c47f6a3db571c..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_battery_80_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml deleted file mode 100644 index db1f8342b7b6e..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml deleted file mode 100644 index 3fd9f795d04ea..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml deleted file mode 100644 index 412096abd7a45..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml deleted file mode 100644 index 08db7e1959642..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml deleted file mode 100644 index e1ef2142f01db..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_laptop.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_laptop.xml deleted file mode 100644 index 70b271d757446..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_laptop.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_misc_hid.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_misc_hid.xml deleted file mode 100644 index 4d3edfe628888..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_misc_hid.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_network_pan.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_network_pan.xml deleted file mode 100644 index fc0cd0be1f2d8..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_network_pan.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml deleted file mode 100644 index 52113c72f974d..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_corp_badge.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_corp_badge.xml deleted file mode 100644 index 4e6792b18bba6..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_corp_badge.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_expand_more.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_expand_more.xml deleted file mode 100644 index e428f0c669b08..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_expand_more.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_faster_emergency.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_faster_emergency.xml deleted file mode 100644 index 6297ff81da14a..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_faster_emergency.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_file_copy.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_file_copy.xml deleted file mode 100644 index e291f5463af7b..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_file_copy.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml deleted file mode 100644 index 1978993d7875c..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock.xml deleted file mode 100644 index c865ac3bedd3b..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_bugreport.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_bugreport.xml deleted file mode 100644 index 58b1879109818..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_bugreport.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_open.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_open.xml deleted file mode 100644 index 3d13b791087a2..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_open.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_power_off.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_power_off.xml deleted file mode 100644 index 5b89fc4d9933b..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lock_power_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index 8f27fb521bf00..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_mode_edit.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_mode_edit.xml deleted file mode 100644 index e9c1b8ef915d0..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_mode_edit.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_notifications_alerted.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_notifications_alerted.xml deleted file mode 100644 index c92bdf6dc62ac..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_notifications_alerted.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_phone.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_phone.xml deleted file mode 100644 index 639df5da8ca72..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_phone.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_airplane.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_airplane.xml deleted file mode 100644 index 81e3f317ae83a..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_airplane.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml deleted file mode 100644 index 286ecc63ab067..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_battery_saver.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_battery_saver.xml deleted file mode 100644 index 019a159f1dc4e..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_battery_saver.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_bluetooth.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_bluetooth.xml deleted file mode 100644 index 125eb9e8e0033..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_bluetooth.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_dnd.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_dnd.xml deleted file mode 100644 index f327772516f05..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_dnd.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_flashlight.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_flashlight.xml deleted file mode 100644 index 3228b7ad8dd0d..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_flashlight.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_night_display_on.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_night_display_on.xml deleted file mode 100644 index 3607724462f1f..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_night_display_on.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml deleted file mode 100644 index 518c7a74d7148..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_restart.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_restart.xml deleted file mode 100644 index 3562b2eed52c6..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_restart.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_rules.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_rules.xml deleted file mode 100644 index 58c2653aa848d..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_rules.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index 4184a1ec06fbf..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_settings_bluetooth.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_settings_bluetooth.xml deleted file mode 100644 index 125eb9e8e0033..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_settings_bluetooth.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml deleted file mode 100644 index 5936e37d0e87e..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml deleted file mode 100644 index d3dc8b97b1005..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml deleted file mode 100644 index 23eee448cf003..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml deleted file mode 100644 index 0d847d3c2a1a4..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml deleted file mode 100644 index d022d9c2fd1bf..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_location.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_location.xml deleted file mode 100644 index 2d1de9490bba8..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_location.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml deleted file mode 100644 index 4a06d8392c18f..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_0.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_0.xml deleted file mode 100644 index c36d0f8fe851d..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_0.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_1.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_1.xml deleted file mode 100644 index 855297b601050..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_1.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_2.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_2.xml deleted file mode 100644 index dde9cc204edeb..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_2.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_3.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_3.xml deleted file mode 100644 index 14792fc907a22..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_3.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_4.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_4.xml deleted file mode 100644 index 5f603bae20db4..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_wifi_signal_4.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_work_apps_off.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_work_apps_off.xml deleted file mode 100644 index 845545d78a1b6..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/ic_work_apps_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_activity_recognition.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_activity_recognition.xml deleted file mode 100644 index feb7613c5c920..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_activity_recognition.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_aural.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_aural.xml deleted file mode 100644 index cb8a8b99dc2ec..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_aural.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_calendar.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_calendar.xml deleted file mode 100644 index be579f06b3623..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_calendar.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_call_log.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_call_log.xml deleted file mode 100644 index 24f71170cc368..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_call_log.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_camera.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_camera.xml deleted file mode 100644 index fba80e368a759..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_camera.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_contacts.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_contacts.xml deleted file mode 100644 index 806949f88de41..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_contacts.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_location.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_location.xml deleted file mode 100644 index a6cfd8e29df62..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_location.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_microphone.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_microphone.xml deleted file mode 100644 index c26ee83d191e9..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_microphone.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_phone_calls.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_phone_calls.xml deleted file mode 100644 index 8c3a583b59063..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_phone_calls.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_sensors.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_sensors.xml deleted file mode 100644 index 4f2c246b01d4c..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_sensors.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_sms.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_sms.xml deleted file mode 100644 index 373c6c22c45fc..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_sms.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_storage.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_storage.xml deleted file mode 100644 index f08b2a72152b9..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_storage.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_visual.xml b/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_visual.xml deleted file mode 100644 index 4403b5a72a3d2..0000000000000 --- a/packages/overlays/IconPackKaiAndroidOverlay/res/drawable/perm_group_visual.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/Android.bp b/packages/overlays/IconPackKaiLauncherOverlay/Android.bp deleted file mode 100644 index dcdad7aaed4e8..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackKaiLauncherOverlay", - theme: "IconPackKaiLauncher", - product_specific: true, -} diff --git a/packages/overlays/IconPackKaiLauncherOverlay/AndroidManifest.xml b/packages/overlays/IconPackKaiLauncherOverlay/AndroidManifest.xml deleted file mode 100644 index 184a046cd29c6..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_corp.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_corp.xml deleted file mode 100644 index 819114b44f942..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_corp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 59dcfd7bee295..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_hourglass_top.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_hourglass_top.xml deleted file mode 100644 index 452e8f83aaa39..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_hourglass_top.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_info_no_shadow.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_info_no_shadow.xml deleted file mode 100644 index 2c608fdb765bf..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_info_no_shadow.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_install_no_shadow.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_install_no_shadow.xml deleted file mode 100644 index 59194a37bacec..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_install_no_shadow.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_palette.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_palette.xml deleted file mode 100644 index 0e1a2df536b2c..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_palette.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_pin.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_pin.xml deleted file mode 100644 index e52578965c39d..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_pin.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index 4184a1ec06fbf..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_select.xml deleted file mode 100644 index f949a0cbd8595..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_select.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_setting.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_setting.xml deleted file mode 100644 index c3f6dc5b5353a..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_setting.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_share.xml deleted file mode 100644 index af0e60c24cba9..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_share.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_smartspace_preferences.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_smartspace_preferences.xml deleted file mode 100644 index 63c69ff8ae220..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_smartspace_preferences.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_split_screen.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_split_screen.xml deleted file mode 100644 index f7c41026b0c25..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_split_screen.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml deleted file mode 100644 index 5e2a84c37e33a..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_warning.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_warning.xml deleted file mode 100644 index a7cf8004c0625..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_warning.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_widget.xml b/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_widget.xml deleted file mode 100644 index 8209499284601..0000000000000 --- a/packages/overlays/IconPackKaiLauncherOverlay/res/drawable/ic_widget.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/Android.bp b/packages/overlays/IconPackKaiSettingsOverlay/Android.bp deleted file mode 100644 index 974bb540f4e76..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackKaiSettingsOverlay", - theme: "IconPackKaiSettings", - product_specific: true, -} diff --git a/packages/overlays/IconPackKaiSettingsOverlay/AndroidManifest.xml b/packages/overlays/IconPackKaiSettingsOverlay/AndroidManifest.xml deleted file mode 100644 index 4b6571ffddb40..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/drag_handle.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/drag_handle.xml deleted file mode 100644 index 955a7c6b7db7a..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/drag_handle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_accessibility_generic.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_accessibility_generic.xml deleted file mode 100644 index 900a3a6cb0826..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_accessibility_generic.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_add_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_add_24dp.xml deleted file mode 100644 index 1b4838236c7ce..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_add_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_airplanemode_active.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_airplanemode_active.xml deleted file mode 100644 index 5664871470df4..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_airplanemode_active.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_android.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_android.xml deleted file mode 100644 index 1430d0c6eae1b..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_android.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_apps.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_apps.xml deleted file mode 100644 index 5b1850f5f15dd..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_apps.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_arrow_back.xml deleted file mode 100644 index c5f2b3bfce8c8..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml deleted file mode 100644 index e428f0c669b08..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_charging_full.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_charging_full.xml deleted file mode 100644 index d3339fa10faac..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_charging_full.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml deleted file mode 100644 index 5736c4b4b3316..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml deleted file mode 100644 index 13786d835570a..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_call_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_call_24dp.xml deleted file mode 100644 index 476b5d2b5c5d9..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_call_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cancel.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cancel.xml deleted file mode 100644 index e89e95a6a37e0..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cancel.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cast_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cast_24dp.xml deleted file mode 100644 index ad9775f28e217..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cast_24dp.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cellular_off.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cellular_off.xml deleted file mode 100644 index 2f52c457e23f5..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_cellular_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml deleted file mode 100644 index 688ab578ee6b9..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml deleted file mode 100644 index e291f5463af7b..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index 96774bc62bbc7..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_delete.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_delete.xml deleted file mode 100644 index 5e37393dd3279..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_delete.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_devices_other.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_devices_other.xml deleted file mode 100644 index 954ff328dbd2a..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_devices_other.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml deleted file mode 100644 index f7d872ad9056f..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_eject_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_eject_24dp.xml deleted file mode 100644 index aa97bd8dbf319..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_eject_24dp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_expand_less.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_expand_less.xml deleted file mode 100644 index 3acf122ad4806..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_expand_less.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_expand_more_inverse.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_expand_more_inverse.xml deleted file mode 100644 index 2b444a3e63a4b..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_expand_more_inverse.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_find_in_page_24px.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_find_in_page_24px.xml deleted file mode 100644 index f11b6b788418e..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_find_in_page_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml deleted file mode 100644 index f08b2a72152b9..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_friction_lock_closed.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_friction_lock_closed.xml deleted file mode 100644 index 70ce244c2373f..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_friction_lock_closed.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml deleted file mode 100644 index f4c04ef7a0ebd..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_headset_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_headset_24dp.xml deleted file mode 100644 index 412096abd7a45..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_headset_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_help.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_help.xml deleted file mode 100644 index 89b80319a5396..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_help.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_help_actionbar.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_help_actionbar.xml deleted file mode 100644 index 81158cbda178e..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_help_actionbar.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_homepage_search.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_homepage_search.xml deleted file mode 100644 index 92f4a8aee8fbc..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_homepage_search.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_info_outline_24.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_info_outline_24.xml deleted file mode 100644 index 23eb6af230708..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_info_outline_24.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_local_movies.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_local_movies.xml deleted file mode 100644 index 3c328e2895c8a..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_local_movies.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml deleted file mode 100644 index 8c3a583b59063..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_media_stream.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_media_stream.xml deleted file mode 100644 index bf01647144291..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_media_stream.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_media_stream_off.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_media_stream_off.xml deleted file mode 100644 index 5bce7cf657aea..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_media_stream_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_network_cell.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_network_cell.xml deleted file mode 100644 index d39915419f079..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_network_cell.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications.xml deleted file mode 100644 index ab988389f561b..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index c92bdf6dc62ac..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml deleted file mode 100644 index e4383e57010c7..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_phone_info.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_phone_info.xml deleted file mode 100644 index e2246ce7fb165..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_phone_info.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_photo_library.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_photo_library.xml deleted file mode 100644 index 4403b5a72a3d2..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_photo_library.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_restore.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_restore.xml deleted file mode 100644 index c3ab52f4ce59f..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_restore.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_search_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_search_24dp.xml deleted file mode 100644 index 204f71bfd78ce..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_search_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accent.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accent.xml deleted file mode 100644 index e5bbf85c961de..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accent.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accessibility.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accessibility.xml deleted file mode 100644 index a92595bea8acf..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accessibility.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accounts.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accounts.xml deleted file mode 100644 index b17efd1fe3ca2..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_accounts.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_backup.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_backup.xml deleted file mode 100644 index 5042a2a855b4a..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_backup.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_battery_white.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_battery_white.xml deleted file mode 100644 index 4af480634f858..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_battery_white.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_data_usage.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_data_usage.xml deleted file mode 100644 index 4388d99cbcb2a..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_data_usage.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_date_time.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_date_time.xml deleted file mode 100644 index 58eb7f47ad0c0..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_date_time.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_delete.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_delete.xml deleted file mode 100644 index 7b592b9cc6697..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_delete.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_disable.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_disable.xml deleted file mode 100644 index 1a4bfafc92164..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_disable.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_display_white.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_display_white.xml deleted file mode 100644 index 9eb8a0b0d2e84..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_display_white.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_enable.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_enable.xml deleted file mode 100644 index e7f3973705b8b..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_enable.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_force_stop.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_force_stop.xml deleted file mode 100644 index e663f5065bca1..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_force_stop.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_gestures.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_gestures.xml deleted file mode 100644 index 45bbcb180ecb4..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_gestures.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_home.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_home.xml deleted file mode 100644 index 491c8416bdf6d..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_home.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_language.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_language.xml deleted file mode 100644 index 8a24d89ddc99a..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_language.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_location.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_location.xml deleted file mode 100644 index d437035642bc6..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_location.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_multiuser.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_multiuser.xml deleted file mode 100644 index 484946f82d0ef..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_multiuser.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_night_display.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_night_display.xml deleted file mode 100644 index b064d700a7163..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_night_display.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_open.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_open.xml deleted file mode 100644 index 66f0fca13eb37..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_open.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_print.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_print.xml deleted file mode 100644 index cfec0733f893c..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_print.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_privacy.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_privacy.xml deleted file mode 100644 index 28d111da49a9d..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_privacy.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_security_white.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_security_white.xml deleted file mode 100644 index 7f654c1205830..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_security_white.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_sim.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_sim.xml deleted file mode 100644 index ae34d859b3216..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_sim.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml deleted file mode 100644 index 70d36280c8b14..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_wireless.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_wireless.xml deleted file mode 100644 index 63346a485f0d0..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_settings_wireless.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_storage.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_storage.xml deleted file mode 100644 index 6c96cee02330a..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_storage.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_storage_white.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_storage_white.xml deleted file mode 100644 index 0ef8a7cc9c6bd..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_storage_white.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_suggestion_night_display.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_suggestion_night_display.xml deleted file mode 100644 index b064d700a7163..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_suggestion_night_display.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_sync.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_sync.xml deleted file mode 100644 index 7226da9230852..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_sync.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml deleted file mode 100644 index 3a310abfee700..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_system_update.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_system_update.xml deleted file mode 100644 index aa32400e2c61b..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_system_update.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml deleted file mode 100644 index 95a36f661f6d2..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 629207f8a9315..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_volume_up_24dp.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_volume_up_24dp.xml deleted file mode 100644 index b9753f5d8e9df..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_volume_up_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_vpn_key.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_vpn_key.xml deleted file mode 100644 index e6d922031f08c..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_vpn_key.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_wifi_tethering.xml b/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_wifi_tethering.xml deleted file mode 100644 index 6193eb59d198d..0000000000000 --- a/packages/overlays/IconPackKaiSettingsOverlay/res/drawable/ic_wifi_tethering.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/Android.bp b/packages/overlays/IconPackKaiSystemUIOverlay/Android.bp deleted file mode 100644 index b04ca6132c6d5..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (C) 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackKaiSystemUIOverlay", - theme: "IconPackKaiSystemUI", - product_specific: true, -} diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/AndroidManifest.xml b/packages/overlays/IconPackKaiSystemUIOverlay/AndroidManifest.xml deleted file mode 100644 index ce80fcf7513a1..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_lock.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_lock.xml deleted file mode 100644 index fbe5f098c3959..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_lock.xml +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_scanning.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_scanning.xml deleted file mode 100644 index e27284d108fb8..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_scanning.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_to_error.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_to_error.xml deleted file mode 100644 index ad9daba1b5a17..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_to_error.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_unlock.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_unlock.xml deleted file mode 100644 index abca59b3b67a3..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/anim/lock_unlock.xml +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_alarm.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_alarm.xml deleted file mode 100644 index 8efc9b5b1121d..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_alarm_dim.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_alarm_dim.xml deleted file mode 100644 index 8efc9b5b1121d..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_alarm_dim.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_arrow_back.xml deleted file mode 100644 index c5f2b3bfce8c8..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml deleted file mode 100644 index b277cafa79944..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_brightness_thumb.xml deleted file mode 100644 index 372059eab1da2..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_brightness_thumb.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_camera.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_camera.xml deleted file mode 100644 index faee6d2588ae3..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_camera.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_cast.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_cast.xml deleted file mode 100644 index f935476aed9a4..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_cast.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_cast_connected.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_cast_connected.xml deleted file mode 100644 index ac7c82dc20415..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_cast_connected.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_close_white.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_close_white.xml deleted file mode 100644 index 9f2a4c037a964..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_close_white.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index 89c8008712211..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_data_saver_off.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_data_saver_off.xml deleted file mode 100644 index d6b0785f17559..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_data_saver_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 9b216bd29dd80..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_headset.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_headset.xml deleted file mode 100644 index 7a235624683d0..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_headset.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_headset_mic.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_headset_mic.xml deleted file mode 100644 index fc232e523c0c3..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_headset_mic.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_hotspot.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_hotspot.xml deleted file mode 100644 index 1da172f956015..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_hotspot.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_info.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_info.xml deleted file mode 100644 index 0c0a6827f617b..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_info.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_info_outline.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_info_outline.xml deleted file mode 100644 index 0c0a6827f617b..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_info_outline.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_invert_colors.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_invert_colors.xml deleted file mode 100644 index 09b5ddf59c235..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_invert_colors.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_location.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_location.xml deleted file mode 100644 index 836eb7d0a06dd..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_location.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index 814a573fd856c..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index c92bdf6dc62ac..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_notifications_silence.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_notifications_silence.xml deleted file mode 100644 index e2953b516f0c7..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_notifications_silence.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_power_low.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_power_low.xml deleted file mode 100644 index 13786d835570a..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_power_low.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_power_saver.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_power_saver.xml deleted file mode 100644 index 0ba057bf5615b..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_power_saver.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml deleted file mode 100644 index fc0cd0be1f2d8..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_cancel.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_cancel.xml deleted file mode 100644 index e89e95a6a37e0..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_cancel.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_no_sim.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_no_sim.xml deleted file mode 100644 index c1730e44648c6..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_no_sim.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml deleted file mode 100644 index 796ba8622fe73..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml deleted file mode 100644 index 538f85bfc0189..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml deleted file mode 100644 index 3ae9f72ebac77..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml deleted file mode 100644 index 408a09e1ba4d8..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml deleted file mode 100644 index 61ca3d0617a77..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml deleted file mode 100644 index a788993c656ca..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenrecord.xml deleted file mode 100644 index a379f9a2cfb90..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenrecord.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index 4184a1ec06fbf..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot_delete.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot_delete.xml deleted file mode 100644 index 7b592b9cc6697..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_screenshot_delete.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_settings.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_settings.xml deleted file mode 100644 index 8a31cbccc4abd..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_settings.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_swap_vert.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_swap_vert.xml deleted file mode 100644 index 48a75be438c2a..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_swap_vert.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml deleted file mode 100644 index 30cd25e63e7d4..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml deleted file mode 100644 index c1588817ff4d4..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml deleted file mode 100644 index da98705ca1ad3..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml deleted file mode 100644 index e5486dd980551..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml deleted file mode 100644 index e9dc04f682191..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_media.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_media.xml deleted file mode 100644 index bf01647144291..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_media.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_media_mute.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_media_mute.xml deleted file mode 100644 index 5bce7cf657aea..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_media_mute.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml deleted file mode 100644 index 53eabd9a8c27d..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml deleted file mode 100644 index 923c60358c194..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer.xml deleted file mode 100644 index ab988389f561b..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml deleted file mode 100644 index da336f584099b..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 971c8ea0fddd6..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_voice.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_voice.xml deleted file mode 100644 index 8c3a583b59063..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/ic_volume_voice.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml deleted file mode 100644 index 77533e115f2e7..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_mic_none.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_mic_none.xml deleted file mode 100644 index c901bbdc848e0..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_mic_none.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml b/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml deleted file mode 100644 index 84203d3c49679..0000000000000 --- a/packages/overlays/IconPackKaiSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/Android.bp b/packages/overlays/IconPackKaiThemePickerOverlay/Android.bp deleted file mode 100644 index 875cd1d44d927..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackKaiThemePickerOverlay", - theme: "IconPackKaiThemePicker", - product_specific: true, -} diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/AndroidManifest.xml b/packages/overlays/IconPackKaiThemePickerOverlay/AndroidManifest.xml deleted file mode 100644 index 83b89858e8caa..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_add_24px.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_add_24px.xml deleted file mode 100644 index f57b3c883f961..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_add_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_close_24px.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_close_24px.xml deleted file mode 100644 index 9f2a4c037a964..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_close_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_colorize_24px.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_colorize_24px.xml deleted file mode 100644 index 60ed90b87fd19..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_colorize_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_font.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_font.xml deleted file mode 100644 index cd3e9273efd9f..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_font.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_clock.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_clock.xml deleted file mode 100644 index 8bc34990a503b..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_clock.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_grid.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_grid.xml deleted file mode 100644 index 41721f04f06e4..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_grid.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_theme.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_theme.xml deleted file mode 100644 index f57d2163fab32..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_theme.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml deleted file mode 100644 index 28871562486bb..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_shapes_24px.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_shapes_24px.xml deleted file mode 100644 index fb5989f0f191f..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_shapes_24px.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_tune.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_tune.xml deleted file mode 100644 index f66089067da7a..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_tune.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_wifi_24px.xml b/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_wifi_24px.xml deleted file mode 100644 index eb5347dcfdd29..0000000000000 --- a/packages/overlays/IconPackKaiThemePickerOverlay/res/drawable/ic_wifi_24px.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/Android.bp b/packages/overlays/IconPackRoundedAndroidOverlay/Android.bp deleted file mode 100644 index cb7b01361da33..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackRoundedAndroidOverlay", - theme: "IconPackRoundedAndroid", - product_specific: true, -} diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/AndroidManifest.xml b/packages/overlays/IconPackRoundedAndroidOverlay/AndroidManifest.xml deleted file mode 100644 index 8da1948f0aa17..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_audio_alarm.xml deleted file mode 100644 index 1ba69a1b3bcf0..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_audio_alarm.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml deleted file mode 100644 index 3a26cbaf72386..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_battery_80_24dp.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_battery_80_24dp.xml deleted file mode 100644 index c19ca31d41b29..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_battery_80_24dp.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml deleted file mode 100644 index feed70c491389..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml deleted file mode 100644 index 3b986a005ebf8..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml deleted file mode 100644 index 6ea152b853452..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bluetooth_transient_animation_drawable.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml deleted file mode 100644 index eaeebccf189e6..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml deleted file mode 100644 index 46c4a797973c3..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml deleted file mode 100644 index 6c619bb660f65..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_laptop.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_laptop.xml deleted file mode 100644 index 2f13fb8685f9e..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_laptop.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_misc_hid.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_misc_hid.xml deleted file mode 100644 index ebf337b532fca..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_misc_hid.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_network_pan.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_network_pan.xml deleted file mode 100644 index 85c2bcdbdce01..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_network_pan.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml deleted file mode 100644 index edb8d9e4295ae..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_corp_badge.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_corp_badge.xml deleted file mode 100644 index 031e5a8ba2c43..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_corp_badge.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_expand_more.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_expand_more.xml deleted file mode 100644 index 50a8742be529c..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_expand_more.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_faster_emergency.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_faster_emergency.xml deleted file mode 100644 index 46e243c0f1acc..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_faster_emergency.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ 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 deleted file mode 100644 index 1feaab1663c10..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_file_copy.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml deleted file mode 100644 index 9d43e51dc4698..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml deleted file mode 100644 index 11cb9d225d632..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_hotspot_transient_animation_drawable.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_info_outline_24.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_info_outline_24.xml deleted file mode 100644 index fe9c578700355..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_info_outline_24.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock.xml deleted file mode 100644 index d0b85e70920d2..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_bugreport.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_bugreport.xml deleted file mode 100644 index 083007b56622b..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_bugreport.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_open.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_open.xml deleted file mode 100644 index 6f19afe7c4841..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_open.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_power_off.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_power_off.xml deleted file mode 100644 index e2296fb3839cd..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lock_power_off.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index fae8445a0a427..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_mode_edit.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_mode_edit.xml deleted file mode 100644 index c44a8d6fb9c5a..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_mode_edit.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_notifications_alerted.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_notifications_alerted.xml deleted file mode 100644 index 752dab5082a48..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_notifications_alerted.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ 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 deleted file mode 100644 index c6e8f57f5ec13..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_phone.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_airplane.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_airplane.xml deleted file mode 100644 index 20560c2aef423..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_airplane.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml deleted file mode 100644 index a182f00b9c0f4..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_battery_saver.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_battery_saver.xml deleted file mode 100644 index ca37d581332bb..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_battery_saver.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_bluetooth.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_bluetooth.xml deleted file mode 100644 index 5e1a5f20c6d6a..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_bluetooth.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_dnd.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_dnd.xml deleted file mode 100644 index 2c00dde300c45..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_dnd.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_flashlight.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_flashlight.xml deleted file mode 100644 index 1b0cfaa89a3ff..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_flashlight.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_night_display_on.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_night_display_on.xml deleted file mode 100644 index 8c7cc45026420..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_night_display_on.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml deleted file mode 100644 index 3cf7541219f06..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_restart.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_restart.xml deleted file mode 100644 index ff8edbf3537ec..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_restart.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index 74053fcb17e7c..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_settings_bluetooth.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_settings_bluetooth.xml deleted file mode 100644 index 5e1a5f20c6d6a..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_settings_bluetooth.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml deleted file mode 100644 index a8e01c20024f4..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml deleted file mode 100644 index a8e01c20024f4..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_0_5_bar.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml deleted file mode 100644 index 08fc66e61da61..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml deleted file mode 100644 index cdd770f02e166..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_1_5_bar.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml deleted file mode 100644 index 9982d036d6bf0..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml deleted file mode 100644 index 9d8c3070f039a..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_2_5_bar.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml deleted file mode 100644 index 0e8a58aeaa5d4..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml deleted file mode 100644 index b1aaa3ada717a..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_3_5_bar.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml deleted file mode 100644 index 24faf35db2907..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml deleted file mode 100644 index 3f95fa8dca7c3..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_4_5_bar.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml deleted file mode 100644 index 24faf35db2907..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_cellular_5_5_bar.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_location.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_location.xml deleted file mode 100644 index a00c85f3d1f10..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_location.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml deleted file mode 100644 index 5ecb82619862d..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml deleted file mode 100644 index 130da579a5bba..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation_drawable.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_0.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_0.xml deleted file mode 100644 index 3c9d9142d49ee..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_0.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_1.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_1.xml deleted file mode 100644 index 6db8329e846d7..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_1.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_2.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_2.xml deleted file mode 100644 index 2544bc3283750..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_2.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_3.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_3.xml deleted file mode 100644 index b9f375aaca2b2..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_3.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_4.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_4.xml deleted file mode 100644 index d9c9b2085abad..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/ic_wifi_signal_4.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_activity_recognition.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_activity_recognition.xml deleted file mode 100644 index 6697047753113..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_activity_recognition.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_aural.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_aural.xml deleted file mode 100644 index 8cd240d47b2d1..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_aural.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_calendar.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_calendar.xml deleted file mode 100644 index 4e61af0dbf34c..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_calendar.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_call_log.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_call_log.xml deleted file mode 100644 index 8d3c43c3d2164..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_call_log.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_camera.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_camera.xml deleted file mode 100644 index 7d42ff758b8c3..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_camera.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_contacts.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_contacts.xml deleted file mode 100644 index 5d68581757ba0..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_contacts.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_location.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_location.xml deleted file mode 100644 index 5dce9cb985b3b..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_location.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_microphone.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_microphone.xml deleted file mode 100644 index b45e8322628da..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_microphone.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_phone_calls.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_phone_calls.xml deleted file mode 100644 index fe45a97a3287c..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_phone_calls.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sensors.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sensors.xml deleted file mode 100644 index c84cb0e99bde4..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sensors.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml deleted file mode 100644 index 96b70f7fbfbd4..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_sms.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_storage.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_storage.xml deleted file mode 100644 index 9240bb48b35e3..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_storage.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_visual.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_visual.xml deleted file mode 100644 index 2cd1bc0f17b08..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/drawable/perm_group_visual.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedAndroidOverlay/res/values/config.xml b/packages/overlays/IconPackRoundedAndroidOverlay/res/values/config.xml deleted file mode 100644 index b7bfaad562497..0000000000000 --- a/packages/overlays/IconPackRoundedAndroidOverlay/res/values/config.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - M 11,1.505 H 8 V 0.995 C 8,0.445 7.55,-0.005 7,-0.005 H 5 C 4.45,-0.005 4,0.445 4,0.995 V 1.505 H 1 C 0.45,1.505 0,1.955 0,2.505 V 19.005 C 0,19.555 0.45,20.005 1,20.005 H 11 C 11.55,20.005 12,19.555 12,19.005 V 2.505 C 12,1.955 11.543,1.505 11,1.505 Z M 10.5,18.505 H 1.5 V 3.005 H 10.5 Z - - - - M 10.5,18.505 H 1.5 V 3.005 H 10.5 Z - - - M 3.92,11.5 H 5 V 15.01 C 5,15.17 5.13,15.26 5.25,15.26 5.33,15.26 5.42,15.22 5.47,15.13 L 8.3,9.87 C 8.39,9.7 8.27,9.5 8.08,9.5 H 7 V 5.99 C 7,5.83 6.87,5.74 6.75,5.74 6.67,5.74 6.58,5.78 6.53,5.87 L 3.7,11.13 C 3.61,11.3 3.73,11.5 3.92,11.5 Z - - - M 3.75,11.25 H 5.25 V 12.75 C 5.25,13.16 5.59,13.5 6,13.5 6.41,13.5 6.75,13.16 6.75,12.75 V 11.25 H 8.25 C 8.66,11.25 9,10.91 9,10.5 9,10.09 8.66,9.7499 8.25,9.7499 H 6.75 V 8.2499 C 6.75,7.8399 6.41,7.4999 6,7.4999 5.59,7.4999 5.2794,7.841 5.25,8.2499 V 9.7499 H 3.75 C 3.34,9.7499 3,10.09 3,10.5 3,10.91 3.3401,11.25 3.75,11.25 Z - - - - M 20.72,16.22 L 19,17.94 L 17.28,16.22 C 16.99,15.93 16.51,15.93 16.22,16.22 C 15.93,16.51 15.93,16.99 16.22,17.28 L 17.94,19 L 16.22,20.72 C 15.93,21.01 15.93,21.49 16.22,21.78 C 16.37,21.93 16.56,22 16.75,22 C 16.94,22 17.13,21.93 17.28,21.78 L 19,20.06 L 20.72,21.78 C 20.87,21.93 21.06,22 21.25,22 C 21.44,22 21.63,21.93 21.78,21.78 C 22.07,21.49 22.07,21.01 21.78,20.72 L 20.06,19 L 21.78,17.28 C 22.07,16.99 22.07,16.51 21.78,16.22 C 21.49,15.93 21.01,15.93 20.72,16.22 Z - - - 10 - 10 - diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/Android.bp b/packages/overlays/IconPackRoundedLauncherOverlay/Android.bp deleted file mode 100644 index 8ab6d957720ec..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackRoundedLauncherOverlay", - theme: "IconPackRoundedLauncher", - product_specific: true, -} diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/AndroidManifest.xml b/packages/overlays/IconPackRoundedLauncherOverlay/AndroidManifest.xml deleted file mode 100644 index 8406f4279f2bb..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_corp.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_corp.xml deleted file mode 100644 index be31fb9171bfc..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_corp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_corp_off.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_corp_off.xml deleted file mode 100644 index 8d298f7cbc970..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_corp_off.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 1e7fcaf0a52f9..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_hourglass_top.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_hourglass_top.xml deleted file mode 100644 index 28da99fe3218f..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_hourglass_top.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_info_no_shadow.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_info_no_shadow.xml deleted file mode 100644 index 168f86f1cc36b..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_info_no_shadow.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_install_no_shadow.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_install_no_shadow.xml deleted file mode 100644 index abb597a1d3bdd..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_install_no_shadow.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_palette.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_palette.xml deleted file mode 100644 index e086ebd95cf78..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_palette.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_pin.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_pin.xml deleted file mode 100644 index 6ac4e122b83aa..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_pin.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_remove_no_shadow.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_remove_no_shadow.xml deleted file mode 100644 index fcfadbe8e60ae..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_remove_no_shadow.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index ed90b85c8b87c..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_select.xml deleted file mode 100644 index 7bd92ef8687a0..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_select.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_setting.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_setting.xml deleted file mode 100644 index 70621ae197496..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_setting.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_share.xml deleted file mode 100644 index 36dd3baa8994f..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_share.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_smartspace_preferences.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_smartspace_preferences.xml deleted file mode 100644 index 49f732726de5d..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_smartspace_preferences.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_split_screen.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_split_screen.xml deleted file mode 100644 index 85443eb0a1d27..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_split_screen.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml deleted file mode 100644 index 75e6ce3f00d02..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_warning.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_warning.xml deleted file mode 100644 index 2426f6f898ebd..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_warning.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_widget.xml b/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_widget.xml deleted file mode 100644 index 1e84ba461d9bb..0000000000000 --- a/packages/overlays/IconPackRoundedLauncherOverlay/res/drawable/ic_widget.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/Android.bp b/packages/overlays/IconPackRoundedSettingsOverlay/Android.bp deleted file mode 100644 index ee2f98a96864c..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackRoundedSettingsOverlay", - theme: "IconPackRoundedSettings", - product_specific: true, -} diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/AndroidManifest.xml b/packages/overlays/IconPackRoundedSettingsOverlay/AndroidManifest.xml deleted file mode 100644 index df71e156490c3..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/drag_handle.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/drag_handle.xml deleted file mode 100644 index f3241f849261b..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/drag_handle.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_add_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_add_24dp.xml deleted file mode 100644 index 7dce6609be679..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_add_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_airplanemode_active.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_airplanemode_active.xml deleted file mode 100644 index e64828b6ec149..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_airplanemode_active.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_android.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_android.xml deleted file mode 100644 index 31df4a6830425..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_android.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_apps.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_apps.xml deleted file mode 100644 index 8db613dfa5d2d..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_apps.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_back.xml deleted file mode 100644 index 34f79b4478c9a..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml deleted file mode 100644 index 50a8742be529c..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_charging_full.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_charging_full.xml deleted file mode 100644 index cda34da5e039f..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_charging_full.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml deleted file mode 100644 index d43d6f64b38a3..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml deleted file mode 100644 index 8e9fa3bb4ac93..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_call_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_call_24dp.xml deleted file mode 100644 index eeed4bf2982a5..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_call_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cancel.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cancel.xml deleted file mode 100644 index 5cd8861e813f8..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cancel.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cast_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cast_24dp.xml deleted file mode 100644 index a9cb021a07844..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cast_24dp.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cellular_off.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cellular_off.xml deleted file mode 100644 index 34d40ec813e47..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_cellular_off.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml deleted file mode 100644 index 1e86983cd5510..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file 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 deleted file mode 100644 index 1feaab1663c10..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index ba3c5808d26cd..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_delete.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_delete.xml deleted file mode 100644 index fd87423c3ad14..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_delete.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ 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 deleted file mode 100644 index 1b4ec92e37346..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other_32dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other_32dp.xml deleted file mode 100644 index dfd4b20a7721a..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_devices_other_32dp.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml deleted file mode 100644 index 5f704f0ed8280..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_eject_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_eject_24dp.xml deleted file mode 100644 index 0d4bd9bc48d06..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_eject_24dp.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_expand_less.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_expand_less.xml deleted file mode 100644 index e67b753b39dc7..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_expand_less.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_expand_more_inverse.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_expand_more_inverse.xml deleted file mode 100644 index ab5b9aa689084..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_expand_more_inverse.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file 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 deleted file mode 100644 index 36d5c7cf4cbf1..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_find_in_page_24px.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml deleted file mode 100644 index 9240bb48b35e3..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_friction_lock_closed.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_friction_lock_closed.xml deleted file mode 100644 index aff97842cdff3..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_friction_lock_closed.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml deleted file mode 100644 index 308c2ab345631..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_headset_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_headset_24dp.xml deleted file mode 100644 index eaeebccf189e6..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_headset_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help.xml deleted file mode 100644 index d062e65dedd5e..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ 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 deleted file mode 100644 index c7d672efa574e..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_help_actionbar.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_homepage_search.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_homepage_search.xml deleted file mode 100644 index 5abe45c9baf32..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_homepage_search.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_info_outline_24.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_info_outline_24.xml deleted file mode 100644 index 060188bf33a9d..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_info_outline_24.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_local_movies.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_local_movies.xml deleted file mode 100644 index c669efa23a880..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_local_movies.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml deleted file mode 100644 index fe45a97a3287c..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_lock.xml deleted file mode 100644 index 4a7f04c69a5d7..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_lock.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_media_stream.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_media_stream.xml deleted file mode 100644 index 0d93646a6128a..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_media_stream.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_media_stream_off.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_media_stream_off.xml deleted file mode 100644 index 9e4b9ea9519eb..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_media_stream_off.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_network_cell.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_network_cell.xml deleted file mode 100644 index fbe5ef03ad803..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_network_cell.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications.xml deleted file mode 100644 index cd78f7a65cbbe..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index 8f854e74f551a..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml deleted file mode 100644 index 56a67c912176b..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_phone_info.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_phone_info.xml deleted file mode 100644 index f41f7a05e68f8..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_phone_info.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_photo_library.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_photo_library.xml deleted file mode 100644 index 2cd1bc0f17b08..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_photo_library.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_scan_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_scan_24dp.xml deleted file mode 100644 index 3d79f7946b318..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_scan_24dp.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_search_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_search_24dp.xml deleted file mode 100644 index f30a69c13132a..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_search_24dp.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accent.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accent.xml deleted file mode 100644 index 172c0051a2c23..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accent.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accessibility.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accessibility.xml deleted file mode 100644 index f17b5b93d84f3..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accessibility.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accounts.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accounts.xml deleted file mode 100644 index f02da58550ba2..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_accounts.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_backup.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_backup.xml deleted file mode 100644 index 4967a0e7f1d3a..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_backup.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_battery_white.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_battery_white.xml deleted file mode 100644 index e27cb8d54838a..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_battery_white.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_data_usage.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_data_usage.xml deleted file mode 100644 index 855e4bb2a39da..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_data_usage.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_date_time.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_date_time.xml deleted file mode 100644 index 6bf52264e12a5..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_date_time.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_delete.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_delete.xml deleted file mode 100644 index 48a430fc420bd..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_delete.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_disable.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_disable.xml deleted file mode 100644 index 0572fb72f82e8..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_disable.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_display_white.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_display_white.xml deleted file mode 100644 index 19acd6ae82102..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_display_white.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_enable.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_enable.xml deleted file mode 100644 index ec608cdf67dd1..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_enable.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_home.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_home.xml deleted file mode 100644 index 7e06f7ddcea2e..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_home.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ 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 deleted file mode 100644 index 730942bda59c3..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_language.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_location.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_location.xml deleted file mode 100644 index 762d67d7fa87c..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_location.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_multiuser.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_multiuser.xml deleted file mode 100644 index 83d9d2a9311e3..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_multiuser.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_night_display.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_night_display.xml deleted file mode 100644 index 54d5b55fcab78..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_night_display.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_open.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_open.xml deleted file mode 100644 index b0894888931dd..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_open.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_print.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_print.xml deleted file mode 100644 index 4ee616c504a09..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_print.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_privacy.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_privacy.xml deleted file mode 100644 index 12a82f2c1f0b3..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_privacy.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_security_white.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_security_white.xml deleted file mode 100644 index e93e63f5f6031..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_security_white.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_sim.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_sim.xml deleted file mode 100644 index 563dbe4741447..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_sim.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml deleted file mode 100644 index 9ec3ffcc47fab..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_wireless.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_wireless.xml deleted file mode 100644 index c8c8abc0b6ac5..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_settings_wireless.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_storage.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_storage.xml deleted file mode 100644 index 0cf6f54beeb26..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_storage.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_storage_white.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_storage_white.xml deleted file mode 100644 index 355ee3b920ee2..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_storage_white.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_suggestion_night_display.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_suggestion_night_display.xml deleted file mode 100644 index 54d5b55fcab78..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_suggestion_night_display.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_sync.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_sync.xml deleted file mode 100644 index 5d0bab4252434..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_sync.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml deleted file mode 100644 index e9a07cc3b9883..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_system_update.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_system_update.xml deleted file mode 100644 index 486b663b00cca..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_system_update.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml deleted file mode 100644 index 906b06a73787e..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 91bb81e9f39a1..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_volume_up_24dp.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_volume_up_24dp.xml deleted file mode 100644 index 25f81b71256a1..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_volume_up_24dp.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_vpn_key.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_vpn_key.xml deleted file mode 100644 index 78f5c52b94e0c..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_vpn_key.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_wifi_tethering.xml b/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_wifi_tethering.xml deleted file mode 100644 index 3ee1e368e385a..0000000000000 --- a/packages/overlays/IconPackRoundedSettingsOverlay/res/drawable/ic_wifi_tethering.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/Android.bp b/packages/overlays/IconPackRoundedSystemUIOverlay/Android.bp deleted file mode 100644 index ee0220a449432..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackRoundedSystemUIOverlay", - theme: "IconPackRoundedSystemUI", - product_specific: true, -} diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/AndroidManifest.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/AndroidManifest.xml deleted file mode 100644 index 01b121df37dd0..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_alarm.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_alarm.xml deleted file mode 100644 index 34820ad030ef9..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_alarm_dim.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_alarm_dim.xml deleted file mode 100644 index 34820ad030ef9..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_alarm_dim.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ 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 deleted file mode 100644 index 34f79b4478c9a..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml deleted file mode 100644 index b41f2830e5841..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml deleted file mode 100644 index 62fcd4c3a33af..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_brightness_thumb.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_camera.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_camera.xml deleted file mode 100644 index 142e078bdfd95..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_camera.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast.xml deleted file mode 100644 index fed248aea26ac..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected.xml deleted file mode 100644 index f2821668c8708..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml deleted file mode 100644 index cadef698d7eb6..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_cast_connected_fill.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_close_white.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_close_white.xml deleted file mode 100644 index 1dca14d9de77d..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_close_white.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index cdc3bfbd3d5ff..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ 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 deleted file mode 100644 index 7dab949f9da50..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_data_saver_off.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 2927994b4ba52..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_headset.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_headset.xml deleted file mode 100644 index 2e97f44e97908..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_headset.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_headset_mic.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_headset_mic.xml deleted file mode 100644 index ff644b941a05d..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_headset_mic.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_hotspot.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_hotspot.xml deleted file mode 100644 index 3edd97823dc8a..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_hotspot.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_info.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_info.xml deleted file mode 100644 index fe9c578700355..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_info.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_info_outline.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_info_outline.xml deleted file mode 100644 index fe9c578700355..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_info_outline.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_invert_colors.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_invert_colors.xml deleted file mode 100644 index c0b21399c1650..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_invert_colors.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_location.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_location.xml deleted file mode 100644 index b1d1a05fa9de3..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_location.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index 16f0868987fbd..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index 752dab5082a48..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_notifications_silence.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_notifications_silence.xml deleted file mode 100644 index 3afe7356bfc9f..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_notifications_silence.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_power_low.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_power_low.xml deleted file mode 100644 index 8e9fa3bb4ac93..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_power_low.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_power_saver.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_power_saver.xml deleted file mode 100644 index db4d302eb2405..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_power_saver.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ 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 deleted file mode 100644 index 85c2bcdbdce01..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml deleted file mode 100644 index 6e7ebb36d274d..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_bluetooth_on.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_cancel.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_cancel.xml deleted file mode 100644 index 5cd8861e813f8..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_cancel.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_no_sim.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_no_sim.xml deleted file mode 100644 index 9e3f638629765..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_no_sim.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml deleted file mode 100644 index 6da3eea2f095c..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml deleted file mode 100644 index 9d8dc499c15b0..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml deleted file mode 100644 index 0d365585fc3fd..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml deleted file mode 100644 index c80c5d250f614..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml deleted file mode 100644 index 47cc27484963b..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml deleted file mode 100644 index a963150e472e5..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenrecord.xml deleted file mode 100644 index a875a23c3a172..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenrecord.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenshot_delete.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenshot_delete.xml deleted file mode 100644 index 48a430fc420bd..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_screenshot_delete.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_settings.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_settings.xml deleted file mode 100644 index 86cb525e203a4..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_settings.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_settings_16dp.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_settings_16dp.xml deleted file mode 100644 index 0627ea9256c5a..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_settings_16dp.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_swap_vert.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_swap_vert.xml deleted file mode 100644 index 543dcb96a5f8c..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_swap_vert.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml deleted file mode 100644 index 741d963fbcb65..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm.xml deleted file mode 100644 index cf1b02f1658d1..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml deleted file mode 100644 index 3a26cbaf72386..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml deleted file mode 100644 index 6c8bf335bc74f..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_media.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_media.xml deleted file mode 100644 index 0d93646a6128a..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_media.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_media_mute.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_media_mute.xml deleted file mode 100644 index 9e4b9ea9519eb..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_media_mute.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml deleted file mode 100644 index ad79132bb0f8a..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml deleted file mode 100644 index 2ea41f22943ad..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer.xml deleted file mode 100644 index cd78f7a65cbbe..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml deleted file mode 100644 index 81f18fb4b3833..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 3e40279aa6295..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_voice.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_voice.xml deleted file mode 100644 index fe45a97a3287c..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/ic_volume_voice.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_camera.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_camera.xml deleted file mode 100644 index 294e181faef84..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_camera.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml deleted file mode 100644 index 61206ca0371de..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_mic_none.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_mic_none.xml deleted file mode 100644 index d706777cf0e66..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_mic_none.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml b/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml deleted file mode 100644 index 0762acefa2233..0000000000000 --- a/packages/overlays/IconPackRoundedSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/Android.bp b/packages/overlays/IconPackRoundedThemePickerOverlay/Android.bp deleted file mode 100644 index d74765c336078..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackRoundedThemePickerOverlay", - theme: "IconPackRoundedTheme", - product_specific: true, -} diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/AndroidManifest.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/AndroidManifest.xml deleted file mode 100644 index 9a90a05713fe2..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_add_24px.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_add_24px.xml deleted file mode 100644 index 707369ab34469..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_add_24px.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_close_24px.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_close_24px.xml deleted file mode 100644 index 1dca14d9de77d..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_close_24px.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_colorize_24px.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_colorize_24px.xml deleted file mode 100644 index 5c21b23f0bc70..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_colorize_24px.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_delete_24px.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_delete_24px.xml deleted file mode 100644 index 48a430fc420bd..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_delete_24px.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_font.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_font.xml deleted file mode 100644 index bbae929cf76ed..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_font.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_clock.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_clock.xml deleted file mode 100644 index 9c9d663f850c5..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_clock.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_grid.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_grid.xml deleted file mode 100644 index c81ca1e4bde1a..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_grid.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_theme.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_theme.xml deleted file mode 100644 index 32d154b0a8ea4..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_theme.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml deleted file mode 100644 index 21daf9d00e89a..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_shapes_24px.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_shapes_24px.xml deleted file mode 100644 index 19ce4e3ca7ade..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_shapes_24px.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_tune.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_tune.xml deleted file mode 100644 index 2a56cc54bae85..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_tune.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_wifi_24px.xml b/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_wifi_24px.xml deleted file mode 100644 index 0a1c3055870df..0000000000000 --- a/packages/overlays/IconPackRoundedThemePickerOverlay/res/drawable/ic_wifi_24px.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/Android.bp b/packages/overlays/IconPackSamAndroidOverlay/Android.bp deleted file mode 100644 index 2e9dc34726747..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (C) 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackSamAndroidOverlay", - theme: "IconPackSamAndroid", - product_specific: true, -} diff --git a/packages/overlays/IconPackSamAndroidOverlay/AndroidManifest.xml b/packages/overlays/IconPackSamAndroidOverlay/AndroidManifest.xml deleted file mode 100644 index 7c5a8a256448b..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm.xml deleted file mode 100644 index bc271b806c428..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml deleted file mode 100644 index 7d9cf7f3ddaf0..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_battery_80_24dp.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_battery_80_24dp.xml deleted file mode 100644 index 8a1a5ae6e30f4..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_battery_80_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml deleted file mode 100644 index 4e054d07b262f..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml deleted file mode 100644 index c2e4fdfac881a..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml deleted file mode 100644 index 482f87b9cc0f3..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml deleted file mode 100644 index 433dc39c6a989..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml deleted file mode 100644 index 63b6bb164b0c2..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_laptop.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_laptop.xml deleted file mode 100644 index a36fc9d2d3521..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_laptop.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_misc_hid.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_misc_hid.xml deleted file mode 100644 index 6edf7c8ab30e6..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_misc_hid.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_network_pan.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_network_pan.xml deleted file mode 100644 index 849cb1ffc421a..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_network_pan.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml deleted file mode 100644 index 71acae6163012..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_corp_badge.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_corp_badge.xml deleted file mode 100644 index 917874e78a916..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_corp_badge.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_expand_more.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_expand_more.xml deleted file mode 100644 index 3cecf5b649915..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_expand_more.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_faster_emergency.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_faster_emergency.xml deleted file mode 100644 index 18eb115fd5289..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_faster_emergency.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_file_copy.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_file_copy.xml deleted file mode 100644 index 0f6b1bda15fae..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_file_copy.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml deleted file mode 100644 index 59b519cb7ca82..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock.xml deleted file mode 100644 index a6667b49c2568..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_bugreport.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_bugreport.xml deleted file mode 100644 index 6f1ef5ec5ed92..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_bugreport.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_open.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_open.xml deleted file mode 100644 index 71f51c6fc1888..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_open.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_power_off.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_power_off.xml deleted file mode 100644 index 0c4d8177e23fa..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lock_power_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index 4044e455f03b8..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_mode_edit.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_mode_edit.xml deleted file mode 100644 index 4c0c4dc6f13a1..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_mode_edit.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_notifications_alerted.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_notifications_alerted.xml deleted file mode 100644 index e022c63fdf06b..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_notifications_alerted.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_phone.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_phone.xml deleted file mode 100644 index e2e50a6efe401..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_phone.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_airplane.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_airplane.xml deleted file mode 100644 index 549244219eac3..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_airplane.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml deleted file mode 100644 index bef17486311fa..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_battery_saver.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_battery_saver.xml deleted file mode 100644 index 132ca949ce168..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_battery_saver.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_bluetooth.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_bluetooth.xml deleted file mode 100644 index 18afc87adb03a..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_bluetooth.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_dnd.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_dnd.xml deleted file mode 100644 index bfde123f87e0a..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_dnd.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_flashlight.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_flashlight.xml deleted file mode 100644 index dd4d22c2a5f47..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_flashlight.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_night_display_on.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_night_display_on.xml deleted file mode 100644 index a5e0f912c6982..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_night_display_on.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml deleted file mode 100644 index 5a43b6f27bc59..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_restart.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_restart.xml deleted file mode 100644 index afa318da9ebd3..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_restart.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_rules.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_rules.xml deleted file mode 100644 index 05907f830998c..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_rules.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index b5d4555a22f96..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_settings_bluetooth.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_settings_bluetooth.xml deleted file mode 100644 index 18afc87adb03a..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_settings_bluetooth.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml deleted file mode 100644 index bd5f9bbb816de..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml deleted file mode 100644 index 20bafafb565ef..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml deleted file mode 100644 index e634a91c303ae..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml deleted file mode 100644 index 417b34c5889c0..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml deleted file mode 100644 index f17b71d05067f..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_location.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_location.xml deleted file mode 100644 index a802bee9af5f0..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_location.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml deleted file mode 100644 index b3b0f5177f6ab..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_0.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_0.xml deleted file mode 100644 index 1aa930d433e81..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_0.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_1.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_1.xml deleted file mode 100644 index c139e6157e027..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_2.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_2.xml deleted file mode 100644 index 6e219c5c02d26..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_2.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_3.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_3.xml deleted file mode 100644 index 19d373e924750..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_3.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_4.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_4.xml deleted file mode 100644 index 6d088d41c8580..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_wifi_signal_4.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_work_apps_off.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_work_apps_off.xml deleted file mode 100644 index 0e534e00f89fd..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/ic_work_apps_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_activity_recognition.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_activity_recognition.xml deleted file mode 100644 index 0a4d367b88f8e..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_activity_recognition.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_aural.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_aural.xml deleted file mode 100644 index 1035507b97dab..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_aural.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_calendar.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_calendar.xml deleted file mode 100644 index 695ee4fff2cd0..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_calendar.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_call_log.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_call_log.xml deleted file mode 100644 index 3377ca2220d78..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_call_log.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_camera.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_camera.xml deleted file mode 100644 index f1feab0a56a19..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_camera.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_contacts.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_contacts.xml deleted file mode 100644 index f2787a4e2a043..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_contacts.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_location.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_location.xml deleted file mode 100644 index d9e75eead3299..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_location.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_microphone.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_microphone.xml deleted file mode 100644 index 61e89b20244d5..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_microphone.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_phone_calls.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_phone_calls.xml deleted file mode 100644 index de94ed0065b72..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_phone_calls.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_sensors.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_sensors.xml deleted file mode 100644 index 8e8bf0113f716..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_sensors.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_sms.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_sms.xml deleted file mode 100644 index f836fd0f7c656..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_sms.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_storage.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_storage.xml deleted file mode 100644 index 937da33fc6970..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_storage.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_visual.xml b/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_visual.xml deleted file mode 100644 index 9d4a2fb501357..0000000000000 --- a/packages/overlays/IconPackSamAndroidOverlay/res/drawable/perm_group_visual.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/Android.bp b/packages/overlays/IconPackSamLauncherOverlay/Android.bp deleted file mode 100644 index aa0cf0077ab90..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackSamLauncherOverlay", - theme: "IconPackSamLauncher", - product_specific: true, -} diff --git a/packages/overlays/IconPackSamLauncherOverlay/AndroidManifest.xml b/packages/overlays/IconPackSamLauncherOverlay/AndroidManifest.xml deleted file mode 100644 index 2efa010da5040..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_corp.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_corp.xml deleted file mode 100644 index 19d38e7719783..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_corp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index e7fe15fc5e54d..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_hourglass_top.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_hourglass_top.xml deleted file mode 100644 index e818e67f3cba7..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_hourglass_top.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_info_no_shadow.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_info_no_shadow.xml deleted file mode 100644 index be58877980282..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_info_no_shadow.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_install_no_shadow.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_install_no_shadow.xml deleted file mode 100644 index 5061ea3f69627..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_install_no_shadow.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_palette.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_palette.xml deleted file mode 100644 index 6916a30c5e9c0..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_palette.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_pin.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_pin.xml deleted file mode 100644 index 1fe87727677c5..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_pin.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index b5d4555a22f96..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_select.xml deleted file mode 100644 index 86a15e6958f47..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_select.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_setting.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_setting.xml deleted file mode 100644 index daa51f1c0b53e..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_setting.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_share.xml deleted file mode 100644 index 4aaa6593ecf25..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_share.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_smartspace_preferences.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_smartspace_preferences.xml deleted file mode 100644 index b1a9ea3cd26ef..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_smartspace_preferences.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_split_screen.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_split_screen.xml deleted file mode 100644 index 3766c9ad6d37a..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_split_screen.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml deleted file mode 100644 index d565038f9e36a..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_warning.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_warning.xml deleted file mode 100644 index 453ec10602811..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_warning.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_widget.xml b/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_widget.xml deleted file mode 100644 index f0919c5e05390..0000000000000 --- a/packages/overlays/IconPackSamLauncherOverlay/res/drawable/ic_widget.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/Android.bp b/packages/overlays/IconPackSamSettingsOverlay/Android.bp deleted file mode 100644 index a62037f3d5c23..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackSamSettingsOverlay", - theme: "IconPackSamSettings", - product_specific: true, -} diff --git a/packages/overlays/IconPackSamSettingsOverlay/AndroidManifest.xml b/packages/overlays/IconPackSamSettingsOverlay/AndroidManifest.xml deleted file mode 100644 index b4cfbbe506508..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/drag_handle.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/drag_handle.xml deleted file mode 100644 index 83c2c0b47f5bf..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/drag_handle.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_accessibility_generic.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_accessibility_generic.xml deleted file mode 100644 index 3be42b3c88ab5..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_accessibility_generic.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_add_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_add_24dp.xml deleted file mode 100644 index 6296d18b25a14..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_add_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_airplanemode_active.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_airplanemode_active.xml deleted file mode 100644 index 3acd8d0cf000e..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_airplanemode_active.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_android.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_android.xml deleted file mode 100644 index 1430d0c6eae1b..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_android.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_apps.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_apps.xml deleted file mode 100644 index 69835c0b867a1..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_apps.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_arrow_back.xml deleted file mode 100644 index 3ba71a0901a2e..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml deleted file mode 100644 index 3cecf5b649915..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_charging_full.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_charging_full.xml deleted file mode 100644 index aff78c3e00be4..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_charging_full.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml deleted file mode 100644 index 1447e05f8596d..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml deleted file mode 100644 index 448a5015fe153..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_call_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_call_24dp.xml deleted file mode 100644 index 4b57e59ccfc94..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_call_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cancel.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cancel.xml deleted file mode 100644 index 966faf1da5c9f..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cancel.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cast_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cast_24dp.xml deleted file mode 100644 index fd00e5a6c651f..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cast_24dp.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cellular_off.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cellular_off.xml deleted file mode 100644 index 00779e74d0130..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_cellular_off.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml deleted file mode 100644 index 156dc688b7ca9..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml deleted file mode 100644 index 0f6b1bda15fae..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index 252b58b3a5e48..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_delete.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_delete.xml deleted file mode 100644 index 67286766b893a..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_delete.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_devices_other.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_devices_other.xml deleted file mode 100644 index c692eebb1adff..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_devices_other.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml deleted file mode 100644 index 98638290b2403..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_eject_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_eject_24dp.xml deleted file mode 100644 index 9e1b8bcef1024..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_eject_24dp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_expand_less.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_expand_less.xml deleted file mode 100644 index 71a06ad47953c..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_expand_less.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_expand_more_inverse.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_expand_more_inverse.xml deleted file mode 100644 index 9ea52e2a440ce..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_expand_more_inverse.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_find_in_page_24px.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_find_in_page_24px.xml deleted file mode 100644 index f75c6e36a07ac..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_find_in_page_24px.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml deleted file mode 100644 index 937da33fc6970..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_friction_lock_closed.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_friction_lock_closed.xml deleted file mode 100644 index f0ce61b4fd7dc..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_friction_lock_closed.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml deleted file mode 100644 index fc3320d971bdc..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_headset_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_headset_24dp.xml deleted file mode 100644 index 482f87b9cc0f3..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_headset_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_help.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_help.xml deleted file mode 100644 index 5a8185a3b1732..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_help.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_help_actionbar.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_help_actionbar.xml deleted file mode 100644 index eaf1f540e3433..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_help_actionbar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_homepage_search.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_homepage_search.xml deleted file mode 100644 index 14655e23bcb03..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_homepage_search.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_info_outline_24.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_info_outline_24.xml deleted file mode 100644 index 6b64c4cb7d354..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_info_outline_24.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_local_movies.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_local_movies.xml deleted file mode 100644 index 66f544602a7fc..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_local_movies.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml deleted file mode 100644 index de94ed0065b72..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_media_stream.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_media_stream.xml deleted file mode 100644 index 1fac6854486e2..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_media_stream.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_media_stream_off.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_media_stream_off.xml deleted file mode 100644 index b61a355570f48..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_media_stream_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_network_cell.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_network_cell.xml deleted file mode 100644 index b89c5b99cd258..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_network_cell.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications.xml deleted file mode 100644 index 86e1fb2d8a81a..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index e022c63fdf06b..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml deleted file mode 100644 index 0b05404febbcb..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_phone_info.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_phone_info.xml deleted file mode 100644 index 54336d0ca1ff9..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_phone_info.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_photo_library.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_photo_library.xml deleted file mode 100644 index 9d4a2fb501357..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_photo_library.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_restore.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_restore.xml deleted file mode 100644 index c41ec1854c980..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_restore.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_search_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_search_24dp.xml deleted file mode 100644 index f2fd115e718c4..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_search_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accent.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accent.xml deleted file mode 100644 index 0f0f737b7e502..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accent.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accessibility.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accessibility.xml deleted file mode 100644 index 4a4baf9121bb9..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accessibility.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accounts.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accounts.xml deleted file mode 100644 index 334b2b7bde48a..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_accounts.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_backup.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_backup.xml deleted file mode 100644 index 1c8b9d221ca89..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_backup.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_battery_white.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_battery_white.xml deleted file mode 100644 index fff56cede23fb..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_battery_white.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_data_usage.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_data_usage.xml deleted file mode 100644 index 939e832b161c2..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_data_usage.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_date_time.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_date_time.xml deleted file mode 100644 index 4155538384393..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_date_time.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_delete.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_delete.xml deleted file mode 100644 index da00c9252cbd8..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_delete.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_disable.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_disable.xml deleted file mode 100644 index b09566acd0de2..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_disable.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_display_white.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_display_white.xml deleted file mode 100644 index 723c36c669ea3..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_display_white.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_enable.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_enable.xml deleted file mode 100644 index b6d2790c9b287..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_enable.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_force_stop.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_force_stop.xml deleted file mode 100644 index f3dd2a1046d87..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_force_stop.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_gestures.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_gestures.xml deleted file mode 100644 index f992127b8b051..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_gestures.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_home.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_home.xml deleted file mode 100644 index 162e4dce706bc..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_home.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_language.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_language.xml deleted file mode 100644 index dac32440a01f5..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_language.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_location.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_location.xml deleted file mode 100644 index 9230e3eb8a08e..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_location.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_multiuser.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_multiuser.xml deleted file mode 100644 index b72e31d6d8190..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_multiuser.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_night_display.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_night_display.xml deleted file mode 100644 index 35ce30bac8cf7..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_night_display.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_open.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_open.xml deleted file mode 100644 index 7bec0aa2ca71c..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_open.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_print.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_print.xml deleted file mode 100644 index f2631fb65b5db..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_print.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_privacy.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_privacy.xml deleted file mode 100644 index 4392c121c4ff9..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_privacy.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_security_white.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_security_white.xml deleted file mode 100644 index baa6a0a117007..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_security_white.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_sim.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_sim.xml deleted file mode 100644 index 78426a5400f34..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_sim.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml deleted file mode 100644 index 54aa6ce5c9cac..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_wireless.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_wireless.xml deleted file mode 100644 index c40f314e8c78c..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_settings_wireless.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_storage.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_storage.xml deleted file mode 100644 index 1810a3114c4e4..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_storage.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_storage_white.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_storage_white.xml deleted file mode 100644 index 2ae828d8be551..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_storage_white.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_suggestion_night_display.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_suggestion_night_display.xml deleted file mode 100644 index 35ce30bac8cf7..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_suggestion_night_display.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_sync.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_sync.xml deleted file mode 100644 index 2f5173a0b722f..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_sync.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml deleted file mode 100644 index c177dfa418ddf..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_system_update.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_system_update.xml deleted file mode 100644 index be6b70d6b2071..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_system_update.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml deleted file mode 100644 index 92f98dd258c5d..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 021d6f11f345d..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_volume_up_24dp.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_volume_up_24dp.xml deleted file mode 100644 index 4fc2489d65414..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_volume_up_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_vpn_key.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_vpn_key.xml deleted file mode 100644 index 6efc8b7199968..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_vpn_key.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_wifi_tethering.xml b/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_wifi_tethering.xml deleted file mode 100644 index 28511b29dda08..0000000000000 --- a/packages/overlays/IconPackSamSettingsOverlay/res/drawable/ic_wifi_tethering.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/Android.bp b/packages/overlays/IconPackSamSystemUIOverlay/Android.bp deleted file mode 100644 index 96ba7a096e6aa..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (C) 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackSamSystemUIOverlay", - theme: "IconPackSamSystemUI", - product_specific: true, -} diff --git a/packages/overlays/IconPackSamSystemUIOverlay/AndroidManifest.xml b/packages/overlays/IconPackSamSystemUIOverlay/AndroidManifest.xml deleted file mode 100644 index a71e96313f1a3..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_lock.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_lock.xml deleted file mode 100644 index 8d9d015262edb..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_lock.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_scanning.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_scanning.xml deleted file mode 100644 index 27564a084dedb..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_scanning.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_to_error.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_to_error.xml deleted file mode 100644 index e3c48aa401501..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_to_error.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_unlock.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_unlock.xml deleted file mode 100644 index 9b97c0497b21e..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/anim/lock_unlock.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_alarm.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_alarm.xml deleted file mode 100644 index 3844e419d1441..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_alarm_dim.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_alarm_dim.xml deleted file mode 100644 index 3844e419d1441..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_alarm_dim.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_arrow_back.xml deleted file mode 100644 index 3ba71a0901a2e..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml deleted file mode 100644 index 9a581a1be7c94..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_brightness_thumb.xml deleted file mode 100644 index 681fd3aeb110a..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_brightness_thumb.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_camera.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_camera.xml deleted file mode 100644 index e6bb740c88419..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_camera.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_cast.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_cast.xml deleted file mode 100644 index bf4145e2f7779..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_cast.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_cast_connected.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_cast_connected.xml deleted file mode 100644 index c33bccbbfc325..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_cast_connected.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_close_white.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_close_white.xml deleted file mode 100644 index 731234fc791fe..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_close_white.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index f3ebc969d51bf..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_data_saver_off.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_data_saver_off.xml deleted file mode 100644 index 66beba7076ea4..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_data_saver_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 56624225b33ca..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_headset.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_headset.xml deleted file mode 100644 index aa773c44def6b..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_headset.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_headset_mic.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_headset_mic.xml deleted file mode 100644 index 4ac9b7c5213ca..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_headset_mic.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_hotspot.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_hotspot.xml deleted file mode 100644 index 15e16e86d57ea..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_hotspot.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_info.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_info.xml deleted file mode 100644 index 437afcce6add4..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_info.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_info_outline.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_info_outline.xml deleted file mode 100644 index 437afcce6add4..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_info_outline.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_invert_colors.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_invert_colors.xml deleted file mode 100644 index afa3b9e6b2c5f..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_invert_colors.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_location.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_location.xml deleted file mode 100644 index 206d92c41d2d7..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_location.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index fc4cde52c7fce..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index e022c63fdf06b..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_notifications_silence.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_notifications_silence.xml deleted file mode 100644 index dd1520a1e8ed0..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_notifications_silence.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_power_low.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_power_low.xml deleted file mode 100644 index 448a5015fe153..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_power_low.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_power_saver.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_power_saver.xml deleted file mode 100644 index df2929a746cb6..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_power_saver.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml deleted file mode 100644 index 849cb1ffc421a..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_cancel.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_cancel.xml deleted file mode 100644 index 966faf1da5c9f..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_cancel.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_no_sim.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_no_sim.xml deleted file mode 100644 index 66faa46c2e3af..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_no_sim.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml deleted file mode 100644 index 0e545a685035f..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml deleted file mode 100644 index 8c9ef821ae865..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml deleted file mode 100644 index e6af31126d16c..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml deleted file mode 100644 index e6af31126d16c..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml deleted file mode 100644 index 5b47734a202b1..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml deleted file mode 100644 index 99a7f6507372e..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenrecord.xml deleted file mode 100644 index 1a7c63c088944..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenrecord.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index b5d4555a22f96..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot_delete.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot_delete.xml deleted file mode 100644 index da00c9252cbd8..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_screenshot_delete.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_settings.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_settings.xml deleted file mode 100644 index 46e33ef74578d..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_settings.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_swap_vert.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_swap_vert.xml deleted file mode 100644 index c3b3b98985e07..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_swap_vert.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml deleted file mode 100644 index 7b719284fb0df..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml deleted file mode 100644 index 7d9cf7f3ddaf0..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml deleted file mode 100644 index 929e1cce00c70..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml deleted file mode 100644 index 86ddf7a475c67..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml deleted file mode 100644 index 8a7766a9211db..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_media.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_media.xml deleted file mode 100644 index 1fac6854486e2..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_media.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_media_mute.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_media_mute.xml deleted file mode 100644 index b61a355570f48..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_media_mute.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml deleted file mode 100644 index f5e3646b8e867..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml deleted file mode 100644 index 90989e8dc7df9..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer.xml deleted file mode 100644 index 86e1fb2d8a81a..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml deleted file mode 100644 index a6e5300ba51e9..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index afc88558dd67a..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_voice.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_voice.xml deleted file mode 100644 index de94ed0065b72..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/ic_volume_voice.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml deleted file mode 100644 index 9bcf4be6cb616..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_mic_none.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_mic_none.xml deleted file mode 100644 index cfffd0cf7b4bc..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_mic_none.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml b/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml deleted file mode 100644 index 2fe08416fe3e0..0000000000000 --- a/packages/overlays/IconPackSamSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/Android.bp b/packages/overlays/IconPackSamThemePickerOverlay/Android.bp deleted file mode 100644 index 7376f03a2c7f3..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackSamThemePickerOverlay", - theme: "IconPackSamThemePicker", - product_specific: true, -} diff --git a/packages/overlays/IconPackSamThemePickerOverlay/AndroidManifest.xml b/packages/overlays/IconPackSamThemePickerOverlay/AndroidManifest.xml deleted file mode 100644 index 67446b2014c5a..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_add_24px.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_add_24px.xml deleted file mode 100644 index 5c5463a21450e..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_add_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_close_24px.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_close_24px.xml deleted file mode 100644 index 731234fc791fe..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_close_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_colorize_24px.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_colorize_24px.xml deleted file mode 100644 index f9b61639a6c0f..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_colorize_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_font.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_font.xml deleted file mode 100644 index 46f22023be3b2..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_font.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_clock.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_clock.xml deleted file mode 100644 index 770b167dd95cd..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_clock.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_grid.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_grid.xml deleted file mode 100644 index 5d35c6ca13202..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_grid.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_theme.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_theme.xml deleted file mode 100644 index c4eebb2f04069..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_theme.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml deleted file mode 100644 index 2c839936feac4..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_shapes_24px.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_shapes_24px.xml deleted file mode 100644 index c50144d5f7754..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_shapes_24px.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_tune.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_tune.xml deleted file mode 100644 index 5a4cce12eef5c..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_tune.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_wifi_24px.xml b/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_wifi_24px.xml deleted file mode 100644 index 5e57cd3b210bc..0000000000000 --- a/packages/overlays/IconPackSamThemePickerOverlay/res/drawable/ic_wifi_24px.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/Android.bp b/packages/overlays/IconPackVictorAndroidOverlay/Android.bp deleted file mode 100644 index ee7377863287c..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (C) 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackVictorAndroidOverlay", - theme: "IconPackVictorAndroid", - product_specific: true, -} diff --git a/packages/overlays/IconPackVictorAndroidOverlay/AndroidManifest.xml b/packages/overlays/IconPackVictorAndroidOverlay/AndroidManifest.xml deleted file mode 100644 index e940ed8fb8374..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm.xml deleted file mode 100644 index 46be78160af7a..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml deleted file mode 100644 index 47693a4c37ead..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_audio_alarm_mute.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_battery_80_24dp.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_battery_80_24dp.xml deleted file mode 100644 index 82a3f56151e67..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_battery_80_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml deleted file mode 100644 index 2312d9456ce60..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bluetooth_share_icon.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml deleted file mode 100644 index 035455df11bb9..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bluetooth_transient_animation.xml +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml deleted file mode 100644 index ead797365e69f..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_headphones_a2dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml deleted file mode 100644 index 7e29ed8734f46..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_headset_hfp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml deleted file mode 100644 index 686a1472a3f80..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_hearing_aid.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_laptop.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_laptop.xml deleted file mode 100644 index 76e18e12018ee..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_laptop.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_misc_hid.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_misc_hid.xml deleted file mode 100644 index c44c4ced91bac..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_misc_hid.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_network_pan.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_network_pan.xml deleted file mode 100644 index f90366c09367d..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_network_pan.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml deleted file mode 100644 index 2c301ba62c26c..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_bt_pointing_hid.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_corp_badge.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_corp_badge.xml deleted file mode 100644 index ca8ce2880ec8b..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_corp_badge.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_expand_more.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_expand_more.xml deleted file mode 100644 index eccf03d851ca1..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_expand_more.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_faster_emergency.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_faster_emergency.xml deleted file mode 100644 index 1aaa9aa33ae8c..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_faster_emergency.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_file_copy.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_file_copy.xml deleted file mode 100644 index 3f92b7b6dfe1f..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_file_copy.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml deleted file mode 100644 index 235e67f319744..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_hotspot_transient_animation.xml +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock.xml deleted file mode 100644 index 642443684bfe5..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_bugreport.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_bugreport.xml deleted file mode 100644 index 91ff7fd6fb407..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_bugreport.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_open.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_open.xml deleted file mode 100644 index c26b8ba67c8a1..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_open.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_power_off.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_power_off.xml deleted file mode 100644 index 6b26697f073a0..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lock_power_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index 9c31c23bdc4db..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_mode_edit.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_mode_edit.xml deleted file mode 100644 index fbc5271c9ae0d..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_mode_edit.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_notifications_alerted.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_notifications_alerted.xml deleted file mode 100644 index 1e25d27f0eb35..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_notifications_alerted.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_phone.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_phone.xml deleted file mode 100644 index 6cdcbf00ba1e0..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_phone.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_airplane.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_airplane.xml deleted file mode 100644 index 485ab868de4b7..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_airplane.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml deleted file mode 100644 index 89d88b802c016..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_auto_rotate.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_battery_saver.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_battery_saver.xml deleted file mode 100644 index 8f72226301107..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_battery_saver.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_bluetooth.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_bluetooth.xml deleted file mode 100644 index 2f4c0b145341b..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_bluetooth.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_dnd.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_dnd.xml deleted file mode 100644 index ef71006b7502b..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_dnd.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_flashlight.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_flashlight.xml deleted file mode 100644 index c5a7166fbd823..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_flashlight.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_night_display_on.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_night_display_on.xml deleted file mode 100644 index de342b29d080d..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_night_display_on.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml deleted file mode 100644 index 5b81e9f3bc4ff..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_qs_ui_mode_night.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_restart.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_restart.xml deleted file mode 100644 index 362eff64b7130..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_restart.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_rules.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_rules.xml deleted file mode 100644 index 11328db0198f3..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_rules.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index cbd22c6bfeede..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_settings_bluetooth.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_settings_bluetooth.xml deleted file mode 100644 index 2f4c0b145341b..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_settings_bluetooth.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml deleted file mode 100644 index bb8995e28a5c7..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_0_4_bar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml deleted file mode 100644 index a412c56cf1fff..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_1_4_bar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml deleted file mode 100644 index e581b528eccbb..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_2_4_bar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml deleted file mode 100644 index 38672ec006548..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_3_4_bar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml deleted file mode 100644 index 4a00c3cd002dc..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_cellular_4_4_bar.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_location.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_location.xml deleted file mode 100644 index 7975db696d2d0..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_location.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml deleted file mode 100644 index b988fdf671918..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_signal_wifi_transient_animation.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_0.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_0.xml deleted file mode 100644 index 3f5f7cd6e9fe3..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_0.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_1.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_1.xml deleted file mode 100644 index ed3fe3e9cced8..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_2.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_2.xml deleted file mode 100644 index 083473eb321a1..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_2.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_3.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_3.xml deleted file mode 100644 index fa365a92a1952..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_3.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_4.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_4.xml deleted file mode 100644 index 7b153e3fe5f43..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_wifi_signal_4.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_work_apps_off.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_work_apps_off.xml deleted file mode 100644 index 22540e2dee15a..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/ic_work_apps_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_activity_recognition.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_activity_recognition.xml deleted file mode 100644 index 68a46a645466d..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_activity_recognition.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_aural.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_aural.xml deleted file mode 100644 index 320498ae613fa..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_aural.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_calendar.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_calendar.xml deleted file mode 100644 index 64b7457d1b2e3..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_calendar.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_call_log.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_call_log.xml deleted file mode 100644 index 6d368dbc3c4a8..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_call_log.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_camera.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_camera.xml deleted file mode 100644 index 001c137314745..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_camera.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_contacts.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_contacts.xml deleted file mode 100644 index 189b9df81743f..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_contacts.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_location.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_location.xml deleted file mode 100644 index 9114d777b43de..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_location.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_microphone.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_microphone.xml deleted file mode 100644 index f80b1bee7da11..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_microphone.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_phone_calls.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_phone_calls.xml deleted file mode 100644 index 41acbc4585ca2..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_phone_calls.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_sensors.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_sensors.xml deleted file mode 100644 index 94bf7ad3ae44e..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_sensors.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_sms.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_sms.xml deleted file mode 100644 index 64212577514ed..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_sms.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_storage.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_storage.xml deleted file mode 100644 index 56516a36591a0..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_storage.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_visual.xml b/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_visual.xml deleted file mode 100644 index 7b5275348f34f..0000000000000 --- a/packages/overlays/IconPackVictorAndroidOverlay/res/drawable/perm_group_visual.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/Android.bp b/packages/overlays/IconPackVictorLauncherOverlay/Android.bp deleted file mode 100644 index a0cd45a81e20b..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackVictorLauncherOverlay", - theme: "IconPackVictorLauncher", - product_specific: true, -} diff --git a/packages/overlays/IconPackVictorLauncherOverlay/AndroidManifest.xml b/packages/overlays/IconPackVictorLauncherOverlay/AndroidManifest.xml deleted file mode 100644 index a7122eb87707c..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_corp.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_corp.xml deleted file mode 100644 index 6e7931bc8bb9c..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_corp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 59dcfd7bee295..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_hourglass_top.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_hourglass_top.xml deleted file mode 100644 index fa065a3d03c13..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_hourglass_top.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_info_no_shadow.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_info_no_shadow.xml deleted file mode 100644 index 8743a90c5de52..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_info_no_shadow.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_install_no_shadow.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_install_no_shadow.xml deleted file mode 100644 index 0bc6dc20b6659..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_install_no_shadow.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_palette.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_palette.xml deleted file mode 100644 index 82eab08e6739e..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_palette.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_pin.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_pin.xml deleted file mode 100644 index 8831e8836ebfb..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_pin.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index cbd22c6bfeede..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_select.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_select.xml deleted file mode 100644 index 05597dd661079..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_select.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_setting.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_setting.xml deleted file mode 100644 index ff32a6e6cf4e3..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_setting.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_share.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_share.xml deleted file mode 100644 index 2ddb128f54992..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_share.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_smartspace_preferences.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_smartspace_preferences.xml deleted file mode 100644 index 66e89c46937ee..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_smartspace_preferences.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_split_screen.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_split_screen.xml deleted file mode 100644 index bf92a39fd5b24..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_split_screen.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml deleted file mode 100644 index e00105947dfa6..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_uninstall_no_shadow.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_warning.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_warning.xml deleted file mode 100644 index 26909cd0a2b1e..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_warning.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_widget.xml b/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_widget.xml deleted file mode 100644 index 29214883f8df0..0000000000000 --- a/packages/overlays/IconPackVictorLauncherOverlay/res/drawable/ic_widget.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/Android.bp b/packages/overlays/IconPackVictorSettingsOverlay/Android.bp deleted file mode 100644 index 7807c6bcccc86..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackVictorSettingsOverlay", - theme: "IconPackVictorSettings", - product_specific: true, -} diff --git a/packages/overlays/IconPackVictorSettingsOverlay/AndroidManifest.xml b/packages/overlays/IconPackVictorSettingsOverlay/AndroidManifest.xml deleted file mode 100644 index e2336d5244ae8..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/drag_handle.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/drag_handle.xml deleted file mode 100644 index 955a7c6b7db7a..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/drag_handle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_accessibility_generic.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_accessibility_generic.xml deleted file mode 100644 index 7f80c7d18df82..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_accessibility_generic.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_add_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_add_24dp.xml deleted file mode 100644 index 1b4838236c7ce..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_add_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_airplanemode_active.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_airplanemode_active.xml deleted file mode 100644 index 2efbb065c27dc..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_airplanemode_active.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_android.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_android.xml deleted file mode 100644 index 1430d0c6eae1b..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_android.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_apps.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_apps.xml deleted file mode 100644 index d62b777592b7c..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_apps.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_arrow_back.xml deleted file mode 100644 index ee70746857fc8..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml deleted file mode 100644 index eccf03d851ca1..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_arrow_down_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_charging_full.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_charging_full.xml deleted file mode 100644 index f313ee02bd851..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_charging_full.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml deleted file mode 100644 index 5c54383c79551..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_status_good_24dp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml deleted file mode 100644 index 1e43dc5f911e6..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_battery_status_maybe_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_call_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_call_24dp.xml deleted file mode 100644 index bd85e5cca5aba..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_call_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cancel.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cancel.xml deleted file mode 100644 index afc3de7920dd3..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cancel.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cast_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cast_24dp.xml deleted file mode 100644 index 5f29bc60f8599..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cast_24dp.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cellular_off.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cellular_off.xml deleted file mode 100644 index 0f0e2be673101..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_cellular_off.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml deleted file mode 100644 index ae785801f0579..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_chevron_right_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml deleted file mode 100644 index 3f92b7b6dfe1f..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_content_copy_grey600_24dp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index 02de755b1abb6..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_delete.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_delete.xml deleted file mode 100644 index 5d4acbd017e1c..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_delete.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_devices_other.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_devices_other.xml deleted file mode 100644 index 71fb7a3d50966..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_devices_other.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml deleted file mode 100644 index 3a6836b2c03c3..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_do_not_disturb_on_24dp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_eject_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_eject_24dp.xml deleted file mode 100644 index 96f456ff620ae..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_eject_24dp.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_expand_less.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_expand_less.xml deleted file mode 100644 index 0582b15a974ca..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_expand_less.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_expand_more_inverse.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_expand_more_inverse.xml deleted file mode 100644 index f65131d257b8b..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_expand_more_inverse.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_find_in_page_24px.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_find_in_page_24px.xml deleted file mode 100644 index f016628acfddf..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_find_in_page_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml deleted file mode 100644 index 56516a36591a0..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_folder_vd_theme_24.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_friction_lock_closed.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_friction_lock_closed.xml deleted file mode 100644 index 204c3b2197016..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_friction_lock_closed.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml deleted file mode 100644 index d87595afb4848..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_gray_scale_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_headset_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_headset_24dp.xml deleted file mode 100644 index ead797365e69f..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_headset_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_help.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_help.xml deleted file mode 100644 index 32c603dc7a26f..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_help.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_help_actionbar.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_help_actionbar.xml deleted file mode 100644 index 36e8a72f77196..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_help_actionbar.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_homepage_search.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_homepage_search.xml deleted file mode 100644 index 0f057916cee7a..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_homepage_search.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_info_outline_24.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_info_outline_24.xml deleted file mode 100644 index 13e8c3676808c..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_info_outline_24.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_local_movies.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_local_movies.xml deleted file mode 100644 index c62a36af6b867..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_local_movies.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml deleted file mode 100644 index 41acbc4585ca2..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_local_phone_24_lib.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_media_stream.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_media_stream.xml deleted file mode 100644 index 80959446b432e..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_media_stream.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_media_stream_off.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_media_stream_off.xml deleted file mode 100644 index c27e7db103d7d..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_media_stream_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_network_cell.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_network_cell.xml deleted file mode 100644 index 50361ebfa7f7b..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_network_cell.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications.xml deleted file mode 100644 index 21abb2ea22b5a..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index 1e25d27f0eb35..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml deleted file mode 100644 index e868f65d404f9..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_notifications_off_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_phone_info.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_phone_info.xml deleted file mode 100644 index 1307f38494f3c..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_phone_info.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_photo_library.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_photo_library.xml deleted file mode 100644 index 7b5275348f34f..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_photo_library.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_restore.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_restore.xml deleted file mode 100644 index c41ec1854c980..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_restore.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_search_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_search_24dp.xml deleted file mode 100644 index 2c64287c0ec31..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_search_24dp.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accent.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accent.xml deleted file mode 100644 index 0a6b9c668f007..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accent.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accessibility.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accessibility.xml deleted file mode 100644 index 5983b89e4dc81..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accessibility.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accounts.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accounts.xml deleted file mode 100644 index 3a997b085d408..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_accounts.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_backup.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_backup.xml deleted file mode 100644 index bd4666251210f..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_backup.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_battery_white.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_battery_white.xml deleted file mode 100644 index ca9bfc9ad8da3..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_battery_white.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_data_usage.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_data_usage.xml deleted file mode 100644 index 3f4449b93950e..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_data_usage.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_date_time.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_date_time.xml deleted file mode 100644 index 6033d216792cb..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_date_time.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_delete.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_delete.xml deleted file mode 100644 index f6d62536d755b..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_delete.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_disable.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_disable.xml deleted file mode 100644 index 2a0c77e9af776..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_disable.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_display_white.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_display_white.xml deleted file mode 100644 index adf1c82b729d1..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_display_white.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_enable.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_enable.xml deleted file mode 100644 index 42cf839b0ad9c..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_enable.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_force_stop.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_force_stop.xml deleted file mode 100644 index ad873c2b8be19..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_force_stop.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_gestures.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_gestures.xml deleted file mode 100644 index 45a3b24f729d0..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_gestures.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_home.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_home.xml deleted file mode 100644 index 6327002c4e276..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_home.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_language.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_language.xml deleted file mode 100644 index c5e8893b0b090..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_language.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_location.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_location.xml deleted file mode 100644 index 90ad165e8fdac..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_location.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_multiuser.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_multiuser.xml deleted file mode 100644 index 9416b5f26eafb..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_multiuser.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_night_display.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_night_display.xml deleted file mode 100644 index 92cc05ee293e2..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_night_display.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_open.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_open.xml deleted file mode 100644 index e4a8061e875d3..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_open.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_print.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_print.xml deleted file mode 100644 index 4d7fa2066c44a..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_print.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_privacy.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_privacy.xml deleted file mode 100644 index f499227f9d80b..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_privacy.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_security_white.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_security_white.xml deleted file mode 100644 index 49d31f73317b8..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_security_white.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_sim.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_sim.xml deleted file mode 100644 index 85dea66336123..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_sim.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml deleted file mode 100644 index b668eb20c28ab..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_system_dashboard_white.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_wireless.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_wireless.xml deleted file mode 100644 index 9223902d5a233..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_settings_wireless.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_storage.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_storage.xml deleted file mode 100644 index c91221b1d1bf9..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_storage.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_storage_white.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_storage_white.xml deleted file mode 100644 index 22f6092a35ed4..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_storage_white.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_suggestion_night_display.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_suggestion_night_display.xml deleted file mode 100644 index 92cc05ee293e2..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_suggestion_night_display.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_sync.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_sync.xml deleted file mode 100644 index d2aadc9560635..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_sync.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml deleted file mode 100644 index 3a83b592c8d10..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_sync_problem_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_system_update.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_system_update.xml deleted file mode 100644 index f8b490db72ace..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_system_update.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml deleted file mode 100644 index 928dc5d4a8b2e..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_videogame_vd_theme_24.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 6d04ffb75c65a..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_volume_up_24dp.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_volume_up_24dp.xml deleted file mode 100644 index 964f668978223..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_volume_up_24dp.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_vpn_key.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_vpn_key.xml deleted file mode 100644 index 47080e22f8ed7..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_vpn_key.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_wifi_tethering.xml b/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_wifi_tethering.xml deleted file mode 100644 index f2ab3be234db8..0000000000000 --- a/packages/overlays/IconPackVictorSettingsOverlay/res/drawable/ic_wifi_tethering.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/Android.bp b/packages/overlays/IconPackVictorSystemUIOverlay/Android.bp deleted file mode 100644 index 2deb6cd73ba13..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright (C) 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackVictorSystemUIOverlay", - theme: "IconPackVictorSystemUI", - product_specific: true, -} diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/AndroidManifest.xml b/packages/overlays/IconPackVictorSystemUIOverlay/AndroidManifest.xml deleted file mode 100644 index ca812b17c3176..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_lock.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_lock.xml deleted file mode 100644 index 2c2239fbeff03..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_lock.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_scanning.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_scanning.xml deleted file mode 100644 index 64a9f8c578452..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_scanning.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_to_error.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_to_error.xml deleted file mode 100644 index 76b1e2d261128..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_to_error.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_unlock.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_unlock.xml deleted file mode 100644 index 2d0e4bdaa0170..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/anim/lock_unlock.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_alarm.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_alarm.xml deleted file mode 100644 index 3cb050b310b3b..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_alarm.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_alarm_dim.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_alarm_dim.xml deleted file mode 100644 index 3cb050b310b3b..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_alarm_dim.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_arrow_back.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_arrow_back.xml deleted file mode 100644 index ee70746857fc8..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_arrow_back.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml deleted file mode 100644 index 830a6a200f491..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_bluetooth_connected.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_brightness_thumb.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_brightness_thumb.xml deleted file mode 100644 index 4121433c4e958..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_brightness_thumb.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_camera.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_camera.xml deleted file mode 100644 index 1933dc64f2769..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_camera.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_cast.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_cast.xml deleted file mode 100644 index 1cf8f26232da5..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_cast.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_cast_connected.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_cast_connected.xml deleted file mode 100644 index 3625af5173bf4..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_cast_connected.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_close_white.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_close_white.xml deleted file mode 100644 index 9f2a4c037a964..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_close_white.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_data_saver.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_data_saver.xml deleted file mode 100644 index 85dfdb7cd2eef..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_data_saver.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_data_saver_off.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_data_saver_off.xml deleted file mode 100644 index c915797a0f386..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_data_saver_off.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_drag_handle.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_drag_handle.xml deleted file mode 100644 index 9b216bd29dd80..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_drag_handle.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_headset.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_headset.xml deleted file mode 100644 index 7a07d6ecb8142..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_headset.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_headset_mic.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_headset_mic.xml deleted file mode 100644 index e82de09ed493a..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_headset_mic.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_hotspot.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_hotspot.xml deleted file mode 100644 index aaebe8bf66849..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_hotspot.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_info.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_info.xml deleted file mode 100644 index 0594b9abd1bf0..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_info.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_info_outline.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_info_outline.xml deleted file mode 100644 index 0594b9abd1bf0..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_info_outline.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_invert_colors.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_invert_colors.xml deleted file mode 100644 index f67b051e8a466..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_invert_colors.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_location.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_location.xml deleted file mode 100644 index 02678bac2f558..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_location.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml deleted file mode 100644 index ebfc6e3be1001..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_lockscreen_ime.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_notifications_alert.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_notifications_alert.xml deleted file mode 100644 index 1e25d27f0eb35..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_notifications_alert.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_notifications_silence.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_notifications_silence.xml deleted file mode 100644 index 3f9d77af39776..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_notifications_silence.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_power_low.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_power_low.xml deleted file mode 100644 index 1e43dc5f911e6..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_power_low.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_power_saver.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_power_saver.xml deleted file mode 100644 index e593394b95287..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_power_saver.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml deleted file mode 100644 index f90366c09367d..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_bluetooth_connecting.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_cancel.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_cancel.xml deleted file mode 100644 index afc3de7920dd3..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_cancel.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_no_sim.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_no_sim.xml deleted file mode 100644 index 77d79cc63aa4f..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_no_sim.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml deleted file mode 100644 index 64cd534e06a1f..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_0.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml deleted file mode 100644 index c7b280b3e1dd9..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_1.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml deleted file mode 100644 index 798d5bc79f472..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_2.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml deleted file mode 100644 index e7e2b5cbac873..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_3.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml deleted file mode 100644 index 44d5a3dc1fb67..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_4.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml deleted file mode 100644 index 52fd3e0dff5e4..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_qs_wifi_disconnected.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenrecord.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenrecord.xml deleted file mode 100644 index 653dfe51f474c..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenrecord.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot.xml deleted file mode 100644 index cbd22c6bfeede..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot_delete.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot_delete.xml deleted file mode 100644 index f6d62536d755b..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_screenshot_delete.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_settings.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_settings.xml deleted file mode 100644 index 57ccecc17e1f7..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_settings.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_swap_vert.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_swap_vert.xml deleted file mode 100644 index 3f61cb65bad7d..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_swap_vert.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml deleted file mode 100644 index 30cd25e63e7d4..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_tune_black_16dp.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml deleted file mode 100644 index 47693a4c37ead..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_alarm_mute.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml deleted file mode 100644 index e58fc88cb4c97..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_bt_sco.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml deleted file mode 100644 index e7f7a25c074d1..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_collapse_animation.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml deleted file mode 100644 index deaaf82556dd4..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_expand_animation.xml +++ /dev/null @@ -1,18 +0,0 @@ - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_media.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_media.xml deleted file mode 100644 index 80959446b432e..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_media.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_media_mute.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_media_mute.xml deleted file mode 100644 index c27e7db103d7d..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_media_mute.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml deleted file mode 100644 index 57317315d6068..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_odi_captions.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml deleted file mode 100644 index 8c4d9058fcc8e..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_odi_captions_disabled.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer.xml deleted file mode 100644 index 21abb2ea22b5a..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml deleted file mode 100644 index 2f90f80f519c5..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer_mute.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml deleted file mode 100644 index 1e42d03399c5f..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_ringer_vibrate.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_voice.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_voice.xml deleted file mode 100644 index 41acbc4585ca2..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/ic_volume_voice.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml deleted file mode 100644 index c13b9afdc78dc..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_managed_profile_status.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_mic_none.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_mic_none.xml deleted file mode 100644 index b3f664a66f502..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_mic_none.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml b/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml deleted file mode 100644 index 202a433ee6981..0000000000000 --- a/packages/overlays/IconPackVictorSystemUIOverlay/res/drawable/stat_sys_vpn_ic.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/Android.bp b/packages/overlays/IconPackVictorThemePickerOverlay/Android.bp deleted file mode 100644 index 690d0a0ecda39..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconPackVictorThemePickerOverlay", - theme: "IconPackVictorThemePicker", - product_specific: true, -} diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/AndroidManifest.xml b/packages/overlays/IconPackVictorThemePickerOverlay/AndroidManifest.xml deleted file mode 100644 index 9635febfd5454..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/AndroidManifest.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_add_24px.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_add_24px.xml deleted file mode 100644 index f57b3c883f961..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_add_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_close_24px.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_close_24px.xml deleted file mode 100644 index 9f2a4c037a964..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_close_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_colorize_24px.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_colorize_24px.xml deleted file mode 100644 index 67db8c96fc2cd..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_colorize_24px.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_font.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_font.xml deleted file mode 100644 index 8ae51b8b21245..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_font.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_clock.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_clock.xml deleted file mode 100644 index 3ce0d62c834cc..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_clock.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_grid.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_grid.xml deleted file mode 100644 index 41721f04f06e4..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_grid.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_theme.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_theme.xml deleted file mode 100644 index 17228cef6b145..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_theme.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml deleted file mode 100644 index e5fbf29bc34e0..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_nav_wallpaper.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_shapes_24px.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_shapes_24px.xml deleted file mode 100644 index 00b2c7e0aa2ea..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_shapes_24px.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_tune.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_tune.xml deleted file mode 100644 index f66089067da7a..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_tune.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_wifi_24px.xml b/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_wifi_24px.xml deleted file mode 100644 index 9aa5224028a2d..0000000000000 --- a/packages/overlays/IconPackVictorThemePickerOverlay/res/drawable/ic_wifi_24px.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/packages/overlays/IconShapeHeartOverlay/Android.bp b/packages/overlays/IconShapeHeartOverlay/Android.bp deleted file mode 100644 index 1da8f4ff7fb36..0000000000000 --- a/packages/overlays/IconShapeHeartOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconShapeHeartOverlay", - theme: "IconShapeHeart", - product_specific: true, -} diff --git a/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml b/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml deleted file mode 100644 index 8fb19df33178e..0000000000000 --- a/packages/overlays/IconShapeHeartOverlay/AndroidManifest.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconShapeHeartOverlay/res/values/config.xml b/packages/overlays/IconShapeHeartOverlay/res/values/config.xml deleted file mode 100644 index f9929f5f19681..0000000000000 --- a/packages/overlays/IconShapeHeartOverlay/res/values/config.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - "M50,20 C45,0 30,0 25,0 20,0 0,5 0,34 0,72 40,97 50,100 60,97 100,72 100,34 100,5 80,0 75,0 70,0 55,0 50,20 Z" - - false - - 8dp - - 16dp - - - diff --git a/packages/overlays/IconShapeHeartOverlay/res/values/strings.xml b/packages/overlays/IconShapeHeartOverlay/res/values/strings.xml deleted file mode 100644 index 92c33fa3032c8..0000000000000 --- a/packages/overlays/IconShapeHeartOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Heart - - diff --git a/packages/overlays/IconShapeHexagonOverlay/AndroidManifest.xml b/packages/overlays/IconShapeHexagonOverlay/AndroidManifest.xml deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/packages/overlays/IconShapePebbleOverlay/Android.bp b/packages/overlays/IconShapePebbleOverlay/Android.bp deleted file mode 100644 index fa2a5bb825f38..0000000000000 --- a/packages/overlays/IconShapePebbleOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconShapePebbleOverlay", - theme: "IconShapePebble", - product_specific: true, -} diff --git a/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml b/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml deleted file mode 100644 index d719a97e28f2b..0000000000000 --- a/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconShapePebbleOverlay/res/values/config.xml b/packages/overlays/IconShapePebbleOverlay/res/values/config.xml deleted file mode 100644 index e7eeb30501b5a..0000000000000 --- a/packages/overlays/IconShapePebbleOverlay/res/values/config.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - "M55,0 C25,0 0,25 0,50 0,78 28,100 55,100 85,100 100,85 100,58 100,30 86,0 55,0 Z" - - false - - 8dp - - 16dp - - - diff --git a/packages/overlays/IconShapePebbleOverlay/res/values/strings.xml b/packages/overlays/IconShapePebbleOverlay/res/values/strings.xml deleted file mode 100644 index aec4a82a6ba44..0000000000000 --- a/packages/overlays/IconShapePebbleOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Pebble - - diff --git a/packages/overlays/IconShapeRoundedRectOverlay/Android.bp b/packages/overlays/IconShapeRoundedRectOverlay/Android.bp deleted file mode 100644 index 5052d08f1edf3..0000000000000 --- a/packages/overlays/IconShapeRoundedRectOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2018, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconShapeRoundedRectOverlay", - theme: "IconShapeRoundedRect", - product_specific: true, -} diff --git a/packages/overlays/IconShapeRoundedRectOverlay/AndroidManifest.xml b/packages/overlays/IconShapeRoundedRectOverlay/AndroidManifest.xml deleted file mode 100644 index 39c082b596046..0000000000000 --- a/packages/overlays/IconShapeRoundedRectOverlay/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconShapeRoundedRectOverlay/res/values/config.xml b/packages/overlays/IconShapeRoundedRectOverlay/res/values/config.xml deleted file mode 100644 index c5bb5e9bb8856..0000000000000 --- a/packages/overlays/IconShapeRoundedRectOverlay/res/values/config.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - "M50,0L88,0 C94.4,0 100,5.4 100 12 L100,88 C100,94.6 94.6 100 88 100 L12,100 C5.4,100 0,94.6 0,88 L0 12 C0 5.4 5.4 0 12 0 L50,0 Z" - - false - - 2dp - - 4dp - - - diff --git a/packages/overlays/IconShapeRoundedRectOverlay/res/values/strings.xml b/packages/overlays/IconShapeRoundedRectOverlay/res/values/strings.xml deleted file mode 100644 index 3c4c24db53bad..0000000000000 --- a/packages/overlays/IconShapeRoundedRectOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Rounded Rectangle - - diff --git a/packages/overlays/IconShapeSquareOverlay/Android.bp b/packages/overlays/IconShapeSquareOverlay/Android.bp deleted file mode 100644 index 1176abddd71f1..0000000000000 --- a/packages/overlays/IconShapeSquareOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2018, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconShapeSquareOverlay", - theme: "IconShapeSquare", - product_specific: true, -} diff --git a/packages/overlays/IconShapeSquareOverlay/AndroidManifest.xml b/packages/overlays/IconShapeSquareOverlay/AndroidManifest.xml deleted file mode 100644 index 235fdeb22648a..0000000000000 --- a/packages/overlays/IconShapeSquareOverlay/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconShapeSquareOverlay/res/values/config.xml b/packages/overlays/IconShapeSquareOverlay/res/values/config.xml deleted file mode 100644 index 2016ece4d2c70..0000000000000 --- a/packages/overlays/IconShapeSquareOverlay/res/values/config.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - "M50,0L100,0 100,100 0,100 0,0z" - - false - - 0dp - - 0dp - - - diff --git a/packages/overlays/IconShapeSquareOverlay/res/values/strings.xml b/packages/overlays/IconShapeSquareOverlay/res/values/strings.xml deleted file mode 100644 index 577216582608c..0000000000000 --- a/packages/overlays/IconShapeSquareOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Square - - diff --git a/packages/overlays/IconShapeSquircleOverlay/Android.bp b/packages/overlays/IconShapeSquircleOverlay/Android.bp deleted file mode 100644 index 8c219f340040b..0000000000000 --- a/packages/overlays/IconShapeSquircleOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2018, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconShapeSquircleOverlay", - theme: "IconShapeSquircle", - product_specific: true, -} diff --git a/packages/overlays/IconShapeSquircleOverlay/AndroidManifest.xml b/packages/overlays/IconShapeSquircleOverlay/AndroidManifest.xml deleted file mode 100644 index ca618e4142b9b..0000000000000 --- a/packages/overlays/IconShapeSquircleOverlay/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconShapeSquircleOverlay/res/values/config.xml b/packages/overlays/IconShapeSquircleOverlay/res/values/config.xml deleted file mode 100644 index 7692aa6b5164e..0000000000000 --- a/packages/overlays/IconShapeSquircleOverlay/res/values/config.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - "M50,0 C10,0 0,10 0,50 0,90 10,100 50,100 90,100 100,90 100,50 100,10 90,0 50,0 Z" - - false - - 4dp - - 8dp - - - diff --git a/packages/overlays/IconShapeSquircleOverlay/res/values/strings.xml b/packages/overlays/IconShapeSquircleOverlay/res/values/strings.xml deleted file mode 100644 index 028eccb8c5a3d..0000000000000 --- a/packages/overlays/IconShapeSquircleOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Squircle - - diff --git a/packages/overlays/IconShapeTaperedRectOverlay/Android.bp b/packages/overlays/IconShapeTaperedRectOverlay/Android.bp deleted file mode 100644 index 78855e8daba28..0000000000000 --- a/packages/overlays/IconShapeTaperedRectOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconShapeTaperedRectOverlay", - theme: "IconShapeTaperedRect", - product_specific: true, -} diff --git a/packages/overlays/IconShapeTaperedRectOverlay/AndroidManifest.xml b/packages/overlays/IconShapeTaperedRectOverlay/AndroidManifest.xml deleted file mode 100644 index 61ed222327ef8..0000000000000 --- a/packages/overlays/IconShapeTaperedRectOverlay/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/packages/overlays/IconShapeTaperedRectOverlay/res/values/config.xml b/packages/overlays/IconShapeTaperedRectOverlay/res/values/config.xml deleted file mode 100644 index 63ba20e779c3a..0000000000000 --- a/packages/overlays/IconShapeTaperedRectOverlay/res/values/config.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - "M20,0 80,0 100,20 100,80 80,100 20,100 0,80 0,20 20,0 Z" - - false - - 0dp - - 0dp - - 1dp - diff --git a/packages/overlays/IconShapeTaperedRectOverlay/res/values/strings.xml b/packages/overlays/IconShapeTaperedRectOverlay/res/values/strings.xml deleted file mode 100644 index 3f36598a89bc8..0000000000000 --- a/packages/overlays/IconShapeTaperedRectOverlay/res/values/strings.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - Tapered Rect - - diff --git a/packages/overlays/IconShapeTeardropOverlay/Android.bp b/packages/overlays/IconShapeTeardropOverlay/Android.bp deleted file mode 100644 index dd36f4ffc9955..0000000000000 --- a/packages/overlays/IconShapeTeardropOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2018, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconShapeTeardropOverlay", - theme: "IconShapeTeardrop", - product_specific: true, -} diff --git a/packages/overlays/IconShapeTeardropOverlay/AndroidManifest.xml b/packages/overlays/IconShapeTeardropOverlay/AndroidManifest.xml deleted file mode 100644 index b7d5ecb820d9a..0000000000000 --- a/packages/overlays/IconShapeTeardropOverlay/AndroidManifest.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconShapeTeardropOverlay/res/values/config.xml b/packages/overlays/IconShapeTeardropOverlay/res/values/config.xml deleted file mode 100644 index b6ee412e59162..0000000000000 --- a/packages/overlays/IconShapeTeardropOverlay/res/values/config.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - "M50,0 C77.6,0 100,22.4 100,50 L100,88 C100,94.6 94.6,100 88,100 L50,100 C22.4 100 0 77.6 0 50C0 22.4 22.4 0 50 0 Z" - - false - - 8dp - - 16dp - - - diff --git a/packages/overlays/IconShapeTeardropOverlay/res/values/strings.xml b/packages/overlays/IconShapeTeardropOverlay/res/values/strings.xml deleted file mode 100644 index db9fa98197140..0000000000000 --- a/packages/overlays/IconShapeTeardropOverlay/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - Teardrop - - diff --git a/packages/overlays/IconShapeVesselOverlay/Android.bp b/packages/overlays/IconShapeVesselOverlay/Android.bp deleted file mode 100644 index 2e7f8bc6cf662..0000000000000 --- a/packages/overlays/IconShapeVesselOverlay/Android.bp +++ /dev/null @@ -1,30 +0,0 @@ -// -// Copyright 2020, 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 { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -runtime_resource_overlay { - name: "IconShapeVesselOverlay", - theme: "IconShapeVessel", - product_specific: true, -} diff --git a/packages/overlays/IconShapeVesselOverlay/AndroidManifest.xml b/packages/overlays/IconShapeVesselOverlay/AndroidManifest.xml deleted file mode 100644 index 025ac6951f0bb..0000000000000 --- a/packages/overlays/IconShapeVesselOverlay/AndroidManifest.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - diff --git a/packages/overlays/IconShapeVesselOverlay/res/values/config.xml b/packages/overlays/IconShapeVesselOverlay/res/values/config.xml deleted file mode 100644 index 86d31f6450bc7..0000000000000 --- a/packages/overlays/IconShapeVesselOverlay/res/values/config.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - "M12.97,0 C8.41,0 4.14,2.55 2.21,6.68 -1.03,13.61 -0.71,21.78 3.16,28.46 4.89,31.46 4.89,35.2 3.16,38.2 -1.05,45.48 -1.05,54.52 3.16,61.8 4.89,64.8 4.89,68.54 3.16,71.54 -0.71,78.22 -1.03,86.39 2.21,93.32 4.14,97.45 8.41,100 12.97,100 21.38,100 78.62,100 87.03,100 91.59,100 95.85,97.45 97.79,93.32 101.02,86.39 100.71,78.22 96.84,71.54 95.1,68.54 95.1,64.8 96.84,61.8 101.05,54.52 101.05,45.48 96.84,38.2 95.1,35.2 95.1,31.46 96.84,28.46 100.71,21.78 101.02,13.61 97.79,6.68 95.85,2.55 91.59,0 87.03,0 78.62,0 21.38,0 12.97,0 Z" - - false - - 8dp - - 16dp - - diff --git a/packages/overlays/IconShapeVesselOverlay/res/values/strings.xml b/packages/overlays/IconShapeVesselOverlay/res/values/strings.xml deleted file mode 100644 index a50e7e9a9ab21..0000000000000 --- a/packages/overlays/IconShapeVesselOverlay/res/values/strings.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - Vessel - - From 8df4695d417c7ee8aeafacc744a0a35ab08d0028 Mon Sep 17 00:00:00 2001 From: Dave Mankoff Date: Tue, 1 Jun 2021 15:12:15 -0400 Subject: [PATCH 178/192] Don't destroy the FalsingManager in Wallet. When FalsingManager#cleanupInternal is called, it no longer produces valid results. With this change, we check that the FalsingManager is not used after being destroyed, and also avoid destroying it in WalletScreenController. Fixes: 188174214 Test: manual Change-Id: I0ce67de5a326b56dee11c1d63c1d592640c0713d (cherry picked from commit b4935a25caccfb4021c8546209b5db7219747792) --- packages/SystemUI/Android.bp | 14 +++++++++-- .../systemui/plugins/FalsingManager.java | 11 ++++++-- .../classifier/BrightLineFalsingManager.java | 19 +++++++++++++- .../classifier/FalsingManagerProxy.java | 8 +++--- .../wallet/ui/WalletScreenController.java | 1 - .../classifier/BrightLineClassifierTest.java | 2 +- .../classifier/FalsingManagerFake.java | 25 ++++++++++++++----- 7 files changed, 63 insertions(+), 17 deletions(-) rename packages/SystemUI/{ => tests}/src/com/android/systemui/classifier/FalsingManagerFake.java (85%) diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index 4f587ebba89cd..b357a9478ab61 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -105,11 +105,21 @@ android_library { filegroup { name: "SystemUI-tests-utils", srcs: [ + "tests/src/com/android/systemui/SysuiTestCase.java", + "tests/src/com/android/systemui/TestableDependency.java", + "tests/src/com/android/systemui/classifier/FalsingManagerFake.java", "tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryBuilder.java", "tests/src/com/android/systemui/statusbar/RankingBuilder.java", "tests/src/com/android/systemui/statusbar/SbnBuilder.java", - "tests/src/com/android/systemui/util/concurrency/FakeExecutor.java", - "tests/src/com/android/systemui/util/time/FakeSystemClock.java", + "tests/src/com/android/systemui/SysuiTestableContext.java", + "tests/src/com/android/systemui/utils/leaks/BaseLeakChecker.java", + "tests/src/com/android/systemui/utils/leaks/LeakCheckedTest.java", + "tests/src/com/android/systemui/**/Fake*.java", + "tests/src/com/android/systemui/**/Fake*.kt", + ], + exclude_srcs: [ + "tests/src/com/android/systemui/**/*Test.java", + "tests/src/com/android/systemui/**/*Test.kt", ], path: "tests/src", } diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java index 5ac8961aceebc..b4fac5cbb6ab4 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java @@ -114,7 +114,12 @@ public interface FalsingManager { /** From com.android.systemui.Dumpable. */ void dump(FileDescriptor fd, PrintWriter pw, String[] args); - void cleanup(); + /** + * Don't call this. It's meant for internal use to allow switching between implementations. + * + * Tests may also call it. + **/ + void cleanupInternal(); /** Call to report a ProximityEvent to the FalsingManager. */ void onProximityEvent(ProximityEvent proximityEvent); @@ -136,7 +141,9 @@ public interface FalsingManager { void onFalse(); } - /** Listener that is alerted when a double tap is required to confirm a single tap. */ + /** + * Listener that is alerted when a double tap is required to confirm a single tap. + **/ interface FalsingTapListener { void onDoubleTapRequired(); } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java index c821d100f5534..020401ecd2f82 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/BrightLineFalsingManager.java @@ -82,6 +82,8 @@ public class BrightLineFalsingManager implements FalsingManager { private final List mFalsingBeliefListeners = new ArrayList<>(); private List mFalsingTapListeners = new ArrayList<>(); + private boolean mDestroyed; + private final SessionListener mSessionListener = new SessionListener() { @Override public void onSessionEnded() { @@ -196,6 +198,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseTouch(@Classifier.InteractionType int interactionType) { + checkDestroyed(); + mPriorInteractionType = interactionType; if (skipFalsing(interactionType)) { mPriorResults = getPassedResult(1); @@ -221,6 +225,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isSimpleTap() { + checkDestroyed(); + FalsingClassifier.Result result = mSingleTapClassifier.isTap( mDataProvider.getRecentMotionEvents(), 0); mPriorResults = Collections.singleton(result); @@ -228,8 +234,16 @@ public class BrightLineFalsingManager implements FalsingManager { return !result.isFalse(); } + private void checkDestroyed() { + if (mDestroyed) { + Log.wtf(TAG, "Tried to use FalsingManager after being destroyed!"); + } + } + @Override public boolean isFalseTap(@Penalty int penalty) { + checkDestroyed(); + if (skipFalsing(GENERIC)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); @@ -292,6 +306,8 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseDoubleTap() { + checkDestroyed(); + if (skipFalsing(GENERIC)) { mPriorResults = getPassedResult(1); logDebug("Skipped falsing"); @@ -406,7 +422,8 @@ public class BrightLineFalsingManager implements FalsingManager { } @Override - public void cleanup() { + public void cleanupInternal() { + mDestroyed = true; mDataProvider.removeSessionListener(mSessionListener); mDataProvider.removeGestureCompleteListener(mGestureFinalizedListener); mClassifiers.forEach(FalsingClassifier::cleanup); diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java index ee0dba0a50873..5a24f354eaf65 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java @@ -79,7 +79,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { public void onPluginConnected(FalsingPlugin plugin, Context context) { FalsingManager pluginFalsingManager = plugin.getFalsingManager(context); if (pluginFalsingManager != null) { - mInternalFalsingManager.cleanup(); + mInternalFalsingManager.cleanupInternal(); mInternalFalsingManager = pluginFalsingManager; } } @@ -109,7 +109,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { */ private void setupFalsingManager() { if (mInternalFalsingManager != null) { - mInternalFalsingManager.cleanup(); + mInternalFalsingManager.cleanupInternal(); } mInternalFalsingManager = mBrightLineFalsingManagerProvider.get(); } @@ -195,10 +195,10 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { } @Override - public void cleanup() { + public void cleanupInternal() { mDeviceConfig.removeOnPropertiesChangedListener(mDeviceConfigListener); mPluginManager.removePluginListener(mPluginListener); mDumpManager.unregisterDumpable(DUMPABLE_TAG); - mInternalFalsingManager.cleanup(); + mInternalFalsingManager.cleanupInternal(); } } diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java index d0662e7301d86..8da80caefdd37 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java @@ -260,7 +260,6 @@ public class WalletScreenController implements mIsDismissed = true; mSelectedCardId = null; mHandler.removeCallbacks(mSelectionRunnable); - mFalsingManager.cleanup(); mWalletClient.notifyWalletDismissed(); mWalletClient.removeWalletServiceEventListener(this); mWalletView.animateDismissal(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java index a7f9fe4e0a2c2..3eb1a9e624c8e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/BrightLineClassifierTest.java @@ -118,7 +118,7 @@ public class BrightLineClassifierTest extends SysuiTestCase { verify(mFalsingDataProvider).addSessionListener( any(FalsingDataProvider.SessionListener.class)); - mBrightLineFalsingManager.cleanup(); + mBrightLineFalsingManager.cleanupInternal(); verify(mFalsingDataProvider).removeSessionListener( any(FalsingDataProvider.SessionListener.class)); } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java similarity index 85% rename from packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java rename to packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java index dba530edc27fc..87d1b6b8cb303 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerFake.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2021 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. @@ -16,6 +16,8 @@ package com.android.systemui.classifier; +import static com.google.common.truth.Truth.assertWithMessage; + import android.net.Uri; import com.android.internal.annotations.VisibleForTesting; @@ -34,10 +36,11 @@ public class FalsingManagerFake implements FalsingManager { private boolean mIsSimpleTap; private boolean mIsFalseDoubleTap; private boolean mIsUnlockingDisabled; - private boolean mIsClassiferEnabled; + private boolean mIsClassifierEnabled; private boolean mShouldEnforceBouncer; private boolean mIsReportingEnabled; private boolean mIsFalseRobustTap; + private boolean mDestroyed; private final List mFalsingBeliefListeners = new ArrayList<>(); private final List mTapListeners = new ArrayList<>(); @@ -64,6 +67,7 @@ public class FalsingManagerFake implements FalsingManager { @Override public boolean isFalseTouch(@Classifier.InteractionType int interactionType) { + checkDestroyed(); return mIsFalseTouch; } @@ -81,27 +85,30 @@ public class FalsingManagerFake implements FalsingManager { @Override public boolean isSimpleTap() { + checkDestroyed(); return mIsSimpleTap; } @Override public boolean isFalseTap(@Penalty int penalty) { + checkDestroyed(); return mIsFalseRobustTap; } @Override public boolean isFalseDoubleTap() { + checkDestroyed(); return mIsFalseDoubleTap; } @VisibleForTesting - public void setIsClassiferEnabled(boolean isClassiferEnabled) { - mIsClassiferEnabled = isClassiferEnabled; + public void setIsClassifierEnabled(boolean isClassifierEnabled) { + mIsClassifierEnabled = isClassifierEnabled; } @Override public boolean isClassifierEnabled() { - return mIsClassiferEnabled; + return mIsClassifierEnabled; } @Override @@ -129,7 +136,13 @@ public class FalsingManagerFake implements FalsingManager { } @Override - public void cleanup() { + public void cleanupInternal() { + mDestroyed = true; + } + + private void checkDestroyed() { + assertWithMessage("FakeFasingManager has been destroyed") + .that(mDestroyed).isFalse(); } @Override From a349ddace2593b67ad012cfd891f813b61cb9407 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Thu, 3 Jun 2021 09:30:03 -0700 Subject: [PATCH 179/192] Fix false-positive matching of notification to FGS A combination of "uninitialized == 0 which is a valid and commonly used notification ID" with an incomplete check for "FGS with this notification." Bug: 189990824 Test: atest CtsAppTestCases:android.app.cts.ServiceTest Test: atest CtsAppTestCases:android.app.cts.NotificationManagerTest Change-Id: I845600325c4098e6b6af2f038de4c7aac9899694 (cherry picked from commit 97a609b82c7ee97cad0cdce853a8408a36b6ba78) --- services/core/java/com/android/server/am/ActiveServices.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 9e42900988432..e16a68d2167b3 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -2002,7 +2002,9 @@ public final class ActiveServices { for (int i = 0; i < smap.mServicesByInstanceName.size(); i++) { final ServiceRecord sr = smap.mServicesByInstanceName.valueAt(i); - if (id != sr.foregroundId || !pkg.equals(sr.appInfo.packageName)) { + if (!sr.isForeground + || id != sr.foregroundId + || !pkg.equals(sr.appInfo.packageName)) { // Not this one; keep looking continue; } From a149b39c774451665c655d4e7f0ae75dabd22088 Mon Sep 17 00:00:00 2001 From: John Reck Date: Wed, 16 Jun 2021 15:48:33 -0400 Subject: [PATCH 180/192] Fix ripples not going away Fixes: 191141356 Test: ripples on calculator Change-Id: Icabf80914c5ba9c0649e69ef0fa67c03d6ad5cdd (cherry picked from commit 85933d4c5585ce09d2c0f2617efed2c7f1f7be22) --- .../android/graphics/drawable/RippleDrawable.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java index fe80b5845bf51..1651a8cdcad5f 100644 --- a/graphics/java/android/graphics/drawable/RippleDrawable.java +++ b/graphics/java/android/graphics/drawable/RippleDrawable.java @@ -221,6 +221,7 @@ public class RippleDrawable extends LayerDrawable { private boolean mForceSoftware; // Patterned + private boolean mAddRipple = false; private float mTargetBackgroundOpacity; private ValueAnimator mBackgroundAnimation; private float mBackgroundOpacity; @@ -716,6 +717,7 @@ public class RippleDrawable extends LayerDrawable { } cancelExitingRipples(); + exitPatternedAnimation(); } @Override @@ -807,7 +809,7 @@ public class RippleDrawable extends LayerDrawable { } private void startPatternedAnimation() { - mRippleActive = true; + mAddRipple = true; invalidateSelf(false); } @@ -862,17 +864,17 @@ public class RippleDrawable extends LayerDrawable { h = bounds.height(); w = bounds.width(); } - boolean shouldAnimate = mRippleActive; + boolean addRipple = mAddRipple; boolean shouldExit = mExitingAnimation; - mRippleActive = false; mExitingAnimation = false; - if (mRunningAnimations.size() > 0 && !shouldAnimate) { + mAddRipple = false; + if (mRunningAnimations.size() > 0 && !addRipple) { // update paint when view is invalidated getRipplePaint(); } drawContent(canvas); drawPatternedBackground(canvas, cx, cy); - if (shouldAnimate && mRunningAnimations.size() <= MAX_RIPPLES) { + if (addRipple && mRunningAnimations.size() <= MAX_RIPPLES) { RippleAnimationSession.AnimationProperties properties = createAnimationProperties(x, y, cx, cy, w, h); mRunningAnimations.add(new RippleAnimationSession(properties, !useCanvasProps) From b741681bcf9e38e5b10cc9965c7f61497073e919 Mon Sep 17 00:00:00 2001 From: Suprabh Shukla Date: Mon, 21 Jun 2021 14:21:03 -0700 Subject: [PATCH 181/192] canScheduleExactAlarms returns true for older apps Callers that don't target S can schedule exact alarms so should get a return value of true when they call canScheduleExactAlarm. Test: atest FrameworksMockingServicesTests:AlarmManagerServiceTest Bug: 191328951 Change-Id: I1cd1d0fb3d3d922360494552e653ed540bfe5227 (cherry picked from commit a7807022feed9b2d0645d8f9e11b04972e051b47) --- .../framework/java/android/app/AlarmManager.java | 16 +++++++++++----- .../server/alarm/AlarmManagerService.java | 3 +++ .../server/alarm/AlarmManagerServiceTest.java | 8 ++++---- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/apex/jobscheduler/framework/java/android/app/AlarmManager.java b/apex/jobscheduler/framework/java/android/app/AlarmManager.java index 1efe5cb2f53e2..4843415fdbdda 100644 --- a/apex/jobscheduler/framework/java/android/app/AlarmManager.java +++ b/apex/jobscheduler/framework/java/android/app/AlarmManager.java @@ -1285,14 +1285,20 @@ public class AlarmManager { } /** - * Called to check if the caller has the permission - * {@link Manifest.permission#SCHEDULE_EXACT_ALARM}. - * - * Apps can start {@link android.provider.Settings#ACTION_REQUEST_SCHEDULE_EXACT_ALARM} to + * Called to check if the caller can schedule exact alarms. + *

+ * Apps targeting {@link Build.VERSION_CODES#S} or higher can schedule exact alarms if they + * have the {@link Manifest.permission#SCHEDULE_EXACT_ALARM} permission. These apps can also + * start {@link android.provider.Settings#ACTION_REQUEST_SCHEDULE_EXACT_ALARM} to * request this from the user. + *

+ * Apps targeting lower sdk versions, can always schedule exact alarms. * - * @return {@code true} if the caller has the permission, {@code false} otherwise. + * @return {@code true} if the caller can schedule exact alarms. * @see android.provider.Settings#ACTION_REQUEST_SCHEDULE_EXACT_ALARM + * @see #setExact(int, long, PendingIntent) + * @see #setExactAndAllowWhileIdle(int, long, PendingIntent) + * @see #setAlarmClock(AlarmClockInfo, PendingIntent) */ public boolean canScheduleExactAlarms() { return hasScheduleExactAlarm(mContext.getOpPackageName(), mContext.getUserId()); diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java index fb5129f184170..70e548d4c5476 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java @@ -2572,6 +2572,9 @@ public class AlarmManagerService extends SystemService { throw new SecurityException("Uid " + callingUid + " cannot query hasScheduleExactAlarm for uid " + uid); } + if (!isExactAlarmChangeEnabled(packageName, userId)) { + return true; + } return (uid > 0) ? hasScheduleExactAlarmInternal(packageName, uid) : false; } diff --git a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java index 280204dfd4811..eab1afbd931e6 100644 --- a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java @@ -1914,11 +1914,11 @@ public class AlarmManagerServiceTest { public void hasScheduleExactAlarmBinderCallChangeDisabled() throws RemoteException { mockChangeEnabled(AlarmManager.REQUIRE_EXACT_ALARM_PERMISSION, false); - mockExactAlarmPermissionGrant(true, false, MODE_DEFAULT); - assertFalse(mBinder.hasScheduleExactAlarm(TEST_CALLING_PACKAGE, TEST_CALLING_USER)); + mockExactAlarmPermissionGrant(false, true, MODE_DEFAULT); + assertTrue(mBinder.hasScheduleExactAlarm(TEST_CALLING_PACKAGE, TEST_CALLING_USER)); - mockExactAlarmPermissionGrant(true, true, MODE_ALLOWED); - assertFalse(mBinder.hasScheduleExactAlarm(TEST_CALLING_PACKAGE, TEST_CALLING_USER)); + mockExactAlarmPermissionGrant(true, false, MODE_ERRORED); + assertTrue(mBinder.hasScheduleExactAlarm(TEST_CALLING_PACKAGE, TEST_CALLING_USER)); } private void mockChangeEnabled(long changeId, boolean enabled) { From d516e416ead24b777dd584c2e557aaf73f247899 Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Tue, 22 Jun 2021 11:22:37 +0800 Subject: [PATCH 182/192] Fix SysUI NPE crash during the boot/init progress When Device boot and SystemUI servies starting, settings provider may callback onChange() when OneHandedController register observer. If the callback timing earlier han mEventCallback registered by WMShll#initOneHanded, then the NPE will happen. The simple fix is to add NPE check in OneHandedController#notifyExpandNotifcation() we can just ignore the callback during init time since the singal is to expand notification and come from shorcut after user enable and tap shortcut.(No need to act for the signal during boot progress.) Test: manual reboot device and observe Test: atest WMShellUnitTests Bug: 191600033 Change-Id: I73849afa9904031759da304298221dbb222aeaaa (cherry picked from commit c4bdf37af2bb70df47969e557c27c6c7a1cdbada) --- .../wm/shell/onehanded/OneHandedController.java | 4 +++- .../wm/shell/onehanded/OneHandedControllerTest.java | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java index 7e673c6e32c20..b5c54023c4926 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java @@ -482,7 +482,9 @@ public class OneHandedController implements RemoteCallable @VisibleForTesting void notifyExpandNotification() { - mMainExecutor.execute(() -> mEventCallback.notifyExpandNotification()); + if (mEventCallback != null) { + mMainExecutor.execute(() -> mEventCallback.notifyExpandNotification()); + } } @VisibleForTesting diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java index 47789b7490ee2..950900337918b 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java @@ -435,4 +435,17 @@ public class OneHandedControllerTest extends OneHandedTestCase { verify(mSpiedOneHandedController).notifyShortcutState(anyInt()); } + + @Test + public void testNotifyExpandNotification_withNullCheckProtection() { + when(mSpiedOneHandedController.isOneHandedEnabled()).thenReturn(false); + when(mSpiedTransitionState.getState()).thenReturn(STATE_NONE); + when(mSpiedTransitionState.isTransitioning()).thenReturn(false); + when(mSpiedOneHandedController.isSwipeToNotificationEnabled()).thenReturn(true); + mSpiedOneHandedController.setOneHandedEnabled(true); + mSpiedOneHandedController.notifyExpandNotification(); + + // Verify no NPE crash and mMockShellMainExecutor never be execute. + verify(mMockShellMainExecutor, never()).execute(any()); + } } From 54e961f5a4d285d587bd5bdce0a57ba0b2509550 Mon Sep 17 00:00:00 2001 From: Carmen Jackson Date: Wed, 23 Jun 2021 11:41:15 -0700 Subject: [PATCH 183/192] Add Binder.clearCallingIdentity to TracingServiceProxy The TracingServiceProxy is called by traced, which runs as UID 9999 and therefore doesn't have the required permissions to start a foreground service. So, clear that calling identity so that the identity checked for this permission is system_server, which does have the correct permissions. We'll ensure that no other processes can utilize this path via selinux rules. Bug: 191391382 Test: Manually tested that before this change, I saw an 'ActivityManager: startForegroundService() not allowed' error when taking a bugreport while a trace is running, while after this change the bugreport was taken successfully with no errors, and the trace was included in the bugreport. Change-Id: I4ae68047d588dfc87225ddf41288dc4093a71313 Merged-In: I472fe8acc2e59e93afd8475f51b5f347cd3ccc5d (cherry picked from commit 1a856d556c829c20f2891d1f6a4545aa65baedb8) --- .../com/android/server/tracing/TracingServiceProxy.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/tracing/TracingServiceProxy.java b/services/core/java/com/android/server/tracing/TracingServiceProxy.java index 8f227489740f8..ff2f08bc4a50a 100644 --- a/services/core/java/com/android/server/tracing/TracingServiceProxy.java +++ b/services/core/java/com/android/server/tracing/TracingServiceProxy.java @@ -20,6 +20,7 @@ import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Binder; import android.os.UserHandle; import android.tracing.ITracingServiceProxy; import android.util.Log; @@ -30,6 +31,8 @@ import com.android.server.SystemService; * TracingServiceProxy is the system_server intermediary between the Perfetto tracing daemon and the * system tracing app Traceur. * + * Access to this service is restricted via SELinux. Normal apps do not have access. + * * @hide */ public class TracingServiceProxy extends SystemService { @@ -87,11 +90,15 @@ public class TracingServiceProxy extends SystemService { intent.setAction(INTENT_ACTION_NOTIFY_SESSION_STOPPED); } + final long identity = Binder.clearCallingIdentity(); try { mContext.startForegroundServiceAsUser(intent, UserHandle.SYSTEM); } catch (RuntimeException e) { Log.e(TAG, "Failed to notifyTraceSessionEnded", e); + } finally { + Binder.restoreCallingIdentity(identity); } + } catch (NameNotFoundException e) { Log.e(TAG, "Failed to locate Traceur", e); } From 07c0fe0cb0d5c078128facd076b752474f84baa1 Mon Sep 17 00:00:00 2001 From: Rhed Jao Date: Wed, 30 Jun 2021 13:09:02 +0000 Subject: [PATCH 184/192] Revert "Enforce package visibility to the api checkUriPermission" Revert "Add tests for the api Context#checkUriPermission" Revert submission 15065651-pm_package_visibility_check_uri_permission Reason for revert: [Regression] Cross-profile sharing is broken Reverted Changes: Iea2f2d8a8:Enforce package visibility to the api checkUriPerm... I0a4ed9350:Add tests for the api Context#checkUriPermission Bug: 192357488 Change-Id: I0050e70121e23e8457dbfc061f488c40f7ec2a93 (cherry picked from commit 48e920c2f33443e7c763f7e61b3c81b73ead6c43) --- .../com/android/server/am/ActivityManagerService.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 3b0a68ca29ca6..a6b50f3beb7ab 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5684,16 +5684,6 @@ public class ActivityManagerService extends IActivityManager.Stub if (pid == MY_PID) { return PackageManager.PERMISSION_GRANTED; } - try { - if (uid != 0) { // bypass the root - final String[] packageNames = getPackageManager().getPackagesForUid(uid); - if (ArrayUtils.isEmpty(packageNames)) { - // The uid is not existed or not visible to the caller. - return PackageManager.PERMISSION_DENIED; - } - } - } catch (RemoteException e) { - } return mUgmInternal.checkUriPermission(new GrantUri(userId, uri, modeFlags), uid, modeFlags) ? PackageManager.PERMISSION_GRANTED : PackageManager.PERMISSION_DENIED; } From 23036d706d89a03d04d28419f2ae81262f018510 Mon Sep 17 00:00:00 2001 From: Rhed Jao Date: Wed, 30 Jun 2021 13:09:02 +0000 Subject: [PATCH 185/192] Revert "Enforce package visibility to the api checkUriPermission" Revert "Add tests for the api Context#checkUriPermission" Revert submission 15065651-pm_package_visibility_check_uri_permission Reason for revert: [Regression] Cross-profile sharing is broken Reverted Changes: Iea2f2d8a8:Enforce package visibility to the api checkUriPerm... I0a4ed9350:Add tests for the api Context#checkUriPermission Bug: 192357488 Change-Id: I0050e70121e23e8457dbfc061f488c40f7ec2a93 (cherry picked from commit 48e920c2f33443e7c763f7e61b3c81b73ead6c43) --- .../com/android/server/am/ActivityManagerService.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 7c8250234de30..4bb98e0c3b7e4 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5684,16 +5684,6 @@ public class ActivityManagerService extends IActivityManager.Stub if (pid == MY_PID) { return PackageManager.PERMISSION_GRANTED; } - try { - if (uid != 0) { // bypass the root - final String[] packageNames = getPackageManager().getPackagesForUid(uid); - if (ArrayUtils.isEmpty(packageNames)) { - // The uid is not existed or not visible to the caller. - return PackageManager.PERMISSION_DENIED; - } - } - } catch (RemoteException e) { - } return mUgmInternal.checkUriPermission(new GrantUri(userId, uri, modeFlags), uid, modeFlags) ? PackageManager.PERMISSION_GRANTED : PackageManager.PERMISSION_DENIED; } From 4a7b57c9a9ed20e805f0cbcf6fc5c843cf86742e Mon Sep 17 00:00:00 2001 From: Rucha Katakwar Date: Fri, 9 Jul 2021 06:30:55 +0000 Subject: [PATCH 186/192] Revert "Camera: Restore FastNative annotation." Bug: 193176503 This reverts commit 99ebd95ef140a14185b729e419abe19c6dc0a678. Reason for revert: Recent flakiness as mentioned in b/193176503.This cl was merged in build:7532561. Any test failures post this build shows exception linked to CameraMetadataNative.Reverting this cl to find and fix the issue. Change-Id: If9fe3ce69f013b842a47745d976942aa71dfb8f6 (cherry picked from commit 4f83d813d6251900a726c37b1408aaf7c063a493) --- .../camera2/impl/CameraMetadataNative.java | 36 +++++++------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java index 09fe1020ea596..6cbe107c96f5b 100644 --- a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java +++ b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java @@ -1869,40 +1869,28 @@ public class CameraMetadataNative implements Parcelable { @FastNative private static native void nativeUpdate(long dst, long src); - @FastNative - private static native void nativeWriteToParcel(Parcel dest, long ptr); - @FastNative - private static native void nativeReadFromParcel(Parcel source, long ptr); - @FastNative - private static native void nativeSwap(long ptr, long otherPtr) + private static synchronized native void nativeWriteToParcel(Parcel dest, long ptr); + private static synchronized native void nativeReadFromParcel(Parcel source, long ptr); + private static synchronized native void nativeSwap(long ptr, long otherPtr) throws NullPointerException; @FastNative - private static native void nativeClose(long ptr); - @FastNative - private static native boolean nativeIsEmpty(long ptr); - @FastNative - private static native int nativeGetEntryCount(long ptr); - @FastNative - private static native long nativeGetBufferSize(long ptr); - @FastNative private static native void nativeSetVendorId(long ptr, long vendorId); + private static synchronized native void nativeClose(long ptr); + private static synchronized native boolean nativeIsEmpty(long ptr); + private static synchronized native int nativeGetEntryCount(long ptr); + private static synchronized native long nativeGetBufferSize(long ptr); @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @FastNative - private static native byte[] nativeReadValues(int tag, long ptr); - @FastNative - private static native void nativeWriteValues(int tag, byte[] src, long ptr); + private static synchronized native byte[] nativeReadValues(int tag, long ptr); + private static synchronized native void nativeWriteValues(int tag, byte[] src, long ptr); private static synchronized native void nativeDump(long ptr) throws IOException; // dump to LOGD - @FastNative - private static native ArrayList nativeGetAllVendorKeys(long ptr, Class keyClass); + private static synchronized native ArrayList nativeGetAllVendorKeys(long ptr, Class keyClass); @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @FastNative - private static native int nativeGetTagFromKeyLocal(long ptr, String keyName) + private static synchronized native int nativeGetTagFromKeyLocal(long ptr, String keyName) throws IllegalArgumentException; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) - @FastNative - private static native int nativeGetTypeFromTagLocal(long ptr, int tag) + private static synchronized native int nativeGetTypeFromTagLocal(long ptr, int tag) throws IllegalArgumentException; @FastNative private static native int nativeGetTagFromKey(String keyName, long vendorId) From 17875887a9e4ee1504c719749630738ec380116e Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Mon, 19 Jul 2021 17:19:52 +0000 Subject: [PATCH 187/192] Revert "Clean up previous DA organizer when registering" This reverts commit da436d4a012f1ded31b36627d6f2e9a0dca56750. Reason for revert: b/194083907, b/193993655 Change-Id: I75352215d995707b3bc23e04434c85a0fd9db6b3 (cherry picked from commit d44ef5e05a86cc051f03bcc1885dbc30b4232505) --- .../wm/DisplayAreaOrganizerController.java | 100 +++++++----------- .../android/server/wm/DisplayAreaTest.java | 2 - 2 files changed, 40 insertions(+), 62 deletions(-) diff --git a/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java b/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java index 75abd171bb9bc..35add129309f1 100644 --- a/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java +++ b/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java @@ -26,7 +26,6 @@ import android.content.pm.ParceledListSlice; import android.os.Binder; import android.os.IBinder; import android.os.RemoteException; -import android.util.Slog; import android.view.SurfaceControl; import android.window.DisplayAreaAppearedInfo; import android.window.IDisplayAreaOrganizer; @@ -50,8 +49,7 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl final ActivityTaskManagerService mService; private final WindowManagerGlobalLock mGlobalLock; - private final HashMap mOrganizersByFeatureIds = - new HashMap(); + private final HashMap mOrganizersByFeatureIds = new HashMap(); private class DeathRecipient implements IBinder.DeathRecipient { int mFeature; @@ -65,41 +63,12 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl @Override public void binderDied() { synchronized (mGlobalLock) { - mOrganizersByFeatureIds.remove(mFeature).destroy(); + mOrganizersByFeatureIds.remove(mFeature); + removeOrganizer(mOrganizer); } } } - private class DisplayAreaOrganizerState { - private final IDisplayAreaOrganizer mOrganizer; - private final DeathRecipient mDeathRecipient; - - DisplayAreaOrganizerState(IDisplayAreaOrganizer organizer, int feature) { - mOrganizer = organizer; - mDeathRecipient = new DeathRecipient(organizer, feature); - try { - organizer.asBinder().linkToDeath(mDeathRecipient, 0); - } catch (RemoteException e) { - // Oh well... - } - } - - void destroy() { - IBinder organizerBinder = mOrganizer.asBinder(); - mService.mRootWindowContainer.forAllDisplayAreas((da) -> { - if (da.mOrganizer != null && da.mOrganizer.asBinder().equals(organizerBinder)) { - if (da.isTaskDisplayArea() && da.asTaskDisplayArea().mCreatedByOrganizer) { - // Delete the organizer created TDA when unregister. - deleteTaskDisplayArea(da.asTaskDisplayArea()); - } else { - da.setOrganizer(null); - } - } - }); - organizerBinder.unlinkToDeath(mDeathRecipient, 0); - } - } - DisplayAreaOrganizerController(ActivityTaskManagerService atm) { mService = atm; mGlobalLock = atm.mGlobalLock; @@ -111,8 +80,7 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl @Nullable IDisplayAreaOrganizer getOrganizerByFeature(int featureId) { - final DisplayAreaOrganizerState state = mOrganizersByFeatureIds.get(featureId); - return state != null ? state.mOrganizer : null; + return mOrganizersByFeatureIds.get(featureId); } @Override @@ -126,18 +94,17 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl ProtoLog.v(WM_DEBUG_WINDOW_ORGANIZER, "Register display organizer=%s uid=%d", organizer.asBinder(), uid); if (mOrganizersByFeatureIds.get(feature) != null) { - if (mOrganizersByFeatureIds.get(feature).mOrganizer.asBinder() - .isBinderAlive()) { - throw new IllegalStateException( - "Replacing existing organizer currently unsupported"); - } - - mOrganizersByFeatureIds.remove(feature).destroy(); - Slog.d(TAG, "Replacing dead organizer for feature=" + feature); + throw new IllegalStateException( + "Replacing existing organizer currently unsupported"); + } + + final DeathRecipient dr = new DeathRecipient(organizer, feature); + try { + organizer.asBinder().linkToDeath(dr, 0); + } catch (RemoteException e) { + // Oh well... } - final DisplayAreaOrganizerState state = new DisplayAreaOrganizerState(organizer, - feature); final List displayAreaInfos = new ArrayList<>(); mService.mRootWindowContainer.forAllDisplays(dc -> { if (!dc.isTrusted()) { @@ -153,7 +120,7 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl }); }); - mOrganizersByFeatureIds.put(feature, state); + mOrganizersByFeatureIds.put(feature, organizer); return new ParceledListSlice<>(displayAreaInfos); } } finally { @@ -170,11 +137,9 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl synchronized (mGlobalLock) { ProtoLog.v(WM_DEBUG_WINDOW_ORGANIZER, "Unregister display organizer=%s uid=%d", organizer.asBinder(), uid); - mOrganizersByFeatureIds.values().forEach((state) -> { - if (state.mOrganizer.asBinder() == organizer.asBinder()) { - state.destroy(); - } - }); + mOrganizersByFeatureIds.entrySet().removeIf( + entry -> entry.getValue().asBinder() == organizer.asBinder()); + removeOrganizer(organizer); } } finally { Binder.restoreCallingIdentity(origId); @@ -225,15 +190,19 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl } final int taskDisplayAreaFeatureId = mNextTaskDisplayAreaFeatureId++; - final DisplayAreaOrganizerState state = new DisplayAreaOrganizerState(organizer, - taskDisplayAreaFeatureId); + final DeathRecipient dr = new DeathRecipient(organizer, taskDisplayAreaFeatureId); + try { + organizer.asBinder().linkToDeath(dr, 0); + } catch (RemoteException e) { + // Oh well... + } final TaskDisplayArea tda = parentRoot != null ? createTaskDisplayArea(parentRoot, name, taskDisplayAreaFeatureId) : createTaskDisplayArea(parentTda, name, taskDisplayAreaFeatureId); final DisplayAreaAppearedInfo tdaInfo = organizeDisplayArea(organizer, tda, "DisplayAreaOrganizerController.createTaskDisplayArea"); - mOrganizersByFeatureIds.put(taskDisplayAreaFeatureId, state); + mOrganizersByFeatureIds.put(taskDisplayAreaFeatureId, organizer); return tdaInfo; } } finally { @@ -261,7 +230,8 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl + "TaskDisplayArea=" + taskDisplayArea); } - mOrganizersByFeatureIds.remove(taskDisplayArea.mFeatureId).destroy(); + mOrganizersByFeatureIds.remove(taskDisplayArea.mFeatureId); + deleteTaskDisplayArea(taskDisplayArea); } } finally { Binder.restoreCallingIdentity(origId); @@ -281,10 +251,6 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl void onDisplayAreaVanished(IDisplayAreaOrganizer organizer, DisplayArea da) { ProtoLog.v(WM_DEBUG_WINDOW_ORGANIZER, "DisplayArea vanished name=%s", da.getName()); - if (!organizer.asBinder().isBinderAlive()) { - Slog.d(TAG, "Organizer died before sending onDisplayAreaVanished"); - return; - } try { organizer.onDisplayAreaVanished(da.getDisplayAreaInfo()); } catch (RemoteException e) { @@ -301,6 +267,20 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl } } + private void removeOrganizer(IDisplayAreaOrganizer organizer) { + IBinder organizerBinder = organizer.asBinder(); + mService.mRootWindowContainer.forAllDisplayAreas((da) -> { + if (da.mOrganizer != null && da.mOrganizer.asBinder().equals(organizerBinder)) { + if (da.isTaskDisplayArea() && da.asTaskDisplayArea().mCreatedByOrganizer) { + // Delete the organizer created TDA when unregister. + deleteTaskDisplayArea(da.asTaskDisplayArea()); + } else { + da.setOrganizer(null); + } + } + }); + } + private DisplayAreaAppearedInfo organizeDisplayArea(IDisplayAreaOrganizer organizer, DisplayArea displayArea, String callsite) { displayArea.setOrganizer(organizer, true /* skipDisplayAreaAppeared */); diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java index 724342b90a53a..d5628fc9de48a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java @@ -57,7 +57,6 @@ import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.Rect; import android.os.Binder; -import android.os.IBinder; import android.platform.test.annotations.Presubmit; import android.view.SurfaceControl; import android.view.View; @@ -556,7 +555,6 @@ public class DisplayAreaTest extends WindowTestsBase { final DisplayArea displayArea = new DisplayArea<>( mWm, BELOW_TASKS, "NewArea", FEATURE_VENDOR_FIRST); final IDisplayAreaOrganizer mockDisplayAreaOrganizer = mock(IDisplayAreaOrganizer.class); - doReturn(mock(IBinder.class)).when(mockDisplayAreaOrganizer).asBinder(); displayArea.mOrganizer = mockDisplayAreaOrganizer; spyOn(mWm.mAtmService.mWindowOrganizerController.mDisplayAreaOrganizerController); mDisplayContent.addChild(displayArea, 0); From a91988bc812a42c7d2fa0ae2af5be2ff90d03052 Mon Sep 17 00:00:00 2001 From: Lyn Han Date: Mon, 19 Jul 2021 15:31:36 -0500 Subject: [PATCH 188/192] Use alpha instead of invisible for views below shelf to skip redraw Also skip this for heads up notifications Fixes: 193912541 Test: treehugger Change-Id: I3c81611696f7918a0f18d4c503b80a6b78ed2c43 (cherry picked from commit ef12c7a2b208d0828d2eefa5f9f49941b23c4b0b) --- .../notification/stack/StackScrollAlgorithm.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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 f460a132d65c6..23e3742c2bdfb 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 @@ -154,15 +154,21 @@ public class StackScrollAlgorithm { shelf.updateState(algorithmState, ambientState); - // After the shelf has updated its yTranslation, - // explicitly hide views below the shelf to skip rendering them in the hardware layer. + // After the shelf has updated its yTranslation, explicitly set alpha=0 for view below shelf + // to skip rendering them in the hardware layer. We do not set them invisible because that + // runs invalidate & onDraw when these views return onscreen, which is more expensive. final float shelfTop = shelf.getViewState().yTranslation; for (ExpandableView view : algorithmState.visibleChildren) { + if (view instanceof ExpandableNotificationRow) { + ExpandableNotificationRow row = (ExpandableNotificationRow) view; + if (row.isHeadsUp() || row.isHeadsUpAnimatingAway()) { + continue; + } + } final float viewTop = view.getViewState().yTranslation; - if (viewTop >= shelfTop) { - view.getViewState().hidden = true; + view.getViewState().alpha = 0; } } } From 73774fc8f3afb47c1166c75b471839d1af634384 Mon Sep 17 00:00:00 2001 From: Josh Tsuji Date: Thu, 22 Jul 2021 15:12:10 -0400 Subject: [PATCH 189/192] Reset to LiftReveal when going to sleep due to timing out, after a biometric auth. This was causing the device to sleep using the CircleReveal, since it wasn't allowed to be reset to LiftReveal if we went to sleep from timeout (vs. a power button press, where it'd be reset to PowerButtonReveal). If the device was subsequently woken up via a tap (not a power press or a lift), the CircleReveal remained as the reveal effect. The reveal amount for a CircleReveal is controlled by the biometric auth controller, but since we weren't actually waking up from a biometric auth, nothing happened and the reveal amount remained at 0f. Since you can't "go to sleep from a biometric auth", this is a safe fix to make sure we don't leave the CircleReveal set as the reveal effect. Fixes: 192912744 Test: wake the device via fingerprint while it's asleep, then let it time out and receive a HUN Change-Id: I86f2ad17d175c40c159de9ed6372490fb6e276f0 (cherry picked from commit 9ea5d02507b0ea9060642da81d971d118b579e1c) --- .../src/com/android/systemui/statusbar/phone/StatusBar.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 742eae391a753..4d5c053b7e352 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -3950,7 +3950,11 @@ public class StatusBar extends SystemUI implements DemoMode, || !wakingUp && mWakefulnessLifecycle.getLastSleepReason() == PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON) { mLightRevealScrim.setRevealEffect(mPowerButtonReveal); - } else if (!(mLightRevealScrim.getRevealEffect() instanceof CircleReveal)) { + } else if (!wakingUp || !(mLightRevealScrim.getRevealEffect() instanceof CircleReveal)) { + // If we're going to sleep, but it's not from the power button, use the default reveal. + // If we're waking up, only use the default reveal if the biometric controller didn't + // already set it to the circular reveal because we're waking up from a fingerprint/face + // auth. mLightRevealScrim.setRevealEffect(LiftReveal.INSTANCE); } } From 58f1264e8d3a407c83e5435090aa95f6d6c9b939 Mon Sep 17 00:00:00 2001 From: Jing Ji Date: Wed, 28 Jul 2021 10:40:21 -0700 Subject: [PATCH 190/192] Fix NullPointerException in PhantomProcessList due to race condition Bug: 194897294 Bug: 194146206 Test: atest AppChildProcessTest Test: atest CtsAppTestCases:ActivityManagerTest Change-Id: I5d395726d2ff404e8e82d21a7886511a06288c43 (cherry picked from commit 0a05f5475f1f9ea0e61bb69b9c98f4b8ef850b20) --- .../core/java/com/android/server/am/PhantomProcessList.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/core/java/com/android/server/am/PhantomProcessList.java b/services/core/java/com/android/server/am/PhantomProcessList.java index ca31681616051..b07684c9a0043 100644 --- a/services/core/java/com/android/server/am/PhantomProcessList.java +++ b/services/core/java/com/android/server/am/PhantomProcessList.java @@ -365,6 +365,9 @@ public final class PhantomProcessList { private int onPhantomProcessFdEvent(FileDescriptor fd, int events) { synchronized (mLock) { final PhantomProcessRecord proc = mPhantomProcessesPidFds.get(fd.getInt$()); + if (proc == null) { + return 0; + } if ((events & EVENT_INPUT) != 0) { proc.onProcDied(true); } else { From e5ae75b0fbfbf3740c221f109840f7889a560616 Mon Sep 17 00:00:00 2001 From: Michael Wachenschwanz Date: Thu, 29 Jul 2021 11:30:37 -0700 Subject: [PATCH 191/192] Log and skip noteEvent calls with null name Bug: 194733136 Test: builds + boots Change-Id: I909a4656d3d3aa502466d96ffa804573de258587 (cherry picked from commit 84fcc8963ed5f514dceb02272e5f577069d0b682) --- .../java/com/android/server/am/BatteryStatsService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index 9f41c8ba96266..ae14ca7b66bda 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -841,6 +841,12 @@ public final class BatteryStatsService extends IBatteryStats.Stub public void noteEvent(final int code, final String name, final int uid) { enforceCallingPermission(); + if (name == null) { + // TODO(b/194733136): Replace with an IllegalArgumentException throw. + Slog.wtfStack(TAG, "noteEvent called with null name. code = " + code); + return; + } + synchronized (mLock) { final long elapsedRealtime = SystemClock.elapsedRealtime(); final long uptime = SystemClock.uptimeMillis(); From 721c6039c004821de6f506e326ceda791b1a2e14 Mon Sep 17 00:00:00 2001 From: Patrick Baumann Date: Wed, 4 Aug 2021 20:05:36 +0000 Subject: [PATCH 192/192] Revert "Apply overlay updates to widget provider info" This reverts commit 0bf76b6296e7095ab98ea175452e5697e9afcc66. Bug: 193866093 Fixes: 195267626 Reason for revert: b/195267626 Change-Id: I598a99f761e66d8bedbb0745d488ccc35fff9201 (cherry picked from commit 471720cccf848d896639322644314e16264f8af8) --- .../appwidget/AppWidgetManagerInternal.java | 14 ----- core/java/android/widget/RemoteViews.java | 19 ------ .../appwidget/AppWidgetServiceImpl.java | 60 ------------------- .../server/am/ActivityManagerService.java | 8 --- 4 files changed, 101 deletions(-) diff --git a/core/java/android/appwidget/AppWidgetManagerInternal.java b/core/java/android/appwidget/AppWidgetManagerInternal.java index 266e33af0e22b..5694ca8604536 100644 --- a/core/java/android/appwidget/AppWidgetManagerInternal.java +++ b/core/java/android/appwidget/AppWidgetManagerInternal.java @@ -19,8 +19,6 @@ package android.appwidget; import android.annotation.Nullable; import android.util.ArraySet; -import java.util.Set; - /** * App widget manager local system service interface. * @@ -44,16 +42,4 @@ public abstract class AppWidgetManagerInternal { * @param userId The user that is being unlocked. */ public abstract void unlockUser(int userId); - - /** - * Updates all widgets, applying changes to Runtime Resource Overlay affecting the specified - * target packages. - * - * @param packageNames The names of all target packages for which an overlay was modified - * @param userId The user for which overlay modifications occurred. - * @param updateFrameworkRes Whether or not an overlay affected the values of framework - * resources. - */ - public abstract void applyResourceOverlaysToWidgets(Set packageNames, int userId, - boolean updateFrameworkRes); } diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 91fc5a56d9795..e827f0a31bfd4 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -5824,25 +5824,6 @@ public class RemoteViews implements Parcelable, Filter { return false; } - /** @hide */ - public void updateAppInfo(@NonNull ApplicationInfo info) { - if (mApplication != null && mApplication.sourceDir.equals(info.sourceDir)) { - // Overlay paths are generated against a particular version of an application. - // The overlays paths of a newly upgraded application are incompatible with the - // old version of the application. - mApplication = info; - } - if (hasSizedRemoteViews()) { - for (RemoteViews layout : mSizedRemoteViews) { - layout.updateAppInfo(info); - } - } - if (hasLandscapeAndPortraitLayouts()) { - mLandscape.updateAppInfo(info); - mPortrait.updateAppInfo(info); - } - } - private Context getContextForResources(Context context) { if (mApplication != null) { if (context.getUserId() == UserHandle.getUserId(mApplication.uid) diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index a56b1db1494c8..5aec6aa99c128 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -3285,57 +3285,6 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } } - private void applyResourceOverlaysToWidgetsLocked(Set packageNames, int userId, - boolean updateFrameworkRes) { - for (int i = 0, N = mProviders.size(); i < N; i++) { - Provider provider = mProviders.get(i); - if (provider.getUserId() != userId) { - continue; - } - - final String packageName = provider.id.componentName.getPackageName(); - if (!updateFrameworkRes && !packageNames.contains(packageName)) { - continue; - } - - ApplicationInfo newAppInfo = null; - try { - newAppInfo = mPackageManager.getApplicationInfo(packageName, - PackageManager.GET_SHARED_LIBRARY_FILES, userId); - } catch (RemoteException e) { - Slog.w(TAG, "Failed to retrieve app info for " + packageName - + " userId=" + userId, e); - } - if (newAppInfo == null) { - continue; - } - ApplicationInfo oldAppInfo = provider.info.providerInfo.applicationInfo; - if (!newAppInfo.sourceDir.equals(oldAppInfo.sourceDir)) { - // Overlay paths are generated against a particular version of an application. - // The overlays paths of a newly upgraded application are incompatible with the - // old version of the application. - continue; - } - - // Isolate the changes relating to RROs. The app info must be copied to prevent - // affecting other parts of system server that may have cached this app info. - oldAppInfo = new ApplicationInfo(oldAppInfo); - oldAppInfo.overlayPaths = newAppInfo.overlayPaths.clone(); - oldAppInfo.resourceDirs = newAppInfo.resourceDirs.clone(); - provider.info.providerInfo.applicationInfo = oldAppInfo; - - for (int j = 0, M = provider.widgets.size(); j < M; j++) { - Widget widget = provider.widgets.get(j); - if (widget.views != null) { - widget.views.updateAppInfo(oldAppInfo); - } - if (widget.maskedViews != null) { - widget.maskedViews.updateAppInfo(oldAppInfo); - } - } - } - } - /** * Updates all providers with the specified package names, and records any providers that were * pruned. @@ -4926,14 +4875,5 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku public void unlockUser(int userId) { handleUserUnlocked(userId); } - - @Override - public void applyResourceOverlaysToWidgets(Set packageNames, int userId, - boolean updateFrameworkRes) { - synchronized (mLock) { - applyResourceOverlaysToWidgetsLocked(new HashSet<>(packageNames), userId, - updateFrameworkRes); - } - } } } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index e0df4b797fe5a..99ae52c009959 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -193,7 +193,6 @@ import android.app.usage.UsageEvents.Event; import android.app.usage.UsageStatsManager; import android.app.usage.UsageStatsManagerInternal; import android.appwidget.AppWidgetManager; -import android.appwidget.AppWidgetManagerInternal; import android.content.AttributionSource; import android.content.AutofillOptions; import android.content.BroadcastReceiver; @@ -16598,13 +16597,6 @@ public class ActivityManagerService extends IActivityManager.Stub if (updateFrameworkRes) { ParsingPackageUtils.readConfigUseRoundIcon(null); } - - AppWidgetManagerInternal widgets = LocalServices.getService(AppWidgetManagerInternal.class); - if (widgets != null) { - widgets.applyResourceOverlaysToWidgets(new HashSet<>(packagesToUpdate), userId, - updateFrameworkRes); - } - mProcessList.updateApplicationInfoLOSP(packagesToUpdate, userId, updateFrameworkRes); if (updateFrameworkRes) {