@@ -77,7 +77,34 @@ export class ReactDevToolsModel extends SDK.SDKModel.SDKModel<EventTypes> {
77
77
) ;
78
78
79
79
// Notify backend if Chrome DevTools was closed, marking frontend as disconnected
80
- window . addEventListener ( 'beforeunload' , ( ) => this . #bridge?. shutdown ( ) ) ;
80
+ window . addEventListener ( 'beforeunload' , this . #handleBeforeUnload) ;
81
+ }
82
+
83
+ override dispose ( ) : void {
84
+ this . #bridge?. removeListener ( 'reloadAppForProfiling' , this . #handleReloadAppForProfiling) ;
85
+ this . #bridge?. shutdown ( ) ;
86
+
87
+ this . #bindingsModel. removeEventListener (
88
+ ReactNativeModels . ReactDevToolsBindingsModel . Events . BackendExecutionContextCreated ,
89
+ this . #handleBackendExecutionContextCreated,
90
+ this ,
91
+ ) ;
92
+ this . #bindingsModel. removeEventListener (
93
+ ReactNativeModels . ReactDevToolsBindingsModel . Events . BackendExecutionContextUnavailable ,
94
+ this . #handleBackendExecutionContextUnavailable,
95
+ this ,
96
+ ) ;
97
+ this . #bindingsModel. removeEventListener (
98
+ ReactNativeModels . ReactDevToolsBindingsModel . Events . BackendExecutionContextDestroyed ,
99
+ this . #handleBackendExecutionContextDestroyed,
100
+ this ,
101
+ ) ;
102
+
103
+ window . removeEventListener ( 'beforeunload' , this . #handleBeforeUnload) ;
104
+
105
+ this . #bridge = null ;
106
+ this . #store = null ;
107
+ this . #listeners. clear ( ) ;
81
108
}
82
109
83
110
override dispose ( ) : void {
@@ -151,6 +178,10 @@ export class ReactDevToolsModel extends SDK.SDKModel.SDKModel<EventTypes> {
151
178
return rdtBindingsModel . sendMessage ( ReactDevToolsModel . FUSEBOX_BINDING_NAMESPACE , message ) ;
152
179
}
153
180
181
+ #handleBeforeUnload = ( ) : void => {
182
+ this . #bridge?. shutdown ( ) ;
183
+ } ;
184
+
154
185
#handleBackendExecutionContextCreated( ) : void {
155
186
const rdtBindingsModel = this . #bindingsModel;
156
187
if ( ! rdtBindingsModel ) {
0 commit comments