Bug 1355147 - Change Firefox to a background application when headless. r?mstange draft
authorBrendan Dahl <brendan.dahl@gmail.com>
Thu, 06 Jul 2017 13:46:33 -0700
changeset 617139 00e4dc002eea78339ed30216a1e049c0a0bc1524
parent 617138 5d564ab4b2061acd3513a4a398f701b744e4363b
child 617140 3d52b9f90ffa30e5deb482cbbb2d2e5bea6f90fe
push id70939
push userbmo:bdahl@mozilla.com
push dateFri, 28 Jul 2017 00:20:56 +0000
reviewersmstange
bugs1355147
milestone56.0a1
Bug 1355147 - Change Firefox to a background application when headless. r?mstange To avoid headless Firefox creating an icon in the dock and taking focus away from the terminal, it is now changed to a background app on startup. MozReview-Commit-ID: DyKk0Zxq0Uq
toolkit/xre/nsAppRunner.cpp
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -3173,16 +3173,28 @@ XREMain::XRE_mainInit(bool* aExitFlag)
 
   if (gfxPlatform::IsHeadless()) {
 #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) || defined(XP_MACOSX)
     printf_stderr("*** You are running in headless mode.\n");
 #else
     Output(true, "Error: headless mode is not currently supported on this platform.\n");
     return 1;
 #endif
+
+#ifdef XP_MACOSX
+    // To avoid taking focus when running in headless mode immediately
+    // transition Firefox to a background application.
+    ProcessSerialNumber psn = { 0, kCurrentProcess };
+    OSStatus transformStatus = TransformProcessType(&psn, kProcessTransformToBackgroundApplication);
+    if (transformStatus != noErr) {
+      NS_ERROR("Failed to make process a background application.");
+      return 1;
+    }
+#endif
+
   }
 
   nsresult rv;
   ArgResult ar;
 
 #ifdef DEBUG
   if (PR_GetEnv("XRE_MAIN_BREAK"))
     NS_BREAK();