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
&prefs->autoplay_policy)) {
    prefs->autoplay_policy =
        blink::mojom::AutoplayPolicy::kNoUserGestureRequired;
  }
  
  bool is_webgl_enabled = IsEnabled(options::kWebGL, true );
  prefs->webgl1_enabled = is_webgl_enabled;
  prefs->webgl2_enabled = is_webgl_enabled;
  
  bool is_web_security_enabled =
      IsEnabled(options::kWebSecurity, true );
  prefs->web_security_enabled = is_web_security_enabled;
  prefs->allow_running_insecure_content =
      IsEnabled(options::kAllowRunningInsecureContent,
                !is_web_security_enabled );
  auto* fonts_dict = preference_.FindKeyOfType("defaultFontFamily",
                                               base::Value::Type::DICTIONARY);
  if (fonts_dict) {
    std::u16string font;
    if (GetAsString(fonts_dict, "standard", &font))
      prefs->standard_font_family_map[blink::web_pref::kCommonScript] = font;
    if (GetAsString(fonts_dict, "serif", &font))
      prefs->serif_font_family_map[blink::web_pref::kCommonScript] = font;
    if (GetAsString(fonts_dict, "sansSerif", &font))
      prefs->sans_serif_font_family_map[blink::web_pref::kCommonScript] = font;
    if (GetAsString(fonts_dict, "monospace", &font))
      prefs->fixed_font_family_map[blink::web_pref::kCommonScript] = font;
    if (GetAsString(fonts_dict, "cursive", &font))
      prefs->cursive_font_family_map[blink::web_pref::kCommonScript] = font;
    if (GetAsString(fonts_dict, "fantasy", &font))