#include "config.h"
#include "PopStateEvent.h"
#include "EventNames.h"
#include "History.h"
#include <JavaScriptCore/JSCInlines.h>
namespace WebCore {
PopStateEvent::PopStateEvent(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
: Event(type, initializer, isTrusted)
, m_state(initializer.state)
{
}
PopStateEvent::PopStateEvent(RefPtr<SerializedScriptValue>&& serializedState, History* history)
: Event(eventNames().popstateEvent, false, false)
, m_serializedState(WTFMove(serializedState))
, m_history(history)
{
}
PopStateEvent::~PopStateEvent() = default;
Ref<PopStateEvent> PopStateEvent::create(RefPtr<SerializedScriptValue>&& serializedState, History* history)
{
return adoptRef(*new PopStateEvent(WTFMove(serializedState), history));
}
Ref<PopStateEvent> PopStateEvent::create(const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
{
return adoptRef(*new PopStateEvent(type, initializer, isTrusted));
}
Ref<PopStateEvent> PopStateEvent::createForBindings()
{
return adoptRef(*new PopStateEvent);
}
RefPtr<SerializedScriptValue> PopStateEvent::trySerializeState(JSC::ExecState& executionState)
{
ASSERT(m_state);
if (!m_serializedState && !m_triedToSerialize) {
m_serializedState = SerializedScriptValue::create(executionState, m_state, SerializationErrorMode::NonThrowing);
m_triedToSerialize = true;
}
return m_serializedState;
}
EventInterface PopStateEvent::eventInterface() const
{
return PopStateEventInterfaceType;
}
}