[intersection-observer] Calculate areas using int64_t.

Tag #249
This commit is contained in:
wolfbeast 2018-12-22 14:59:46 +01:00 committed by Roy Tam
commit d76f949502

View file

@ -413,13 +413,15 @@ DOMIntersectionObserver::Update(nsIDocument* aDocument, DOMHighResTimeStamp time
}
}
double targetArea = targetRect.width * targetRect.height;
double intersectionArea = !intersectionRect ?
0 : intersectionRect->width * intersectionRect->height;
int64_t targetArea =
(int64_t) targetRect.Width() * (int64_t) targetRect.Height();
int64_t intersectionArea = !intersectionRect ? 0 :
(int64_t) intersectionRect->Width() *
(int64_t) intersectionRect->Height();
double intersectionRatio;
if (targetArea > 0.0) {
intersectionRatio = intersectionArea / targetArea;
intersectionRatio = (double) intersectionArea / (double) targetArea;
} else {
intersectionRatio = intersectionRect.isSome() ? 1.0 : 0.0;
}