| Index: content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java
 | 
| diff --git a/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java b/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java
 | 
| index 3e2f111591977e37911cac8ff8d64883b2087f06..600af6833d497c231748c83fdb95969f1cf5c741 100644
 | 
| --- a/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java
 | 
| +++ b/content/public/android/java/src/org/chromium/content/browser/input/AdapterInputConnection.java
 | 
| @@ -391,6 +391,14 @@ public class AdapterInputConnection extends BaseInputConnection {
 | 
|              return mImeAdapter.translateAndSendNativeEvents(event, NO_ACCENT);
 | 
|          }
 | 
|  
 | 
| +        // Some keys we just want to pass events straight through.  This allows
 | 
| +        // proper "repeating key" behavior with physical keyboards.
 | 
| +        int eventKeyCode = event.getKeyCode();
 | 
| +        if (eventKeyCode == KeyEvent.KEYCODE_DEL || eventKeyCode == KeyEvent.KEYCODE_FORWARD_DEL) {
 | 
| +            mPendingAccent = 0;
 | 
| +            return mImeAdapter.translateAndSendNativeEvents(event, NO_ACCENT);
 | 
| +        }
 | 
| +
 | 
|          int unicodeChar = event.getUnicodeChar();
 | 
|  
 | 
|          // If this is a key-up, and backspace/del or if the key has a character representation,
 | 
| @@ -429,7 +437,6 @@ public class AdapterInputConnection extends BaseInputConnection {
 | 
|                  return true;
 | 
|              }
 | 
|          }
 | 
| -        mImeAdapter.translateAndSendNativeEvents(event, mPendingAccent);
 | 
|  
 | 
|          // Physical keyboards also have their events come through here though not
 | 
|          // by BaseInputConnection.  In order to support "accent" key sequences
 | 
| @@ -440,9 +447,11 @@ public class AdapterInputConnection extends BaseInputConnection {
 | 
|          // Copy class variable to local because class version may get indirectly
 | 
|          // cleared by the deleteSurroundingText() call below.
 | 
|          int pendingAccent = mPendingAccent;
 | 
| +        int nextAccent = mPendingAccent;
 | 
|  
 | 
|          if ((unicodeChar & KeyCharacterMap.COMBINING_ACCENT) != 0) {
 | 
| -            pendingAccent = unicodeChar & KeyCharacterMap.COMBINING_ACCENT_MASK;
 | 
| +            pendingAccent = NO_ACCENT;
 | 
| +            nextAccent = unicodeChar & KeyCharacterMap.COMBINING_ACCENT_MASK;
 | 
|          } else if (pendingAccent != NO_ACCENT) {
 | 
|              if (event.getAction() == KeyEvent.ACTION_DOWN) {
 | 
|                  int combined = KeyEvent.getDeadChar(pendingAccent, unicodeChar);
 | 
| @@ -456,16 +465,18 @@ public class AdapterInputConnection extends BaseInputConnection {
 | 
|                      // Previous accent doesn't combine with this character
 | 
|                      // so assume both are completely independent.
 | 
|                      pendingAccent = NO_ACCENT;
 | 
| +                    nextAccent = NO_ACCENT;
 | 
|                  }
 | 
|              }
 | 
|  
 | 
|              if (event.getAction() == KeyEvent.ACTION_UP) {
 | 
|                  // Forget accent after release of key being accented.
 | 
| -                pendingAccent = NO_ACCENT;
 | 
| +                nextAccent = NO_ACCENT;
 | 
|              }
 | 
|          }
 | 
|  
 | 
| -        mPendingAccent = pendingAccent;
 | 
| +        mImeAdapter.translateAndSendNativeEvents(event, pendingAccent);
 | 
| +        mPendingAccent = nextAccent;
 | 
|          return true;
 | 
|      }
 | 
|  
 | 
| 
 |