### 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

17.0.0-alpha.6

### What operating system are you using?

Windows

### Operating System Version

Windows 10

### What arch are you using?

x64

### Last Known Working Electron version

_No response_

### Expected Behavior

`BrowserWindow.unmaximize` should not restore a minimized window

### Actual Behavior

`BrowserWindow.unmaximize` does restore a minimized window

### Testcase Gist URL

https://gist.github.com/eb364ab237b856b11c9570fa2b257cfb

### Additional Information

The provided gist is a test so it should be runnable by `bugbot`. I've confirmed the behavior on Windows, macOS seems unaffected, I haven't tested Linux.

Root cause might be [that `NativeWindowViews::Unmaximize` calls `widget()->Restore()`](https://github.com/electron/electron/blob/bd10b19b0cdc46cdbadb570af89305e64541b679/shell/browser/native_window_views.cc#L591), so it does the restore behavior, regardless of if the window is maximized or minimized. It should probably do an `IsMaximized()` check before calling `Restore()` to prevent this issue. Could also use some more test coverage to ensure `unmaximize` is a no-op when the window isn't maximized.
shell/browser/native_window_views.cc
v8::Isolate* isolate = JavascriptEnvironment::GetIsolate();
    gin_helper::Dictionary titlebar_overlay_obj =
        gin::Dictionary::CreateEmpty(isolate);
    options.Get(options::ktitleBarOverlay, &titlebar_overlay_obj);
    std::string overlay_color_string;
    if (titlebar_overlay_obj.Get(options::kOverlayButtonColor,
                                 &overlay_color_string)) {
      bool success = content::ParseCssColorString(overlay_color_string,
                                                  &overlay_button_color_);
      DCHECK(success);
    }
    std::string overlay_symbol_color_string;
    if (titlebar_overlay_obj.Get(options::kOverlaySymbolColor,
                                 &overlay_symbol_color_string)) {
      bool success = content::ParseCssColorString(overlay_symbol_color_string,
                                                  &overlay_symbol_color_);
      DCHECK(success);
    }
  }
  if (title_bar_style_ != TitleBarStyle::kNormal)
    set_has_frame(false);
#endif
  if (enable_larger_than_screen())
    
    
    
    
    SetContentSizeConstraints(extensions::SizeConstraints(
        gfx::Size(), gfx::Size(INT_MAX / 10, INT_MAX / 10)));
  int width = 800, height = 600;