зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
a830786a12
Коммит
9956dde6c8
|
@ -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,6 +1870,7 @@ nsresult nsMemoryReporterManager::StartGettingReports() {
|
|||
}
|
||||
}
|
||||
|
||||
if (!IsRegistrationBlocked()) {
|
||||
if (RefPtr<UtilityProcessManager> utility =
|
||||
UtilityProcessManager::GetIfExists()) {
|
||||
for (RefPtr<UtilityProcessParent>& parent :
|
||||
|
@ -1880,6 +1881,7 @@ nsresult nsMemoryReporterManager::StartGettingReports() {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!s->mChildrenPending.IsEmpty()) {
|
||||
nsCOMPtr<nsITimer> timer;
|
||||
|
|
Загрузка…
Ссылка в новой задаче