### 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 for an issue that matches the one I want to file, without success.

### Issue Details

* **Electron Version:**
  * 10.1.1
* **Operating System:**
  * macOS 10.15.4

We recently started launching as hidden on macOS (that is, `show: false` or `browserWindow.hide()` while loading the page, followed by `browserWindow.show()` when the dock icon is clicked). This results in some busted focus behavior on the first activation of the window. The second activation restores it.

### Expected Behavior
The guest page receives a `focus` event on the first activation of the app, when created with `show: false`.

### Actual Behavior
The guest page doesn't receive the first `focus` event. Subsequent activations do trigger a `focus` event.

### To Reproduce
[Electron Fiddle](https://gist.github.com/CharlieHess/c507468cd40630d04f58c6514100b997)

shell/browser/api/electron_api_web_contents.cc
gfx::Rect rect;
  gin_helper::Promise<gfx::Image> promise(args->isolate());
  v8::Local<v8::Promise> handle = promise.GetHandle();
   get rect arguments if they exist
  args->GetNext(&rect);
  auto* const view = ontents()->GetRenderWidgetHostView();
  if (!view) {
    promise.Resolve(gfx::Image());
    return handle;
  }
   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) {