diff options
author | Steve Block <steveblock@google.com> | 2010-08-04 18:16:18 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-08-09 13:25:51 +0100 |
commit | 27a37fb693b8b9f744cfc3da9eb5a933e922323e (patch) | |
tree | a483456777caa6daeee6917d88a1fb1853ce26cb /WebCore/rendering | |
parent | ad3386af2204fbbc9033a6dcced2f9b0adcd6f10 (diff) | |
download | external_webkit-27a37fb693b8b9f744cfc3da9eb5a933e922323e.zip external_webkit-27a37fb693b8b9f744cfc3da9eb5a933e922323e.tar.gz external_webkit-27a37fb693b8b9f744cfc3da9eb5a933e922323e.tar.bz2 |
Merge WebKit at r64523 : Fix other conflicts
- WebCore/Android.mk
Conflict due to error introduced upstream.
See http://trac.webkit.org/changeset/64344/trunk/WebCore/Android.mk
and http://trac.webkit.org/changeset/60228/trunk/WebCore/Android.mk
- WebCore/html/HTMLFrameSetElement.cpp
Conflict due to ANDROID_FLATTEN_FRAMESET
See http://trac.webkit.org/changeset/64383
- WebCore/page/Navigator.h
Conflict due to APPLICATION_INSTALLED
See http://trac.webkit.org/changeset/64371
- WebCore/rendering/SVGResourcesCycleSolver.cpp
Conflict due to local ENABLE(FILTERS) guard
See http://trac.webkit.org/changeset/64440
Change-Id: Ibafe3b92117c3a7b3eaaa44c6cf3d04c8c6027c2
Diffstat (limited to 'WebCore/rendering')
-rw-r--r-- | WebCore/rendering/SVGResourcesCycleSolver.cpp | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/WebCore/rendering/SVGResourcesCycleSolver.cpp b/WebCore/rendering/SVGResourcesCycleSolver.cpp index ec2e036..8cd2e80 100644 --- a/WebCore/rendering/SVGResourcesCycleSolver.cpp +++ b/WebCore/rendering/SVGResourcesCycleSolver.cpp @@ -94,92 +94,6 @@ bool SVGResourcesCycleSolver::resourceContainsCycles(RenderObject* renderer) con return false; } -<<<<<<< HEAD -static inline String targetReferenceFromResource(SVGElement* element, bool& isValid) -{ - String target; - if (element->hasTagName(SVGNames::patternTag)) - target = static_cast<SVGPatternElement*>(element)->href(); - else if (element->hasTagName(SVGNames::linearGradientTag) || element->hasTagName(SVGNames::radialGradientTag)) - target = static_cast<SVGGradientElement*>(element)->href(); -// ANDROID -// This is deleted upstream so we cannot upstream the guard -// http://trac.webkit.org/changeset/64440/trunk/WebCore/rendering/SVGResourcesCycleSolver.cpp -#if ENABLE(FILTERS) - else if (element->hasTagName(SVGNames::filterTag)) - target = static_cast<SVGFilterElement*>(element)->href(); -#endif - else { - isValid = false; - return target; - } - - return SVGURIReference::getTarget(target); -} - -static inline void setFollowLinkForChainableResource(SVGElement*, bool) -{ - // FIXME: Enable once the follow-up patch for bug 43031 lands -} - -bool SVGResourcesCycleSolver::chainableResourceContainsCycles(RenderSVGResourceContainer* container) const -{ - ASSERT(container); - ASSERT(container->node()); - ASSERT(container->node()->isSVGElement()); - - // Chainable resources cycle detection is performed in the DOM tree. - SVGElement* element = static_cast<SVGElement*>(container->node()); - ASSERT(element); - - HashSet<SVGElement*> processedObjects; - - bool isValid = true; - String target = targetReferenceFromResource(element, isValid); - ASSERT(isValid); - - SVGElement* previousElement = element; - while (!target.isEmpty()) { - Node* targetNode = element->document()->getElementById(target); - if (!targetNode || !targetNode->isSVGElement()) - break; - - // Catch cylic chaining, otherwhise we'll run into an infinite loop here. - // <pattern id="foo" xlink:href="#bar"/> <pattern id="bar xlink:href="#foo"/> - SVGElement* targetElement = static_cast<SVGElement*>(targetNode); - - bool followLink = true; - if (processedObjects.contains(targetElement) || targetElement == element) - followLink = false; - - setFollowLinkForChainableResource(previousElement, followLink); - if (!followLink) - return false; - - previousElement = targetElement; - processedObjects.add(targetElement); - target = targetReferenceFromResource(targetElement, isValid); - if (!isValid) - break; - } - - // Couldn't find any direct cycle in the xlink:href chain, maybe there's an indirect one. - // <pattern id="foo" xlink:href="#bar"/> <pattern id="bar"> <rect fill="url(#foo)"... - HashSet<SVGElement*>::iterator end = processedObjects.end(); - for (HashSet<SVGElement*>::iterator it = processedObjects.begin(); it != end; ++it) { - RenderObject* renderer = (*it)->renderer(); - if (!renderer) - continue; - ASSERT(renderer->isSVGResourceContainer()); - if (m_allResources.contains(renderer->toRenderSVGResourceContainer())) - return true; - } - - return false; -} - -======= ->>>>>>> webkit.org at r64523 void SVGResourcesCycleSolver::resolveCycles() { ASSERT(m_allResources.isEmpty()); |