diff --git a/front_end/panels/react_devtools/ReactDevToolsModel.ts b/front_end/panels/react_devtools/ReactDevToolsModel.ts index 34fa3a062e7..6638042aa59 100644 --- a/front_end/panels/react_devtools/ReactDevToolsModel.ts +++ b/front_end/panels/react_devtools/ReactDevToolsModel.ts @@ -163,10 +163,21 @@ export class ReactDevToolsModel extends SDK.SDKModel.SDKModel { #finishInitializationAndNotify(): void { this.#bridge = ReactDevTools.createBridge(this.#wall); - this.#store = ReactDevTools.createStore(this.#bridge); + this.#store = ReactDevTools.createStore(this.#bridge, { + supportsReloadAndProfile: true, + }); + this.#attachReloadToProfileListener(); this.dispatchEventToListeners(Events.InitializationCompleted); } + #attachReloadToProfileListener(): void { + this.#wall.listen((message: ReactDevToolsTypes.Message): void => { + if (message.event === 'reloadAppForProfiling') { + SDK.ResourceTreeModel.ResourceTreeModel.reloadAllPages(false); + } + }); + } + #handleBackendExecutionContextUnavailable({data: errorMessage}: ReactDevToolsBindingsBackendExecutionContextUnavailableEvent): void { this.dispatchEventToListeners(Events.InitializationFailed, errorMessage); } diff --git a/front_end/third_party/react-devtools/package/frontend.d.ts b/front_end/third_party/react-devtools/package/frontend.d.ts index 8a62ad54e50..74a88c36a85 100644 --- a/front_end/third_party/react-devtools/package/frontend.d.ts +++ b/front_end/third_party/react-devtools/package/frontend.d.ts @@ -19,9 +19,12 @@ export type Bridge = { }; export type Store = Object; export type BrowserTheme = 'dark' | 'light'; +export type Config = { + supportsReloadAndProfile?: boolean, +}; export function createBridge(wall: Wall): Bridge; -export function createStore(bridge: Bridge): Store; +export function createStore(bridge: Bridge, config?: Config): Store; export type Source = { sourceURL: string,