[Bug 13752] Figure out what 'delete window.Node' should do

http://www.w3.org/Bugs/Public/show_bug.cgi?id=13752

Garrett <dhtmlkitchen@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dhtmlkitchen@gmail.com

--- Comment #4 from Garrett <dhtmlkitchen@gmail.com> 2011-08-29 03:25:10 UTC ---
Here is your code:

function testInterfaceDeletable(iface) {
  test(function() {
    assert_true(!!window[iface], "Interface should exist.")
    assert_true(delete window[iface], "The delete operator should return
true.")
    assert_equals(window[iface], undefined, "Interface should be gone.")
}
 Avoid getting bit by ASI bugs by consistently using explicit semicolons where
they are required.

The delete operator does not "return" anything. The delete operator is just
what it is: an operator. It performs an operation which has a boolean result. 

test(function() {
  for (var p in window) {
    interfaces.forEach(function(i) {
      assert_not_equals(p, i)
    })
  }
}, "Interface objects properties should not be Enumerable")

If `window` is specified to have own interface objects as own properties, then
you can use:

({}).propertyIsEnumerable.call(window, "Node");

Otherwise, if interface objects can exist in `window` prototype chain,
`propertyIsEnumerable`, which doesn't check the object's prototype, won't work
there.

Does WebIDL or HTML5 specify `window` to have `Object.prototype` on its
prototype chain? If so, then the code could use
`window.propertyIsEnumerable("Node")`.

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

Received on Monday, 29 August 2011 03:25:18 UTC