The native window.open system has been better for quite a while now, and it resolves a lot of issues. We should make it the default and deprecate the old `BrowserWindowProxy`-based method.
shell/browser/web_contents_preferences.cc
auto* manager = WebViewManager::GetWebViewManager(web_contents_);
    if (manager) {
      auto* embedder = manager->GetEmbedder(guest_instance_id);
      if (embedder) {
        auto* relay = NativeWindowRelay::FromWebContents(embedder);
        if (relay) {
          auto* window = relay->GetNativeWindow();
          if (window) {
            const bool visible = window->IsVisible() && !window->IsMinimized();
            if (!visible) {
              prefs->hidden_page = true;
            }
          }
        }
      }
    }
  }
  prefs->offscreen = IsEnabled(options::kOffscreen);
  
  GetPreloadPath(&prefs->preload);
  
  prefs->native_window_open = IsEnabled(options::kNativeWindowOpen);
  
  prefs->node_integration = IsEnabled(options::kNodeIntegration);
  
  prefs->node_integration_in_worker =
      IsEnabled(options::kNodeIntegrationInWorker);
  prefs->node_integration_in_sub_frames =