|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
|
4 * You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 #include "MediaStreamTrack.h" |
|
7 |
|
8 #include "DOMMediaStream.h" |
|
9 #include "nsIUUIDGenerator.h" |
|
10 #include "nsServiceManagerUtils.h" |
|
11 |
|
12 namespace mozilla { |
|
13 namespace dom { |
|
14 |
|
15 MediaStreamTrack::MediaStreamTrack(DOMMediaStream* aStream, TrackID aTrackID) |
|
16 : mStream(aStream), mTrackID(aTrackID), mEnded(false), mEnabled(true) |
|
17 { |
|
18 SetIsDOMBinding(); |
|
19 |
|
20 memset(&mID, 0, sizeof(mID)); |
|
21 |
|
22 nsresult rv; |
|
23 nsCOMPtr<nsIUUIDGenerator> uuidgen = |
|
24 do_GetService("@mozilla.org/uuid-generator;1", &rv); |
|
25 if (uuidgen) { |
|
26 uuidgen->GenerateUUIDInPlace(&mID); |
|
27 } |
|
28 } |
|
29 |
|
30 MediaStreamTrack::~MediaStreamTrack() |
|
31 { |
|
32 } |
|
33 |
|
34 NS_IMPL_CYCLE_COLLECTION_INHERITED(MediaStreamTrack, DOMEventTargetHelper, |
|
35 mStream) |
|
36 |
|
37 NS_IMPL_ADDREF_INHERITED(MediaStreamTrack, DOMEventTargetHelper) |
|
38 NS_IMPL_RELEASE_INHERITED(MediaStreamTrack, DOMEventTargetHelper) |
|
39 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(MediaStreamTrack) |
|
40 NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper) |
|
41 |
|
42 void |
|
43 MediaStreamTrack::GetId(nsAString& aID) |
|
44 { |
|
45 char chars[NSID_LENGTH]; |
|
46 mID.ToProvidedString(chars); |
|
47 aID = NS_ConvertASCIItoUTF16(chars); |
|
48 } |
|
49 |
|
50 void |
|
51 MediaStreamTrack::SetEnabled(bool aEnabled) |
|
52 { |
|
53 mEnabled = aEnabled; |
|
54 mStream->SetTrackEnabled(mTrackID, aEnabled); |
|
55 } |
|
56 |
|
57 } |
|
58 } |