### Preflight Checklist

- [X] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/main/CONTRIBUTING.md) for this project.
- [X] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md) that this project adheres to.
- [X] I have searched the [issue tracker](https://www.github.com/electron/electron/issues) for a bug report that matches the one I want to file, without success.

### Electron Version

18.2.3 & 18.2.0

### What operating system are you using?

macOS

### Operating System Version

macOS Big Sur Version 11.6.4

### What arch are you using?

x64

### Last Known Working Electron version

_No response_

### Expected Behavior

In the normal mode, `browserWindow.getNormalBounds()` and `browserWindow.getBounds()` return the same bounds.
e.g. 
```
// In the normal mode...
getBounds { x: 389, y: 1429, width: 406, height: 1100 }
getNormalBounds { x: 389, y: 1429, width: 406, height: 1100 }
```

In the minimized mode, I expect that `browserWindow.getNormalBounds()` returns the same bounds on macOS.
```
// In the normal mode...
getNormalBounds { x: 389, y: 1429, width: 406, height: 1100 }
```

### Actual Behavior

In the minimized mode, `browserWindow.getNormalBounds()` returns different bounds:
```
// In the minimized mode...
getNormalBounds { x: 880, y: 420, width: 800, height: 600 }
// ^^^^ Different with { x: 389, y: 1429, width: 406, height: 1100 }
```

### Testcase Gist URL

https://gist.github.com/weilonge/b73c7aee8e211ec60910025273651b4d

NOTE: Using `setTimeout(..., 1000)` when handling `'show'` and `'minimize'` events is for waiting for the bounds settle down.

### Additional Information

**How to use the gist to reproduce the issue?**

1. Adjust the size and position for the newly opened window. e.g. x: 389, y: 1429, width: 406, height: 1100

2. Minimize the window. There should be `======= Minimize Event ========` logs for showing `getBounds` and `getNormalBounds` values.
```
======= Minimize Event ========
getBounds { x: 389, y: 1429, width: 406, height: 1100 }
getNormalBounds { x: 880, y: 420, width: 800, height: 600 }
```
The problematic part in the `Minimize Event` log is at `getNormalBounds { x: 880, y: 420, width: 800, height: 600 }` line.
My understanding is that the expected value is `{ x: 389, y: 1429, width: 406, height: 1100 }`.
(Probably `getBounds` is incorrect too?)

3. Restore the window. There should be `======= Show Event ========` logs for showing `getBounds` and `getNormalBounds` values.
```
======= Show Event ========
getBounds { x: 389, y: 1429, width: 406, height: 1100 }
getNormalBounds { x: 389, y: 1429, width: 406, height: 1100 }
```
The `Show Event` log looks good to me.
shell/browser/native_window_mac.h
void Invalidate() override;
  void SetTitle(const std::string& title) override;
  std::string GetTitle() override;
  void FlashFrame(bool flash) override;
  void SetSkipTaskbar(bool skip) override;
  void SetExcludedFromShownWindowsMenu(bool excluded) override;
  bool IsExcludedFromShownWindowsMenu() override;
  void SetSimpleFullScreen(bool simple_fullscreen) override;
  bool IsSimpleFullScreen() override;
  void SetKiosk(bool kiosk) override;
  bool IsKiosk() override;
  void SetBackgroundColor(SkColor color) override;
  SkColor GetBackgroundColor() override;
  void SetHasShadow(bool has_shadow) override;
  bool HasShadow() override;
  void SetOpacity(const double opacity) override;
  double GetOpacity() override;
  void SetRepresentedFilename(const std::string& filename) override;
  std::string GetRepresentedFilename() override;
  void SetDocumentEdited(bool edited) override;
  bool IsDocumentEdited() override;
  void SetIgnoreMouseEvents(bool ignore, bool forward) override;
  void SetContentProtection(bool enable) override;
  void SetFocusable(bool focusable) override;
  bool IsFocusable() override;
  void AddBrowserView(NativeBrowserView* browser_view) override;
  void RemoveBrowserView(NativeBrowserView* browser_view) override;
  void SetTopBrowserView(NativeBrowserView* browser_view) override;
  void SetParentWindow(NativeWindow* parent) override;
  content::DesktopMediaID GetDesktopMediaID() const override;