Unreviewed, rolling out r207319.
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 14 Oct 2016 22:16:34 +0000 (22:16 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 14 Oct 2016 22:16:34 +0000 (22:16 +0000)
Regressed Dromaeo and may have caused crashes under
GuardMalloc (rdar://problem/28780835)

Reverted changeset:

"[Web IDL] Add support for [SameObject] extended attribute"
https://bugs.webkit.org/show_bug.cgi?id=163414
http://trac.webkit.org/changeset/207319

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@207355 268f45cc-cd09-0410-ab3c-d52691b4dbfc

38 files changed:
LayoutTests/ChangeLog
LayoutTests/js/dom/SameObject-support-expected.txt [deleted file]
LayoutTests/js/dom/SameObject-support.html [deleted file]
Source/WebCore/ChangeLog
Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
Source/WebCore/bindings/scripts/IDLAttributes.txt
Source/WebCore/dom/DataTransfer.idl
Source/WebCore/dom/Document.idl
Source/WebCore/dom/Element.idl
Source/WebCore/dom/MutationRecord.idl
Source/WebCore/dom/Node.idl
Source/WebCore/dom/NodeIterator.idl
Source/WebCore/dom/ParentNode.idl
Source/WebCore/dom/TreeWalker.idl
Source/WebCore/html/HTMLAnchorElement.idl
Source/WebCore/html/HTMLAreaElement.idl
Source/WebCore/html/HTMLButtonElement.idl
Source/WebCore/html/HTMLDataListElement.idl
Source/WebCore/html/HTMLDocument.idl
Source/WebCore/html/HTMLElement.idl
Source/WebCore/html/HTMLFieldSetElement.idl
Source/WebCore/html/HTMLFormElement.idl
Source/WebCore/html/HTMLIFrameElement.idl
Source/WebCore/html/HTMLInputElement.idl
Source/WebCore/html/HTMLKeygenElement.idl
Source/WebCore/html/HTMLLinkElement.idl
Source/WebCore/html/HTMLMapElement.idl
Source/WebCore/html/HTMLMediaElement.idl
Source/WebCore/html/HTMLMeterElement.idl
Source/WebCore/html/HTMLOutputElement.idl
Source/WebCore/html/HTMLProgressElement.idl
Source/WebCore/html/HTMLSelectElement.idl
Source/WebCore/html/HTMLTableElement.idl
Source/WebCore/html/HTMLTableRowElement.idl
Source/WebCore/html/HTMLTableSectionElement.idl
Source/WebCore/html/HTMLTextAreaElement.idl
Source/WebCore/page/Location.idl
Source/WebCore/page/Navigator.idl

index 85a94ee..494a9b5 100644 (file)
@@ -1,3 +1,16 @@
+2016-10-14  Chris Dumez  <cdumez@apple.com>
+
+        Unreviewed, rolling out r207319.
+
+        Regressed Dromaeo and may have caused crashes under
+        GuardMalloc (rdar://problem/28780835)
+
+        Reverted changeset:
+
+        "[Web IDL] Add support for [SameObject] extended attribute"
+        https://bugs.webkit.org/show_bug.cgi?id=163414
+        http://trac.webkit.org/changeset/207319
+
 2016-10-14  Manuel Rego Casasnovas  <rego@igalia.com>
 
         [css-grid] Changing the argument on fit-content() doesn't cause the grid to be relayout
diff --git a/LayoutTests/js/dom/SameObject-support-expected.txt b/LayoutTests/js/dom/SameObject-support-expected.txt
deleted file mode 100644 (file)
index 4ccdac1..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-Test support for [SameObject] extended attribute in Web IDL.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS document.implementation === document.implementation is true
-PASS document.implementation.foo is 1
-
-PASS document.images === document.images is true
-PASS document.images.foo is 1
-
-PASS document.applets === document.applets is true
-PASS document.applets.foo is 1
-
-PASS document.links === document.links is true
-PASS document.links.foo is 1
-
-PASS document.forms === document.forms is true
-PASS document.forms.foo is 1
-
-PASS document.anchors === document.anchors is true
-PASS document.anchors.foo is 1
-
-PASS document.embeds === document.embeds is true
-PASS document.embeds.foo is 1
-
-PASS document.plugins === document.plugins is true
-PASS document.plugins.foo is 1
-
-PASS document.scripts === document.scripts is true
-PASS document.scripts.foo is 1
-
-PASS htmlElement.childNodes === htmlElement.childNodes is true
-PASS htmlElement.childNodes.foo is 1
-
-PASS htmlElement.attributes === htmlElement.attributes is true
-PASS htmlElement.attributes.foo is 1
-
-PASS htmlElement.classList === htmlElement.classList is true
-PASS htmlElement.classList.foo is 1
-
-PASS htmlElement.children === htmlElement.children is true
-PASS htmlElement.children.foo is 1
-
-PASS htmlElement.dataset === htmlElement.dataset is true
-PASS htmlElement.dataset.foo is 1
-
-PASS anchorElement.relList === anchorElement.relList is true
-PASS anchorElement.relList.foo is 1
-
-PASS areaElement.relList === areaElement.relList is true
-PASS areaElement.relList.foo is 1
-
-PASS buttonElement.labels === buttonElement.labels is true
-PASS buttonElement.labels.foo is 1
-
-PASS fieldsetElement.elements === fieldsetElement.elements is true
-PASS fieldsetElement.elements.foo is 1
-
-PASS fieldsetElement.validity === fieldsetElement.validity is true
-PASS fieldsetElement.validity.foo is 1
-
-PASS formElement.elements === formElement.elements is true
-PASS formElement.elements.foo is 1
-
-PASS iframeElement.sandbox === iframeElement.sandbox is true
-PASS iframeElement.sandbox.foo is 1
-
-PASS inputElement.labels === inputElement.labels is true
-PASS inputElement.labels.foo is 1
-
-PASS keygenElement.labels === keygenElement.labels is true
-PASS keygenElement.labels.foo is 1
-
-PASS linkElement.sizes === linkElement.sizes is true
-PASS linkElement.sizes.foo is 1
-
-PASS linkElement.relList === linkElement.relList is true
-PASS linkElement.relList.foo is 1
-
-PASS mapElement.areas === mapElement.areas is true
-PASS mapElement.areas.foo is 1
-
-PASS mediaElement.audioTracks === mediaElement.audioTracks is true
-PASS mediaElement.audioTracks.foo is 1
-
-PASS mediaElement.textTracks === mediaElement.textTracks is true
-PASS mediaElement.textTracks.foo is 1
-
-PASS mediaElement.videoTracks === mediaElement.videoTracks is true
-PASS mediaElement.videoTracks.foo is 1
-
-PASS meterElement.labels === meterElement.labels is true
-PASS meterElement.labels.foo is 1
-
-PASS outputElement.htmlFor === outputElement.htmlFor is true
-PASS outputElement.htmlFor.foo is 1
-
-PASS outputElement.labels === outputElement.labels is true
-PASS outputElement.labels.foo is 1
-
-PASS progressElement.labels === progressElement.labels is true
-PASS progressElement.labels.foo is 1
-
-PASS selectElement.options === selectElement.options is true
-PASS selectElement.options.foo is 1
-
-PASS selectElement.selectedOptions === selectElement.selectedOptions is true
-PASS selectElement.selectedOptions.foo is 1
-
-PASS selectElement.labels === selectElement.labels is true
-PASS selectElement.labels.foo is 1
-
-PASS tableElement.rows === tableElement.rows is true
-PASS tableElement.rows.foo is 1
-
-PASS tableElement.tBodies === tableElement.tBodies is true
-PASS tableElement.tBodies.foo is 1
-
-PASS trElement.cells === trElement.cells is true
-PASS trElement.cells.foo is 1
-
-PASS tbodyElement.rows === tbodyElement.rows is true
-PASS tbodyElement.rows.foo is 1
-
-PASS textareaElement.labels === textareaElement.labels is true
-PASS textareaElement.labels.foo is 1
-
-PASS location.ancestorOrigins === location.ancestorOrigins is true
-
-PASS navigator.plugins === navigator.plugins is true
-PASS navigator.plugins.foo is 1
-
-PASS navigator.mimeTypes === navigator.mimeTypes is true
-PASS navigator.mimeTypes.foo is 1
-
-PASS nodeIterator.root === nodeIterator.root is true
-PASS nodeIterator.root.foo is 1
-
-PASS treeWalker.root === treeWalker.root is true
-PASS treeWalker.root.foo is 1
-
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/js/dom/SameObject-support.html b/LayoutTests/js/dom/SameObject-support.html
deleted file mode 100644 (file)
index d405826..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<!DOCTYPE html>
-<html>
-<body>
-<script src="../../resources/js-test-pre.js"></script>
-<script>
-description("Test support for [SameObject] extended attribute in Web IDL.");
-
-var htmlElement = document.createElement("test");
-var anchorElement = document.createElement("a");
-var areaElement = document.createElement("area");
-var buttonElement = document.createElement("button");
-var formElement = document.createElement("form");
-var iframeElement = document.createElement("iframe");
-var inputElement = document.createElement("input");
-var keygenElement = document.createElement("keygen");
-var fieldsetElement = document.createElement("fieldset");
-var linkElement = document.createElement("link");
-var mapElement = document.createElement("map");
-var mediaElement = document.createElement("video");
-var meterElement = document.createElement("meter");
-var outputElement = document.createElement("output");
-var progressElement = document.createElement("progress");
-var selectElement = document.createElement("select");
-var tableElement = document.createElement("table");
-var trElement = document.createElement("tr");
-var tbodyElement = document.createElement("tbody");
-var textareaElement = document.createElement("textarea");
-var nodeIterator = document.createNodeIterator(document.body);
-var treeWalker = document.createTreeWalker(document.body);
-
-function testSameObjectAttribute(object, attributeName)
-{
-    try {
-        shouldBeTrue(object + "." + attributeName + " === " + object + "." + attributeName);
-
-        var attributeObject = eval(object + "['" + attributeName + "']");
-        if (!Object.isFrozen(attributeObject)) {
-            Object.defineProperty(attributeObject, "foo", { value: 1 });
-            document.body.appendChild(document.createElement('span')); // DOM tree mutation.
-            gc();
-            shouldBe(object + "." + attributeName + ".foo", "1");
-        }
-    } catch(e) {
-        testFailed("" + e);
-    }
-    debug("");
-}
-
-var documentAttributes = ["implementation", "images", "applets", "links", "forms", "anchors", "embeds", "plugins", "scripts"];
-for (var attribute of documentAttributes)
-    testSameObjectAttribute("document", attribute);
-
-var htmlElementAttributes = ["childNodes", "attributes", "classList", "children", "dataset"];
-for (var attribute of htmlElementAttributes)
-    testSameObjectAttribute("htmlElement", attribute);
-
-testSameObjectAttribute("anchorElement", "relList");
-
-testSameObjectAttribute("areaElement", "relList");
-
-testSameObjectAttribute("buttonElement", "labels");
-
-var fiedsetElementAttributes = ["elements", "validity"];
-for (var attribute of fiedsetElementAttributes)
-    testSameObjectAttribute("fieldsetElement", attribute);
-
-testSameObjectAttribute("formElement", "elements");
-
-testSameObjectAttribute("iframeElement", "sandbox");
-
-testSameObjectAttribute("inputElement", "labels");
-
-testSameObjectAttribute("keygenElement", "labels");
-
-var linkElementAttributes = ["sizes", "relList"];
-for (var attribute of linkElementAttributes)
-    testSameObjectAttribute("linkElement", attribute);
-
-testSameObjectAttribute("mapElement", "areas");
-
-var mediaElementAttributes = ["audioTracks", "textTracks", "videoTracks"];
-for (var attribute of mediaElementAttributes)
-    testSameObjectAttribute("mediaElement", attribute);
-
-testSameObjectAttribute("meterElement", "labels");
-
-var outputElementAttributes = ["htmlFor", "labels"];
-for (var attribute of outputElementAttributes)
-    testSameObjectAttribute("outputElement", attribute);
-
-testSameObjectAttribute("progressElement", "labels");
-
-var selectElementAttributes = ["options", "selectedOptions", "labels"];
-for (var attribute of selectElementAttributes)
-    testSameObjectAttribute("selectElement", attribute);
-
-var tableElementAttributes = ["rows", "tBodies"];
-for (var attribute of tableElementAttributes)
-    testSameObjectAttribute("tableElement", attribute);
-
-testSameObjectAttribute("trElement", "cells");
-
-testSameObjectAttribute("tbodyElement", "rows");
-
-testSameObjectAttribute("textareaElement", "labels");
-
-testSameObjectAttribute("location", "ancestorOrigins");
-
-var navigatorAttributes = ["plugins", "mimeTypes"];
-for (var attribute of navigatorAttributes)
-    testSameObjectAttribute("navigator", attribute);
-
-testSameObjectAttribute("nodeIterator", "root");
-
-testSameObjectAttribute("treeWalker", "root");
-</script>
-<script src="../../resources/js-test-post.js"></script>
-</body>
-</html>
index 87f6fe0..ee6c3d8 100644 (file)
@@ -1,3 +1,16 @@
+2016-10-14  Chris Dumez  <cdumez@apple.com>
+
+        Unreviewed, rolling out r207319.
+
+        Regressed Dromaeo and may have caused crashes under
+        GuardMalloc (rdar://problem/28780835)
+
+        Reverted changeset:
+
+        "[Web IDL] Add support for [SameObject] extended attribute"
+        https://bugs.webkit.org/show_bug.cgi?id=163414
+        http://trac.webkit.org/changeset/207319
+
 2016-10-14  Anders Carlsson  <andersca@apple.com>
 
         Clean up BackForwardClient
index 35bd09c..499d95b 100644 (file)
@@ -352,15 +352,6 @@ sub ShouldUseGlobalObjectPrototype
     return IsDOMGlobalObject($interface);
 }
 
-sub ShouldCacheAttribute
-{
-    my $attribute = shift;
-
-    return 1 if $attribute->signature->extendedAttributes->{CachedAttribute};
-    return 1 if $attribute->signature->extendedAttributes->{SameObject};
-    return 0;
-}
-
 sub GenerateGetOwnPropertySlotBody
 {
     my ($interface, $className, $inlined) = @_;
@@ -1490,7 +1481,7 @@ sub GenerateHeader
             my $attribute = $_;
             $numCustomAttributes++ if HasCustomGetter($attribute->signature->extendedAttributes);
             $numCustomAttributes++ if HasCustomSetter($attribute->signature->extendedAttributes);
-            if (ShouldCacheAttribute($attribute)) {
+            if ($attribute->signature->extendedAttributes->{CachedAttribute}) {
                 my $conditionalString = $codeGenerator->GenerateConditionalString($attribute->signature);
                 push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
                 push(@headerContent, "    mutable JSC::WriteBarrier<JSC::Unknown> m_" . $attribute->signature->name . ";\n");
@@ -3073,7 +3064,7 @@ sub GenerateImplementation
                 }
             }
 
-            $needsVisitChildren = 1 if ShouldCacheAttribute($attribute);
+            $needsVisitChildren = 1 if $attribute->signature->extendedAttributes->{CachedAttribute};
 
             if ($interface->extendedAttributes->{CheckSecurity} &&
                 !$attribute->signature->extendedAttributes->{DoNotCheckSecurity} &&
@@ -3148,7 +3139,7 @@ sub GenerateImplementation
                 }
             } elsif (!$attribute->signature->extendedAttributes->{GetterMayThrowLegacyException}) {
                 my $cacheIndex = 0;
-                if (ShouldCacheAttribute($attribute)) {
+                if ($attribute->signature->extendedAttributes->{CachedAttribute}) {
                     $cacheIndex = $currentCachedAttribute;
                     $currentCachedAttribute++;
                     push(@implContent, "    if (JSValue cachedValue = thisObject.m_" . $attribute->signature->name . ".get())\n");
@@ -3191,7 +3182,7 @@ sub GenerateImplementation
                     }
                 }
 
-                push(@implContent, "    thisObject.m_" . $attribute->signature->name . ".set(state.vm(), &thisObject, result);\n") if ShouldCacheAttribute($attribute);
+                push(@implContent, "    thisObject.m_" . $attribute->signature->name . ".set(state.vm(), &thisObject, result);\n") if $attribute->signature->extendedAttributes->{CachedAttribute};
                 push(@implContent, "    return result;\n");
 
             } else {
@@ -3777,7 +3768,7 @@ END
         if ($numCachedAttributes > 0) {
             foreach (@{$interface->attributes}) {
                 my $attribute = $_;
-                if (ShouldCacheAttribute($attribute)) {
+                if ($attribute->signature->extendedAttributes->{CachedAttribute}) {
                     push(@implContent, "    visitor.append(&thisObject->m_" . $attribute->signature->name . ");\n");
                 }
             }
index 99f32ac..ac28bb7 100644 (file)
@@ -114,7 +114,6 @@ Replaceable
 ReportExtraMemoryCost
 ReportExternalMemoryCost
 RequiresExistingAtomicString
-SameObject
 SetterCallWith=ScriptExecutionContext|ScriptState|ScriptArguments|CallStack|ActiveWindow|FirstWindow
 SetterMayThrowException
 SetterMayThrowLegacyException
index 0a2c4d2..e3e9042 100644 (file)
     attribute DOMString effectAllowed;
 
     [CustomGetter] readonly attribute Array types;
-    [SameObject] readonly attribute FileList files;
+    readonly attribute FileList files;
 
     void clearData(optional DOMString type);
     DOMString getData(DOMString type);
     void setData(DOMString type, DOMString data);
     void setDragImage(Element? image, long x, long y); // FIXME: Element argument is not nullable in the HTML standard.
 
-    // FIXME: Should be [SameObject].
     [Conditional=DATA_TRANSFER_ITEMS] readonly attribute DataTransferItemList items;
 };
index eb64701..c962c0c 100644 (file)
@@ -28,7 +28,7 @@
     JSGenerateToNativeObject,
 ] interface Document : Node {
     readonly attribute DocumentType? doctype;
-    [SameObject] readonly attribute DOMImplementation implementation;
+    readonly attribute DOMImplementation implementation;
     readonly attribute Element? documentElement;
 
     [NewObject, MayThrowLegacyException, ImplementedAs=createElementForBindings] Element createElement(DOMString tagName);
     [SetterMayThrowLegacyException, ImplementedAs=bodyOrFrameset] attribute HTMLElement? body;
 
     readonly attribute HTMLHeadElement? head;
-    [SameObject] readonly attribute HTMLCollection images;
-    [SameObject] readonly attribute HTMLCollection applets;
-    [SameObject] readonly attribute HTMLCollection links;
-    [SameObject] readonly attribute HTMLCollection forms;
-    [SameObject] readonly attribute HTMLCollection anchors;
-    [SameObject] readonly attribute HTMLCollection embeds;
-    [SameObject] readonly attribute HTMLCollection plugins;
-    [SameObject] readonly attribute HTMLCollection scripts;
+    readonly attribute HTMLCollection images;
+    readonly attribute HTMLCollection applets;
+    readonly attribute HTMLCollection links;
+    readonly attribute HTMLCollection forms;
+    readonly attribute HTMLCollection anchors;
+    readonly attribute HTMLCollection embeds;
+    readonly attribute HTMLCollection plugins;
+    readonly attribute HTMLCollection scripts;
     readonly attribute DOMString lastModified;
 
     NodeList getElementsByName([AtomicString] DOMString elementName);
index c561805..4440f40 100644 (file)
@@ -38,7 +38,7 @@
 
     HTMLCollection getElementsByTagName(DOMString name);
 
-    [SameObject] readonly attribute NamedNodeMap attributes;
+    readonly attribute NamedNodeMap attributes;
     boolean hasAttributes();
 
     DOMString? getAttributeNS(DOMString? namespaceURI, DOMString localName);
     [TreatNullAs=EmptyString, SetterMayThrowLegacyException] attribute DOMString outerHTML;
 
     [CEReactions, Reflect=class] attribute DOMString className;
-    [SameObject, PutForwards=value] readonly attribute DOMTokenList classList;
+    [PutForwards=value] readonly attribute DOMTokenList classList;
 
     [MayThrowLegacyException] boolean matches(DOMString selectors);
     [MayThrowLegacyException] Element closest(DOMString selectors);    
index 8f1e90a..a5e7851 100644 (file)
     SkipVTableValidation
 ] interface MutationRecord {
     readonly attribute DOMString type;
-    [SameObject] readonly attribute Node target;
+    readonly attribute Node target;
 
-    [SameObject] readonly attribute NodeList addedNodes;
-    [SameObject] readonly attribute NodeList removedNodes;
+    readonly attribute NodeList addedNodes;
+    readonly attribute NodeList removedNodes;
     readonly attribute Node previousSibling;
     readonly attribute Node nextSibling;
 
index e3e66e4..1e90f41 100644 (file)
@@ -48,7 +48,7 @@
 
     [DOMJIT, CustomGetter] readonly attribute unsigned short nodeType;
     [DOMJIT] readonly attribute Node? parentNode;
-    [SameObject] readonly attribute NodeList childNodes;
+    readonly attribute NodeList childNodes;
     [DOMJIT] readonly attribute Node? firstChild;
     [DOMJIT] readonly attribute Node? lastChild;
     [DOMJIT] readonly attribute Node? previousSibling;
index d3853f8..f719b45 100644 (file)
@@ -23,7 +23,7 @@
     ImplementationLacksVTable,
     JSCustomMarkFunction,
 ] interface NodeIterator {
-    [SameObject] readonly attribute Node root;
+    readonly attribute Node root;
     readonly attribute unsigned long whatToShow;
     readonly attribute NodeFilter filter;
     readonly attribute Node referenceNode;
index 6d32319..3aa494e 100644 (file)
@@ -28,7 +28,7 @@
 [
     NoInterfaceObject,
 ] interface ParentNode {
-    [SameObject] readonly attribute HTMLCollection children;
+    readonly attribute HTMLCollection children;
     readonly attribute Element firstElementChild;
     readonly attribute Element lastElementChild;
     readonly attribute unsigned long childElementCount;
index 0c50ee4..1cc00ca 100644 (file)
@@ -23,7 +23,7 @@
     ImplementationLacksVTable,
     JSCustomMarkFunction,
 ] interface TreeWalker {
-    [SameObject] readonly attribute Node root;
+    readonly attribute Node root;
     readonly attribute unsigned long whatToShow;
     readonly attribute NodeFilter filter;
     attribute Node currentNode;
index 8d5e37d..f7cede1 100644 (file)
@@ -33,7 +33,7 @@ interface HTMLAnchorElement : HTMLElement {
 
     attribute DOMString text;
 
-    [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
+    [PutForwards=value] readonly attribute DOMTokenList relList;
 };
 
 HTMLAnchorElement implements HTMLHyperlinkElementUtils;
index 4ebfacb..1598583 100644 (file)
@@ -29,7 +29,7 @@ interface HTMLAreaElement : HTMLElement {
 
     [Conditional=DOWNLOAD_ATTRIBUTE, EnabledAtRuntime=DownloadAttribute, Reflect] attribute DOMString download;
 
-    [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
+    [PutForwards=value] readonly attribute DOMTokenList relList;
 };
 
 HTMLAreaElement implements HTMLHyperlinkElementUtils;
index 376b7fa..7e86ca4 100644 (file)
@@ -39,5 +39,5 @@ interface HTMLButtonElement : HTMLElement {
     boolean checkValidity();
     void setCustomValidity(DOMString? error);
 
-    [SameObject] readonly attribute NodeList labels;
+    readonly attribute NodeList labels;
 };
index 4f3d04a..13fdaa4 100644 (file)
@@ -31,5 +31,5 @@
 [
     Conditional=DATALIST_ELEMENT,
 ] interface HTMLDataListElement : HTMLElement {
-    [SameObject] readonly attribute HTMLCollection options;
+    readonly attribute HTMLCollection options;
 };
index 97a15bd..50108c9 100644 (file)
@@ -30,7 +30,6 @@
     [Custom] void write(optional DOMString text);
     [Custom] void writeln(optional DOMString text);
 
-    // FIXME: Should be [SameObject].
     [Custom, Replaceable, Deletable] readonly attribute HTMLAllCollection all;
 
     void clear();
index 9684846..55f6929 100644 (file)
@@ -36,7 +36,7 @@
 
     [Reflect] attribute DOMString webkitdropzone;
     // FIXME: Support the standard HTML equivalent.
-    // [SameObject, PutForwards=value] readonly attribute DOMTokenList dropzone;
+    // [PutForwards=value] readonly attribute DOMTokenList dropzone;
 
     [Reflect] attribute boolean hidden;
     [Reflect] attribute DOMString accessKey;
@@ -54,7 +54,7 @@
     void focus();
     void blur();
 
-    [SameObject] readonly attribute DOMStringMap dataset;
+    readonly attribute DOMStringMap dataset;
 };
 
 HTMLElement implements GlobalEventHandlers;
index e22b085..6d653b8 100644 (file)
@@ -24,10 +24,10 @@ interface HTMLFieldSetElement : HTMLElement {
 
     readonly attribute DOMString type;
 
-    [SameObject] readonly attribute HTMLFormControlsCollection elements;
+    readonly attribute HTMLFormControlsCollection elements;
 
     readonly attribute boolean         willValidate;
-    [SameObject] readonly attribute ValidityState validity;
+    readonly attribute ValidityState   validity;
     readonly attribute DOMString       validationMessage;
     boolean  checkValidity();
     void     setCustomValidity(DOMString? error);
index 6c45202..9f3b686 100644 (file)
@@ -35,7 +35,7 @@
     [Reflect] attribute boolean noValidate;
     [Reflect] attribute DOMString target;
 
-    [SameObject] readonly attribute HTMLFormControlsCollection elements;
+    readonly attribute HTMLFormControlsCollection elements;
     readonly attribute long length;
 
     getter Element (unsigned long index);
index 952c0cc..3daca1c 100644 (file)
@@ -27,7 +27,7 @@ interface HTMLIFrameElement : HTMLElement {
     [Reflect, TreatNullAs=EmptyString] attribute DOMString marginWidth;
     [Reflect] attribute DOMString name;
 
-    [SameObject, PutForwards=value] readonly attribute DOMTokenList sandbox;
+    [PutForwards=value] readonly attribute DOMTokenList sandbox;
     [Reflect] attribute boolean allowFullscreen;
 
     [Reflect] attribute DOMString scrolling;
index 43cbc77..8eae321 100644 (file)
@@ -73,7 +73,7 @@
     boolean checkValidity();
     void setCustomValidity(DOMString? error);
 
-    [SameObject] readonly attribute NodeList labels;
+    readonly attribute NodeList labels;
 
     void select();
     [Custom] attribute long selectionStart;
index 88c02b3..5e9b9e8 100644 (file)
@@ -44,6 +44,6 @@ interface HTMLKeygenElement : HTMLElement {
     boolean checkValidity();
     void setCustomValidity(DOMString? error);
 
-    [SameObject] readonly attribute NodeList labels;
+    readonly attribute NodeList labels;
 };
 
index 3e21988..7ae21b0 100644 (file)
@@ -30,7 +30,7 @@
     [Reflect] attribute DOMString media;
     [Reflect] attribute DOMString rel;
     [Reflect] attribute DOMString rev;
-    [SameObject, PutForwards=value] readonly attribute DOMTokenList sizes;
+    [PutForwards=value] readonly attribute DOMTokenList sizes;
     [Reflect] attribute DOMString target;
     [Reflect] attribute DOMString type;
     [Reflect] attribute DOMString as;
@@ -39,6 +39,6 @@
     // DOM Level 2 Style
     readonly attribute StyleSheet sheet;
 
-    [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
+    [PutForwards=value] readonly attribute DOMTokenList relList;
 };
 
index 945632e..01dcae0 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 interface HTMLMapElement : HTMLElement {
-    [SameObject] readonly attribute HTMLCollection areas;
+    readonly attribute HTMLCollection areas;
     [Reflect] attribute DOMString name;
 };
 
index 5cd5dbc..4159423 100644 (file)
@@ -95,9 +95,9 @@
     [Conditional=LEGACY_ENCRYPTED_MEDIA] void webkitSetMediaKeys(WebKitMediaKeys? mediaKeys);
 
     [Conditional=VIDEO_TRACK, MayThrowLegacyException] TextTrack addTextTrack(DOMString kind, optional DOMString label = "", optional DOMString language = "");
-    [Conditional=VIDEO_TRACK, SameObject] readonly attribute AudioTrackList audioTracks;
-    [Conditional=VIDEO_TRACK, SameObject] readonly attribute TextTrackList textTracks;
-    [Conditional=VIDEO_TRACK, SameObject] readonly attribute VideoTrackList videoTracks;
+    [Conditional=VIDEO_TRACK] readonly attribute AudioTrackList audioTracks;
+    [Conditional=VIDEO_TRACK] readonly attribute TextTrackList textTracks;
+    [Conditional=VIDEO_TRACK] readonly attribute VideoTrackList videoTracks;
 
     [Reflect] attribute DOMString mediaGroup;
 
index fef74af..0463b83 100644 (file)
@@ -26,5 +26,5 @@
     attribute double low;
     attribute double high;
     attribute double optimum;
-    [SameObject] readonly attribute NodeList labels;
+    readonly attribute NodeList labels;
 };
index dacdc30..e314b9f 100644 (file)
@@ -23,7 +23,7 @@
  */
 
 interface HTMLOutputElement : HTMLElement {
-    [SameObject, PutForwards=value] readonly attribute DOMTokenList htmlFor;
+    [PutForwards=value] readonly attribute DOMTokenList htmlFor;
 
     readonly attribute HTMLFormElement form;
     [Reflect] attribute DOMString name;
@@ -38,5 +38,5 @@ interface HTMLOutputElement : HTMLElement {
     boolean checkValidity();
     void setCustomValidity(DOMString? error);
 
-    [SameObject] readonly attribute NodeList labels;
+    readonly attribute NodeList labels;
 };
index b154b63..78d6383 100644 (file)
@@ -18,9 +18,9 @@
  */
 
 interface HTMLProgressElement : HTMLElement {
-    [SetterMayThrowLegacyException] attribute unrestricted double value;
-    [SetterMayThrowLegacyException] attribute unrestricted double max;
-    readonly attribute  unrestricted double position;
-    [SameObject] readonly attribute NodeList labels;
+    [SetterMayThrowLegacyException] attribute  unrestricted double value;
+    [SetterMayThrowLegacyException] attribute  unrestricted double max;
+    readonly attribute  unrestricted double                position;
+    readonly attribute  NodeList              labels;
 };
 
index 7b22ec3..29c60cb 100644 (file)
@@ -34,7 +34,7 @@
 
     readonly attribute DOMString type;
 
-    [SameObject] readonly attribute HTMLOptionsCollection options;
+    readonly attribute HTMLOptionsCollection options;
     [SetterMayThrowLegacyException] attribute unsigned long length;
 
     getter HTMLOptionElement? item(unsigned long index);
@@ -50,7 +50,7 @@
     void remove(HTMLOptionElement option);
     [ImplementedAs=removeByIndex] void remove(long index);
 
-    [SameObject] readonly attribute HTMLCollection selectedOptions;
+    readonly attribute HTMLCollection selectedOptions;
     attribute long selectedIndex;
 
     attribute DOMString value;
@@ -61,7 +61,7 @@
     boolean checkValidity();
     void setCustomValidity(DOMString? error); // FIXME: Argument should not be nullable.
 
-    [SameObject] readonly attribute NodeList labels;
+    readonly attribute NodeList labels;
 
     attribute DOMString autocomplete;
 };
index 54ce6f9..eb53b28 100644 (file)
@@ -23,8 +23,8 @@ interface HTMLTableElement : HTMLElement {
     [SetterMayThrowLegacyException] attribute HTMLTableSectionElement? tHead;
     [SetterMayThrowLegacyException] attribute HTMLTableSectionElement? tFoot;
 
-    [SameObject] readonly attribute HTMLCollection rows;
-    [SameObject] readonly attribute HTMLCollection tBodies;
+    readonly attribute HTMLCollection rows;
+    readonly attribute HTMLCollection tBodies;
     [Reflect] attribute DOMString align;
     [Reflect, TreatNullAs=EmptyString] attribute DOMString bgColor;
     [Reflect] attribute DOMString border;
index 0e0b891..7cc5b3a 100644 (file)
@@ -21,7 +21,7 @@
 interface HTMLTableRowElement : HTMLElement {
     readonly attribute long rowIndex;
     readonly attribute long sectionRowIndex;
-    [SameObject] readonly attribute HTMLCollection cells;
+    readonly attribute HTMLCollection cells;
     [Reflect] attribute DOMString align;
     [Reflect, TreatNullAs=EmptyString] attribute DOMString bgColor;
     [Reflect=char] attribute DOMString ch;
index 7913016..7937c7d 100644 (file)
@@ -25,7 +25,7 @@
     [Reflect=char] attribute DOMString ch;
     [Reflect=charoff] attribute DOMString chOff;
     [Reflect] attribute DOMString vAlign;
-    [SameObject] readonly attribute HTMLCollection rows;
+    readonly attribute HTMLCollection rows;
     [MayThrowLegacyException] HTMLElement insertRow(optional long index = -1);
     [MayThrowLegacyException] void deleteRow(long index);
 };
index 4854fd2..ddd211a 100644 (file)
@@ -45,7 +45,7 @@ interface HTMLTextAreaElement : HTMLElement {
     boolean checkValidity();
     void setCustomValidity(DOMString? error);
 
-    [SameObject] readonly attribute NodeList labels;
+    readonly attribute NodeList labels;
 
     void select();
     attribute long selectionStart;
index 6252816..052c8bc 100644 (file)
@@ -58,5 +58,6 @@
 
     readonly attribute USVString origin;
 
-    [Unforgeable, SameObject] readonly attribute FrozenArray<USVString> ancestorOrigins;
+    // FIXME: Add support for SameObject
+    [Unforgeable, CachedAttribute] readonly attribute FrozenArray<USVString> ancestorOrigins;
 };
index 3e679e8..152c566 100644 (file)
@@ -20,8 +20,8 @@
 [
     GenerateIsReachable=ImplFrame,
 ] interface Navigator {
-    [SameObject] readonly attribute DOMPluginArray plugins;
-    [SameObject] readonly attribute DOMMimeTypeArray mimeTypes;
+    readonly attribute DOMPluginArray plugins;
+    readonly attribute DOMMimeTypeArray mimeTypes;
     [Nondeterministic] readonly attribute boolean cookieEnabled;
     [Nondeterministic] boolean javaEnabled();