@@ -37,6 +37,7 @@ const ON_MOUSE_ENTER_KEY = 'onMouseEnter';
3737let GRANDPARENT ;
3838let PARENT ;
3939let CHILD ;
40+ let BUTTON ;
4041
4142let getListener ;
4243let putListener ;
@@ -71,6 +72,7 @@ describe('ReactBrowserEventEmitter', () => {
7172 let GRANDPARENT_PROPS = { } ;
7273 let PARENT_PROPS = { } ;
7374 let CHILD_PROPS = { } ;
75+ let BUTTON_PROPS = { } ;
7476
7577 function Child ( props ) {
7678 return < div ref = { c => ( CHILD = c ) } { ...props } /> ;
@@ -87,6 +89,7 @@ describe('ReactBrowserEventEmitter', () => {
8789 < div ref = { c => ( GRANDPARENT = c ) } { ...GRANDPARENT_PROPS } >
8890 < div ref = { c => ( PARENT = c ) } { ...PARENT_PROPS } >
8991 < ChildWrapper { ...CHILD_PROPS } />
92+ < button disabled = { true } ref = { c => ( BUTTON = c ) } { ...BUTTON_PROPS } />
9093 </ div >
9194 </ div > ,
9295 container ,
@@ -110,6 +113,9 @@ describe('ReactBrowserEventEmitter', () => {
110113 case GRANDPARENT :
111114 GRANDPARENT_PROPS [ eventName ] = listener ;
112115 break ;
116+ case BUTTON :
117+ BUTTON_PROPS [ eventName ] = listener ;
118+ break ;
113119 }
114120 // Rerender with new event listeners
115121 renderTree ( ) ;
@@ -125,6 +131,9 @@ describe('ReactBrowserEventEmitter', () => {
125131 case GRANDPARENT :
126132 GRANDPARENT_PROPS = { } ;
127133 break ;
134+ case BUTTON :
135+ BUTTON_PROPS = { } ;
136+ break ;
128137 }
129138 renderTree ( ) ;
130139 } ;
@@ -149,6 +158,12 @@ describe('ReactBrowserEventEmitter', () => {
149158 expect ( listener ) . toEqual ( LISTENER ) ;
150159 } ) ;
151160
161+ it ( 'should not retrieve listeners on a disabled interactive element' , ( ) => {
162+ putListener ( BUTTON , ON_MOUSE_ENTER_KEY , recordID . bind ( null , BUTTON ) ) ;
163+ const listener = getListener ( BUTTON , ON_MOUSE_ENTER_KEY ) ;
164+ expect ( listener ) . toBe ( null ) ;
165+ } ) ;
166+
152167 it ( 'should clear all handlers when asked to' , ( ) => {
153168 registerSimpleTestHandler ( ) ;
154169 deleteAllListeners ( CHILD ) ;
0 commit comments