1+ /*
2+ * Copyright (C) 2022-present The WebF authors. All rights reserved.
3+ */
4+
5+ #include " hybrid_router_change_event.h"
6+ #include " bindings/qjs/cppgc/gc_visitor.h"
7+ #include " event_type_names.h"
8+ #include " qjs_hybrid_router_change_event.h"
9+
10+ namespace webf {
11+
12+ HybridRouterChangeEvent* HybridRouterChangeEvent::Create (ExecutingContext* context, ExceptionState& exception_state) {
13+ return MakeGarbageCollected<HybridRouterChangeEvent>(context, event_type_names::khybridrouterchange, exception_state);
14+ }
15+
16+ HybridRouterChangeEvent* HybridRouterChangeEvent::Create (
17+ ExecutingContext* context,
18+ const AtomicString& type,
19+ const std::shared_ptr<HybridRouterChangeEventInit>& initializer,
20+ ExceptionState& exception_state) {
21+ return MakeGarbageCollected<HybridRouterChangeEvent>(context, type, initializer, exception_state);
22+ }
23+
24+ HybridRouterChangeEvent::HybridRouterChangeEvent (ExecutingContext* context,
25+ const AtomicString& type,
26+ ExceptionState& exception_state)
27+ : Event(context, type) {}
28+
29+ HybridRouterChangeEvent::HybridRouterChangeEvent (ExecutingContext* context,
30+ const AtomicString& type,
31+ const std::shared_ptr<HybridRouterChangeEventInit>& initializer,
32+ ExceptionState& exception_state)
33+ : Event(context, type),
34+ state_ (initializer->hasState () ? initializer->state() : ScriptValue::Empty(ctx())),
35+ kind_(initializer->hasKind () ? initializer->kind() : AtomicString::Empty()),
36+ name_(initializer->hasName () ? initializer->name() : AtomicString::Empty()) {}
37+
38+ HybridRouterChangeEvent::HybridRouterChangeEvent (ExecutingContext* context,
39+ const AtomicString& type,
40+ NativeHybridRouterChangeEvent* native_event)
41+ : Event(context, type, &native_event->native_event),
42+ #if ANDROID_32_BIT
43+ state_ (ScriptValue::CreateJsonObject(context->ctx (),
44+ reinterpret_cast<const char*>(native_event->state),
45+ strlen(reinterpret_cast <const char *>(native_event->state)))),
46+ kind_(AtomicString(
47+ ctx (),
48+ std::unique_ptr<AutoFreeNativeString>(reinterpret_cast <AutoFreeNativeString*>(native_event->kind)))),
49+ name_(AtomicString(
50+ ctx (),
51+ std::unique_ptr<AutoFreeNativeString>(reinterpret_cast <AutoFreeNativeString*>(native_event->name))))
52+ #else
53+ state_ (ScriptValue::CreateJsonObject(context->ctx (),
54+ static_cast<const char*>(native_event->state),
55+ strlen(static_cast <const char *>(native_event->state)))),
56+ kind_(AtomicString(
57+ ctx (),
58+ std::unique_ptr<AutoFreeNativeString>(reinterpret_cast <AutoFreeNativeString*>(native_event->kind)))),
59+ name_(AtomicString(
60+ ctx (),
61+ std::unique_ptr<AutoFreeNativeString>(reinterpret_cast <AutoFreeNativeString*>(native_event->name))))
62+ #endif
63+ {
64+ }
65+
66+ ScriptValue HybridRouterChangeEvent::state () const {
67+ return state_;
68+ }
69+
70+ AtomicString HybridRouterChangeEvent::kind () const {
71+ return kind_;
72+ }
73+
74+ AtomicString HybridRouterChangeEvent::name () const {
75+ return name_;
76+ }
77+
78+ bool HybridRouterChangeEvent::IsHybridRouterChangeEvent () const {
79+ return true ;
80+ }
81+
82+ void HybridRouterChangeEvent::Trace (GCVisitor* visitor) const {
83+ state_.Trace (visitor);
84+ Event::Trace (visitor);
85+ }
86+
87+ } // namespace webf
0 commit comments