WebAutomationDOMWindowObserver.cpp [plain text]
#include "config.h"
#include "WebAutomationDOMWindowObserver.h"
#include <WebCore/Element.h>
#include <WebCore/Frame.h>
namespace WebKit {
WebAutomationDOMWindowObserver::WebAutomationDOMWindowObserver(WebCore::DOMWindow& window, WTF::Function<void(WebAutomationDOMWindowObserver&)>&& callback)
: m_window(makeWeakPtr(window))
, m_callback(WTFMove(callback))
{
ASSERT(m_window->frame());
m_window->registerObserver(*this);
}
WebAutomationDOMWindowObserver::~WebAutomationDOMWindowObserver()
{
if (m_window)
m_window->unregisterObserver(*this);
}
void WebAutomationDOMWindowObserver::willDestroyGlobalObjectInCachedFrame()
{
Ref<WebAutomationDOMWindowObserver> protectedThis(*this);
if (!m_wasDetached) {
ASSERT(m_window && m_window->frame());
m_callback(*this);
}
ASSERT(m_window);
if (m_window)
m_window->unregisterObserver(*this);
m_window = nullptr;
}
void WebAutomationDOMWindowObserver::willDestroyGlobalObjectInFrame()
{
Ref<WebAutomationDOMWindowObserver> protectedThis(*this);
if (!m_wasDetached) {
ASSERT(m_window && m_window->frame());
m_callback(*this);
}
ASSERT(m_window);
if (m_window)
m_window->unregisterObserver(*this);
m_window = nullptr;
}
void WebAutomationDOMWindowObserver::willDetachGlobalObjectFromFrame()
{
ASSERT(!m_wasDetached);
Ref<WebAutomationDOMWindowObserver> protectedThis(*this);
m_wasDetached = true;
m_callback(*this);
ASSERT(m_window);
if (m_window)
m_window->unregisterObserver(*this);
m_window = nullptr;
}
}