Added RRO info to car_service dump

Bug: 198516172
Test: adb shell dumpsys car_service

Change-Id: I3b87e279344c9742426b23ade4f0924a532ce82c
diff --git a/service/src/com/android/car/ICarImpl.java b/service/src/com/android/car/ICarImpl.java
index 4c68598..89abd1e 100644
--- a/service/src/com/android/car/ICarImpl.java
+++ b/service/src/com/android/car/ICarImpl.java
@@ -16,6 +16,8 @@
 
 package com.android.car;
 
+import static android.car.builtin.content.pm.PackageManagerHelper.PROPERTY_CAR_SERVICE_PACKAGE_NAME;
+
 import static com.android.car.CarServiceImpl.CAR_SERVICE_INIT_TIMING_MIN_DURATION_MS;
 import static com.android.car.CarServiceImpl.CAR_SERVICE_INIT_TIMING_TAG;
 import static com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport.DEPRECATED_CODE;
@@ -25,6 +27,7 @@
 import android.annotation.MainThread;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.app.ActivityManager;
 import android.car.Car;
 import android.car.CarFeatures;
 import android.car.ICar;
@@ -39,6 +42,8 @@
 import android.car.builtin.util.TimingsTraceLog;
 import android.car.user.CarUserManager;
 import android.content.Context;
+import android.content.om.OverlayInfo;
+import android.content.om.OverlayManager;
 import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.frameworks.automotive.powerpolicy.internal.ICarPowerPolicySystemNotification;
@@ -50,6 +55,7 @@
 import android.os.Parcel;
 import android.os.Process;
 import android.os.RemoteException;
+import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
 
@@ -699,6 +705,7 @@
             dumpVersions(writer);
             dumpAllServices(writer);
             dumpAllHals(writer);
+            dumpRROs(writer);
         } else if ("--list".equals(args[0])) {
             dumpListOfServices(writer);
             return;
@@ -744,6 +751,38 @@
         }
     }
 
+    private void dumpRROs(IndentingPrintWriter writer) {
+        writer.println("*Dump Car Service RROs*");
+
+        String packageName = SystemProperties.get(
+                PROPERTY_CAR_SERVICE_PACKAGE_NAME, /*def= */null);
+        if (packageName == null) {
+            writer.println("Car Service updatable package name is null.");
+            return;
+        }
+
+        OverlayManager manager = mContext.getSystemService(OverlayManager.class);
+
+        List<OverlayInfo> installedOverlaysForSystem = manager.getOverlayInfosForTarget(packageName,
+                UserHandle.SYSTEM);
+        writer.println("RROs for System User");
+        for (int i = 0; i < installedOverlaysForSystem.size(); i++) {
+            OverlayInfo overlayInfo = installedOverlaysForSystem.get(i);
+            writer.printf("Overlay: %s, Enabled: %b \n", overlayInfo.getPackageName(),
+                    overlayInfo.isEnabled());
+        }
+
+        int currentUser = ActivityManager.getCurrentUser();
+        writer.printf("RROs for Current User: %d\n", currentUser);
+        List<OverlayInfo> installedOverlaysForCurrentUser = manager.getOverlayInfosForTarget(
+                packageName, UserHandle.of(currentUser));
+        for (int i = 0; i < installedOverlaysForCurrentUser.size(); i++) {
+            OverlayInfo overlayInfo = installedOverlaysForCurrentUser.get(i);
+            writer.printf("Overlay: %s, Enabled: %b \n", overlayInfo.getPackageName(),
+                    overlayInfo.isEnabled());
+        }
+    }
+
     @ExcludeFromCodeCoverageGeneratedReport(reason = DUMP_INFO)
     private void dumpVersions(IndentingPrintWriter writer) {
         writer.println("*Dump versions*");