| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.content.browser.input; | 5 package org.chromium.content.browser.input; |
| 6 | 6 |
| 7 import android.os.SystemClock; | 7 import android.os.SystemClock; |
| 8 import android.text.Editable; | 8 import android.text.Editable; |
| 9 import android.text.InputType; | 9 import android.text.InputType; |
| 10 import android.text.Selection; | 10 import android.text.Selection; |
| 11 import android.text.TextUtils; | 11 import android.text.TextUtils; |
| 12 import android.util.Log; | 12 import android.util.Log; |
| 13 import android.view.KeyEvent; | 13 import android.view.KeyEvent; |
| 14 import android.view.View; | 14 import android.view.View; |
| 15 import android.view.inputmethod.BaseInputConnection; | 15 import android.view.inputmethod.BaseInputConnection; |
| 16 import android.view.inputmethod.EditorInfo; | 16 import android.view.inputmethod.EditorInfo; |
| 17 import android.view.inputmethod.ExtractedText; | 17 import android.view.inputmethod.ExtractedText; |
| 18 import android.view.inputmethod.ExtractedTextRequest; | 18 import android.view.inputmethod.ExtractedTextRequest; |
| 19 | 19 |
| 20 import com.google.common.annotations.VisibleForTesting; | 20 import com.google.common.annotations.VisibleForTesting; |
| 21 | 21 |
| 22 import org.chromium.content.browser.ContentView; |
| 23 |
| 22 /** | 24 /** |
| 23 * InputConnection is created by ContentView.onCreateInputConnection. | 25 * InputConnection is created by ContentView.onCreateInputConnection. |
| 24 * It then adapts android's IME to chrome's RenderWidgetHostView using the | 26 * It then adapts android's IME to chrome's RenderWidgetHostView using the |
| 25 * native ImeAdapterAndroid via the class ImeAdapter. | 27 * native ImeAdapterAndroid via the class ImeAdapter. |
| 26 */ | 28 */ |
| 27 public class AdapterInputConnection extends BaseInputConnection { | 29 public class AdapterInputConnection extends BaseInputConnection { |
| 28 private static final String TAG = "AdapterInputConnection"; | 30 private static final String TAG = "AdapterInputConnection"; |
| 29 private static final boolean DEBUG = false; | 31 private static final boolean DEBUG = false; |
| 30 /** | 32 /** |
| 31 * Selection value should be -1 if not known. See EditorInfo.java for detail
s. | 33 * Selection value should be -1 if not known. See EditorInfo.java for detail
s. |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 331 * @see BaseInputConnection#sendKeyEvent(android.view.KeyEvent) | 333 * @see BaseInputConnection#sendKeyEvent(android.view.KeyEvent) |
| 332 */ | 334 */ |
| 333 @Override | 335 @Override |
| 334 public boolean sendKeyEvent(KeyEvent event) { | 336 public boolean sendKeyEvent(KeyEvent event) { |
| 335 if (DEBUG) { | 337 if (DEBUG) { |
| 336 Log.w(TAG, "sendKeyEvent [" + event.getAction() + "] [" + event.getK
eyCode() + "]"); | 338 Log.w(TAG, "sendKeyEvent [" + event.getAction() + "] [" + event.getK
eyCode() + "]"); |
| 337 } | 339 } |
| 338 // If this is a key-up, and backspace/del or if the key has a character
representation, | 340 // If this is a key-up, and backspace/del or if the key has a character
representation, |
| 339 // need to update the underlying Editable (i.e. the local representation
of the text | 341 // need to update the underlying Editable (i.e. the local representation
of the text |
| 340 // being edited). | 342 // being edited). |
| 343 ((ContentView)mInternalView). |
| 344 getInsertionHandleController().hideAndDisallowAutomaticShowing()
; |
| 341 if (event.getAction() == KeyEvent.ACTION_UP) { | 345 if (event.getAction() == KeyEvent.ACTION_UP) { |
| 342 if (event.getKeyCode() == KeyEvent.KEYCODE_DEL) { | 346 if (event.getKeyCode() == KeyEvent.KEYCODE_DEL) { |
| 343 deleteSurroundingText(1, 0); | 347 deleteSurroundingText(1, 0); |
| 344 return true; | 348 return true; |
| 345 } else if (event.getKeyCode() == KeyEvent.KEYCODE_FORWARD_DEL) { | 349 } else if (event.getKeyCode() == KeyEvent.KEYCODE_FORWARD_DEL) { |
| 346 deleteSurroundingText(0, 1); | 350 deleteSurroundingText(0, 1); |
| 347 return true; | 351 return true; |
| 348 } else { | 352 } else { |
| 349 int unicodeChar = event.getUnicodeChar(); | 353 int unicodeChar = event.getUnicodeChar(); |
| 350 if (unicodeChar != 0) { | 354 if (unicodeChar != 0) { |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 @VisibleForTesting | 500 @VisibleForTesting |
| 497 ImeState getImeStateForTesting() { | 501 ImeState getImeStateForTesting() { |
| 498 String text = mEditable.toString(); | 502 String text = mEditable.toString(); |
| 499 int selectionStart = Selection.getSelectionStart(mEditable); | 503 int selectionStart = Selection.getSelectionStart(mEditable); |
| 500 int selectionEnd = Selection.getSelectionEnd(mEditable); | 504 int selectionEnd = Selection.getSelectionEnd(mEditable); |
| 501 int compositionStart = getComposingSpanStart(mEditable); | 505 int compositionStart = getComposingSpanStart(mEditable); |
| 502 int compositionEnd = getComposingSpanEnd(mEditable); | 506 int compositionEnd = getComposingSpanEnd(mEditable); |
| 503 return new ImeState(text, selectionStart, selectionEnd, compositionStart
, compositionEnd); | 507 return new ImeState(text, selectionStart, selectionEnd, compositionStart
, compositionEnd); |
| 504 } | 508 } |
| 505 } | 509 } |
| OLD | NEW |