Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
knopp authored and Renzo-Olivares committed Aug 21, 2023
1 parent 3241e1d commit ea53bab
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 31 deletions.
15 changes: 15 additions & 0 deletions lib/web_ui/lib/src/engine/dom.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2355,6 +2355,13 @@ class DomMouseEvent extends DomUIEvent {
external factory DomMouseEvent.arg2(JSString type, JSAny initDict);
}

@JS('InputEvent')
@staticInterop
class DomInputEvent extends DomUIEvent {
external factory DomInputEvent.arg1(JSString type);
external factory DomInputEvent.arg2(JSString type, JSAny initDict);
}

extension DomMouseEventExtension on DomMouseEvent {
@JS('clientX')
external JSNumber get _clientX;
Expand Down Expand Up @@ -2408,6 +2415,14 @@ DomMouseEvent createDomMouseEvent(String type, [Map<dynamic, dynamic>? init]) {
}
}

DomInputEvent createDomInputEvent(String type, [Map<dynamic, dynamic>? init]) {
if (init == null) {
return DomInputEvent.arg1(type.toJS);
} else {
return DomInputEvent.arg2(type.toJS, init.toJSAnyDeep);
}
}

@JS('PointerEvent')
@staticInterop
class DomPointerEvent extends DomMouseEvent {
Expand Down
41 changes: 10 additions & 31 deletions lib/web_ui/test/engine/text_editing_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,6 @@ import 'package:ui/src/engine/vector_math.dart';
import '../common/spy.dart';
import '../common/test_initialization.dart';

@JS('InputEvent')
@staticInterop
class MockDomInputEvent extends DomUIEvent {
}

extension MockDomInputEventExtension on MockDomInputEvent {
@JS('inputType')
external JSString get _inputType;
String get inputType => _inputType;
}

/// The `keyCode` of the "Enter" key.
const int _kReturnKeyCode = 13;

Expand Down Expand Up @@ -1788,20 +1777,15 @@ Future<void> testMain() async {
final DomHTMLInputElement input = textEditing!.strategy.domElement! as
DomHTMLInputElement;

final Object jsInputEvent = js_util.getProperty<Object>(domWindow, 'InputEvent');
final List<dynamic> eventArgs = <dynamic>[
final DomInputEvent testEvent = createDomInputEvent(
'beforeinput',
js_util.jsify(<String, dynamic>{
'inputType': 'delete',
}),
];
final MockDomInputEvent testEvent = js_util.callConstructor<MockDomInputEvent>(
jsInputEvent,
eventArgs,
<Object?, Object?>{
'inputType': 'deleteContentBackward',
},
);
input.dispatchEvent(testEvent);

EditingState editingState = EditingState(
final EditingState editingState = EditingState(
text: 'Helld',
baseOffset: 3,
extentOffset: 3,
Expand Down Expand Up @@ -1856,20 +1840,15 @@ Future<void> testMain() async {
final DomHTMLInputElement input = textEditing!.strategy.domElement! as
DomHTMLInputElement;

final Object jsInputEvent = js_util.getProperty<Object>(domWindow, 'InputEvent');
final List<dynamic> eventArgs = <dynamic>[
final DomInputEvent testEvent = createDomInputEvent(
'beforeinput',
js_util.jsify(<String, dynamic>{
<Object?, Object?>{
'inputType': 'insertLineBreak',
}),
];
final MockDomInputEvent testEvent = js_util.callConstructor<MockDomInputEvent>(
jsInputEvent,
eventArgs,
},
);
input.dispatchEvent(testEvent);

EditingState editingState = EditingState(
final EditingState editingState = EditingState(
text: 'Hel\nld',
baseOffset: 3,
extentOffset: 3,
Expand All @@ -1889,7 +1868,7 @@ Future<void> testMain() async {
<String, dynamic>{
'oldText': 'Hello world',
'deltaText': '\n',
'deltaStart': 3,
'deltaStart': 9,
'deltaEnd': 9,
'selectionBase': 3,
'selectionExtent': 3,
Expand Down

0 comments on commit ea53bab

Please sign in to comment.