Coder Social home page Coder Social logo

Comments (2)

jan-ivar avatar jan-ivar commented on June 16, 2024

RTCSessionDescriptionInit differs from RTCLocalSessionDescriptionInit by its type member being required:

dictionary RTCSessionDescriptionInit {
  required RTCSdpType type;
  DOMString sdp = "";
};

vs.

dictionary RTCLocalSessionDescriptionInit {
  RTCSdpType type;
  DOMString sdp = "";
};

This is what allows description to be optional in sLD but not in sRD:

  Promise<undefined> setLocalDescription(optional RTCLocalSessionDescriptionInit description = {});
  Promise<undefined> setRemoteDescription(RTCSessionDescriptionInit description);

...which is observable:

pc.setLocalDescription(); // fine
pc.setLocalDescription({type: "rollback"}); // fine
pc.setRemoteDescription({type: "rollback"}); // also fine
pc.setRemoteDescription(); // TypeError

RTCPeerConnection.prototype.setLocalDescription.length // 0
RTCPeerConnection.prototype.setRemoteDescription.length // 1

So this is by design.

Problem: Dart Language web bindings which are generated from IDL is having an dart-lang/web#178 where RTCLocalSessionDescriptionInit and RTCSessionDescriptionInit are unique, and neither class implements the other. This seems inconsistent with MDN and actual usage.

WebIDL dictionaries are not classes or interfaces: "an operation that accepts a dictionary as an argument will perform a one-time conversion from the given JavaScript value into the dictionary, based on the current properties of the JavaScript object"

IOW member-compatible inputs are valid, making RTCSessionDescriptionInit valid input to a method expecting RTCLocalSessionDescriptionInit.

If the Dart Language web bindings cannot express this then that seems like a limitation of those bindings.

from webrtc-pc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.