Bug 1812035 - Fix broken about:memory tests. r=smaug

Tests for about:memory doesn't know about utility processes. Make sure
to hide the utility process reporter when needed, and count the number
of living processes, also when needed.

Differential Revision: https://phabricator.services.mozilla.com/D167662
This commit is contained in:
Andreas Farre 2023-01-27 09:17:16 +00:00
Родитель a830786a12
Коммит 9956dde6c8
8 изменённых файлов: 29 добавлений и 12 удалений

Просмотреть файл

@ -1762,4 +1762,10 @@ bool ChromeUtils::IsDarkBackground(GlobalObject&, Element& aElement) {
double ChromeUtils::DateNow(GlobalObject&) { return JS_Now() / 1000.0; }
/* static */
unsigned ChromeUtils::AliveUtilityProcesses(const GlobalObject&) {
const auto& utilityProcessManager =
mozilla::ipc::UtilityProcessManager::GetIfExists();
return utilityProcessManager ? utilityProcessManager->AliveProcesses() : 0;
}
} // namespace mozilla::dom

Просмотреть файл

@ -284,6 +284,8 @@ class ChromeUtils {
static bool IsDarkBackground(GlobalObject&, Element&);
static double DateNow(GlobalObject&);
static unsigned AliveUtilityProcesses(const GlobalObject&);
};
} // namespace dom

Просмотреть файл

@ -653,6 +653,12 @@ partial namespace ChromeUtils {
* Returns whether the background of the element is dark.
*/
boolean isDarkBackground(Element element);
/**
* The number of currently alive utility processes.
*/
[ChromeOnly]
readonly attribute unsigned long aliveUtilityProcesses;
};
/*

Просмотреть файл

@ -130,6 +130,8 @@ class UtilityProcessManager final : public UtilityProcessHost::Listener {
// Shutdown all utility processes
void CleanShutdownAllProcesses();
uint16_t AliveProcesses();
private:
~UtilityProcessManager();
@ -196,7 +198,6 @@ class UtilityProcessManager final : public UtilityProcessHost::Listener {
RefPtr<ProcessFields> GetProcess(SandboxingKind);
bool NoMoreProcesses();
uint16_t AliveProcesses();
};
} // namespace ipc

Просмотреть файл

@ -132,7 +132,7 @@
socketProcessRunning = 1;
}
let m2 = (vsizes.length == (4 + socketProcessRunning) &&
let m2 = (vsizes.length == (4 + socketProcessRunning + ChromeUtils.aliveUtilityProcesses) &&
endOfBrowsers.length == 3);
ok(m2, "three content processes present in loaded data");
good = good && !!m2;

Просмотреть файл

@ -230,7 +230,7 @@
if (SpecialPowers.Services.io.socketProcessLaunched) {
socketProcessRunning = 1;
}
ok(aAmounts.length == (1 + socketProcessRunning),
is(aAmounts.length, (1 + socketProcessRunning + ChromeUtils.aliveUtilityProcesses),
aName + " has " + aAmounts.length + " report");
let n = aAmounts[0];
if (!aCanBeUnreasonable) {

Просмотреть файл

@ -22,7 +22,7 @@
socketProcessRunning = 1;
}
let numToOpen = 3;
const expectedNumRemotes = numToOpen + socketProcessRunning;
const expectedNumRemotes = numToOpen + socketProcessRunning + ChromeUtils.aliveUtilityProcesses;
let numReady = 0;
// Create some remote processes, and set up message-passing so that
@ -89,7 +89,7 @@
} else {
ok(processes[i].startsWith("Browser (") || processes[i].startsWith("Web Content (") ||
(processes[i].startsWith("Socket (") && socketProcessRunning)
|| processes[i].startsWith("web ("),
|| processes[i].startsWith("web (") || processes[i].startsWith("Utility ("),
"correct non-empty process name prefix: " + processes[i]);
numNonEmptyProcesses++;
}

Просмотреть файл

@ -1870,13 +1870,15 @@ nsresult nsMemoryReporterManager::StartGettingReports() {
}
}
if (RefPtr<UtilityProcessManager> utility =
UtilityProcessManager::GetIfExists()) {
for (RefPtr<UtilityProcessParent>& parent :
utility->GetAllProcessesProcessParent()) {
if (RefPtr<MemoryReportingProcess> proc =
utility->GetProcessMemoryReporter(parent)) {
s->mChildrenPending.AppendElement(proc.forget());
if (!IsRegistrationBlocked()) {
if (RefPtr<UtilityProcessManager> utility =
UtilityProcessManager::GetIfExists()) {
for (RefPtr<UtilityProcessParent>& parent :
utility->GetAllProcessesProcessParent()) {
if (RefPtr<MemoryReportingProcess> proc =
utility->GetProcessMemoryReporter(parent)) {
s->mChildrenPending.AppendElement(proc.forget());
}
}
}
}