Forward keyevents to AudioManager when browser activity is on top

Fixes-issue: SWE-3166
Change-Id: Ibd0e1f0c6d8a2582dedc1047476c810a573ea823
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 397528d..6b5e424 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -41,6 +41,7 @@
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.Rect;
+import android.media.AudioManager;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.net.Uri;
@@ -48,6 +49,7 @@
 import android.net.wifi.WifiManager;
 import android.net.wifi.ScanResult;
 import android.os.AsyncTask;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.Handler;
@@ -1112,9 +1114,38 @@
         return false;
     }
 
+    private void handleMediaKeyEvent(KeyEvent event) {
+
+        int keyCode = event.getKeyCode();
+        // send media key events to audio manager
+        if (Build.VERSION.SDK_INT >= 19) {
+
+            switch (keyCode) {
+                case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
+                case KeyEvent.KEYCODE_MEDIA_STOP:
+                case KeyEvent.KEYCODE_MEDIA_NEXT:
+                case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
+                case KeyEvent.KEYCODE_MEDIA_REWIND:
+                case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
+                case KeyEvent.KEYCODE_MUTE:
+                case KeyEvent.KEYCODE_MEDIA_PLAY:
+                case KeyEvent.KEYCODE_MEDIA_PAUSE:
+                case KeyEvent.META_SHIFT_RIGHT_ON:
+                case KeyEvent.KEYCODE_MEDIA_EJECT:
+                case KeyEvent.KEYCODE_MEDIA_RECORD:
+                case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK:
+
+                    AudioManager audioManager = (AudioManager) mActivity.getApplicationContext()
+                            .getSystemService(Context.AUDIO_SERVICE);
+                    audioManager.dispatchMediaKeyEvent(event);
+            }
+        }
+    }
+
     @Override
     public boolean onUnhandledKeyEvent(KeyEvent event) {
         if (!isActivityPaused()) {
+            handleMediaKeyEvent(event);
             if (event.getAction() == KeyEvent.ACTION_DOWN) {
                 return mActivity.onKeyDown(event.getKeyCode(), event);
             } else {