1// Copyright 2014 The Chromium Authors 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5syntax = "proto2"; 6 7option optimize_for = LITE_RUNTIME; 8option java_package = "org.chromium.components.metrics"; 9 10option java_outer_classname = "SystemProfileProtos"; 11 12package metrics; 13 14import "extension_install.proto"; 15 16// Stores information about the user's brower and system configuration. 17// Almost all the fields should be populated on every upload. (The only 18// exception is some fields in the stability section that are only uploaded 19// once per browsing session, usually shortly after startup.) 20// Next tag: 46 21message SystemProfileProto { 22 // The time when the client was compiled/linked, in seconds since the epoch. 23 optional int64 build_timestamp = 1; 24 25 // A version number string for the application. 26 // Most commonly this is the browser version number found in a user agent 27 // string, and is typically a 4-tuple of numbers separated by periods. In 28 // cases where the user agent version might be ambiguous (example: Linux 64- 29 // bit build, rather than 32-bit build, or a Windows version used in some 30 // special context, such as ChromeFrame running in IE), then this may include 31 // some additional postfix to provide clarification not available in the UA 32 // string. 33 // 34 // An example of a browser version 4-tuple is "5.0.322.0". Currently used 35 // postfixes are: 36 // 37 // "-64": a 64-bit build 38 // "-F": Chrome is running under control of ChromeFrame 39 // "-devel": this is not an official build of Chrome 40 // 41 // A full version number string could look similar to: 42 // "5.0.322.0-F-devel". 43 // 44 // This value, when available, is more trustworthy than the UA string 45 // associated with the request; and including the postfix, may be more 46 // specific. 47 optional string app_version = 2; 48 49 // The application can create logs about previous versions. In particular the 50 // initial stability log refers to the previous run, which can be an older 51 // version. This field is set by the client when the log being written has an 52 // app_version that's different than the version of the app writing the log. 53 // Note that the version uploading the log may also be different. 54 optional string log_written_by_app_version = 40; 55 56 // The brand code or distribution tag assigned to a partner, if available. 57 // Windows, Mac, iOS, and CrOS clients may have a brand code. 58 optional string brand_code = 12; 59 60 // The possible channels for an installation, from least to most stable. 61 enum Channel { 62 CHANNEL_UNKNOWN = 0; // Unknown channel -- perhaps an unofficial build? 63 CHANNEL_CANARY = 1; 64 CHANNEL_DEV = 2; 65 CHANNEL_BETA = 3; 66 CHANNEL_STABLE = 4; 67 } 68 optional Channel channel = 10; 69 70 // True for a client following updates on the extended stable channel; 71 // see go/chrome-extended-dd. 72 optional bool is_extended_stable_channel = 36 [default = false]; 73 74 // True if Chrome build is instrumented (e.g. built with ASAN instrumentation 75 // or with DCHECKs enabled). 76 // This field was renamed from |is_asan_build| to reflect its actual meaning. 77 optional bool is_instrumented_build = 20 [default = false]; 78 79 // For Chrome, the date the user enabled UMA, in seconds since the epoch. 80 // If the user has toggled the UMA enabled state multiple times, this will 81 // be the most recent date on which UMA was enabled. 82 // For privacy, this is rounded to the nearest hour (M30+). 83 // For WebView, the field stores the date "January 1st, 2014 00:00:00 UTC" 84 // if the user opted into metrics collection before WebView started tracking 85 // this information. Otherwise, the field value should correctly reflect the 86 // first startup for this app after the user opted into metrics collection. 87 optional int64 uma_enabled_date = 3; 88 89 // The time when the client was installed, in seconds since the epoch. 90 // For privacy, this is rounded to the nearest hour. 91 optional int64 install_date = 16; 92 93 // A message about the cloned install detection that helps improve data 94 // quality by identifying potential VMs and bots. This message will be 95 // set in every record after the client has ever been reset due to cloned 96 // install detection. However, the `cloned_from_client_id` 97 // field will only be set in the resetting session because this is not 98 // persisted in the local prefs. 99 // Next tag: 5 100 message ClonedInstallInfo { 101 // The latest timestamp we reset a cloned client’s client id, in seconds 102 // since the epoch. For privacy, this is rounded to the nearest hour. 103 optional int64 last_timestamp = 1; 104 105 // The client_id that this client is cloned from. This field is tied to the 106 // cloned install detector only; any other way of resetting client_id 107 // doesn't touch this field. This field is only reported in the 108 // resetting session. 109 optional fixed64 cloned_from_client_id = 2; 110 111 // The first timestamp when we reset a cloned client’s client id, in seconds 112 // since the epoch. For privacy, this is rounded to the nearest hour. 113 optional int64 first_timestamp = 3; 114 115 // The number of times this client has been reset due to cloned install. 116 // Increment by one per reset happens. 117 optional int32 count = 4; 118 } 119 optional ClonedInstallInfo cloned_install_info = 39; 120 121 // The non-identifying low entropy source value. This value seeds the 122 // pseudorandom generator which picks experimental groups. Clients only report 123 // the value that they used for picking experimental groups on startup which 124 // means this value won't be changed within the session even even if the low 125 // entropy source is reset (e.g. via the UMA checkbox) because group 126 // assignments won't be changed until restart. 127 optional int32 low_entropy_source = 31; 128 129 // The old low entropy value. This value is thought to be biased in the wild, 130 // and is no longer used for experiments requiring low entropy. Clients which 131 // already have an "old" value continue incorporating it into the high entropy 132 // source, to avoid changing those group assignments. New clients only have 133 // the new source. 134 optional int32 old_low_entropy_source = 32; 135 136 // A pseudo low entropy value. The actual low_entropy_source value is used for 137 // assignment to experiment arms, and this use may cause drift over time (for 138 // example, if a bad experiment arm drives away some users permanently.) This 139 // pseudo low entropy value is generated identically to low_entropy_source, 140 // but it is generated with a different randomization seed and is not used for 141 // experiment randomization. Consequently, it can be used in statistical 142 // validation to answer the question of how our data would be distributed if 143 // we didn't have to worry about low entropy source drift. 144 optional int32 pseudo_low_entropy_source = 37; 145 146 // The user's selected application locale, i.e. the user interface language. 147 // The locale includes a language code and, possibly, also a country code, 148 // e.g. "en-US". 149 optional string application_locale = 4; 150 151 // Hashes of command line keys used in the browser session when the MetricsLog 152 // is created. This takes into account the command line switches that were 153 // used when launching the session, as well as any modifications made to them, 154 // for example via CommandLine::AppendSwitch and CommandLine::RemoveSwitch. 155 // Values are the lower 32-bit of SHA1 hash in little-endian. 156 repeated fixed32 command_line_key_hash = 38 [packed = true]; 157 158 // Information on the user's operating system. 159 // Next tag: 11 160 message OS { 161 // The user's operating system. This should be one of: 162 // - 'Android' 163 // - 'Windows NT' 164 // - 'CrOS' (as of 07/2020) 165 // - 'Lacros' (the Lacros browser runs on Chrome OS, but reports a special 166 // OS name to differentiate itself from the built-in ash 167 // browser + window manager binary.) 168 // - 'Linux' (includes ChromeOS prior to 07/2020) 169 // - 'iOS' (iOS versions >= 9) 170 // - 'iPhone OS' (iOS versions <= 8) 171 // - 'iPadOS' 172 // - 'Mac OS X' 173 optional string name = 1; 174 175 // The version of the OS. The meaning of this field is OS-dependent. 176 optional string version = 2; 177 178 // The fingerprint of the build. This field is used only on Android. 179 optional string build_fingerprint = 3; 180 181 // Whether the version of iOS appears to be "jailbroken". This field is 182 // used only on iOS. Chrome for iOS detects whether device contains a 183 // DynamicLibraries/ directory. It's a necessary but insufficient indicator 184 // of whether the operating system has been jailbroken. 185 // Deprecated 01/2023. This was never set. 186 optional bool DEPRECATED_is_jailbroken = 4 [deprecated = true]; 187 188 // The build number for the OS version. The same OS version may have a 189 // different build number. The meaning of this field is OS-dependent. 190 optional string build_number = 5; 191 192 // The version of the kernel. Linux based operating systems, such as 193 // ChromeOS and Android, have a kernel version that the OS release version 194 // was built with that differs from the version field above. 195 optional string kernel_version = 6; 196 197 // Information on ChromeOS ARC runtime. This is collected to ease analysis 198 // on ARC-specific metrics, since this info varies by different boards / 199 // build configs / releases. 200 // Next tag: 2 201 message Arc { 202 // Android release number from build.prop "ro.build.version.release", e.g. 203 // "7.1.1" for N and "9" for P. 204 optional string release = 1; 205 } 206 // Available since M76. This field is reported if current build supports 207 // ARC, regardless of whether ARC is enabled or not. Check "Arc.State" 208 // histogram to determine if ARC is enabled for current report. 209 // Logged on ChromeOS only. 210 optional Arc arc = 7; 211 212 // Data related to system-level dark mode configuration. This is currently 213 // only uploaded on Android. "*_APP" variants are included to reflect when 214 // the user overrides the system configuration within the browser 215 enum DarkModeState { 216 UNKNOWN = 0; 217 218 // Both the system and the browser are in dark mode. 219 DARK_MODE_SYSTEM = 1; 220 221 // The browser is in dark mode, but the state of the system either cannot 222 // be determined or has been overridden by the user. 223 DARK_MODE_APP = 2; 224 225 // Both the system and the browser are in light mode. 226 LIGHT_MODE_SYSTEM = 3; 227 228 // The browser is in light mode, but the state of the system either cannot 229 // be determined or has been overridden by the user. 230 LIGHT_MODE_APP = 4; 231 } 232 optional DarkModeState dark_mode_state = 8 [default = UNKNOWN]; 233 234 // The value returned by the "XDG_SESSION_TYPE" environment variable, as 235 // translated to a base::nix::SessionType, this field is only set on Linux. 236 // Some features are enabled/disabled depending on this value. 237 enum XdgSessionType { 238 UNSET = 0; 239 OTHER_SESSION_TYPE = 1; 240 UNSPECIFIED = 2; 241 TTY = 3; 242 X11 = 4; 243 WAYLAND = 5; 244 MIR = 6; 245 } 246 optional XdgSessionType xdg_session_type = 9; 247 248 // The value returned by the "XDG_CURRENT_DESKTOP" environment variable, as 249 // translated to a base::nix::DesktopEnvironment. Note that all KDE values 250 // from that enum are bucketed together. This field is only set on Linux. 251 // Some bugs reproduce only in particular desktop environments. 252 enum XdgCurrentDesktop { 253 OTHER = 0; 254 CINNAMON = 1; 255 DEEPIN = 2; 256 GNOME = 3; 257 KDE = 4; 258 PANTHEON = 5; 259 UKUI = 6; 260 UNITY = 7; 261 XFCE = 8; 262 LXQT = 9; 263 } 264 optional XdgCurrentDesktop xdg_current_desktop = 10; 265 } 266 optional OS os = 5; 267 268 // Information on the user's hardware. 269 // Next tag: 28 270 message Hardware { 271 // OS CPU architecture. Common options are: x86, x86_64, arm64, armv7, 272 // armv7l, armv8l and aarch64. 273 // Note: On Windows, this is not the true OS CPU architecture in the case 274 // of running under emulation (e.g. on Windows on ARM, which would report 275 // either x86 or x86_64, depending on the bitness of the exe being run). 276 // Started being correctly recorded on iOS in M90: crrev/c/2723012. 277 optional string cpu_architecture = 1; 278 279 // Browser process CPU architecture. Will be different from 280 // `cpu_architecture` in the case where Chromium runs non-natively (e.g. 281 // macOS Rosetta or Arm Windows). One of four values: x86, x86_64, ARM, 282 // ARM_64. Added in M90. 283 optional string app_cpu_architecture = 21; 284 285 // The amount of RAM present on the system, in megabytes. 286 optional int64 system_ram_mb = 2; 287 288 // The base memory address that chrome.dll was loaded at. 289 // (Logged only on Windows.) 290 optional int64 dll_base = 3; 291 292 // The hardware_class describes the current machine model, e.g. "MacPro1,1" 293 // on Mac, "iPhone9,3" on iOS or "Nexus 5" on Android. Implemented on OS X, 294 // iOS, Android, Chrome OS. 295 // 296 // The iOS device hardware class was added in Chrome M60 release. Prior 297 // to that, device hardware class was incorrectly recorded in 298 // cpu_architecture field. 299 // 300 // For Chrome OS, prior to M69, this field had the value that is 301 // currently in |full_hardware_class| field. In M69+, this contains the 302 // board name only. E.G. "CELES", "VEYRON_MINNIE". 303 304 optional string hardware_class = 4; 305 306 // This field is only sent on Chrome OS. The full hardware class is a unique 307 // string associated with each Chrome OS device product revision generally 308 // assigned at hardware qualification time. The hardware class effectively 309 // identifies the configured system components such as CPU, WiFi adapter, 310 // etc. 311 // 312 // An example of such a hardware class is "IEC MARIO PONY 6101". An 313 // internal database associates this hardware class with the qualified 314 // device specifications including OEM information, schematics, hardware 315 // qualification reports, test device tags, etc. 316 optional string full_hardware_class = 18; 317 318 // This field is only sent on Chrome OS devices with cellular support. 319 // This represents the variant of cellular modem present on the device. 320 optional string cellular_device_variant = 24; 321 322 // The number of physical screens. 323 optional int32 screen_count = 5; 324 325 // The screen dimensions of the primary screen, in pixels. 326 optional int32 primary_screen_width = 6; 327 optional int32 primary_screen_height = 7; 328 329 // The device scale factor of the primary screen. 330 optional float primary_screen_scale_factor = 12; 331 332 // Max DPI for any attached screen. (Windows only) 333 optional float max_dpi_x = 9; 334 optional float max_dpi_y = 10; 335 336 // The form factor of the device. Added in M101, foldable added in M120. 337 // Android devices can be phone, tablet, TV, automotive or foldable. iOS 338 // devices can be phone or tablet. For Windows, Mac, ChromeOS, Lacros, and 339 // Linux, the desktop form factor is always used. 340 enum FormFactor { 341 FORM_FACTOR_UNKNOWN = 0; 342 FORM_FACTOR_DESKTOP = 1; 343 FORM_FACTOR_PHONE = 2; 344 FORM_FACTOR_TABLET = 3; 345 FORM_FACTOR_TV = 4; 346 FORM_FACTOR_MEET_DEVICE = 5; 347 FORM_FACTOR_AUTOMOTIVE = 6; 348 FORM_FACTOR_FOLDABLE = 7; 349 } 350 optional FormFactor form_factor = 22; 351 352 // Information on the CPU obtained by CPUID. 353 message CPU { 354 // A 12 character string naming the vendor, e.g. "GenuineIntel". 355 optional string vendor_name = 1; 356 357 // The signature reported by CPUID (from EAX). 358 optional uint32 signature = 2; 359 360 // Number of logical processors/cores on the current machine, which 361 // includes hyperthreaded cores. 362 optional uint32 num_cores = 3; 363 364 // Whether the CPU is running in a hypervisor. 365 optional bool is_hypervisor = 4; 366 } 367 optional CPU cpu = 13; 368 369 // Type of BIOS (can change at each boot). 370 enum BiosType { 371 BIOS_TYPE_UNKNOWN = 0; 372 // Legacy BIOS or UEFI with CSM mode. 373 BIOS_TYPE_LEGACY = 1; 374 // BIOS is UEFI and booted into UEFI mode. 375 BIOS_TYPE_UEFI = 2; 376 } 377 // Motherboard information. 378 message Motherboard { 379 // Manufacturer for the motherboard. 380 optional string manufacturer = 1; 381 // Model for the motherboard. 382 optional string model = 2; 383 // Manufacturer for the BIOS. 384 optional string bios_manufacturer = 3; 385 // Version of the BIOS currently installed. 386 optional string bios_version = 4; 387 // What mode of BIOS is booted. 388 optional BiosType bios_type = 5; 389 } 390 optional Motherboard motherboard = 25; 391 392 // Information on the GPU 393 message Graphics { 394 // The GPU manufacturer's vendor id. 395 optional uint32 vendor_id = 1; 396 397 // The GPU manufacturer's device id for the chip set. 398 optional uint32 device_id = 2; 399 400 // The driver version on the GPU. 401 optional string driver_version = 3; 402 403 // The GL_VENDOR string. An example of a gl_vendor string is 404 // "Imagination Technologies". "" if we are not using OpenGL. 405 optional string gl_vendor = 6; 406 407 // The GL_RENDERER string. An example of a gl_renderer string is 408 // "PowerVR SGX 540". "" if we are not using OpenGL. 409 optional string gl_renderer = 7; 410 } 411 optional Graphics gpu = 8; 412 413 // Whether the internal display produces touch events. Omitted if unknown. 414 // Logged on ChromeOS only. 415 optional bool internal_display_supports_touch = 14; 416 417 // Internal storage device information on ChromeOS. Added in M94. 418 // Next tag: 9 419 message InternalStorageDevice { 420 // Id of the storage device manufacturer. 421 // Can be vendor_id (for NVMe, 32bit), manfid (for eMMC, 16bit, since 422 // M113), oemid (for eMMC, 16bit, before M113), JEDEC manfid (for UFS, 423 // 16bit) etc. depending on the device type. 424 optional uint32 vendor_id = 1; 425 426 // Id of the storage device product. 427 // Can be product_id (for NVMe, 32bit), PNM (for eMMC, 48bit), hashed 428 // model name (for UFS, 32bit) etc. depending on the device type. 429 optional uint64 product_id = 2; 430 431 // Revision of the storage device product. 432 // Can be PCIe rev (for NVMe, 8bit), PRV(for eMMC, 8bit) etc. depending on 433 // the device type. 434 optional uint32 revision = 3; 435 436 // Storage Device model. Comes from /sys/block/<device>/device/model. 437 optional string model = 4; 438 439 // Storage Device capacity in MB. 440 optional uint32 size_mb = 5; 441 442 // 8 byte FW revision of a storage device. Usually a string, but may 443 // contain non-printable characters. 444 optional uint64 firmware_version = 6; 445 446 // Type of the storage device interface. 447 // TYPE_UNKNOWN signifies an error on population side. 448 enum Type { 449 TYPE_UNKNOWN = 0; 450 TYPE_EMMC = 1; 451 TYPE_NVME = 2; 452 TYPE_UFS = 3; 453 TYPE_SD_EXPRESS_INTERNAL = 4; 454 } 455 optional Type type = 7; 456 457 // Purpose defines how the OS uses the device. 458 // PURPOSE_UNKNOWN signifies an error on population side. 459 enum Purpose { 460 PURPOSE_UNKNOWN = 0; 461 PURPOSE_BOOT = 1; 462 PURPOSE_SWAP = 2; 463 PURPOSE_BOOT_SWAP = 3; 464 } 465 optional Purpose purpose = 8; 466 } 467 // List of internal storage devices on a Chrome OS device. 468 repeated InternalStorageDevice internal_storage_devices = 20; 469 470 // Drive messages are currently logged on Windows 7+, iOS, and Android. 471 message Drive { 472 // Whether this drive incurs a time penalty when randomly accessed. This 473 // should be true for spinning disks but false for SSDs or other 474 // flash-based drives. 475 optional bool has_seek_penalty = 1; 476 } 477 // The drive that the application executable was loaded from. 478 optional Drive app_drive = 16; 479 // The drive that the current user data directory was loaded from. 480 optional Drive user_data_drive = 17; 481 482 // Type of TPM on the device. This field is only filled in on ChromeOS 483 // devices (both CrOS and LaCrOS platforms). This includes Chromebooks with 484 // TPM1.2 or GSC (cr50 and ti50), flex devices (ChromeOS installed on 485 // devices with other OS) which has TPM type "runtime selection", and lastly 486 // generic TPM2 devices that use TPM2 chips that aren't manufactured by 487 // Google. 488 enum TpmType { 489 TPM_TYPE_UNKNOWN = 0; 490 TPM_TYPE_1 = 1; 491 TPM_TYPE_CR50 = 2; 492 TPM_TYPE_TI50 = 3; 493 TPM_TYPE_RUNTIME_SELECTION = 4; 494 TPM_TYPE_GENERIC_2 = 5; 495 } 496 optional TpmType tpm_type = 23; 497 498 // Firmware version of the TPM on the device. This field is only filled in 499 // on ChromeOS devices (both CrOS and LaCrOS platforms). 500 optional uint64 tpm_firmware_version = 26; 501 502 // RW Firmware version of the TPM on the device. This field is only filled 503 // in on ChromeOS devices. 504 optional string tpm_rw_firmware_version = 27; 505 } 506 optional Hardware hardware = 6; 507 508 // Information about the network connection. 509 // Next tag: 9 510 message Network { 511 // Set to true if connection_type changed during the lifetime of the log. 512 optional bool connection_type_is_ambiguous = 1; 513 514 // Derived from net::NetworkChangeNotifier::ConnectionType translated 515 // through NetworkMetricsProvider::GetConnectionType. 516 enum ConnectionType { 517 CONNECTION_UNKNOWN = 0; 518 CONNECTION_ETHERNET = 1; 519 CONNECTION_WIFI = 2; 520 CONNECTION_2G = 3; 521 CONNECTION_3G = 4; 522 CONNECTION_4G = 5; 523 CONNECTION_BLUETOOTH = 6; 524 CONNECTION_NONE = 7; 525 // As an alternative to connection_type_is_ambiguous above, 526 // CONNECTION_AMBIGUOUS can be used for connection_type instead. This is 527 // to be used in logs processing as a more convenient way to manage the 528 // ambiguous case when breaking down stats by connection_type. 529 CONNECTION_AMBIGUOUS = 8; 530 CONNECTION_5G = 9; 531 } 532 // The connection type according to NetworkChangeNotifier. 533 optional ConnectionType connection_type = 2; 534 535 // Set to true if wifi_phy_layer_protocol changed during the lifetime of the 536 // log. 537 optional bool wifi_phy_layer_protocol_is_ambiguous = 3; 538 539 // See net::WifiPHYLayerProtocol. 540 enum WifiPHYLayerProtocol { 541 WIFI_PHY_LAYER_PROTOCOL_NONE = 0; 542 WIFI_PHY_LAYER_PROTOCOL_ANCIENT = 1; 543 WIFI_PHY_LAYER_PROTOCOL_A = 2; 544 WIFI_PHY_LAYER_PROTOCOL_B = 3; 545 WIFI_PHY_LAYER_PROTOCOL_G = 4; 546 WIFI_PHY_LAYER_PROTOCOL_N = 5; 547 WIFI_PHY_LAYER_PROTOCOL_UNKNOWN = 6; 548 WIFI_PHY_LAYER_PROTOCOL_AC = 7; 549 WIFI_PHY_LAYER_PROTOCOL_AD = 8; 550 WIFI_PHY_LAYER_PROTOCOL_AX = 9; 551 } 552 // The physical layer mode of the associated wifi access point, if any. 553 optional WifiPHYLayerProtocol wifi_phy_layer_protocol = 4; 554 555 // Derived from net::NetworkQualityEstimator::EffectiveConnectionType 556 // translated through NetworkMetricsProvider::GetConnectionType. 557 enum EffectiveConnectionType { 558 EFFECTIVE_CONNECTION_TYPE_UNKNOWN = 0; 559 // Deprecated: Specifies that the connection_type changed during the 560 // lifetime of the log. 561 DEPRECATED_EFFECTIVE_CONNECTION_TYPE_AMBIGUOUS = 1 [deprecated = true]; 562 EFFECTIVE_CONNECTION_TYPE_OFFLINE = 2; 563 EFFECTIVE_CONNECTION_TYPE_SLOW_2G = 3; 564 EFFECTIVE_CONNECTION_TYPE_2G = 4; 565 EFFECTIVE_CONNECTION_TYPE_3G = 5; 566 EFFECTIVE_CONNECTION_TYPE_4G = 6; 567 } 568 569 // The minimum and maximum values of the effective connection type enum 570 // during the lifetime of the log according to net::NetworkQualityEstimator. 571 // EffectiveConnectionType is the connection type whose typical performance 572 // is most similar to the measured performance of the network in use. In 573 // many cases, the "effective" connection type and the actual type of 574 // connection in use are the same, but often a network connection performs 575 // significantly differently, usually worse, from its expected capabilities. 576 optional EffectiveConnectionType min_effective_connection_type = 7; 577 optional EffectiveConnectionType max_effective_connection_type = 8; 578 } 579 optional Network network = 13; 580 581 // Information on the Google Update install that is managing this client. 582 message GoogleUpdate { 583 // Whether the Google Update install is system-level or user-level. 584 optional bool is_system_install = 1; 585 586 // The date at which Google Update last started performing an automatic 587 // update check, in seconds since the Unix epoch. 588 optional int64 last_automatic_start_timestamp = 2; 589 590 // The date at which Google Update last successfully sent an update check 591 // and received an intact response from the server, in seconds since the 592 // Unix epoch. (The updates don't need to be successfully installed.) 593 optional int64 last_update_check_timestamp = 3; 594 595 // Describes a product being managed by Google Update. (This can also 596 // describe Google Update itself.) 597 message ProductInfo { 598 // The current version of the product that is installed. 599 optional string version = 1; 600 601 // The date at which Google Update successfully updated this product, 602 // stored in seconds since the Unix epoch. This is updated when an update 603 // is successfully applied, or if the server reports that no update 604 // is available. 605 optional int64 last_update_success_timestamp = 2; 606 607 // The result reported by the product updater on its last run. 608 enum InstallResult { 609 INSTALL_RESULT_SUCCESS = 0; 610 INSTALL_RESULT_FAILED_CUSTOM_ERROR = 1; 611 INSTALL_RESULT_FAILED_MSI_ERROR = 2; 612 INSTALL_RESULT_FAILED_SYSTEM_ERROR = 3; 613 INSTALL_RESULT_EXIT_CODE = 4; 614 } 615 optional InstallResult last_result = 3; 616 617 // The error code reported by the product updater on its last run. This 618 // will typically be a error code specific to the product installer. 619 optional int32 last_error = 4; 620 621 // The extra error code reported by the product updater on its last run. 622 // This will typically be a Win32 error code. 623 optional int32 last_extra_error = 5; 624 } 625 optional ProductInfo google_update_status = 4; 626 optional ProductInfo client_status = 5; 627 } 628 optional GoogleUpdate google_update = 11; 629 630 // Figures that can be used to generate application stability metrics. 631 // All values are counts of events since the last time that these 632 // values were reported. 633 // Next tag: 32 634 message Stability { 635 // Total amount of time that the program was running, in seconds, 636 // since the last time a log was recorded, as measured using a client-side 637 // clock implemented via TimeTicks, which guarantees that it is monotonic 638 // and does not jump if the user changes their clock. The TimeTicks 639 // implementation also makes the clock not count time the computer is 640 // suspended. 641 optional int64 incremental_uptime_sec = 1; 642 643 // Total amount of time that the program was running, in seconds, 644 // since startup, as measured using a client-side clock implemented 645 // via TimeTicks, which guarantees that it is monotonic and does not 646 // jump if the user changes their clock. The TimeTicks implementation 647 // also makes the clock not count time the computer is suspended. 648 // This field was added for M-35. 649 optional int64 uptime_sec = 23; 650 651 // Logged on Android only as of late Q2 2022. Used by only Android WebView. 652 // Other platforms should use Stability.Counts2. 653 optional int32 page_load_count = 2; 654 655 // Logged on Android only as of Q2 2022. Used by only Android WebView. Other 656 // platforms should use Stability.Counts2. 657 optional int32 renderer_launch_count = 26; 658 659 // Number of times the browser has crashed while logged in as the "other 660 // user" (guest) account. 661 // Logged on ChromeOS only. 662 optional int32 other_user_crash_count = 7; 663 664 // Number of times the kernel has crashed. 665 // Logged on ChromeOS only. 666 optional int32 kernel_crash_count = 8; 667 668 // Number of times the system has shut down uncleanly. 669 // Logged on ChromeOS only. 670 optional int32 unclean_system_shutdown_count = 9; 671 672 // All the remaining fields in the Stability are recorded at most once per 673 // client session. 674 675 // The number of times the program was launched since the last time metrics 676 // was uploaded. For the initial metrics upload (right after startup), this 677 // will often be equal to 1. However, it is possible that Chrome was unable 678 // to upload stability metrics for previous launches (e.g. due to crashing 679 // early during startup), making this value greater than 1. For subsequent 680 // metrics uploads, this value will be 0. 681 // 682 // Logged on Android only as of Q1 2022. Used by only Android WebView. Other 683 // platforms should use Stability.Counts2. 684 optional int32 launch_count = 15; 685 // Android only. The number of times Chrome didn't exit cleanly and the GMS 686 // Core version has changed from the last session. This is in addition to 687 // |crash_count| in which we exclude unclean exits that are likely caused by 688 // GMS Core updates. 689 optional int32 crash_count_due_to_gms_core_update = 30; 690 691 // Whether the metrics being reported are from a previous run picked up via 692 // the left-over memory mapped files. 693 optional bool from_previous_run = 29; 694 } 695 optional Stability stability = 8; 696 697 // Description of a field trial or experiment that the user is currently 698 // enrolled in. 699 // All metrics reported in this upload can potentially be influenced by the 700 // field trial. 701 message FieldTrial { 702 // The name of the field trial, as a 32-bit identifier. 703 // Currently, the identifier is a hash of the field trial's name. 704 optional fixed32 name_id = 1; 705 706 // The user's group within the field trial, as a 32-bit identifier. 707 // Currently, the identifier is a hash of the group's name. 708 optional fixed32 group_id = 2; 709 } 710 repeated FieldTrial field_trial = 9; 711 712 // Seed version from variations_seed.proto used to instantiate FieldTrials 713 // for this session. 714 optional string variations_seed_version = 28; 715 716 // Whether the client_id in the log matches the client_id we used to assign 717 // field trials. 718 optional bool client_id_was_used_for_trial_assignment = 33; 719 720 // The unhashed client_id for this report. This is a uuid in its canonical 721 // textual representation in the form 8-4-4-4-12 for a total of 36 characters. 722 // Used to simulate field trial assignments for the client. 723 optional string client_uuid = 34; 724 725 // Information about the A/V output device(s) (typically just a TV). 726 // However, a configuration may have one or more intermediate A/V devices 727 // between the source device and the TV (e.g. an A/V receiver, video 728 // processor, etc.). 729 message ExternalAudioVideoDevice { 730 // The manufacturer name (possibly encoded as a 3-letter code, e.g. "YMH" 731 // for Yamaha). 732 optional string manufacturer_name = 1; 733 734 // The model name (e.g. "RX-V1900"). Some devices may report generic names 735 // like "receiver" or use the full manufacturer name (e.g "PHILIPS"). 736 optional string model_name = 2; 737 738 // The product code (e.g. "0218"). 739 optional string product_code = 3; 740 741 // The device types. A single device can have multiple types (e.g. a set-top 742 // box could be both a tuner and a player). The same type may even be 743 // repeated (e.g a device that reports two tuners). 744 enum AVDeviceType { 745 AV_DEVICE_TYPE_UNKNOWN = 0; 746 AV_DEVICE_TYPE_TV = 1; 747 AV_DEVICE_TYPE_RECORDER = 2; 748 AV_DEVICE_TYPE_TUNER = 3; 749 AV_DEVICE_TYPE_PLAYER = 4; 750 AV_DEVICE_TYPE_AUDIO_SYSTEM = 5; 751 } 752 repeated AVDeviceType av_device_type = 4; 753 754 // The year of manufacture. 755 optional int32 manufacture_year = 5; 756 757 // The week of manufacture. 758 // Note: per the Wikipedia EDID article, numbering for this field may not 759 // be consistent between manufacturers. 760 optional int32 manufacture_week = 6; 761 762 // Selected horizontal resolution in pixels. 763 optional int32 horizontal_resolution = 7; 764 765 // Selected vertical resolution in pixels. 766 optional int32 vertical_resolution = 8; 767 768 // Audio capabilities of the device. 769 // Ref: http://en.wikipedia.org/wiki/Extended_display_identification_data 770 // Next tag: 7 771 message AudioDescription { 772 // Audio format 773 enum AudioFormat { 774 AUDIO_FORMAT_UNKNOWN = 0; 775 AUDIO_FORMAT_LPCM = 1; 776 AUDIO_FORMAT_AC_3 = 2; 777 AUDIO_FORMAT_MPEG1 = 3; 778 AUDIO_FORMAT_MP3 = 4; 779 AUDIO_FORMAT_MPEG2 = 5; 780 AUDIO_FORMAT_AAC = 6; 781 AUDIO_FORMAT_DTS = 7; 782 AUDIO_FORMAT_ATRAC = 8; 783 AUDIO_FORMAT_ONE_BIT = 9; 784 AUDIO_FORMAT_DD_PLUS = 10; 785 AUDIO_FORMAT_DTS_HD = 11; 786 AUDIO_FORMAT_MLP_DOLBY_TRUEHD = 12; 787 AUDIO_FORMAT_DST_AUDIO = 13; 788 AUDIO_FORMAT_MICROSOFT_WMA_PRO = 14; 789 } 790 optional AudioFormat audio_format = 1; 791 792 // Number of channels (e.g. 1, 2, 8, etc.). 793 optional int32 num_channels = 2; 794 795 // Supported sample frequencies in Hz (e.g. 32000, 44100, etc.). 796 // Multiple frequencies may be specified. 797 repeated int32 sample_frequency_hz = 3; 798 799 // Maximum bit rate in bits/s. 800 optional int32 max_bit_rate_per_second = 4; 801 802 // Bit depth (e.g. 16, 20, 24, etc.). 803 optional int32 bit_depth = 5; 804 805 // Output mode: analog vs digital. 806 enum OutputMode { 807 ANALOG = 0; 808 DIGITAL = 1; 809 } 810 optional OutputMode output_mode = 6; 811 } 812 repeated AudioDescription audio_description = 9; 813 814 // The position in AV setup. 815 // A value of 0 means this device is the TV. 816 // A value of 1 means this device is directly connected to one of 817 // the TV's inputs. 818 // Values > 1 indicate there are 1 or more devices between this device 819 // and the TV. 820 optional int32 position_in_setup = 10; 821 822 // Whether this device is in the path to the TV. 823 optional bool is_in_path_to_tv = 11; 824 825 // The CEC version the device supports. 826 // CEC stands for Consumer Electronics Control, a part of the HDMI 827 // specification. Not all HDMI devices support CEC. 828 // Only devices that support CEC will report a value here. 829 optional int32 cec_version = 12; 830 831 // This message reports CEC commands seen by a device. 832 // After each log is sent, this information is cleared and gathered again. 833 // By collecting CEC status information by opcode we can determine 834 // which CEC features can be supported. 835 message CECCommand { 836 // The CEC command opcode. CEC supports up to 256 opcodes. 837 // We add only one CECCommand message per unique opcode. Only opcodes 838 // seen by the device will be reported. The remainder of the message 839 // accumulates status for this opcode (and device). 840 optional int32 opcode = 1; 841 842 // The total number of commands received from the external device. 843 optional int32 num_received_direct = 2; 844 845 // The number of commands received from the external device as part of a 846 // broadcast message. 847 optional int32 num_received_broadcast = 3; 848 849 // The total number of commands sent to the external device. 850 optional int32 num_sent_direct = 4; 851 852 // The number of commands sent to the external device as part of a 853 // broadcast message. 854 optional int32 num_sent_broadcast = 5; 855 856 // The number of aborted commands for unknown reasons. 857 optional int32 num_aborted_unknown_reason = 6; 858 859 // The number of aborted commands because of an unrecognized opcode. 860 optional int32 num_aborted_unrecognized = 7; 861 } 862 repeated CECCommand cec_command = 13; 863 864 // Selected Frame rate 865 optional int32 frame_rate = 14; 866 867 // Selected color encoding. 868 enum ColorEncoding { 869 COLOR_ENCODING_UNKNOWN = 0; 870 COLOR_ENCODING_RGB = 1; 871 COLOR_ENCODING_YUV444 = 2; 872 COLOR_ENCODING_YUV422 = 3; 873 COLOR_ENCODING_YUV420 = 4; 874 } 875 optional ColorEncoding color_encoding = 15; 876 877 // Selected bit-depth. 878 optional int32 bit_depth = 16; 879 880 // Devices's max TMDS char rate. 881 optional int32 tmds = 17; 882 883 // HDR10 support. 884 optional bool hdr10_support = 18; 885 886 // Dolby vision support. 887 optional bool dolby_vision_support = 19; 888 889 // Supported EOTF's. 890 // EOTF support according to the spec: 891 // eotf_support & 0x1 -> SDR supported 892 // (eotf_support > 1) & 0x1 -> traditional HDR supported 893 // (eotf_support > 2) & 0x1 -> ST2084 supported 894 optional int32 eotf_support = 20; 895 896 // Supports YUV. 897 optional bool yuv_support = 21; 898 899 // Supports YUV_420. 900 optional bool yuv_420_support = 22; 901 902 // The maximum HDCP version supported by the sink. 903 optional int32 maximum_supported_hdcp_version = 23; 904 905 // The current HDCP version negotiated with the sink. 906 optional int32 current_hdcp_version = 24; 907 } 908 repeated ExternalAudioVideoDevice external_audio_video_device = 14; 909 910 // Information about the current wireless access point. Collected directly 911 // from the wireless access point via standard apis if the device is 912 // connected to the Internet wirelessly. Introduced for Chrome on TV devices 913 // but also can be collected by cast devices running Chrome OS and Android. 914 // Not logged by Chrome browser platforms. 915 message ExternalAccessPoint { 916 // The manufacturer name, for example "ASUSTeK Computer Inc.". 917 optional string manufacturer = 1; 918 919 // The model name, for example "Wi-Fi Protected Setup Router". 920 optional string model_name = 2; 921 922 // The model number, for example "RT-N16". 923 optional string model_number = 3; 924 925 // The device name (sometime same as model_number), for example "RT-N16". 926 optional string device_name = 4; 927 928 // The organizationally unique identifier, for example "08:9E:08". 929 // OUI is the highest three bytes of MAC address 930 // Google's OUI (08:9E:08) is encoded as 0x00089E08 931 // Never recorded server side, but some old clients may send values with 932 // this tag. 933 reserved 5; 934 } 935 optional ExternalAccessPoint external_access_point = 15; 936 937 // Number of users currently signed into a multiprofile session. 938 // A zero value indicates that the user count changed while the log is open. 939 // Logged only on ChromeOS. 940 optional uint32 multi_profile_user_count = 17; 941 942 // Information about extensions that are installed, masked to provide better 943 // privacy. Only extensions from a single profile are reported; this will 944 // generally be the profile used when the browser is started. The profile 945 // reported on will remain consistent at least until the browser is 946 // relaunched (or the profile is deleted by the user). 947 // 948 // Each client first picks a value for client_key derived from its UMA 949 // client_id: 950 // client_key = client_id % 4096 951 // Then, each installed extension is mapped into a hash bucket according to 952 // bucket = CityHash64(StringPrintf("%d:%s", 953 // client_key, extension_id)) % 1024 954 // The client reports the set of hash buckets occupied by all installed 955 // extensions. If multiple extensions map to the same bucket, that bucket is 956 // still only reported once. 957 repeated int32 occupied_extension_bucket = 18; 958 959 // The state of loaded extensions for this system. The system can have either 960 // no applicable extensions, extensions only from the webstore and verified by 961 // the webstore, extensions only from the webstore but not verified, or 962 // extensions not from the store. If there is a single off-store extension, 963 // then HAS_OFFSTORE is reported. This should be kept in sync with the 964 // corresponding enum in chrome/browser/metrics/extensions_metrics_provider.cc 965 enum ExtensionsState { 966 NO_EXTENSIONS = 0; 967 NO_OFFSTORE_VERIFIED = 1; 968 NO_OFFSTORE_UNVERIFIED = 2; 969 HAS_OFFSTORE = 3; 970 } 971 optional ExtensionsState offstore_extensions_state = 19; 972 973 // The nature of the choice the user was given concerning metrics recording. 974 // Specifically, whether the enable metrics/crash reporting checkbox that was 975 // shown on first run was checked or unchecked by default. 976 // This state is recorded on first run, and uploaded in every UMA log. 977 enum UmaDefaultState { 978 // The enable checkbox was unchecked by default. 979 OPT_IN = 0; 980 // The enable checkbox was checked by default. 981 OPT_OUT = 1; 982 // Policy mandated that UMA be enabled, the user had no choice. 983 POLICY_FORCED_ENABLED = 2; 984 // The client has no record of which consent flow was used. 985 OPT_UNKNOWN = 3; 986 } 987 optional UmaDefaultState uma_default_state = 22; 988 989 enum AntiVirusState { 990 // The security product software is turned on and protecting the user. 991 STATE_ON = 0; 992 // The security product software is turned off and protection is disabled. 993 STATE_OFF = 1; 994 // The security product software is in the snoozed state, temporarily off, 995 // and not actively protecting the computer. 996 STATE_SNOOZED = 2; 997 // The security product software has expired and is no longer actively 998 // protecting the computer. 999 STATE_EXPIRED = 3; 1000 } 1001 1002 // Information about installed antivirus products. Windows only. See 1003 // https://cs.chromium.org/chromium/src/chrome/browser/metrics/antivirus_metrics_provider_win.cc. 1004 // 1005 // Next Tag: 6 1006 message AntiVirusProduct { 1007 // The product name e.g. "System Center Endpoint Protection". This might not 1008 // be recorded, see ShouldReportFullNames() in 1009 // chrome/browser/metrics/antivirus_metrics_provider_win.cc. 1010 optional string product_name = 1; 1011 1012 // The hash of the product name. 1013 optional fixed32 product_name_hash = 2; 1014 1015 // The version of the product, as read from the file information. This might 1016 // not be recorded, see ShouldReportFullNames() in 1017 // chrome/browser/metrics/antivirus_metrics_provider_win.cc. 1018 optional string product_version = 3; 1019 1020 // The hash of the product version. Might not be set if the product version 1021 // could not be obtained from the disk. 1022 optional fixed32 product_version_hash = 4; 1023 1024 // The current state of the product. 1025 optional AntiVirusState product_state = 5; 1026 } 1027 repeated AntiVirusProduct antivirus_product = 23; 1028 1029 enum ComponentId { 1030 // The client transmitted a component ID the server does not recognize. 1031 UNKNOWN = 1; 1032 1033 // All the following are various components. 1034 FILE_TYPE_POLICIES = 2; 1035 ORIGIN_TRIALS = 3; 1036 PEPPER_FLASH = 4; 1037 PEPPER_FLASH_CHROMEOS = 5; 1038 PNACL = 6; 1039 RECOVERY = 7; 1040 SSL_ERROR_ASSISTANT = 8; 1041 STH_SET = 9; 1042 CRL_SET = 10; 1043 SUBRESOURCE_FILTER = 11; 1044 SW_REPORTER = 12; 1045 // Software Decryption CDM on all platforms of Chrome 1046 WIDEVINE_CDM = 13; 1047 EPSON_INKJET_PRINTER_ESCPR = 14; 1048 CROS_TERMINA = 15; 1049 STAR_CUPS_DRIVER = 16; 1050 SPEECH_SYNTHESIS_SV_SE = 17; 1051 OPTIMIZATION_HINTS = 18; 1052 DOWNLOADABLE_STRINGS = 19; 1053 VR_ASSETS = 20; 1054 RTANALYTICS_LIGHT = 21; 1055 RTANALYTICS_FULL = 22; 1056 CELLULAR = 23; 1057 DEMO_MODE_RESOURCES = 24; 1058 ON_DEVICE_HEAD_SUGGEST = 25; 1059 CROS_SMART_DIM = 26; 1060 ZXCVBN_DATA = 27; 1061 AUTOFILL_REGEX_CONSTANTS = 28; 1062 WEBVIEW_APPS_PACKAGE_NAMES_ALLOWLIST = 29; 1063 // Hardware Decryption CDM only for Chrome on Windows. 1064 MEDIA_FOUNDATION_WIDEVINE_CDM = 30; 1065 CROWD_DENY = 31; 1066 APP_PROVISIONING = 32; 1067 AUTOFILL_STATES = 33; 1068 CLIENT_SIDE_PHISHING = 34; 1069 COMMERCE_HEURISTICS = 35; 1070 CROW_DOMAIN_LIST = 36; 1071 DEMO_MODE_APP = 37; 1072 DESKTOP_SCREENSHOT_EDITOR = 38; 1073 DESKTOP_SHARING_HUB = 39; 1074 FIRST_PARTY_SETS = 40; 1075 HYPHENATION = 41; 1076 INTERVENTION_POLICY_DATABASE = 42; 1077 LACROS_DOGFOOD_BETA = 43; 1078 LACROS_DOGFOOD_CANARY = 44; 1079 LACROS_DOGFOOD_DEV = 45; 1080 LACROS_DOGFOOD_STABLE = 46; 1081 MEI_PRELOAD = 47; 1082 PKI_METADATA = 48; 1083 REAL_TIME_URL_CHECKS_ALLOWLIST = 49; 1084 RECOVERY_IMPROVED = 50; 1085 SAFETY_TIPS = 51; 1086 SCREEN_AI = 52; 1087 SMART_DIM = 53; 1088 SODA = 54; 1089 SODA_DE_DE = 55; 1090 SODA_EN_US = 56; 1091 SODA_ES_ES = 57; 1092 SODA_FR_FR = 58; 1093 SODA_IT_IT = 59; 1094 SODA_JA_JP = 60; 1095 THIRD_PARTY_MODULE_LIST = 61; 1096 TRUST_TOKEN_KEY_COMMITMENTS = 62; 1097 THIRD_PARTY_COOKIE_DEPRECATION_METADATA = 63; 1098 } 1099 1100 // Information about what Chrome components are registered and at which 1101 // version. 1102 // Next Tag: 5 1103 message ChromeComponent { 1104 // Which component this information is for. 1105 optional ComponentId component_id = 1 [default = UNKNOWN]; 1106 1107 // Human-readable dotted-quad representation of the currently-installed 1108 // version of the component, e.g. "1.2.3.4". 1109 optional string version = 2; 1110 1111 // The first 32 bits of the Omaha-style fingerprint of the installed 1112 // component, discarding any bits that describe the fingerprint format. In 1113 // practice this is the first 32 bits of the SHA256 hash of the package that 1114 // was installed as the component. It is a stronger version number that can 1115 // vary across platform, architecture, or branches of an A/B component test. 1116 optional fixed32 omaha_fingerprint = 3; 1117 1118 // A hash of the cohort identifier of this component, excluding 1119 // non-assignment information. The hash function is Chromium's 1120 // PersistentHash. 1121 optional fixed32 cohort_hash = 4; 1122 } 1123 repeated ChromeComponent chrome_component = 24; 1124 1125 // Information about the user's installed extensions. This will include 1126 // extensions from all fully-initialized profiles. If a single extension is 1127 // installed in multiple profiles, it will be recorded multiple times. 1128 repeated ExtensionInstallProto extension_install = 25; 1129 1130 // Android-only. 1131 // For Chrome UMA records, this field contains the package name of the 1132 // version of Chrome that is running if it's different from 1133 // "com.android.chrome". ("com.android.chrome" is the name of the Chrome 1134 // stable channel app package name.) 1135 // For WebView UMA records, under some conditions this field contains the 1136 // package name of the currently-running app. See http://shortn/_5HRGU153JL 1137 // for details. 1138 optional string app_package_name = 26; 1139 1140 // Indicates if the `app_package_name` should be filtered out on the 1141 // server-side. The client will use this to signal no further filtering is 1142 // required if filtering is enabled on the client-side. If the package name is 1143 // a system app and the server-side filtering is enabled, the client will use 1144 // this to indicate no filtering is required since system apps are not subject 1145 // to filtering. Only recorded on the Android WebView platform. 1146 enum AppPackageNameAllowlistFilter { 1147 // Indicates the package name filtering was not set. 1148 // This will be the case with data coming from old WebView versions. 1149 SERVER_SIDE_FILTER_UNSPECIFIED = 0; 1150 // Indicates the package name filtering should occur on the server-side 1151 SERVER_SIDE_FILTER_REQUIRED = 1; 1152 // Indicates the `app_package_name` does not need filtering since it is 1153 // a system app. 1154 NO_SERVER_SIDE_FILTER_REQUIRED_FOR_SYSTEM_APPS = 3; 1155 1156 // Removed in cl/567086405: 1157 reserved 2; 1158 reserved "NO_SERVER_SIDE_FILTER_REQUIRED_DUE_TO_CLIENT_FILTERING"; 1159 } 1160 1161 optional AppPackageNameAllowlistFilter app_package_name_allowlist_filter = 42; 1162 1163 enum ClientSideSamplingStatus { 1164 // Default value, no conclusion can be drawn. 1165 SAMPLING_UNKNOWN = 0; 1166 // Client-side sampling was applied. 1167 SAMPLING_APPLIED = 1; 1168 // Client-side sampling was not applied. 1169 SAMPLING_NOT_APPLIED = 2; 1170 } 1171 1172 // Specifies whether sampling was applied on the client. Older clients will 1173 // not set this field, which will result in the default value of UNKNOWN. 1174 optional ClientSideSamplingStatus client_side_sampling_status = 43; 1175 1176 enum MetricsFilteringStatus { 1177 // Not expected to be reported explicitly, used when the field was not set. 1178 METRICS_UNKNOWN = 0; 1179 // Client is reporting all recorded histograms and user actions. 1180 METRICS_ALL = 1; 1181 // Client is reporting only a chosen set of histogrms and user actions. 1182 // The semantics of METRICS_ONLY_CRITICAL may vary by platform and evolve 1183 // over time. 1184 METRICS_ONLY_CRITICAL = 2; 1185 } 1186 1187 // Specifies whether metrics filtering was applied on the client. Metrics 1188 // filtering applies to both histograms and user actions. The chosen metrics 1189 // to filter may vary by platform and evolve over time. Older clients will not 1190 // set this field, which will result in the default value of METRICS_UNKNOWN. 1191 optional MetricsFilteringStatus metrics_filtering_status = 44; 1192 1193 // The package which installed Chrome, as reported by 1194 // PackageManager.getInstallerPackageName(). 1195 enum InstallerPackage { 1196 // This field was not set. 1197 INSTALLER_PACKAGE_UNKNOWN = 0; 1198 // The installer package name returned by Android was empty. 1199 INSTALLER_PACKAGE_NONE = 1; 1200 // 'com.android.vending'. 1201 INSTALLER_PACKAGE_GOOGLE_PLAY_STORE = 2; 1202 // Any other non-empty value. 1203 INSTALLER_PACKAGE_OTHER = 3; 1204 } 1205 1206 // The package which installed Chrome, as reported by Android. 1207 optional InstallerPackage installer_package = 35; 1208 1209 // Data related to the "Better Together" multi-device features. This is only 1210 // uploaded on Chrome OS. 1211 // Next Tag: 5 1212 message LinkedAndroidPhoneData { 1213 // The pii-free model name of the phone used for Better Together with this 1214 // device. Will not be set if Better Together is not set up. Hashed using 1215 // variations::HashName() to produce a 32-bit SHA1 hash. 1216 optional fixed32 phone_model_name_hash = 1; 1217 1218 // True if SmartLock is enabled on this Chromebook. 1219 optional bool is_smartlock_enabled = 2; 1220 1221 // True if Instant Tethering is enabled on this Chromebook. 1222 optional bool is_instant_tethering_enabled = 3; 1223 1224 // True if Messages integration is enabled on this Chromebook. 1225 // Deprecated 10/23. 1226 optional bool is_messages_enabled = 4 [deprecated = true]; 1227 } 1228 optional LinkedAndroidPhoneData linked_android_phone_data = 29; 1229 1230 // Demo mode related dimension information. 1231 // Next Tag: 6 1232 message DemoModeDimensions { 1233 optional string country = 1; 1234 1235 // Demo devices retailer id and store id, value is set during demo setup. 1236 // Next Tag: 3 1237 message Retailer { 1238 optional string retailer_id = 1; 1239 optional string store_id = 2; 1240 } 1241 optional Retailer retailer = 2; 1242 1243 enum CustomizationFacet { 1244 UNDEFINED = 0; 1245 CLOUD_GAMING_DEVICE = 1; 1246 FEATURE_AWARE_DEVICE = 2; 1247 } 1248 repeated CustomizationFacet customization_facet = 3 [packed = true]; 1249 1250 // The Demo Mode highlights app version. The version number is used to 1251 // identify the Omaha Chrome Component - Demo Mode App package that was 1252 // downloaded onto the device. 1253 optional string app_version = 4; 1254 1255 // The Demo Mode resources version. The version number is used to identify 1256 // the Omaha Chrome Component - Demo Mode Resources bundle that was 1257 // downloaded onto the device. 1258 optional string resources_version = 5; 1259 } 1260 optional DemoModeDimensions demo_mode_dimensions = 41; 1261 1262 // LTSChannel indicates whether ChromeOS is running an lts channel. 1263 // https://chromium.googlesource.com/chromiumos/docs/+/HEAD/releases.md#channels 1264 enum LTSChannel { 1265 // This field was not set. 1266 LTS_CHANNEL_UNKNOWN = 0; 1267 // ChromeOS is running stable-channel and not lts. 1268 LTS_CHANNEL_STABLE = 1; 1269 // ChromeOS is running ltc-channel. 1270 LTS_CHANNEL_LTC = 2; 1271 // ChromeOS is running lts-channel. 1272 LTS_CHANNEL_LTS = 3; 1273 } 1274 1275 // Report whether ChromeOS is running ltc or lts channel. 1276 // Instead of extending the Channel enum, we report stable-channel and use 1277 // this separate field to filter out for ltc or lts. Most UMA users are not 1278 // aware of the existence of lts and we would lose monitoring for many Chrome 1279 // features. 1280 optional LTSChannel lts_channel = 45; 1281} 1282