User:Waldo/postMessage: Difference between revisions

final edits
(fill out more)
(final edits)
Line 10: Line 10:
'' When do you anticipate the feature landing''
'' When do you anticipate the feature landing''


My patch is at nearly 80% tests counting the number of lines added; I've added tests for everything I can think of and everything anyone else has suggested, and I know of nothing further that must be done.  This can land as soon as sicking reviews, someone else super-reviews, and the patch gets approval.  How long that is is up to the reviewers.
This can land as soon as sicking reviews, someone else super-reviews, and the patch gets approval.  How long that is is up to the reviewers.


''Any relevant status comments for the feature can be placed here.''
My patch is at nearly 80% tests going by the number of lines added; I've added tests for everything I can think of and everything anyone else has suggested, and I know of nothing further that must be done. We significantly outstrip WebKit in terms of implementation correctness, going by how they perform on our tests.  I looked at how we performed on their testcases, but the functionality tested in our tests fully subsumes the functionality tested in their tests.
 
Patch is fully complete, and of all the lines it adds 80% are tests -- should given an idea just how thoroughly this feature has been tested, given that much of the implementation is straightforward.


= Overview =
= Overview =
Line 47: Line 45:
== Schedule ==
== Schedule ==


The patch is functionally complete; once reviews have been completed it is ready to land as soon as possible.
The patch is functionally complete; once reviews have been completed it is ready to land immediately.


== UI Design Documentation ==
== UI Design Documentation ==
Line 59: Line 57:
* What security issues do you address in your project?
* What security issues do you address in your project?


This feature addresses the relative insecurity of current mechanisms for communicating across domains, which rely upon extant holes in the same-origin model, in ways they were not designed to support.
This feature addresses the relative insecurity of current mechanisms for communicating across domains, which rely upon extant holes in the same-origin model, in ways they were not designed to support.  Current mechanisms are fragile and rely upon large holes in the same-origin restriction; the size of the hole this opens is small and well-defined.


* Is system or subsystem security compromised in any way if your project's configuration files / prefs are corrupt or missing?
* Is system or subsystem security compromised in any way if your project's configuration files / prefs are corrupt or missing?


The single preference in <code>all.js</code>, if not present, prevents access to <code>postMessage</code> entirely.
The absence of the single preference in <code>all.js</code> safely prevents access to <code>postMessage</code> entirely.


* Include a thorough description of the security assumptions, capabilities and any potential risks (possible attack points) being introduced by your project.
* Include a thorough description of the security assumptions, capabilities and any potential risks (possible attack points) being introduced by your project.
Line 86: Line 84:
This API is purely client-side.
This API is purely client-side.


* Explain the significant file formats, names, syntax, and semantics.
* Explain the significant names, syntax, and semantics.


See the overview section.
See the overview section.
Line 92: Line 90:
* Are the externally visible interfaces documented clearly enough for a non-Mozilla developer to use them successfully?
* Are the externally visible interfaces documented clearly enough for a non-Mozilla developer to use them successfully?


Yes, and the HTML5 specification describes the API fairly clearly (only at the edges and in interactions with as-yet-unspecified functionality does it start to fail).
Yes, and the HTML5 specification describes the API fairly clearly (only at the edges and in interactions with as-yet-unspecified functionality is it less than adequate, but our tests define very specific behaviors in these cases).


* Does it change any existing interfaces?
* Does it change any existing interfaces?


The unfrozen interface <code>nsIDOMWindowInternal</code> grows a method.
The unfrozen interface <code>nsIDOMWindowInternal</code> grows a method, and the <code>nsIDOMMessageEvent</code> interface is added.


== Web Compatibility ==
== Web Compatibility ==


* Does the feature had any impact on Web compatibility?
* Does the feature have any impact on Web compatibility?


WebKit nightlies implement <code>postMessage</code>, and Opera has an implementation available upon <code>Document</code>.  It is at their request that this is being considered at such a late stage in the release cycle.
WebKit nightlies implement <code>postMessage</code>, and Opera has an implementation available upon <code>Document</code>.  It is at their request that this is being considered at such a late stage in the release cycle.
Line 108: Line 106:
* How will the project contribute (positively or negatively) to "perceived performance"?
* How will the project contribute (positively or negatively) to "perceived performance"?


<code>postMessage</code> is a performance win for cross-domain communication.  Existing methods for communication are not synchronous and may involve polling, resulting in increased time and resource consumption.
<code>postMessage</code> is a performance win for cross-domain communication.  Existing methods for communication are not synchronous and may involve polling or unnecessary and gratuitous event listeners, resulting in increased time and resource consumption.


* What are the performance goals of the project? How were they evaluated? What is the test or reference platform and baseline results?
* What are the performance goals of the project? How were they evaluated? What is the test or reference platform and baseline results?


The primary concerns during implementation were correctness and security; given the relative un-complexity of the implementation, it seems likely that performance will be primarily gated by XPConnect speed.
The primary concerns during implementation were correctness and security; given the relative un-complexity of the implementation, it seems likely that performance will be primarily gated by XPConnect and event dispatch speed.


* Will it require large files/databases (for example, browsing history)?
* Will it require large files/databases (for example, browsing history)?
Line 145: Line 143:


* Does is have a hardware requirement (or increase minimum requirements)?
* Does is have a hardware requirement (or increase minimum requirements)?
No.
* Does it require changes to the installer?
* Does it require changes to the installer?
No.
* Does it impact updates?
* Does it impact updates?


No.
No.


*list the expected behavior of this feature/function when Firefox is upgraded to a newer minor release, downgraded by installation of an earlier revision, or re-installed (same version)
* List the expected behavior of this feature/function when Firefox is upgraded to a newer minor release, downgraded by installation of an earlier revision, or re-installed (same version)


No change.
<code>postMessage</code> functionality would disappear in a downgrade, but otherwise no change.


== configuration ==
== configuration ==
Confirmed users
446

edits