# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

description   "Chrome OS user interface"
author        "chromium-os-dev@chromium.org"

# Note, the 'start on' line is modified by the chromeos-factoryinstall
# ebuild.  Please do not change it without also changing that
# reference.
#
# This job's post-stop script depends on cryptohomed being running;
# cryptohomed in turn depends on chapsd and dbus-daemon.  This job's
# stop condition uses a special stop job to keep those processes
# from terminating until after this job has cleaned up.  See the
# pre-shutdown job for more details.
# NB: Respawning is now handled by ui-respawn.conf, as the logic is
# more complex than upstart was designed to handle.
start on started boot-services and stopped cgroups
stop on starting pre-shutdown

# Enables chrome to renice UI critical threads (higher priority),
# background threads (lower priority), and to set the priority of
# realtime threads to real time. The limit will be applied to
# session_manager and all the spawned processes.
limit nice 40 40
limit rtprio 10 10

# Extend the grace period given to the session_manager before upstart decides
# it's gone unresponsive on job termination and must be killed. Chrome gets 12s
# (configured below) to shut down on devices with HDDs, so give a cushion.
kill timeout 20  # In seconds.

# Uncomment line below to output to VT02
#console output

# Directory where session manager logs are written and prefix of files there.
env UI_LOG_DIR=/var/log/ui
env UI_LOG_FILE=ui.LATEST

# Directory where session manager sets up container roots
env CONTAINER_ROOT_DIR=/run/containers

# Directory for renderer freezer.
env UI_FREEZER_CGROUP_DIR=/sys/fs/cgroup/freezer/ui
env CHROME_FREEZER_CGROUP_DIR=/sys/fs/cgroup/freezer/ui/chrome_renderers
env UI_CPU_CGROUP_DIR=/sys/fs/cgroup/cpu/ui

pre-start exec /usr/share/cros/init/ui-pre-start

# This may be used to wrap the Chrome executable within another command
# instead of calling it directly. The flag's value will be split on whitespace
# into an absolute path and arguments, after which session_manager will add
# Chrome's arguments. For example:
#
# env CHROME_COMMAND_FLAG="--chrome-command=/usr/local/bin/strace /opt/google/chrome/chrome"
# env CHROME_COMMAND_FLAG="--chrome-command=/usr/local/bin/gdbserver :1234 /opt/google/chrome/chrome"
env CHROME_COMMAND_FLAG

exec session_manager \
  "${CHROME_COMMAND_FLAG}" \
  >"${UI_LOG_DIR}/${UI_LOG_FILE}" 2>&1

# Assign session_manager and children(chrome) processes to the ui cgroup created
# above. Default cpu.shares is 1024. Android processes will be adjusted against
# 1024.
post-start script
  echo $(status | cut -f 4 -d ' ') > "${UI_CPU_CGROUP_DIR}/tasks"
  echo $(status | cut -f 4 -d ' ') > "${UI_FREEZER_CGROUP_DIR}/cgroup.procs"
end script

post-stop exec /usr/share/cros/init/ui-post-stop
