mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Implement getExtractedText in InputConnectionAdaptor (flutter/engine#17426)
This commit is contained in:
parent
474e90ba76
commit
eff62e12bd
@ -21,6 +21,8 @@ import android.view.View;
|
||||
import android.view.inputmethod.BaseInputConnection;
|
||||
import android.view.inputmethod.CursorAnchorInfo;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.ExtractedText;
|
||||
import android.view.inputmethod.ExtractedTextRequest;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.view.inputmethod.InputMethodSubtype;
|
||||
import io.flutter.Log;
|
||||
@ -161,6 +163,16 @@ class InputConnectionAdaptor extends BaseInputConnection {
|
||||
return result;
|
||||
}
|
||||
|
||||
// TODO(garyq): Implement a more feature complete version of getExtractedText
|
||||
@Override
|
||||
public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
|
||||
ExtractedText extractedText = new ExtractedText();
|
||||
extractedText.selectionStart = Selection.getSelectionStart(mEditable);
|
||||
extractedText.selectionEnd = Selection.getSelectionEnd(mEditable);
|
||||
extractedText.text = mEditable.toString();
|
||||
return extractedText;
|
||||
}
|
||||
|
||||
// Detect if the keyboard is a Samsung keyboard, where we apply Samsung-specific hacks to
|
||||
// fix critical bugs that make the keyboard otherwise unusable. See finishComposingText() for
|
||||
// more details.
|
||||
|
||||
@ -19,6 +19,7 @@ import android.text.SpannableStringBuilder;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.EditorInfo;
|
||||
import android.view.inputmethod.ExtractedText;
|
||||
import io.flutter.embedding.engine.FlutterJNI;
|
||||
import io.flutter.embedding.engine.dart.DartExecutor;
|
||||
import io.flutter.embedding.engine.systemchannels.TextInputChannel;
|
||||
@ -256,6 +257,19 @@ public class InputConnectionAdaptorTest {
|
||||
assertTrue(Selection.getSelectionStart(editable) > selStart);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMethod_getExtractedText() {
|
||||
int selStart = 5;
|
||||
Editable editable = sampleEditable(selStart, selStart);
|
||||
InputConnectionAdaptor adaptor = sampleInputConnectionAdaptor(editable);
|
||||
|
||||
ExtractedText extractedText = adaptor.getExtractedText(null, 0);
|
||||
|
||||
assertEquals(extractedText.text, SAMPLE_TEXT);
|
||||
assertEquals(extractedText.selectionStart, selStart);
|
||||
assertEquals(extractedText.selectionEnd, selStart);
|
||||
}
|
||||
|
||||
private static final String SAMPLE_TEXT =
|
||||
"Lorem ipsum dolor sit amet," + "\nconsectetur adipiscing elit.";
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user