VideoTrackList.h (1387B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim:set ts=2 sw=2 et tw=78: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef mozilla_dom_VideoTrackList_h 8 #define mozilla_dom_VideoTrackList_h 9 10 #include "MediaTrack.h" 11 #include "MediaTrackList.h" 12 13 namespace mozilla::dom { 14 15 class VideoTrack; 16 17 class VideoTrackList : public MediaTrackList { 18 public: 19 VideoTrackList(nsIGlobalObject* aOwnerObject, HTMLMediaElement* aMediaElement) 20 : MediaTrackList(aOwnerObject, aMediaElement), mSelectedIndex(-1) {} 21 22 JSObject* WrapObject(JSContext* aCx, 23 JS::Handle<JSObject*> aGivenProto) override; 24 25 VideoTrack* operator[](uint32_t aIndex); 26 27 void RemoveTrack(const RefPtr<MediaTrack>& aTrack) override; 28 29 void EmptyTracks() override; 30 31 VideoTrack* GetSelectedTrack(); 32 33 // WebIDL 34 int32_t SelectedIndex() const { return mSelectedIndex; } 35 36 VideoTrack* IndexedGetter(uint32_t aIndex, bool& aFound); 37 38 VideoTrack* GetTrackById(const nsAString& aId); 39 40 friend class VideoTrack; 41 42 protected: 43 VideoTrackList* AsVideoTrackList() override { return this; } 44 45 private: 46 int32_t mSelectedIndex; 47 }; 48 49 } // namespace mozilla::dom 50 51 #endif // mozilla_dom_VideoTrackList_h