audio: add command to purge permission cache

Add a media_audio_policy service command and helper function
in ServiceUtilities to purge permission cache.

This permists to restore the use of permission cache for
CAPTURE_AUDIO_HOTWORD permission while still  allowing CTS tests to
adopt shell permission.

Bug: 185972521
Test: atest AudioRecordSharedAudioTest
Change-Id: Ib8963053d6d7734e474174f572762abe1a4be13b
diff --git a/media/utils/ServiceUtilities.cpp b/media/utils/ServiceUtilities.cpp
index 68a5059..40a1041 100644
--- a/media/utils/ServiceUtilities.cpp
+++ b/media/utils/ServiceUtilities.cpp
@@ -212,10 +212,7 @@
 
     if (ok) {
         static const String16 sCaptureHotwordAllowed("android.permission.CAPTURE_AUDIO_HOTWORD");
-        //TODO: b/185972521: see if permission cache can be used with shell identity for CTS
-        PermissionController permissionController;
-        ok = permissionController.checkPermission(sCaptureHotwordAllowed,
-            pid, uid);
+        ok = PermissionCache::checkPermission(sCaptureHotwordAllowed, pid, uid);
     }
     if (!ok) ALOGV("android.permission.CAPTURE_AUDIO_HOTWORD");
     return ok;
@@ -301,6 +298,10 @@
   return identity;
 }
 
+void purgePermissionCache() {
+    PermissionCache::purgeCache();
+}
+
 status_t checkIMemory(const sp<IMemory>& iMemory)
 {
     if (iMemory == 0) {
diff --git a/media/utils/include/mediautils/ServiceUtilities.h b/media/utils/include/mediautils/ServiceUtilities.h
index 9a3c6fb..6e75746 100644
--- a/media/utils/include/mediautils/ServiceUtilities.h
+++ b/media/utils/include/mediautils/ServiceUtilities.h
@@ -97,6 +97,7 @@
 bool dumpAllowed();
 bool modifyPhoneStateAllowed(const media::permission::Identity& identity);
 bool bypassInterruptionPolicyAllowed(const media::permission::Identity& identity);
+void purgePermissionCache();
 
 media::permission::Identity getCallingIdentity();