mirror of
https://github.com/electron/electron.git
synced 2026-01-08 07:04:01 -05:00
* chore: bump chromium in DEPS to 141.0.7381.3 * chore: update patches * chore: bump chromium in DEPS to 141.0.7382.0 * chore: update patches * chore: bump chromium in DEPS to 141.0.7384.0 * chore: bump chromium in DEPS to 141.0.7386.0 * [Extensions] Move devtools_page and chrome_url_overrides handlers Refs https://chromium-review.googlesource.com/c/chromium/src/+/6862700 * Reland "[api] Advance deprecation of GetIsolate" Refs https://chromium-review.googlesource.com/c/v8/v8/+/6875273 * Move "system integrated UI" concept out of NativeTheme. Refs https://chromium-review.googlesource.com/c/chromium/src/+/6867375 * chore: update patches * Reland "[PermissionOptions] Return PermissionResult in callback for requests" Refs https://chromium-review.googlesource.com/c/chromium/src/+/6851838 * Reland "[exit-time-destructors] Enable by default" Refs https://chromium-review.googlesource.com/c/chromium/src/+/6859042 * chore: update patches * [FSA] Revoke Read access after removing file via FileSystemAccess API Refs https://chromium-review.googlesource.com/c/chromium/src/+/6677249 * chore: IWYU * [DevToolsUIBindings] Accept an object for `dispatchHttpRequest` params Refs https://chromium-review.googlesource.com/c/chromium/src/+/6877528 * chore: IWYU * Pass navigation UI parameters on EnterFullscreen in EAM Refs https://chromium-review.googlesource.com/c/chromium/src/+/6874923 * chore: rm band-aid_over_an_issue_with_using_deprecated_nsopenpanel_api.patch * Remove unused PreHandleMouseEvent Refs https://chromium-review.googlesource.com/c/chromium/src/+/6880411 * 6878583: siso: update to version 1.4.1 https://chromium-review.googlesource.com/c/chromium/src/+/6878583 * Fold native_theme_browser into native_theme. https://chromium-review.googlesource.com/c/chromium/src/+/6882627 * fixup: Reland "[exit-time-destructors] Enable by default https://chromium-review.googlesource.com/c/chromium/src/+/6859042 * chore: update filenames.libcxx.gni * chore: IWYU * fixup: chore: IWYU * fixup: Reland "[exit-time-destructors] Enable by default * fixup: Reland "[exit-time-destructors] Enable by default * Remove common_theme.*; place its method in NativeTheme instead. https://chromium-review.googlesource.com/c/chromium/src/+/6886029 * fixup: Reland "[exit-time-destructors] Enable by default * Better track when WebPreferences need updates for color-related changes. Refs https://chromium-review.googlesource.com/c/chromium/src/+/6886797 * chore: bump chromium in DEPS to 141.0.7390.7 * 6904664: Reland "Make BrowserContext::GetPath() const" https://chromium-review.googlesource.com/c/chromium/src/+/6904664 * Restore read access after certain file modification operations https://chromium-review.googlesource.com/c/chromium/src/+/6861041 * fixup: Move "system integrated UI" concept out of NativeTheme. * fixup: Reland "[exit-time-destructors] Enable by default * chore: update patches * 6906096: Remove GetSysSkColor(). https://chromium-review.googlesource.com/c/chromium/src/+/6906096 * Inline implementation of SysColorChangeListener into the lone user. https://chromium-review.googlesource.com/c/chromium/src/+/6905083 Also 6906096: Remove GetSysSkColor(). | https://chromium-review.googlesource.com/c/chromium/src/+/6906096 * fixup: 6906096: Remove GetSysSkColor() --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
73 lines
2.2 KiB
C++
73 lines
2.2 KiB
C++
// Copyright (c) 2016 GitHub, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "shell/browser/relauncher.h"
|
|
|
|
#include <fcntl.h>
|
|
#include <signal.h>
|
|
#include <sys/prctl.h>
|
|
#include <sys/signalfd.h>
|
|
|
|
#include "base/files/scoped_file.h"
|
|
#include "base/logging.h"
|
|
#include "base/no_destructor.h"
|
|
#include "base/posix/eintr_wrapper.h"
|
|
#include "base/process/launch.h"
|
|
#include "base/synchronization/waitable_event.h"
|
|
|
|
namespace relauncher::internal {
|
|
|
|
// this is global to be visible to the sa_handler
|
|
auto& GetParentWaiter() {
|
|
static base::NoDestructor<base::WaitableEvent> parentWaiter;
|
|
return *parentWaiter;
|
|
}
|
|
|
|
void RelauncherSynchronizeWithParent() {
|
|
base::ScopedFD relauncher_sync_fd(kRelauncherSyncFD);
|
|
static const auto signum = SIGUSR2;
|
|
|
|
// send signum to current process when parent process ends.
|
|
if (HANDLE_EINTR(prctl(PR_SET_PDEATHSIG, signum)) != 0) {
|
|
PLOG(ERROR) << "prctl";
|
|
return;
|
|
}
|
|
|
|
// set up a signum handler
|
|
struct sigaction action = {};
|
|
action.sa_handler = [](int /*signum*/) { GetParentWaiter().Signal(); };
|
|
if (sigaction(signum, &action, nullptr) != 0) {
|
|
PLOG(ERROR) << "sigaction";
|
|
return;
|
|
}
|
|
|
|
// write a '\0' character to the pipe to the parent process.
|
|
// this is how the parent knows that we're ready for it to exit.
|
|
if (HANDLE_EINTR(write(relauncher_sync_fd.get(), "", 1)) != 1) {
|
|
PLOG(ERROR) << "write";
|
|
return;
|
|
}
|
|
|
|
// Wait for the parent to exit
|
|
GetParentWaiter().Wait();
|
|
}
|
|
|
|
int LaunchProgram(const StringVector& relauncher_args,
|
|
const StringVector& argv) {
|
|
// Redirect the stdout of child process to /dev/null, otherwise after
|
|
// relaunch the child process will raise exception when writing to stdout.
|
|
base::ScopedFD devnull(HANDLE_EINTR(open("/dev/null", O_WRONLY)));
|
|
|
|
base::LaunchOptions options;
|
|
options.allow_new_privs = true;
|
|
options.new_process_group = true; // detach
|
|
options.fds_to_remap.emplace_back(devnull.get(), STDERR_FILENO);
|
|
options.fds_to_remap.emplace_back(devnull.get(), STDOUT_FILENO);
|
|
|
|
base::Process process = base::LaunchProcess(argv, options);
|
|
return process.IsValid() ? 0 : 1;
|
|
}
|
|
|
|
} // namespace relauncher::internal
|