DO NOT MERGE Check caller for sending media key to telephony service am: d1641e8c27

am: 9477c1674c

Change-Id: If2edd8d386cd57f00221fedff3f118e6887cab61
This commit is contained in:
Jaewan Kim
2016-09-22 07:35:37 +00:00
committed by android-build-merger
2 changed files with 20 additions and 1 deletions

View File

@@ -40,6 +40,7 @@ import android.os.IBinder;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.PowerManager; import android.os.PowerManager;
import android.os.Process;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.IBinder.DeathRecipient; import android.os.IBinder.DeathRecipient;
@@ -750,7 +751,13 @@ public class MediaFocusControl implements OnFinished {
synchronized(mRCStack) { synchronized(mRCStack) {
if ((mMediaReceiverForCalls != null) && if ((mMediaReceiverForCalls != null) &&
(mIsRinging || (mAudioService.getMode() == AudioSystem.MODE_IN_CALL))) { (mIsRinging || (mAudioService.getMode() == AudioSystem.MODE_IN_CALL))) {
dispatchMediaKeyEventForCalls(keyEvent, needWakeLock); if (Binder.getCallingUid() != Process.SYSTEM_UID) {
// Prevent dispatching key event to the global priority session.
Slog.i(TAG, "Only the system can dispatch media key event "
+ "to the global priority session.");
} else {
dispatchMediaKeyEventForCalls(keyEvent, needWakeLock);
}
return; return;
} }
} }

View File

@@ -4141,6 +4141,18 @@ public class PhoneWindowManager implements WindowManagerPolicy {
case KeyEvent.KEYCODE_MEDIA_RECORD: case KeyEvent.KEYCODE_MEDIA_RECORD:
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: { case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: {
ITelephony telephonyService = getTelephonyService();
if (telephonyService != null) {
try {
if (!telephonyService.isIdle()) {
// When phone is ringing or in-call, pass all media keys to it.
result &= ~ACTION_PASS_TO_USER;
}
} catch (RemoteException ex) {
Log.w(TAG, "ITelephony threw RemoteException", ex);
}
}
if ((result & ACTION_PASS_TO_USER) == 0) { if ((result & ACTION_PASS_TO_USER) == 0) {
// Only do this if we would otherwise not pass it to the user. In that // Only do this if we would otherwise not pass it to the user. In that
// case, the PhoneWindow class will do the same thing, except it will // case, the PhoneWindow class will do the same thing, except it will