mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-07 09:54:42 +00:00
Bug 1746114 - Collect the third-party modules ping from socket process. r=mhowell,necko-reviewers,kershaw
Differential Revision: https://phabricator.services.mozilla.com/D133846
This commit is contained in:
parent
8b1e02f532
commit
8daad79c45
@ -50,6 +50,12 @@ using mozilla::net::SocketInfo from "mozilla/net/DashboardTypes.h";
|
|||||||
using mozilla::net::DNSCacheEntries from "mozilla/net/DashboardTypes.h";
|
using mozilla::net::DNSCacheEntries from "mozilla/net/DashboardTypes.h";
|
||||||
using mozilla::net::HttpRetParams from "mozilla/net/DashboardTypes.h";
|
using mozilla::net::HttpRetParams from "mozilla/net/DashboardTypes.h";
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
[MoveOnly] using mozilla::UntrustedModulesData from "mozilla/UntrustedModulesData.h";
|
||||||
|
[MoveOnly] using mozilla::ModulePaths from "mozilla/UntrustedModulesData.h";
|
||||||
|
[MoveOnly] using mozilla::ModulesMapResult from "mozilla/UntrustedModulesData.h";
|
||||||
|
#endif // defined(XP_WIN)
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
namespace net {
|
namespace net {
|
||||||
|
|
||||||
@ -147,6 +153,11 @@ parent:
|
|||||||
// https://firefox-source-docs.mozilla.org/toolkit/components/glean/dev/ipc.html
|
// https://firefox-source-docs.mozilla.org/toolkit/components/glean/dev/ipc.html
|
||||||
async FOGData(ByteBuf buf);
|
async FOGData(ByteBuf buf);
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
async GetModulesTrust(ModulePaths aModPaths, bool aRunAtNormalPriority)
|
||||||
|
returns (ModulesMapResult? modMapResult);
|
||||||
|
#endif // defined(XP_WIN)
|
||||||
|
|
||||||
child:
|
child:
|
||||||
async Init(SocketPorcessInitAttributes aAttributes);
|
async Init(SocketPorcessInitAttributes aAttributes);
|
||||||
async PreferenceUpdate(Pref pref);
|
async PreferenceUpdate(Pref pref);
|
||||||
@ -207,6 +218,10 @@ child:
|
|||||||
// The unused returned value is to have a promise we can await.
|
// The unused returned value is to have a promise we can await.
|
||||||
async TestTriggerMetrics() returns (bool unused);
|
async TestTriggerMetrics() returns (bool unused);
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
async GetUntrustedModulesData() returns (UntrustedModulesData? data);
|
||||||
|
#endif // defined(XP_WIN)
|
||||||
|
|
||||||
both:
|
both:
|
||||||
async PFileDescriptorSet(FileDescriptor fd);
|
async PFileDescriptorSet(FileDescriptor fd);
|
||||||
async PDNSRequest(nsCString hostName, nsCString trrServer, uint16_t type,
|
async PDNSRequest(nsCString hostName, nsCString trrServer, uint16_t type,
|
||||||
|
@ -55,6 +55,8 @@
|
|||||||
|
|
||||||
#if defined(XP_WIN)
|
#if defined(XP_WIN)
|
||||||
# include <process.h>
|
# include <process.h>
|
||||||
|
|
||||||
|
# include "mozilla/WinDllServices.h"
|
||||||
#else
|
#else
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
@ -168,6 +170,12 @@ bool SocketProcessChild::Init(base::ProcessId aParentPid,
|
|||||||
// Initialize DNS Service here, since it needs to be done in main thread.
|
// Initialize DNS Service here, since it needs to be done in main thread.
|
||||||
nsCOMPtr<nsIDNSService> dns =
|
nsCOMPtr<nsIDNSService> dns =
|
||||||
do_GetService("@mozilla.org/network/dns-service;1", &rv);
|
do_GetService("@mozilla.org/network/dns-service;1", &rv);
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
RefPtr<DllServices> dllSvc(DllServices::Get());
|
||||||
|
dllSvc->StartUntrustedModulesProcessor();
|
||||||
|
#endif // defined(XP_WIN)
|
||||||
|
|
||||||
return NS_SUCCEEDED(rv);
|
return NS_SUCCEEDED(rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -687,5 +695,19 @@ mozilla::ipc::IPCResult SocketProcessChild::RecvTestTriggerMetrics(
|
|||||||
return IPC_OK();
|
return IPC_OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
mozilla::ipc::IPCResult SocketProcessChild::RecvGetUntrustedModulesData(
|
||||||
|
GetUntrustedModulesDataResolver&& aResolver) {
|
||||||
|
RefPtr<DllServices> dllSvc(DllServices::Get());
|
||||||
|
dllSvc->GetUntrustedModulesData()->Then(
|
||||||
|
GetMainThreadSerialEventTarget(), __func__,
|
||||||
|
[aResolver](Maybe<UntrustedModulesData>&& aData) {
|
||||||
|
aResolver(std::move(aData));
|
||||||
|
},
|
||||||
|
[aResolver](nsresult aReason) { aResolver(Nothing()); });
|
||||||
|
return IPC_OK();
|
||||||
|
}
|
||||||
|
#endif // defined(XP_WIN)
|
||||||
|
|
||||||
} // namespace net
|
} // namespace net
|
||||||
} // namespace mozilla
|
} // namespace mozilla
|
||||||
|
@ -153,6 +153,11 @@ class SocketProcessChild final
|
|||||||
mozilla::ipc::IPCResult RecvTestTriggerMetrics(
|
mozilla::ipc::IPCResult RecvTestTriggerMetrics(
|
||||||
TestTriggerMetricsResolver&& aResolve);
|
TestTriggerMetricsResolver&& aResolve);
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
mozilla::ipc::IPCResult RecvGetUntrustedModulesData(
|
||||||
|
GetUntrustedModulesDataResolver&& aResolver);
|
||||||
|
#endif // defined(XP_WIN)
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class SocketProcessImpl;
|
friend class SocketProcessImpl;
|
||||||
~SocketProcessChild();
|
~SocketProcessChild();
|
||||||
|
@ -476,5 +476,21 @@ mozilla::ipc::IPCResult SocketProcessParent::RecvFOGData(ByteBuf&& aBuf) {
|
|||||||
return IPC_OK();
|
return IPC_OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
mozilla::ipc::IPCResult SocketProcessParent::RecvGetModulesTrust(
|
||||||
|
ModulePaths&& aModPaths, bool aRunAtNormalPriority,
|
||||||
|
GetModulesTrustResolver&& aResolver) {
|
||||||
|
RefPtr<DllServices> dllSvc(DllServices::Get());
|
||||||
|
dllSvc->GetModulesTrust(std::move(aModPaths), aRunAtNormalPriority)
|
||||||
|
->Then(
|
||||||
|
GetMainThreadSerialEventTarget(), __func__,
|
||||||
|
[aResolver](ModulesMapResult&& aResult) {
|
||||||
|
aResolver(Some(ModulesMapResult(std::move(aResult))));
|
||||||
|
},
|
||||||
|
[aResolver](nsresult aRv) { aResolver(Nothing()); });
|
||||||
|
return IPC_OK();
|
||||||
|
}
|
||||||
|
#endif // defined(XP_WIN)
|
||||||
|
|
||||||
} // namespace net
|
} // namespace net
|
||||||
} // namespace mozilla
|
} // namespace mozilla
|
||||||
|
@ -127,6 +127,12 @@ class SocketProcessParent final
|
|||||||
|
|
||||||
mozilla::ipc::IPCResult RecvFOGData(ByteBuf&& aBuf);
|
mozilla::ipc::IPCResult RecvFOGData(ByteBuf&& aBuf);
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
mozilla::ipc::IPCResult RecvGetModulesTrust(
|
||||||
|
ModulePaths&& aModPaths, bool aRunAtNormalPriority,
|
||||||
|
GetModulesTrustResolver&& aResolver);
|
||||||
|
#endif // defined(XP_WIN)
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SocketProcessHost* mHost;
|
SocketProcessHost* mHost;
|
||||||
UniquePtr<dom::MemoryReportRequestHost> mMemoryReportRequest;
|
UniquePtr<dom::MemoryReportRequestHost> mMemoryReportRequest;
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include "mozilla/dom/ContentParent.h"
|
#include "mozilla/dom/ContentParent.h"
|
||||||
#include "mozilla/MozPromise.h"
|
#include "mozilla/MozPromise.h"
|
||||||
|
#include "mozilla/net/SocketProcessParent.h"
|
||||||
#include "mozilla/RDDChild.h"
|
#include "mozilla/RDDChild.h"
|
||||||
#include "mozilla/RDDProcessManager.h"
|
#include "mozilla/RDDProcessManager.h"
|
||||||
#include "mozilla/WinDllServices.h"
|
#include "mozilla/WinDllServices.h"
|
||||||
@ -131,6 +132,10 @@ MultiGetUntrustedModulesData::GetUntrustedModuleLoadEvents() {
|
|||||||
AddPending(contentParent->SendGetUntrustedModulesData());
|
AddPending(contentParent->SendGetUntrustedModulesData());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (auto* socketActor = net::SocketProcessParent::GetSingleton()) {
|
||||||
|
AddPending(socketActor->SendGetUntrustedModulesData());
|
||||||
|
}
|
||||||
|
|
||||||
if (RDDProcessManager* rddMgr = RDDProcessManager::Get()) {
|
if (RDDProcessManager* rddMgr = RDDProcessManager::Get()) {
|
||||||
if (RDDChild* rddChild = rddMgr->GetRDDChild()) {
|
if (RDDChild* rddChild = rddMgr->GetRDDChild()) {
|
||||||
AddPending(rddChild->SendGetUntrustedModulesData());
|
AddPending(rddChild->SendGetUntrustedModulesData());
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "mozilla/DebugOnly.h"
|
#include "mozilla/DebugOnly.h"
|
||||||
#include "mozilla/dom/ContentChild.h"
|
#include "mozilla/dom/ContentChild.h"
|
||||||
#include "mozilla/Likely.h"
|
#include "mozilla/Likely.h"
|
||||||
|
#include "mozilla/net/SocketProcessChild.h"
|
||||||
#include "mozilla/RDDParent.h"
|
#include "mozilla/RDDParent.h"
|
||||||
#include "mozilla/ScopeExit.h"
|
#include "mozilla/ScopeExit.h"
|
||||||
#include "mozilla/Services.h"
|
#include "mozilla/Services.h"
|
||||||
@ -92,6 +93,7 @@ bool UntrustedModulesProcessor::IsSupportedProcessType() {
|
|||||||
switch (XRE_GetProcessType()) {
|
switch (XRE_GetProcessType()) {
|
||||||
case GeckoProcessType_Default:
|
case GeckoProcessType_Default:
|
||||||
case GeckoProcessType_Content:
|
case GeckoProcessType_Content:
|
||||||
|
case GeckoProcessType_Socket:
|
||||||
return Telemetry::CanRecordReleaseData();
|
return Telemetry::CanRecordReleaseData();
|
||||||
case GeckoProcessType_RDD:
|
case GeckoProcessType_RDD:
|
||||||
// For RDD process, we check the telemetry settings in RDDChild::Init()
|
// For RDD process, we check the telemetry settings in RDDChild::Init()
|
||||||
@ -695,6 +697,11 @@ UntrustedModulesProcessor::SendGetModulesTrust(ModulePaths&& aModules,
|
|||||||
return ::mozilla::SendGetModulesTrust(RDDParent::GetSingleton(),
|
return ::mozilla::SendGetModulesTrust(RDDParent::GetSingleton(),
|
||||||
std::move(aModules), runNormal);
|
std::move(aModules), runNormal);
|
||||||
}
|
}
|
||||||
|
case GeckoProcessType_Socket: {
|
||||||
|
return ::mozilla::SendGetModulesTrust(
|
||||||
|
net::SocketProcessChild::GetSingleton(), std::move(aModules),
|
||||||
|
runNormal);
|
||||||
|
}
|
||||||
default: {
|
default: {
|
||||||
MOZ_ASSERT_UNREACHABLE("Unsupported process type");
|
MOZ_ASSERT_UNREACHABLE("Unsupported process type");
|
||||||
return GetModulesTrustIpcPromise::CreateAndReject(
|
return GetModulesTrustIpcPromise::CreateAndReject(
|
||||||
|
Loading…
Reference in New Issue
Block a user