Revise lifetime management of IntersectionObservers.

Tag #249
This commit is contained in:
wolfbeast 2018-12-22 02:15:50 +01:00 committed by Roy Tam
commit 42d9f2ffb3
8 changed files with 46 additions and 26 deletions

View file

@ -3947,7 +3947,7 @@ Element::ClearDataset()
slots->mDataset = nullptr;
}
nsDataHashtable<nsPtrHashKey<DOMIntersectionObserver>, int32_t>*
nsDataHashtable<nsRefPtrHashKey<DOMIntersectionObserver>, int32_t>*
Element::RegisteredIntersectionObservers()
{
nsDOMSlots* slots = DOMSlots();
@ -3962,7 +3962,7 @@ enum nsPreviousIntersectionThreshold {
void
Element::RegisterIntersectionObserver(DOMIntersectionObserver* aObserver)
{
nsDataHashtable<nsPtrHashKey<DOMIntersectionObserver>, int32_t>* observers =
nsDataHashtable<nsRefPtrHashKey<DOMIntersectionObserver>, int32_t>* observers =
RegisteredIntersectionObservers();
if (observers->Contains(aObserver)) {
return;
@ -3979,7 +3979,7 @@ Element::RegisterIntersectionObserver(DOMIntersectionObserver* aObserver)
void
Element::UnregisterIntersectionObserver(DOMIntersectionObserver* aObserver)
{
nsDataHashtable<nsPtrHashKey<DOMIntersectionObserver>, int32_t>* observers =
nsDataHashtable<nsRefPtrHashKey<DOMIntersectionObserver>, int32_t>* observers =
RegisteredIntersectionObservers();
observers->Remove(aObserver);
}
@ -3987,7 +3987,7 @@ Element::UnregisterIntersectionObserver(DOMIntersectionObserver* aObserver)
bool
Element::UpdateIntersectionObservation(DOMIntersectionObserver* aObserver, int32_t aThreshold)
{
nsDataHashtable<nsPtrHashKey<DOMIntersectionObserver>, int32_t>* observers =
nsDataHashtable<nsRefPtrHashKey<DOMIntersectionObserver>, int32_t>* observers =
RegisteredIntersectionObservers();
if (!observers->Contains(aObserver)) {
return false;