Fix for bug 691707 (Enumerating new proxy-based DOM bindings should enumerate the prototype too). r=mrbkap.

--HG--
extra : rebase_source : 788c2b3f9666ca654fab67047f6309937360f725
This commit is contained in:
Peter Van der Beken 2012-02-07 20:55:37 +01:00
Родитель 58ccbf0620
Коммит 7c9577d8ff
3 изменённых файлов: 37 добавлений и 2 удалений

Просмотреть файл

@ -155,6 +155,7 @@ _TEST_FILES = \
devicemotion_inner.html \
test_bug698061.html \
test_bug707749.html \
test_bug691707.html \
$(NULL)
libs:: $(_TEST_FILES)

Просмотреть файл

@ -0,0 +1,33 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=691707
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 691707</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=691707">Mozilla Bug 691707</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 691707 **/
var nodeList = document.body.childNodes;
var properties = [i for (i in nodeList)];
for (var j = 1; j < nodeList.length; ++j)
ok(properties.indexOf("" + j) >= 0, "Enumerating hit all numeric properties");
ok(properties.indexOf("item") >= 0, "Enumerating hit 'item' from the prototype");
ok(properties.indexOf("length") >= 0, "Enumerating hit 'length' from the prototype");
</script>
</pre>
</body>
</html>

Просмотреть файл

@ -852,8 +852,9 @@ template<class LC>
bool
ListBase<LC>::enumerate(JSContext *cx, JSObject *proxy, AutoIdVector &props)
{
// FIXME: enumerate proto as well
return getOwnPropertyNames(cx, proxy, props);
JSObject *proto = JS_GetPrototype(proxy);
return getOwnPropertyNames(cx, proxy, props) &&
(!proto || js::GetPropertyNames(cx, proto, 0, &props));
}
template<class LC>