[RESTRICT AUTOMERGE] Send metrics config removal request to DataBroker

Currently config removal is only propagated to ResultStore and
MetricsConfigStore. This CL will remove config from DataBroker.
This CL also deletes the async return value of the removeMetricsConfig
API to make remove and removeAll APIs consistent.

Bug: 199540952
Test: atest CarServiceUnitTest:CarTelemetryServiceTest
Test: atest CarServiceUnitTest:DataBrokerTest
Test: atest CarServiceUnitTest:MetricsConfigStoreTest
Test: atest CarServiceUnitTest:ResultStoreTest
Test: atest CarSecurityPermissionTest:CarTelemetryManagerPermissionTest

Change-Id: I949d9571588a44455c04c19c5b1b2524a92b6663
diff --git a/service/src/com/android/car/telemetry/CarTelemetryService.java b/service/src/com/android/car/telemetry/CarTelemetryService.java
index f48d8d8..6f5ca1a 100644
--- a/service/src/com/android/car/telemetry/CarTelemetryService.java
+++ b/service/src/com/android/car/telemetry/CarTelemetryService.java
@@ -182,7 +182,7 @@
             // If no error (a config is successfully added), script results from an older version
             // should be deleted
             if (status == ERROR_METRICS_CONFIG_NONE) {
-                mResultStore.deleteResult(key.getName());
+                mResultStore.removeResult(key.getName());
             }
             try {
                 mListener.onAddMetricsConfigStatus(key, status);
@@ -194,29 +194,21 @@
 
     /**
      * Removes a metrics config based on the key. This will also remove outputs produced by the
-     * MetricsConfig. This method assumes {@link #setListener(ICarTelemetryServiceListener)} is
-     * called. Otherwise it does nothing.
+     * MetricsConfig.
      *
      * @param key the unique identifier of a MetricsConfig.
      */
     @Override
     public void removeMetricsConfig(@NonNull MetricsConfigKey key) {
+        mContext.enforceCallingOrSelfPermission(
+                Car.PERMISSION_USE_CAR_TELEMETRY_SERVICE, "removeMetricsConfig");
         mTelemetryHandler.post(() -> {
-            if (mListener == null) {
-                Slog.w(CarLog.TAG_TELEMETRY, "ICarTelemetryServiceListener is not set");
-                return;
-            }
             Slog.d(CarLog.TAG_TELEMETRY, "Removing metrics config " + key.getName()
                     + " from car telemetry service");
-            // TODO(b/198792767): Check both config name and config version for deletion
-            // TODO(b/199540952): Stop and remove config from data broker
-            mResultStore.deleteResult(key.getName()); // delete the config's script results
-            boolean success = mMetricsConfigStore.deleteMetricsConfig(key.getName());
-            try {
-                mListener.onRemoveMetricsConfigStatus(key, success);
-            } catch (RemoteException e) {
-                Slog.w(CarLog.TAG_TELEMETRY, "error with ICarTelemetryServiceListener", e);
-            }
+            // TODO(b/198792767): Check both config name and config version for removal
+            mDataBroker.removeMetricsConfiguration(key.getName());
+            mResultStore.removeResult(key.getName());
+            mMetricsConfigStore.removeMetricsConfig(key.getName());
         });
     }
 
@@ -226,13 +218,13 @@
     @Override
     public void removeAllMetricsConfigs() {
         mContext.enforceCallingOrSelfPermission(
-                Car.PERMISSION_USE_CAR_TELEMETRY_SERVICE, "removeAllMetricsConfig");
+                Car.PERMISSION_USE_CAR_TELEMETRY_SERVICE, "removeAllMetricsConfigs");
         mTelemetryHandler.post(() -> {
-            // TODO(b/199540952): Stop and remove all configs from DataBroker
             Slog.d(CarLog.TAG_TELEMETRY,
                     "Removing all metrics config from car telemetry service");
-            mMetricsConfigStore.deleteAllMetricsConfigs();
-            mResultStore.deleteAllResults();
+            mDataBroker.removeAllMetricsConfigurations();
+            mMetricsConfigStore.removeAllMetricsConfigs();
+            mResultStore.removeAllResults();
         });
     }