Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43f311e9 authored by Winson Chung's avatar Winson Chung
Browse files

Exposing default theme overlays to system callers

Bug: 130185871
Test: Manual
Change-Id: Iadb08d76ef7e176e270d4f052c86b631f0810b80
parent ebc87475
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -152,4 +152,9 @@ interface IOverlayManager {
     * @param userId The user for which to change the overlay.
     */
    boolean setLowestPriority(in String packageName, in int userId);

    /**
     * Returns the list of default overlay packages, or an empty array if there are none.
     */
    String[] getDefaultOverlayPackages();
}
+20 −0
Original line number Diff line number Diff line
@@ -719,6 +719,26 @@ public final class OverlayManagerService extends SystemService {
            }
        }

        @Override
        public String[] getDefaultOverlayPackages() throws RemoteException {
            try {
                traceBegin(TRACE_TAG_RRO, "OMS#getDefaultOverlayPackages");
                getContext().enforceCallingOrSelfPermission(
                        android.Manifest.permission.MODIFY_THEME_OVERLAY, null);

                final long ident = Binder.clearCallingIdentity();
                try {
                    synchronized (mLock) {
                        return mImpl.getDefaultOverlayPackages();
                    }
                } finally {
                    Binder.restoreCallingIdentity(ident);
                }
            } finally {
                traceEnd(TRACE_TAG_RRO);
            }
        }

        @Override
        public void onShellCommand(@NonNull final FileDescriptor in,
                @NonNull final FileDescriptor out, @NonNull final FileDescriptor err,
+4 −0
Original line number Diff line number Diff line
@@ -641,6 +641,10 @@ final class OverlayManagerServiceImpl {
        pw.println("Default overlays: " + TextUtils.join(";", mDefaultOverlays));
    }

    @NonNull String[] getDefaultOverlayPackages() {
        return mDefaultOverlays;
    }

    List<String> getEnabledOverlayPackageNames(@NonNull final String targetPackageName,
            final int userId) {
        final List<OverlayInfo> overlays = mSettings.getOverlaysForTarget(targetPackageName,