• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 = "CastLogsProtos";
11
12package metrics;  // Cast-enabled device specific log data included in ChromeUserMetricsExtension.
13
14// Next tag: 9
15message CastLogsProto {
16  // Cast specific device information.
17  // Next tag: 7
18  message CastDeviceInfo {
19    // The product type of Cast device sent from Cast-enabled devices.
20    // Next tag: 14
21    enum CastProductType {
22      CAST_PRODUCT_TYPE_UNKNOWN = 0;
23      CAST_PRODUCT_TYPE_CHROMECAST = 1;
24      CAST_PRODUCT_TYPE_TV = 2;
25      CAST_PRODUCT_TYPE_AUDIO = 3;
26      CAST_PRODUCT_TYPE_ANDROID_TV = 4;
27      CAST_PRODUCT_TYPE_ASSISTANT = 5;
28      CAST_PRODUCT_TYPE_ANDROID_THINGS = 6;
29      CAST_PRODUCT_TYPE_CHROME_OS = 7;
30      CAST_PRODUCT_TYPE_FUCHSIA_OS = 8;
31      CAST_PRODUCT_TYPE_LITE = 9;
32      CAST_PRODUCT_TYPE_CORE = 10;
33      CAST_PRODUCT_TYPE_11 = 11;
34      CAST_PRODUCT_TYPE_ANDROID_AUTOMOTIVE = 12;
35      CAST_PRODUCT_TYPE_ANDROID = 13;
36    }
37    optional CastProductType type = 1;
38
39    // The hardware revision of each product.
40    optional string hardware_revision = 2;
41
42    // The manufacturer of Cast device, this value is empty when the device
43    // is manufactured by Google.
44    optional string manufacturer = 3;
45
46    // The model of the Cast device.
47    optional string model = 4;
48
49    // The serial number.
50    optional string serial_number = 5;
51
52    // Hardware information stored in factory partition.
53    // Next Tag: 12
54    message HardwareInfo {
55      optional string color = 1;
56
57      optional string mic = 2;
58
59      optional string memory = 3;
60
61      optional string nand = 4;
62
63      optional string mfg_date = 5;
64
65      optional string build_name = 6;
66
67      optional string config = 7;
68
69      optional string emmc = 8;
70
71      optional string display = 9;
72
73      optional string amp = 10;
74
75      optional string board_name = 11;
76    }
77    optional HardwareInfo hardware_info = 6;
78  }
79
80  // The device sends this information at least once per day.
81  optional CastDeviceInfo cast_device_info = 1;
82
83  // Information about Cast V2 API connection between sender application and
84  // Cast-enabled device.
85  // Next tag: 4
86  message CastConnectionInfo {
87    optional fixed32 transport_connection_id = 1;
88
89    optional fixed32 virtual_connection_id = 2;
90
91    // This message describes a detail sender device and sdk.
92    // Next tag: 10
93    message SenderInfo {
94      // The identifier for the sender device, that is pseudonymous and can be
95      // reset.  This id has no link to a specific user or device.
96      optional fixed64 sender_device_id = 1;
97
98      // SDK type the sender application was using.
99      // Next tag: 3
100      enum SDKType {
101        SDK_UNKNOWN = 0;
102
103        // Native SDK type,
104        // E.G. Android sdk, iOS sdk.
105        SDK_NATIVE = 1;
106
107        // SDK via Chrome extension.
108        SDK_CHROME_EXTENSION = 2;
109      }
110      optional SDKType sdk_type = 2;
111
112      // Version of sender sdk/extension used to connection. The format varies
113      // by each platform.
114      optional string version = 3;
115
116      // Chrome browser version where the Chrome extension running.
117      // Only Chrome extension sends this information.
118      optional string chrome_browser_version = 4;
119
120      // Platform of sender device.
121      // Next tag: 8
122      enum Platform {
123        // Any platform other then cases below.
124        PLATFORM_OTHER = 0;
125
126        PLATFORM_ANDROID = 1;
127        PLATFORM_IOS = 2;
128        PLATFORM_WINDOWS = 3;
129        PLATFORM_OSX = 4;
130        PLATFORM_CHROMEOS = 5;
131        PLATFORM_LINUX = 6;
132
133        // The sender is Cast device - including itself.
134        PLATFORM_CAST = 7;
135      }
136      optional Platform platform = 5;
137
138      // Sender device system version.
139      optional string system_version = 6;
140
141      // What type of connection type used to establish between sender and
142      // receiver.
143      enum ConnectionType {
144        CONNECTION_TYPE_UNKNOWN = 0;
145
146        // A connection established directly between sender and receiver.
147        CONNECTION_TYPE_LOCAL = 1;
148
149        // A connection created by opencast to the device via the cloud relay.
150        CONNECTION_TYPE_RELAY = 2;
151
152        // A connection created by receiver itself internally.
153        CONNECTION_TYPE_INTERNAL = 3;
154      }
155      optional ConnectionType transport_connection_type = 7;
156
157      // Sender device model.
158      optional string model = 8;
159
160      // Last 2 bytes of the sender’s local IP addresses (both IP4/IP6) when
161      // the sender connected. This field stores ip fragment to last 2 bytes and
162      // first 2 bytes won't be used.
163      optional int32 sender_local_ip_fragment = 9;
164    }
165    optional SenderInfo sender_info = 3;
166  }
167
168  // Virtual connection established between sender application and Cast device.
169  repeated CastConnectionInfo cast_connection_info = 2;
170
171  // Stores Cast-enabled device specific events with a various context data.
172  // Next tag: 29
173  message CastEventProto {
174    // The name of the action, hashed by same logic used to hash user action
175    // event and histogram.
176    optional fixed64 name_hash = 1;
177
178    // The timestamp for the event, in milliseconds.
179    optional int64 time_msec = 2;
180
181    // The Cast receiver app ID related with this event.
182    optional fixed32 app_id = 3;
183
184    // The app ID of a remote Cast receiver associated with this event.
185    optional fixed32 remote_app_id = 19;
186
187    // The identifier for receiver application session.
188    optional fixed64 application_session_id = 4;
189
190    // Receiver side Cast SDK version.
191    optional fixed64 cast_receiver_version = 5;
192
193    // Cast MPL version.
194    optional fixed64 cast_mpl_version = 9;
195
196    // transport_connection_id related with this event.
197    optional fixed32 transport_connection_id = 6;
198
199    // virtual_connection_id related with this event.
200    optional fixed32 virtual_connection_id = 7;
201
202    // An optional value for the associated event, often a measurement in
203    // milliseconds.
204    optional int64 value = 8;
205
206    // Group id of Multizone Audio.
207    optional fixed64 group_uuid = 10;
208
209    optional string conversation_key = 11;
210
211    // Request id of V2 Application Protocol
212    optional fixed32 request_id = 12;
213
214    optional string event_id = 13;
215
216    optional string aogh_request_id = 16;
217
218    optional int64 aogh_local_device_id = 18;
219
220    optional string aogh_agent_id = 21;
221
222    optional string aogh_standard_agent_id = 28;
223
224    // Optional value associated with the event. For example, may be used for
225    // error codes.
226    message Metadata {
227      optional fixed64 name_hash = 1;
228      optional int64 value = 2;
229    }
230    repeated Metadata metadata = 14;
231
232    // Optional values associated with the event.
233    repeated float feature_vector = 15;
234
235    // Optional value associated with timezone update event.
236    optional string timezone_id = 17;
237
238    // Optional value to log ui version.
239    optional string ui_version = 20;
240
241    // Optional field to log SELINUX audit detail.
242    optional string selinux_audit_detail = 22;
243
244    // List of event ids belonging to a particular interaction. One interaction
245    // could receive multiple assistant outputs, hence multiple event ids.
246    repeated string event_id_list = 23;
247
248    // Duo core version.
249    optional fixed64 duo_core_version = 24;
250
251    // Model version of hotword detector.
252    optional string hotword_model_id = 25;
253
254    enum LaunchFrom {
255      FROM_UNKNOWN = 0;
256      // Launched by itself, or by the user interacting directly with the
257      // receiver device (e.g. use a TV remote to launch an app on Android TV).
258      FROM_LOCAL = 1;
259      // Launched by a Cast V1 sender using DIAL.
260      FROM_DIAL = 2;
261      // Launched by a Cast V2 sender device.
262      FROM_CAST_V2 = 3;
263      // Launched from the cloud.
264      FROM_CCS = 4;
265    }
266    optional LaunchFrom launch_from = 26;
267
268    enum RuntimeType {
269      RUNTIME_TYPE_UNKNOWN = 0;
270      RUNTIME_TYPE_CAST_WEB = 1;
271      RUNTIME_TYPE_CAST_LITE = 2;
272      RUNTIME_TYPE_NATIVE = 3;
273    }
274    // The Cast Core runtime type associated with this event.
275    optional RuntimeType runtime_type = 27;
276  }
277  repeated CastEventProto cast_event = 3;
278
279  // Virtual release track for releases sent to partners, trusted beta
280  // testers, developers, etc.
281  optional fixed32 virtual_release_track = 4;
282
283  // Cast specific device information which is expected to change over time.
284  // Next tag: 13
285  message CastDeviceMutableInfo {
286    // This is the last type of reboot the device encountered
287    // Next tag: 22
288    enum RebootType {
289      REBOOT_TYPE_UNKNOWN = 0;  // Fail to get reboot type from system property
290      REBOOT_TYPE_FORCED = 1;   // Power removed from device
291      REBOOT_TYPE_API = 2;      // Requested from reboot setup api
292      REBOOT_TYPE_NIGHTLY = 3;
293      REBOOT_TYPE_OTA = 4;
294      REBOOT_TYPE_WATCHDOG = 5;  // Reboot caused by a watchdog process.
295      REBOOT_TYPE_PROCESS_MANAGER = 6;
296      REBOOT_TYPE_CRASH_UPLOADER = 7;
297      REBOOT_TYPE_FDR = 8;
298      REBOOT_TYPE_HW_WATCHDOG = 9;
299      REBOOT_TYPE_SW_OTHER = 10;
300      REBOOT_TYPE_OVERHEAT = 11;
301      // The device got into a state such that it needs to regenerate the cloud
302      // device id.
303      REBOOT_TYPE_REGENERATE_CLOUD_ID = 12;
304      // Reboot triggered due to successive OOM events.
305      REBOOT_TYPE_REPEATED_OOM = 13;
306      // Reboot triggered when the utility process is found to be in
307      // crash loop.
308      REBOOT_TYPE_UTILITY_PROCESS_CRASH = 14;
309      // design doc go/fuchsia-session-restart-metrics
310      // Restart triggered due to graceful component teardown by the Fuchsia
311      // platform. Device has not rebooted.
312      REBOOT_TYPE_GRACEFUL_RESTART = 15;
313      // Restart triggered due to ungraceful component teardown by the Fuchsia
314      // platform. Device has not rebooted.
315      REBOOT_TYPE_UNGRACEFUL_RESTART = 16;
316      MULTI_SERVICE_BUG = 17;
317      POWER_MANAGER = 18;
318      EXPERIMENT_CHANGE = 19;
319      ANOMALY_DETECTION = 20;
320      KERNEL_PANIC = 21;
321    }
322    optional RebootType last_reboot_type = 1;
323
324    // System version which the cast_shell is running.
325    optional fixed64 system_build_number = 2;
326
327    // An identifier that is specific to the combination of app and device, in
328    // this case the one used by backdrop.
329    optional string backdrop_app_device_id = 3;
330
331    // Chromecast release version like "1.23", "1.24". The format is "X.Y"
332    // where X is major version and Y is sub major version.
333    optional fixed32 release_version = 4;
334
335    // IP version of the primary network interface.
336    enum NetifIPVersion {
337      IP_UNKNOWN = 0;
338      IP_V4 = 1;
339      IP_V6 = 2;
340      IP_DUAL_STACK = 3;
341    }
342    optional NetifIPVersion netif_ip_version = 5;
343
344    // True if the system which cast_shell is running on, supports ip dual stack
345    // sockets.
346    optional bool ip_dual_stack_supported = 6;
347
348    // Current timezone which the device is using.
349    optional string timezone_id = 7;
350    // Optional value to log latest ui version.
351    optional string latest_ui_version = 8;
352
353    // Station ID of the device if connected to Google WiFi network
354    optional string google_wifi_station_shmac = 9;
355
356    // Optional field to log installed manifest platform version.
357    optional string installed_manifest_platform_version = 10;
358
359    // Optional field to log installed manifest version.
360    optional uint32 installed_manifest_version = 11;
361
362    // Optional field to log the system bundle version.
363    optional string system_bundle_version = 12;
364  }
365  // The device sends this information at least once per day.
366  optional CastDeviceMutableInfo cast_device_mutable_info = 5;
367
368  optional fixed64 receiver_metrics_id = 6;
369
370  // This ID is only ever recorded for Google-internal users (dogfooders). It
371  // is never recorded for external users."
372  optional uint64 ephemeral_id = 7;
373
374  optional fixed32 source_virtual_release_track = 8;
375}
376