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 "JSHTMLObjectElement.h"
23
24#include "CustomElementReactionQueue.h"
25#include "HTMLNames.h"
26#include "JSDOMAttribute.h"
27#include "JSDOMBinding.h"
28#include "JSDOMBindingSecurity.h"
29#include "JSDOMConstructorNotConstructable.h"
30#include "JSDOMConvertBoolean.h"
31#include "JSDOMConvertInterface.h"
32#include "JSDOMConvertNumbers.h"
33#include "JSDOMConvertStrings.h"
34#include "JSDOMExceptionHandling.h"
35#include "JSDOMGlobalObject.h"
36#include "JSDOMOperation.h"
37#include "JSDOMWrapperCache.h"
38#include "JSDocument.h"
39#include "JSHTMLFormElement.h"
40#include "JSPluginElementFunctions.h"
41#include "JSValidityState.h"
42#include "JSWindowProxy.h"
43#include "RuntimeEnabledFeatures.h"
44#include "ScriptExecutionContext.h"
45#include <JavaScriptCore/HeapSnapshotBuilder.h>
46#include <JavaScriptCore/JSCInlines.h>
47#include <wtf/GetPtr.h>
48#include <wtf/PointerPreparations.h>
49#include <wtf/URL.h>
50
51
52namespace WebCore {
53using namespace JSC;
54
55// Functions
56
57JSC::EncodedJSValue JSC_HOST_CALL jsHTMLObjectElementPrototypeFunctionCheckValidity(JSC::ExecState*);
58JSC::EncodedJSValue JSC_HOST_CALL jsHTMLObjectElementPrototypeFunctionReportValidity(JSC::ExecState*);
59JSC::EncodedJSValue JSC_HOST_CALL jsHTMLObjectElementPrototypeFunctionSetCustomValidity(JSC::ExecState*);
60JSC::EncodedJSValue JSC_HOST_CALL jsHTMLObjectElementPrototypeFunctionGetSVGDocument(JSC::ExecState*);
61
62// Attributes
63
64JSC::EncodedJSValue jsHTMLObjectElementConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
65bool setJSHTMLObjectElementConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
66JSC::EncodedJSValue jsHTMLObjectElementForm(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
67JSC::EncodedJSValue jsHTMLObjectElementCode(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
68bool setJSHTMLObjectElementCode(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
69JSC::EncodedJSValue jsHTMLObjectElementAlign(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
70bool setJSHTMLObjectElementAlign(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
71JSC::EncodedJSValue jsHTMLObjectElementArchive(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
72bool setJSHTMLObjectElementArchive(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
73JSC::EncodedJSValue jsHTMLObjectElementBorder(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
74bool setJSHTMLObjectElementBorder(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
75JSC::EncodedJSValue jsHTMLObjectElementCodeBase(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
76bool setJSHTMLObjectElementCodeBase(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
77JSC::EncodedJSValue jsHTMLObjectElementCodeType(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
78bool setJSHTMLObjectElementCodeType(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
79JSC::EncodedJSValue jsHTMLObjectElementData(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
80bool setJSHTMLObjectElementData(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
81JSC::EncodedJSValue jsHTMLObjectElementDeclare(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
82bool setJSHTMLObjectElementDeclare(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
83JSC::EncodedJSValue jsHTMLObjectElementHeight(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
84bool setJSHTMLObjectElementHeight(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
85JSC::EncodedJSValue jsHTMLObjectElementHspace(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
86bool setJSHTMLObjectElementHspace(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
87JSC::EncodedJSValue jsHTMLObjectElementName(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
88bool setJSHTMLObjectElementName(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
89JSC::EncodedJSValue jsHTMLObjectElementStandby(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
90bool setJSHTMLObjectElementStandby(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
91JSC::EncodedJSValue jsHTMLObjectElementType(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
92bool setJSHTMLObjectElementType(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
93JSC::EncodedJSValue jsHTMLObjectElementUseMap(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
94bool setJSHTMLObjectElementUseMap(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
95JSC::EncodedJSValue jsHTMLObjectElementVspace(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
96bool setJSHTMLObjectElementVspace(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
97JSC::EncodedJSValue jsHTMLObjectElementWidth(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
98bool setJSHTMLObjectElementWidth(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
99JSC::EncodedJSValue jsHTMLObjectElementWillValidate(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
100JSC::EncodedJSValue jsHTMLObjectElementValidity(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
101JSC::EncodedJSValue jsHTMLObjectElementValidationMessage(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
102JSC::EncodedJSValue jsHTMLObjectElementContentDocument(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
103JSC::EncodedJSValue jsHTMLObjectElementContentWindow(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
104
105class JSHTMLObjectElementPrototype : public JSC::JSNonFinalObject {
106public:
107 using Base = JSC::JSNonFinalObject;
108 static JSHTMLObjectElementPrototype* create(JSC::VM& vm, JSDOMGlobalObject* globalObject, JSC::Structure* structure)
109 {
110 JSHTMLObjectElementPrototype* ptr = new (NotNull, JSC::allocateCell<JSHTMLObjectElementPrototype>(vm.heap)) JSHTMLObjectElementPrototype(vm, globalObject, structure);
111 ptr->finishCreation(vm);
112 return ptr;
113 }
114
115 DECLARE_INFO;
116 static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
117 {
118 return JSC::Structure::create(vm, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), info());
119 }
120
121private:
122 JSHTMLObjectElementPrototype(JSC::VM& vm, JSC::JSGlobalObject*, JSC::Structure* structure)
123 : JSC::JSNonFinalObject(vm, structure)
124 {
125 }
126
127 void finishCreation(JSC::VM&);
128};
129
130using JSHTMLObjectElementConstructor = JSDOMConstructorNotConstructable<JSHTMLObjectElement>;
131
132template<> JSValue JSHTMLObjectElementConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
133{
134 return JSHTMLElement::getConstructor(vm, &globalObject);
135}
136
137template<> void JSHTMLObjectElementConstructor::initializeProperties(VM& vm, JSDOMGlobalObject& globalObject)
138{
139 putDirect(vm, vm.propertyNames->prototype, JSHTMLObjectElement::prototype(vm, globalObject), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
140 putDirect(vm, vm.propertyNames->name, jsNontrivialString(&vm, String("HTMLObjectElement"_s)), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
141 putDirect(vm, vm.propertyNames->length, jsNumber(0), JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);
142}
143
144template<> const ClassInfo JSHTMLObjectElementConstructor::s_info = { "HTMLObjectElement", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSHTMLObjectElementConstructor) };
145
146/* Hash table for prototype */
147
148static const HashTableValue JSHTMLObjectElementPrototypeTableValues[] =
149{
150 { "constructor", static_cast<unsigned>(JSC::PropertyAttribute::DontEnum), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementConstructor), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementConstructor) } },
151 { "form", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementForm), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
152 { "code", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementCode), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementCode) } },
153 { "align", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementAlign), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementAlign) } },
154 { "archive", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementArchive), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementArchive) } },
155 { "border", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementBorder), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementBorder) } },
156 { "codeBase", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementCodeBase), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementCodeBase) } },
157 { "codeType", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementCodeType), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementCodeType) } },
158 { "data", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementData), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementData) } },
159 { "declare", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementDeclare), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementDeclare) } },
160 { "height", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementHeight), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementHeight) } },
161 { "hspace", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementHspace), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementHspace) } },
162 { "name", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementName), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementName) } },
163 { "standby", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementStandby), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementStandby) } },
164 { "type", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementType), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementType) } },
165 { "useMap", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementUseMap), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementUseMap) } },
166 { "vspace", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementVspace), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementVspace) } },
167 { "width", static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementWidth), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(setJSHTMLObjectElementWidth) } },
168 { "willValidate", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementWillValidate), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
169 { "validity", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementValidity), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
170 { "validationMessage", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementValidationMessage), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
171 { "contentDocument", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementContentDocument), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
172 { "contentWindow", static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute), NoIntrinsic, { (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsHTMLObjectElementContentWindow), (intptr_t) static_cast<PutPropertySlot::PutValueFunc>(0) } },
173 { "checkValidity", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsHTMLObjectElementPrototypeFunctionCheckValidity), (intptr_t) (0) } },
174 { "reportValidity", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsHTMLObjectElementPrototypeFunctionReportValidity), (intptr_t) (0) } },
175 { "setCustomValidity", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsHTMLObjectElementPrototypeFunctionSetCustomValidity), (intptr_t) (1) } },
176 { "getSVGDocument", static_cast<unsigned>(JSC::PropertyAttribute::Function), NoIntrinsic, { (intptr_t)static_cast<RawNativeFunction>(jsHTMLObjectElementPrototypeFunctionGetSVGDocument), (intptr_t) (0) } },
177};
178
179const ClassInfo JSHTMLObjectElementPrototype::s_info = { "HTMLObjectElementPrototype", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSHTMLObjectElementPrototype) };
180
181void JSHTMLObjectElementPrototype::finishCreation(VM& vm)
182{
183 Base::finishCreation(vm);
184 reifyStaticProperties(vm, JSHTMLObjectElement::info(), JSHTMLObjectElementPrototypeTableValues, *this);
185 bool hasDisabledRuntimeProperties = false;
186 if (!RuntimeEnabledFeatures::sharedFeatures().interactiveFormValidationEnabled()) {
187 hasDisabledRuntimeProperties = true;
188 auto propertyName = Identifier::fromString(&vm, reinterpret_cast<const LChar*>("reportValidity"), strlen("reportValidity"));
189 VM::DeletePropertyModeScope scope(vm, VM::DeletePropertyMode::IgnoreConfigurable);
190 JSObject::deleteProperty(this, globalObject()->globalExec(), propertyName);
191 }
192 if (hasDisabledRuntimeProperties && structure()->isDictionary())
193 flattenDictionaryObject(vm);
194}
195
196const ClassInfo JSHTMLObjectElement::s_info = { "HTMLObjectElement", &Base::s_info, nullptr, nullptr, CREATE_METHOD_TABLE(JSHTMLObjectElement) };
197
198JSHTMLObjectElement::JSHTMLObjectElement(Structure* structure, JSDOMGlobalObject& globalObject, Ref<HTMLObjectElement>&& impl)
199 : JSHTMLElement(structure, globalObject, WTFMove(impl))
200{
201}
202
203void JSHTMLObjectElement::finishCreation(VM& vm)
204{
205 Base::finishCreation(vm);
206 ASSERT(inherits(vm, info()));
207
208}
209
210JSObject* JSHTMLObjectElement::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
211{
212 return JSHTMLObjectElementPrototype::create(vm, &globalObject, JSHTMLObjectElementPrototype::createStructure(vm, &globalObject, JSHTMLElement::prototype(vm, globalObject)));
213}
214
215JSObject* JSHTMLObjectElement::prototype(VM& vm, JSDOMGlobalObject& globalObject)
216{
217 return getDOMPrototype<JSHTMLObjectElement>(vm, globalObject);
218}
219
220JSValue JSHTMLObjectElement::getConstructor(VM& vm, const JSGlobalObject* globalObject)
221{
222 return getDOMConstructor<JSHTMLObjectElementConstructor>(vm, *jsCast<const JSDOMGlobalObject*>(globalObject));
223}
224
225bool JSHTMLObjectElement::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot& slot)
226{
227 auto* thisObject = jsCast<JSHTMLObjectElement*>(object);
228 ASSERT_GC_OBJECT_INHERITS(thisObject, info());
229 if (pluginElementCustomGetOwnPropertySlot(thisObject, state, propertyName, slot))
230 return true;
231 return JSObject::getOwnPropertySlot(object, state, propertyName, slot);
232}
233
234bool JSHTMLObjectElement::getOwnPropertySlotByIndex(JSObject* object, ExecState* state, unsigned index, PropertySlot& slot)
235{
236 auto* thisObject = jsCast<JSHTMLObjectElement*>(object);
237 ASSERT_GC_OBJECT_INHERITS(thisObject, info());
238 auto propertyName = Identifier::from(state, index);
239 if (pluginElementCustomGetOwnPropertySlot(thisObject, state, propertyName, slot))
240 return true;
241 return JSObject::getOwnPropertySlotByIndex(object, state, index, slot);
242}
243
244bool JSHTMLObjectElement::put(JSCell* cell, ExecState* state, PropertyName propertyName, JSValue value, PutPropertySlot& putPropertySlot)
245{
246 auto* thisObject = jsCast<JSHTMLObjectElement*>(cell);
247 ASSERT_GC_OBJECT_INHERITS(thisObject, info());
248
249 bool putResult = false;
250 if (pluginElementCustomPut(thisObject, state, propertyName, value, putPropertySlot, putResult))
251 return putResult;
252
253 return JSObject::put(thisObject, state, propertyName, value, putPropertySlot);
254}
255
256bool JSHTMLObjectElement::putByIndex(JSCell* cell, ExecState* state, unsigned index, JSValue value, bool shouldThrow)
257{
258 auto* thisObject = jsCast<JSHTMLObjectElement*>(cell);
259 ASSERT_GC_OBJECT_INHERITS(thisObject, info());
260
261 auto propertyName = Identifier::from(state, index);
262 PutPropertySlot putPropertySlot(thisObject, shouldThrow);
263 bool putResult = false;
264 if (pluginElementCustomPut(thisObject, state, propertyName, value, putPropertySlot, putResult))
265 return putResult;
266
267 return JSObject::putByIndex(cell, state, index, value, shouldThrow);
268}
269
270CallType JSHTMLObjectElement::getCallData(JSCell* cell, CallData& callData)
271{
272 auto* thisObject = jsCast<JSHTMLObjectElement*>(cell);
273 ASSERT_GC_OBJECT_INHERITS(thisObject, info());
274
275 return pluginElementCustomGetCallData(thisObject, callData);
276}
277
278template<> inline JSHTMLObjectElement* IDLAttribute<JSHTMLObjectElement>::cast(ExecState& state, EncodedJSValue thisValue)
279{
280 return jsDynamicCast<JSHTMLObjectElement*>(state.vm(), JSValue::decode(thisValue));
281}
282
283template<> inline JSHTMLObjectElement* IDLOperation<JSHTMLObjectElement>::cast(ExecState& state)
284{
285 return jsDynamicCast<JSHTMLObjectElement*>(state.vm(), state.thisValue());
286}
287
288EncodedJSValue jsHTMLObjectElementConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
289{
290 VM& vm = state->vm();
291 auto throwScope = DECLARE_THROW_SCOPE(vm);
292 auto* prototype = jsDynamicCast<JSHTMLObjectElementPrototype*>(vm, JSValue::decode(thisValue));
293 if (UNLIKELY(!prototype))
294 return throwVMTypeError(state, throwScope);
295 return JSValue::encode(JSHTMLObjectElement::getConstructor(state->vm(), prototype->globalObject()));
296}
297
298bool setJSHTMLObjectElementConstructor(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
299{
300 VM& vm = state->vm();
301 auto throwScope = DECLARE_THROW_SCOPE(vm);
302 auto* prototype = jsDynamicCast<JSHTMLObjectElementPrototype*>(vm, JSValue::decode(thisValue));
303 if (UNLIKELY(!prototype)) {
304 throwVMTypeError(state, throwScope);
305 return false;
306 }
307 // Shadowing a built-in constructor
308 return prototype->putDirect(vm, vm.propertyNames->constructor, JSValue::decode(encodedValue));
309}
310
311static inline JSValue jsHTMLObjectElementFormGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
312{
313 UNUSED_PARAM(throwScope);
314 UNUSED_PARAM(state);
315 auto& impl = thisObject.wrapped();
316 JSValue result = toJS<IDLInterface<HTMLFormElement>>(state, *thisObject.globalObject(), throwScope, impl.form());
317 return result;
318}
319
320EncodedJSValue jsHTMLObjectElementForm(ExecState* state, EncodedJSValue thisValue, PropertyName)
321{
322 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementFormGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "form");
323}
324
325static inline JSValue jsHTMLObjectElementCodeGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
326{
327 UNUSED_PARAM(throwScope);
328 UNUSED_PARAM(state);
329 auto& impl = thisObject.wrapped();
330 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::codeAttr));
331 return result;
332}
333
334EncodedJSValue jsHTMLObjectElementCode(ExecState* state, EncodedJSValue thisValue, PropertyName)
335{
336 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementCodeGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "code");
337}
338
339static inline bool setJSHTMLObjectElementCodeSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
340{
341 UNUSED_PARAM(throwScope);
342 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
343 auto& impl = thisObject.wrapped();
344 auto nativeValue = convert<IDLDOMString>(state, value);
345 RETURN_IF_EXCEPTION(throwScope, false);
346 AttributeSetter::call(state, throwScope, [&] {
347 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::codeAttr, WTFMove(nativeValue));
348 });
349 return true;
350}
351
352bool setJSHTMLObjectElementCode(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
353{
354 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementCodeSetter>(*state, thisValue, encodedValue, "code");
355}
356
357static inline JSValue jsHTMLObjectElementAlignGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
358{
359 UNUSED_PARAM(throwScope);
360 UNUSED_PARAM(state);
361 auto& impl = thisObject.wrapped();
362 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::alignAttr));
363 return result;
364}
365
366EncodedJSValue jsHTMLObjectElementAlign(ExecState* state, EncodedJSValue thisValue, PropertyName)
367{
368 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementAlignGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "align");
369}
370
371static inline bool setJSHTMLObjectElementAlignSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
372{
373 UNUSED_PARAM(throwScope);
374 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
375 auto& impl = thisObject.wrapped();
376 auto nativeValue = convert<IDLDOMString>(state, value);
377 RETURN_IF_EXCEPTION(throwScope, false);
378 AttributeSetter::call(state, throwScope, [&] {
379 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::alignAttr, WTFMove(nativeValue));
380 });
381 return true;
382}
383
384bool setJSHTMLObjectElementAlign(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
385{
386 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementAlignSetter>(*state, thisValue, encodedValue, "align");
387}
388
389static inline JSValue jsHTMLObjectElementArchiveGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
390{
391 UNUSED_PARAM(throwScope);
392 UNUSED_PARAM(state);
393 auto& impl = thisObject.wrapped();
394 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::archiveAttr));
395 return result;
396}
397
398EncodedJSValue jsHTMLObjectElementArchive(ExecState* state, EncodedJSValue thisValue, PropertyName)
399{
400 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementArchiveGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "archive");
401}
402
403static inline bool setJSHTMLObjectElementArchiveSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
404{
405 UNUSED_PARAM(throwScope);
406 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
407 auto& impl = thisObject.wrapped();
408 auto nativeValue = convert<IDLDOMString>(state, value);
409 RETURN_IF_EXCEPTION(throwScope, false);
410 AttributeSetter::call(state, throwScope, [&] {
411 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::archiveAttr, WTFMove(nativeValue));
412 });
413 return true;
414}
415
416bool setJSHTMLObjectElementArchive(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
417{
418 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementArchiveSetter>(*state, thisValue, encodedValue, "archive");
419}
420
421static inline JSValue jsHTMLObjectElementBorderGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
422{
423 UNUSED_PARAM(throwScope);
424 UNUSED_PARAM(state);
425 auto& impl = thisObject.wrapped();
426 JSValue result = toJS<IDLTreatNullAsEmptyAdaptor<IDLDOMString>>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::borderAttr));
427 return result;
428}
429
430EncodedJSValue jsHTMLObjectElementBorder(ExecState* state, EncodedJSValue thisValue, PropertyName)
431{
432 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementBorderGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "border");
433}
434
435static inline bool setJSHTMLObjectElementBorderSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
436{
437 UNUSED_PARAM(throwScope);
438 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
439 auto& impl = thisObject.wrapped();
440 auto nativeValue = convert<IDLTreatNullAsEmptyAdaptor<IDLDOMString>>(state, value);
441 RETURN_IF_EXCEPTION(throwScope, false);
442 AttributeSetter::call(state, throwScope, [&] {
443 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::borderAttr, WTFMove(nativeValue));
444 });
445 return true;
446}
447
448bool setJSHTMLObjectElementBorder(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
449{
450 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementBorderSetter>(*state, thisValue, encodedValue, "border");
451}
452
453static inline JSValue jsHTMLObjectElementCodeBaseGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
454{
455 UNUSED_PARAM(throwScope);
456 UNUSED_PARAM(state);
457 auto& impl = thisObject.wrapped();
458 JSValue result = toJS<IDLUSVString>(state, throwScope, impl.getURLAttribute(WebCore::HTMLNames::codebaseAttr));
459 return result;
460}
461
462EncodedJSValue jsHTMLObjectElementCodeBase(ExecState* state, EncodedJSValue thisValue, PropertyName)
463{
464 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementCodeBaseGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "codeBase");
465}
466
467static inline bool setJSHTMLObjectElementCodeBaseSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
468{
469 UNUSED_PARAM(throwScope);
470 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
471 auto& impl = thisObject.wrapped();
472 auto nativeValue = convert<IDLUSVString>(state, value);
473 RETURN_IF_EXCEPTION(throwScope, false);
474 AttributeSetter::call(state, throwScope, [&] {
475 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::codebaseAttr, WTFMove(nativeValue));
476 });
477 return true;
478}
479
480bool setJSHTMLObjectElementCodeBase(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
481{
482 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementCodeBaseSetter>(*state, thisValue, encodedValue, "codeBase");
483}
484
485static inline JSValue jsHTMLObjectElementCodeTypeGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
486{
487 UNUSED_PARAM(throwScope);
488 UNUSED_PARAM(state);
489 auto& impl = thisObject.wrapped();
490 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::codetypeAttr));
491 return result;
492}
493
494EncodedJSValue jsHTMLObjectElementCodeType(ExecState* state, EncodedJSValue thisValue, PropertyName)
495{
496 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementCodeTypeGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "codeType");
497}
498
499static inline bool setJSHTMLObjectElementCodeTypeSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
500{
501 UNUSED_PARAM(throwScope);
502 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
503 auto& impl = thisObject.wrapped();
504 auto nativeValue = convert<IDLDOMString>(state, value);
505 RETURN_IF_EXCEPTION(throwScope, false);
506 AttributeSetter::call(state, throwScope, [&] {
507 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::codetypeAttr, WTFMove(nativeValue));
508 });
509 return true;
510}
511
512bool setJSHTMLObjectElementCodeType(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
513{
514 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementCodeTypeSetter>(*state, thisValue, encodedValue, "codeType");
515}
516
517static inline JSValue jsHTMLObjectElementDataGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
518{
519 UNUSED_PARAM(throwScope);
520 UNUSED_PARAM(state);
521 auto& impl = thisObject.wrapped();
522 JSValue result = toJS<IDLUSVString>(state, throwScope, impl.getURLAttribute(WebCore::HTMLNames::dataAttr));
523 return result;
524}
525
526EncodedJSValue jsHTMLObjectElementData(ExecState* state, EncodedJSValue thisValue, PropertyName)
527{
528 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementDataGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "data");
529}
530
531static inline bool setJSHTMLObjectElementDataSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
532{
533 UNUSED_PARAM(throwScope);
534 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
535 auto& impl = thisObject.wrapped();
536 auto nativeValue = convert<IDLUSVString>(state, value);
537 RETURN_IF_EXCEPTION(throwScope, false);
538 AttributeSetter::call(state, throwScope, [&] {
539 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::dataAttr, WTFMove(nativeValue));
540 });
541 return true;
542}
543
544bool setJSHTMLObjectElementData(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
545{
546 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementDataSetter>(*state, thisValue, encodedValue, "data");
547}
548
549static inline JSValue jsHTMLObjectElementDeclareGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
550{
551 UNUSED_PARAM(throwScope);
552 UNUSED_PARAM(state);
553 auto& impl = thisObject.wrapped();
554 JSValue result = toJS<IDLBoolean>(state, throwScope, impl.hasAttributeWithoutSynchronization(WebCore::HTMLNames::declareAttr));
555 return result;
556}
557
558EncodedJSValue jsHTMLObjectElementDeclare(ExecState* state, EncodedJSValue thisValue, PropertyName)
559{
560 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementDeclareGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "declare");
561}
562
563static inline bool setJSHTMLObjectElementDeclareSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
564{
565 UNUSED_PARAM(throwScope);
566 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
567 auto& impl = thisObject.wrapped();
568 auto nativeValue = convert<IDLBoolean>(state, value);
569 RETURN_IF_EXCEPTION(throwScope, false);
570 AttributeSetter::call(state, throwScope, [&] {
571 return impl.setBooleanAttribute(WebCore::HTMLNames::declareAttr, WTFMove(nativeValue));
572 });
573 return true;
574}
575
576bool setJSHTMLObjectElementDeclare(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
577{
578 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementDeclareSetter>(*state, thisValue, encodedValue, "declare");
579}
580
581static inline JSValue jsHTMLObjectElementHeightGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
582{
583 UNUSED_PARAM(throwScope);
584 UNUSED_PARAM(state);
585 auto& impl = thisObject.wrapped();
586 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::heightAttr));
587 return result;
588}
589
590EncodedJSValue jsHTMLObjectElementHeight(ExecState* state, EncodedJSValue thisValue, PropertyName)
591{
592 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementHeightGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "height");
593}
594
595static inline bool setJSHTMLObjectElementHeightSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
596{
597 UNUSED_PARAM(throwScope);
598 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
599 auto& impl = thisObject.wrapped();
600 auto nativeValue = convert<IDLDOMString>(state, value);
601 RETURN_IF_EXCEPTION(throwScope, false);
602 AttributeSetter::call(state, throwScope, [&] {
603 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::heightAttr, WTFMove(nativeValue));
604 });
605 return true;
606}
607
608bool setJSHTMLObjectElementHeight(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
609{
610 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementHeightSetter>(*state, thisValue, encodedValue, "height");
611}
612
613static inline JSValue jsHTMLObjectElementHspaceGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
614{
615 UNUSED_PARAM(throwScope);
616 UNUSED_PARAM(state);
617 auto& impl = thisObject.wrapped();
618 JSValue result = toJS<IDLUnsignedLong>(state, throwScope, std::max(0, impl.getIntegralAttribute(WebCore::HTMLNames::hspaceAttr)));
619 return result;
620}
621
622EncodedJSValue jsHTMLObjectElementHspace(ExecState* state, EncodedJSValue thisValue, PropertyName)
623{
624 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementHspaceGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "hspace");
625}
626
627static inline bool setJSHTMLObjectElementHspaceSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
628{
629 UNUSED_PARAM(throwScope);
630 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
631 auto& impl = thisObject.wrapped();
632 auto nativeValue = convert<IDLUnsignedLong>(state, value);
633 RETURN_IF_EXCEPTION(throwScope, false);
634 AttributeSetter::call(state, throwScope, [&] {
635 return impl.setUnsignedIntegralAttribute(WebCore::HTMLNames::hspaceAttr, WTFMove(nativeValue));
636 });
637 return true;
638}
639
640bool setJSHTMLObjectElementHspace(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
641{
642 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementHspaceSetter>(*state, thisValue, encodedValue, "hspace");
643}
644
645static inline JSValue jsHTMLObjectElementNameGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
646{
647 UNUSED_PARAM(throwScope);
648 UNUSED_PARAM(state);
649 auto& impl = thisObject.wrapped();
650 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.getNameAttribute());
651 return result;
652}
653
654EncodedJSValue jsHTMLObjectElementName(ExecState* state, EncodedJSValue thisValue, PropertyName)
655{
656 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementNameGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "name");
657}
658
659static inline bool setJSHTMLObjectElementNameSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
660{
661 UNUSED_PARAM(throwScope);
662 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
663 auto& impl = thisObject.wrapped();
664 auto nativeValue = convert<IDLDOMString>(state, value);
665 RETURN_IF_EXCEPTION(throwScope, false);
666 AttributeSetter::call(state, throwScope, [&] {
667 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::nameAttr, WTFMove(nativeValue));
668 });
669 return true;
670}
671
672bool setJSHTMLObjectElementName(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
673{
674 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementNameSetter>(*state, thisValue, encodedValue, "name");
675}
676
677static inline JSValue jsHTMLObjectElementStandbyGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
678{
679 UNUSED_PARAM(throwScope);
680 UNUSED_PARAM(state);
681 auto& impl = thisObject.wrapped();
682 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::standbyAttr));
683 return result;
684}
685
686EncodedJSValue jsHTMLObjectElementStandby(ExecState* state, EncodedJSValue thisValue, PropertyName)
687{
688 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementStandbyGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "standby");
689}
690
691static inline bool setJSHTMLObjectElementStandbySetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
692{
693 UNUSED_PARAM(throwScope);
694 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
695 auto& impl = thisObject.wrapped();
696 auto nativeValue = convert<IDLDOMString>(state, value);
697 RETURN_IF_EXCEPTION(throwScope, false);
698 AttributeSetter::call(state, throwScope, [&] {
699 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::standbyAttr, WTFMove(nativeValue));
700 });
701 return true;
702}
703
704bool setJSHTMLObjectElementStandby(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
705{
706 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementStandbySetter>(*state, thisValue, encodedValue, "standby");
707}
708
709static inline JSValue jsHTMLObjectElementTypeGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
710{
711 UNUSED_PARAM(throwScope);
712 UNUSED_PARAM(state);
713 auto& impl = thisObject.wrapped();
714 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::typeAttr));
715 return result;
716}
717
718EncodedJSValue jsHTMLObjectElementType(ExecState* state, EncodedJSValue thisValue, PropertyName)
719{
720 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementTypeGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "type");
721}
722
723static inline bool setJSHTMLObjectElementTypeSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
724{
725 UNUSED_PARAM(throwScope);
726 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
727 auto& impl = thisObject.wrapped();
728 auto nativeValue = convert<IDLDOMString>(state, value);
729 RETURN_IF_EXCEPTION(throwScope, false);
730 AttributeSetter::call(state, throwScope, [&] {
731 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::typeAttr, WTFMove(nativeValue));
732 });
733 return true;
734}
735
736bool setJSHTMLObjectElementType(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
737{
738 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementTypeSetter>(*state, thisValue, encodedValue, "type");
739}
740
741static inline JSValue jsHTMLObjectElementUseMapGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
742{
743 UNUSED_PARAM(throwScope);
744 UNUSED_PARAM(state);
745 auto& impl = thisObject.wrapped();
746 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::usemapAttr));
747 return result;
748}
749
750EncodedJSValue jsHTMLObjectElementUseMap(ExecState* state, EncodedJSValue thisValue, PropertyName)
751{
752 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementUseMapGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "useMap");
753}
754
755static inline bool setJSHTMLObjectElementUseMapSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
756{
757 UNUSED_PARAM(throwScope);
758 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
759 auto& impl = thisObject.wrapped();
760 auto nativeValue = convert<IDLDOMString>(state, value);
761 RETURN_IF_EXCEPTION(throwScope, false);
762 AttributeSetter::call(state, throwScope, [&] {
763 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::usemapAttr, WTFMove(nativeValue));
764 });
765 return true;
766}
767
768bool setJSHTMLObjectElementUseMap(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
769{
770 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementUseMapSetter>(*state, thisValue, encodedValue, "useMap");
771}
772
773static inline JSValue jsHTMLObjectElementVspaceGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
774{
775 UNUSED_PARAM(throwScope);
776 UNUSED_PARAM(state);
777 auto& impl = thisObject.wrapped();
778 JSValue result = toJS<IDLUnsignedLong>(state, throwScope, std::max(0, impl.getIntegralAttribute(WebCore::HTMLNames::vspaceAttr)));
779 return result;
780}
781
782EncodedJSValue jsHTMLObjectElementVspace(ExecState* state, EncodedJSValue thisValue, PropertyName)
783{
784 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementVspaceGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "vspace");
785}
786
787static inline bool setJSHTMLObjectElementVspaceSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
788{
789 UNUSED_PARAM(throwScope);
790 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
791 auto& impl = thisObject.wrapped();
792 auto nativeValue = convert<IDLUnsignedLong>(state, value);
793 RETURN_IF_EXCEPTION(throwScope, false);
794 AttributeSetter::call(state, throwScope, [&] {
795 return impl.setUnsignedIntegralAttribute(WebCore::HTMLNames::vspaceAttr, WTFMove(nativeValue));
796 });
797 return true;
798}
799
800bool setJSHTMLObjectElementVspace(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
801{
802 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementVspaceSetter>(*state, thisValue, encodedValue, "vspace");
803}
804
805static inline JSValue jsHTMLObjectElementWidthGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
806{
807 UNUSED_PARAM(throwScope);
808 UNUSED_PARAM(state);
809 auto& impl = thisObject.wrapped();
810 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.attributeWithoutSynchronization(WebCore::HTMLNames::widthAttr));
811 return result;
812}
813
814EncodedJSValue jsHTMLObjectElementWidth(ExecState* state, EncodedJSValue thisValue, PropertyName)
815{
816 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementWidthGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "width");
817}
818
819static inline bool setJSHTMLObjectElementWidthSetter(ExecState& state, JSHTMLObjectElement& thisObject, JSValue value, ThrowScope& throwScope)
820{
821 UNUSED_PARAM(throwScope);
822 CustomElementReactionDisallowedScope customElementReactionDisallowedScope;
823 auto& impl = thisObject.wrapped();
824 auto nativeValue = convert<IDLDOMString>(state, value);
825 RETURN_IF_EXCEPTION(throwScope, false);
826 AttributeSetter::call(state, throwScope, [&] {
827 return impl.setAttributeWithoutSynchronization(WebCore::HTMLNames::widthAttr, WTFMove(nativeValue));
828 });
829 return true;
830}
831
832bool setJSHTMLObjectElementWidth(ExecState* state, EncodedJSValue thisValue, EncodedJSValue encodedValue)
833{
834 return IDLAttribute<JSHTMLObjectElement>::set<setJSHTMLObjectElementWidthSetter>(*state, thisValue, encodedValue, "width");
835}
836
837static inline JSValue jsHTMLObjectElementWillValidateGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
838{
839 UNUSED_PARAM(throwScope);
840 UNUSED_PARAM(state);
841 auto& impl = thisObject.wrapped();
842 JSValue result = toJS<IDLBoolean>(state, throwScope, impl.willValidate());
843 return result;
844}
845
846EncodedJSValue jsHTMLObjectElementWillValidate(ExecState* state, EncodedJSValue thisValue, PropertyName)
847{
848 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementWillValidateGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "willValidate");
849}
850
851static inline JSValue jsHTMLObjectElementValidityGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
852{
853 UNUSED_PARAM(throwScope);
854 UNUSED_PARAM(state);
855 auto& impl = thisObject.wrapped();
856 JSValue result = toJS<IDLInterface<ValidityState>>(state, *thisObject.globalObject(), throwScope, impl.validity());
857 return result;
858}
859
860EncodedJSValue jsHTMLObjectElementValidity(ExecState* state, EncodedJSValue thisValue, PropertyName)
861{
862 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementValidityGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "validity");
863}
864
865static inline JSValue jsHTMLObjectElementValidationMessageGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
866{
867 UNUSED_PARAM(throwScope);
868 UNUSED_PARAM(state);
869 auto& impl = thisObject.wrapped();
870 JSValue result = toJS<IDLDOMString>(state, throwScope, impl.validationMessage());
871 return result;
872}
873
874EncodedJSValue jsHTMLObjectElementValidationMessage(ExecState* state, EncodedJSValue thisValue, PropertyName)
875{
876 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementValidationMessageGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "validationMessage");
877}
878
879static inline JSValue jsHTMLObjectElementContentDocumentGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
880{
881 UNUSED_PARAM(throwScope);
882 UNUSED_PARAM(state);
883 auto& impl = thisObject.wrapped();
884 JSValue result = toJS<IDLInterface<Document>>(state, *thisObject.globalObject(), throwScope, BindingSecurity::checkSecurityForNode(state, impl.contentDocument()));
885 return result;
886}
887
888EncodedJSValue jsHTMLObjectElementContentDocument(ExecState* state, EncodedJSValue thisValue, PropertyName)
889{
890 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementContentDocumentGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "contentDocument");
891}
892
893static inline JSValue jsHTMLObjectElementContentWindowGetter(ExecState& state, JSHTMLObjectElement& thisObject, ThrowScope& throwScope)
894{
895 UNUSED_PARAM(throwScope);
896 UNUSED_PARAM(state);
897 auto& impl = thisObject.wrapped();
898 JSValue result = toJS<IDLInterface<WindowProxy>>(state, *thisObject.globalObject(), throwScope, impl.contentWindow());
899 return result;
900}
901
902EncodedJSValue jsHTMLObjectElementContentWindow(ExecState* state, EncodedJSValue thisValue, PropertyName)
903{
904 return IDLAttribute<JSHTMLObjectElement>::get<jsHTMLObjectElementContentWindowGetter, CastedThisErrorBehavior::Assert>(*state, thisValue, "contentWindow");
905}
906
907static inline JSC::EncodedJSValue jsHTMLObjectElementPrototypeFunctionCheckValidityBody(JSC::ExecState* state, typename IDLOperation<JSHTMLObjectElement>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
908{
909 UNUSED_PARAM(state);
910 UNUSED_PARAM(throwScope);
911 auto& impl = castedThis->wrapped();
912 return JSValue::encode(toJS<IDLBoolean>(impl.checkValidity()));
913}
914
915EncodedJSValue JSC_HOST_CALL jsHTMLObjectElementPrototypeFunctionCheckValidity(ExecState* state)
916{
917 return IDLOperation<JSHTMLObjectElement>::call<jsHTMLObjectElementPrototypeFunctionCheckValidityBody>(*state, "checkValidity");
918}
919
920static inline JSC::EncodedJSValue jsHTMLObjectElementPrototypeFunctionReportValidityBody(JSC::ExecState* state, typename IDLOperation<JSHTMLObjectElement>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
921{
922 UNUSED_PARAM(state);
923 UNUSED_PARAM(throwScope);
924 auto& impl = castedThis->wrapped();
925 return JSValue::encode(toJS<IDLBoolean>(impl.reportValidity()));
926}
927
928EncodedJSValue JSC_HOST_CALL jsHTMLObjectElementPrototypeFunctionReportValidity(ExecState* state)
929{
930 return IDLOperation<JSHTMLObjectElement>::call<jsHTMLObjectElementPrototypeFunctionReportValidityBody>(*state, "reportValidity");
931}
932
933static inline JSC::EncodedJSValue jsHTMLObjectElementPrototypeFunctionSetCustomValidityBody(JSC::ExecState* state, typename IDLOperation<JSHTMLObjectElement>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
934{
935 UNUSED_PARAM(state);
936 UNUSED_PARAM(throwScope);
937 auto& impl = castedThis->wrapped();
938 if (UNLIKELY(state->argumentCount() < 1))
939 return throwVMError(state, throwScope, createNotEnoughArgumentsError(state));
940 auto error = convert<IDLDOMString>(*state, state->uncheckedArgument(0));
941 RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
942 impl.setCustomValidity(WTFMove(error));
943 return JSValue::encode(jsUndefined());
944}
945
946EncodedJSValue JSC_HOST_CALL jsHTMLObjectElementPrototypeFunctionSetCustomValidity(ExecState* state)
947{
948 return IDLOperation<JSHTMLObjectElement>::call<jsHTMLObjectElementPrototypeFunctionSetCustomValidityBody>(*state, "setCustomValidity");
949}
950
951static inline JSC::EncodedJSValue jsHTMLObjectElementPrototypeFunctionGetSVGDocumentBody(JSC::ExecState* state, typename IDLOperation<JSHTMLObjectElement>::ClassParameter castedThis, JSC::ThrowScope& throwScope)
952{
953 UNUSED_PARAM(state);
954 UNUSED_PARAM(throwScope);
955 auto& impl = castedThis->wrapped();
956 return JSValue::encode(toJS<IDLInterface<Document>>(*state, *castedThis->globalObject(), throwScope, BindingSecurity::checkSecurityForNode(*state, impl.getSVGDocument())));
957}
958
959EncodedJSValue JSC_HOST_CALL jsHTMLObjectElementPrototypeFunctionGetSVGDocument(ExecState* state)
960{
961 return IDLOperation<JSHTMLObjectElement>::call<jsHTMLObjectElementPrototypeFunctionGetSVGDocumentBody>(*state, "getSVGDocument");
962}
963
964void JSHTMLObjectElement::heapSnapshot(JSCell* cell, HeapSnapshotBuilder& builder)
965{
966 auto* thisObject = jsCast<JSHTMLObjectElement*>(cell);
967 builder.setWrappedObjectForCell(cell, &thisObject->wrapped());
968 if (thisObject->scriptExecutionContext())
969 builder.setLabelForCell(cell, "url " + thisObject->scriptExecutionContext()->url().string());
970 Base::heapSnapshot(cell, builder);
971}
972
973
974}
975