| OLD | NEW | 
|---|
| 1 description("Make sure prototypes are set up using the window a property came fr
    om, instead of the lexical global object.") | 1 description("Make sure prototypes are set up using the window a property came fr
    om, instead of the lexical global object.") | 
| 2 | 2 | 
| 3 var subframe = document.createElement("iframe"); | 3 var subframe = document.createElement("iframe"); | 
| 4 document.body.appendChild(subframe); | 4 document.body.appendChild(subframe); | 
| 5 var inner = subframe.contentWindow; // Call it "inner" to make shouldBe output s
    horter | 5 var inner = subframe.contentWindow; // Call it "inner" to make shouldBe output s
    horter | 
| 6 | 6 | 
| 7 // Stash a property on the prototypes. | 7 // Stash a property on the prototypes. | 
| 8 window.Object.prototype.isInner = false; | 8 window.Object.prototype.isInner = false; | 
| 9 inner.Object.prototype.isInner = true; | 9 inner.Object.prototype.isInner = true; | 
| 10 | 10 | 
| 11 function classNameForObject(object) | 11 function classNameForObject(object) | 
| 12 { | 12 { | 
| 13     // call will use the global object if passed null or undefined, so special c
    ase those: | 13     // call will use the global object if passed null or undefined, so special c
    ase those: | 
| 14     if (object == null) | 14     if (object == null) | 
| 15         return null; | 15         return null; | 
| 16     var result = Object.prototype.toString.call(object); | 16     var result = Object.prototype.toString.call(object); | 
| 17     // remove '[object ' and ']' | 17     // remove '[object ' and ']' | 
| 18     return result.split(' ')[1].split(']')[0]; | 18     return result.split(' ')[1].split(']')[0]; | 
| 19 } | 19 } | 
| 20 | 20 | 
| 21 function constructorPropertiesOnWindow(globalObject) | 21 function constructorPropertiesOnWindow(globalObject) | 
| 22 { | 22 { | 
| 23     var constructorNames = []; | 23     var constructorNames = []; | 
| 24     for (var property in globalObject) { | 24     var propertyNames = Object.getOwnPropertyNames(window); | 
| 25         var value = inner[property]; | 25     for (var i = 0; i < propertyNames.length; i++) { | 
|  | 26         var value = inner[propertyNames[i]]; | 
| 26         if (value == null) | 27         if (value == null) | 
| 27             continue; | 28             continue; | 
| 28         var type = classNameForObject(value); | 29         var type = classNameForObject(value); | 
| 29         // Ignore these properties because they do not exist in all implementati
    ons. They will be tested separately | 30         // Ignore these properties because they do not exist in all implementati
    ons. They will be tested separately | 
| 30         if (type == "WebGLRenderingContextConstructor" || | 31         if (type == "WebGLRenderingContextConstructor" || | 
| 31             type == "ArrayBufferConstructor" || | 32             type == "ArrayBufferConstructor" || | 
| 32             type =="Float32ArrayConstructor" || | 33             type =="Float32ArrayConstructor" || | 
| 33             type =="Float64ArrayConstructor" || | 34             type =="Float64ArrayConstructor" || | 
| 34             type =="Int8ArrayConstructor" || | 35             type =="Int8ArrayConstructor" || | 
| 35             type =="Int16ArrayConstructor" || | 36             type =="Int16ArrayConstructor" || | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
| 66         constructedObject = eval("new inner." + constructorName + argumentsStrin
    g); | 67         constructedObject = eval("new inner." + constructorName + argumentsStrin
    g); | 
| 67     } catch(e) { | 68     } catch(e) { | 
| 68         continue; | 69         continue; | 
| 69     } | 70     } | 
| 70 | 71 | 
| 71     shouldBeTrue("(new inner." + constructorName + argumentsString + ").isInner"
    ); | 72     shouldBeTrue("(new inner." + constructorName + argumentsString + ").isInner"
    ); | 
| 72     shouldBeTrue("(new inner." + constructorName + argumentsString + ").construc
    tor.isInner"); | 73     shouldBeTrue("(new inner." + constructorName + argumentsString + ").construc
    tor.isInner"); | 
| 73 } | 74 } | 
| 74 | 75 | 
| 75 document.body.removeChild(subframe); | 76 document.body.removeChild(subframe); | 
| OLD | NEW | 
|---|