mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-21 09:49:14 +00:00
Bug 1845946 - Part 2. Add plumbing for component services to be used in the GMP process. r=emilio,geckoview-reviewers,owlish
In order to bring the GMP process in closer alignment with how other special purpose processes work, we need to be able to use the same component services generally expected. This patch makes the GMP process allow the same services as seen in the GPU/VR/RDD/Utility processes. Differential Revision: https://phabricator.services.mozilla.com/D185336
This commit is contained in:
parent
6718d67ce7
commit
00188ff292
@ -21,7 +21,7 @@ Classes = [
|
||||
'type': 'mozilla::Preferences',
|
||||
'headers': ['mozilla/Preferences.h'],
|
||||
'constructor': 'mozilla::Preferences::GetInstanceForService',
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS,
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
|
||||
},
|
||||
{
|
||||
'cid': '{064d9cee-1dd2-11b2-83e3-d25ab0193c26}',
|
||||
|
@ -16,6 +16,6 @@ Classes = [
|
||||
'interfaces': ['nsITelemetry'],
|
||||
'singleton': True,
|
||||
'type': 'nsITelemetry',
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS,
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
|
||||
},
|
||||
]
|
||||
|
@ -17,7 +17,7 @@ Classes = [
|
||||
'contract_ids': ['@mozilla.org/widget/appshell/android;1'],
|
||||
'legacy_constructor': 'nsAppShellConstructor',
|
||||
'headers': ['/widget/android/nsWidgetFactory.h'],
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS,
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
|
||||
},
|
||||
{
|
||||
'cid': '{d594094c-28b6-466b-97d7-66c039c3dea9}',
|
||||
|
@ -41,7 +41,7 @@ Classes = [
|
||||
'cid': '{2d96b3df-c051-11d1-a827-0040959a28c9}',
|
||||
'contract_ids': ['@mozilla.org/widget/appshell/mac;1'],
|
||||
'legacy_constructor': 'nsAppShellConstructor',
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS,
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
|
||||
},
|
||||
{
|
||||
'cid': '{15cc80a9-5329-4fcb-9a0b-c6cf1440ae51}',
|
||||
|
@ -17,7 +17,7 @@ Classes = [
|
||||
'contract_ids': ['@mozilla.org/widget/appshell/gtk;1'],
|
||||
'legacy_constructor': 'nsAppShellConstructor',
|
||||
'headers': ['/widget/gtk/nsWidgetFactory.h'],
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS,
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
|
||||
},
|
||||
{
|
||||
'cid': '{e9537f8f-c07e-4435-8ab3-83f1ad6e3bbf}',
|
||||
|
@ -26,7 +26,7 @@ Classes = [
|
||||
'contract_ids': ['@mozilla.org/widget/appshell/win;1'],
|
||||
'headers': ['/widget/windows/nsWidgetFactory.h'],
|
||||
'legacy_constructor': 'nsAppShellConstructor',
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS,
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
|
||||
},
|
||||
{
|
||||
'cid': '{6987230e-0098-4e78-bc5f-1493ee7519fa}',
|
||||
|
@ -78,7 +78,7 @@ Classes = [
|
||||
'type': 'nsMemoryReporterManager',
|
||||
'headers': ['/xpcom/base/nsMemoryReporterManager.h'],
|
||||
'init_method': 'Init',
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS,
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
|
||||
},
|
||||
{
|
||||
'cid': '{7b4eeb20-d781-11d4-8a83-0010a4e0c9ca}',
|
||||
|
@ -24,9 +24,9 @@ enum ProcessSelector {
|
||||
CONTENT_PROCESS_ONLY = 1 << 1,
|
||||
|
||||
/**
|
||||
* By default, modules are not loaded in the GPU, VR, Socket, RDD, Utility
|
||||
* and IPDLUnitTest processes, even if ANY_PROCESS is specified. This flag
|
||||
* enables a module in the relevant process.
|
||||
* By default, modules are not loaded in the GPU, VR, Socket, RDD, Utility,
|
||||
* GMPlugin and IPDLUnitTest processes, even if ANY_PROCESS is specified.
|
||||
* This flag enables a module in the relevant process.
|
||||
*
|
||||
* NOTE: IPDLUnitTest does not have its own flag, and will only load a
|
||||
* module if it is enabled in all processes.
|
||||
@ -36,6 +36,7 @@ enum ProcessSelector {
|
||||
ALLOW_IN_SOCKET_PROCESS = 1 << 4,
|
||||
ALLOW_IN_RDD_PROCESS = 1 << 5,
|
||||
ALLOW_IN_UTILITY_PROCESS = 1 << 6,
|
||||
ALLOW_IN_GMPLUGIN_PROCESS = 1 << 7,
|
||||
ALLOW_IN_GPU_AND_MAIN_PROCESS = ALLOW_IN_GPU_PROCESS | MAIN_PROCESS_ONLY,
|
||||
ALLOW_IN_GPU_AND_VR_PROCESS = ALLOW_IN_GPU_PROCESS | ALLOW_IN_VR_PROCESS,
|
||||
ALLOW_IN_GPU_AND_SOCKET_PROCESS =
|
||||
@ -53,11 +54,15 @@ enum ProcessSelector {
|
||||
ALLOW_IN_SOCKET_PROCESS,
|
||||
ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS =
|
||||
ALLOW_IN_GPU_PROCESS | ALLOW_IN_RDD_PROCESS | ALLOW_IN_VR_PROCESS |
|
||||
ALLOW_IN_SOCKET_PROCESS | ALLOW_IN_UTILITY_PROCESS
|
||||
ALLOW_IN_SOCKET_PROCESS | ALLOW_IN_UTILITY_PROCESS,
|
||||
ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS =
|
||||
ALLOW_IN_GPU_PROCESS | ALLOW_IN_RDD_PROCESS | ALLOW_IN_VR_PROCESS |
|
||||
ALLOW_IN_SOCKET_PROCESS | ALLOW_IN_UTILITY_PROCESS |
|
||||
ALLOW_IN_GMPLUGIN_PROCESS
|
||||
};
|
||||
|
||||
static constexpr size_t kMaxProcessSelector =
|
||||
size_t(ProcessSelector::ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS);
|
||||
static constexpr size_t kMaxProcessSelector = size_t(
|
||||
ProcessSelector::ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS);
|
||||
|
||||
/**
|
||||
* This allows category entries to be marked so that they are or are
|
||||
|
@ -18,6 +18,6 @@ Classes = [
|
||||
'cid': '{91775d60-d5dc-11d2-92fb-00e09805570f}',
|
||||
'legacy_constructor': 'nsComponentManagerImpl::Create',
|
||||
'headers': ['/xpcom/components/nsComponentManager.h'],
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS,
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
|
||||
},
|
||||
]
|
||||
|
@ -64,6 +64,7 @@ class ProcessSelector:
|
||||
ALLOW_IN_SOCKET_PROCESS = 1 << 4
|
||||
ALLOW_IN_RDD_PROCESS = 1 << 5
|
||||
ALLOW_IN_UTILITY_PROCESS = 1 << 6
|
||||
ALLOW_IN_GMPLUGIN_PROCESS = 1 << 7
|
||||
ALLOW_IN_GPU_AND_MAIN_PROCESS = ALLOW_IN_GPU_PROCESS | MAIN_PROCESS_ONLY
|
||||
ALLOW_IN_GPU_AND_SOCKET_PROCESS = ALLOW_IN_GPU_PROCESS | ALLOW_IN_SOCKET_PROCESS
|
||||
ALLOW_IN_GPU_AND_VR_PROCESS = ALLOW_IN_GPU_PROCESS | ALLOW_IN_VR_PROCESS
|
||||
@ -93,6 +94,14 @@ class ProcessSelector:
|
||||
| ALLOW_IN_SOCKET_PROCESS
|
||||
| ALLOW_IN_UTILITY_PROCESS
|
||||
)
|
||||
ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS = (
|
||||
ALLOW_IN_GPU_PROCESS
|
||||
| ALLOW_IN_RDD_PROCESS
|
||||
| ALLOW_IN_VR_PROCESS
|
||||
| ALLOW_IN_SOCKET_PROCESS
|
||||
| ALLOW_IN_UTILITY_PROCESS
|
||||
| ALLOW_IN_GMPLUGIN_PROCESS
|
||||
)
|
||||
|
||||
|
||||
# Maps ProcessSelector constants to the name of the corresponding
|
||||
@ -114,6 +123,7 @@ PROCESSES = {
|
||||
ProcessSelector.ALLOW_IN_GPU_RDD_SOCKET_AND_UTILITY_PROCESS: "ALLOW_IN_GPU_RDD_SOCKET_AND_UTILITY_PROCESS", # NOQA: E501
|
||||
ProcessSelector.ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS: "ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS", # NOQA: E501
|
||||
ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS: "ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS", # NOQA: E501
|
||||
ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS: "ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS", # NOQA: E501
|
||||
}
|
||||
|
||||
|
||||
|
@ -115,6 +115,10 @@ bool ProcessSelectorMatches(ProcessSelector aSelector) {
|
||||
return !!(aSelector & Module::ALLOW_IN_UTILITY_PROCESS);
|
||||
}
|
||||
|
||||
if (type == GeckoProcessType_GMPlugin) {
|
||||
return !!(aSelector & Module::ALLOW_IN_GMPLUGIN_PROCESS);
|
||||
}
|
||||
|
||||
// Only allow XPCOM modules which can be loaded in all processes to be loaded
|
||||
// in the IPDLUnitTest process.
|
||||
if (type == GeckoProcessType_IPDLUnitTest) {
|
||||
@ -294,6 +298,8 @@ nsresult nsComponentManagerImpl::Init() {
|
||||
ProcessSelectorMatches(ProcessSelector::ALLOW_IN_SOCKET_PROCESS);
|
||||
gProcessMatchTable[size_t(ProcessSelector::ALLOW_IN_RDD_PROCESS)] =
|
||||
ProcessSelectorMatches(ProcessSelector::ALLOW_IN_RDD_PROCESS);
|
||||
gProcessMatchTable[size_t(ProcessSelector::ALLOW_IN_GMPLUGIN_PROCESS)] =
|
||||
ProcessSelectorMatches(ProcessSelector::ALLOW_IN_GMPLUGIN_PROCESS);
|
||||
gProcessMatchTable[size_t(ProcessSelector::ALLOW_IN_GPU_AND_MAIN_PROCESS)] =
|
||||
ProcessSelectorMatches(ProcessSelector::ALLOW_IN_GPU_AND_MAIN_PROCESS);
|
||||
gProcessMatchTable[size_t(ProcessSelector::ALLOW_IN_GPU_AND_VR_PROCESS)] =
|
||||
@ -326,6 +332,12 @@ nsresult nsComponentManagerImpl::Init() {
|
||||
ProcessSelector::ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS)] =
|
||||
ProcessSelectorMatches(
|
||||
ProcessSelector::ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS);
|
||||
gProcessMatchTable[size_t(
|
||||
ProcessSelector::
|
||||
ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS)] =
|
||||
ProcessSelectorMatches(
|
||||
ProcessSelector::
|
||||
ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS);
|
||||
}
|
||||
|
||||
MOZ_ASSERT(NOT_INITIALIZED == mStatus);
|
||||
@ -360,7 +372,6 @@ nsresult nsComponentManagerImpl::Init() {
|
||||
// processes really need chrome manifests...?
|
||||
case GeckoProcessType_Default:
|
||||
case GeckoProcessType_Content:
|
||||
case GeckoProcessType_GMPlugin:
|
||||
loadChromeManifests = true;
|
||||
break;
|
||||
}
|
||||
|
@ -19,6 +19,6 @@ Classes = [
|
||||
'interfaces': ['nsIObserverService'],
|
||||
'legacy_constructor': 'nsObserverService::Create',
|
||||
'headers': ['/xpcom/ds/nsObserverService.h'],
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_AND_UTILITY_PROCESS,
|
||||
'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_SOCKET_UTILITY_AND_GMPLUGIN_PROCESS,
|
||||
},
|
||||
]
|
||||
|
Loading…
x
Reference in New Issue
Block a user