# 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. --enable-features
#   is special-cased: session_manager combines all values that it sees from
#   multiple directives into a single argument.
#
#   Note --vmodule is ignored because ash-chrome uses build time vlogs by
#   default. To switch back to runtime vlog and use --vmodule, add the following
#   to gn args:
#     use_runtime_vlog = true
#
#   Otherwise, VLOGs need to be enabled by defining ENABLED_VLOG_LEVEL macro
#   in source code or BUILD.gn in chromium source code:
#     For a source cc file:
#       #undef ENABLED_VLOG_LEVEL
#       #define ENABLED_VLOG_LEVEL 1
#
#     For BUILD.gn:
#       source_set("build_target") {
#         ...
#         defines = ["ENABLED_VLOG_LEVEL=1"]
#       }
#
#     See also Chromium's "base/logging.h" and "LoggingTest.BuildTimeVLOG".
#
# !--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).
#
# To edit this file rootfs write protection must be removed:
# https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_mode.md#disable-verity
################################################################################
