@@ -3137,6 +3137,67 @@ describe('DOMPluginEventSystem', () => {
3137
3137
3138
3138
expect ( onClick ) . toHaveBeenCalledTimes ( 1 ) ;
3139
3139
} ) ;
3140
+
3141
+ // @gate experimental
3142
+ it ( 'should be able to register non-passive handlers for events affected by the intervention' , ( ) => {
3143
+ const rootContainer = document . createElement ( 'div' ) ;
3144
+ container . appendChild ( rootContainer ) ;
3145
+
3146
+ const defaultPreventedEvents = [ ] ;
3147
+ const handler = e => {
3148
+ if ( e . defaultPrevented ) defaultPreventedEvents . push ( e . type ) ;
3149
+ } ;
3150
+
3151
+ container . addEventListener ( 'touchstart' , handler ) ;
3152
+ container . addEventListener ( 'touchmove' , handler ) ;
3153
+ container . addEventListener ( 'wheel' , handler ) ;
3154
+
3155
+ const ref = React . createRef ( ) ;
3156
+ const setTouchStart = ReactDOM . unstable_createEventHandle (
3157
+ 'touchstart' ,
3158
+ { passive : false } ,
3159
+ ) ;
3160
+ const setTouchMove = ReactDOM . unstable_createEventHandle (
3161
+ 'touchmove' ,
3162
+ { passive : false } ,
3163
+ ) ;
3164
+ const setWheel = ReactDOM . unstable_createEventHandle ( 'wheel' , {
3165
+ passive : false ,
3166
+ } ) ;
3167
+
3168
+ function Component ( ) {
3169
+ React . useEffect ( ( ) => {
3170
+ const clearTouchStart = setTouchStart ( ref . current , e =>
3171
+ e . preventDefault ( ) ,
3172
+ ) ;
3173
+ const clearTouchMove = setTouchMove ( ref . current , e =>
3174
+ e . preventDefault ( ) ,
3175
+ ) ;
3176
+ const clearWheel = setWheel ( ref . current , e =>
3177
+ e . preventDefault ( ) ,
3178
+ ) ;
3179
+ return ( ) => {
3180
+ clearTouchStart ( ) ;
3181
+ clearTouchMove ( ) ;
3182
+ clearWheel ( ) ;
3183
+ } ;
3184
+ } ) ;
3185
+ return < div ref = { ref } > test</ div > ;
3186
+ }
3187
+
3188
+ ReactDOM . render ( < Component /> , rootContainer ) ;
3189
+ Scheduler . unstable_flushAll ( ) ;
3190
+
3191
+ dispatchEvent ( ref . current , 'touchstart' ) ;
3192
+ dispatchEvent ( ref . current , 'touchmove' ) ;
3193
+ dispatchEvent ( ref . current , 'wheel' ) ;
3194
+
3195
+ expect ( defaultPreventedEvents ) . toEqual ( [
3196
+ 'touchstart' ,
3197
+ 'touchmove' ,
3198
+ 'wheel' ,
3199
+ ] ) ;
3200
+ } ) ;
3140
3201
} ) ;
3141
3202
} ) ;
3142
3203
} ,
0 commit comments