1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136
  137
  138
  139
  140
  141
  142

headless / public / switches.h [blame]

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef HEADLESS_PUBLIC_SWITCHES_H_
#define HEADLESS_PUBLIC_SWITCHES_H_

namespace headless {
namespace switches {

// All switches should be in alphabetical order.

// Specifies Accept-Language to send to servers and expose to JavaScript via the
// navigator.language DOM property. language[-country] where language is the 2
// letter code from ISO-639.
inline constexpr char kAcceptLang[] = "accept-lang";

// A comma-separated, case-insenitive list of video codecs to allow. If
// specified, codecs not matching the list will not be used. '*' will match
// everything,
// '-' at the start of an entry means codec is disallowed. First entry that
// matches determines the outcome. Codec names are as returned by
// `GetCodecName()` in media/base/video_codecs.cc
inline constexpr char kAllowVideoCodecs[] = "allow-video-codecs";

// Allowlist for Negotiate Auth servers.
inline constexpr char kAuthServerAllowlist[] = "auth-server-allowlist";

// If true, then all pop-ups and calls to window.open will fail.
inline constexpr char kBlockNewWebContents[] = "block-new-web-contents";

// The directory breakpad should store minidumps in.
inline constexpr char kCrashDumpsDir[] = "crash-dumps-dir";

// A meta flag. This sets a number of flags which put the browser into
// deterministic mode where begin frames should be issued over DevToolsProtocol
// (experimental).
inline constexpr char kDeterministicMode[] = "deterministic-mode";

// Whether cookies stored as part of user profile are encrypted.
inline constexpr char kDisableCookieEncryption[] = "disable-cookie-encryption";

// Disable crash reporter for headless. It is enabled by default in official
// builds.
inline constexpr char kDisableCrashReporter[] = "disable-crash-reporter";

// Disables lazy loading of images and frames.
inline constexpr char kDisableLazyLoading[] = "disable-lazy-loading";

// Use a specific disk cache location, rather than one derived from the
// UserDatadir.
inline constexpr char kDiskCacheDir[] = "disk-cache-dir";

// Enable Back Forward Cache support
inline constexpr char kEnableBackForwardCache[] = "enable-bfcache";

// Whether or not begin frames should be issued over DevToolsProtocol
// (experimental).
inline constexpr char kEnableBeginFrameControl[] = "enable-begin-frame-control";

// Enable crash reporter for headless.
inline constexpr char kEnableCrashReporter[] = "enable-crash-reporter";

// Enable hardware GPU support.
// Headless uses swiftshader by default for consistency across headless
// environments. This flag just turns forcing of swiftshader off and lets
// us revert to regular driver selection logic. Alternatively, specific
// drivers may be forced with --use-gl or --use-angle. Nethier approach
// guarantees that hardware GPU support will be enabled, as this is still
// conditional on headless having access to X display etc.
inline constexpr char kEnableGPU[] = "enable-gpu";

// Allows overriding the list of restricted ports by passing a comma-separated
// list of port numbers.
inline constexpr char kExplicitlyAllowedPorts[] = "explicitly-allowed-ports";

// Sets font render hinting when running headless, affects Skia rendering and
// whether glyph subpixel positioning is enabled.
// Possible values: none|slight|medium|full|max. Default: full.
inline constexpr char kFontRenderHinting[] = "font-render-hinting";

// Forces each navigation to use a new BrowsingInstance.
inline constexpr char kForceNewBrowsingInstance[] =
    "force-new-browsing-instance";

// Force reporting destination attested for headless shell.
inline constexpr char kForceReportingDestinationAttested[] =
    "force-reporting-destination-attested";

// Forces Incognito mode even if user data directory is specified using the
// --user-data-dir switch.
inline constexpr char kIncognito[] = "incognito";

// Do not use system proxy configuration service.
inline constexpr char kNoSystemProxyConfigService[] =
    "no-system-proxy-config-service";

// Specifies which encryption storage backend to use. Possible values are
// kwallet, kwallet5, gnome-libsecret, basic. Any other value will lead to
// Chrome detecting the best backend automatically.
// TODO(crbug.com/40449930): Once PasswordStore no longer uses KWallet for
// storing passwords, rename this flag to stop referencing passwords. Do not
// rename it sooner, though; developers and testers might rely on it keeping
// large amounts of testing passwords out of their KWallets.
inline constexpr char kPasswordStore[] = "password-store";

// Specifies a list of hosts for whom we bypass proxy settings and use direct
// connections. Ignored unless --proxy-server is also specified. This is a
// comma-separated list of bypass rules. See:
// "net/proxy_resolution/proxy_bypass_rules.h" for the format of these rules.
inline constexpr char kProxyBypassList[] = "proxy-bypass-list";

// Uses a specified proxy server, overrides system settings. This switch only
// affects HTTP and HTTPS requests.
inline constexpr char kProxyServer[] = "proxy-server";

// Headless screen info in the format: {0,0 800x600},{800,0 600x800}.
// See //headless/lib/browser/headless_screen_info.h for more details.
inline constexpr char kScreenInfo[] = "screen-info";

// A string used to override the default user agent with a custom one.
inline constexpr char kUserAgent[] = "user-agent";

// Directory where the browser stores the user profile. Note that if this switch
// is added, the session will no longer be Incognito, unless Incognito mode is
// forced with --incognito switch.
inline constexpr char kUserDataDir[] = "user-data-dir";

// Prints version information and quits.
inline constexpr char kVersion[] = "version";

// Sets the initial window size. Provided as string in the format "800,600".
// This also defines the headless screen size in lieu of --screen-info.
inline constexpr char kWindowSize[] = "window-size";

// No! Please don't just add your switches at the end of the list.
// Please maintain the switch list sorted.

}  // namespace switches
}  // namespace headless

#endif  // HEADLESS_PUBLIC_SWITCHES_H_