Merge "Audio Policy: Clear calling identity for all paths setting ringer mode." into lmp-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
af84e073bc
@@ -1841,22 +1841,12 @@ public class AudioService extends IAudioService.Stub {
|
||||
}
|
||||
|
||||
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 @@ public class AudioService extends IAudioService.Stub {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user