PaymentMethodChangeEvent.h [plain text]
#pragma once
#if ENABLE(PAYMENT_REQUEST)
#include "JSValueInWrappedObject.h"
#include "PaymentRequestUpdateEvent.h"
#include <JavaScriptCore/Strong.h>
#include <wtf/Variant.h>
#include <wtf/text/WTFString.h>
namespace JSC {
class JSObject;
}
namespace WebCore {
class PaymentMethodChangeEvent final : public PaymentRequestUpdateEvent {
public:
template<typename... Args> static Ref<PaymentMethodChangeEvent> create(Args&&... args)
{
return adoptRef(*new PaymentMethodChangeEvent(std::forward<Args>(args)...));
}
using MethodDetailsFunction = std::function<JSC::Strong<JSC::JSObject>(JSC::ExecState&)>;
using MethodDetailsType = Variant<JSValueInWrappedObject, MethodDetailsFunction>;
const String& methodName() const { return m_methodName; }
const MethodDetailsType& methodDetails() const { return m_methodDetails; }
JSValueInWrappedObject& cachedMethodDetails() { return m_cachedMethodDetails; }
EventInterface eventInterface() const override;
struct Init final : PaymentRequestUpdateEventInit {
String methodName;
JSC::Strong<JSC::JSObject> methodDetails;
};
private:
PaymentMethodChangeEvent(const AtomicString& type, Init&&);
PaymentMethodChangeEvent(const AtomicString& type, const String& methodName, MethodDetailsFunction&&);
String m_methodName;
MethodDetailsType m_methodDetails;
JSValueInWrappedObject m_cachedMethodDetails;
};
}
#endif // ENABLE(PAYMENT_REQUEST)