Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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.content.res.Configuration; | 7 import android.content.res.Configuration; |
| 8 import android.os.Build; | 8 import android.os.Build; |
| 9 import android.os.ResultReceiver; | 9 import android.os.ResultReceiver; |
| 10 import android.os.SystemClock; | 10 import android.os.SystemClock; |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 340 if (mNativeImeAdapterAndroid != 0) { | 340 if (mNativeImeAdapterAndroid != 0) { |
| 341 nativeResetImeAdapter(mNativeImeAdapterAndroid); | 341 nativeResetImeAdapter(mNativeImeAdapterAndroid); |
| 342 } | 342 } |
| 343 if (nativeImeAdapter != 0) { | 343 if (nativeImeAdapter != 0) { |
| 344 nativeAttachImeAdapter(nativeImeAdapter); | 344 nativeAttachImeAdapter(nativeImeAdapter); |
| 345 } | 345 } |
| 346 mNativeImeAdapterAndroid = nativeImeAdapter; | 346 mNativeImeAdapterAndroid = nativeImeAdapter; |
| 347 if (nativeImeAdapter != 0) { | 347 if (nativeImeAdapter != 0) { |
| 348 createInputConnectionFactory(); | 348 createInputConnectionFactory(); |
| 349 } | 349 } |
| 350 resetAndHideKeyboard(); | |
| 350 } | 351 } |
| 351 | 352 |
| 352 /** | 353 /** |
| 353 * Show soft keyboard only if it is the current keyboard configuration. | 354 * Show soft keyboard only if it is the current keyboard configuration. |
| 354 */ | 355 */ |
| 355 private void showSoftKeyboard() { | 356 private void showSoftKeyboard() { |
| 356 if (DEBUG_LOGS) Log.w(TAG, "showSoftKeyboard"); | 357 if (DEBUG_LOGS) Log.w(TAG, "showSoftKeyboard"); |
| 357 mInputMethodManagerWrapper.showSoftInput( | 358 mInputMethodManagerWrapper.showSoftInput( |
| 358 mViewEmbedder.getAttachedView(), 0, mViewEmbedder.getNewShowKeyb oardReceiver()); | 359 mViewEmbedder.getAttachedView(), 0, mViewEmbedder.getNewShowKeyb oardReceiver()); |
| 359 if (mViewEmbedder.getAttachedView().getResources().getConfiguration().ke yboard | 360 if (mViewEmbedder.getAttachedView().getResources().getConfiguration().ke yboard |
| 360 != Configuration.KEYBOARD_NOKEYS) { | 361 != Configuration.KEYBOARD_NOKEYS) { |
| 361 mViewEmbedder.onKeyboardBoundsUnchanged(); | 362 mViewEmbedder.onKeyboardBoundsUnchanged(); |
| 362 } | 363 } |
| 363 } | 364 } |
| 364 | 365 |
| 365 /** | 366 /** |
| 366 * Hide soft keyboard. | 367 * Hide soft keyboard. |
| 367 */ | 368 */ |
| 368 private void hideKeyboard() { | 369 private void hideKeyboard() { |
| 369 if (DEBUG_LOGS) Log.w(TAG, "hideKeyboard"); | 370 if (DEBUG_LOGS) Log.w(TAG, "hideKeyboard"); |
| 370 View view = mViewEmbedder.getAttachedView(); | 371 View view = mViewEmbedder.getAttachedView(); |
| 371 if (mInputMethodManagerWrapper.isActive(view)) { | 372 // NOTE: we should not set ResultReceiver here. Otherwise, IMM will own ContentViewCore |
|
Changwan Ryu
2016/10/19 05:10:21
Is this really causing flakiness in test with onDe
yabinh
2016/10/24 01:40:57
Still flaky, but it's because of the test itself,
| |
| 372 // NOTE: we should not set ResultReceiver here. Otherwise, IMM will own ContentViewCore | 373 // and ImeAdapter even after input method goes away and result gets rece ived. |
| 373 // and ImeAdapter even after input method goes away and result gets received. | 374 mInputMethodManagerWrapper.hideSoftInputFromWindow(view.getWindowToken() , 0, null); |
| 374 mInputMethodManagerWrapper.hideSoftInputFromWindow(view.getWindowTok en(), 0, null); | |
| 375 } | |
| 376 // Detach input connection by returning null from onCreateInputConnectio n(). | 375 // Detach input connection by returning null from onCreateInputConnectio n(). |
| 377 if (mTextInputType == TextInputType.NONE && mInputConnection != null) { | 376 if (mTextInputType == TextInputType.NONE && mInputConnection != null) { |
| 378 restartInput(); | 377 restartInput(); |
| 379 } | 378 } |
| 380 } | 379 } |
| 381 | 380 |
| 382 /** | 381 /** |
| 383 * Call this when keyboard configuration has changed. | 382 * Call this when keyboard configuration has changed. |
| 384 */ | 383 */ |
| 385 public void onKeyboardConfigurationChanged(Configuration newConfig) { | 384 public void onKeyboardConfigurationChanged(Configuration newConfig) { |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 420 public void onViewAttachedToWindow() { | 419 public void onViewAttachedToWindow() { |
| 421 if (mInputConnectionFactory != null) { | 420 if (mInputConnectionFactory != null) { |
| 422 mInputConnectionFactory.onViewAttachedToWindow(); | 421 mInputConnectionFactory.onViewAttachedToWindow(); |
| 423 } | 422 } |
| 424 } | 423 } |
| 425 | 424 |
| 426 /** | 425 /** |
| 427 * Call this when view is detached from window | 426 * Call this when view is detached from window |
| 428 */ | 427 */ |
| 429 public void onViewDetachedFromWindow() { | 428 public void onViewDetachedFromWindow() { |
| 429 resetAndHideKeyboard(); | |
|
Changwan Ryu
2016/10/19 05:10:21
As we talked offline, I now prefer this approach b
| |
| 430 if (mInputConnectionFactory != null) { | 430 if (mInputConnectionFactory != null) { |
| 431 mInputConnectionFactory.onViewDetachedFromWindow(); | 431 mInputConnectionFactory.onViewDetachedFromWindow(); |
| 432 } | 432 } |
| 433 } | 433 } |
| 434 | 434 |
| 435 /** | 435 /** |
| 436 * Call this when view's focus has changed. | 436 * Call this when view's focus has changed. |
| 437 * @param gainFocus True if we're gaining focus. | 437 * @param gainFocus True if we're gaining focus. |
| 438 */ | 438 */ |
| 439 public void onViewFocusChanged(boolean gainFocus) { | 439 public void onViewFocusChanged(boolean gainFocus) { |
| 440 if (DEBUG_LOGS) Log.w(TAG, "onViewFocusChanged: gainFocus [%b]", gainFoc us); | 440 if (DEBUG_LOGS) Log.w(TAG, "onViewFocusChanged: gainFocus [%b]", gainFoc us); |
| 441 if (!gainFocus) resetAndHideKeyboard(); | |
| 442 if (mInputConnectionFactory != null) { | 441 if (mInputConnectionFactory != null) { |
| 443 mInputConnectionFactory.onViewFocusChanged(gainFocus); | 442 mInputConnectionFactory.onViewFocusChanged(gainFocus); |
| 444 } | 443 } |
| 445 } | 444 } |
| 446 | 445 |
| 447 /** | 446 /** |
| 448 * Move cursor to the end of the current selection. | 447 * Move cursor to the end of the current selection. |
| 449 */ | 448 */ |
| 450 public void moveCursorToSelectionEnd() { | 449 public void moveCursorToSelectionEnd() { |
| 451 if (DEBUG_LOGS) Log.w(TAG, "movecursorToEnd"); | 450 if (DEBUG_LOGS) Log.w(TAG, "movecursorToEnd"); |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 799 int before, int after); | 798 int before, int after); |
| 800 private native void nativeResetImeAdapter(long nativeImeAdapterAndroid); | 799 private native void nativeResetImeAdapter(long nativeImeAdapterAndroid); |
| 801 private native boolean nativeRequestTextInputStateUpdate( | 800 private native boolean nativeRequestTextInputStateUpdate( |
| 802 long nativeImeAdapterAndroid); | 801 long nativeImeAdapterAndroid); |
| 803 private native boolean nativeBeginBatchEdit(long nativeImeAdapterAndroid); | 802 private native boolean nativeBeginBatchEdit(long nativeImeAdapterAndroid); |
| 804 private native boolean nativeEndBatchEdit(long nativeImeAdapterAndroid); | 803 private native boolean nativeEndBatchEdit(long nativeImeAdapterAndroid); |
| 805 private native void nativeRequestCursorUpdate(long nativeImeAdapterAndroid, | 804 private native void nativeRequestCursorUpdate(long nativeImeAdapterAndroid, |
| 806 boolean immediateRequest, boolean monitorRequest); | 805 boolean immediateRequest, boolean monitorRequest); |
| 807 private native boolean nativeIsImeThreadEnabled(long nativeImeAdapterAndroid ); | 806 private native boolean nativeIsImeThreadEnabled(long nativeImeAdapterAndroid ); |
| 808 } | 807 } |
| OLD | NEW |