Source/WebCore/ChangeLog

 12012-10-01 Arko Saha <arko@motorola.com>
 2
 3 Microdata: itemprop names must not override builtin properties.
 4 https://bugs.webkit.org/show_bug.cgi?id=98025
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 We should look in the prototype for functions before assuming it as
 9 an item's name. Return false if the prototype of the object has a
 10 property (function) with propertyName.
 11
 12 Test: fast/dom/MicroData/itemprop-names-override-builtin-properties.html
 13
 14 * bindings/scripts/CodeGeneratorJS.pm:
 15 (GenerateGetOwnPropertySlotBody):
 16 (GenerateGetOwnPropertyDescriptorBody):
 17
1182012-10-01 Andrei Bucur <abucur@adobe.com>
219
320 [CSS Regions] Remove the deprecated API Document.webkitGetFlowByName
130042

Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

@@sub GenerateGetOwnPropertySlotBody
391391
392392 my @getOwnPropertySlotImpl = ();
393393
394  if ($interfaceName eq "NamedNodeMap" or $interfaceName eq "HTMLCollection" or $interfaceName eq "HTMLAllCollection") {
 394 if ($interfaceName eq "NamedNodeMap" or $interfaceName eq "HTMLCollection" or $interfaceName eq "HTMLAllCollection" or $interfaceName eq "HTMLPropertiesCollection") {
395395 push(@getOwnPropertySlotImpl, " ${namespaceMaybe}JSValue proto = thisObject->prototype();\n");
396396 push(@getOwnPropertySlotImpl, " if (proto.isObject() && jsCast<${namespaceMaybe}JSObject*>(asObject(proto))->hasProperty(exec, propertyName))\n");
397397 push(@getOwnPropertySlotImpl, " return false;\n\n");

@@sub GenerateGetOwnPropertyDescriptorBody
483483 push(@implContent, " return false;\n");
484484 }
485485
486  if ($interfaceName eq "NamedNodeMap" or $interfaceName eq "HTMLCollection" or $interfaceName eq "HTMLAllCollection") {
 486 if ($interfaceName eq "NamedNodeMap" or $interfaceName eq "HTMLCollection" or $interfaceName eq "HTMLAllCollection" or $interfaceName eq "HTMLPropertiesCollection") {
487487 push(@getOwnPropertyDescriptorImpl, " ${namespaceMaybe}JSValue proto = thisObject->prototype();\n");
488488 push(@getOwnPropertyDescriptorImpl, " if (proto.isObject() && jsCast<${namespaceMaybe}JSObject*>(asObject(proto))->hasProperty(exec, propertyName))\n");
489489 push(@getOwnPropertyDescriptorImpl, " return false;\n\n");
130042

LayoutTests/ChangeLog

 12012-10-01 Arko Saha <arko@motorola.com>
 2
 3 Microdata: itemprop names must not override builtin properties.
 4 https://bugs.webkit.org/show_bug.cgi?id=98025
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 Added test case to verify that itemprop names must not override builtin properties.
 9
 10 * fast/dom/MicroData/itemprop-names-override-builtin-properties-expected.txt: Added.
 11 * fast/dom/MicroData/itemprop-names-override-builtin-properties.html: Added.
 12
1132012-10-01 Andrey Kosyakov <caseq@chromium.org>
214
315 Unreviewed gardening -- clean up expectations for passing tests.
130042

LayoutTests/fast/dom/MicroData/itemprop-names-override-builtin-properties-expected.txt

 1Test to verify that itemprop names must not override builtin properties.
 2
 3On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 4
 5
 6Created element of type: div
 7Set attribute: itemscope, value: itemscope
 8PASS element.properties['namedItem'] is namedItem
 9PASS element.properties['item'] is item
 10PASS successfullyParsed is true
 11
 12TEST COMPLETE
 13
0

LayoutTests/fast/dom/MicroData/itemprop-names-override-builtin-properties.html

 1<html>
 2<head>
 3<script src="../../js/resources/js-test-pre.js"></script>
 4<script src="resources/microdata-common.js"></script>
 5</head>
 6<body>
 7<script>
 8description("Test to verify that itemprop names must not override builtin properties.");
 9
 10var element = createElement('div', {itemscope: 'itemscope'});
 11
 12var namedItem = element.properties.namedItem;
 13var item = element.properties.item;
 14element.innerHTML = '<div itemprop="namedItem item"></div>';
 15
 16shouldBe("element.properties['namedItem']", "namedItem");
 17shouldBe("element.properties['item']", "item");
 18
 19</script>
 20<script src="../../js/resources/js-test-post.js"></script>
 21</body>
 22</html>
0