fix: don't propagate GDK_BACKEND to subprocs (#28898)

This commit is contained in:
Shelley Vohr 2021-06-08 16:10:27 +02:00 committed by GitHub
parent b27c5b94f7
commit 7b169c2884
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 42 additions and 0 deletions

View file

@ -19,6 +19,7 @@
#include "dbus/bus.h"
#include "dbus/message.h"
#include "dbus/object_proxy.h"
#include "shell/browser/electron_browser_main_parts.h"
#include "shell/common/platform_util_internal.h"
#include "ui/gtk/gtk_util.h"
#include "url/gurl.h"
@ -122,6 +123,18 @@ bool XDGUtil(const std::vector<std::string>& argv,
// bring up a new terminal if necessary. See "man mailcap".
options.environment["MM_NOTTTY"] = "1";
// If the user set a GDK_BACKEND value of their own, use that,
// otherwise unset it becuase Chromium is setting GDK_BACKEND
// during GTK initialization and we want to respect user preference.
// Setting values in EnvironmentMap to an empty-string
// will make sure that they get unset from the environment via
// AlterEnvironment().
const base::Optional<std::string>& gdk_backend =
electron::ElectronBrowserMainParts::GetGDKBackend();
options.environment["GDK_BACKEND"] = gdk_backend.has_value()
? gdk_backend.value().c_str()
: base::NativeEnvironmentString();
base::Process process = base::LaunchProcess(argv, options);
if (!process.IsValid())
return false;