| Index: Source/core/frame/LocalDOMWindow.cpp
|
| diff --git a/Source/core/frame/LocalDOMWindow.cpp b/Source/core/frame/LocalDOMWindow.cpp
|
| index 7f6286bc2d48e6a9a6fd877e2937b2a91ed079e7..49b4499e49c13c678d9234990b740ba32c13130e 100644
|
| --- a/Source/core/frame/LocalDOMWindow.cpp
|
| +++ b/Source/core/frame/LocalDOMWindow.cpp
|
| @@ -117,16 +117,32 @@ using std::max;
|
|
|
| namespace blink {
|
|
|
| -LocalDOMWindow::WindowFrameObserver::WindowFrameObserver(
|
| - LocalDOMWindow& window, LocalFrame& frame)
|
| +LocalDOMWindow::WindowFrameObserver::WindowFrameObserver(LocalDOMWindow* window, LocalFrame& frame)
|
| : FrameDestructionObserver(&frame)
|
| , m_window(window)
|
| {
|
| }
|
|
|
| +PassOwnPtrWillBeRawPtr<LocalDOMWindow::WindowFrameObserver> LocalDOMWindow::WindowFrameObserver::create(LocalDOMWindow* window, LocalFrame& frame)
|
| +{
|
| + return adoptPtrWillBeNoop(new WindowFrameObserver(window, frame));
|
| +}
|
| +
|
| +#if !ENABLE(OILPAN)
|
| +LocalDOMWindow::WindowFrameObserver::~WindowFrameObserver()
|
| +{
|
| +}
|
| +#endif
|
| +
|
| +void LocalDOMWindow::WindowFrameObserver::trace(Visitor* visitor)
|
| +{
|
| + visitor->trace(m_window);
|
| + FrameDestructionObserver::trace(visitor);
|
| +}
|
| +
|
| void LocalDOMWindow::WindowFrameObserver::willDetachFrameHost()
|
| {
|
| - m_window.willDetachFrameHost();
|
| + m_window->willDetachFrameHost();
|
| }
|
|
|
| class PostMessageTimer final : public SuspendableTimer {
|
| @@ -349,7 +365,7 @@ bool LocalDOMWindow::canShowModalDialogNow(const LocalFrame* frame)
|
| }
|
|
|
| LocalDOMWindow::LocalDOMWindow(LocalFrame& frame)
|
| - : m_frameObserver(*this, frame)
|
| + : m_frameObserver(WindowFrameObserver::create(this, frame))
|
| , m_shouldPrintWhenFinishedLoading(false)
|
| #if ENABLE(ASSERT)
|
| , m_hasBeenReset(false)
|
| @@ -1910,6 +1926,7 @@ PassOwnPtr<LifecycleNotifier<LocalDOMWindow> > LocalDOMWindow::createLifecycleNo
|
| void LocalDOMWindow::trace(Visitor* visitor)
|
| {
|
| #if ENABLE(OILPAN)
|
| + visitor->trace(m_frameObserver);
|
| visitor->trace(m_document);
|
| visitor->trace(m_properties);
|
| visitor->trace(m_screen);
|
| @@ -1932,14 +1949,13 @@ void LocalDOMWindow::trace(Visitor* visitor)
|
| visitor->trace(m_eventQueue);
|
| HeapSupplementable<LocalDOMWindow>::trace(visitor);
|
| #endif
|
| - visitor->trace(m_frameObserver);
|
| DOMWindow::trace(visitor);
|
| LifecycleContext<LocalDOMWindow>::trace(visitor);
|
| }
|
|
|
| LocalFrame* LocalDOMWindow::frame() const
|
| {
|
| - return m_frameObserver.frame();
|
| + return m_frameObserver->frame();
|
| }
|
|
|
| v8::Handle<v8::Object> LocalDOMWindow::wrap(v8::Handle<v8::Object> creationContext, v8::Isolate* isolate)
|
|
|