author | cku <cku@mozilla.com> |
Wed, 19 Apr 2017 02:06:07 +0800 | |
changeset 354044 | 92f7611393f631a0de8d192d261dd1cf3f9b2d25 |
parent 354043 | 932320750dfe9d7df94beea21e488bf2970fe280 |
child 354045 | 032d23aaffe3a22a2b158e2d30bc26183799bed0 |
push id | 31685 |
push user | kwierso@gmail.com |
push date | Thu, 20 Apr 2017 21:45:29 +0000 |
treeherder | mozilla-central@5e3dc7e1288a [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | heycam |
bugs | 1357432 |
milestone | 55.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/svg/SVGUseElement.cpp +++ b/dom/svg/SVGUseElement.cpp @@ -11,16 +11,17 @@ #include "nsGkAtoms.h" #include "mozilla/dom/SVGSVGElement.h" #include "nsIDocument.h" #include "nsIPresShell.h" #include "mozilla/dom/Element.h" #include "nsContentUtils.h" #include "nsIURI.h" #include "mozilla/URLExtraData.h" +#include "nsSVGEffects.h" NS_IMPL_NS_NEW_NAMESPACED_SVG_ELEMENT(Use) namespace mozilla { namespace dom { JSObject* SVGUseElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) @@ -417,21 +418,25 @@ SVGUseElement::LookupHref() } else { mStringAttributes[XLINK_HREF].GetAnimValue(href, this); } if (href.IsEmpty()) { return; } + nsCOMPtr<nsIURI> originURI = + mOriginal ? mOriginal->GetBaseURI() : GetBaseURI(); + nsCOMPtr<nsIURI> baseURI = nsContentUtils::IsLocalRefURL(href) + ? nsSVGEffects::GetBaseURLForLocalRef(this, originURI) + : originURI; + nsCOMPtr<nsIURI> targetURI; - nsCOMPtr<nsIURI> baseURI = mOriginal ? mOriginal->GetBaseURI() : GetBaseURI(); nsContentUtils::NewURIWithDocumentCharset(getter_AddRefs(targetURI), href, GetComposedDoc(), baseURI); - mSource.Reset(this, targetURI); } void SVGUseElement::TriggerReclone() { nsIDocument *doc = GetComposedDoc(); if (!doc)