Prevent underinvalidation of <pattern> with template

If the pattern resource is marked for layout via a mechanism that does
not invalidate its attributes - for example by changing a style property
that only requires paint invalidation - a call to
LayoutSVGResourceContainer::InvalidateCacheAndMarkForLayout() will fail
to properly invalidate attributes, which leaves the pattern in an
inconsistent state.
Drop the early-out check for SelfNeedsLayout() in said method so that
RemoveAllClientsFromCache() is called in the above case as well.

Bug: 1167563
Change-Id: Ib5896da9e52a103b86dc6eb7ad08e30a572b6d22
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2642777
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#845766}
diff --git a/svg/pservers/reftests/pattern-inheritance-template-pattern-removed.svg b/svg/pservers/reftests/pattern-inheritance-template-pattern-removed.svg
new file mode 100644
index 0000000..b80f810
--- /dev/null
+++ b/svg/pservers/reftests/pattern-inheritance-template-pattern-removed.svg
@@ -0,0 +1,23 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:h="http://www.w3.org/1999/xhtml"
+     class="reftest-wait">
+  <title>SVG Pattern: Inherited pattern removed after style change</title>
+  <h:link rel="help" href="https://svgwg.org/svg2-draft/pservers.html"/>
+  <h:link rel="match" href="reference/green-100x100.svg"/>
+  <h:script src="/common/rendering-utils.js"/>
+  <h:script src="/common/reftest-wait.js"/>
+  <pattern id="pattern" width="1" height="1">
+    <rect width="100" height="100" fill="orange"/>
+  </pattern>
+  <pattern id="inheritedPattern" href="#pattern"/>
+  <rect width="100" height="100" fill="url(#inheritedPattern) green"/>
+  <script>
+    waitForAtLeastOneFrame().then(() => {
+      let svg = document.querySelector('svg');
+      let pattern = document.getElementById("pattern");
+      svg.style.imageRendering = 'pixelated';
+      getComputedStyle(svg).imageRendering;
+      pattern.remove();
+      takeScreenshot();
+    });
+  </script>
+</svg>