зеркало из https://github.com/mozilla/gecko-dev.git
Merge backout.
This commit is contained in:
Коммит
546eacd4ae
|
@ -65,7 +65,7 @@ else
|
|||
PPL_LOCALE_ARGS=$(call EXPAND_LOCALE_SRCDIR,browser/locales)/installer
|
||||
endif
|
||||
|
||||
.DEFAULT_GOAL := installer
|
||||
OVERRIDE_DEFAULT_GOAL := installer
|
||||
installer::
|
||||
$(MAKE) -C .. installer-stage
|
||||
$(MAKE) $(CONFIG_DIR)/setup.exe
|
||||
|
|
|
@ -1670,8 +1670,11 @@ class Makefile(object):
|
|||
Inform the makefile of a target which is a candidate for being the default target,
|
||||
if there isn't already a default target.
|
||||
"""
|
||||
if self.defaulttarget is None and t != '.PHONY':
|
||||
flavor, source, value = self.variables.get('.DEFAULT_GOAL')
|
||||
if self.defaulttarget is None and t != '.PHONY' and value is None:
|
||||
self.defaulttarget = t
|
||||
self.variables.set('.DEFAULT_GOAL', Variables.FLAVOR_SIMPLE,
|
||||
Variables.SOURCE_AUTOMATIC, t)
|
||||
|
||||
def getpatternvariables(self, pattern):
|
||||
assert isinstance(pattern, Pattern)
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
not-default:
|
||||
@echo TEST-FAIL
|
||||
@echo TEST-FAIL did not run default rule
|
||||
|
||||
default:
|
||||
@echo TEST-PASS
|
||||
@echo $(if $(filter not-default,$(INTERMEDIATE_DEFAULT_GOAL)),TEST-PASS,TEST-FAIL .DEFAULT_GOAL not set by $(MAKE))
|
||||
|
||||
INTERMEDIATE_DEFAULT_GOAL := $(.DEFAULT_GOAL)
|
||||
.DEFAULT_GOAL := default
|
||||
|
|
|
@ -1825,7 +1825,7 @@ default all:: $(PURGECACHES_FILES)
|
|||
$(PURGECACHES_FILES):
|
||||
if test -d $(@D) ; then touch $@ ; fi
|
||||
|
||||
.DEFAULT_GOAL ?= default
|
||||
.DEFAULT_GOAL := $(or $(OVERRIDE_DEFAULT_GOAL),default)
|
||||
|
||||
#############################################################################
|
||||
# Derived targets and dependencies
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
using namespace mozilla;
|
||||
|
||||
static bool
|
||||
IsMatchingParameter(const nsAString &aString, const nsAString &aParameterName)
|
||||
IsMatchingParameter(const nsAString& aString, const nsAString& aParameterName)
|
||||
{
|
||||
// The first two tests ensure aString.Length() > aParameterName.Length()
|
||||
// so it's then safe to do the third test
|
||||
|
@ -27,7 +27,7 @@ IgnoreWhitespace(PRUnichar aChar)
|
|||
}
|
||||
|
||||
static dom::SVGViewElement*
|
||||
GetViewElement(nsIDocument *aDocument, const nsAString &aId)
|
||||
GetViewElement(nsIDocument* aDocument, const nsAString& aId)
|
||||
{
|
||||
dom::Element* element = aDocument->GetElementById(aId);
|
||||
return (element && element->IsSVG(nsGkAtoms::view)) ?
|
||||
|
@ -35,7 +35,7 @@ GetViewElement(nsIDocument *aDocument, const nsAString &aId)
|
|||
}
|
||||
|
||||
void
|
||||
SVGFragmentIdentifier::SaveOldPreserveAspectRatio(dom::SVGSVGElement *root)
|
||||
SVGFragmentIdentifier::SaveOldPreserveAspectRatio(dom::SVGSVGElement* root)
|
||||
{
|
||||
if (root->mPreserveAspectRatio.IsExplicitlySet()) {
|
||||
root->SetPreserveAspectRatioProperty(root->mPreserveAspectRatio.GetBaseValue());
|
||||
|
@ -43,9 +43,9 @@ SVGFragmentIdentifier::SaveOldPreserveAspectRatio(dom::SVGSVGElement *root)
|
|||
}
|
||||
|
||||
void
|
||||
SVGFragmentIdentifier::RestoreOldPreserveAspectRatio(dom::SVGSVGElement *root)
|
||||
SVGFragmentIdentifier::RestoreOldPreserveAspectRatio(dom::SVGSVGElement* root)
|
||||
{
|
||||
const SVGPreserveAspectRatio *oldPARPtr = root->GetPreserveAspectRatioProperty();
|
||||
const SVGPreserveAspectRatio* oldPARPtr = root->GetPreserveAspectRatioProperty();
|
||||
if (oldPARPtr) {
|
||||
root->mPreserveAspectRatio.SetBaseValue(*oldPARPtr, root);
|
||||
} else if (root->mPreserveAspectRatio.IsExplicitlySet()) {
|
||||
|
@ -55,7 +55,7 @@ SVGFragmentIdentifier::RestoreOldPreserveAspectRatio(dom::SVGSVGElement *root)
|
|||
}
|
||||
|
||||
void
|
||||
SVGFragmentIdentifier::SaveOldViewBox(dom::SVGSVGElement *root)
|
||||
SVGFragmentIdentifier::SaveOldViewBox(dom::SVGSVGElement* root)
|
||||
{
|
||||
if (root->mViewBox.IsExplicitlySet()) {
|
||||
root->SetViewBoxProperty(root->mViewBox.GetBaseValue());
|
||||
|
@ -63,9 +63,9 @@ SVGFragmentIdentifier::SaveOldViewBox(dom::SVGSVGElement *root)
|
|||
}
|
||||
|
||||
void
|
||||
SVGFragmentIdentifier::RestoreOldViewBox(dom::SVGSVGElement *root)
|
||||
SVGFragmentIdentifier::RestoreOldViewBox(dom::SVGSVGElement* root)
|
||||
{
|
||||
const nsSVGViewBoxRect *oldViewBoxPtr = root->GetViewBoxProperty();
|
||||
const nsSVGViewBoxRect* oldViewBoxPtr = root->GetViewBoxProperty();
|
||||
if (oldViewBoxPtr) {
|
||||
root->mViewBox.SetBaseValue(*oldViewBoxPtr, root);
|
||||
} else if (root->mViewBox.IsExplicitlySet()) {
|
||||
|
@ -75,7 +75,7 @@ SVGFragmentIdentifier::RestoreOldViewBox(dom::SVGSVGElement *root)
|
|||
}
|
||||
|
||||
void
|
||||
SVGFragmentIdentifier::SaveOldZoomAndPan(dom::SVGSVGElement *root)
|
||||
SVGFragmentIdentifier::SaveOldZoomAndPan(dom::SVGSVGElement* root)
|
||||
{
|
||||
if (root->mEnumAttributes[dom::SVGSVGElement::ZOOMANDPAN].IsExplicitlySet()) {
|
||||
root->SetZoomAndPanProperty(root->mEnumAttributes[dom::SVGSVGElement::ZOOMANDPAN].GetBaseValue());
|
||||
|
@ -83,7 +83,7 @@ SVGFragmentIdentifier::SaveOldZoomAndPan(dom::SVGSVGElement *root)
|
|||
}
|
||||
|
||||
void
|
||||
SVGFragmentIdentifier::RestoreOldZoomAndPan(dom::SVGSVGElement *root)
|
||||
SVGFragmentIdentifier::RestoreOldZoomAndPan(dom::SVGSVGElement* root)
|
||||
{
|
||||
uint16_t oldZoomAndPan = root->GetZoomAndPanProperty();
|
||||
if (oldZoomAndPan != SVG_ZOOMANDPAN_UNKNOWN) {
|
||||
|
@ -95,15 +95,33 @@ SVGFragmentIdentifier::RestoreOldZoomAndPan(dom::SVGSVGElement *root)
|
|||
}
|
||||
|
||||
void
|
||||
SVGFragmentIdentifier::ClearTransform(dom::SVGSVGElement *root)
|
||||
SVGFragmentIdentifier::SaveOldTransform(dom::SVGSVGElement* root)
|
||||
{
|
||||
root->mFragmentIdentifierTransform = nullptr;
|
||||
root->InvalidateTransformNotifyFrame();
|
||||
nsSVGAnimatedTransformList* transformList = root->GetAnimatedTransformList();
|
||||
|
||||
if (transformList && transformList->IsExplicitlySet()) {
|
||||
root->SetTransformProperty(transformList->GetBaseValue());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
SVGFragmentIdentifier::RestoreOldTransform(dom::SVGSVGElement* root)
|
||||
{
|
||||
const SVGTransformList* oldTransformPtr = root->GetTransformProperty();
|
||||
if (oldTransformPtr) {
|
||||
root->GetAnimatedTransformList(nsSVGElement::DO_ALLOCATE)->SetBaseValue(*oldTransformPtr);
|
||||
} else {
|
||||
nsSVGAnimatedTransformList* transformList = root->GetAnimatedTransformList();
|
||||
if (transformList && transformList->IsExplicitlySet()) {
|
||||
mozilla::ErrorResult error;
|
||||
root->RemoveAttribute(NS_LITERAL_STRING("transform"), error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
SVGFragmentIdentifier::ProcessSVGViewSpec(const nsAString &aViewSpec,
|
||||
dom::SVGSVGElement *root)
|
||||
SVGFragmentIdentifier::ProcessSVGViewSpec(const nsAString& aViewSpec,
|
||||
dom::SVGSVGElement* root)
|
||||
{
|
||||
if (!IsMatchingParameter(aViewSpec, NS_LITERAL_STRING("svgView"))) {
|
||||
return false;
|
||||
|
@ -156,27 +174,21 @@ SVGFragmentIdentifier::ProcessSVGViewSpec(const nsAString &aViewSpec,
|
|||
}
|
||||
preserveAspectRatioFound = true;
|
||||
} else if (IsMatchingParameter(token, NS_LITERAL_STRING("transform"))) {
|
||||
nsSVGAnimatedTransformList transforms;
|
||||
if (transformFound ||
|
||||
NS_FAILED(transforms.SetBaseValueString(params))) {
|
||||
NS_FAILED(root->GetAnimatedTransformList(nsSVGElement::DO_ALLOCATE)->
|
||||
SetBaseValueString(params))) {
|
||||
return false;
|
||||
}
|
||||
if (!root->mFragmentIdentifierTransform) {
|
||||
root->mFragmentIdentifierTransform = new gfxMatrix();
|
||||
}
|
||||
*root->mFragmentIdentifierTransform =
|
||||
transforms.GetBaseValue().GetConsolidationMatrix();
|
||||
root->InvalidateTransformNotifyFrame();
|
||||
transformFound = true;
|
||||
} else if (IsMatchingParameter(token, NS_LITERAL_STRING("zoomAndPan"))) {
|
||||
if (zoomAndPanFound) {
|
||||
return false;
|
||||
}
|
||||
nsIAtom *valAtom = NS_GetStaticAtom(params);
|
||||
nsIAtom* valAtom = NS_GetStaticAtom(params);
|
||||
if (!valAtom) {
|
||||
return false;
|
||||
}
|
||||
const nsSVGEnumMapping *mapping = dom::SVGSVGElement::sZoomAndPanMap;
|
||||
const nsSVGEnumMapping* mapping = dom::SVGSVGElement::sZoomAndPanMap;
|
||||
while (mapping->mKey) {
|
||||
if (valAtom == *(mapping->mKey)) {
|
||||
// If we've got a valid zoomAndPan value, then set it on our root element.
|
||||
|
@ -203,7 +215,7 @@ SVGFragmentIdentifier::ProcessSVGViewSpec(const nsAString &aViewSpec,
|
|||
// A previous SVGViewSpec may have overridden some attributes.
|
||||
// If they are no longer overridden we need to restore the old values.
|
||||
if (!transformFound) {
|
||||
ClearTransform(root);
|
||||
RestoreOldTransform(root);
|
||||
}
|
||||
if (!viewBoxFound) {
|
||||
RestoreOldViewBox(root);
|
||||
|
@ -220,13 +232,13 @@ SVGFragmentIdentifier::ProcessSVGViewSpec(const nsAString &aViewSpec,
|
|||
}
|
||||
|
||||
bool
|
||||
SVGFragmentIdentifier::ProcessFragmentIdentifier(nsIDocument *aDocument,
|
||||
const nsAString &aAnchorName)
|
||||
SVGFragmentIdentifier::ProcessFragmentIdentifier(nsIDocument* aDocument,
|
||||
const nsAString& aAnchorName)
|
||||
{
|
||||
NS_ABORT_IF_FALSE(aDocument->GetRootElement()->IsSVG(nsGkAtoms::svg),
|
||||
"expecting an SVG root element");
|
||||
|
||||
dom::SVGSVGElement *rootElement =
|
||||
dom::SVGSVGElement* rootElement =
|
||||
static_cast<dom::SVGSVGElement*>(aDocument->GetRootElement());
|
||||
|
||||
if (!rootElement->mUseCurrentView) {
|
||||
|
@ -235,7 +247,7 @@ SVGFragmentIdentifier::ProcessFragmentIdentifier(nsIDocument *aDocument,
|
|||
SaveOldZoomAndPan(rootElement);
|
||||
}
|
||||
|
||||
const dom::SVGViewElement *viewElement = GetViewElement(aDocument, aAnchorName);
|
||||
const dom::SVGViewElement* viewElement = GetViewElement(aDocument, aAnchorName);
|
||||
|
||||
if (viewElement) {
|
||||
if (!rootElement->mCurrentViewID) {
|
||||
|
@ -260,7 +272,8 @@ SVGFragmentIdentifier::ProcessFragmentIdentifier(nsIDocument *aDocument,
|
|||
rootElement->ClearPreserveAspectRatioProperty();
|
||||
RestoreOldZoomAndPan(rootElement);
|
||||
rootElement->ClearZoomAndPanProperty();
|
||||
ClearTransform(rootElement);
|
||||
RestoreOldTransform(rootElement);
|
||||
rootElement->ClearTransformProperty();
|
||||
if (wasOverridden) {
|
||||
rootElement->InvalidateTransformNotifyFrame();
|
||||
}
|
||||
|
|
|
@ -49,7 +49,8 @@ private:
|
|||
static void RestoreOldViewBox(dom::SVGSVGElement *root);
|
||||
static void SaveOldZoomAndPan(dom::SVGSVGElement *root);
|
||||
static void RestoreOldZoomAndPan(dom::SVGSVGElement *root);
|
||||
static void ClearTransform(dom::SVGSVGElement *root);
|
||||
static void SaveOldTransform(dom::SVGSVGElement *root);
|
||||
static void RestoreOldTransform(dom::SVGSVGElement *root);
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -962,36 +962,33 @@ SVGSVGElement::PrependLocalTransformsTo(const gfxMatrix &aMatrix,
|
|||
NS_ABORT_IF_FALSE(aWhich != eChildToUserSpace || aMatrix.IsIdentity(),
|
||||
"Skipping eUserSpaceToParent transforms makes no sense");
|
||||
|
||||
// 'transform' attribute:
|
||||
gfxMatrix fromUserSpace =
|
||||
SVGSVGElementBase::PrependLocalTransformsTo(aMatrix, aWhich);
|
||||
if (aWhich == eUserSpaceToParent) {
|
||||
return fromUserSpace;
|
||||
}
|
||||
|
||||
if (IsInner()) {
|
||||
float x, y;
|
||||
const_cast<SVGSVGElement*>(this)->GetAnimatedLengthValues(&x, &y, nullptr);
|
||||
if (aWhich == eAllTransforms) {
|
||||
// the common case
|
||||
return GetViewBoxTransform() * gfxMatrix().Translate(gfxPoint(x, y)) * aMatrix;
|
||||
}
|
||||
if (aWhich == eUserSpaceToParent) {
|
||||
return gfxMatrix().Translate(gfxPoint(x, y)) * aMatrix;
|
||||
return GetViewBoxTransform() * gfxMatrix().Translate(gfxPoint(x, y)) * fromUserSpace;
|
||||
}
|
||||
NS_ABORT_IF_FALSE(aWhich == eChildToUserSpace, "Unknown TransformTypes");
|
||||
return GetViewBoxTransform(); // no need to multiply identity aMatrix
|
||||
}
|
||||
|
||||
if (aWhich == eUserSpaceToParent) {
|
||||
// only inner-<svg> has eUserSpaceToParent transforms
|
||||
return aMatrix;
|
||||
return GetViewBoxTransform() * fromUserSpace;
|
||||
}
|
||||
|
||||
if (IsRoot()) {
|
||||
gfxMatrix zoomPanTM;
|
||||
zoomPanTM.Translate(gfxPoint(mCurrentTranslate.GetX(), mCurrentTranslate.GetY()));
|
||||
zoomPanTM.Scale(mCurrentScale, mCurrentScale);
|
||||
gfxMatrix matrix = mFragmentIdentifierTransform ?
|
||||
*mFragmentIdentifierTransform * aMatrix : aMatrix;
|
||||
return GetViewBoxTransform() * zoomPanTM * matrix;
|
||||
return GetViewBoxTransform() * zoomPanTM * fromUserSpace;
|
||||
}
|
||||
|
||||
// outer-<svg>, but inline in some other content:
|
||||
return GetViewBoxTransform() * aMatrix;
|
||||
return GetViewBoxTransform() * fromUserSpace;
|
||||
}
|
||||
|
||||
/* virtual */ bool
|
||||
|
@ -1054,7 +1051,7 @@ SVGSVGElement::ShouldSynthesizeViewBox() const
|
|||
}
|
||||
|
||||
|
||||
// Callback function, for freeing uint64_t values stored in property table
|
||||
// Callback function, for freeing SVGPreserveAspectRatio values stored in property table
|
||||
static void
|
||||
ReleasePreserveAspectRatioPropertyValue(void* aObject, /* unused */
|
||||
nsIAtom* aPropertyName, /* unused */
|
||||
|
@ -1168,7 +1165,7 @@ SVGSVGElement::FlushImageTransformInvalidation()
|
|||
}
|
||||
}
|
||||
|
||||
// Callback function, for freeing uint64_t values stored in property table
|
||||
// Callback function, for freeing nsSVGViewBoxRect values stored in property table
|
||||
static void
|
||||
ReleaseViewBoxPropertyValue(void* aObject, /* unused */
|
||||
nsIAtom* aPropertyName, /* unused */
|
||||
|
@ -1245,5 +1242,52 @@ SVGSVGElement::ClearZoomAndPanProperty()
|
|||
return UnsetProperty(nsGkAtoms::zoomAndPan);
|
||||
}
|
||||
|
||||
// Callback function, for freeing SVGTransformList values stored in property table
|
||||
static void
|
||||
ReleaseTransformPropertyValue(void* aObject, /* unused */
|
||||
nsIAtom* aPropertyName, /* unused */
|
||||
void* aPropertyValue,
|
||||
void* aData /* unused */)
|
||||
{
|
||||
SVGTransformList* valPtr =
|
||||
static_cast<SVGTransformList*>(aPropertyValue);
|
||||
delete valPtr;
|
||||
}
|
||||
|
||||
bool
|
||||
SVGSVGElement::SetTransformProperty(const SVGTransformList& aTransform)
|
||||
{
|
||||
SVGTransformList* pTransformOverridePtr = new SVGTransformList(aTransform);
|
||||
nsresult rv = SetProperty(nsGkAtoms::transform,
|
||||
pTransformOverridePtr,
|
||||
ReleaseTransformPropertyValue,
|
||||
true);
|
||||
NS_ABORT_IF_FALSE(rv != NS_PROPTABLE_PROP_OVERWRITTEN,
|
||||
"Setting override value when it's already set...?");
|
||||
|
||||
if (MOZ_UNLIKELY(NS_FAILED(rv))) {
|
||||
// property-insertion failed (e.g. OOM in property-table code)
|
||||
delete pTransformOverridePtr;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
const SVGTransformList*
|
||||
SVGSVGElement::GetTransformProperty() const
|
||||
{
|
||||
void* valPtr = GetProperty(nsGkAtoms::transform);
|
||||
if (valPtr) {
|
||||
return static_cast<SVGTransformList*>(valPtr);
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool
|
||||
SVGSVGElement::ClearTransformProperty()
|
||||
{
|
||||
return UnsetProperty(nsGkAtoms::transform);
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -278,6 +278,9 @@ private:
|
|||
bool SetZoomAndPanProperty(uint16_t aValue);
|
||||
uint16_t GetZoomAndPanProperty() const;
|
||||
bool ClearZoomAndPanProperty();
|
||||
bool SetTransformProperty(const SVGTransformList& aValue);
|
||||
const SVGTransformList* GetTransformProperty() const;
|
||||
bool ClearTransformProperty();
|
||||
|
||||
bool IsRoot() const {
|
||||
NS_ASSERTION((IsInDoc() && !GetParent()) ==
|
||||
|
@ -348,7 +351,6 @@ private:
|
|||
nsSVGViewBox mViewBox;
|
||||
SVGAnimatedPreserveAspectRatio mPreserveAspectRatio;
|
||||
|
||||
nsAutoPtr<gfxMatrix> mFragmentIdentifierTransform;
|
||||
nsAutoPtr<nsString> mCurrentViewID;
|
||||
|
||||
// The size of the rectangular SVG viewport into which we render. This is
|
||||
|
|
|
@ -25,6 +25,12 @@ nsSVGAnimatedTransformList::SetBaseValueString(const nsAString& aValue)
|
|||
return rv;
|
||||
}
|
||||
|
||||
return SetBaseValue(newBaseValue);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsSVGAnimatedTransformList::SetBaseValue(const SVGTransformList& aValue)
|
||||
{
|
||||
SVGAnimatedTransformList *domWrapper =
|
||||
SVGAnimatedTransformList::GetDOMWrapperIfExists(this);
|
||||
if (domWrapper) {
|
||||
|
@ -33,14 +39,14 @@ nsSVGAnimatedTransformList::SetBaseValueString(const nsAString& aValue)
|
|||
// to remove DOM items from itself, and any removed DOM items need to copy
|
||||
// their internal counterpart values *before* we change them.
|
||||
//
|
||||
domWrapper->InternalBaseValListWillChangeLengthTo(newBaseValue.Length());
|
||||
domWrapper->InternalBaseValListWillChangeLengthTo(aValue.Length());
|
||||
}
|
||||
|
||||
// We don't need to call DidChange* here - we're only called by
|
||||
// nsSVGElement::ParseAttribute under Element::SetAttr,
|
||||
// which takes care of notifying.
|
||||
|
||||
rv = mBaseVal.CopyFrom(newBaseValue);
|
||||
nsresult rv = mBaseVal.CopyFrom(aValue);
|
||||
if (NS_FAILED(rv) && domWrapper) {
|
||||
// Attempting to increase mBaseVal's length failed - reduce domWrapper
|
||||
// back to the same length:
|
||||
|
|
|
@ -56,6 +56,8 @@ public:
|
|||
return mBaseVal;
|
||||
}
|
||||
|
||||
nsresult SetBaseValue(const SVGTransformList& aValue);
|
||||
|
||||
nsresult SetBaseValueString(const nsAString& aValue);
|
||||
|
||||
void ClearBaseValue();
|
||||
|
|
|
@ -45,8 +45,8 @@ function runTest()
|
|||
// root.nearestViewportElement == null
|
||||
is((function(){try{return root.getCTM()}catch(e){return e}})(), null, "root.getCTM()");
|
||||
// inner.nearestViewportElement == root
|
||||
is((function(){try{return inner.getCTM().e}catch(e){return e}})(), 31, "inner.getCTM().e");
|
||||
is((function(){try{return inner.getCTM().f}catch(e){return e}})(), 42, "inner.getCTM().f");
|
||||
is((function(){try{return inner.getCTM().e}catch(e){return e}})(), 1, "inner.getCTM().e");
|
||||
is((function(){try{return inner.getCTM().f}catch(e){return e}})(), 2, "inner.getCTM().f");
|
||||
// g1.nearestViewportElement == inner
|
||||
is((function(){try{return g1.getCTM().e}catch(e){return e}})(), 30, "g1.getCTM().e");
|
||||
is((function(){try{return g1.getCTM().f}catch(e){return e}})(), 40, "g1.getCTM().f");
|
||||
|
@ -75,8 +75,8 @@ function runTest()
|
|||
is((function(){try{return root.getScreenCTM().e}catch(e){return e}})(), 11, "root.getScreenCTM().e");
|
||||
is((function(){try{return root.getScreenCTM().f}catch(e){return e}})(), 22, "root.getScreenCTM().f");
|
||||
// inner.farthestViewportElement == root
|
||||
is((function(){try{return inner.getScreenCTM().e}catch(e){return e}})(), 45, "inner.getScreenCTM().e");
|
||||
is((function(){try{return inner.getScreenCTM().f}catch(e){return e}})(), 68, "inner.getScreenCTM().f");
|
||||
is((function(){try{return inner.getScreenCTM().e}catch(e){return e}})(), 15, "inner.getScreenCTM().e");
|
||||
is((function(){try{return inner.getScreenCTM().f}catch(e){return e}})(), 28, "inner.getScreenCTM().f");
|
||||
// g1.farthestViewportElement == root
|
||||
is((function(){try{return g1.getScreenCTM().e}catch(e){return e}})(), 45, "g1.getScreenCTM().e");
|
||||
is((function(){try{return g1.getScreenCTM().f}catch(e){return e}})(), 68, "g1.getScreenCTM().f");
|
||||
|
|
|
@ -1825,7 +1825,7 @@ default all:: $(PURGECACHES_FILES)
|
|||
$(PURGECACHES_FILES):
|
||||
if test -d $(@D) ; then touch $@ ; fi
|
||||
|
||||
.DEFAULT_GOAL ?= default
|
||||
.DEFAULT_GOAL := $(or $(OVERRIDE_DEFAULT_GOAL),default)
|
||||
|
||||
#############################################################################
|
||||
# Derived targets and dependencies
|
||||
|
|
|
@ -598,6 +598,8 @@ CodeGeneratorARM::visitDivPowTwoI(LDivPowTwoI *ins)
|
|||
|
||||
// Do the shift.
|
||||
masm.as_mov(output, asr(ScratchRegister, shift));
|
||||
} else {
|
||||
masm.ma_mov(lhs, output);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -315,3 +315,12 @@ for (let i = 0; i < 31; i++) {
|
|||
}
|
||||
assertEq(f(INT32_MIN), (INT32_MIN/Math.pow(2,30))|0);
|
||||
assertEq(f(INT32_MAX), (INT32_MAX/Math.pow(2,30))|0);
|
||||
var f = asmLink(asmCompile(USE_ASM + "function f(i) { i=i|0; return ((((i|0)/1)|0)+i)|0; } return f;"));
|
||||
for (let i = 0; i < 31; i++) {
|
||||
assertEq(f(Math.pow(2,i)), (Math.pow(2,i) * 2)|0);
|
||||
assertEq(f(Math.pow(2,i) - 1), ((Math.pow(2,i) - 1) * 2)|0);
|
||||
assertEq(f(-Math.pow(2,i)), (-Math.pow(2,i) * 2)|0);
|
||||
assertEq(f(-Math.pow(2,i) - 1), ((-Math.pow(2,i) - 1) * 2)|0);
|
||||
}
|
||||
assertEq(f(INT32_MIN), (INT32_MIN * 2)|0);
|
||||
assertEq(f(INT32_MAX), (INT32_MAX * 2)|0);
|
||||
|
|
|
@ -272,6 +272,7 @@ pref(svg.paint-order.enabled,true) == paint-order-03.svg paint-order-03-ref.svg
|
|||
== suspend-07.svg pass.svg
|
||||
== suspend-08.svg pass.svg
|
||||
== svg-transform-01.svg pass.svg
|
||||
== svg-transform-02.svg pass.svg
|
||||
== symbol-01.svg symbol-01-ref.svg
|
||||
== text-font-size-01.svg pass.svg
|
||||
random-if(gtk2Widget) == text-font-weight-01.svg text-font-weight-01-ref.svg # bug 386713
|
||||
|
|
|
@ -11,18 +11,15 @@
|
|||
|
||||
<!-- Big green background to match lime.svg -->
|
||||
<rect width="100%" height="100%" fill="lime"/>
|
||||
<!-- Red "workspace" (should be covered up, if tests pass) -->
|
||||
<!-- Red "workspaces" (should be covered up, if tests pass) -->
|
||||
<rect x="100" y="100" width="100" height="100" fill="red"/>
|
||||
<rect x="100" y="300" width="100" height="100" fill="red"/>
|
||||
|
||||
<!-- FIRST ROW -->
|
||||
<!-- Check that 'by' works at all -->
|
||||
<rect fill="lime" x="0" y="0" width="50" height="25">
|
||||
<rect fill="lime" x="0" y="0" width="50" height="50">
|
||||
<animateMotion by="100, 100" begin="100" dur="1" fill="freeze"/>
|
||||
</rect>
|
||||
<foreignObject id="fo" x="0" y="25" width="50" height="25">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="width:100%;height:100%;background-color:lime"/>
|
||||
</foreignObject>
|
||||
<animateMotion xlink:href="#fo" by="100, 100" begin="100" dur="1" fill="freeze"/>
|
||||
|
||||
<!-- Check that 'by' is additive w/ 'by' -->
|
||||
<rect fill="lime" x="50" y="50" width="50" height="50">
|
||||
|
@ -42,4 +39,15 @@
|
|||
<animateMotion by="500, 500" begin="100" dur="1" fill="freeze"/>
|
||||
<animateMotion from="300,300" to="150,150" begin="100" dur="1" fill="freeze"/>
|
||||
</rect>
|
||||
|
||||
<!-- Other tags -->
|
||||
<foreignObject id="fo" x="0" y="0" width="100" height="50">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml" style="width:100%;height:100%;background-color:lime"/>
|
||||
</foreignObject>
|
||||
<animateMotion xlink:href="#fo" by="100, 300" begin="100" dur="1" fill="freeze"/>
|
||||
|
||||
<svg x="0" y="50" width="100" height="50">
|
||||
<rect width="100" height="50" fill="lime"/>
|
||||
<animateMotion by="100, 300" begin="100" dur="1" fill="freeze"/>
|
||||
</svg>
|
||||
</svg>
|
||||
|
|
До Ширина: | Высота: | Размер: 1.8 KiB После Ширина: | Высота: | Размер: 2.0 KiB |
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
class="reftest-wait" transform="translate(100,0)">
|
||||
<script xlink:href="../smil-util.js" type="text/javascript"/>
|
||||
<script type="text/javascript">
|
||||
function doTest() {
|
||||
setTimeAndSnapshot(101, true);
|
||||
}
|
||||
window.addEventListener("MozReftestInvalidate", doTest, false);
|
||||
</script>
|
||||
|
||||
<animateMotion by="-100, 0" begin="100" dur="1" fill="freeze"/>
|
||||
|
||||
<!-- Big green background to match lime.svg -->
|
||||
<rect width="100%" height="100%" fill="lime"/>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 563 B |
|
@ -2,6 +2,7 @@
|
|||
# element.
|
||||
|
||||
skip-if(B2G) == animateMotion-by-1.svg lime.svg # bug 773482
|
||||
skip-if(B2G) == animateMotion-by-2.svg lime.svg # bug 773482
|
||||
skip-if(B2G) == animateMotion-from-to-1.svg lime.svg # bug 773482
|
||||
== animateMotion-indefinite-to-1.svg lime.svg
|
||||
== animateMotion-indefinite-to-2.svg lime.svg
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
|
||||
<!-- From https://bugzilla.mozilla.org/show_bug.cgi?id=863994 -->
|
||||
|
||||
<rect width="100%" height="100%" fill="lime"/>
|
||||
|
||||
<svg width="640" height="480" xmlns="http://www.w3.org/2000/svg" x="100" y="100" viewBox="0 0 640 480">
|
||||
<rect width="100%" height="100%" fill="red"/>
|
||||
</svg>
|
||||
<svg width="640" height="480" xmlns="http://www.w3.org/2000/svg" x="100" y="100" viewBox="0 0 640 480" transform="translate(0, 0)">
|
||||
<rect width="100%" height="100%" fill="lime"/>
|
||||
</svg>
|
||||
</svg>
|
После Ширина: | Высота: | Размер: 671 B |
|
@ -96,9 +96,10 @@ public:
|
|||
|
||||
virtual bool IsSVGTransformed(gfxMatrix *aOwnTransform,
|
||||
gfxMatrix *aFromParentTransform) const {
|
||||
// Outer-<svg> can transform its children with viewBox, currentScale and
|
||||
// currentTranslate, but it itself is not transformed by SVG transforms.
|
||||
return false;
|
||||
// Our anonymous wrapper performs the transforms. We simply
|
||||
// return whether we are transformed here but don't apply the transforms
|
||||
// themselves.
|
||||
return GetFirstPrincipalChild()->IsTransformed();
|
||||
}
|
||||
|
||||
// nsISVGSVGFrame interface:
|
||||
|
@ -255,13 +256,6 @@ public:
|
|||
*/
|
||||
virtual nsIAtom* GetType() const;
|
||||
|
||||
virtual bool IsSVGTransformed(gfxMatrix *aOwnTransform,
|
||||
gfxMatrix *aFromParentTransform) const {
|
||||
// Outer-<svg> can transform its children with viewBox, currentScale and
|
||||
// currentTranslate, but it itself is not transformed by _SVG_ transforms.
|
||||
return false;
|
||||
}
|
||||
|
||||
// nsSVGContainerFrame methods:
|
||||
virtual gfxMatrix GetCanvasTM(uint32_t aFor) {
|
||||
// GetCanvasTM returns the transform from an SVG frame to the frame's
|
||||
|
|
|
@ -37,7 +37,7 @@ endif
|
|||
MAR_BIN = $(LIBXUL_DIST)/host/bin/mar$(HOST_BIN_SUFFIX)
|
||||
MBSDIFF_BIN = $(LIBXUL_DIST)/host/bin/mbsdiff$(HOST_BIN_SUFFIX)
|
||||
|
||||
.DEFAULT_GOAL := full-update
|
||||
OVERRIDE_DEFAULT_GOAL := full-update
|
||||
full-update:: complete-patch
|
||||
|
||||
ifeq ($(OS_TARGET), WINNT)
|
||||
|
|
Загрузка…
Ссылка в новой задаче