mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 02:05:42 +00:00
Bug 1464096 - 3. Remove SessionTextInput.isInputActive; r=esawin
The SessionTextInput.isInputActive API is prone to races. Its functionality can be replicated through the SessionTextInput.Delegate.restartInput callback, so it's okay to remove it. MozReview-Commit-ID: GFYjbH8cQv0 --HG-- extra : rebase_source : 89e17a3cb1c6779e8de08243f13bdb4c7b46a723
This commit is contained in:
parent
d1cc94799c
commit
0c01cc1913
@ -870,8 +870,7 @@ import android.view.inputmethod.EditorInfo;
|
||||
}
|
||||
|
||||
@Override // SessionTextInput.EditableClient
|
||||
public void sendKeyEvent(final @Nullable View view, final boolean inputActive, final int action,
|
||||
@NonNull KeyEvent event) {
|
||||
public void sendKeyEvent(final @Nullable View view, final int action, @NonNull KeyEvent event) {
|
||||
final Editable editable = getEditable();
|
||||
if (editable == null) {
|
||||
return;
|
||||
@ -885,7 +884,7 @@ import android.view.inputmethod.EditorInfo;
|
||||
final int keyCode = event.getKeyCode();
|
||||
final boolean handled;
|
||||
|
||||
if (!inputActive || shouldSkipKeyListener(keyCode, event)) {
|
||||
if (shouldSkipKeyListener(keyCode, event)) {
|
||||
handled = false;
|
||||
} else if (action == KeyEvent.ACTION_DOWN) {
|
||||
setSuppressKeyUp(true);
|
||||
@ -946,6 +945,10 @@ import android.view.inputmethod.EditorInfo;
|
||||
}
|
||||
|
||||
private boolean shouldSkipKeyListener(final int keyCode, final @NonNull KeyEvent event) {
|
||||
if (mIMEState == SessionTextInput.EditableListener.IME_STATE_DISABLED) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Preserve enter and tab keys for the browser
|
||||
if (keyCode == KeyEvent.KEYCODE_ENTER ||
|
||||
keyCode == KeyEvent.KEYCODE_TAB) {
|
||||
@ -1961,32 +1964,31 @@ import android.view.inputmethod.EditorInfo;
|
||||
throw new UnsupportedOperationException("method must be called through mProxy");
|
||||
}
|
||||
|
||||
public boolean onKeyPreIme(final @Nullable View view, final boolean inputActive,
|
||||
final int keyCode, final @NonNull KeyEvent event) {
|
||||
public boolean onKeyPreIme(final @Nullable View view, final int keyCode,
|
||||
final @NonNull KeyEvent event) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean onKeyDown(final @Nullable View view, final boolean inputActive,
|
||||
final int keyCode, final @NonNull KeyEvent event) {
|
||||
return processKey(view, inputActive, KeyEvent.ACTION_DOWN, keyCode, event);
|
||||
public boolean onKeyDown(final @Nullable View view, final int keyCode,
|
||||
final @NonNull KeyEvent event) {
|
||||
return processKey(view, KeyEvent.ACTION_DOWN, keyCode, event);
|
||||
}
|
||||
|
||||
public boolean onKeyUp(final @Nullable View view, final boolean inputActive,
|
||||
final int keyCode, final @NonNull KeyEvent event) {
|
||||
return processKey(view, inputActive, KeyEvent.ACTION_UP, keyCode, event);
|
||||
public boolean onKeyUp(final @Nullable View view, final int keyCode,
|
||||
final @NonNull KeyEvent event) {
|
||||
return processKey(view, KeyEvent.ACTION_UP, keyCode, event);
|
||||
}
|
||||
|
||||
public boolean onKeyMultiple(final @Nullable View view, final boolean inputActive,
|
||||
final int keyCode, int repeatCount,
|
||||
public boolean onKeyMultiple(final @Nullable View view, final int keyCode, int repeatCount,
|
||||
final @NonNull KeyEvent event) {
|
||||
if (keyCode == KeyEvent.KEYCODE_UNKNOWN) {
|
||||
// KEYCODE_UNKNOWN means the characters are in KeyEvent.getCharacters()
|
||||
final String str = event.getCharacters();
|
||||
for (int i = 0; i < str.length(); i++) {
|
||||
final KeyEvent charEvent = getCharKeyEvent(str.charAt(i));
|
||||
if (!processKey(view, inputActive, KeyEvent.ACTION_DOWN,
|
||||
if (!processKey(view, KeyEvent.ACTION_DOWN,
|
||||
KeyEvent.KEYCODE_UNKNOWN, charEvent) ||
|
||||
!processKey(view, inputActive, KeyEvent.ACTION_UP,
|
||||
!processKey(view, KeyEvent.ACTION_UP,
|
||||
KeyEvent.KEYCODE_UNKNOWN, charEvent)) {
|
||||
return false;
|
||||
}
|
||||
@ -1995,16 +1997,16 @@ import android.view.inputmethod.EditorInfo;
|
||||
}
|
||||
|
||||
while ((repeatCount--) > 0) {
|
||||
if (!processKey(view, inputActive, KeyEvent.ACTION_DOWN, keyCode, event) ||
|
||||
!processKey(view, inputActive, KeyEvent.ACTION_UP, keyCode, event)) {
|
||||
if (!processKey(view, KeyEvent.ACTION_DOWN, keyCode, event) ||
|
||||
!processKey(view, KeyEvent.ACTION_UP, keyCode, event)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean onKeyLongPress(final @Nullable View view, final boolean inputActive,
|
||||
final int keyCode, final @NonNull KeyEvent event) {
|
||||
public boolean onKeyLongPress(final @Nullable View view, final int keyCode,
|
||||
final @NonNull KeyEvent event) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -2027,8 +2029,8 @@ import android.view.inputmethod.EditorInfo;
|
||||
};
|
||||
}
|
||||
|
||||
private boolean processKey(final @Nullable View view, final boolean inputActive,
|
||||
final int action, final int keyCode, final @NonNull KeyEvent event) {
|
||||
private boolean processKey(final @Nullable View view, final int action, final int keyCode,
|
||||
final @NonNull KeyEvent event) {
|
||||
if (keyCode > KeyEvent.getMaxKeyCode() || !shouldProcessKey(keyCode, event)) {
|
||||
return false;
|
||||
}
|
||||
@ -2036,7 +2038,7 @@ import android.view.inputmethod.EditorInfo;
|
||||
postToInputConnection(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
sendKeyEvent(view, inputActive, action, event);
|
||||
sendKeyEvent(view, action, event);
|
||||
}
|
||||
});
|
||||
return true;
|
||||
|
@ -590,7 +590,7 @@ import java.lang.reflect.Proxy;
|
||||
@Override
|
||||
public boolean sendKeyEvent(@NonNull KeyEvent event) {
|
||||
event = translateKey(event.getKeyCode(), event);
|
||||
mEditableClient.sendKeyEvent(getView(), isInputActive(), event.getAction(), event);
|
||||
mEditableClient.sendKeyEvent(getView(), event.getAction(), event);
|
||||
return false; // seems to always return false
|
||||
}
|
||||
|
||||
@ -637,12 +637,6 @@ import java.lang.reflect.Proxy;
|
||||
}
|
||||
}
|
||||
|
||||
@Override // SessionTextInput.InputConnectionClient
|
||||
public synchronized boolean isInputActive() {
|
||||
// Make sure this picks up PASSWORD state as well.
|
||||
return mIMEState != IME_STATE_DISABLED;
|
||||
}
|
||||
|
||||
@Override // SessionTextInput.EditableListener
|
||||
public void notifyIME(final int type) {
|
||||
switch (type) {
|
||||
|
@ -145,7 +145,6 @@ public final class SessionTextInput {
|
||||
View getView();
|
||||
Handler getHandler(Handler defHandler);
|
||||
InputConnection onCreateInputConnection(EditorInfo attrs);
|
||||
boolean isInputActive();
|
||||
}
|
||||
|
||||
// Interface to access GeckoEditable from GeckoInputConnection.
|
||||
@ -160,8 +159,7 @@ public final class SessionTextInput {
|
||||
// ENDT_MONITOR stops the monitor for composing character rects.
|
||||
@WrapForJNI final int END_MONITOR = 3;
|
||||
|
||||
void sendKeyEvent(@Nullable View view, boolean inputActive, int action,
|
||||
@NonNull KeyEvent event);
|
||||
void sendKeyEvent(@Nullable View view, int action, @NonNull KeyEvent event);
|
||||
Editable getEditable();
|
||||
void setBatchMode(boolean isBatchMode);
|
||||
Handler setInputConnectionHandler(@NonNull Handler handler);
|
||||
@ -427,7 +425,7 @@ public final class SessionTextInput {
|
||||
*/
|
||||
public boolean onKeyPreIme(final int keyCode, final @NonNull KeyEvent event) {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
return mEditable.onKeyPreIme(getView(), isInputActive(), keyCode, event);
|
||||
return mEditable.onKeyPreIme(getView(), keyCode, event);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -439,7 +437,7 @@ public final class SessionTextInput {
|
||||
*/
|
||||
public boolean onKeyDown(final int keyCode, final @NonNull KeyEvent event) {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
return mEditable.onKeyDown(getView(), isInputActive(), keyCode, event);
|
||||
return mEditable.onKeyDown(getView(), keyCode, event);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -451,7 +449,7 @@ public final class SessionTextInput {
|
||||
*/
|
||||
public boolean onKeyUp(final int keyCode, final @NonNull KeyEvent event) {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
return mEditable.onKeyUp(getView(), isInputActive(), keyCode, event);
|
||||
return mEditable.onKeyUp(getView(), keyCode, event);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -463,7 +461,7 @@ public final class SessionTextInput {
|
||||
*/
|
||||
public boolean onKeyLongPress(final int keyCode, final @NonNull KeyEvent event) {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
return mEditable.onKeyLongPress(getView(), isInputActive(), keyCode, event);
|
||||
return mEditable.onKeyLongPress(getView(), keyCode, event);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -477,18 +475,7 @@ public final class SessionTextInput {
|
||||
public boolean onKeyMultiple(final int keyCode, final int repeatCount,
|
||||
final @NonNull KeyEvent event) {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
return mEditable.onKeyMultiple(getView(), isInputActive(), keyCode, repeatCount, event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return whether there is an active input connection, usually as a result of a
|
||||
* focused input field.
|
||||
*
|
||||
* @return True if input is active.
|
||||
*/
|
||||
public boolean isInputActive() {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
return mInputConnection != null && mInputConnection.isInputActive();
|
||||
return mEditable.onKeyMultiple(getView(), keyCode, repeatCount, event);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user