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

16.0.0

### What operating system are you using?

Windows

### Operating System Version

WIN10 20H2

### What arch are you using?

x64

### Last Known Working Electron version

_No response_

### Expected Behavior

 win.webContents.savePage('d:/aaaaaa.html', 'HTMLComplete').then(() => {
      console.log('Page was saved successfully.')
    }).catch(err => {
      console.log(err)
    })

it will generate a html page file at d: 

### Actual Behavior

savePage has three formats that can be used

if use HTMLComplete
 only produced a aaaaaa_files empty folder

if use HTMLonly 
No files are generated nor error callbacks are generated

MHTML option works fine

### Testcase Gist URL

_No response_

### Additional Information

_No response_
shell/browser/api/electron_api_web_contents.cc
}
#if !defined(OS_MAC)
   If the view's renderer is suspended this may fail on Windows/Linux -
   bail if so. See CopyFromSurface in
   content/public/browser/render_widget_host_view.h.
  auto* rfh = ontents()->GetMainFrame();
  if (rfh &&
      rfh->GetVisibilityState() == blink::mojom::PageVisibilityState::kHidden) {
    promise.Resolve(gfx::Image());
    return handle;
  }
#endif   defined(OS_MAC)
   Capture full page if user doesn't specify a |rect|.
  const gfx::Size view_size =
      rect.IsEmpty() ? view->GetViewBounds().size() : rect.size();
   By default, the requested bitmap size is the view size in screen
   coordinates.  However, if there's more pixel detail available on the
   current system, increase the requested bitmap size to capture it all.
  gfx::Size bitmap_size = view_size;
  const gfx::NativeView native_view = view->GetNativeView();
  const float scale = display::Screen::GetScreen()
                          ->GetDisplayNearestView(native_view)
                          .device_scale_factor();
  if (scale > 1.0f)
    bitmap_size = gfx::ScaleToCeiledSize(view_size, scale);
  view->CopyFromSurface(gfx::Rect(rect.origin(), view_size), bitmap_size,
                        base::BindOnce(&OnCapturePageDone, std::move(promise)));
  return handle;
}
void WebContents::IncrementCapturerCount(gin::Arguments* args) {