| OLD | NEW | 
|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "core/frame/LocalFrameLifecycleNotifier.h" | 5 #include "core/frame/LocalFrameLifecycleNotifier.h" | 
| 6 | 6 | 
| 7 #include "core/frame/LocalFrameLifecycleObserver.h" | 7 #include "core/frame/LocalFrameLifecycleObserver.h" | 
| 8 | 8 | 
| 9 namespace blink { | 9 namespace blink { | 
| 10 | 10 | 
| 11 void LocalFrameLifecycleNotifier::notifyWillDetachFrameHost() | 11 void LocalFrameLifecycleNotifier::notifyWillDetachFrameHost() | 
| 12 { | 12 { | 
| 13     TemporaryChange<IterationType> scope(m_iterating, IteratingOverAll); | 13     TemporaryChange<IterationType> scope(m_iterating, IteratingOverAll); | 
| 14 #if !ENABLE(OILPAN) |  | 
| 15     // Notifications perform unknown amounts of heap allocations, |  | 
| 16     // which might trigger (conservative) GCs. This will flush out |  | 
| 17     // dead observers, causing the _non-heap_ set be updated. Snapshot |  | 
| 18     // the observers and explicitly check if they're still alive before |  | 
| 19     // notifying. |  | 
| 20     Vector<RawPtr<LocalFrameLifecycleObserver>> snapshotOfObservers; |  | 
| 21     copyToVector(m_observers, snapshotOfObservers); |  | 
| 22     for (LocalFrameLifecycleObserver* observer : snapshotOfObservers) { |  | 
| 23         if (m_observers.contains(observer)) |  | 
| 24             observer->willDetachFrameHost(); |  | 
| 25     } |  | 
| 26 #else |  | 
| 27     for (LocalFrameLifecycleObserver* observer : m_observers) | 14     for (LocalFrameLifecycleObserver* observer : m_observers) | 
| 28         observer->willDetachFrameHost(); | 15         observer->willDetachFrameHost(); | 
| 29 #endif |  | 
| 30 } | 16 } | 
| 31 | 17 | 
| 32 } // namespace blink | 18 } // namespace blink | 
| OLD | NEW | 
|---|