Remove document.origin
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Jan 2020 02:08:03 +0000 (02:08 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Jan 2020 02:08:03 +0000 (02:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=205681

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

Merge upstream changes from:
- https://github.com/web-platform-tests/wpt/pull/20995

* web-platform-tests/dom/historical-expected.txt:
* web-platform-tests/dom/historical.html:
* web-platform-tests/dom/nodes/Document-constructor-svg.svg:
* web-platform-tests/dom/nodes/Document-constructor-xml.xml:
* web-platform-tests/dom/nodes/Document-constructor.html:
* web-platform-tests/dom/nodes/Node-cloneNode.html:
* web-platform-tests/html/browsers/windows/browsing-context.html:
* web-platform-tests/html/dom/usvstring-reflection.https.html:

Source/WebCore:

Remove document.origin, which was replaced by self.origin as per:
- https://github.com/whatwg/dom/pull/815
- https://github.com/whatwg/dom/issues/410

Gecko has never supported this and Blink has already dropped support for it.

No new tests, updated existing tests.

* dom/Document.cpp:
(WebCore::Document::origin const): Deleted.
* dom/Document.h:
* dom/Document.idl:
* dom/ScriptExecutionContext.h:
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::printAccessDeniedMessage const):
* workers/WorkerGlobalScope.h:
* worklets/WorkletGlobalScope.cpp:
(WebCore::WorkletGlobalScope::origin const): Deleted.
* worklets/WorkletGlobalScope.h:

Source/WebKitLegacy/mac:

* DOM/DOMDocument.mm:
(-[DOMDocument origin]):

LayoutTests:

* fast/dom/Document/document-constructor-expected.txt:
* fast/dom/Document/document-constructor.html:
* fast/dom/domparser-parsefromstring-origin-expected.txt:
* fast/dom/domparser-parsefromstring-origin.html:

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

37 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/dom/Document/document-constructor-expected.txt
LayoutTests/fast/dom/Document/document-constructor.html
LayoutTests/fast/dom/domparser-parsefromstring-origin-expected.txt
LayoutTests/fast/dom/domparser-parsefromstring-origin.html
LayoutTests/http/tests/media/media-stream/enumerate-devices-source-id.html
LayoutTests/http/tests/media/media-stream/resources/enumerate-devices-source-id-frame.html
LayoutTests/http/tests/quicklook/resources/same-origin-xmlhttprequest-allowed.rtf
LayoutTests/http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-overrides-xfo.html
LayoutTests/http/tests/security/resources/post-origin-to-parent.html
LayoutTests/http/tests/xmlhttprequest/resources/origin-exact-matching-iframe.html
LayoutTests/http/wpt/html/browsers/windows/browsing-context.html
LayoutTests/imported/blink/http/tests/security/resources/post-origin-to-opener.html
LayoutTests/imported/blink/http/tests/security/resources/postmessage-document-origin.html
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/historical.html
LayoutTests/imported/w3c/web-platform-tests/dom/idlharness.window-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor-svg.svg
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor-xml.xml
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor.html
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode.html
LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context.html
LayoutTests/imported/w3c/web-platform-tests/html/dom/usvstring-reflection.https.html
LayoutTests/imported/w3c/web-platform-tests/interfaces/dom.idl
Source/WebCore/ChangeLog
Source/WebCore/dom/Document.cpp
Source/WebCore/dom/Document.h
Source/WebCore/dom/Document.idl
Source/WebCore/dom/ScriptExecutionContext.h
Source/WebCore/loader/cache/CachedResourceLoader.cpp
Source/WebCore/workers/WorkerGlobalScope.h
Source/WebCore/worklets/WorkletGlobalScope.cpp
Source/WebCore/worklets/WorkletGlobalScope.h
Source/WebKit/WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentGtk.cpp
Source/WebKitLegacy/mac/ChangeLog
Source/WebKitLegacy/mac/DOM/DOMDocument.mm

index 7f76f8d..b9a0a47 100644 (file)
@@ -1,5 +1,17 @@
 2020-01-07  Chris Dumez  <cdumez@apple.com>
 
+        Remove document.origin
+        https://bugs.webkit.org/show_bug.cgi?id=205681
+
+        Reviewed by Geoffrey Garen.
+
+        * fast/dom/Document/document-constructor-expected.txt:
+        * fast/dom/Document/document-constructor.html:
+        * fast/dom/domparser-parsefromstring-origin-expected.txt:
+        * fast/dom/domparser-parsefromstring-origin.html:
+
+2020-01-07  Chris Dumez  <cdumez@apple.com>
+
         Using Web Share API preceded by an AJAX call
         https://bugs.webkit.org/show_bug.cgi?id=197779
         <rdar://problem/50708309>
index a6fc8aa..2e4ae41 100644 (file)
@@ -7,7 +7,6 @@ PASS typeof new Document is "object"
 PASS Object.prototype.toString.call(new Document) is "[object Document]"
 PASS new Document instanceof Document is true
 PASS Object.getPrototypeOf(new Document) is Document.prototype
-PASS document.origin is new Document().origin
 PASS successfullyParsed is true
 
 TEST COMPLETE
index b8f3a38..b87c700 100644 (file)
@@ -8,7 +8,6 @@ shouldBe('typeof new Document', '"object"');
 shouldBe('Object.prototype.toString.call(new Document)', '"[object Document]"');
 shouldBeTrue('new Document instanceof Document');
 shouldBe('Object.getPrototypeOf(new Document)', 'Document.prototype');
-shouldBe('document.origin', 'new Document().origin');
 
 </script>
 <script src="../../../resources/js-test-post.js"></script>
index 59b086d..9a22393 100644 (file)
@@ -3,7 +3,6 @@ Tests that documents created via DOMParser.parseFromString() inherit their conte
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS newDocument.origin is document.origin
 PASS newDocument.URL is document.URL
 PASS newDocument.location is null
 PASS successfullyParsed is true
index c0e421d..51b7574 100644 (file)
@@ -6,7 +6,6 @@
 description("Tests that documents created via DOMParser.parseFromString() inherit their context document's origin / URL");
 
 const newDocument = (new DOMParser).parseFromString('', 'text/html');
-shouldBe("newDocument.origin", "document.origin");
 shouldBe("newDocument.URL", "document.URL");
 shouldBeNull("newDocument.location");
 </script>
index eff6cf1..702cd9a 100644 (file)
@@ -22,7 +22,7 @@
             let map = { };
             function checkID(origin, device)
             {
-                let origins = `${document.origin}-${origin}`;
+                let origins = `${self.origin}-${origin}`;
 
                 if (!map[origins])
                     map[origins] = { };
                     originInfo[device.deviceId] = device.kind;
                 
                 if (originInfo[device.deviceId] != device.kind)
-                    testFailed(`: duplicate device IDs for ${device.kind} and ${originInfo[device.deviceId]} in ${origin}/${document.origin}`);
+                    testFailed(`: duplicate device IDs for ${device.kind} and ${originInfo[device.deviceId]} in ${origin}/${self.origin}`);
 
                 if (Object.keys(originInfo).length > 4)
-                    testFailed(`: more then four unique device IDs in ${origin}/${document.origin}`);
+                    testFailed(`: more then four unique device IDs in ${origin}/${self.origin}`);
             }
 
             let eventCount = 0;
@@ -48,7 +48,7 @@
 
                 await navigator.mediaDevices.getUserMedia({video: true, audio: true });
                 let devices = await navigator.mediaDevices.enumerateDevices();
-                devices.forEach(device => checkID(document.origin, device));
+                devices.forEach(device => checkID(self.origin, device));
 
                 debug('');
                 if (internals)
index f1c8c95..89b1812 100644 (file)
@@ -15,7 +15,7 @@
                 await navigator.mediaDevices.getUserMedia({video: true, audio: true });
                 let devices = await navigator.mediaDevices.enumerateDevices();
                 let result = {
-                    origin: document.origin, 
+                    origin: self.origin, 
                     devices: devices.map(device => { return {deviceId: device.deviceId, kind: device.kind} }),
                 };
 
index cf9bb1a..9ca2c76 100644 (file)
@@ -5,7 +5,7 @@
 \margl0\margr0\margb0\margt0\vieww13440\viewh17040\viewkind1
 \deftab720
 \pard\pardeftab720\ri0\partightenfactor0
-{\field{\*\fldinst{HYPERLINK "javascript:(function%20()%20%7B%20var%20request%20=%20new%20XMLHttpRequest();%20request.onreadystatechange%20=%20function%20()%20%7B%20if%20(request.readyState%20===%204)%20%7B%20console.log('PASS:%20XMLHttpRequest%20allowed');%20testRunner.notifyDone();%20%7D%20%7D;%20request.open('GET',%20document.origin%20+%20'/x-apple-ql-magic/same-origin-xmlhttprequest-allowed.rtf');%20request.send();%20%7D)();"}}{\fldrslt 
+{\field{\*\fldinst{HYPERLINK "javascript:(function%20()%20%7B%20var%20request%20=%20new%20XMLHttpRequest();%20request.onreadystatechange%20=%20function%20()%20%7B%20if%20(request.readyState%20===%204)%20%7B%20console.log('PASS:%20XMLHttpRequest%20allowed');%20testRunner.notifyDone();%20%7D%20%7D;%20request.open('GET',%20self.origin%20+%20'/x-apple-ql-magic/same-origin-xmlhttprequest-allowed.rtf');%20request.send();%20%7D)();"}}{\fldrslt 
 \f0\fs36 \cf0 \ul \ulc0 Run test}}
 \f1\fs22 \
-}
\ No newline at end of file
+}
index d336b5f..7696112 100644 (file)
@@ -10,7 +10,7 @@
             var i = document.createElement('iframe');
             i.src = "../../resources/frame-ancestors-and-x-frame-options.pl?policy='self'&xfo=DENY";
             i.onload = t.step_func_done(function () {
-                assert_equals(i.contentDocument.origin, document.origin, "The same-origin page loaded.");
+                assert_equals(i.contentWindow.origin, self.origin, "The same-origin page loaded.");
             });
             document.body.appendChild(i);
         }, "A 'frame-ancestors' CSP directive overrides an 'x-frame-options' header which would block the page.");
@@ -21,7 +21,7 @@
             i.onload = t.step_func_done(function () {
                 assert_throws(
                     "SecurityError",
-                    function () { i.contentDocument.origin },
+                    function () { i.contentWindow.origin },
                     "The same-origin page was blocked and sandboxed.");
             });
             document.body.appendChild(i);
index aa0005d..ffea85d 100644 (file)
@@ -1,3 +1,3 @@
 <script>
-    window.parent.postMessage({ 'origin': document.origin }, '*');
-</script>
\ No newline at end of file
+    window.parent.postMessage({ 'origin': self.origin }, '*');
+</script>
index a6bbfb7..6bc4edd 100644 (file)
@@ -22,7 +22,7 @@ function shouldFail(origin) {
     shouldThrow("xhr.send(null)");
 }
 
-var pageOrigin = document.origin;
+var pageOrigin = self.origin;
 
 shouldPass("*");
 shouldPass(" *  ");
index 8138ac6..fdbbca0 100644 (file)
@@ -43,7 +43,6 @@
     }, "Check that new document nodes extant, empty");
 
     test(function () {
-      assert_equals(doc.origin, document.origin, "The document's origin should be its creator document's origin");
       assert_equals(doc.referrer, document.URL, "The document's referrer should be its creator document's address.");
       assert_equals(iframe.contentWindow.parent.document, document);
     }, "Check the document properties corresponding to the creator browsing context");
index e0f6727..8196305 100644 (file)
@@ -3,7 +3,7 @@
     // origin.
     window.addEventListener('message', function (e) {
         event.source.postMessage({
-            'origin': document.origin,
+            'origin': self.origin,
             'id': e.data.id
         }, e.origin);
     });
index e7ad39e..36d793f 100644 (file)
@@ -1,3 +1,22 @@
+2020-01-07  Chris Dumez  <cdumez@apple.com>
+
+        Remove document.origin
+        https://bugs.webkit.org/show_bug.cgi?id=205681
+
+        Reviewed by Geoffrey Garen.
+
+        Merge upstream changes from:
+        - https://github.com/web-platform-tests/wpt/pull/20995
+
+        * web-platform-tests/dom/historical-expected.txt:
+        * web-platform-tests/dom/historical.html:
+        * web-platform-tests/dom/nodes/Document-constructor-svg.svg:
+        * web-platform-tests/dom/nodes/Document-constructor-xml.xml:
+        * web-platform-tests/dom/nodes/Document-constructor.html:
+        * web-platform-tests/dom/nodes/Node-cloneNode.html:
+        * web-platform-tests/html/browsers/windows/browsing-context.html:
+        * web-platform-tests/html/dom/usvstring-reflection.https.html:
+
 2020-01-07  Pablo Saavedra  <psaavedra@igalia.com>
 
         Re-sync web-platform-tests/xhr from upstream
index 14c73e5..03923c8 100644 (file)
@@ -32,31 +32,32 @@ PASS Historical DOM features must be removed: width
 PASS Historical DOM features must be removed: commands 
 PASS Historical DOM features must be removed: cssElementMap 
 PASS Historical DOM features must be removed: async 
+PASS Historical DOM features must be removed: origin 
 PASS document.load 
 PASS XMLDocument.load 
-PASS DOMImplementation.getFeature() must be nuked. 
+PASS DOMImplementation.getFeature() must be removed. 
 PASS Historical DOM features must be removed: schemaTypeInfo 
 PASS Historical DOM features must be removed: setIdAttribute 
 PASS Historical DOM features must be removed: setIdAttributeNS 
 PASS Historical DOM features must be removed: setIdAttributeNode 
-PASS Attr member must be nuked: schemaTypeInfo 
-PASS Attr member must be nuked: isId 
-PASS DocumentType member must be nuked: entities 
-PASS DocumentType member must be nuked: notations 
-PASS DocumentType member must be nuked: internalSubset 
-PASS Text member must be nuked: isElementContentWhitespace 
-PASS Text member must be nuked: replaceWholeText 
-PASS Node member must be nuked: hasAttributes 
-PASS Node member must be nuked: attributes 
-PASS Node member must be nuked: namespaceURI 
-PASS Node member must be nuked: prefix 
-PASS Node member must be nuked: localName 
-PASS Node member must be nuked: isSupported 
-PASS Node member must be nuked: getFeature 
-PASS Node member must be nuked: getUserData 
-PASS Node member must be nuked: setUserData 
-PASS Node member must be nuked: rootNode 
-PASS Window member must be nuked: attachEvent 
+PASS Attr member must be removed: schemaTypeInfo 
+PASS Attr member must be removed: isId 
+PASS DocumentType member must be removed: entities 
+PASS DocumentType member must be removed: notations 
+PASS DocumentType member must be removed: internalSubset 
+PASS Text member must be removed: isElementContentWhitespace 
+PASS Text member must be removed: replaceWholeText 
+PASS Node member must be removed: hasAttributes 
+PASS Node member must be removed: attributes 
+PASS Node member must be removed: namespaceURI 
+PASS Node member must be removed: prefix 
+PASS Node member must be removed: localName 
+PASS Node member must be removed: isSupported 
+PASS Node member must be removed: getFeature 
+PASS Node member must be removed: getUserData 
+PASS Node member must be removed: setUserData 
+PASS Node member must be removed: rootNode 
+PASS Window member must be removed: attachEvent 
 PASS Event should not have this constant: MOUSEDOWN 
 PASS Event should not have this constant: MOUSEUP 
 PASS Event should not have this constant: MOUSEOVER 
index 921fa07..8a71e36 100644 (file)
@@ -1,16 +1,15 @@
 <!DOCTYPE html>
-
 <title>Historical DOM features must be removed</title>
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <div id=log></div>
 <script>
-function isInterfaceNuked(name) {
+function isInterfaceRemoved(name) {
   test(function() {
     assert_equals(window[name], undefined)
   }, "Historical DOM features must be removed: " + name)
 }
-var nukedInterfaces = [
+var removedInterfaces = [
   "DOMConfiguration",
   "DOMCursor",
   "DOMError",
@@ -31,16 +30,16 @@ var nukedInterfaces = [
   "UserDataHandler",
   "RangeException" // DOM Range
 ]
-nukedInterfaces.forEach(isInterfaceNuked)
+removedInterfaces.forEach(isInterfaceRemoved)
 
-function isNukedFromDocument(name) {
+function isRemovedFromDocument(name) {
   test(function() {
     var doc = document.implementation.createDocument(null,null,null)
     assert_equals(document[name], undefined)
     assert_equals(doc[name], undefined)
   }, "Historical DOM features must be removed: " + name)
 }
-var documentNuked = [
+var documentRemoved = [
   "createEntityReference",
   "xmlEncoding",
   "xmlStandalone",
@@ -58,8 +57,10 @@ var documentNuked = [
   "cssElementMap",
   // https://github.com/whatwg/html/commit/e236f46820b93d6fe2e2caae0363331075c6c4fb
   "async",
+  // https://github.com/whatwg/dom/pull/815
+  "origin",
 ]
-documentNuked.forEach(isNukedFromDocument)
+documentRemoved.forEach(isRemovedFromDocument)
 
 test(function() {
   // https://github.com/whatwg/html/commit/e236f46820b93d6fe2e2caae0363331075c6c4fb
@@ -74,61 +75,61 @@ test(function() {
 
 test(function() {
   assert_equals(document.implementation["getFeature"], undefined)
-}, "DOMImplementation.getFeature() must be nuked.")
+}, "DOMImplementation.getFeature() must be removed.")
 
-function isNukedFromElement(name) {
+function isRemovedFromElement(name) {
   test(function() {
     var ele = document.createElementNS("test", "test")
     assert_equals(document.body[name], undefined)
     assert_equals(ele[name], undefined)
   }, "Historical DOM features must be removed: " + name)
 }
-var elementNuked = [
+var elementRemoved = [
   "schemaTypeInfo",
   "setIdAttribute",
   "setIdAttributeNS",
   "setIdAttributeNode"
 ]
-elementNuked.forEach(isNukedFromElement)
+elementRemoved.forEach(isRemovedFromElement)
 
-function isNukedFromAttr(name) {
+function isRemovedFromAttr(name) {
   test(function() {
     var attr = document.createAttribute("test")
     assert_equals(attr[name], undefined)
-  }, "Attr member must be nuked: " + name)
+  }, "Attr member must be removed: " + name)
 }
-var attrNuked = [
+var attrRemoved = [
   "schemaTypeInfo",
   "isId"
 ]
-attrNuked.forEach(isNukedFromAttr)
+attrRemoved.forEach(isRemovedFromAttr)
 
-function isNukedFromDoctype(name) {
+function isRemovedFromDoctype(name) {
   test(function() {
     var doctype = document.implementation.createDocumentType("test", "", "")
     assert_equals(doctype[name], undefined)
-  }, "DocumentType member must be nuked: " + name)
+  }, "DocumentType member must be removed: " + name)
 }
-var doctypeNuked = [
+var doctypeRemoved = [
   "entities",
   "notations",
   "internalSubset"
 ]
-doctypeNuked.forEach(isNukedFromDoctype)
+doctypeRemoved.forEach(isRemovedFromDoctype)
 
-function isNukedFromText(name) {
+function isRemovedFromText(name) {
   test(function() {
     var text = document.createTextNode("test")
     assert_equals(text[name], undefined)
-  }, "Text member must be nuked: " + name)
+  }, "Text member must be removed: " + name)
 }
-var textNuked = [
+var textRemoved = [
   "isElementContentWhitespace",
   "replaceWholeText"
 ]
-textNuked.forEach(isNukedFromText)
+textRemoved.forEach(isRemovedFromText)
 
-function isNukedFromNode(name) {
+function isRemovedFromNode(name) {
   test(function() {
     var doc = document.implementation.createDocument(null,null,null)
     var doctype = document.implementation.createDocumentType("test", "", "")
@@ -136,9 +137,9 @@ function isNukedFromNode(name) {
     assert_equals(doc[name], undefined)
     assert_equals(doctype[name], undefined)
     assert_equals(text[name], undefined)
-  }, "Node member must be nuked: " + name)
+  }, "Node member must be removed: " + name)
 }
-var nodeNuked = [
+var nodeRemoved = [
   "hasAttributes",
   "attributes",
   "namespaceURI",
@@ -150,17 +151,17 @@ var nodeNuked = [
   "setUserData",
   "rootNode",
 ]
-nodeNuked.forEach(isNukedFromNode)
+nodeRemoved.forEach(isRemovedFromNode)
 
-function isNukedFromWindow(name) {
+function isRemovedFromWindow(name) {
   test(function() {
     assert_equals(window[name], undefined)
-  }, "Window member must be nuked: " + name)
+  }, "Window member must be removed: " + name)
 }
-var windowNuked = [
+var windowRemoved = [
   "attachEvent"
 ]
-windowNuked.forEach(isNukedFromWindow)
+windowRemoved.forEach(isRemovedFromWindow)
 
 function isRemovedFromEvent(name) {
   test(() => {
index 77b52e5..6ed2c4d 100644 (file)
@@ -335,7 +335,6 @@ PASS Document interface: existence and properties of interface prototype object'
 PASS Document interface: attribute implementation 
 PASS Document interface: attribute URL 
 PASS Document interface: attribute documentURI 
-PASS Document interface: attribute origin 
 PASS Document interface: attribute compatMode 
 PASS Document interface: attribute characterSet 
 PASS Document interface: attribute charset 
@@ -378,7 +377,6 @@ PASS Stringification of new Document()
 PASS Document interface: new Document() must inherit property "implementation" with the proper type 
 PASS Document interface: new Document() must inherit property "URL" with the proper type 
 PASS Document interface: new Document() must inherit property "documentURI" with the proper type 
-PASS Document interface: new Document() must inherit property "origin" with the proper type 
 PASS Document interface: new Document() must inherit property "compatMode" with the proper type 
 PASS Document interface: new Document() must inherit property "characterSet" with the proper type 
 PASS Document interface: new Document() must inherit property "charset" with the proper type 
@@ -517,7 +515,6 @@ PASS Stringification of xmlDoc
 PASS Document interface: xmlDoc must inherit property "implementation" with the proper type 
 PASS Document interface: xmlDoc must inherit property "URL" with the proper type 
 PASS Document interface: xmlDoc must inherit property "documentURI" with the proper type 
-PASS Document interface: xmlDoc must inherit property "origin" with the proper type 
 PASS Document interface: xmlDoc must inherit property "compatMode" with the proper type 
 PASS Document interface: xmlDoc must inherit property "characterSet" with the proper type 
 PASS Document interface: xmlDoc must inherit property "charset" with the proper type 
index 28aaf16..77e3d89 100644 (file)
@@ -32,7 +32,6 @@ test(function() {
   assert_equals(doc.compatMode, "CSS1Compat");
   assert_equals(doc.characterSet, "UTF-8");
   assert_equals(doc.contentType, "application/xml");
-  assert_equals(doc.origin, document.origin);
   assert_equals(doc.createElement("DIV").localName, "DIV");
 }, "new Document(): metadata")
 
index 9aada51..c9fc775 100644 (file)
@@ -35,7 +35,6 @@ test(function() {
   assert_equals(doc.compatMode, "CSS1Compat");
   assert_equals(doc.characterSet, "UTF-8");
   assert_equals(doc.contentType, "application/xml");
-  assert_equals(doc.origin, document.origin);
   assert_equals(doc.createElement("DIV").localName, "DIV");
 }, "new Document(): metadata")
 
index ceb4192..e17de28 100644 (file)
@@ -34,7 +34,6 @@ test(function() {
   assert_equals(doc.compatMode, "CSS1Compat");
   assert_equals(doc.characterSet, "UTF-8");
   assert_equals(doc.contentType, "application/xml");
-  assert_equals(doc.origin, document.origin);
   assert_equals(doc.createElement("DIV").localName, "DIV");
   assert_equals(doc.createElement("a").constructor, Element);
 }, "new Document(): metadata")
index 08d620b..d977b2a 100644 (file)
@@ -240,7 +240,6 @@ test(function() {
     assert_equals(doc.contentType, copy.contentType, "contentType equality");
     assert_equals(doc.URL, "about:blank", "URL value")
     assert_equals(doc.URL, copy.URL, "URL equality");
-    assert_equals(doc.origin, copy.origin, "origin equality");
     assert_equals(doc.compatMode, "CSS1Compat", "compatMode value");
     assert_equals(doc.compatMode, copy.compatMode, "compatMode equality");
 }, "implementation.createDocument");
index 5e99bb5..430598f 100644 (file)
@@ -40,7 +40,6 @@
     }, "Check that new document nodes extant, empty");
 
     test(function () {
-      assert_equals(doc.origin, document.origin, "The document's origin should be its creator document's origin");
       assert_equals(doc.referrer, document.URL, "The document's referrer should be its creator document's address.");
       assert_equals(iframe.contentWindow.parent.document, document);
     }, "Check the document properties corresponding to the creator browsing context");
index 162d58c..d3c90e5 100644 (file)
@@ -118,9 +118,6 @@ test(() => {
   var w = window.open("about:blank#\uD800");
   assert_equals(w.document.URL, 'about:blank#%EF%BF%BD');
   assert_equals(w.document.documentURI, 'about:blank#%EF%BF%BD');
-  // TODO(gyuyoung): How to test document.origin? When opening a URL with an
-  // unpaired surrogate codepoint, invalid URL exception happens.
-  //   e.g) var w = window.open("http://test.com\uDB89");
 }, "Document URLs: unpaired surrogate codepoint should be replaced with U+FFFD")
 
 promise_test(t => {
index d1557a6..f7a10d8 100644 (file)
@@ -263,7 +263,6 @@ interface Document : Node {
   [SameObject] readonly attribute DOMImplementation implementation;
   readonly attribute USVString URL;
   readonly attribute USVString documentURI;
-  readonly attribute USVString origin;
   readonly attribute DOMString compatMode;
   readonly attribute DOMString characterSet;
   readonly attribute DOMString charset; // historical alias of .characterSet
index 9300689..61dea51 100644 (file)
@@ -1,3 +1,30 @@
+2020-01-07  Chris Dumez  <cdumez@apple.com>
+
+        Remove document.origin
+        https://bugs.webkit.org/show_bug.cgi?id=205681
+
+        Reviewed by Geoffrey Garen.
+
+        Remove document.origin, which was replaced by self.origin as per:
+        - https://github.com/whatwg/dom/pull/815
+        - https://github.com/whatwg/dom/issues/410
+
+        Gecko has never supported this and Blink has already dropped support for it.
+
+        No new tests, updated existing tests.
+
+        * dom/Document.cpp:
+        (WebCore::Document::origin const): Deleted.
+        * dom/Document.h:
+        * dom/Document.idl:
+        * dom/ScriptExecutionContext.h:
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::CachedResourceLoader::printAccessDeniedMessage const):
+        * workers/WorkerGlobalScope.h:
+        * worklets/WorkletGlobalScope.cpp:
+        (WebCore::WorkletGlobalScope::origin const): Deleted.
+        * worklets/WorkletGlobalScope.h:
+
 2020-01-07  Keith Rollin  <krollin@apple.com>
 
         Reformat FrameLoader logging
index 2e66136..ab775b6 100644 (file)
@@ -5005,11 +5005,6 @@ String Document::referrer()
     return String();
 }
 
-String Document::origin() const
-{
-    return securityOrigin().toString();
-}
-
 String Document::domain() const
 {
     return securityOrigin().domain();
@@ -8378,7 +8373,7 @@ void Document::dispatchSystemPreviewActionEvent(const SystemPreviewInfo& systemP
     if (!is<HTMLAnchorElement>(element))
         return;
 
-    auto event = MessageEvent::create(message, origin());
+    auto event = MessageEvent::create(message, securityOrigin().toString());
     UserGestureIndicator gestureIndicator(ProcessingUserGesture, this);
     element->dispatchEvent(event);
 }
index 067752b..a55a5bd 100644 (file)
@@ -924,8 +924,6 @@ public:
 
     WEBCORE_EXPORT String referrer();
 
-    WEBCORE_EXPORT String origin() const final;
-
     WEBCORE_EXPORT String domain() const;
     ExceptionOr<void> setDomain(const String& newDomain);
 
index 3c841a6..ce3dee0 100644 (file)
@@ -45,7 +45,6 @@ typedef (
     readonly attribute DOMImplementation implementation; // FIXME: Should be [SameObject].
     [ImplementedAs=urlForBindings] readonly attribute USVString URL;
     [ImplementedAs=urlForBindings] readonly attribute USVString documentURI;
-    readonly attribute USVString origin;
     readonly attribute DOMString compatMode;
     [ImplementedAs=characterSetWithUTF8Fallback] readonly attribute DOMString characterSet;
     [ImplementedAs=characterSetWithUTF8Fallback] readonly attribute DOMString charset; // Historical alias of .characterSet,
index 94c07ef..62df3d0 100644 (file)
@@ -120,7 +120,6 @@ public:
     virtual void addConsoleMessage(MessageSource, MessageLevel, const String& message, unsigned long requestIdentifier = 0) = 0;
 
     virtual SecurityOrigin& topOrigin() const = 0;
-    virtual String origin() const = 0;
 
     virtual bool shouldBypassMainWorldContentSecurityPolicy() const { return false; }
 
index 0b6af9f..c3d8e35 100644 (file)
@@ -1240,7 +1240,7 @@ void CachedResourceLoader::printAccessDeniedMessage(const URL& url) const
     if (!m_document || m_document->url().isNull())
         message = makeString("Unsafe attempt to load URL ", url.stringCenterEllipsizedToLength(), '.');
     else
-        message = makeString("Unsafe attempt to load URL ", url.stringCenterEllipsizedToLength(), " from origin ", m_document->origin(), ". Domains, protocols and ports must match.\n");
+        message = makeString("Unsafe attempt to load URL ", url.stringCenterEllipsizedToLength(), " from origin ", m_document->securityOrigin().toString(), ". Domains, protocols and ports must match.\n");
 
     frame()->document()->addConsoleMessage(MessageSource::Security, MessageLevel::Error, message);
 }
index 16d0fbe..cf3d87e 100644 (file)
@@ -69,7 +69,7 @@ public:
     EventLoopTaskGroup& eventLoop() final;
 
     const URL& url() const final { return m_url; }
-    String origin() const final;
+    String origin() const;
     const String& identifier() const { return m_identifier; }
 
 #if ENABLE(INDEXED_DATABASE)
index a34ade9..0ac0d32 100644 (file)
@@ -104,11 +104,6 @@ EventLoopTaskGroup& WorkletGlobalScope::eventLoop()
     return *m_defaultTaskGroup;
 }
 
-String WorkletGlobalScope::origin() const
-{
-    return m_topOrigin->toString();
-}
-
 String WorkletGlobalScope::userAgent(const URL& url) const
 {
     if (!m_document)
index f0aec75..30a77de 100644 (file)
@@ -62,7 +62,6 @@ public:
     EventLoopTaskGroup& eventLoop() final;
 
     const URL& url() const final { return m_code.url(); }
-    String origin() const final;
 
     void evaluate();
 
index f1a22d2..ef6890c 100644 (file)
@@ -57,6 +57,7 @@
 #include <WebCore/Document.h>
 #include <WebCore/FullscreenManager.h>
 #include <WebCore/JSExecState.h>
+#include <WebCore/SecurityOrigin.h>
 #include <wtf/GetPtr.h>
 #include <wtf/RefPtr.h>
 
@@ -1916,7 +1917,7 @@ gchar* webkit_dom_document_get_origin(WebKitDOMDocument* self)
     WebCore::JSMainThreadNullState state;
     g_return_val_if_fail(WEBKIT_DOM_IS_DOCUMENT(self), 0);
     WebCore::Document* item = WebKit::core(self);
-    gchar* result = convertToUTF8String(item->origin());
+    gchar* result = convertToUTF8String(item->securityOrigin().toString());
     return result;
 }
 
index c74efa9..d18b81f 100644 (file)
@@ -1,3 +1,13 @@
+2020-01-07  Chris Dumez  <cdumez@apple.com>
+
+        Remove document.origin
+        https://bugs.webkit.org/show_bug.cgi?id=205681
+
+        Reviewed by Geoffrey Garen.
+
+        * DOM/DOMDocument.mm:
+        (-[DOMDocument origin]):
+
 2020-01-07  Commit Queue  <commit-queue@webkit.org>
 
         Unreviewed, rolling out r254132.
index 7f675e2..5c13d63 100644 (file)
@@ -31,6 +31,7 @@
 #import <WebCore/CSSStyleDeclaration.h>
 #import <WebCore/Comment.h>
 #import <WebCore/DocumentFullscreen.h>
+#import <WebCore/SecurityOrigin.h>
 #import "DOMAbstractViewInternal.h"
 #import "DOMAttrInternal.h"
 #import "DOMCDATASectionInternal.h"
 - (NSString *)origin
 {
     WebCore::JSMainThreadNullState state;
-    return IMPL->origin();
+    return IMPL->securityOrigin().toString();
 }
 
 - (DOMElement *)scrollingElement