[SVG2] Remove the 'viewTarget' property of SVGViewElement
https://bugs.webkit.org/show_bug.cgi?id=203217

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-10-22
Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

* web-platform-tests/svg/historical-expected.txt:

Source/WebCore:

The interface of SVGViewElement is defined here:
    https://www.w3.org/TR/SVG2/linking.html#InterfaceSVGViewElement.

* svg/SVGViewElement.cpp:
(WebCore::SVGViewElement::SVGViewElement):
(WebCore::SVGViewElement::parseAttribute):
* svg/SVGViewElement.h:
* svg/SVGViewElement.idl:

LayoutTests:

* svg/dom/SVGViewElement-viewTarget-expected.txt: Removed.
* svg/dom/SVGViewElement-viewTarget.html: Removed.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@251461 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index afda365..6ae0f36 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,13 @@
+2019-10-22  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        [SVG2] Remove the 'viewTarget' property of SVGViewElement
+        https://bugs.webkit.org/show_bug.cgi?id=203217
+
+        Reviewed by Simon Fraser.
+
+        * svg/dom/SVGViewElement-viewTarget-expected.txt: Removed.
+        * svg/dom/SVGViewElement-viewTarget.html: Removed.
+
 2019-10-22  Charlie Turner  <cturner@igalia.com>
 
         media/W3C/video/networkState/networkState_during_progress.html is flaky
diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog
index 929b3d1..35b64c6 100644
--- a/LayoutTests/imported/w3c/ChangeLog
+++ b/LayoutTests/imported/w3c/ChangeLog
@@ -1,3 +1,12 @@
+2019-10-22  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        [SVG2] Remove the 'viewTarget' property of SVGViewElement
+        https://bugs.webkit.org/show_bug.cgi?id=203217
+
+        Reviewed by Simon Fraser.
+
+        * web-platform-tests/svg/historical-expected.txt:
+
 2019-10-22  Peng Liu  <peng.liu6@apple.com>
 
         Cannot run some WPT cases manually
diff --git a/LayoutTests/imported/w3c/web-platform-tests/svg/historical-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/svg/historical-expected.txt
index 4b80366..79e29aa 100644
--- a/LayoutTests/imported/w3c/web-platform-tests/svg/historical-expected.txt
+++ b/LayoutTests/imported/w3c/web-platform-tests/svg/historical-expected.txt
@@ -35,7 +35,7 @@
 FAIL SVGSVGElement.prototype.screenPixelToMillimeterY must be removed assert_false: expected false got true
 FAIL SVGSVGElement.prototype.useCurrentView must be removed assert_false: expected false got true
 FAIL SVGSVGElement.prototype.viewport must be removed assert_false: expected false got true
-FAIL SVGViewElement.prototype.viewTarget must be removed assert_false: expected false got true
+PASS SVGViewElement.prototype.viewTarget must be removed 
 PASS SVGPathElement.prototype.getPointAtLength must be moved to SVGGeometryElement.prototype 
 PASS SVGPathElement.prototype.getTotalLength must be moved to SVGGeometryElement.prototype 
 PASS SVGPathElement.prototype.pathLength must be moved to SVGGeometryElement.prototype 
diff --git a/LayoutTests/svg/dom/SVGViewElement-viewTarget-expected.txt b/LayoutTests/svg/dom/SVGViewElement-viewTarget-expected.txt
deleted file mode 100644
index 916ce29..0000000
--- a/LayoutTests/svg/dom/SVGViewElement-viewTarget-expected.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-This test checks the SVGStringList API - utilizing the viewTarget property of SVGViewElement
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-
-Check initial viewTarget value
-PASS viewElement.viewTarget.toString() is "[object SVGStringList]"
-PASS viewElement.viewTarget.numberOfItems is 1
-PASS viewElement.viewTarget.getItem(0) is "rect-view"
-
-Check the uniqueness of viewTarget per SVGViewElement
-PASS viewElement.viewTarget is viewTarget
-PASS viewTarget.getItem(0) is "rect-view"
-
-Check modifying viewTarget
-PASS viewTarget.replaceItem('circle-view', 0) is "circle-view"
-PASS viewElement.viewTarget.getItem(0) is "circle-view"
-PASS viewElement.getAttribute('viewTarget') is "circle-view"
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/svg/dom/SVGViewElement-viewTarget.html b/LayoutTests/svg/dom/SVGViewElement-viewTarget.html
deleted file mode 100644
index 0333529..0000000
--- a/LayoutTests/svg/dom/SVGViewElement-viewTarget.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<html>
-<head>
-<script src="../../resources/js-test-pre.js"></script>
-</head>
-<body>
-<p id="description"></p>
-<div id="console"></div>
-<script>
-description("This test checks the SVGStringList API - utilizing the viewTarget property of SVGViewElement");
-
-var viewElement = document.createElementNS("http://www.w3.org/2000/svg", "view");
-viewElement.setAttribute("viewTarget", "rect-view");
-
-debug("");
-debug("Check initial viewTarget value");
-shouldBeEqualToString("viewElement.viewTarget.toString()", "[object SVGStringList]");
-shouldBe("viewElement.viewTarget.numberOfItems", "1");
-shouldBeEqualToString("viewElement.viewTarget.getItem(0)", "rect-view");
-
-var viewTarget = viewElement.viewTarget;
-debug("");
-debug("Check the uniqueness of viewTarget per SVGViewElement");
-shouldBe("viewElement.viewTarget", "viewTarget");
-shouldBeEqualToString("viewTarget.getItem(0)", "rect-view");
-
-debug("");
-debug("Check modifying viewTarget");
-shouldBeEqualToString("viewTarget.replaceItem('circle-view', 0)", "circle-view");
-shouldBeEqualToString("viewElement.viewTarget.getItem(0)", "circle-view");
-shouldBeEqualToString("viewElement.getAttribute('viewTarget')", "circle-view");
-
-successfullyParsed = true;
-</script>
-<script src="../../resources/js-test-post.js"></script>
-</body>
-</html>
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index ad0ef9d..345f61a 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,19 @@
+2019-10-22  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        [SVG2] Remove the 'viewTarget' property of SVGViewElement
+        https://bugs.webkit.org/show_bug.cgi?id=203217
+
+        Reviewed by Simon Fraser.
+
+        The interface of SVGViewElement is defined here:
+            https://www.w3.org/TR/SVG2/linking.html#InterfaceSVGViewElement.
+
+        * svg/SVGViewElement.cpp:
+        (WebCore::SVGViewElement::SVGViewElement):
+        (WebCore::SVGViewElement::parseAttribute):
+        * svg/SVGViewElement.h:
+        * svg/SVGViewElement.idl:
+
 2019-10-22  Charlie Turner  <cturner@igalia.com>
 
         media/W3C/video/networkState/networkState_during_progress.html is flaky
diff --git a/Source/WebCore/svg/SVGViewElement.cpp b/Source/WebCore/svg/SVGViewElement.cpp
index 83eada3..22abee9 100644
--- a/Source/WebCore/svg/SVGViewElement.cpp
+++ b/Source/WebCore/svg/SVGViewElement.cpp
@@ -37,11 +37,6 @@
     , SVGFitToViewBox(this)
 {
     ASSERT(hasTagName(SVGNames::viewTag));
-    
-    static std::once_flag onceFlag;
-    std::call_once(onceFlag, [] {
-        PropertyRegistry::registerProperty<SVGNames::viewTargetAttr, &SVGViewElement::m_viewTarget>();
-    });
 }
 
 Ref<SVGViewElement> SVGViewElement::create(const QualifiedName& tagName, Document& document)
@@ -51,11 +46,6 @@
 
 void SVGViewElement::parseAttribute(const QualifiedName& name, const AtomString& value)
 {
-    if (name == SVGNames::viewTargetAttr) {
-        m_viewTarget->reset(value);
-        return;
-    }
-
     SVGElement::parseAttribute(name, value);
     SVGFitToViewBox::parseAttribute(name, value);
     SVGZoomAndPan::parseAttribute(name, value);
diff --git a/Source/WebCore/svg/SVGViewElement.h b/Source/WebCore/svg/SVGViewElement.h
index 8721853..bcd6c18 100644
--- a/Source/WebCore/svg/SVGViewElement.h
+++ b/Source/WebCore/svg/SVGViewElement.h
@@ -37,8 +37,6 @@
     using SVGElement::ref;
     using SVGElement::deref;
 
-    Ref<SVGStringList> viewTarget() { return m_viewTarget.copyRef(); }
-
     const SVGSVGElement* targetElement() const { return m_targetElement.get(); }
     void setTargetElement(const SVGSVGElement& targetElement) { m_targetElement = makeWeakPtr(targetElement); }
     void resetTargetElement() { m_targetElement = nullptr; }
@@ -55,7 +53,6 @@
     bool rendererIsNeeded(const RenderStyle&) final { return false; }
 
     PropertyRegistry m_propertyRegistry { *this };
-    Ref<SVGStringList> m_viewTarget { SVGStringList::create(this) };
     WeakPtr<SVGSVGElement> m_targetElement { nullptr };
 };
 
diff --git a/Source/WebCore/svg/SVGViewElement.idl b/Source/WebCore/svg/SVGViewElement.idl
index eb32a47..9807f31 100644
--- a/Source/WebCore/svg/SVGViewElement.idl
+++ b/Source/WebCore/svg/SVGViewElement.idl
@@ -24,7 +24,6 @@
  */
 
 interface SVGViewElement : SVGElement {
-    [SameObject] readonly attribute SVGStringList viewTarget;
 };
 
 SVGViewElement implements SVGFitToViewBox;