Commit 0dd3332a authored by Arthur Iakab's avatar Arthur Iakab
Browse files

Backed out 4 changesets (bug 1622384) for causing build bustages on JsepSession.h

CLOSED TREE

Backed out changeset d339ce87c2ef (bug 1622384)
Backed out changeset 13101fc544bc (bug 1622384)
Backed out changeset aad4412b43e2 (bug 1622384)
Backed out changeset eba5d05e59b2 (bug 1622384)
parent b7c5fd62
Loading
Loading
Loading
Loading
+136 −148

File changed.

Preview size limit exceeded, changes collapsed.

+5 −6
Original line number Diff line number Diff line
@@ -5,7 +5,6 @@
#ifndef _JSEPSESSION_H_
#define _JSEPSESSION_H_

#include <map>
#include <string>
#include <vector>
#include "mozilla/Attributes.h"
@@ -107,7 +106,7 @@ class JsepSession {
  template <class UnaryFunction>
  void ForEachCodec(UnaryFunction& function) {
    std::for_each(Codecs().begin(), Codecs().end(), function);
    for (auto& [id, transceiver] : GetTransceivers()) {
    for (auto& transceiver : GetTransceivers()) {
      transceiver->mSendTrack.ForEachCodec(function);
      transceiver->mRecvTrack.ForEachCodec(function);
    }
@@ -116,15 +115,15 @@ class JsepSession {
  template <class BinaryPredicate>
  void SortCodecs(BinaryPredicate& sorter) {
    std::stable_sort(Codecs().begin(), Codecs().end(), sorter);
    for (auto& [id, transceiver] : GetTransceivers()) {
    for (auto& transceiver : GetTransceivers()) {
      transceiver->mSendTrack.SortCodecs(sorter);
      transceiver->mRecvTrack.SortCodecs(sorter);
    }
  }

  virtual const std::map<size_t, RefPtr<JsepTransceiver>>& GetTransceivers()
  virtual const std::vector<RefPtr<JsepTransceiver>>& GetTransceivers()
      const = 0;
  virtual std::map<size_t, RefPtr<JsepTransceiver>>& GetTransceivers() = 0;
  virtual std::vector<RefPtr<JsepTransceiver>>& GetTransceivers() = 0;
  virtual nsresult AddTransceiver(RefPtr<JsepTransceiver> transceiver) = 0;

  class Result {
@@ -191,7 +190,7 @@ class JsepSession {
    memset(receiving, 0, sizeof(receiving));
    memset(sending, 0, sizeof(sending));

    for (const auto& [id, transceiver] : GetTransceivers()) {
    for (const auto& transceiver : GetTransceivers()) {
      if (transceiver->mRecvTrack.GetActive() ||
          transceiver->GetMediaType() == SdpMediaSection::kApplication) {
        receiving[transceiver->mRecvTrack.GetMediaType()]++;
+28 −30
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ nsresult JsepSessionImpl::AddTransceiver(RefPtr<JsepTransceiver> transceiver) {
    // of asserting.
    transceiver->mJsDirection = SdpDirectionAttribute::kSendrecv;
#ifdef DEBUG
    for (const auto& [id, transceiver] : mTransceivers) {
    for (auto& transceiver : mTransceivers) {
      MOZ_ASSERT(transceiver->GetMediaType() != SdpMediaSection::kApplication);
    }
#endif
@@ -123,7 +123,7 @@ nsresult JsepSessionImpl::AddTransceiver(RefPtr<JsepTransceiver> transceiver) {
  transceiver->mRecvTrack.PopulateCodecs(mSupportedCodecs);
  // We do not set mLevel yet, we do that either on createOffer, or setRemote

  mTransceivers[mTransceiverIdCounter++] = transceiver;
  mTransceivers.push_back(transceiver);
  return NS_OK;
}

@@ -690,8 +690,8 @@ JsepSession::Result JsepSessionImpl::SetLocalDescription(
  if (type == kJsepSdpOffer) {
    // Save in case we need to rollback
    mOldTransceivers.clear();
    for (const auto& [id, transceiver] : mTransceivers) {
      mOldTransceivers[id] = new JsepTransceiver(*transceiver);
    for (const auto& transceiver : mTransceivers) {
      mOldTransceivers.push_back(new JsepTransceiver(*transceiver));
    }
  }

@@ -862,8 +862,8 @@ JsepSession::Result JsepSessionImpl::SetRemoteDescription(
  // Save in case we need to rollback.
  if (type == kJsepSdpOffer) {
    mOldTransceivers.clear();
    for (const auto& [id, transceiver] : mTransceivers) {
      mOldTransceivers[id] = new JsepTransceiver(*transceiver);
    for (const auto& transceiver : mTransceivers) {
      mOldTransceivers.push_back(new JsepTransceiver(*transceiver));
      if (!transceiver->IsNegotiated()) {
        // We chose a level for this transceiver, but never negotiated it.
        // Discard this state.
@@ -958,7 +958,7 @@ nsresult JsepSessionImpl::HandleNegotiatedSession(
  }

  std::vector<JsepTrack*> remoteTracks;
  for (const auto& [id, transceiver] : mTransceivers) {
  for (const RefPtr<JsepTransceiver>& transceiver : mTransceivers) {
    remoteTracks.push_back(&transceiver->mRecvTrack);
  }
  JsepTrack::SetUniquePayloadTypes(remoteTracks);
@@ -1331,7 +1331,7 @@ nsresult JsepSessionImpl::SetRemoteDescriptionAnswer(JsepSdpType type,
}

JsepTransceiver* JsepSessionImpl::GetTransceiverForLevel(size_t level) {
  for (auto& [id, transceiver] : mTransceivers) {
  for (RefPtr<JsepTransceiver>& transceiver : mTransceivers) {
    if (transceiver->HasLevel() && (transceiver->GetLevel() == level)) {
      return transceiver.get();
    }
@@ -1341,7 +1341,7 @@ JsepTransceiver* JsepSessionImpl::GetTransceiverForLevel(size_t level) {
}

JsepTransceiver* JsepSessionImpl::GetTransceiverForMid(const std::string& mid) {
  for (auto& [id, transceiver] : mTransceivers) {
  for (RefPtr<JsepTransceiver>& transceiver : mTransceivers) {
    if (transceiver->IsAssociated() && (transceiver->GetMid() == mid)) {
      return transceiver.get();
    }
@@ -1371,7 +1371,7 @@ JsepTransceiver* JsepSessionImpl::GetTransceiverForLocal(size_t level) {
  // There is no transceiver for |level| right now.

  // Look for an RTP transceiver
  for (auto& [id, transceiver] : mTransceivers) {
  for (RefPtr<JsepTransceiver>& transceiver : mTransceivers) {
    if (transceiver->GetMediaType() != SdpMediaSection::kApplication &&
        !transceiver->IsStopped() && !transceiver->HasLevel()) {
      transceiver->SetLevel(level);
@@ -1380,7 +1380,7 @@ JsepTransceiver* JsepSessionImpl::GetTransceiverForLocal(size_t level) {
  }

  // Ok, look for a datachannel
  for (auto& [id, transceiver] : mTransceivers) {
  for (RefPtr<JsepTransceiver>& transceiver : mTransceivers) {
    if (!transceiver->IsStopped() && !transceiver->HasLevel()) {
      transceiver->SetLevel(level);
      return transceiver.get();
@@ -1417,12 +1417,12 @@ JsepTransceiver* JsepSessionImpl::GetTransceiverForRemote(
  newTransceiver->SetCreatedBySetRemote();
  nsresult rv = AddTransceiver(newTransceiver);
  NS_ENSURE_SUCCESS(rv, nullptr);
  return newTransceiver.get();
  return mTransceivers.back().get();
}

JsepTransceiver* JsepSessionImpl::GetTransceiverWithTransport(
    const std::string& transportId) {
  for (const auto& [id, transceiver] : mTransceivers) {
  for (const auto& transceiver : mTransceivers) {
    if (transceiver->HasOwnTransport() &&
        (transceiver->mTransport.mTransportId == transportId)) {
      MOZ_ASSERT(transceiver->HasLevel(),
@@ -1485,7 +1485,7 @@ nsresult JsepSessionImpl::UpdateTransceiversFromRemoteDescription(
JsepTransceiver* JsepSessionImpl::FindUnassociatedTransceiver(
    SdpMediaSection::MediaType type, bool magic) {
  // Look through transceivers that are not mapped to an m-section
  for (auto& [id, transceiver] : mTransceivers) {
  for (RefPtr<JsepTransceiver>& transceiver : mTransceivers) {
    if (type == SdpMediaSection::kApplication &&
        type == transceiver->GetMediaType()) {
      transceiver->RestartDatachannelTransceiver();
@@ -1502,10 +1502,10 @@ JsepTransceiver* JsepSessionImpl::FindUnassociatedTransceiver(
}

void JsepSessionImpl::RollbackLocalOffer() {
  for (auto& [id, transceiver] : mTransceivers) {
    if (mOldTransceivers.count(id)) {
      transceiver->Rollback(*mOldTransceivers[id], false);
      mOldTransceivers[id] = transceiver;
  for (size_t i = 0; i < mTransceivers.size(); ++i) {
    RefPtr<JsepTransceiver>& transceiver(mTransceivers[i]);
    if (i < mOldTransceivers.size()) {
      transceiver->Rollback(*mOldTransceivers[i], false);
      continue;
    }

@@ -1514,18 +1514,16 @@ void JsepSessionImpl::RollbackLocalOffer() {
    temp->mSendTrack.PopulateCodecs(mSupportedCodecs);
    temp->mRecvTrack.PopulateCodecs(mSupportedCodecs);
    transceiver->Rollback(*temp, false);
    mOldTransceivers[id] = transceiver;
  }

  mTransceivers = std::move(mOldTransceivers);
  mOldTransceivers.clear();
}

void JsepSessionImpl::RollbackRemoteOffer() {
  for (auto& [id, transceiver] : mTransceivers) {
    if (mOldTransceivers.count(id)) {
      // Some stuff cannot be rolled back. Save this information.
      transceiver->Rollback(*mOldTransceivers[id], true);
      mOldTransceivers[id] = transceiver;
  for (size_t i = 0; i < mTransceivers.size(); ++i) {
    RefPtr<JsepTransceiver>& transceiver(mTransceivers[i]);
    if (i < mOldTransceivers.size()) {
      transceiver->Rollback(*mOldTransceivers[i], true);
      continue;
    }

@@ -1544,12 +1542,12 @@ void JsepSessionImpl::RollbackRemoteOffer() {
    if (shouldRemove) {
      transceiver->Stop();
      transceiver->SetRemoved();
    } else {
      mOldTransceivers[id] = transceiver;
      mTransceivers.erase(mTransceivers.begin() + i);
      --i;
    }
  }

  mTransceivers = std::move(mOldTransceivers);
  mOldTransceivers.clear();
}

nsresult JsepSessionImpl::ValidateLocalDescription(const Sdp& description,
@@ -2135,7 +2133,7 @@ nsresult JsepSessionImpl::UpdateDefaultCandidate(
    return NS_ERROR_UNEXPECTED;
  }

  for (const auto& [id, transceiver] : mTransceivers) {
  for (const auto& transceiver : mTransceivers) {
    // We set the default address for bundled m-sections, but not candidate
    // attributes. Ugh.
    if (transceiver->mTransport.mTransportId == transportId) {
@@ -2238,7 +2236,7 @@ const std::string JsepSessionImpl::GetLastError() const { return mLastError; }
bool JsepSessionImpl::CheckNegotiationNeeded() const {
  MOZ_ASSERT(mState == kJsepStateStable);

  for (const auto& [id, transceiver] : mTransceivers) {
  for (const auto& transceiver : mTransceivers) {
    if (transceiver->IsStopped()) {
      if (transceiver->IsAssociated()) {
        MOZ_MTLOG(ML_DEBUG, "[" << mName
+6 −10
Original line number Diff line number Diff line
@@ -5,7 +5,6 @@
#ifndef _JSEPSESSIONIMPL_H_
#define _JSEPSESSIONIMPL_H_

#include <map>
#include <set>
#include <string>
#include <vector>
@@ -132,13 +131,12 @@ class JsepSessionImpl : public JsepSession {
    return !mOldIceUfrag.empty();
  }

  virtual const std::map<size_t, RefPtr<JsepTransceiver>>& GetTransceivers()
  virtual const std::vector<RefPtr<JsepTransceiver>>& GetTransceivers()
      const override {
    return mTransceivers;
  }

  virtual std::map<size_t, RefPtr<JsepTransceiver>>& GetTransceivers()
      override {
  virtual std::vector<RefPtr<JsepTransceiver>>& GetTransceivers() override {
    return mTransceivers;
  }

@@ -227,12 +225,11 @@ class JsepSessionImpl : public JsepSession {
  const Sdp* GetAnswer() const;
  void SetIceRestarting(bool restarting);

  // !!!NOT INDEXED BY LEVEL!!! The level mapping is done with
  // JsepTransceiver::mLevel. The keys are opaque, stable identifiers that are
  // unique within the JsepSession.
  std::map<size_t, RefPtr<JsepTransceiver>> mTransceivers;
  // !!!NOT INDEXED BY LEVEL!!! These are in the order they were created in. The
  // level mapping is done with JsepTransceiver::mLevel.
  std::vector<RefPtr<JsepTransceiver>> mTransceivers;
  // So we can rollback. Not as simple as just going back to the old, though...
  std::map<size_t, RefPtr<JsepTransceiver>> mOldTransceivers;
  std::vector<RefPtr<JsepTransceiver>> mOldTransceivers;

  Maybe<bool> mIsPendingOfferer;
  Maybe<bool> mIsCurrentOfferer;
@@ -250,7 +247,6 @@ class JsepSessionImpl : public JsepSession {
  size_t mMidCounter;
  std::set<std::string> mUsedMids;
  size_t mTransportIdCounter;
  size_t mTransceiverIdCounter = 0;
  std::vector<JsepExtmapMediaType> mRtpExtensions;
  UniquePtr<JsepUuidGenerator> mUuidGen;
  std::string mDefaultRemoteStreamId;
+11 −10
Original line number Diff line number Diff line
@@ -878,7 +878,7 @@ nsresult PeerConnectionImpl::GetDatachannelParameters(
  transportId->clear();

  RefPtr<JsepTransceiver> datachannelTransceiver;
  for (const auto& [id, transceiver] : mJsepSession->GetTransceivers()) {
  for (const auto& transceiver : mJsepSession->GetTransceivers()) {
    if ((transceiver->GetMediaType() == SdpMediaSection::kApplication) &&
        transceiver->mSendTrack.GetNegotiatedDetails()) {
      datachannelTransceiver = transceiver;
@@ -895,7 +895,7 @@ nsresult PeerConnectionImpl::GetDatachannelParameters(
    transportTransceiver = datachannelTransceiver;
  } else if (datachannelTransceiver->HasBundleLevel()) {
    // Find the actual transport.
    for (const auto& [id, transceiver] : mJsepSession->GetTransceivers()) {
    for (const auto& transceiver : mJsepSession->GetTransceivers()) {
      if (transceiver->HasLevel() &&
          transceiver->GetLevel() == datachannelTransceiver->BundleLevel() &&
          transceiver->HasOwnTransport()) {
@@ -1118,7 +1118,7 @@ PeerConnectionImpl::CreateDataChannel(
  CSFLogDebug(LOGTAG, "%s: making DOMDataChannel", __FUNCTION__);

  RefPtr<JsepTransceiver> dcTransceiver;
  for (auto& [id, transceiver] : mJsepSession->GetTransceivers()) {
  for (auto& transceiver : mJsepSession->GetTransceivers()) {
    if (transceiver->GetMediaType() == SdpMediaSection::kApplication) {
      dcTransceiver = transceiver;
      break;
@@ -1403,7 +1403,7 @@ PeerConnectionImpl::SetRemoteDescription(int32_t action, const char* aSDP) {
      return NS_ERROR_FAILURE;
  }

  auto originalTransceivers = mJsepSession->GetTransceivers();
  size_t originalTransceiverCount = mJsepSession->GetTransceivers().size();
  JsepSession::Result result =
      mJsepSession->SetRemoteDescription(sdpType, mRemoteRequestedSDP);
  if (result.mError.isSome()) {
@@ -1413,17 +1413,18 @@ PeerConnectionImpl::SetRemoteDescription(int32_t action, const char* aSDP) {
    mPCObserver->OnSetDescriptionError(*buildJSErrorData(result, errorString),
                                       jrv);
  } else {
    for (const auto& [id, jsepTransceiver] : mJsepSession->GetTransceivers()) {
    // Iterate over the JSEP transceivers that were just created
    for (size_t i = originalTransceiverCount;
         i < mJsepSession->GetTransceivers().size(); ++i) {
      RefPtr<JsepTransceiver> jsepTransceiver =
          mJsepSession->GetTransceivers()[i];

      if (jsepTransceiver->GetMediaType() ==
          SdpMediaSection::MediaType::kApplication) {
        continue;
      }

      if (originalTransceivers.count(id)) {
        continue;
      }

      // New audio or video transceiver, need to tell JS about it.
      // Audio or video transceiver, need to tell JS about it.
      RefPtr<TransceiverImpl> transceiverImpl =
          CreateTransceiverImpl(jsepTransceiver, nullptr, jrv);
      if (jrv.Failed()) {
Loading