зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1440195 Address CSS Animations r=birtles
For now, we are going to make _all_ CSS Animations related timer fuzzing only applicable in Resist Fingerprinting Mode (addressing the last couple that had not already been configured that way.) We hardcode their content mix-ins as zero, but leave comments indicating how they should behave. MozReview-Commit-ID: KhmV7wO8Pt5 --HG-- extra : rebase_source : 3b087d40b6332d447b442b435ed6fee8993e0145
This commit is contained in:
Родитель
6ebcecc30e
Коммит
88fc3fb4ea
|
@ -32,8 +32,12 @@ public:
|
||||||
dom::Nullable<double> result;
|
dom::Nullable<double> result;
|
||||||
|
|
||||||
if (!aTime.IsNull()) {
|
if (!aTime.IsNull()) {
|
||||||
|
// 0 is an inappropriate mixin for this this area; however CSS Animations needs to
|
||||||
|
// have it's Time Reduction Logic refactored, so it's currently only clamping for
|
||||||
|
// RFP mode. RFP mode gives a much lower time precision, so we accept the security
|
||||||
|
// leak here for now
|
||||||
result.SetValue(
|
result.SetValue(
|
||||||
nsRFPService::ReduceTimePrecisionAsMSecs(aTime.Value().ToMilliseconds(), TimerPrecisionType::RFPOnly)
|
nsRFPService::ReduceTimePrecisionAsMSecs(aTime.Value().ToMilliseconds(), 0, TimerPrecisionType::RFPOnly)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -246,7 +246,12 @@ CSSAnimation::QueueEvents(const StickyTimeDuration& aActiveTime)
|
||||||
const TimeStamp& aTimeStamp) {
|
const TimeStamp& aTimeStamp) {
|
||||||
double elapsedTime = aElapsedTime.ToSeconds();
|
double elapsedTime = aElapsedTime.ToSeconds();
|
||||||
if (aMessage == eAnimationCancel) {
|
if (aMessage == eAnimationCancel) {
|
||||||
elapsedTime = nsRFPService::ReduceTimePrecisionAsSecs(elapsedTime);
|
// 0 is an inappropriate value for this callsite. What we need to do is
|
||||||
|
// use a single random value for all increasing times reportable.
|
||||||
|
// That is to say, whenever elapsedTime goes negative (because an
|
||||||
|
// animation restarts, something rewinds the animation, or otherwise)
|
||||||
|
// a new random value for the mix-in must be generated.
|
||||||
|
elapsedTime = nsRFPService::ReduceTimePrecisionAsSecs(elapsedTime, 0, TimerPrecisionType::RFPOnly);
|
||||||
}
|
}
|
||||||
events.AppendElement(AnimationEventInfo(mAnimationName,
|
events.AppendElement(AnimationEventInfo(mAnimationName,
|
||||||
mOwningElement.Target(),
|
mOwningElement.Target(),
|
||||||
|
|
|
@ -267,7 +267,12 @@ CSSTransition::QueueEvents(const StickyTimeDuration& aActiveTime)
|
||||||
const TimeStamp& aTimeStamp) {
|
const TimeStamp& aTimeStamp) {
|
||||||
double elapsedTime = aElapsedTime.ToSeconds();
|
double elapsedTime = aElapsedTime.ToSeconds();
|
||||||
if (aMessage == eTransitionCancel) {
|
if (aMessage == eTransitionCancel) {
|
||||||
elapsedTime = nsRFPService::ReduceTimePrecisionAsSecs(elapsedTime);
|
// 0 is an inappropriate value for this callsite. What we need to do is
|
||||||
|
// use a single random value for all increasing times reportable.
|
||||||
|
// That is to say, whenever elapsedTime goes negative (because an
|
||||||
|
// animation restarts, something rewinds the animation, or otherwise)
|
||||||
|
// a new random value for the mix-in must be generated.
|
||||||
|
elapsedTime = nsRFPService::ReduceTimePrecisionAsSecs(elapsedTime, 0, TimerPrecisionType::RFPOnly);
|
||||||
}
|
}
|
||||||
events.AppendElement(AnimationEventInfo(TransitionProperty(),
|
events.AppendElement(AnimationEventInfo(TransitionProperty(),
|
||||||
mOwningElement.Target(),
|
mOwningElement.Target(),
|
||||||
|
|
Загрузка…
Ссылка в новой задаче