gecko-dev/toolkit/profile/ProfileUnlockerAndroid.cpp
Agi Sferro 0ae24ebfa4 Bug 1697503 - Remove GeckoAppShell.KillAnyZombies. r=mossop,droeh
Before this patch, when the profile is locked on Android, we would call "ps",
parse the human-readable output and kill any other Gecko process that we could
find.

But this is completely unnecessary, as we know exactly that the PID of the
process holding the lock is.

In this patch we just kill the process holding the lock since this is
equivalent to the previous behavior.

Differential Revision: https://phabricator.services.mozilla.com/D106186
2021-03-15 17:04:41 +00:00

38 lines
1.0 KiB
C++

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "ProfileUnlockerAndroid.h"
#include "nsPrintfCString.h"
#include <unistd.h>
namespace mozilla {
ProfileUnlockerAndroid::ProfileUnlockerAndroid(const pid_t aPid) : mPid(aPid) {}
ProfileUnlockerAndroid::~ProfileUnlockerAndroid() {}
NS_IMPL_ISUPPORTS(ProfileUnlockerAndroid, nsIProfileUnlocker)
NS_IMETHODIMP
ProfileUnlockerAndroid::Unlock(uint32_t aSeverity) {
if (aSeverity != FORCE_QUIT) {
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_WARNING(nsPrintfCString("Process %d has the profile "
"lock, will try to kill it.",
mPid)
.get());
if (mPid == getpid()) {
NS_ERROR("Lock held by current process !?");
return NS_ERROR_FAILURE;
}
if (kill(mPid, SIGKILL) != 0) {
NS_WARNING("Could not kill process.");
}
return NS_OK;
}
} // namespace mozilla