Audio Policy: Clear calling identity for all paths setting ringer mode.

For proper appops bookkeeping and zen setting changes.

Bug: 18832923
Change-Id: Ic029d3226458ca1a9229a0bc5726bedd5e117ad7
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index 1c10422..f8688da 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -1841,22 +1841,12 @@
     }
 
     public void setRingerModeExternal(int ringerMode, String caller) {
-        final long identity = Binder.clearCallingIdentity();
-        try {
-            setRingerMode(ringerMode, caller, true /*external*/);
-        } finally {
-            Binder.restoreCallingIdentity(identity);
-        }
+        setRingerMode(ringerMode, caller, true /*external*/);
     }
 
     public void setRingerModeInternal(int ringerMode, String caller) {
         enforceSelfOrSystemUI("setRingerModeInternal");
-        final long identity = Binder.clearCallingIdentity();
-        try {
-            setRingerMode(ringerMode, caller, false /*external*/);
-        } finally {
-            Binder.restoreCallingIdentity(identity);
-        }
+        setRingerMode(ringerMode, caller, false /*external*/);
     }
 
     private void setRingerMode(int ringerMode, String caller, boolean external) {
@@ -1870,28 +1860,33 @@
         if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
             ringerMode = AudioManager.RINGER_MODE_SILENT;
         }
-        synchronized (mSettingsLock) {
-            final int ringerModeInternal = getRingerModeInternal();
-            final int ringerModeExternal = getRingerModeExternal();
-            if (external) {
-                setRingerModeExt(ringerMode);
-                if (mRingerModeDelegate != null) {
-                    ringerMode = mRingerModeDelegate.onSetRingerModeExternal(ringerModeExternal,
-                            ringerMode, caller, ringerModeInternal);
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            synchronized (mSettingsLock) {
+                final int ringerModeInternal = getRingerModeInternal();
+                final int ringerModeExternal = getRingerModeExternal();
+                if (external) {
+                    setRingerModeExt(ringerMode);
+                    if (mRingerModeDelegate != null) {
+                        ringerMode = mRingerModeDelegate.onSetRingerModeExternal(ringerModeExternal,
+                                ringerMode, caller, ringerModeInternal);
+                    }
+                    if (ringerMode != ringerModeInternal) {
+                        setRingerModeInt(ringerMode, true /*persist*/);
+                    }
+                } else /*internal*/ {
+                    if (ringerMode != ringerModeInternal) {
+                        setRingerModeInt(ringerMode, true /*persist*/);
+                    }
+                    if (mRingerModeDelegate != null) {
+                        ringerMode = mRingerModeDelegate.onSetRingerModeInternal(ringerModeInternal,
+                                ringerMode, caller, ringerModeExternal);
+                    }
+                    setRingerModeExt(ringerMode);
                 }
-                if (ringerMode != ringerModeInternal) {
-                    setRingerModeInt(ringerMode, true /*persist*/);
-                }
-            } else /*internal*/ {
-                if (ringerMode != ringerModeInternal) {
-                    setRingerModeInt(ringerMode, true /*persist*/);
-                }
-                if (mRingerModeDelegate != null) {
-                    ringerMode = mRingerModeDelegate.onSetRingerModeInternal(ringerModeInternal,
-                            ringerMode, caller, ringerModeExternal);
-                }
-                setRingerModeExt(ringerMode);
             }
+        } finally {
+            Binder.restoreCallingIdentity(identity);
         }
     }