Skip to content

Commit

Permalink
[DevTools] Replace deprecated new-window with `webContents.setWindo…
Browse files Browse the repository at this point in the history
…wOpenHandler()` (facebook#26559)

## Summary

The electron package was recently upgraded from ^11.1.0 to ^23.1.2
(facebook#26337). However, the WebContents `new-window` event – that is used in
the react-devtools project – was deprecated in
[v12.0.0](https://releases.electronjs.org/release/v12.0.0) and removed
in [v22.2.0](https://releases.electronjs.org/release/v22.2.0). The event
was replaced by `webContents.setWindowOpenHandler()`. This PR replaces
the `new-window` event with `webContents.setWindowOpenHandler()`.

## How did you test this change?

I created a simple electron application with similar functionality:

```
const { app, BrowserWindow, shell } = require('electron')

const createWindow = () => {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600
  })

  mainWindow.webContents.setWindowOpenHandler(({ url }) => {
    shell.openExternal(url)
    return { action: 'deny' }
  })

  mainWindow.loadFile('index.html')
}

app.whenReady().then(() => {
  createWindow()
})
```

---------

Co-authored-by: root <[email protected]>
  • Loading branch information
2 people authored and AndyPengc12 committed Apr 15, 2024
1 parent 354b7b1 commit f4466e6
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions packages/react-devtools/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/

const {app, BrowserWindow} = require('electron'); // Module to create native browser window.
const {app, BrowserWindow, shell} = require('electron'); // Module to create native browser window.
const {join} = require('path');
const os = require('os');

Expand Down Expand Up @@ -40,9 +40,9 @@ app.on('ready', function () {
}

// https://stackoverflow.com/questions/32402327/
mainWindow.webContents.on('new-window', function (event, url) {
event.preventDefault();
require('electron').shell.openExternal(url);
mainWindow.webContents.setWindowOpenHandler(({url}) => {
shell.openExternal(url);
return {action: 'deny'};
});

// and load the index.html of the app.
Expand Down

0 comments on commit f4466e6

Please sign in to comment.