Merge "Audio Policy: Clear calling identity for all paths setting ringer mode." into lmp-mr1-dev

This commit is contained in:
John Spurlock
2014-12-24 01:16:12 +00:00
committed by Android (Google) Code Review

View File

@@ -1841,22 +1841,12 @@ public class AudioService extends IAudioService.Stub {
} }
public void setRingerModeExternal(int ringerMode, String caller) { public void setRingerModeExternal(int ringerMode, String caller) {
final long identity = Binder.clearCallingIdentity(); setRingerMode(ringerMode, caller, true /*external*/);
try {
setRingerMode(ringerMode, caller, true /*external*/);
} finally {
Binder.restoreCallingIdentity(identity);
}
} }
public void setRingerModeInternal(int ringerMode, String caller) { public void setRingerModeInternal(int ringerMode, String caller) {
enforceSelfOrSystemUI("setRingerModeInternal"); enforceSelfOrSystemUI("setRingerModeInternal");
final long identity = Binder.clearCallingIdentity(); setRingerMode(ringerMode, caller, false /*external*/);
try {
setRingerMode(ringerMode, caller, false /*external*/);
} finally {
Binder.restoreCallingIdentity(identity);
}
} }
private void setRingerMode(int ringerMode, String caller, boolean external) { private void setRingerMode(int ringerMode, String caller, boolean external) {
@@ -1870,28 +1860,33 @@ public class AudioService extends IAudioService.Stub {
if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) { if ((ringerMode == AudioManager.RINGER_MODE_VIBRATE) && !mHasVibrator) {
ringerMode = AudioManager.RINGER_MODE_SILENT; ringerMode = AudioManager.RINGER_MODE_SILENT;
} }
synchronized (mSettingsLock) { final long identity = Binder.clearCallingIdentity();
final int ringerModeInternal = getRingerModeInternal(); try {
final int ringerModeExternal = getRingerModeExternal(); synchronized (mSettingsLock) {
if (external) { final int ringerModeInternal = getRingerModeInternal();
setRingerModeExt(ringerMode); final int ringerModeExternal = getRingerModeExternal();
if (mRingerModeDelegate != null) { if (external) {
ringerMode = mRingerModeDelegate.onSetRingerModeExternal(ringerModeExternal, setRingerModeExt(ringerMode);
ringerMode, caller, ringerModeInternal); 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);
} }
} }