Detect when keyboard has been dismissed by Back Key

The browser now knows for sure if the keyboard is visible

Change-Id: I8c9a91f23bac565703382ade06b8fde3b2550c1e
diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java
index 75f595b..0159cb7 100644
--- a/src/com/android/browser/BrowserWebView.java
+++ b/src/com/android/browser/BrowserWebView.java
@@ -20,6 +20,7 @@
 import android.graphics.Canvas;
 import android.content.res.Resources;
 import android.util.AttributeSet;
+import android.view.KeyEvent;
 import android.view.View;
 import org.codeaurora.swe.WebChromeClient;
 import org.codeaurora.swe.WebView;
@@ -186,4 +187,16 @@
         super.destroy();
     }
 
+    @Override
+    public boolean dispatchKeyEventPreIme(KeyEvent event) {
+        Tab currentTab = mTitleBar.getUiController().getCurrentTab();
+        if (currentTab != null && currentTab.isKeyboardShowing()){
+            // Try to detect the "back" key that dismisses the keyboard
+            if(event.getAction() == KeyEvent.ACTION_DOWN &&
+                    event.getKeyCode() == KeyEvent.KEYCODE_BACK)
+                mWebViewClient.onKeyboardStateChange(false);
+        }
+        return super.dispatchKeyEventPreIme(event);
+    }
+
 }