1 // Copyright 2017 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.
5 #ifndef MEDIA_REMOTING_TRIGGERS_H_
6 #define MEDIA_REMOTING_TRIGGERS_H_
11 // Events and conditions that can trigger remoting to start.
13 // NOTE: Never re-number or re-use numbers for different triggers. These are
14 // used in UMA histograms, and must remain backwards-compatible for all time.
15 // However, *do* change START_TRIGGER_MAX to one after the greatest value when
16 // adding new ones. Also, don't forget to update histograms.xml!
18 UNKNOWN_START_TRIGGER = 0,
20 // Local presentation changes.
21 ENTERED_FULLSCREEN = 1, // The media element became the fullscreen element.
22 BECAME_DOMINANT_CONTENT = 2, // Element now occupies most of the viewport.
23 ENABLED_BY_PAGE = 3, // The page re-allowed remote playback.
25 // User actions, such as connecting to a receiver or pressing play.
26 SINK_AVAILABLE = 4, // A receiver (sink) became available.
27 PLAY_COMMAND = 5, // The media element was issued a play command.
28 REQUESTED_BY_BROWSER = 10, // The browser requested to start Media Remoting
29 // without fullscreen-in-tab.
31 // Met requirements for playback of the media.
32 SUPPORTED_AUDIO_CODEC = 6, // Stream began using a supported audio codec.
33 SUPPORTED_VIDEO_CODEC = 7, // Stream began using a supported video codec.
34 SUPPORTED_AUDIO_AND_VIDEO_CODECS = 8, // Both now using a supported codec.
35 CDM_READY = 9, // The CDM required for decrypting the content became ready.
36 PIXEL_RATE_READY = 11, // The pixel rate was calculated.
38 // Change this to the highest value.
39 START_TRIGGER_MAX = 11,
42 // Events and conditions that can result in a start failure, or trigger remoting
45 // NOTE: Never re-number or re-use numbers for different triggers. These are
46 // used in UMA histograms, and must remain backwards-compatible for all time.
48 // ADDITIONAL NOTE: The values are intentionally out-of-order to maintain a
49 // logical grouping. When adding a new value, add one to STOP_TRIGGER_MAX, then
50 // update STOP_TRIGGER_MAX. Also, don't forget to update enums.xml!
52 UNKNOWN_STOP_TRIGGER = 0,
54 // Normal shutdown triggers.
55 ROUTE_TERMINATED = 1, // The route to the sink was terminated (user action?).
56 MEDIA_ELEMENT_DESTROYED = 2, // The media element on the page was destroyed.
57 EXITED_FULLSCREEN = 3, // The media element is no longer fullscreened.
58 BECAME_AUXILIARY_CONTENT = 4, // Element no longer occupies the viewport.
59 DISABLED_BY_PAGE = 5, // The web page blocked remoting during a session.
61 // Content playback related errors forcing shutdown (or failing start).
62 START_RACE = 6, // Multiple remoting sessions attempted to start.
63 UNSUPPORTED_AUDIO_CODEC = 7, // Stream now using an unsupported audio codec.
64 UNSUPPORTED_VIDEO_CODEC = 8, // Stream now using an unsupported video codec.
65 UNSUPPORTED_AUDIO_AND_VIDEO_CODECS = 9, // Neither codec is supported.
66 DECRYPTION_ERROR = 10, // Could not decrypt content or CDM was destroyed.
67 RECEIVER_INITIALIZE_FAILED = 11, // The receiver reported a failed init.
68 RECEIVER_PIPELINE_ERROR = 12, // The media pipeline on the receiver error'ed.
70 // Environmental errors forcing shutdown.
71 FRAME_DROP_RATE_HIGH = 13, // The receiver was dropping too many frames.
72 PACING_TOO_SLOWLY = 14, // Play-out was too slow, indicating bottlenecks.
74 // Communications errors forcing shutdown.
75 PEERS_OUT_OF_SYNC = 15, // The local state disagrees with the remote.
76 RPC_INVALID = 16, // An RPC field value is missing or has bad data.
77 DATA_PIPE_CREATE_ERROR = 17, // Mojo data pipe creation failed (OOM?).
78 MOJO_DISCONNECTED = 18, // Mojo message pipe was disconnected; e.g, the
80 DATA_PIPE_WRITE_ERROR = 24, // Failure to write the mojo data pipe.
82 // Message/Data sending errors forcing shutdown.
83 MESSAGE_SEND_FAILED = 19, // Failed to send a RPC message to the sink.
84 DATA_SEND_FAILED = 20, // Failed to pull from pipe or send to the sink.
85 UNEXPECTED_FAILURE = 21, // Unexpected failure or inconsistent state.
86 SERVICE_GONE = 22, // Mirror service disconnected.
88 // User changing setting forcing shutdown.
89 USER_DISABLED = 23, // Media Remoting was disabled by user.
91 // Media element was frozen (e.g. page was navigated away).
92 MEDIA_ELEMENT_FROZEN = 25,
94 // Change this to the highest value.
95 STOP_TRIGGER_MAX = MEDIA_ELEMENT_FROZEN,
98 } // namespace remoting
101 #endif // MEDIA_REMOTING_TRIGGERS_H_