dom/media/VideoTrackList.h
author Marian-Vasile Laza <mlaza@mozilla.com>
Tue, 30 Nov 2021 23:30:59 +0200
changeset 600683 15c1262d6e8f4524fa63dcc9cc2572038ffb3a92
parent 446960 0ceae9db9ec0be18daa1a279511ad305723185d4
permissions -rw-r--r--
Backed out 6 changesets (bug 1715892, bug 1719735) for causing bc test failures. CLOSED TREE Backed out changeset 196952bd8c9c (bug 1715892) Backed out changeset 9105fe01c025 (bug 1715892) Backed out changeset 4c15d1a24ccd (bug 1715892) Backed out changeset 2c328b84285f (bug 1715892) Backed out changeset 8fcdcdf44b62 (bug 1719735) Backed out changeset c48f398e301f (bug 1719735)

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:set ts=2 sw=2 et tw=78: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef mozilla_dom_VideoTrackList_h
#define mozilla_dom_VideoTrackList_h

#include "MediaTrack.h"
#include "MediaTrackList.h"

namespace mozilla {
namespace dom {

class VideoTrack;

class VideoTrackList : public MediaTrackList {
 public:
  VideoTrackList(nsIGlobalObject* aOwnerObject, HTMLMediaElement* aMediaElement)
      : MediaTrackList(aOwnerObject, aMediaElement), mSelectedIndex(-1) {}

  JSObject* WrapObject(JSContext* aCx,
                       JS::Handle<JSObject*> aGivenProto) override;

  VideoTrack* operator[](uint32_t aIndex);

  void RemoveTrack(const RefPtr<MediaTrack>& aTrack) override;

  void EmptyTracks() override;

  VideoTrack* GetSelectedTrack();

  // WebIDL
  int32_t SelectedIndex() const { return mSelectedIndex; }

  VideoTrack* IndexedGetter(uint32_t aIndex, bool& aFound);

  VideoTrack* GetTrackById(const nsAString& aId);

  friend class VideoTrack;

 protected:
  VideoTrackList* AsVideoTrackList() override { return this; }

 private:
  int32_t mSelectedIndex;
};

}  // namespace dom
}  // namespace mozilla

#endif  // mozilla_dom_VideoTrackList_h