Chromium Code Reviews| 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.annotation.TargetApi; | 7 import android.annotation.TargetApi; |
| 8 import android.content.Context; | 8 import android.content.Context; |
| 9 import android.os.Build; | 9 import android.os.Build; |
| 10 import android.os.IBinder; | 10 import android.os.IBinder; |
| 11 import android.os.ResultReceiver; | 11 import android.os.ResultReceiver; |
| 12 import android.view.View; | 12 import android.view.View; |
| 13 import android.view.inputmethod.CursorAnchorInfo; | 13 import android.view.inputmethod.CursorAnchorInfo; |
| 14 import android.view.inputmethod.InputMethodManager; | 14 import android.view.inputmethod.InputMethodManager; |
| 15 | 15 |
| 16 import org.chromium.base.Log; | 16 import org.chromium.base.Log; |
| 17 | 17 |
| 18 import java.lang.reflect.InvocationTargetException; | |
| 19 import java.lang.reflect.Method; | |
| 20 | |
| 18 /** | 21 /** |
| 19 * Wrapper around Android's InputMethodManager | 22 * Wrapper around Android's InputMethodManager |
| 20 */ | 23 */ |
| 21 public class InputMethodManagerWrapper { | 24 public class InputMethodManagerWrapper { |
| 22 private static final String TAG = "cr_Ime"; | 25 private static final String TAG = "cr_Ime"; |
| 23 | 26 |
| 24 private final Context mContext; | 27 private final Context mContext; |
| 25 | 28 |
| 26 public InputMethodManagerWrapper(Context context) { | 29 public InputMethodManagerWrapper(Context context) { |
| 27 Log.d(TAG, "Constructor"); | 30 Log.d(TAG, "Constructor"); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 81 * @see android.view.inputmethod.InputMethodManager#updateCursorAnchorInfo(V iew, | 84 * @see android.view.inputmethod.InputMethodManager#updateCursorAnchorInfo(V iew, |
| 82 * CursorAnchorInfo) | 85 * CursorAnchorInfo) |
| 83 */ | 86 */ |
| 84 @TargetApi(Build.VERSION_CODES.LOLLIPOP) | 87 @TargetApi(Build.VERSION_CODES.LOLLIPOP) |
| 85 public void updateCursorAnchorInfo(View view, CursorAnchorInfo cursorAnchorI nfo) { | 88 public void updateCursorAnchorInfo(View view, CursorAnchorInfo cursorAnchorI nfo) { |
| 86 Log.d(TAG, "updateCursorAnchorInfo"); | 89 Log.d(TAG, "updateCursorAnchorInfo"); |
| 87 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { | 90 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { |
| 88 getInputMethodManager().updateCursorAnchorInfo(view, cursorAnchorInf o); | 91 getInputMethodManager().updateCursorAnchorInfo(view, cursorAnchorInf o); |
| 89 } | 92 } |
| 90 } | 93 } |
| 94 | |
| 95 /** | |
| 96 * Notify that a user took some action with the current input method. Withou t this call | |
| 97 * an input method app may wait longer when the user switches methods within the app. | |
| 98 */ | |
| 99 public void notifyUserAction() { | |
| 100 // On N and above, this is not needed. | |
| 101 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) return; | |
| 102 Log.d(TAG, "notifyUserAction"); | |
| 103 InputMethodManager manager = getInputMethodManager(); | |
| 104 try { | |
| 105 Method method = InputMethodManager.class.getMethod("notifyUserAction "); | |
| 106 method.invoke(manager); | |
| 107 } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumen tException | |
|
palmer
2016/02/25 23:49:55
These are all subclasses of RuntimeException, righ
Changwan Ryu
2016/02/26 02:41:19
Hmm... I think it is a matter of readability and d
| |
| 108 | InvocationTargetException e) { | |
| 109 Log.d(TAG, "notifyUserAction failed"); | |
| 110 return; | |
| 111 } | |
| 112 } | |
| 91 } | 113 } |
| OLD | NEW |