# Copyright 2016 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.
#
# This file may be modified to make local changes to the environment and command
# line that session_manager uses to run Chrome. It contains one directive per
# line, with the following forms available:
#
# --some-argument=/tmp/some file
#   Adds "--some-argument=/tmp/some file" to Chrome's command line. The entire
#   line will be passed as a single argument; do not include quotation marks
#   unless you want them to be passed verbatim to Chrome. --vmodule and
#   --enable-features are special-cased: session_manager combines all values
#   that it sees from multiple directives into a single argument.
#
# !--a-prefix
#   Removes all arguments beginning with "--a-prefix" from the command line.
#
# NAME=some value
#   Sets the environment variable "NAME" to the value "some value". As above, do
#   not quote the value unless you want the quotes to appear verbatim in the
#   variable's value.
#
# Directives are applied in the order they appear (i.e. to change a flag, first
# delete it and then re-add it with the desired value).
#
# To wrap Chrome within another command (e.g. strace), see CHROME_COMMAND_FLAG
# in /etc/init/ui.conf.
#
# Note: Options enabled here might not show up in chrome://flags.  Consult the
# chrome://version page to verify the full command line flags used at runtime.
#
################################################################################
# This file should only be modified by hand by developers on their local
# dev-mode devices; do not check in changes to it or write code that modifies
# it. Permanent changes to Chrome's configuration, including conditionally-set
# flags, should be made in session_manager (see chrome_setup.h).
################################################################################

