fix shortcut handling

    Bugs: 3400078
    	  3270434
	  3368141
	  3381411

    Fixed controller to check for menu & ctrl keys for shortcuts
    Changed focus handling in url bar
    Keyboard focus transitions are not 100% working yet, but it's possible
    to navigate to all the elements

Change-Id: I514d85a37dae2589e3ce1ecb18c7fc0bf4e715f3
diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java
index 88df015..f361e57 100644
--- a/src/com/android/browser/XLargeUi.java
+++ b/src/com/android/browser/XLargeUi.java
@@ -260,18 +260,19 @@
         return 0;
     }
 
-    void editUrl(boolean clearInput) {
+    @Override
+    public void editUrl(boolean clearInput) {
         if (mUiController.isInCustomActionMode()) {
             mUiController.endActionMode();
         }
         showTitleBar();
-        mTitleBar.onEditUrl(clearInput);
+        mTitleBar.startEditingUrl(clearInput);
     }
 
     void showTitleBarAndEdit() {
         mTitleBar.setShowProgressOnly(false);
         showTitleBar();
-        mTitleBar.onEditUrl(false);
+        mTitleBar.startEditingUrl(false);
     }
 
     void stopEditingUrl() {
@@ -387,21 +388,32 @@
     @Override
     public boolean dispatchKey(int code, KeyEvent event) {
         WebView web = getActiveTab().getWebView();
-        switch (code) {
-            case KeyEvent.KEYCODE_TAB:
-            case KeyEvent.KEYCODE_DPAD_UP:
-            case KeyEvent.KEYCODE_DPAD_LEFT:
-                if ((web != null) && web.hasFocus()) {
-                    editUrl(true);
-                    return true;
-                }
-        }
-        boolean ctrl = event.hasModifiers(KeyEvent.META_CTRL_ON);
-        if (!ctrl && event.isPrintingKey() && !mTitleBar.isEditingUrl()) {
-            editUrl(true);
-            return mContentView.dispatchKeyEvent(event);
+        if (event.getAction() == KeyEvent.ACTION_DOWN) {
+
+            switch (code) {
+                case KeyEvent.KEYCODE_TAB:
+                case KeyEvent.KEYCODE_DPAD_UP:
+                case KeyEvent.KEYCODE_DPAD_LEFT:
+                    if ((web != null) && web.hasFocus() && !mTitleBar.hasFocus()) {
+                        editUrl(false);
+                        return true;
+                    }
+            }
+            boolean ctrl = event.hasModifiers(KeyEvent.META_CTRL_ON);
+            if (!ctrl && isTypingKey(event) && !mTitleBar.isEditingUrl()) {
+                editUrl(true);
+                return mContentView.dispatchKeyEvent(event);
+            }
         }
         return false;
     }
 
+    private boolean isTypingKey(KeyEvent evt) {
+        return evt.getUnicodeChar() > 0;
+    }
+
+    TabBar getTabBar() {
+        return mTabBar;
+    }
+
 }