public void MutationObserverDisconnectShouldNotAffectOtherObservers() { var document = Html(""); var div = document.CreateElement("div"); var observer1 = new MutationObserver((obs, mut) => { }); observer1.Connect(div, new MutationObserverInit { IsObservingAttributes = true, }); var observer2 = new MutationObserver((obs, mut) => { }); observer2.Connect(div, new MutationObserverInit { IsObservingAttributes = true, }); div.SetAttribute("a", "A"); observer1.Disconnect(); var records1 = observer1.Flush().ToArray(); Assert.AreEqual(records1.Count(), 0); var records2 = observer2.Flush().ToArray(); Assert.AreEqual(records2.Count(), 1); AssertRecord(records2[0], new TestMutationRecord { Type = "attributes", Target = div, AttributeName = "a" }); div.SetAttribute("b", "B"); records1 = observer1.Flush().ToArray(); Assert.AreEqual(records1.Count(), 0); records2 = observer2.Flush().ToArray(); Assert.AreEqual(records2.Count(), 1); AssertRecord(records2[0], new TestMutationRecord { Type = "attributes", Target = div, AttributeName = "b" }); }
public void MutationObserverDisconnectShouldStopAllEventsAndEmptyTheRecords() { var document = Html(""); var div = document.CreateElement("div"); var observer = new MutationObserver((obs, mut) => { }); observer.Connect(div, new MutationObserverInit { IsObservingAttributes = true, }); div.SetAttribute("a", "A"); observer.Disconnect(); var records = observer.Flush().ToArray(); Assert.AreEqual(records.Count(), 0); div.SetAttribute("b", "B"); records = observer.Flush().ToArray(); Assert.AreEqual(records.Count(), 0); }