### Preflight Checklist

- [X] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
- [X] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/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 feature request that matches the one I want to file, without success.

### Electron Version

13.1.2

### What operating system are you using?

macOS

### Operating System Version

macOS Big Sur 11.4

### What arch are you using?

x64

### Last Known Working Electron version

unknown

### Expected Behavior

With `nativeWindowOpen` option enabled:

When opening a child window with an empty url, e.g. `newWin = window.open('', '_blank')`, this should open `about:blank`. Setting the title on the document for this child window should then update the title in the titlebar for the window, e.g. `newWin.document.title = 'New Title'` should show `'New Title'` in the titlebar

### Actual Behavior

When opening a child window with an empty url with `nativeWindowOpen` and then using the window handle to set the child window's document title, the title goes blank and on Mac is removed from the window list on the dock icon. 

Steps to reproduce below.

### Testcase Gist URL

https://gist.github.com/aluo-lmi/afd7cd7887b2d00409cb10d4d7e0103d

### Additional Information

Steps to reproduce with gist above:
1. Run sample -> it will open two child windows: `Child 1` is opened with `'about:blank'` explicitly provided as url and `Child 2` with an empty string. Both open to `'about:blank'`
2. Press the `Set child 1 title` button -> observe that updating the document title updates the title in the window's titlebar
3. Press the `Set child 2 title` button -> the window's titlebar becomes blank and right clicking the dock icon no longer shows the window in the list
shell/browser/api/electron_api_web_contents.cc
bool initially_shown = type_ != Type::kBrowserView;
  options.Get(options::kShow, &initially_shown);
  
  std::string partition;
  gin::Handle<api::Session> session;
  if (options.Get("session", &session) && !session.IsEmpty()) {
  } else if (options.Get("partition", &partition)) {
    session = Session::FromPartition(isolate, partition);
  } else {
    
    session = Session::FromPartition(isolate, "");
  }
  session_.Reset(isolate, session.ToV8());
  std::unique_ptr<content::WebContents> ontents;
  if (IsGuest()) {
    scoped_refptr<content::SiteInstance> site_instance =
        content::SiteInstance::CreateForURL(session->browser_context(),
                                            GURL("chrome-guest:fake-host"));
    content::WebContents::CreateParams params(session->browser_context(),
                                              site_instance);
    guest_delegate_ =
        std::make_unique<WebViewGuestDelegate>(embedder_->ontents(), this);
    params.guest_delegate = guest_delegate_.get();
#if BUILDFLAG(ENABLE_OSR)
    if (embedder_ && embedder_->IsOffScreen()) {
      auto* view = new OffScreenWebContentsView(
          false,