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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Stores information about the user's brower and system configuration.
// The system configuration fields are recorded once per client session.
syntax = "proto2";
package metrics;
// Next tag: 13
message SystemProfileProto {
// The time when the client was compiled/linked, in seconds since the epoch.
optional int64 build_timestamp = 1;
// A version number string for the application.
// Most commonly this is the browser version number found in a user agent
// string, and is typically a 4-tuple of numbers separated by periods. In
// cases where the user agent version might be ambiguous (example: Linux 64-
// bit build, rather than 32-bit build, or a Windows version used in some
// special context, such as ChromeFrame running in IE), then this may include
// some additional postfix to provide clarification not available in the UA
// string.
//
// An example of a browser version 4-tuple is "5.0.322.0". Currently used
// postfixes are:
//
// "-64": a 64-bit build
// "-F": Chrome is running under control of ChromeFrame
// "-devel": this is not an official build of Chrome
//
// A full version number string could look similar to:
// "5.0.322.0-F-devel".
//
// This value, when available, is more trustworthy than the UA string
// associated with the request; and including the postfix, may be more
// specific.
optional string app_version = 2;
// The possible channels for an installation, from least to most stable.
enum Channel {
CHANNEL_UNKNOWN = 0; // Unknown channel -- perhaps an unofficial build?
CHANNEL_CANARY = 1;
CHANNEL_DEV = 2;
CHANNEL_BETA = 3;
CHANNEL_STABLE = 4;
}
optional Channel channel = 10;
// The date the user enabled UMA, in seconds since the epoch.
// If the user has toggled the UMA enabled state multiple times, this will
// be the most recent date on which UMA was enabled.
optional int64 uma_enabled_date = 3;
// The user's selected application locale, i.e. the user interface language.
// The locale includes a language code and, possibly, also a country code,
// e.g. "en-US".
optional string application_locale = 4;
// Information on the user's operating system.
message OS {
// The user's operating system.
optional string name = 1;
// The version of the OS. The meaning of this field is OS-dependent.
optional string version = 2;
// The fingerprint of the build. This field is used only on Android.
optional string fingerprint = 3;
}
optional OS os = 5;
// Information on the user's hardware.
message Hardware {
// The CPU architecture (x86, PowerPC, x86_64, ...)
optional string cpu_architecture = 1;
// The amount of RAM present on the system, in megabytes.
optional int64 system_ram_mb = 2;
// The base memory address that chrome.dll was loaded at.
// (Logged only on Windows.)
optional int64 dll_base = 3;
// The Chrome OS device hardware class ID is a unique string associated with
// each Chrome OS device product revision generally assigned at hardware
// qualification time. The hardware class effectively identifies the
// configured system components such as CPU, WiFi adapter, etc.
//
// An example of such a hardware class is "IEC MARIO PONY 6101". An
// internal database associates this hardware class with the qualified
// device specifications including OEM information, schematics, hardware
// qualification reports, test device tags, etc.
optional string hardware_class = 4;
// The number of physical screens.
optional int32 screen_count = 5;
// The screen dimensions of the primary screen, in pixels.
optional int32 primary_screen_width = 6;
optional int32 primary_screen_height = 7;
// The device scale factor of the primary screen.
optional float primary_screen_scale_factor = 12;
// Information on the GPU
message Graphics {
// The GPU manufacturer's vendor id.
optional uint32 vendor_id = 1;
// The GPU manufacturer's device id for the chip set.
optional uint32 device_id = 2;
// The driver version on the GPU.
optional string driver_version = 3;
// The driver date on the GPU.
optional string driver_date = 4;
// The GPU performance statistics.
// See http://src.chromium.org/viewvc/chrome/trunk/src/content/public/common/gpu_performance_stats.h?view=markup
// for details. Currently logged only on Windows.
message PerformanceStatistics {
optional float graphics_score = 1;
optional float gaming_score = 2;
optional float overall_score = 3;
}
optional PerformanceStatistics performance_statistics = 5;
}
optional Graphics gpu = 8;
}
optional Hardware hardware = 6;
// Information on the Google Update install that is managing this client.
message GoogleUpdate {
// Whether the Google Update install is system-level or user-level.
optional bool is_system_install = 1;
// The date at which Google Update last started performing an automatic
// update check, in seconds since the Unix epoch.
optional int64 last_automatic_start_timestamp = 2;
// The date at which Google Update last successfully sent an update check
// and recieved an intact response from the server, in seconds since the
// Unix epoch. (The updates don't need to be successfully installed.)
optional int64 last_update_check_timestamp = 3;
// Describes a product being managed by Google Update. (This can also
// describe Google Update itself.)
message ProductInfo {
// The current version of the product that is installed.
optional string version = 1;
// The date at which Google Update successfully updated this product,
// stored in seconds since the Unix epoch. This is updated when an update
// is successfully applied, or if the server reports that no update
// is available.
optional int64 last_update_success_timestamp = 2;
// The result reported by the product updater on its last run.
enum InstallResult {
INSTALL_RESULT_SUCCESS = 0;
INSTALL_RESULT_FAILED_CUSTOM_ERROR = 1;
INSTALL_RESULT_FAILED_MSI_ERROR = 2;
INSTALL_RESULT_FAILED_SYSTEM_ERROR = 3;
INSTALL_RESULT_EXIT_CODE = 4;
}
optional InstallResult last_result = 3;
// The error code reported by the product updater on its last run. This
// will typically be a error code specific to the product installer.
optional int32 last_error = 4;
// The extra error code reported by the product updater on its last run.
// This will typically be a Win32 error code.
optional int32 last_extra_error = 5;
}
optional ProductInfo google_update_status = 4;
optional ProductInfo client_status = 5;
}
optional GoogleUpdate google_update = 11;
// Information on all installed plugins.
message Plugin {
// The plugin's self-reported name and filename (without path).
optional string name = 1;
optional string filename = 2;
// The plugin's version.
optional string version = 3;
// True if the plugin is disabled.
// If a client has multiple local Chrome user accounts, this is logged based
// on the first user account launched during the current session.
optional bool is_disabled = 4;
}
repeated Plugin plugin = 7;
// Figures that can be used to generate application stability metrics.
// All values are counts of events since the last time that these
// values were reported.
message Stability {
// Total amount of time that the program was running, in seconds.
optional int64 uptime_sec = 1;
// Page loads along with renderer crashes and hangs, since page load count
// roughly corresponds to usage.
optional int32 page_load_count = 2;
optional int32 renderer_crash_count = 3;
optional int32 renderer_hang_count = 4;
// Number of renderer crashes that were for extensions.
// TODO(isherman): Figure out whether this is also counted in
// |renderer_crash_count|.
optional int32 extension_renderer_crash_count = 5;
// Number of non-renderer child process crashes.
optional int32 child_process_crash_count = 6;
// Number of times the browser has crashed while logged in as the "other
// user" (guest) account.
// Logged on ChromeOS only.
optional int32 other_user_crash_count = 7;
// Number of times the kernel has crashed.
// Logged on ChromeOS only.
optional int32 kernel_crash_count = 8;
// Number of times the system has shut down uncleanly.
// Logged on ChromeOS only.
optional int32 unclean_system_shutdown_count = 9;
//
// All the remaining fields in the Stability are recorded at most once per
// client session.
//
// The number of times the program was launched.
// This will typically be equal to 1. However, it is possible that Chrome
// was unable to upload stability metrics for previous launches (e.g. due to
// crashing early during startup), and hence this value might be greater
// than 1.
optional int32 launch_count = 15;
// The number of times that it didn't exit cleanly (which we assume to be
// mostly crashes).
optional int32 crash_count = 16;
// The number of times the program began, but did not complete, the shutdown
// process. (For example, this may occur when Windows is shutting down, and
// it only gives the process a few seconds to clean up.)
optional int32 incomplete_shutdown_count = 17;
// The number of times the program was able register with breakpad crash
// services.
optional int32 breakpad_registration_success_count = 18;
// The number of times the program failed to register with breakpad crash
// services. If crash registration fails then when the program crashes no
// crash report will be generated.
optional int32 breakpad_registration_failure_count = 19;
// The number of times the program has run under a debugger. This should
// be an exceptional condition. Running under a debugger prevents crash
// dumps from being generated.
optional int32 debugger_present_count = 20;
// The number of times the program has run without a debugger attached.
// This should be most common scenario and should be very close to
// |launch_count|.
optional int32 debugger_not_present_count = 21;
// Stability information for all installed plugins.
message PluginStability {
// The relevant plugin's information (name, etc.)
optional Plugin plugin = 1;
// The number of times this plugin's process was launched.
optional int32 launch_count = 2;
// The number of times this plugin was instantiated on a web page.
// This will be >= |launch_count|.
// (A page load with multiple sections drawn by this plugin will
// increase this count multiple times.)
optional int32 instance_count = 3;
// The number of times this plugin process crashed.
// This value will be <= |launch_count|.
optional int32 crash_count = 4;
// The number of times this plugin could not be loaded.
optional int32 loading_error_count = 5;
}
repeated PluginStability plugin_stability = 22;
}
optional Stability stability = 8;
// Description of a field trial or experiment that the user is currently
// enrolled in.
// All metrics reported in this upload can potentially be influenced by the
// field trial.
message FieldTrial {
// The name of the field trial, as a 32-bit identifier.
// Currently, the identifier is a hash of the field trial's name.
optional fixed32 name_id = 1;
// The user's group within the field trial, as a 32-bit identifier.
// Currently, the identifier is a hash of the group's name.
optional fixed32 group_id = 2;
}
repeated FieldTrial field_trial = 9;
}
|