1/*
2 This file is part of the WebKit open source project.
3 This file has been generated by generate-bindings.pl. DO NOT MODIFY!
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19*/
20
21#include "config.h"
22#include "JSHTMLTableColElement.h"
23
24#include "CustomElementReactionQueue.h"
25#include "HTMLNames.h"
26#include "JSDOMAttribute.h"
27#include "JSDOMBinding.h"
28#include "JSDOMConstructorNotConstructable.h"
29#include "JSDOMConvertNumbers.h"
30#include "JSDOMConvertStrings.h"
31#include "JSDOMExceptionHandling.h"
32#include "JSDOMWrapperCache.h"
33#include "ScriptExecutionContext.h"
34#include <JavaScriptCore/HeapSnapshotBuilder.h>
35#include <JavaScriptCore/JSCInlines.h>
36#include <wtf/GetPtr.h>
37#include <wtf/PointerPreparations.h>
38#include <wtf/URL.h>
39
40
41namespace WebCore {
42using namespace JSC;
43
44// Attributes
45
46JSC::EncodedJSValue jsHTMLTableColElementConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
47bool setJSHTMLTableColElementConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
48JSC::EncodedJSValue jsHTMLTableColElementAlign(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
49bool setJSHTMLTableColElementAlign(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
50JSC::EncodedJSValue jsHTMLTableColElementCh(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
51bool setJSHTMLTableColElementCh(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
52JSC::EncodedJSValue jsHTMLTableColElementChOff(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
53bool setJSHTMLTableColElementChOff(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
54JSC::EncodedJSValue jsHTMLTableColElementSpan(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
55bool setJSHTMLTableColElementSpan(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
56JSC::EncodedJSValue jsHTMLTableColElementVAlign(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
57bool setJSHTMLTableColElementVAlign(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
58JSC::EncodedJSValue jsHTMLTableColElementWidth(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
59bool setJSHTMLTableColElementWidth(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
60
61class JSHTMLTableColElementPrototype : public JSC::JSNonFinalObject {
62public:
63 using Base = JSC::JSNonFinalObject;
64 static JSHTMLTableColElementPrototype* create(JSC::VM& vm, JSDOMGlobalObject* globalObject, JSC::Structure* structure)
65 {
66 JSHTMLTableColElementPrototype* ptr = new (NotNull, JSC::allocateCell<JSHTMLTableColElementPrototype>(vm.heap)) JSHTMLTableColElementPrototype(vm, globalObject, structure);
67 ptr->finishCreation(vm);
68 return ptr;
69 }
70
71 DECLARE_INFO;
72 static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
73 {
74 return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
75 }
76
77private:
78 JSHTMLTableColElementPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
79 : JSC::JSNonFinalObject(vm, structure)
80 {
81 }
82
83 void finishCreation(JSC::VM&);
84};
85
86using JSHTMLTableColElementConstructor = JSDOMConstructorNotConstructable<JSHTMLTableColElement>;
87
88template<> JSValue JSHTMLTableColElementConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
89{
90 return JSHTMLElement::getConstructor(vm, &globalObject);
91}
92
93template<> void JSHTMLTableColElementConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
94{
95 putDirect(vm, vm.propertyNames->prototype, JSHTMLTableColElement::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
96 putDirect(vm, vm.propertyNames->name, jsNontrivialString(&vm, String("HTMLTableColElement"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
97 putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
98}
99
100template<> const ClassInfo JSHTMLTableColElementConstructor::s_info = { "HTMLTableColElement", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSHTMLTableColElementConstructor) };
101
102/* Hash table for prototype */
103
104static const HashTableValue JSHTMLTableColElementPrototypeTableValues[] =
105{
106 { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLTableColElementConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLTableColElementConstructor) } },
107 { "align", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLTableColElementAlign), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLTableColElementAlign) } },
108 { "ch", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLTableColElementCh), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLTableColElementCh) } },
109 { "chOff", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLTableColElementChOff), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLTableColElementChOff) } },
110 { "span", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLTableColElementSpan), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLTableColElementSpan) } },
111 { "vAlign", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLTableColElementVAlign), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLTableColElementVAlign) } },
112 { "width", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLTableColElementWidth), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLTableColElementWidth) } },
113};
114
115const ClassInfo JSHTMLTableColElementPrototype::s_info = { "HTMLTableColElementPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSHTMLTableColElementPrototype) };
116
117void JSHTMLTableColElementPrototype::finishCreation(VM& vm)
118{
119 Base::finishCreation(vm);
120 reifyStaticProperties(vm, JSHTMLTableColElement::info(), JSHTMLTableColElementPrototypeTableValues, *this);
121}
122
123const ClassInfo JSHTMLTableColElement::s_info = { "HTMLTableColElement", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSHTMLTableColElement) };
124
125JSHTMLTableColElement::JSHTMLTableColElement(Structure* structure, JSDOMGlobalObject& globalObject, Ref<HTMLTableColElement>&& impl)
126 : JSHTMLElement(structure, globalObject, WTFMove(impl))
127{
128}
129
130void JSHTMLTableColElement::finishCreation(VM& vm)
131{
132 Base::finishCreation(vm);
133 ASSERT(inherits(vm, info()));
134
135}
136
137JSObject* JSHTMLTableColElement::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
138{
139 return JSHTMLTableColElementPrototype::create(vm, &globalObject, JSHTMLTableColElementPrototype::createStructure(vm, &globalObject, JSHTMLElement::prototype(vm, globalObject)));
140}
141
142JSObject* JSHTMLTableColElement::prototype(VM& vm, JSDOMGlobalObject& globalObject)
143{
144 return getDOMPrototype<JSHTMLTableColElement>(vm, globalObject);
145}
146
147JSValue JSHTMLTableColElement::getConstructor(VM& vm, const JSGlobalObject* globalObject)
148{
149 return getDOMConstructor<JSHTMLTableColElementConstructor>(vm, *jsCast<const JSDOMGlobalObject*>(globalObject));
150}
151
152template<> inline JSHTMLTableColElement* IDLAttribute<JSHTMLTableColElement>::cast(ExecState& state, EncodedJSValue thisValue)
153{
154 return jsDynamicCast<JSHTMLTableColElement*>(state.vm(), JSValue::decode(thisValue));
155}
156
157EncodedJSValue jsHTMLTableColElementConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
158{
159 VM& vm = state->vm();
160 auto throwScope = DECLARE_THROW_SCOPE(vm);
161 auto* prototype = jsDynamicCast<JSHTMLTableColElementPrototype*>(vm, JSValue::decode(thisValue));
162 if (UNLIKELY(!prototype))
163 return throwVMTypeError(state, throwScope);
164 return JSValue::encode(JSHTMLTableColElement::getConstructor(state->vm(), prototype->globalObject()));
165}
166
167bool setJSHTMLTableColElementConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
168{
169 VM& vm = state->vm();
170 auto throwScope = DECLARE_THROW_SCOPE(vm);
171 auto* prototype = jsDynamicCast<JSHTMLTableColElementPrototype*>(vm, JSValue::decode(thisValue));
172 if (UNLIKELY(!prototype)) {
173 throwVMTypeError(state, throwScope);
174 return false;
175 }
176 // Shadowing a built-in constructor
177 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
178}
179
180static inline JSValue jsHTMLTableColElementAlignGetter(ExecState& state, JSHTMLTableColElement& thisObject, ThrowScope& throwScope)
181{
182 UNUSED_PARAM(throwScope);
183 UNUSED_PARAM(state);
184 auto& impl = thisObject.wrapped();
185 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::alignAttr));
186 return result;
187}
188
189EncodedJSValue jsHTMLTableColElementAlign(ExecState* state, EncodedJSValue thisValue, PropertyName)
190{
191 return IDLAttribute<JSHTMLTableColElement>::get<jsHTMLTableColElementAlignGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "align");
192}
193
194static inline bool setJSHTMLTableColElementAlignSetter(ExecState& state, JSHTMLTableColElement& thisObject, JSValue value, ThrowScope& throwScope)
195{
196 UNUSED_PARAM(throwScope);
197 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
198 auto& impl = thisObject.wrapped();
199 auto nativeValue = convert<IDLDOMString>(state, value);
200 RETURN_IF_EXCEPTION(throwScope, false);
201 AttributeSetter::call(state, throwScope, [&] {
202 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::alignAttr, WTFMove(nativeValue));
203 });
204 return true;
205}
206
207bool setJSHTMLTableColElementAlign(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
208{
209 return IDLAttribute<JSHTMLTableColElement>::set<setJSHTMLTableColElementAlignSetter>(*state, thisValue, encodedValue, "align");
210}
211
212static inline JSValue jsHTMLTableColElementChGetter(ExecState& state, JSHTMLTableColElement& thisObject, ThrowScope& throwScope)
213{
214 UNUSED_PARAM(throwScope);
215 UNUSED_PARAM(state);
216 auto& impl = thisObject.wrapped();
217 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::charAttr));
218 return result;
219}
220
221EncodedJSValue jsHTMLTableColElementCh(ExecState* state, EncodedJSValue thisValue, PropertyName)
222{
223 return IDLAttribute<JSHTMLTableColElement>::get<jsHTMLTableColElementChGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "ch");
224}
225
226static inline bool setJSHTMLTableColElementChSetter(ExecState& state, JSHTMLTableColElement& thisObject, JSValue value, ThrowScope& throwScope)
227{
228 UNUSED_PARAM(throwScope);
229 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
230 auto& impl = thisObject.wrapped();
231 auto nativeValue = convert<IDLDOMString>(state, value);
232 RETURN_IF_EXCEPTION(throwScope, false);
233 AttributeSetter::call(state, throwScope, [&] {
234 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::charAttr, WTFMove(nativeValue));
235 });
236 return true;
237}
238
239bool setJSHTMLTableColElementCh(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
240{
241 return IDLAttribute<JSHTMLTableColElement>::set<setJSHTMLTableColElementChSetter>(*state, thisValue, encodedValue, "ch");
242}
243
244static inline JSValue jsHTMLTableColElementChOffGetter(ExecState& state, JSHTMLTableColElement& thisObject, ThrowScope& throwScope)
245{
246 UNUSED_PARAM(throwScope);
247 UNUSED_PARAM(state);
248 auto& impl = thisObject.wrapped();
249 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::charoffAttr));
250 return result;
251}
252
253EncodedJSValue jsHTMLTableColElementChOff(ExecState* state, EncodedJSValue thisValue, PropertyName)
254{
255 return IDLAttribute<JSHTMLTableColElement>::get<jsHTMLTableColElementChOffGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "chOff");
256}
257
258static inline bool setJSHTMLTableColElementChOffSetter(ExecState& state, JSHTMLTableColElement& thisObject, JSValue value, ThrowScope& throwScope)
259{
260 UNUSED_PARAM(throwScope);
261 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
262 auto& impl = thisObject.wrapped();
263 auto nativeValue = convert<IDLDOMString>(state, value);
264 RETURN_IF_EXCEPTION(throwScope, false);
265 AttributeSetter::call(state, throwScope, [&] {
266 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::charoffAttr, WTFMove(nativeValue));
267 });
268 return true;
269}
270
271bool setJSHTMLTableColElementChOff(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
272{
273 return IDLAttribute<JSHTMLTableColElement>::set<setJSHTMLTableColElementChOffSetter>(*state, thisValue, encodedValue, "chOff");
274}
275
276static inline JSValue jsHTMLTableColElementSpanGetter(ExecState& state, JSHTMLTableColElement& thisObject, ThrowScope& throwScope)
277{
278 UNUSED_PARAM(throwScope);
279 UNUSED_PARAM(state);
280 auto& impl = thisObject.wrapped();
281 JSValue result = toJS<IDLUnsignedLong>(state, throwScope, impl.span());
282 return result;
283}
284
285EncodedJSValue jsHTMLTableColElementSpan(ExecState* state, EncodedJSValue thisValue, PropertyName)
286{
287 return IDLAttribute<JSHTMLTableColElement>::get<jsHTMLTableColElementSpanGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "span");
288}
289
290static inline bool setJSHTMLTableColElementSpanSetter(ExecState& state, JSHTMLTableColElement& thisObject, JSValue value, ThrowScope& throwScope)
291{
292 UNUSED_PARAM(throwScope);
293 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
294 auto& impl = thisObject.wrapped();
295 auto nativeValue = convert<IDLUnsignedLong>(state, value);
296 RETURN_IF_EXCEPTION(throwScope, false);
297 AttributeSetter::call(state, throwScope, [&] {
298 return impl.setSpan(WTFMove(nativeValue));
299 });
300 return true;
301}
302
303bool setJSHTMLTableColElementSpan(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
304{
305 return IDLAttribute<JSHTMLTableColElement>::set<setJSHTMLTableColElementSpanSetter>(*state, thisValue, encodedValue, "span");
306}
307
308static inline JSValue jsHTMLTableColElementVAlignGetter(ExecState& state, JSHTMLTableColElement& thisObject, ThrowScope& throwScope)
309{
310 UNUSED_PARAM(throwScope);
311 UNUSED_PARAM(state);
312 auto& impl = thisObject.wrapped();
313 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::valignAttr));
314 return result;
315}
316
317EncodedJSValue jsHTMLTableColElementVAlign(ExecState* state, EncodedJSValue thisValue, PropertyName)
318{
319 return IDLAttribute<JSHTMLTableColElement>::get<jsHTMLTableColElementVAlignGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "vAlign");
320}
321
322static inline bool setJSHTMLTableColElementVAlignSetter(ExecState& state, JSHTMLTableColElement& thisObject, JSValue value, ThrowScope& throwScope)
323{
324 UNUSED_PARAM(throwScope);
325 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
326 auto& impl = thisObject.wrapped();
327 auto nativeValue = convert<IDLDOMString>(state, value);
328 RETURN_IF_EXCEPTION(throwScope, false);
329 AttributeSetter::call(state, throwScope, [&] {
330 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::valignAttr, WTFMove(nativeValue));
331 });
332 return true;
333}
334
335bool setJSHTMLTableColElementVAlign(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
336{
337 return IDLAttribute<JSHTMLTableColElement>::set<setJSHTMLTableColElementVAlignSetter>(*state, thisValue, encodedValue, "vAlign");
338}
339
340static inline JSValue jsHTMLTableColElementWidthGetter(ExecState& state, JSHTMLTableColElement& thisObject, ThrowScope& throwScope)
341{
342 UNUSED_PARAM(throwScope);
343 UNUSED_PARAM(state);
344 auto& impl = thisObject.wrapped();
345 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::widthAttr));
346 return result;
347}
348
349EncodedJSValue jsHTMLTableColElementWidth(ExecState* state, EncodedJSValue thisValue, PropertyName)
350{
351 return IDLAttribute<JSHTMLTableColElement>::get<jsHTMLTableColElementWidthGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "width");
352}
353
354static inline bool setJSHTMLTableColElementWidthSetter(ExecState& state, JSHTMLTableColElement& thisObject, JSValue value, ThrowScope& throwScope)
355{
356 UNUSED_PARAM(throwScope);
357 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
358 auto& impl = thisObject.wrapped();
359 auto nativeValue = convert<IDLDOMString>(state, value);
360 RETURN_IF_EXCEPTION(throwScope, false);
361 AttributeSetter::call(state, throwScope, [&] {
362 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::widthAttr, WTFMove(nativeValue));
363 });
364 return true;
365}
366
367bool setJSHTMLTableColElementWidth(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
368{
369 return IDLAttribute<JSHTMLTableColElement>::set<setJSHTMLTableColElementWidthSetter>(*state, thisValue, encodedValue, "width");
370}
371
372void JSHTMLTableColElement::heapSnapshot(JSCell* cell, HeapSnapshotBuilder& builder)
373{
374 auto* thisObject = jsCast<JSHTMLTableColElement*>(cell);
375 builder.setWrappedObjectForCell(cell, &thisObject->wrapped());
376 if (thisObject->scriptExecutionContext())
377 builder.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string());
378 Base::heapSnapshot(cell, builder);
379}
380
381
382}
383