Bug 1458458: Move setting SMIL override values into nsDOMCSSAttrDeclaration. r=hiro

MozReview-Commit-ID: KkXGtl6vz2L
This commit is contained in:
Emilio Cobos Álvarez 2018-05-02 18:08:24 +02:00
Родитель 45a1c9c1db
Коммит e7d5158b29
4 изменённых файлов: 26 добавлений и 16 удалений

Просмотреть файл

@ -16,6 +16,7 @@ EXPORTS += [
'nsSMILAnimationFunction.h',
'nsSMILCompositorTable.h',
'nsSMILCSSProperty.h',
'nsSMILCSSValueType.h',
'nsSMILInstanceTime.h',
'nsSMILInterval.h',
'nsSMILKeySpline.h',

Просмотреть файл

@ -107,22 +107,7 @@ nsresult
nsSMILCSSProperty::SetAnimValue(const nsSMILValue& aValue)
{
NS_ENSURE_TRUE(IsPropertyAnimatable(mPropID), NS_ERROR_FAILURE);
// Convert nsSMILValue to string
nsAutoString valStr;
nsSMILCSSValueType::ValueToString(aValue, valStr);
// Use string value to style the target element
nsDOMCSSAttributeDeclaration* overrideDecl = mElement->GetSMILOverrideStyle();
if (overrideDecl) {
nsAutoString oldValStr;
overrideDecl->GetPropertyValue(mPropID, oldValStr);
if (valStr.Equals(oldValStr)) {
return NS_OK;
}
overrideDecl->SetPropertyValue(mPropID, valStr, nullptr);
}
return NS_OK;
return mElement->GetSMILOverrideStyle()->SetSMILValue(mPropID, aValue);
}
void

Просмотреть файл

@ -18,6 +18,7 @@
#include "nsIDocument.h"
#include "nsIURI.h"
#include "nsNodeUtils.h"
#include "nsSMILCSSValueType.h"
#include "nsWrapperCacheInlines.h"
#include "nsIFrame.h"
#include "ActiveLayerTracker.h"
@ -180,6 +181,26 @@ nsDOMCSSAttributeDeclaration::GetServoCSSParsingEnvironment(
};
}
nsresult
nsDOMCSSAttributeDeclaration::SetSMILValue(const nsCSSPropertyID aPropID,
const nsSMILValue& aValue)
{
MOZ_ASSERT(mIsSMILOverride);
// Convert nsSMILValue to string.
//
// FIXME(emilio): This roundtrip should go away.
nsAutoString valStr;
nsSMILCSSValueType::ValueToString(aValue, valStr);
nsAutoString oldValStr;
GetPropertyValue(aPropID, oldValStr);
if (valStr.Equals(oldValStr)) {
return NS_OK;
}
return SetPropertyValue(aPropID, valStr, nullptr);
}
nsresult
nsDOMCSSAttributeDeclaration::SetPropertyValue(const nsCSSPropertyID aPropID,
const nsAString& aValue,

Просмотреть файл

@ -14,6 +14,7 @@
#include "nsDOMCSSDeclaration.h"
class nsSMILValue;
namespace mozilla {
namespace dom {
class DomGroup;
@ -48,6 +49,8 @@ public:
return mElement;
}
nsresult SetSMILValue(const nsCSSPropertyID aPropID, const nsSMILValue&);
nsresult SetPropertyValue(const nsCSSPropertyID aPropID,
const nsAString& aValue,
nsIPrincipal* aSubjectPrincipal) override;