Add [ActiveDOMObject] to IDLs of ActiveDOMObjects
https://bugs.webkit.org/show_bug.cgi?id=202869
Reviewed by Ryosuke Niwa.
Add [ActiveDOMObject] to IDLs of ActiveDOMObjects, this is necessary so that the wrapper
stays alive as long as ActiveDOMObject::hasPendingActivity() returns true. We may have
subtle lifetime bugs otherwise.
* Modules/encryptedmedia/MediaKeySession.h:
* Modules/encryptedmedia/MediaKeySession.idl:
* Modules/entriesapi/FileSystemDirectoryReader.idl:
* Modules/entriesapi/FileSystemEntry.idl:
* Modules/geolocation/Geolocation.idl:
* Modules/indexeddb/IDBObjectStore.h:
* Modules/indexeddb/IDBObjectStore.idl:
* Modules/paymentrequest/PaymentResponse.idl:
* Modules/webvr/VRDisplay.h:
* Modules/webvr/VRDisplay.idl:
* workers/service/ServiceWorkerContainer.idl:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@251040 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 069782a..ff2bad8 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,26 @@
+2019-10-11 Chris Dumez <cdumez@apple.com>
+
+ Add [ActiveDOMObject] to IDLs of ActiveDOMObjects
+ https://bugs.webkit.org/show_bug.cgi?id=202869
+
+ Reviewed by Ryosuke Niwa.
+
+ Add [ActiveDOMObject] to IDLs of ActiveDOMObjects, this is necessary so that the wrapper
+ stays alive as long as ActiveDOMObject::hasPendingActivity() returns true. We may have
+ subtle lifetime bugs otherwise.
+
+ * Modules/encryptedmedia/MediaKeySession.h:
+ * Modules/encryptedmedia/MediaKeySession.idl:
+ * Modules/entriesapi/FileSystemDirectoryReader.idl:
+ * Modules/entriesapi/FileSystemEntry.idl:
+ * Modules/geolocation/Geolocation.idl:
+ * Modules/indexeddb/IDBObjectStore.h:
+ * Modules/indexeddb/IDBObjectStore.idl:
+ * Modules/paymentrequest/PaymentResponse.idl:
+ * Modules/webvr/VRDisplay.h:
+ * Modules/webvr/VRDisplay.idl:
+ * workers/service/ServiceWorkerContainer.idl:
+
2019-10-11 Devin Rousso <drousso@apple.com>
Web Inspector: Elements: Computed: show shorthand properties in addition to longhand ones
diff --git a/Source/WebCore/Modules/encryptedmedia/MediaKeySession.h b/Source/WebCore/Modules/encryptedmedia/MediaKeySession.h
index 823844f..c4795d8 100644
--- a/Source/WebCore/Modules/encryptedmedia/MediaKeySession.h
+++ b/Source/WebCore/Modules/encryptedmedia/MediaKeySession.h
@@ -81,6 +81,9 @@
const Vector<std::pair<Ref<SharedBuffer>, MediaKeyStatus>>& statuses() const { return m_statuses; }
+ // ActiveDOMObject
+ bool hasPendingActivity() const override;
+
private:
MediaKeySession(ScriptExecutionContext&, WeakPtr<MediaKeys>&&, MediaKeySessionType, bool useDistinctiveIdentifier, Ref<CDM>&&, Ref<CDMInstanceSession>&&);
void enqueueMessage(MediaKeyMessageType, const SharedBuffer&);
@@ -100,7 +103,6 @@
void derefEventTarget() override { deref(); }
// ActiveDOMObject
- bool hasPendingActivity() const override;
const char* activeDOMObjectName() const override;
bool canSuspendForDocumentSuspension() const override;
void stop() override;
diff --git a/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl b/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl
index b38c92c..bbe68c5 100644
--- a/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl
+++ b/Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl
@@ -27,6 +27,7 @@
*/
[
+ ActiveDOMObject,
Conditional=ENCRYPTED_MEDIA,
EnabledAtRuntime=EncryptedMediaAPI,
DisabledByQuirk=hasBrokenEncryptedMediaAPISupport,
diff --git a/Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.idl b/Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.idl
index 65d2c61..d0f358c 100644
--- a/Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.idl
+++ b/Source/WebCore/Modules/entriesapi/FileSystemDirectoryReader.idl
@@ -24,6 +24,7 @@
*/
[
+ ActiveDOMObject,
EnabledAtRuntime=DirectoryUpload,
] interface FileSystemDirectoryReader {
[CallWith=ScriptExecutionContext] void readEntries(FileSystemEntriesCallback successCallback, optional ErrorCallback? errorCallback);
diff --git a/Source/WebCore/Modules/entriesapi/FileSystemEntry.idl b/Source/WebCore/Modules/entriesapi/FileSystemEntry.idl
index be0692f..e8c6d93 100644
--- a/Source/WebCore/Modules/entriesapi/FileSystemEntry.idl
+++ b/Source/WebCore/Modules/entriesapi/FileSystemEntry.idl
@@ -24,6 +24,7 @@
*/
[
+ ActiveDOMObject,
CustomToJSObject,
EnabledAtRuntime=DirectoryUpload,
] interface FileSystemEntry {
diff --git a/Source/WebCore/Modules/geolocation/Geolocation.idl b/Source/WebCore/Modules/geolocation/Geolocation.idl
index edadd3a..5e68dc8 100644
--- a/Source/WebCore/Modules/geolocation/Geolocation.idl
+++ b/Source/WebCore/Modules/geolocation/Geolocation.idl
@@ -25,6 +25,7 @@
// http://www.w3.org/TR/geolocation-API/#geolocation_interface
[
+ ActiveDOMObject,
Conditional=GEOLOCATION,
GenerateIsReachable=ReachableFromNavigator,
] interface Geolocation {
diff --git a/Source/WebCore/Modules/indexeddb/IDBIndex.h b/Source/WebCore/Modules/indexeddb/IDBIndex.h
index 881ef64..f83c1f1 100644
--- a/Source/WebCore/Modules/indexeddb/IDBIndex.h
+++ b/Source/WebCore/Modules/indexeddb/IDBIndex.h
@@ -42,7 +42,7 @@
struct IDBKeyRangeData;
-class IDBIndex final : private ActiveDOMObject {
+class IDBIndex final : public ActiveDOMObject {
WTF_MAKE_NONCOPYABLE(IDBIndex);
WTF_MAKE_FAST_ALLOCATED;
public:
@@ -87,6 +87,8 @@
void* objectStoreAsOpaqueRoot() { return &m_objectStore; }
+ bool hasPendingActivity() const final;
+
private:
ExceptionOr<Ref<IDBRequest>> doCount(JSC::ExecState&, const IDBKeyRangeData&);
ExceptionOr<Ref<IDBRequest>> doGet(JSC::ExecState&, ExceptionOr<IDBKeyRangeData>);
@@ -98,7 +100,6 @@
const char* activeDOMObjectName() const final;
bool canSuspendForDocumentSuspension() const final;
- bool hasPendingActivity() const final;
IDBIndexInfo m_info;
IDBIndexInfo m_originalInfo;
diff --git a/Source/WebCore/Modules/indexeddb/IDBIndex.idl b/Source/WebCore/Modules/indexeddb/IDBIndex.idl
index 7546984..9f68548 100644
--- a/Source/WebCore/Modules/indexeddb/IDBIndex.idl
+++ b/Source/WebCore/Modules/indexeddb/IDBIndex.idl
@@ -28,6 +28,7 @@
typedef (DOMString or sequence<DOMString>) IDBKeyPath;
[
+ ActiveDOMObject,
Conditional=INDEXED_DATABASE,
GenerateIsReachable=Impl,
JSCustomMarkFunction,
diff --git a/Source/WebCore/Modules/indexeddb/IDBObjectStore.h b/Source/WebCore/Modules/indexeddb/IDBObjectStore.h
index 61a950e..d342563 100644
--- a/Source/WebCore/Modules/indexeddb/IDBObjectStore.h
+++ b/Source/WebCore/Modules/indexeddb/IDBObjectStore.h
@@ -112,6 +112,8 @@
void visitReferencedIndexes(JSC::SlotVisitor&) const;
void renameReferencedIndex(IDBIndex&, const String& newName);
+ bool hasPendingActivity() const final;
+
private:
enum class InlineKeyCheck { Perform, DoNotPerform };
ExceptionOr<Ref<IDBRequest>> putOrAdd(JSC::ExecState&, JSC::JSValue, RefPtr<IDBKey>, IndexedDB::ObjectStoreOverwriteMode, InlineKeyCheck);
@@ -124,7 +126,6 @@
const char* activeDOMObjectName() const final;
bool canSuspendForDocumentSuspension() const final;
- bool hasPendingActivity() const final;
IDBObjectStoreInfo m_info;
IDBObjectStoreInfo m_originalInfo;
diff --git a/Source/WebCore/Modules/indexeddb/IDBObjectStore.idl b/Source/WebCore/Modules/indexeddb/IDBObjectStore.idl
index cbb9187..3a7efe9 100644
--- a/Source/WebCore/Modules/indexeddb/IDBObjectStore.idl
+++ b/Source/WebCore/Modules/indexeddb/IDBObjectStore.idl
@@ -28,6 +28,7 @@
typedef (DOMString or sequence<DOMString>) IDBKeyPath;
[
+ ActiveDOMObject,
Conditional=INDEXED_DATABASE,
GenerateIsReachable=Impl,
JSCustomMarkFunction,
diff --git a/Source/WebCore/Modules/paymentrequest/PaymentResponse.idl b/Source/WebCore/Modules/paymentrequest/PaymentResponse.idl
index c6447949..c45c635 100644
--- a/Source/WebCore/Modules/paymentrequest/PaymentResponse.idl
+++ b/Source/WebCore/Modules/paymentrequest/PaymentResponse.idl
@@ -24,6 +24,7 @@
*/
[
+ ActiveDOMObject,
Conditional=PAYMENT_REQUEST,
EnabledBySetting=PaymentRequest,
Exposed=Window,
diff --git a/Source/WebCore/Modules/webgpu/GPUCanvasContext.h b/Source/WebCore/Modules/webgpu/GPUCanvasContext.h
index 25cd17b..cd818ce 100644
--- a/Source/WebCore/Modules/webgpu/GPUCanvasContext.h
+++ b/Source/WebCore/Modules/webgpu/GPUCanvasContext.h
@@ -46,6 +46,9 @@
WebGPUSwapChain* swapChain() const { return m_swapChain.get(); }
Ref<WebGPUSwapChain> configureSwapChain(const WebGPUSwapChainDescriptor&);
+ // FIXME: Stubs.
+ bool hasPendingActivity() const final { return false; }
+
private:
GPUCanvasContext(CanvasBase&);
@@ -56,7 +59,6 @@
void markLayerComposited() final;
const char* activeDOMObjectName() const final { return "GPUCanvasContext"; }
// FIXME: Stubs.
- bool hasPendingActivity() const final { return false; }
void stop() final { }
bool canSuspendForDocumentSuspension() const final { return false; }
diff --git a/Source/WebCore/Modules/webgpu/GPUCanvasContext.idl b/Source/WebCore/Modules/webgpu/GPUCanvasContext.idl
index 1b20cab..de452c7 100644
--- a/Source/WebCore/Modules/webgpu/GPUCanvasContext.idl
+++ b/Source/WebCore/Modules/webgpu/GPUCanvasContext.idl
@@ -37,6 +37,7 @@
};
[
+ ActiveDOMObject,
Conditional=WEBGPU,
EnabledAtRuntime=WebGPU
] interface GPUCanvasContext {
diff --git a/Source/WebCore/Modules/webvr/VRDisplay.h b/Source/WebCore/Modules/webvr/VRDisplay.h
index 1cad846..1cd75d8 100644
--- a/Source/WebCore/Modules/webvr/VRDisplay.h
+++ b/Source/WebCore/Modules/webvr/VRDisplay.h
@@ -92,6 +92,9 @@
void platformDisplayMounted() override;
void platformDisplayUnmounted() override;
+ // ActiveDOMObject
+ bool hasPendingActivity() const override;
+
private:
VRDisplay(ScriptExecutionContext&, WeakPtr<VRPlatformDisplay>&&);
@@ -102,7 +105,6 @@
void derefEventTarget() override { deref(); }
// ActiveDOMObject
- bool hasPendingActivity() const override;
const char* activeDOMObjectName() const override;
bool canSuspendForDocumentSuspension() const override;
void stop() override;
diff --git a/Source/WebCore/Modules/webvr/VRDisplay.idl b/Source/WebCore/Modules/webvr/VRDisplay.idl
index 9735dbf..ba7dd4f 100644
--- a/Source/WebCore/Modules/webvr/VRDisplay.idl
+++ b/Source/WebCore/Modules/webvr/VRDisplay.idl
@@ -24,6 +24,7 @@
*/
[
+ ActiveDOMObject,
EnabledAtRuntime=WebVR,
] interface VRDisplay : EventTarget {
readonly attribute boolean isConnected;
diff --git a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
index 0876179..1f4f755 100644
--- a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
+++ b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
@@ -4366,6 +4366,15 @@
push(@implContent, " ASSERT(inherits(vm, info()));\n\n");
}
+ if (!$codeGenerator->InheritsExtendedAttribute($interface, "JSBuiltin")) {
+ AddToImplIncludes("ActiveDOMObject.h");
+ if ($codeGenerator->InheritsExtendedAttribute($interface, "ActiveDOMObject")) {
+ push(@implContent, " static_assert(std::is_base_of<ActiveDOMObject, ${implType}>::value, \"Interface is marked as [ActiveDOMObject] but implementation class does not subclass ActiveDOMObject.\");\n\n");
+ } else {
+ push(@implContent, " static_assert(!std::is_base_of<ActiveDOMObject, ${implType}>::value, \"Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.\");\n\n");
+ }
+ }
+
if ($interfaceName eq "Location") {
push(@implContent, " putDirect(vm, vm.propertyNames->valueOf, globalObject()->objectProtoValueOfFunction(), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);\n");
push(@implContent, " putDirect(vm, vm.propertyNames->toPrimitiveSymbol, jsUndefined(), JSC::PropertyAttribute::DontDelete | JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::DontEnum);\n");
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp b/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp
index 41d8894..460ebab 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSInterfaceName.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMExceptionHandling.h"
@@ -111,6 +112,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, InterfaceName>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSInterfaceName::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp b/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp
index 9c38995..6caa3c3 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSMapLike.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSMapLike.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -141,6 +142,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, MapLike>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
synchronizeBackingMap(*globalObject()->globalExec(), *globalObject(), *this);
}
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp b/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp
index cfa2810..73c77bf 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSReadOnlyMapLike.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSReadOnlyMapLike.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -135,6 +136,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, ReadOnlyMapLike>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
synchronizeBackingMap(*globalObject()->globalExec(), *globalObject(), *this);
}
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
index a1477e1..b509e8f 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestActiveDOMObject.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMBindingSecurity.h"
@@ -140,6 +141,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestActiveDOMObject>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestActiveDOMObject::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp
index 30e4d8d..a6772a4 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestCEReactions.h"
+#include "ActiveDOMObject.h"
#include "CustomElementReactionQueue.h"
#include "HTMLNames.h"
#include "JSDOMAttribute.h"
@@ -144,6 +145,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestCEReactions>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestCEReactions::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp
index 38d41f3..912c6ef 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestCEReactionsStringifier.h"
+#include "ActiveDOMObject.h"
#include "CustomElementReactionQueue.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
@@ -126,6 +127,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestCEReactionsStringifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestCEReactionsStringifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp
index 6c03f47..341fa7d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestCallTracer.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestCallTracer.h"
+#include "ActiveDOMObject.h"
#include "CallTracer.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
@@ -164,6 +165,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestCallTracer>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestCallTracer::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
index 20910cb..fbf827f 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestClassWithJSBuiltinConstructor.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMBuiltinConstructor.h"
#include "JSDOMExceptionHandling.h"
@@ -117,6 +118,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestClassWithJSBuiltinConstructor>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestClassWithJSBuiltinConstructor::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp
index 6127d8e..9129eed46 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestDOMJIT.h"
+#include "ActiveDOMObject.h"
#include "DOMJITAbstractHeapRepository.h"
#include "DOMJITIDLConvert.h"
#include "DOMJITIDLType.h"
@@ -573,6 +574,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestDOMJIT>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestDOMJIT::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp
index 5957b63..aaf76cf 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledBySetting.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestEnabledBySetting.h"
+#include "ActiveDOMObject.h"
#include "Document.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
@@ -162,6 +163,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestEnabledBySetting>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
if (downcast<Document>(jsCast<JSDOMGlobalObject*>(globalObject())->scriptExecutionContext())->settings().testSettingEnabled())
putDirectCustomAccessor(vm, static_cast<JSVMClientData*>(vm.clientData)->builtinNames().TestSubObjEnabledBySettingPublicName(), CustomGetterSetter::create(vm, jsTestEnabledBySettingTestSubObjEnabledBySettingConstructor, setJSTestEnabledBySettingTestSubObjEnabledBySettingConstructor), attributesForStructure(static_cast<unsigned>(JSC::PropertyAttribute::DontEnum)));
}
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp
index e471487..584b162 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestEnabledForContext.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestEnabledForContext.h"
+#include "ActiveDOMObject.h"
#include "Document.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
@@ -118,6 +119,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestEnabledForContext>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
if ((downcast<Document>(jsCast<JSDOMGlobalObject*>(globalObject())->scriptExecutionContext())->settings().testSettingEnabled() && TestSubObjEnabledForContext::enabledForContext(*jsCast<JSDOMGlobalObject*>(globalObject())->scriptExecutionContext())))
putDirectCustomAccessor(vm, static_cast<JSVMClientData*>(vm.clientData)->builtinNames().TestSubObjEnabledForContextPublicName(), CustomGetterSetter::create(vm, jsTestEnabledForContextTestSubObjEnabledForContextConstructor, setJSTestEnabledForContextTestSubObjEnabledForContextConstructor), attributesForStructure(static_cast<unsigned>(JSC::PropertyAttribute::DontEnum)));
}
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
index 554ec8a..ab0415d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestEventConstructor.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructor.h"
@@ -218,6 +219,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestEventConstructor>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestEventConstructor::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
index bc605f7..f198c26 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestEventTarget.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -121,6 +122,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestEventTarget>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestEventTarget::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
index 6003e81..a330006 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestException.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -115,6 +116,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestException>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestException::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
index 3a4bdf1..e7cc62f 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestGenerateIsReachable.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -124,6 +125,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestGenerateIsReachable>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestGenerateIsReachable::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
index d781285..d1cefd3 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestGlobalObject.h"
+#include "ActiveDOMObject.h"
#include "DOMWrapperWorld.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
@@ -701,6 +702,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestGlobalObject>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
#if ENABLE(TEST_FEATURE)
if (RuntimeEnabledFeatures::sharedFeatures().testFeatureEnabled())
putDirectCustomAccessor(vm, static_cast<JSVMClientData*>(vm.clientData)->builtinNames().enabledAtRuntimeAttributePublicName(), CustomGetterSetter::create(vm, jsTestGlobalObjectEnabledAtRuntimeAttribute, setJSTestGlobalObjectEnabledAtRuntimeAttribute), attributesForStructure(static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor)));
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp
index 5b86f1d..193a7b5 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestIndexedSetterNoIdentifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMConvertStrings.h"
@@ -113,6 +114,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestIndexedSetterNoIdentifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestIndexedSetterNoIdentifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp
index 976d390..91b70c8 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestIndexedSetterThrowingException.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMConvertStrings.h"
@@ -113,6 +114,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestIndexedSetterThrowingException>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestIndexedSetterThrowingException::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp
index f5f867c..095a79e 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestIndexedSetterWithIdentifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMConvertNumbers.h"
@@ -120,6 +121,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestIndexedSetterWithIdentifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestIndexedSetterWithIdentifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
index d45ad06..3ced44e 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
@@ -24,6 +24,7 @@
#include "JSTestInterface.h"
+#include "ActiveDOMObject.h"
#include "HTMLNames.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
@@ -417,6 +418,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(std::is_base_of<ActiveDOMObject, TestInterface>::value, "Interface is marked as [ActiveDOMObject] but implementation class does not subclass ActiveDOMObject.");
+
}
JSObject* JSTestInterface::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp
index c28511e..dbd9076 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestInterfaceLeadingUnderscore.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -115,6 +116,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestInterfaceLeadingUnderscore>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestInterfaceLeadingUnderscore::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
index 87a881d..9932bc5 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestIterable.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMExceptionHandling.h"
@@ -127,6 +128,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestIterable>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestIterable::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
index 93c1f4b..afff51d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestMediaQueryListListener.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMConvertCallbacks.h"
@@ -120,6 +121,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestMediaQueryListListener>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestMediaQueryListListener::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp
index 9acae61..67bdb6f 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedAndIndexedSetterNoIdentifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -114,6 +115,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedAndIndexedSetterNoIdentifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedAndIndexedSetterNoIdentifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp
index 80f3c46..ce05e81 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedAndIndexedSetterThrowingException.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -114,6 +115,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedAndIndexedSetterThrowingException>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedAndIndexedSetterThrowingException::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp
index 48b7cca..ef68527 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedAndIndexedSetterWithIdentifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -123,6 +124,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedAndIndexedSetterWithIdentifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedAndIndexedSetterWithIdentifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
index 5b231db..2c5066d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedConstructor.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMConvertInterface.h"
@@ -149,6 +150,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(std::is_base_of<ActiveDOMObject, TestNamedConstructor>::value, "Interface is marked as [ActiveDOMObject] but implementation class does not subclass ActiveDOMObject.");
+
}
JSObject* JSTestNamedConstructor::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp
index 85e8a2d..4fd4443 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedDeleterNoIdentifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -113,6 +114,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedDeleterNoIdentifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedDeleterNoIdentifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp
index f8d736c..76d6886 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedDeleterThrowingException.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -113,6 +114,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedDeleterThrowingException>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedDeleterThrowingException::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp
index 83d7f99..6c39a42 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedDeleterWithIdentifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -119,6 +120,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedDeleterWithIdentifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedDeleterWithIdentifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp
index 69e38e5..d381da0 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedDeleterWithIndexedGetter.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -114,6 +115,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedDeleterWithIndexedGetter>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedDeleterWithIndexedGetter::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp
index 2617730..6288602 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedGetterCallWith.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -113,6 +114,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedGetterCallWith>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedGetterCallWith::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp
index 5237444..3830ea86 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedGetterNoIdentifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -113,6 +114,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedGetterNoIdentifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedGetterNoIdentifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp
index 3a489e1..cc1bc7cb 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedGetterWithIdentifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -119,6 +120,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedGetterWithIdentifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedGetterWithIdentifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp
index 5e982ce..0853040 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedSetterNoIdentifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -113,6 +114,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedSetterNoIdentifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedSetterNoIdentifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp
index e84c687..835ce85 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedSetterThrowingException.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -113,6 +114,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedSetterThrowingException>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedSetterThrowingException::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp
index 8e4224c..631eca3 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedSetterWithIdentifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -119,6 +120,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedSetterWithIdentifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedSetterWithIdentifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp
index 8e434b9..322c601 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedSetterWithIndexedGetter.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -123,6 +124,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedSetterWithIndexedGetter>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedSetterWithIndexedGetter::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp
index 31973fd..2e95fe6 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedSetterWithIndexedGetterAndSetter.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -123,6 +124,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedSetterWithIndexedGetterAndSetter>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedSetterWithIndexedGetterAndSetter::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp
index ca7ac6c..6789414 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedSetterWithOverrideBuiltins.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -113,6 +114,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedSetterWithOverrideBuiltins>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedSetterWithOverrideBuiltins::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp
index f6bf263..e7666ef 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedSetterWithUnforgableProperties.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
@@ -137,6 +138,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedSetterWithUnforgableProperties>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedSetterWithUnforgableProperties::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp
index 8d427fd..bf44064 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
@@ -137,6 +138,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
index a2a1801..860cf3d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestNode.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructor.h"
@@ -209,6 +210,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestNode>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestNode::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
index 20932eb..db4147a 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestObj.h"
+#include "ActiveDOMObject.h"
#include "DOMPromiseProxy.h"
#include "DOMWindow.h"
#include "DOMWrapperWorld.h"
@@ -2443,6 +2444,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestObj>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestObj::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
index 3266374..c5b3a93 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestOverloadedConstructors.h"
+#include "ActiveDOMObject.h"
#include "JSBlob.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructor.h"
@@ -206,6 +207,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestOverloadedConstructors>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestOverloadedConstructors::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
index 2a29a48..bf5493a 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestOverloadedConstructorsWithSequence.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructor.h"
#include "JSDOMConvertInterface.h"
@@ -162,6 +163,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestOverloadedConstructorsWithSequence>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestOverloadedConstructorsWithSequence::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
index f31c9c2..2416180 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestOverrideBuiltins.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAbstractOperations.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -122,6 +123,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestOverrideBuiltins>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestOverrideBuiltins::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp
index 0391430..14c1091 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestPluginInterface.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestPluginInterface.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMExceptionHandling.h"
@@ -112,6 +113,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestPluginInterface>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestPluginInterface::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp
index bd6c492..88e31ac 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestPromiseRejectionEvent.h"
+#include "ActiveDOMObject.h"
#include "DOMPromiseProxy.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
@@ -215,6 +216,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestPromiseRejectionEvent>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestPromiseRejectionEvent::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp
index f88a6e1..2a031d0 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestSerialization.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -166,6 +167,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestSerialization>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestSerialization::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp
index d4acb3a..c8204d7 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestSerializationIndirectInheritance.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMExceptionHandling.h"
@@ -109,6 +110,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestSerializationIndirectInheritance>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestSerializationIndirectInheritance::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp
index be1f378..c2de88e 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInherit.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestSerializationInherit.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -121,6 +122,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestSerializationInherit>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestSerializationInherit::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp
index dcc3cee..872b831d 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestSerializationInheritFinal.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -124,6 +125,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestSerializationInheritFinal>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestSerializationInheritFinal::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
index 0eef416..97005f8 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
@@ -24,6 +24,7 @@
#include "JSTestSerializedScriptValueInterface.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -142,6 +143,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestSerializedScriptValueInterface>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestSerializedScriptValueInterface::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp
index 71966f7..0493242 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifier.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestStringifier.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMConvertStrings.h"
@@ -118,6 +119,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestStringifier>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestStringifier::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp
index 3e2d889..b882469 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestStringifierAnonymousOperation.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMConvertStrings.h"
@@ -118,6 +119,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestStringifierAnonymousOperation>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestStringifierAnonymousOperation::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp
index 4091384..3aa7c36 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestStringifierNamedOperation.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMConvertStrings.h"
@@ -120,6 +121,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestStringifierNamedOperation>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestStringifierNamedOperation::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp
index c02cff9..24260f5 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestStringifierOperationImplementedAs.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMConvertStrings.h"
@@ -120,6 +121,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestStringifierOperationImplementedAs>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestStringifierOperationImplementedAs::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp
index d21ac3d..76cce63 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestStringifierOperationNamedToString.h"
+#include "ActiveDOMObject.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
#include "JSDOMConvertStrings.h"
@@ -118,6 +119,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestStringifierOperationNamedToString>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestStringifierOperationNamedToString::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp
index 163bf62..1375cc9 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestStringifierReadOnlyAttribute.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -121,6 +122,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestStringifierReadOnlyAttribute>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestStringifierReadOnlyAttribute::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp
index 70c6fa5..ae0c1e2 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestStringifierReadWriteAttribute.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructorNotConstructable.h"
@@ -122,6 +123,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestStringifierReadWriteAttribute>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestStringifierReadWriteAttribute::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
index d8b4389..f65e593 100644
--- a/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "JSTestTypedefs.h"
+#include "ActiveDOMObject.h"
#include "JSDOMAttribute.h"
#include "JSDOMBinding.h"
#include "JSDOMConstructor.h"
@@ -225,6 +226,8 @@
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
+ static_assert(!std::is_base_of<ActiveDOMObject, TestTypedefs>::value, "Interface is not marked as [ActiveDOMObject] even though implementation class subclasses ActiveDOMObject.");
+
}
JSObject* JSTestTypedefs::createPrototype(VM& vm, JSDOMGlobalObject& globalObject)
diff --git a/Source/WebCore/css/FontFaceSet.h b/Source/WebCore/css/FontFaceSet.h
index 38ed5ed..9f728ef 100644
--- a/Source/WebCore/css/FontFaceSet.h
+++ b/Source/WebCore/css/FontFaceSet.h
@@ -38,7 +38,7 @@
class DOMException;
-class FontFaceSet final : public RefCounted<FontFaceSet>, private CSSFontFaceSetClient, public EventTargetWithInlineData, private ActiveDOMObject {
+class FontFaceSet final : public RefCounted<FontFaceSet>, private CSSFontFaceSetClient, public EventTargetWithInlineData, public ActiveDOMObject {
WTF_MAKE_ISO_ALLOCATED(FontFaceSet);
public:
static Ref<FontFaceSet> create(Document&, const Vector<RefPtr<FontFace>>& initialFaces);
diff --git a/Source/WebCore/css/FontFaceSet.idl b/Source/WebCore/css/FontFaceSet.idl
index d407489..96dc7b1 100644
--- a/Source/WebCore/css/FontFaceSet.idl
+++ b/Source/WebCore/css/FontFaceSet.idl
@@ -29,6 +29,7 @@
};
[
+ ActiveDOMObject,
ConstructorCallWith=Document,
Constructor(sequence<FontFace> initialFaces),
] interface FontFaceSet : EventTarget {
diff --git a/Source/WebCore/html/HTMLMarqueeElement.h b/Source/WebCore/html/HTMLMarqueeElement.h
index 040cc95..05818a5 100644
--- a/Source/WebCore/html/HTMLMarqueeElement.h
+++ b/Source/WebCore/html/HTMLMarqueeElement.h
@@ -29,7 +29,7 @@
class RenderMarquee;
-class HTMLMarqueeElement final : public HTMLElement, private ActiveDOMObject {
+class HTMLMarqueeElement final : public HTMLElement, public ActiveDOMObject {
WTF_MAKE_ISO_ALLOCATED(HTMLMarqueeElement);
public:
static Ref<HTMLMarqueeElement> create(const QualifiedName&, Document&);
diff --git a/Source/WebCore/html/HTMLMarqueeElement.idl b/Source/WebCore/html/HTMLMarqueeElement.idl
index f8ff1c2..fa91f6d 100644
--- a/Source/WebCore/html/HTMLMarqueeElement.idl
+++ b/Source/WebCore/html/HTMLMarqueeElement.idl
@@ -17,7 +17,9 @@
* Boston, MA 02110-1301, USA.
*/
-interface HTMLMarqueeElement : HTMLElement {
+[
+ ActiveDOMObject,
+] interface HTMLMarqueeElement : HTMLElement {
void start();
void stop();
diff --git a/Source/WebCore/html/HTMLSourceElement.h b/Source/WebCore/html/HTMLSourceElement.h
index e122733..8765871 100644
--- a/Source/WebCore/html/HTMLSourceElement.h
+++ b/Source/WebCore/html/HTMLSourceElement.h
@@ -32,7 +32,7 @@
class MediaQuerySet;
-class HTMLSourceElement final : public HTMLElement, private ActiveDOMObject {
+class HTMLSourceElement final : public HTMLElement, public ActiveDOMObject {
WTF_MAKE_ISO_ALLOCATED(HTMLSourceElement);
public:
static Ref<HTMLSourceElement> create(Document&);
diff --git a/Source/WebCore/html/HTMLSourceElement.idl b/Source/WebCore/html/HTMLSourceElement.idl
index ac63882..53c23ab 100644
--- a/Source/WebCore/html/HTMLSourceElement.idl
+++ b/Source/WebCore/html/HTMLSourceElement.idl
@@ -23,7 +23,9 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-interface HTMLSourceElement : HTMLElement {
+[
+ ActiveDOMObject,
+] interface HTMLSourceElement : HTMLElement {
[CEReactions=NotNeeded, Reflect, URL] attribute USVString src;
[CEReactions=NotNeeded, Reflect] attribute DOMString type;
[CEReactions=NotNeeded, Reflect] attribute USVString srcset;
diff --git a/Source/WebCore/html/canvas/WebGL2RenderingContext.idl b/Source/WebCore/html/canvas/WebGL2RenderingContext.idl
index 866175a..da700e7 100644
--- a/Source/WebCore/html/canvas/WebGL2RenderingContext.idl
+++ b/Source/WebCore/html/canvas/WebGL2RenderingContext.idl
@@ -51,6 +51,7 @@
#endif
[
+ ActiveDOMObject,
Conditional=WEBGL2,
EnabledAtRuntime=WebGL2,
JSCustomMarkFunction,
diff --git a/Source/WebCore/html/canvas/WebGLRenderingContext.idl b/Source/WebCore/html/canvas/WebGLRenderingContext.idl
index c8b97e5..1d2f688 100644
--- a/Source/WebCore/html/canvas/WebGLRenderingContext.idl
+++ b/Source/WebCore/html/canvas/WebGLRenderingContext.idl
@@ -34,6 +34,7 @@
#endif
[
+ ActiveDOMObject,
Conditional=WEBGL,
JSCustomMarkFunction,
JSGenerateToJSObject,
diff --git a/Source/WebCore/html/canvas/WebGLRenderingContextBase.h b/Source/WebCore/html/canvas/WebGLRenderingContextBase.h
index 70db6f8..b172538 100644
--- a/Source/WebCore/html/canvas/WebGLRenderingContextBase.h
+++ b/Source/WebCore/html/canvas/WebGLRenderingContextBase.h
@@ -365,6 +365,9 @@
void recycleContext() override;
void dispatchContextChangedNotification() override;
+ // ActiveDOMObject
+ bool hasPendingActivity() const final;
+
protected:
WebGLRenderingContextBase(CanvasBase&, WebGLContextAttributes);
WebGLRenderingContextBase(CanvasBase&, Ref<GraphicsContext3D>&&, WebGLContextAttributes);
@@ -388,7 +391,6 @@
void setupFlags();
// ActiveDOMObject
- bool hasPendingActivity() const override;
void stop() override;
const char* activeDOMObjectName() const override;
bool canSuspendForDocumentSuspension() const override;
diff --git a/Source/WebCore/workers/service/ServiceWorkerContainer.idl b/Source/WebCore/workers/service/ServiceWorkerContainer.idl
index 41fa7ad..484aed2 100644
--- a/Source/WebCore/workers/service/ServiceWorkerContainer.idl
+++ b/Source/WebCore/workers/service/ServiceWorkerContainer.idl
@@ -27,6 +27,7 @@
// We don't currently support nested workers.
[
+ ActiveDOMObject,
SecureContext,
Exposed=(Window,ServiceWorker),
Conditional=SERVICE_WORKER,