| Index: media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
 | 
| diff --git a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java b/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
 | 
| index 626beec9594dc34cae96000c7df0366d3230cbf1..2b4935c84ed598f55ac9b30827b7d58189e192ef 100644
 | 
| --- a/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
 | 
| +++ b/media/base/android/java/src/org/chromium/media/AudioManagerAndroid.java
 | 
| @@ -40,7 +40,7 @@ import java.util.List;
 | 
|  import java.util.Map;
 | 
|  
 | 
|  @JNINamespace("media")
 | 
| -class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
 | 
| +class AudioManagerAndroid {
 | 
|      private static final String TAG = "cr.media";
 | 
|  
 | 
|      // Set to true to enable debug logs. Avoid in production builds.
 | 
| @@ -169,8 +169,6 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
 | 
|      // Enabled during initialization if BLUETOOTH permission is granted.
 | 
|      private boolean mHasBluetoothPermission = false;
 | 
|  
 | 
| -    private int mSavedAudioMode = AudioManager.MODE_INVALID;
 | 
| -
 | 
|      // Stores the audio states related to Bluetooth SCO audio, where some
 | 
|      // states are needed to keep track of intermediate states while the SCO
 | 
|      // channel is enabled or disabled (switching state can take a few seconds).
 | 
| @@ -296,8 +294,8 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
 | 
|      }
 | 
|  
 | 
|      /**
 | 
| -     * Requests audio focus for voice call and sets audio mode as COMMUNICATION if input parameter
 | 
| -     * is true. Abandon audio focus and restore saved audio mode if input parameter is false.
 | 
| +     * Sets audio mode as COMMUNICATION if input parameter is true.
 | 
| +     * Restores audio mode to NORMAL if input parameter is false.
 | 
|       * Required permission: android.Manifest.permission.MODIFY_AUDIO_SETTINGS.
 | 
|       */
 | 
|      @CalledByNative
 | 
| @@ -315,10 +313,6 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
 | 
|          }
 | 
|  
 | 
|          if (on) {
 | 
| -            // Request audio focus for a voice call of unknown duration.
 | 
| -            mAudioManager.requestAudioFocus(this, AudioManager.STREAM_VOICE_CALL,
 | 
| -                    AudioManager.AUDIOFOCUS_GAIN);
 | 
| -
 | 
|              // Store microphone mute state and speakerphone state so it can
 | 
|              // be restored when closing.
 | 
|              mSavedIsSpeakerphoneOn = mAudioManager.isSpeakerphoneOn();
 | 
| @@ -331,8 +325,6 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
 | 
|              // mode but we want to be able to mute it completely.
 | 
|              startObservingVolumeChanges();
 | 
|          } else {
 | 
| -            mAudioManager.abandonAudioFocus(this);
 | 
| -
 | 
|              stopObservingVolumeChanges();
 | 
|              stopBluetoothSco();
 | 
|              synchronized (mLock) {
 | 
| @@ -349,27 +341,12 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
 | 
|  
 | 
|      /**
 | 
|       * Sets audio mode to MODE_IN_COMMUNICATION if input parameter is true.
 | 
| -     * Restores saved audio mode if input parameter is false.
 | 
| +     * Restores audio mode to MODE_NORMAL if input parameter is false.
 | 
|       */
 | 
|      private void setCommunicationAudioModeOnInternal(boolean on) {
 | 
|          if (DEBUG) logd("setCommunicationAudioModeOn(" + on + ")");
 | 
|  
 | 
|          if (on) {
 | 
| -            if (mSavedAudioMode != AudioManager.MODE_INVALID) {
 | 
| -                Log.w(TAG, "Audio mode has already been set");
 | 
| -                return;
 | 
| -            }
 | 
| -
 | 
| -            // Store the current audio mode the first time we try to
 | 
| -            // switch to communication mode.
 | 
| -            try {
 | 
| -                mSavedAudioMode = mAudioManager.getMode();
 | 
| -            } catch (SecurityException e) {
 | 
| -                logDeviceInfo();
 | 
| -                throw e;
 | 
| -
 | 
| -            }
 | 
| -
 | 
|              try {
 | 
|                  mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
 | 
|              } catch (SecurityException e) {
 | 
| @@ -378,39 +355,14 @@ class AudioManagerAndroid implements AudioManager.OnAudioFocusChangeListener{
 | 
|              }
 | 
|  
 | 
|          } else {
 | 
| -            if (mSavedAudioMode == AudioManager.MODE_INVALID) {
 | 
| -                Log.w(TAG, "Audio mode has not yet been set");
 | 
| -                return;
 | 
| -            }
 | 
| -
 | 
|              // Restore the mode that was used before we switched to
 | 
|              // communication mode.
 | 
|              try {
 | 
| -                mAudioManager.setMode(mSavedAudioMode);
 | 
| +                mAudioManager.setMode(AudioManager.MODE_NORMAL);
 | 
|              } catch (SecurityException e) {
 | 
|                  logDeviceInfo();
 | 
|                  throw e;
 | 
|              }
 | 
| -            mSavedAudioMode = AudioManager.MODE_INVALID;
 | 
| -        }
 | 
| -    }
 | 
| -
 | 
| -    /**
 | 
| -     * Restores saved audio mode when we lose audio focus.
 | 
| -     * Sets communication audio mode when we gain audio focus again.
 | 
| -     * See https://crbug.com/525597 for more details.
 | 
| -     */
 | 
| -    @Override
 | 
| -    public void onAudioFocusChange(int focusChange) {
 | 
| -        if (DEBUG) logd("onAudioFocusChange: " + focusChange);
 | 
| -
 | 
| -        switch (focusChange) {
 | 
| -            case AudioManager.AUDIOFOCUS_GAIN:
 | 
| -                setCommunicationAudioModeOnInternal(true);
 | 
| -                break;
 | 
| -            default:
 | 
| -                setCommunicationAudioModeOnInternal(false);
 | 
| -                break;
 | 
|          }
 | 
|      }
 | 
|  
 | 
| 
 |