be exact about key acceleration

Make the key acceleration detection exact;
if accelerator requires shift, allow only shift, and so on.

bug:3301564
Change-Id: I9b0ff27d5bb1d91f8aa0eae0af37a6fe4dabc54e
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index a5a6090..e707e36 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -2352,9 +2352,11 @@
      * @return true if handled, false to pass to super
      */
     boolean onKeyDown(int keyCode, KeyEvent event) {
+        boolean noModifiers = event.hasNoModifiers();
+
         // Even if MENU is already held down, we need to call to super to open
         // the IME on long press.
-        if (KeyEvent.KEYCODE_MENU == keyCode) {
+        if (!noModifiers && KeyEvent.KEYCODE_MENU == keyCode) {
             mMenuIsDown = true;
             return false;
         }
@@ -2366,23 +2368,26 @@
         WebView webView = getCurrentTopWebView();
         if (webView == null) return false;
 
-        boolean ctrl = event.isCtrlPressed();
+        boolean ctrl = event.hasModifiers(KeyEvent.META_CTRL_ON);
+        boolean shift = event.hasModifiers(KeyEvent.META_SHIFT_ON);
 
         switch(keyCode) {
             case KeyEvent.KEYCODE_ESCAPE:
+                if (!noModifiers) break;
                 stopLoading();
                 return true;
             case KeyEvent.KEYCODE_SPACE:
                 // WebView/WebTextView handle the keys in the KeyDown. As
                 // the Activity's shortcut keys are only handled when WebView
                 // doesn't, have to do it in onKeyDown instead of onKeyUp.
-                if (event.isShiftPressed()) {
+                if (shift) {
                     pageUp();
-                } else {
+                } else if (noModifiers) {
                     pageDown();
                 }
                 return true;
             case KeyEvent.KEYCODE_BACK:
+                if (!noModifiers) break;
                 if (event.getRepeatCount() == 0) {
                     event.startTracking();
                     return true;
@@ -2498,6 +2503,7 @@
     }
 
     boolean onKeyUp(int keyCode, KeyEvent event) {
+        if (!event.hasNoModifiers()) return false;
         switch(keyCode) {
             case KeyEvent.KEYCODE_MENU:
                 mMenuIsDown = false;