Loading services/core/java/com/android/server/media/MediaSessionService.java +12 −2 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.PackageManager; import android.database.ContentObserver; import android.database.ContentObserver; import android.media.AudioManager; import android.media.AudioManager; import android.media.AudioManagerInternal; import android.media.AudioSystem; import android.media.AudioSystem; import android.media.IAudioService; import android.media.IAudioService; import android.media.IRemoteVolumeController; import android.media.IRemoteVolumeController; Loading Loading @@ -59,6 +60,7 @@ import android.util.Log; import android.util.SparseArray; import android.util.SparseArray; import android.view.KeyEvent; import android.view.KeyEvent; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.SystemService; import com.android.server.Watchdog; import com.android.server.Watchdog; import com.android.server.Watchdog.Monitor; import com.android.server.Watchdog.Monitor; Loading Loading @@ -94,6 +96,7 @@ public class MediaSessionService extends SystemService implements Monitor { private KeyguardManager mKeyguardManager; private KeyguardManager mKeyguardManager; private IAudioService mAudioService; private IAudioService mAudioService; private AudioManager mAudioManager; private AudioManager mAudioManager; private AudioManagerInternal mAudioManagerInternal; private ContentResolver mContentResolver; private ContentResolver mContentResolver; private SettingsObserver mSettingsObserver; private SettingsObserver mSettingsObserver; Loading Loading @@ -121,6 +124,7 @@ public class MediaSessionService extends SystemService implements Monitor { (KeyguardManager) getContext().getSystemService(Context.KEYGUARD_SERVICE); (KeyguardManager) getContext().getSystemService(Context.KEYGUARD_SERVICE); mAudioService = getAudioService(); mAudioService = getAudioService(); mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); mAudioManagerInternal = LocalServices.getService(AudioManagerInternal.class); mContentResolver = getContext().getContentResolver(); mContentResolver = getContext().getContentResolver(); mSettingsObserver = new SettingsObserver(); mSettingsObserver = new SettingsObserver(); mSettingsObserver.observe(); mSettingsObserver.observe(); Loading Loading @@ -343,7 +347,13 @@ public class MediaSessionService extends SystemService implements Monitor { } } } } private void enforceStatusBarPermission(String action, int pid, int uid) { private void enforceSystemUiPermission(String action, int pid, int uid) { if (mAudioManagerInternal != null) { final int vcuid = mAudioManagerInternal.getVolumeControllerUid(); if (vcuid > 0 && uid == vcuid) { return; } } if (getContext().checkPermission(android.Manifest.permission.STATUS_BAR_SERVICE, if (getContext().checkPermission(android.Manifest.permission.STATUS_BAR_SERVICE, pid, uid) != PackageManager.PERMISSION_GRANTED) { pid, uid) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Only system ui may " + action); throw new SecurityException("Only system ui may " + action); Loading Loading @@ -789,7 +799,7 @@ public class MediaSessionService extends SystemService implements Monitor { final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid(); final long token = Binder.clearCallingIdentity(); final long token = Binder.clearCallingIdentity(); try { try { enforceStatusBarPermission("listen for volume changes", pid, uid); enforceSystemUiPermission("listen for volume changes", pid, uid); mRvc = rvc; mRvc = rvc; } finally { } finally { Binder.restoreCallingIdentity(token); Binder.restoreCallingIdentity(token); Loading Loading
services/core/java/com/android/server/media/MediaSessionService.java +12 −2 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.PackageManager; import android.database.ContentObserver; import android.database.ContentObserver; import android.media.AudioManager; import android.media.AudioManager; import android.media.AudioManagerInternal; import android.media.AudioSystem; import android.media.AudioSystem; import android.media.IAudioService; import android.media.IAudioService; import android.media.IRemoteVolumeController; import android.media.IRemoteVolumeController; Loading Loading @@ -59,6 +60,7 @@ import android.util.Log; import android.util.SparseArray; import android.util.SparseArray; import android.view.KeyEvent; import android.view.KeyEvent; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.SystemService; import com.android.server.Watchdog; import com.android.server.Watchdog; import com.android.server.Watchdog.Monitor; import com.android.server.Watchdog.Monitor; Loading Loading @@ -94,6 +96,7 @@ public class MediaSessionService extends SystemService implements Monitor { private KeyguardManager mKeyguardManager; private KeyguardManager mKeyguardManager; private IAudioService mAudioService; private IAudioService mAudioService; private AudioManager mAudioManager; private AudioManager mAudioManager; private AudioManagerInternal mAudioManagerInternal; private ContentResolver mContentResolver; private ContentResolver mContentResolver; private SettingsObserver mSettingsObserver; private SettingsObserver mSettingsObserver; Loading Loading @@ -121,6 +124,7 @@ public class MediaSessionService extends SystemService implements Monitor { (KeyguardManager) getContext().getSystemService(Context.KEYGUARD_SERVICE); (KeyguardManager) getContext().getSystemService(Context.KEYGUARD_SERVICE); mAudioService = getAudioService(); mAudioService = getAudioService(); mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); mAudioManagerInternal = LocalServices.getService(AudioManagerInternal.class); mContentResolver = getContext().getContentResolver(); mContentResolver = getContext().getContentResolver(); mSettingsObserver = new SettingsObserver(); mSettingsObserver = new SettingsObserver(); mSettingsObserver.observe(); mSettingsObserver.observe(); Loading Loading @@ -343,7 +347,13 @@ public class MediaSessionService extends SystemService implements Monitor { } } } } private void enforceStatusBarPermission(String action, int pid, int uid) { private void enforceSystemUiPermission(String action, int pid, int uid) { if (mAudioManagerInternal != null) { final int vcuid = mAudioManagerInternal.getVolumeControllerUid(); if (vcuid > 0 && uid == vcuid) { return; } } if (getContext().checkPermission(android.Manifest.permission.STATUS_BAR_SERVICE, if (getContext().checkPermission(android.Manifest.permission.STATUS_BAR_SERVICE, pid, uid) != PackageManager.PERMISSION_GRANTED) { pid, uid) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Only system ui may " + action); throw new SecurityException("Only system ui may " + action); Loading Loading @@ -789,7 +799,7 @@ public class MediaSessionService extends SystemService implements Monitor { final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid(); final long token = Binder.clearCallingIdentity(); final long token = Binder.clearCallingIdentity(); try { try { enforceStatusBarPermission("listen for volume changes", pid, uid); enforceSystemUiPermission("listen for volume changes", pid, uid); mRvc = rvc; mRvc = rvc; } finally { } finally { Binder.restoreCallingIdentity(token); Binder.restoreCallingIdentity(token); Loading