mozilla

Compare Revisions

WebIDL bindings

Change Revisions

Revision 463949:

Revision 463949 by lxd on

Revision 465851:

Revision 465851 by Bzbarsky on

Title:
WebIDL bindings
WebIDL bindings
Slug:
Mozilla/WebIDL_bindings
Mozilla/WebIDL_bindings
Tags:
"WebIDL"
"WebIDL"
Content:

Revision 463949
Revision 465851
t1017      There is support for implementing WebIDL interfaces in Javat1017      There is support for implementing WebIDL interfaces in Java
>Script.  When this is done, there are actually two objects c>Script.  When this is done, there are actually two objects c
>reated: the implementation object (running as a chrome-privileged>reated: the implementation object (running as a chrome-privileged
> script) and the content-exposed object (which is what the web pa> script) and the content-exposed object (which is what the web pa
>ge sees).  This allows the implementation object to have var>ge sees).  This allows the implementation object to have var
>ious APIs that the content-exposed object does not.>ious APIs that the content-exposed object does not.  It also
 > means that consumers have to be careful about which object they 
 >are creating.
1018    </p>
1019    <h3>
1020      Creating JS-implemented WebIDL objects
1021    </h3>
1018    </p>1022    <p>
1023      To create a JS-implemented WebIDL object, one must create b
 >oth the chrome-side implementation object and the content-side pa
 >ge-exposed object. There are three ways to do this.
1024    </p>
1025    <h4>
1026      Using the WebIDL constructor
1027    </h4>
1028    <p>
1029      If the interface has a constructor, a content-side object c
 >an be created by getting that constructor from the relevant conte
 >nt window and invoking it. For example:
1030    </p>
1031    <pre class="brush: js">
1032var contentObject = new contentWin.RTCPeerConnection();
1033</pre>
1034    <p>
1035      The returned object will be an Xray wrapper for the content
 >-side object. Creating the object this way will automatically cre
 >ate the chrome-side object using its contractID.
1036    </p>
1037    <p>
1038      This method is limited to the constructor signatures expose
 >d to webpages. Any additional configuration of the object needs t
 >o be done via <a href="#ChromeOnly" title="#ChromeOnly"><code>[Ch
 >romeOnly]</code></a> methods on the interface.&nbsp;
1039    </p>
1040    <p>
1041      Creating many objects this way can be slow due to the creat
 >eInstance overhead involved.&nbsp;
1042    </p>
1043    <h4>
1044      Using a <code>_create</code> method &nbsp;
1045    </h4>
1046    <p>
1047      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
 >;&nbsp;
1048    </p>
1049    <h3>
1050      Implementing a WebIDL object in JavaScript
1051    </h3>

Back to History