Browse Source

ref(JitsiTrack) Alpha sort the methods.

tags/v0.0.2
Jaya Allamsetty 2 years ago
parent
commit
5d1ae6fb7f
1 changed files with 162 additions and 164 deletions
  1. 162
    164
      modules/RTC/JitsiTrack.js

+ 162
- 164
modules/RTC/JitsiTrack.js View File

81
         this._setStream(stream);
81
         this._setStream(stream);
82
     }
82
     }
83
 
83
 
84
-    /* eslint-enable max-params */
85
-
86
     /**
84
     /**
87
      * Adds onended/oninactive handler to a MediaStream or a MediaStreamTrack.
85
      * Adds onended/oninactive handler to a MediaStream or a MediaStreamTrack.
88
      * Firefox doesn't fire a inactive event on the MediaStream, instead it fires
86
      * Firefox doesn't fire a inactive event on the MediaStream, instead it fires
97
         }
95
         }
98
     }
96
     }
99
 
97
 
98
+    /**
99
+     * Attach time to first media tracker only if there is conference and only
100
+     * for the first element.
101
+     *
102
+     * @param {HTMLElement} container the HTML container which can be 'video' or
103
+     * 'audio' element.
104
+     * @private
105
+     */
106
+    _attachTTFMTracker(container) { // eslint-disable-line no-unused-vars
107
+        // Should be defined by the classes that are extending JitsiTrack
108
+    }
109
+
110
+    /**
111
+     * Eventually will trigger RTCEvents.TRACK_ATTACHED event.
112
+     * @param container the video/audio container to which this stream is
113
+     *        attached and for which event will be fired.
114
+     * @private
115
+     */
116
+    _maybeFireTrackAttached(container) {
117
+        if (this.conference && container) {
118
+            this.conference._onTrackAttach(this, container);
119
+        }
120
+    }
121
+
122
+    /**
123
+     * Called when the track has been attached to a new container.
124
+     *
125
+     * @param {HTMLElement} container the HTML container which can be 'video' or
126
+     * 'audio' element.
127
+     * @private
128
+     */
129
+    _onTrackAttach(container) { // eslint-disable-line no-unused-vars
130
+        // Should be defined by the classes that are extending JitsiTrack
131
+    }
132
+
133
+    /**
134
+     * Called when the track has been detached from a container.
135
+     *
136
+     * @param {HTMLElement} container the HTML container which can be 'video' or
137
+     * 'audio' element.
138
+     * @private
139
+     */
140
+    _onTrackDetach(container) { // eslint-disable-line no-unused-vars
141
+        // Should be defined by the classes that are extending JitsiTrack
142
+    }
143
+
100
     /**
144
     /**
101
      * Sets handler to the WebRTC MediaStream or MediaStreamTrack object
145
      * Sets handler to the WebRTC MediaStream or MediaStreamTrack object
102
      * depending on the passed type.
146
      * depending on the passed type.
122
         }
166
         }
123
     }
167
     }
124
 
168
 
125
-    /**
126
-     * Unregisters all event handlers bound to the underlying media stream/track
127
-     * @private
128
-     */
129
-    _unregisterHandlers() {
130
-        if (!this.stream) {
131
-            logger.warn(
132
-                `${this}: unable to unregister handlers - no stream object`);
133
-
134
-            return;
135
-        }
136
-
137
-        for (const type of this.handlers.keys()) {
138
-            // FIXME Why only video tracks?
139
-            for (const videoTrack of this.stream.getVideoTracks()) {
140
-                videoTrack[trackHandler2Prop[type]] = undefined;
141
-            }
142
-        }
143
-        if (this._streamInactiveHandler) {
144
-            this._addMediaStreamInactiveHandler(undefined);
145
-        }
146
-    }
147
-
148
     /**
169
     /**
149
      * Sets the stream property of JitsiTrack object and sets all stored
170
      * Sets the stream property of JitsiTrack object and sets all stored
150
      * handlers to it.
171
      * handlers to it.
174
     }
195
     }
175
 
196
 
176
     /**
197
     /**
177
-     * Returns the video type (camera or desktop) of this track.
198
+     * Unregisters all event handlers bound to the underlying media stream/track
199
+     * @private
178
      */
200
      */
179
-    getVideoType() {
180
-        return this.videoType;
181
-    }
201
+    _unregisterHandlers() {
202
+        if (!this.stream) {
203
+            logger.warn(
204
+                `${this}: unable to unregister handlers - no stream object`);
182
 
205
 
183
-    /**
184
-     * Returns the type (audio or video) of this track.
185
-     */
186
-    getType() {
187
-        return this.type;
206
+            return;
207
+        }
208
+
209
+        for (const type of this.handlers.keys()) {
210
+            // FIXME Why only video tracks?
211
+            for (const videoTrack of this.stream.getVideoTracks()) {
212
+                videoTrack[trackHandler2Prop[type]] = undefined;
213
+            }
214
+        }
215
+        if (this._streamInactiveHandler) {
216
+            this._addMediaStreamInactiveHandler(undefined);
217
+        }
188
     }
218
     }
189
 
219
 
190
     /**
220
     /**
191
-     * Check if this is an audio track.
221
+     * Attaches the MediaStream of this track to an HTML container.
222
+     * Adds the container to the list of containers that are displaying the
223
+     * track.
224
+     *
225
+     * @param container the HTML container which can be 'video' or 'audio'
226
+     * element.
227
+     *
228
+     * @returns {void}
192
      */
229
      */
193
-    isAudioTrack() {
194
-        return this.getType() === MediaType.AUDIO;
230
+    attach(container) {
231
+        if (this.stream) {
232
+            this._onTrackAttach(container);
233
+            RTCUtils.attachMediaStream(container, this.stream);
234
+        }
235
+        this.containers.push(container);
236
+        this._maybeFireTrackAttached(container);
237
+        this._attachTTFMTracker(container);
195
     }
238
     }
196
 
239
 
197
     /**
240
     /**
198
-     * Checks whether the underlying WebRTC <tt>MediaStreamTrack</tt> is muted
199
-     * according to it's 'muted' field status.
200
-     * @return {boolean} <tt>true</tt> if the underlying
201
-     * <tt>MediaStreamTrack</tt> is muted or <tt>false</tt> otherwise.
241
+     * Removes this JitsiTrack from the passed HTML container.
242
+     *
243
+     * @param container the HTML container to detach from this JitsiTrack. If
244
+     * <tt>null</tt> or <tt>undefined</tt>, all containers are removed. A
245
+     * container can be a 'video', 'audio' or 'object' HTML element instance to
246
+     * which this JitsiTrack is currently attached.
202
      */
247
      */
203
-    isWebRTCTrackMuted() {
204
-        return this.track && this.track.muted;
248
+    detach(container) {
249
+        for (let cs = this.containers, i = cs.length - 1; i >= 0; --i) {
250
+            const c = cs[i];
251
+
252
+            if (!container) {
253
+                this._onTrackDetach(c);
254
+                RTCUtils.attachMediaStream(c, null);
255
+            }
256
+            if (!container || c === container) {
257
+                cs.splice(i, 1);
258
+            }
259
+        }
260
+
261
+        if (container) {
262
+            this._onTrackDetach(container);
263
+            RTCUtils.attachMediaStream(container, null);
264
+        }
205
     }
265
     }
206
 
266
 
207
     /**
267
     /**
208
-     * Check if this is a video track.
268
+     * Removes attached event listeners.
269
+     *
270
+     * @returns {Promise}
209
      */
271
      */
210
-    isVideoTrack() {
211
-        return this.getType() === MediaType.VIDEO;
272
+    dispose() {
273
+        this.removeAllListeners();
274
+
275
+        this.disposed = true;
276
+
277
+        return Promise.resolve();
212
     }
278
     }
213
 
279
 
214
     /**
280
     /**
215
-     * Checks whether this is a local track.
216
-     * @abstract
217
-     * @return {boolean} 'true' if it's a local track or 'false' otherwise.
281
+     * Returns id of the track.
282
+     * @returns {string|null} id of the track or null if this is fake track.
218
      */
283
      */
219
-    isLocal() {
220
-        throw new Error('Not implemented by subclass');
284
+    getId() {
285
+        return this.getStreamId();
221
     }
286
     }
222
 
287
 
223
     /**
288
     /**
224
-     * Check whether this is a local audio track.
225
-     *
226
-     * @return {boolean} -  true if track represents a local audio track, false otherwise.
289
+     * Returns the msid of the stream attached to the JitsiTrack object or null
290
+     * if no stream is attached.
227
      */
291
      */
228
-    isLocalAudioTrack() {
229
-        return this.isAudioTrack() && this.isLocal();
292
+    getMSID() {
293
+        const streamId = this.getStreamId();
294
+        const trackId = this.getTrackId();
295
+
296
+        return streamId && trackId ? `${streamId} ${trackId}` : null;
230
     }
297
     }
231
 
298
 
232
     /**
299
     /**
268
         return this.track ? this.track.id : null;
335
         return this.track ? this.track.id : null;
269
     }
336
     }
270
 
337
 
338
+    /**
339
+     * Returns the type (audio or video) of this track.
340
+     */
341
+    getType() {
342
+        return this.type;
343
+    }
344
+
271
     /**
345
     /**
272
      * Return meaningful usage label for this track depending on it's media and
346
      * Return meaningful usage label for this track depending on it's media and
273
      * eventual video type.
347
      * eventual video type.
282
     }
356
     }
283
 
357
 
284
     /**
358
     /**
285
-     * Eventually will trigger RTCEvents.TRACK_ATTACHED event.
286
-     * @param container the video/audio container to which this stream is
287
-     *        attached and for which event will be fired.
288
-     * @private
289
-     */
290
-    _maybeFireTrackAttached(container) {
291
-        if (this.conference && container) {
292
-            this.conference._onTrackAttach(this, container);
293
-        }
294
-    }
295
-
296
-    /**
297
-     * Attaches the MediaStream of this track to an HTML container.
298
-     * Adds the container to the list of containers that are displaying the
299
-     * track.
300
-     *
301
-     * @param container the HTML container which can be 'video' or 'audio'
302
-     * element.
303
-     *
304
-     * @returns {void}
359
+     * Returns the video type (camera or desktop) of this track.
305
      */
360
      */
306
-    attach(container) {
307
-        if (this.stream) {
308
-            this._onTrackAttach(container);
309
-            RTCUtils.attachMediaStream(container, this.stream);
310
-        }
311
-        this.containers.push(container);
312
-        this._maybeFireTrackAttached(container);
313
-        this._attachTTFMTracker(container);
361
+    getVideoType() {
362
+        return this.videoType;
314
     }
363
     }
315
 
364
 
316
     /**
365
     /**
317
-     * Removes this JitsiTrack from the passed HTML container.
318
-     *
319
-     * @param container the HTML container to detach from this JitsiTrack. If
320
-     * <tt>null</tt> or <tt>undefined</tt>, all containers are removed. A
321
-     * container can be a 'video', 'audio' or 'object' HTML element instance to
322
-     * which this JitsiTrack is currently attached.
366
+     * Checks whether the MediaStream is active/not ended.
367
+     * When there is no check for active we don't have information and so
368
+     * will return that stream is active (in case of FF).
369
+     * @returns {boolean} whether MediaStream is active.
323
      */
370
      */
324
-    detach(container) {
325
-        for (let cs = this.containers, i = cs.length - 1; i >= 0; --i) {
326
-            const c = cs[i];
327
-
328
-            if (!container) {
329
-                this._onTrackDetach(c);
330
-                RTCUtils.attachMediaStream(c, null);
331
-            }
332
-            if (!container || c === container) {
333
-                cs.splice(i, 1);
334
-            }
335
-        }
336
-
337
-        if (container) {
338
-            this._onTrackDetach(container);
339
-            RTCUtils.attachMediaStream(container, null);
371
+    isActive() {
372
+        if (typeof this.stream.active !== 'undefined') {
373
+            return this.stream.active;
340
         }
374
         }
341
-    }
342
 
375
 
343
-    /**
344
-     * Called when the track has been attached to a new container.
345
-     *
346
-     * @param {HTMLElement} container the HTML container which can be 'video' or
347
-     * 'audio' element.
348
-     * @private
349
-     */
350
-    _onTrackAttach(container) { // eslint-disable-line no-unused-vars
351
-        // Should be defined by the classes that are extending JitsiTrack
376
+        return true;
352
     }
377
     }
353
 
378
 
354
     /**
379
     /**
355
-     * Called when the track has been detached from a container.
356
-     *
357
-     * @param {HTMLElement} container the HTML container which can be 'video' or
358
-     * 'audio' element.
359
-     * @private
380
+     * Check if this is an audio track.
360
      */
381
      */
361
-    _onTrackDetach(container) { // eslint-disable-line no-unused-vars
362
-        // Should be defined by the classes that are extending JitsiTrack
382
+    isAudioTrack() {
383
+        return this.getType() === MediaType.AUDIO;
363
     }
384
     }
364
 
385
 
365
     /**
386
     /**
366
-     * Attach time to first media tracker only if there is conference and only
367
-     * for the first element.
368
-     *
369
-     * @param {HTMLElement} container the HTML container which can be 'video' or
370
-     * 'audio' element.
371
-     * @private
387
+     * Checks whether this is a local track.
388
+     * @abstract
389
+     * @return {boolean} 'true' if it's a local track or 'false' otherwise.
372
      */
390
      */
373
-    _attachTTFMTracker(container) { // eslint-disable-line no-unused-vars
374
-        // Should be defined by the classes that are extending JitsiTrack
391
+    isLocal() {
392
+        throw new Error('Not implemented by subclass');
375
     }
393
     }
376
 
394
 
377
     /**
395
     /**
378
-     * Removes attached event listeners.
396
+     * Check whether this is a local audio track.
379
      *
397
      *
380
-     * @returns {Promise}
398
+     * @return {boolean} -  true if track represents a local audio track, false otherwise.
381
      */
399
      */
382
-    dispose() {
383
-        this.removeAllListeners();
384
-
385
-        this.disposed = true;
386
-
387
-        return Promise.resolve();
400
+    isLocalAudioTrack() {
401
+        return this.isAudioTrack() && this.isLocal();
388
     }
402
     }
389
 
403
 
390
     /**
404
     /**
391
-     * Returns id of the track.
392
-     * @returns {string|null} id of the track or null if this is fake track.
405
+     * Check if this is a video track.
393
      */
406
      */
394
-    getId() {
395
-        return this.getStreamId();
407
+    isVideoTrack() {
408
+        return this.getType() === MediaType.VIDEO;
396
     }
409
     }
397
 
410
 
398
     /**
411
     /**
399
-     * Checks whether the MediaStream is active/not ended.
400
-     * When there is no check for active we don't have information and so
401
-     * will return that stream is active (in case of FF).
402
-     * @returns {boolean} whether MediaStream is active.
412
+     * Checks whether the underlying WebRTC <tt>MediaStreamTrack</tt> is muted
413
+     * according to it's 'muted' field status.
414
+     * @return {boolean} <tt>true</tt> if the underlying
415
+     * <tt>MediaStreamTrack</tt> is muted or <tt>false</tt> otherwise.
403
      */
416
      */
404
-    isActive() {
405
-        if (typeof this.stream.active !== 'undefined') {
406
-            return this.stream.active;
407
-        }
408
-
409
-        return true;
417
+    isWebRTCTrackMuted() {
418
+        return this.track && this.track.muted;
410
     }
419
     }
411
 
420
 
412
     /**
421
     /**
447
         }
456
         }
448
     }
457
     }
449
 
458
 
450
-    /**
451
-     * Returns the msid of the stream attached to the JitsiTrack object or null
452
-     * if no stream is attached.
453
-     */
454
-    getMSID() {
455
-        const streamId = this.getStreamId();
456
-        const trackId = this.getTrackId();
457
-
458
-        return streamId && trackId ? `${streamId} ${trackId}` : null;
459
-    }
460
-
461
     /**
459
     /**
462
      * Sets new audio output device for track's DOM elements. Video tracks are
460
      * Sets new audio output device for track's DOM elements. Video tracks are
463
      * ignored.
461
      * ignored.

Loading…
Cancel
Save