dom/media/tests/mochitest/test_peerConnection_restartIceLocalAndRemoteRollback.html
author Phil Ringnalda <philringnalda@gmail.com>
Fri, 09 Dec 2016 08:33:55 -0800
changeset 372781 a3fe137d4d47d0d8c897bcb81d6ed1201a5dde89
parent 372780 17ae85e95667253ed7cdef7f2f36d249e953b2d0
child 372817 ce72565dbefdc9256277f482c7bd7b0b8a2f44dd
permissions -rw-r--r--
Backed out 6 changesets (bug 1263312) for failures in test_exceptions_from_jsimplemented.html Backed out changeset 17ae85e95667 (bug 1263312) Backed out changeset 1814c92e203b (bug 1263312) Backed out changeset 6b71306765d2 (bug 1263312) Backed out changeset 33449a5d1676 (bug 1263312) Backed out changeset b311b7e439e8 (bug 1263312) Backed out changeset a667af08ffb5 (bug 1263312)

<!DOCTYPE HTML>
<html>
<head>
  <script type="application/javascript" src="pc.js"></script>
</head>
<body>
<pre id="test">
<script type="application/javascript">
  createHTML({
    bug: "906986",
    title: "Renegotiation: restart ice, local and remote rollback"
  });

  var test;
  runNetworkTest(function (options) {
    test = new PeerConnectionTest(options);

    addRenegotiation(test.chain,
      [
        // causes a full, normal ice restart
        function PC_LOCAL_SET_OFFER_OPTION(test) {
          test.setOfferOptions({ iceRestart: true });
        }
      ]
    );

    test.chain.replaceAfter('PC_REMOTE_CREATE_ANSWER',
      [
        function PC_LOCAL_SETUP_ICE_HANDLER(test) {
          test.pcLocal.setupIceCandidateHandler(test);
          if (test.testOptions.steeplechase) {
            test.pcLocal.endOfTrickleIce.then(() => {
              send_message({"type": "end_of_trickle_ice"});
            });
          }
        },
        function PC_REMOTE_SETUP_ICE_HANDLER(test) {
          test.pcRemote.setupIceCandidateHandler(test);
          if (test.testOptions.steeplechase) {
            test.pcRemote.endOfTrickleIce.then(() => {
              send_message({"type": "end_of_trickle_ice"});
            });
          }
        },

        function PC_LOCAL_EXPECT_ICE_CONNECTED(test) {
          test.pcLocal.iceCheckingIceRollbackExpected = true;
        },
        function PC_REMOTE_EXPECT_ICE_CONNECTED(test) {
          test.pcRemote.iceCheckingIceRollbackExpected = true;
        },

        function PC_REMOTE_ROLLBACK(test) {
          return test.setRemoteDescription(
              test.pcRemote,
              new RTCSessionDescription({ type: "rollback" }),
              STABLE);
        },

        function PC_LOCAL_ROLLBACK(test) {
          // We haven't negotiated the new stream yet.
          test.pcLocal.expectNegotiationNeeded();
          return test.setLocalDescription(
              test.pcLocal,
              new RTCSessionDescription({ type: "rollback", sdp: ""}),
              STABLE);
        },

        // Rolling back should shut down gathering
        function PC_LOCAL_WAIT_FOR_END_OF_TRICKLE(test) {
          return test.pcLocal.endOfTrickleIce;
        },
        function PC_REMOTE_WAIT_FOR_END_OF_TRICKLE(test) {
          return test.pcRemote.endOfTrickleIce;
        },

        function PC_LOCAL_EXPECT_ICE_CHECKING(test) {
          test.pcLocal.expectIceChecking();
        },
        function PC_REMOTE_EXPECT_ICE_CHECKING(test) {
          test.pcRemote.expectIceChecking();
        }
      ],
      1 // Replaces after second PC_REMOTE_CREATE_ANSWER
    );
    test.chain.append(commandsPeerConnectionOfferAnswer);

    // for now, only use one stream, because rollback doesn't seem to
    // like multiple streams.  See bug 1259465.
    test.setMediaConstraints([{audio: true}],
                             [{audio: true}]);
    test.run();
  });

</script>
</pre>
</body>
</html>