summaryrefslogtreecommitdiff
path: root/Source/WebCore/dom/PopStateEvent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/dom/PopStateEvent.cpp')
-rw-r--r--Source/WebCore/dom/PopStateEvent.cpp49
1 files changed, 24 insertions, 25 deletions
diff --git a/Source/WebCore/dom/PopStateEvent.cpp b/Source/WebCore/dom/PopStateEvent.cpp
index 693782c42..e4c6437a5 100644
--- a/Source/WebCore/dom/PopStateEvent.cpp
+++ b/Source/WebCore/dom/PopStateEvent.cpp
@@ -13,7 +13,7 @@
* THIS SOFTWARE IS PROVIDED BY APPLE, INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
@@ -29,53 +29,52 @@
#include "EventNames.h"
#include "History.h"
-#include "SerializedScriptValue.h"
+#include <runtime/JSCInlines.h>
namespace WebCore {
-PopStateEventInit::PopStateEventInit()
+PopStateEvent::PopStateEvent(JSC::ExecState& state, const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
+ : Event(type, initializer, isTrusted)
+ , m_state(state.vm(), initializer.state)
{
}
-PopStateEvent::PopStateEvent()
+PopStateEvent::PopStateEvent(RefPtr<SerializedScriptValue>&& serializedState, History* history)
: Event(eventNames().popstateEvent, false, true)
- , m_serializedState(0)
- , m_history(0)
-{
-}
-
-PopStateEvent::PopStateEvent(const AtomicString& type, const PopStateEventInit& initializer)
- : Event(type, initializer)
- , m_state(initializer.state)
- , m_serializedState(0)
- , m_history(0)
+ , m_serializedState(WTFMove(serializedState))
+ , m_history(history)
{
}
-PopStateEvent::PopStateEvent(PassRefPtr<SerializedScriptValue> serializedState, PassRefPtr<History> history)
- : Event(eventNames().popstateEvent, false, true)
- , m_serializedState(serializedState)
- , m_history(history)
+PopStateEvent::~PopStateEvent()
{
}
-PopStateEvent::~PopStateEvent()
+Ref<PopStateEvent> PopStateEvent::create(RefPtr<SerializedScriptValue>&& serializedState, History* history)
{
+ return adoptRef(*new PopStateEvent(WTFMove(serializedState), history));
}
-PassRefPtr<PopStateEvent> PopStateEvent::create()
+Ref<PopStateEvent> PopStateEvent::create(JSC::ExecState& state, const AtomicString& type, const Init& initializer, IsTrusted isTrusted)
{
- return adoptRef(new PopStateEvent);
+ return adoptRef(*new PopStateEvent(state, type, initializer, isTrusted));
}
-PassRefPtr<PopStateEvent> PopStateEvent::create(PassRefPtr<SerializedScriptValue> serializedState, PassRefPtr<History> history)
+Ref<PopStateEvent> PopStateEvent::createForBindings()
{
- return adoptRef(new PopStateEvent(serializedState, history));
+ return adoptRef(*new PopStateEvent);
}
-PassRefPtr<PopStateEvent> PopStateEvent::create(const AtomicString& type, const PopStateEventInit& initializer)
+RefPtr<SerializedScriptValue> PopStateEvent::trySerializeState(JSC::ExecState& executionState)
{
- return adoptRef(new PopStateEvent(type, initializer));
+ ASSERT(!m_state.hasNoValue());
+
+ if (!m_serializedState && !m_triedToSerialize) {
+ m_serializedState = SerializedScriptValue::create(executionState, m_state.jsValue(), SerializationErrorMode::NonThrowing);
+ m_triedToSerialize = true;
+ }
+
+ return m_serializedState;
}
EventInterface PopStateEvent::eventInterface() const