login_manager: Fix X server VT-switching regression.

The XServerRunner code added by 9009cb84 left SIGUSR1
blocked in the forked process that it uses to exec the X
server. This broke X's VT-switching code (e.g. Ctrl-Alt-F2),
which interestingly depends on SIGUSR1 (see
kbdLinuxVTSignalHandler() in hw/dmx/input/lnx-keyboard.c).

Also simplify some ugly code in XServerRunner and add an
explanation of how it works to its header.

BUG=chromium:380713
TEST=manually checked that ctrl-alt-f2 works again in dev
     mode and updated unit tests to check that no signals
     are blocked

Change-Id: Ib8c0b0552b1d5421cdea51fe782f845698ade7ae
Reviewed-on: https://chromium-review.googlesource.com/202591
Tested-by: Daniel Erat <derat@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Daniel Erat <derat@chromium.org>
3 files changed
tree: 0f9c9a9641aa0997e7e87752b46a6cdf3385c0db
  1. init/
  2. browser_job.cc
  3. browser_job.h
  4. browser_job_unittest.cc
  5. child_exit_handler.cc
  6. child_exit_handler.h
  7. child_exit_handler_unittest.cc
  8. child_job.cc
  9. child_job.h
  10. chrome_dev.conf
  11. chrome_setup.cc
  12. chrome_setup.h
  13. chromium_command_builder.cc
  14. chromium_command_builder.h
  15. chromium_command_builder_unittest.cc
  16. COMMIT-QUEUE.ini
  17. common.mk
  18. dbus_error_types.h
  19. dbus_signal_emitter.cc
  20. dbus_signal_emitter.h
  21. default_proxy
  22. device_local_account_policy_service.cc
  23. device_local_account_policy_service.h
  24. device_local_account_policy_service_unittest.cc
  25. device_policy_service.cc
  26. device_policy_service.h
  27. device_policy_service_unittest.cc
  28. fake_browser_job.cc
  29. fake_browser_job.h
  30. fake_child_process.cc
  31. fake_child_process.h
  32. fake_generated_key_handler.cc
  33. fake_generated_key_handler.h
  34. fake_generator_job.cc
  35. fake_generator_job.h
  36. file_checker.cc
  37. file_checker.h
  38. generator_job.cc
  39. generator_job.h
  40. inherit-review-settings-ok
  41. job_manager.h
  42. key_generator.cc
  43. key_generator.h
  44. key_generator_unittest.cc
  45. keygen.cc
  46. keygen_worker.cc
  47. keygen_worker.h
  48. LICENSE
  49. liveness_checker.h
  50. liveness_checker_impl.cc
  51. liveness_checker_impl.h
  52. liveness_checker_impl_unittest.cc
  53. login_metrics.cc
  54. login_metrics.h
  55. login_metrics_unittest.cc
  56. Makefile
  57. matchers.h
  58. mock_constructors.cc
  59. mock_dbus_signal_emitter.h
  60. mock_device_policy_service.h
  61. mock_file_checker.h
  62. mock_key_generator.h
  63. mock_liveness_checker.h
  64. mock_metrics.h
  65. mock_mitigator.h
  66. mock_nss_util.cc
  67. mock_nss_util.h
  68. mock_object_proxy.h
  69. mock_policy_key.h
  70. mock_policy_service.h
  71. mock_policy_store.h
  72. mock_process_manager_service.h
  73. mock_server.key
  74. mock_server.pem
  75. mock_session_manager.h
  76. mock_system_utils.cc
  77. mock_system_utils.h
  78. mock_user_policy_service_factory.h
  79. nss_util.cc
  80. nss_util.h
  81. nss_util_unittest.cc
  82. org.chromium.SessionManagerInterface.xml
  83. owner_key_loss_mitigator.cc
  84. owner_key_loss_mitigator.h
  85. OWNERS
  86. policy_key.cc
  87. policy_key.h
  88. policy_key_unittest.cc
  89. policy_service.cc
  90. policy_service.h
  91. policy_service_unittest.cc
  92. policy_store.cc
  93. policy_store.h
  94. policy_store_unittest.cc
  95. PRESUBMIT.cfg
  96. process_manager_service_interface.h
  97. regen_mitigator.cc
  98. regen_mitigator.h
  99. regen_mitigator_unittest.cc
  100. server_backed_state_key_generator.cc
  101. server_backed_state_key_generator.h
  102. server_backed_state_key_generator_unittest.cc
  103. session_manager_dbus_adaptor.cc
  104. session_manager_dbus_adaptor.h
  105. session_manager_impl.cc
  106. session_manager_impl.h
  107. session_manager_impl_unittest.cc
  108. session_manager_interface.h
  109. session_manager_main.cc
  110. session_manager_process_unittest.cc
  111. session_manager_service.cc
  112. session_manager_service.h
  113. session_manager_setup.sh
  114. session_manager_testrunner.cc
  115. SessionManager.conf
  116. stub_upstart_signal_emitter.h
  117. system_utils.h
  118. system_utils_impl.cc
  119. system_utils_impl.h
  120. system_utils_unittest.cc
  121. termination_handler.cc
  122. termination_handler.h
  123. termination_handler_unittest.cc
  124. upstart_signal_emitter.cc
  125. upstart_signal_emitter.h
  126. user_policy_service.cc
  127. user_policy_service.h
  128. user_policy_service_factory.cc
  129. user_policy_service_factory.h
  130. user_policy_service_unittest.cc
  131. util.cc
  132. util.h
  133. WATCHLISTS
  134. x_server_runner.cc
  135. x_server_runner.h
  136. x_server_runner_unittest.cc