Bug 1539029 - pt 1 - give RDD its own process selector. r=froydnj
authorMichael Froman <mfroman@mozilla.com>
Tue, 09 Apr 2019 21:13:16 +0000
changeset 468659 8f70ba445346be2652ea151291dd3f34b43930b0
parent 468658 4002fa5fe7bd460d2db931a3230d316f8f86a190
child 468660 95e2d2baec447469b5723c75f80bf395bba3195c
push id35845
push userncsoregi@mozilla.com
push dateWed, 10 Apr 2019 09:58:56 +0000
treeherdermozilla-central@d272180eb2fb [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfroydnj
bugs1539029
milestone68.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1539029 - pt 1 - give RDD its own process selector. r=froydnj Originally, RDD reused the GPU process selector since they were using all the same services, and it reduced the number of places that had to be touched. Now that RDD needs pref handling, it needs its own process selector to avoid GPU inheriting pref handling. Differential Revision: https://phabricator.services.mozilla.com/D26566
dom/power/PowerManagerService.cpp
toolkit/components/telemetry/core/components.conf
widget/cocoa/nsWidgetFactory.mm
widget/gtk/components.conf
widget/windows/components.conf
xpcom/base/components.conf
xpcom/build/XPCOMInit.cpp
xpcom/build/components.conf
xpcom/components/Module.h
xpcom/components/components.conf
xpcom/components/gen_static_components.py
xpcom/components/nsComponentManager.cpp
xpcom/ds/components.conf
xpcom/threads/components.conf
--- a/dom/power/PowerManagerService.cpp
+++ b/dom/power/PowerManagerService.cpp
@@ -154,31 +154,31 @@ already_AddRefed<WakeLock> PowerManagerS
 NS_DEFINE_NAMED_CID(NS_POWERMANAGERSERVICE_CID);
 
 NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(
     nsIPowerManagerService,
     mozilla::dom::power::PowerManagerService::GetInstance)
 
 static const mozilla::Module::CIDEntry kPowerManagerCIDs[] = {
     // clang-format off
-  { &kNS_POWERMANAGERSERVICE_CID, false, nullptr, nsIPowerManagerServiceConstructor, mozilla::Module::ALLOW_IN_GPU_AND_SOCKET_PROCESS },
+  { &kNS_POWERMANAGERSERVICE_CID, false, nullptr, nsIPowerManagerServiceConstructor, mozilla::Module::ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS },
   { nullptr }
     // clang-format on
 };
 
 static const mozilla::Module::ContractIDEntry kPowerManagerContracts[] = {
     // clang-format off
-  { POWERMANAGERSERVICE_CONTRACTID, &kNS_POWERMANAGERSERVICE_CID, mozilla::Module::ALLOW_IN_GPU_AND_SOCKET_PROCESS },
+  { POWERMANAGERSERVICE_CONTRACTID, &kNS_POWERMANAGERSERVICE_CID, mozilla::Module::ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS },
   { nullptr }
     // clang-format on
 };
 
 // We mark the power module as being available in the GPU process because the
 // appshell depends on the power manager service.
 extern const mozilla::Module kPowerManagerModule = {
     mozilla::Module::kVersion,
     kPowerManagerCIDs,
     kPowerManagerContracts,
     nullptr,
     nullptr,
     nullptr,
     nullptr,
-    mozilla::Module::ALLOW_IN_GPU_AND_SOCKET_PROCESS};
+    mozilla::Module::ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS};
--- a/toolkit/components/telemetry/core/components.conf
+++ b/toolkit/components/telemetry/core/components.conf
@@ -9,11 +9,11 @@ Headers = ['mozilla/Telemetry.h']
 UnloadFunc = 'mozilla::Telemetry::ShutdownTelemetry'
 
 Classes = [
     {
         'cid': '{aea477f2-b3a2-469c-aa29-0a82d132b829}',
         'contract_ids': ['@mozilla.org/base/telemetry;1'],
         'singleton': True,
         'type': 'nsITelemetry',
-        'processes': ProcessSelector.ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS,
     },
 ]
--- a/widget/cocoa/nsWidgetFactory.mm
+++ b/widget/cocoa/nsWidgetFactory.mm
@@ -130,17 +130,17 @@ NS_DEFINE_NAMED_CID(NS_MACSYSTEMSTATUSBA
 NS_DEFINE_NAMED_CID(NS_TOUCHBARUPDATER_CID);
 NS_DEFINE_NAMED_CID(NS_GFXINFO_CID);
 
 static const mozilla::Module::CIDEntry kWidgetCIDs[] = {
     {&kNS_FILEPICKER_CID, false, NULL, nsFilePickerConstructor, mozilla::Module::MAIN_PROCESS_ONLY},
     {&kNS_COLORPICKER_CID, false, NULL, nsColorPickerConstructor,
      mozilla::Module::MAIN_PROCESS_ONLY},
     {&kNS_APPSHELL_CID, false, NULL, nsAppShellConstructor,
-     mozilla::Module::ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS},
+     mozilla::Module::ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS},
     {&kNS_SOUND_CID, false, NULL, nsSoundConstructor, mozilla::Module::MAIN_PROCESS_ONLY},
     {&kNS_TRANSFERABLE_CID, false, NULL, nsTransferableConstructor},
     {&kNS_HTMLFORMATCONVERTER_CID, false, NULL, nsHTMLFormatConverterConstructor},
     {&kNS_CLIPBOARD_CID, false, NULL, nsClipboardConstructor, mozilla::Module::MAIN_PROCESS_ONLY},
     {&kNS_CLIPBOARDHELPER_CID, false, NULL, nsClipboardHelperConstructor},
     {&kNS_DRAGSERVICE_CID, false, NULL, nsDragServiceConstructor,
      mozilla::Module::MAIN_PROCESS_ONLY},
     {&kNS_SCREENMANAGER_CID, false, NULL, ScreenManagerConstructor,
@@ -160,17 +160,17 @@ static const mozilla::Module::CIDEntry k
     {&kNS_TOUCHBARUPDATER_CID, false, NULL, nsTouchBarUpdaterConstructor},
     {&kNS_GFXINFO_CID, false, NULL, mozilla::widget::GfxInfoConstructor},
     {NULL}};
 
 static const mozilla::Module::ContractIDEntry kWidgetContracts[] = {
     {"@mozilla.org/filepicker;1", &kNS_FILEPICKER_CID, mozilla::Module::MAIN_PROCESS_ONLY},
     {"@mozilla.org/colorpicker;1", &kNS_COLORPICKER_CID, mozilla::Module::MAIN_PROCESS_ONLY},
     {"@mozilla.org/widget/appshell/mac;1", &kNS_APPSHELL_CID,
-     mozilla::Module::ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS},
+     mozilla::Module::ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS},
     {"@mozilla.org/sound;1", &kNS_SOUND_CID, mozilla::Module::MAIN_PROCESS_ONLY},
     {"@mozilla.org/widget/transferable;1", &kNS_TRANSFERABLE_CID},
     {"@mozilla.org/widget/htmlformatconverter;1", &kNS_HTMLFORMATCONVERTER_CID},
     {"@mozilla.org/widget/clipboard;1", &kNS_CLIPBOARD_CID, mozilla::Module::MAIN_PROCESS_ONLY},
     {"@mozilla.org/widget/clipboardhelper;1", &kNS_CLIPBOARDHELPER_CID},
     {"@mozilla.org/widget/dragservice;1", &kNS_DRAGSERVICE_CID, mozilla::Module::MAIN_PROCESS_ONLY},
     {"@mozilla.org/gfx/screenmanager;1", &kNS_SCREENMANAGER_CID,
      mozilla::Module::MAIN_PROCESS_ONLY},
@@ -202,9 +202,9 @@ static void nsWidgetCocoaModuleDtor() {
 
 extern const mozilla::Module kWidgetModule = {mozilla::Module::kVersion,
                                               kWidgetCIDs,
                                               kWidgetContracts,
                                               NULL,
                                               NULL,
                                               nsAppShellInit,
                                               nsWidgetCocoaModuleDtor,
-                                              mozilla::Module::ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS};
+                                              mozilla::Module::ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS};
--- a/widget/gtk/components.conf
+++ b/widget/gtk/components.conf
@@ -12,17 +12,17 @@ InitFunc = 'nsWidgetGtk2ModuleCtor'
 UnloadFunc = 'nsWidgetGtk2ModuleDtor'
 
 Classes = [
     {
         'cid': '{2d96b3df-c051-11d1-a827-0040959a28c9}',
         'contract_ids': ['@mozilla.org/widget/appshell/gtk;1'],
         'legacy_constructor': 'nsAppShellConstructor',
         'headers': ['/widget/gtk/nsWidgetFactory.h'],
-        'processes': ProcessSelector.ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS,
     },
     {
         'cid': '{c401eb80-f9ea-11d3-bb6f-e732b73ebe7c}',
         'contract_ids': ['@mozilla.org/gfx/screenmanager;1'],
         'singleton': True,
         'type': 'mozilla::widget::ScreenManager',
         'headers': ['mozilla/StaticPtr.h', 'mozilla/widget/ScreenManager.h'],
         'constructor': 'mozilla::widget::ScreenManager::GetAddRefedSingleton',
--- a/widget/windows/components.conf
+++ b/widget/windows/components.conf
@@ -21,17 +21,17 @@ Classes = [
         'headers': ['/widget/ScreenManager.h'],
         'processes': ProcessSelector.MAIN_PROCESS_ONLY,
     },
     {
         'cid': '{2d96b3df-c051-11d1-a827-0040959a28c9}',
         'contract_ids': ['@mozilla.org/widget/appshell/win;1'],
         'headers': ['/widget/windows/nsWidgetFactory.h'],
         'legacy_constructor': 'nsAppShellConstructor',
-        'processes': ProcessSelector.ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS,
     },
     {
         'cid': '{6987230e-0098-4e78-bc5f-1493ee7519fa}',
         'contract_ids': ['@mozilla.org/widget/idleservice;1'],
         'singleton': True,
         'type': 'nsIdleServiceWin',
         'constructor': 'nsIdleServiceWin::GetInstance',
         'headers': ['/widget/windows/nsIdleServiceWin.h', 'nsIdleService.h'],
@@ -119,17 +119,17 @@ Classes = [
         'headers': ['/widget/windows/TaskbarPreview.h'],
     },
     {
         'cid': '{d755a760-9f27-11df-0800-200c9a664242}',
         'contract_ids': ['@mozilla.org/gfx/info;1'],
         'type': 'mozilla::widget::GfxInfo',
         'headers': ['/widget/windows/GfxInfo.h'],
         'init_method': 'Init',
-        'processes': ProcessSelector.ALLOW_IN_GPU_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS,
     },
     {
         'cid': '{bd57cee8-1dd1-11b2-9fe7-95cf4709aea3}',
         'contract_ids': ['@mozilla.org/filepicker;1'],
         'type': 'nsFilePicker',
         'headers': ['/widget/windows/nsFilePicker.h'],
         'processes': ProcessSelector.MAIN_PROCESS_ONLY,
     },
--- a/xpcom/base/components.conf
+++ b/xpcom/base/components.conf
@@ -5,24 +5,24 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 Classes = [
     {
         'cid': '{cb6cdb94-e417-4601-b4a5-f991bf41453d}',
         'contract_ids': ['@mozilla.org/xpcom/debug;1'],
         'legacy_constructor': 'nsDebugImpl::Create',
         'headers': ['nsDebugImpl.h'],
-        'processes': ProcessSelector.ALLOW_IN_GPU_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS,
     },
     {
         'cid': '{30a04e40-38e7-11d4-8cf5-0060b0fc14a3}',
         'contract_ids': ['@mozilla.org/xpcom/memory-service;1'],
         'legacy_constructor': 'nsMemoryImpl::Create',
         'headers': ['/xpcom/base/nsMemoryImpl.h'],
-        'processes': ProcessSelector.ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS,
     },
     {
         'cid': '{67b3ac0c-d806-4d48-939e-6a819e6c248f}',
         'contract_ids': ['@mozilla.org/message-loop;1'],
         'legacy_constructor': 'nsMessageLoopConstructor',
         'headers': ['/xpcom/base/nsMessageLoop.h'],
     },
 ]
--- a/xpcom/build/XPCOMInit.cpp
+++ b/xpcom/build/XPCOMInit.cpp
@@ -168,17 +168,17 @@ const mozilla::Module::ContractIDEntry k
 const mozilla::Module kXPCOMModule = {
     mozilla::Module::kVersion,
     kXPCOMCIDEntries,
     kXPCOMContracts,
     nullptr,
     nullptr,
     nullptr,
     nullptr,
-    Module::ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS};
+    Module::ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS};
 
 // gDebug will be freed during shutdown.
 static nsIDebug2* gDebug = nullptr;
 
 EXPORT_XPCOM_API(nsresult)
 NS_GetDebug(nsIDebug2** aResult) {
   return nsDebugImpl::Create(nullptr, NS_GET_IID(nsIDebug2), (void**)aResult);
 }
--- a/xpcom/build/components.conf
+++ b/xpcom/build/components.conf
@@ -62,17 +62,17 @@ Classes = [
         'headers': ['mozilla/nsMemoryInfoDumper.h'],
     },
     {
         'cid': '{fb97e4f5-32dd-497a-baa2-7d1e55079910}',
         'contract_ids': ['@mozilla.org/memory-reporter-manager;1'],
         'type': 'nsMemoryReporterManager',
         'headers': ['/xpcom/base/nsMemoryReporterManager.h'],
         'init_method': 'Init',
-        'processes': ProcessSelector.ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS,
     },
     {
         'cid': '{7b4eeb20-d781-11d4-8a83-0010a4e0c9ca}',
         'contract_ids': ['@mozilla.org/process/util;1'],
         'type': 'nsProcess',
         'headers': ['nsProcess.h'],
     },
     {
--- a/xpcom/components/Module.h
+++ b/xpcom/components/Module.h
@@ -48,25 +48,31 @@ struct Module {
     /**
      * By default, modules are not loaded in the GPU process, even if
      * ANY_PROCESS is specified. This flag enables a module in the
      * GPU process.
      */
     ALLOW_IN_GPU_PROCESS = 0x4,
     ALLOW_IN_VR_PROCESS = 0x8,
     ALLOW_IN_SOCKET_PROCESS = 0x10,
+    ALLOW_IN_RDD_PROCESS = 0x20,
     ALLOW_IN_GPU_AND_VR_PROCESS = ALLOW_IN_GPU_PROCESS | ALLOW_IN_VR_PROCESS,
     ALLOW_IN_GPU_AND_SOCKET_PROCESS =
         ALLOW_IN_GPU_PROCESS | ALLOW_IN_SOCKET_PROCESS,
     ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS =
-        ALLOW_IN_GPU_PROCESS | ALLOW_IN_VR_PROCESS | ALLOW_IN_SOCKET_PROCESS
+        ALLOW_IN_GPU_PROCESS | ALLOW_IN_VR_PROCESS | ALLOW_IN_SOCKET_PROCESS,
+    ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS =
+        ALLOW_IN_GPU_PROCESS | ALLOW_IN_RDD_PROCESS | ALLOW_IN_SOCKET_PROCESS,
+    ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS =
+        ALLOW_IN_GPU_PROCESS | ALLOW_IN_RDD_PROCESS |
+        ALLOW_IN_VR_PROCESS | ALLOW_IN_SOCKET_PROCESS
   };
 
   static constexpr size_t kMaxProcessSelector =
-      size_t(ProcessSelector::ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS);
+      size_t(ProcessSelector::ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS);
 
   /**
    * The constructor callback is an implementation detail of the default binary
    * loader and may be null.
    */
   struct CIDEntry {
     const nsCID* cid;
     bool service;
--- a/xpcom/components/components.conf
+++ b/xpcom/components/components.conf
@@ -5,17 +5,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 Classes = [
     {
         'cid': '{16d222a6-1dd2-11b2-b693-f38b02c021b2}',
         'contract_ids': ['@mozilla.org/categorymanager;1'],
         'legacy_constructor': 'nsCategoryManager::Create',
         'headers': ['/xpcom/components/nsCategoryManager.h'],
-        'processes': ProcessSelector.ALLOW_IN_GPU_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS,
     },
     {
         'cid': '{91775d60-d5dc-11d2-92fb-00e09805570f}',
         'legacy_constructor': 'nsComponentManagerImpl::Create',
         'headers': ['/xpcom/components/nsComponentManager.h'],
-        'processes': ProcessSelector.ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS,
     },
 ]
--- a/xpcom/components/gen_static_components.py
+++ b/xpcom/components/gen_static_components.py
@@ -57,36 +57,49 @@ class UUIDRepr(object):
 # these values, but we use the same values as the enum constants for clarity.
 class ProcessSelector:
     ANY_PROCESS = 0x0
     MAIN_PROCESS_ONLY = 0x1
     CONTENT_PROCESS_ONLY = 0x2
     ALLOW_IN_GPU_PROCESS = 0x4
     ALLOW_IN_VR_PROCESS = 0x8
     ALLOW_IN_SOCKET_PROCESS = 0x10
+    ALLOW_IN_RDD_PROCESS = 0x20
     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
     ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS = (ALLOW_IN_GPU_PROCESS |
                                           ALLOW_IN_VR_PROCESS |
                                           ALLOW_IN_SOCKET_PROCESS)
+    ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS = (ALLOW_IN_GPU_PROCESS |
+                                           ALLOW_IN_RDD_PROCESS |
+                                           ALLOW_IN_SOCKET_PROCESS)
+    ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS = (ALLOW_IN_GPU_PROCESS |
+                                              ALLOW_IN_RDD_PROCESS |
+                                              ALLOW_IN_VR_PROCESS |
+                                              ALLOW_IN_SOCKET_PROCESS)
 
 
 # Maps ProcessSelector constants to the name of the corresponding
 # Module::ProcessSelector enum value.
 PROCESSES = {
     ProcessSelector.ANY_PROCESS: 'ANY_PROCESS',
     ProcessSelector.MAIN_PROCESS_ONLY: 'MAIN_PROCESS_ONLY',
     ProcessSelector.CONTENT_PROCESS_ONLY: 'CONTENT_PROCESS_ONLY',
     ProcessSelector.ALLOW_IN_GPU_PROCESS: 'ALLOW_IN_GPU_PROCESS',
     ProcessSelector.ALLOW_IN_VR_PROCESS: 'ALLOW_IN_VR_PROCESS',
     ProcessSelector.ALLOW_IN_SOCKET_PROCESS: 'ALLOW_IN_SOCKET_PROCESS',
+    ProcessSelector.ALLOW_IN_RDD_PROCESS: 'ALLOW_IN_RDD_PROCESS',
     ProcessSelector.ALLOW_IN_GPU_AND_SOCKET_PROCESS: 'ALLOW_IN_GPU_AND_SOCKET_PROCESS',
     ProcessSelector.ALLOW_IN_GPU_AND_VR_PROCESS: 'ALLOW_IN_GPU_AND_VR_PROCESS',
     ProcessSelector.ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS: 'ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS',
+    ProcessSelector.ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS:
+        'ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS',
+    ProcessSelector.ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS:
+        'ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS',
 }
 
 
 # Emits the C++ symbolic constant corresponding to a ProcessSelector constant.
 def lower_processes(processes):
     return 'Module::ProcessSelector::%s' % PROCESSES[processes]
 
 
--- a/xpcom/components/nsComponentManager.cpp
+++ b/xpcom/components/nsComponentManager.cpp
@@ -138,20 +138,24 @@ namespace mozilla {
 namespace xpcom {
 
 using ProcessSelector = Module::ProcessSelector;
 
 // Note: These must be kept in sync with the ProcessSelector definition in
 // Module.h.
 bool ProcessSelectorMatches(ProcessSelector aSelector) {
   GeckoProcessType type = XRE_GetProcessType();
-  if (type == GeckoProcessType_GPU || type == GeckoProcessType_RDD) {
+  if (type == GeckoProcessType_GPU) {
     return !!(aSelector & Module::ALLOW_IN_GPU_PROCESS);
   }
 
+  if (type == GeckoProcessType_RDD) {
+    return !!(aSelector & Module::ALLOW_IN_RDD_PROCESS);
+  }
+
   if (type == GeckoProcessType_Socket) {
     return !!(aSelector & (Module::ALLOW_IN_SOCKET_PROCESS));
   }
 
   if (type == GeckoProcessType_VR) {
     return !!(aSelector & Module::ALLOW_IN_VR_PROCESS);
   }
 
@@ -419,26 +423,36 @@ nsresult nsComponentManagerImpl::Init() 
     gProcessMatchTable[size_t(ProcessSelector::CONTENT_PROCESS_ONLY)] =
         ProcessSelectorMatches(ProcessSelector::CONTENT_PROCESS_ONLY);
     gProcessMatchTable[size_t(ProcessSelector::ALLOW_IN_GPU_PROCESS)] =
         ProcessSelectorMatches(ProcessSelector::ALLOW_IN_GPU_PROCESS);
     gProcessMatchTable[size_t(ProcessSelector::ALLOW_IN_VR_PROCESS)] =
         ProcessSelectorMatches(ProcessSelector::ALLOW_IN_VR_PROCESS);
     gProcessMatchTable[size_t(ProcessSelector::ALLOW_IN_SOCKET_PROCESS)] =
         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_GPU_AND_VR_PROCESS)] =
         ProcessSelectorMatches(ProcessSelector::ALLOW_IN_GPU_AND_VR_PROCESS);
     gProcessMatchTable[size_t(
         ProcessSelector::ALLOW_IN_GPU_AND_SOCKET_PROCESS)] =
         ProcessSelectorMatches(
             ProcessSelector::ALLOW_IN_GPU_AND_SOCKET_PROCESS);
     gProcessMatchTable[size_t(
         ProcessSelector::ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS)] =
         ProcessSelectorMatches(
             ProcessSelector::ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS);
+    gProcessMatchTable[size_t(
+        ProcessSelector::ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS)] =
+        ProcessSelectorMatches(
+            ProcessSelector::ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS);
+    gProcessMatchTable[size_t(
+        ProcessSelector::ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS)] =
+        ProcessSelectorMatches(
+            ProcessSelector::ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS);
   }
 
   MOZ_ASSERT(NOT_INITIALIZED == mStatus);
 
   nsCOMPtr<nsIFile> greDir = GetLocationFromDirectoryService(NS_GRE_DIR);
   nsCOMPtr<nsIFile> appDir =
       GetLocationFromDirectoryService(NS_XPCOM_CURRENT_PROCESS_DIR);
 
--- a/xpcom/ds/components.conf
+++ b/xpcom/ds/components.conf
@@ -11,11 +11,11 @@ Classes = [
         'legacy_constructor': 'nsArrayBase::XPCOMConstructor',
         'headers': ['nsArray.h'],
     },
     {
         'cid': '{d07f5195-e3d1-11d2-8acd-00105a1b8860}',
         'contract_ids': ['@mozilla.org/observer-service;1'],
         'legacy_constructor': 'nsObserverService::Create',
         'headers': ['/xpcom/ds/nsObserverService.h'],
-        'processes': ProcessSelector.ALLOW_IN_GPU_VR_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_VR_AND_SOCKET_PROCESS,
     },
 ]
--- a/xpcom/threads/components.conf
+++ b/xpcom/threads/components.conf
@@ -11,11 +11,11 @@ Classes = [
         'legacy_constructor': 'nsEnvironment::Create',
         'headers': ['/xpcom/threads/nsEnvironment.h'],
     },
     {
         'cid': '{5ff24248-1dd2-11b2-8427-fbab44f29bc8}',
         'contract_ids': ['@mozilla.org/timer;1'],
         'legacy_constructor': 'nsTimer::XPCOMConstructor',
         'headers': ['/xpcom/threads/nsTimerImpl.h'],
-        'processes': ProcessSelector.ALLOW_IN_GPU_AND_SOCKET_PROCESS,
+        'processes': ProcessSelector.ALLOW_IN_GPU_RDD_AND_SOCKET_PROCESS,
     },
 ]