# 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.
#
# !--a-prefix
#   Removes all arguments beginning with "--a-prefix" from the command line.
#
# vmodule=foo=1
#   Adds a "foo=1" pattern to the --vmodule argument. Multiple patterns may be
#   listed on separate "vmodule=" lines. A --vmodule argument containing all of
#   the requested patterns will be automatically constructed and passed to
#   Chrome; do not explicitly add a "--vmodule=" line.
#
# enable-features=foo
#   Adds a "foo" feature to the --enable-features argument. Multiple features my
#   be listed on separate "enable-features" lines. An --enable-features argument
#   containing all of the requested patterns will be automatically constructed
#   and passed to Chrome; do not explicitly add a "--enable-features=" 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.
#
################################################################################
# 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).
################################################################################

