Commit e832264f authored by weinig@apple.com's avatar weinig@apple.com

2009-06-14 Sam Weinig <sam@webkit.org>

        Reviewed by Cameron Zwarich.

        Rename the CustomGetOwnPropertySlot and CustomPutFunction extended attributes
        to DelegatingGetOwnPropertySlot and DelegatingPutFunction to more clearly describe
        their functionality (customGetOwnPropertySlot and customPut member functions have
        been renamed getOwnPropertySlotDelegate and putDelegate).  CustomGetOwnPropertySlot 
        and CustomPutFunction have been repurposed to mean a complete custom implementation
        of the function which is inline with other extended attributes prefixed with Custom.

        * bindings/js/JSCSSStyleDeclarationCustom.cpp:
        (WebCore::JSCSSStyleDeclaration::putDelegate):
        * bindings/js/JSDOMWindowCustom.h:
        (WebCore::JSDOMWindow::getOwnPropertySlotDelegate):
        (WebCore::JSDOMWindow::putDelegate):
        * bindings/js/JSHTMLAppletElementCustom.cpp:
        (WebCore::JSHTMLAppletElement::getOwnPropertySlotDelegate):
        (WebCore::JSHTMLAppletElement::putDelegate):
        * bindings/js/JSHTMLEmbedElementCustom.cpp:
        (WebCore::JSHTMLEmbedElement::getOwnPropertySlotDelegate):
        (WebCore::JSHTMLEmbedElement::putDelegate):
        * bindings/js/JSHTMLObjectElementCustom.cpp:
        (WebCore::JSHTMLObjectElement::getOwnPropertySlotDelegate):
        (WebCore::JSHTMLObjectElement::putDelegate):
        * bindings/js/JSHistoryCustom.cpp:
        (WebCore::JSHistory::getOwnPropertySlotDelegate):
        (WebCore::JSHistory::putDelegate):
        * bindings/js/JSLocationCustom.cpp:
        (WebCore::JSLocation::getOwnPropertySlotDelegate):
        (WebCore::JSLocation::putDelegate):
        (WebCore::JSLocationPrototype::putDelegate):
        * bindings/js/JSStorageCustom.cpp:
        (WebCore::JSStorage::putDelegate):
        * bindings/js/JSWorkerContextCustom.cpp:
        (WebCore::JSWorkerContext::getOwnPropertySlotDelegate):
        * bindings/scripts/CodeGeneratorJS.pm:
        * css/CSSStyleDeclaration.idl:
        * html/HTMLAppletElement.idl:
        * html/HTMLEmbedElement.idl:
        * html/HTMLObjectElement.idl:
        * page/DOMWindow.idl:
        * page/History.idl:
        * page/Location.idl:
        * storage/Storage.idl:
        * workers/WorkerContext.idl:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@44677 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 6bbd0c3b
2009-06-14 Sam Weinig <sam@webkit.org>
Reviewed by Cameron Zwarich.
Rename the CustomGetOwnPropertySlot and CustomPutFunction extended attributes
to DelegatingGetOwnPropertySlot and DelegatingPutFunction to more clearly describe
their functionality (customGetOwnPropertySlot and customPut member functions have
been renamed getOwnPropertySlotDelegate and putDelegate). CustomGetOwnPropertySlot
and CustomPutFunction have been repurposed to mean a complete custom implementation
of the function which is inline with other extended attributes prefixed with Custom.
* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::JSCSSStyleDeclaration::putDelegate):
* bindings/js/JSDOMWindowCustom.h:
(WebCore::JSDOMWindow::getOwnPropertySlotDelegate):
(WebCore::JSDOMWindow::putDelegate):
* bindings/js/JSHTMLAppletElementCustom.cpp:
(WebCore::JSHTMLAppletElement::getOwnPropertySlotDelegate):
(WebCore::JSHTMLAppletElement::putDelegate):
* bindings/js/JSHTMLEmbedElementCustom.cpp:
(WebCore::JSHTMLEmbedElement::getOwnPropertySlotDelegate):
(WebCore::JSHTMLEmbedElement::putDelegate):
* bindings/js/JSHTMLObjectElementCustom.cpp:
(WebCore::JSHTMLObjectElement::getOwnPropertySlotDelegate):
(WebCore::JSHTMLObjectElement::putDelegate):
* bindings/js/JSHistoryCustom.cpp:
(WebCore::JSHistory::getOwnPropertySlotDelegate):
(WebCore::JSHistory::putDelegate):
* bindings/js/JSLocationCustom.cpp:
(WebCore::JSLocation::getOwnPropertySlotDelegate):
(WebCore::JSLocation::putDelegate):
(WebCore::JSLocationPrototype::putDelegate):
* bindings/js/JSStorageCustom.cpp:
(WebCore::JSStorage::putDelegate):
* bindings/js/JSWorkerContextCustom.cpp:
(WebCore::JSWorkerContext::getOwnPropertySlotDelegate):
* bindings/scripts/CodeGeneratorJS.pm:
* css/CSSStyleDeclaration.idl:
* html/HTMLAppletElement.idl:
* html/HTMLEmbedElement.idl:
* html/HTMLObjectElement.idl:
* page/DOMWindow.idl:
* page/History.idl:
* page/Location.idl:
* storage/Storage.idl:
* workers/WorkerContext.idl:
2009-06-14 Dan Bernstein <mitz@apple.com>
Reviewed by Darin Adler.
......@@ -125,7 +125,7 @@ bool JSCSSStyleDeclaration::canGetItemsForName(ExecState*, CSSStyleDeclaration*,
return isCSSPropertyName(propertyName);
}
// FIXME: You can get these properties, and set them (see customPut below),
// FIXME: You can get these properties, and set them (see putDelegate below),
// but you should also be able to enumerate them.
JSValue JSCSSStyleDeclaration::nameGetter(ExecState* exec, const Identifier& propertyName, const PropertySlot& slot)
{
......@@ -156,7 +156,7 @@ JSValue JSCSSStyleDeclaration::nameGetter(ExecState* exec, const Identifier& pro
}
bool JSCSSStyleDeclaration::customPut(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot&)
bool JSCSSStyleDeclaration::putDelegate(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot&)
{
if (!isCSSPropertyName(propertyName))
return false;
......
......@@ -42,7 +42,7 @@ JSC::JSValue nonCachingStaticFunctionGetter(JSC::ExecState* exec, const JSC::Ide
return new (exec) JSC::PrototypeFunction(exec, length, propertyName, nativeFunction);
}
ALWAYS_INLINE bool JSDOMWindow::customGetOwnPropertySlot(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::PropertySlot& slot)
ALWAYS_INLINE bool JSDOMWindow::getOwnPropertySlotDelegate(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::PropertySlot& slot)
{
// When accessing a Window cross-domain, functions are always the native built-in ones, and they
// are not affected by properties changed on the Window or anything in its prototype chain.
......@@ -128,7 +128,7 @@ ALWAYS_INLINE bool JSDOMWindow::customGetOwnPropertySlot(JSC::ExecState* exec, c
return false;
}
inline bool JSDOMWindow::customPut(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::JSValue value, JSC::PutPropertySlot& slot)
inline bool JSDOMWindow::putDelegate(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::JSValue value, JSC::PutPropertySlot& slot)
{
if (!impl()->frame())
return true;
......
......@@ -33,12 +33,12 @@ namespace WebCore {
using namespace JSC;
bool JSHTMLAppletElement::customGetOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
bool JSHTMLAppletElement::getOwnPropertySlotDelegate(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
{
return runtimeObjectCustomGetOwnPropertySlot(exec, propertyName, slot, this);
}
bool JSHTMLAppletElement::customPut(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
bool JSHTMLAppletElement::putDelegate(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
return runtimeObjectCustomPut(exec, propertyName, value, impl(), slot);
}
......
......@@ -33,12 +33,12 @@ namespace WebCore {
using namespace JSC;
bool JSHTMLEmbedElement::customGetOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
bool JSHTMLEmbedElement::getOwnPropertySlotDelegate(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
{
return runtimeObjectCustomGetOwnPropertySlot(exec, propertyName, slot, this);
}
bool JSHTMLEmbedElement::customPut(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
bool JSHTMLEmbedElement::putDelegate(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
return runtimeObjectCustomPut(exec, propertyName, value, impl(), slot);
}
......
......@@ -33,12 +33,12 @@ namespace WebCore {
using namespace JSC;
bool JSHTMLObjectElement::customGetOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
bool JSHTMLObjectElement::getOwnPropertySlotDelegate(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
{
return runtimeObjectCustomGetOwnPropertySlot(exec, propertyName, slot, this);
}
bool JSHTMLObjectElement::customPut(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
bool JSHTMLObjectElement::putDelegate(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
return runtimeObjectCustomPut(exec, propertyName, value, impl(), slot);
}
......
......@@ -52,10 +52,10 @@ static JSValue nonCachingStaticGoFunctionGetter(ExecState* exec, const Identifie
return new (exec) PrototypeFunction(exec, 1, propertyName, jsHistoryPrototypeFunctionGo);
}
bool JSHistory::customGetOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
bool JSHistory::getOwnPropertySlotDelegate(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
{
// When accessing History cross-domain, functions are always the native built-in ones.
// See JSDOMWindow::customGetOwnPropertySlot for additional details.
// See JSDOMWindow::getOwnPropertySlotDelegate for additional details.
// Our custom code is only needed to implement the Window cross-domain scheme, so if access is
// allowed, return false so the normal lookup will take place.
......@@ -92,7 +92,7 @@ bool JSHistory::customGetOwnPropertySlot(ExecState* exec, const Identifier& prop
return true;
}
bool JSHistory::customPut(ExecState* exec, const Identifier&, JSValue, PutPropertySlot&)
bool JSHistory::putDelegate(ExecState* exec, const Identifier&, JSValue, PutPropertySlot&)
{
// Only allow putting by frames in the same origin.
if (!allowsAccessFromFrame(exec, impl()->frame()))
......
......@@ -52,7 +52,7 @@ static JSValue nonCachingStaticAssignFunctionGetter(ExecState* exec, const Ident
return new (exec) PrototypeFunction(exec, 1, propertyName, jsLocationPrototypeFunctionAssign);
}
bool JSLocation::customGetOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
bool JSLocation::getOwnPropertySlotDelegate(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
{
Frame* frame = impl()->frame();
if (!frame) {
......@@ -61,7 +61,7 @@ bool JSLocation::customGetOwnPropertySlot(ExecState* exec, const Identifier& pro
}
// When accessing Location cross-domain, functions are always the native built-in ones.
// See JSDOMWindow::customGetOwnPropertySlot for additional details.
// See JSDOMWindow::getOwnPropertySlotDelegate for additional details.
// Our custom code is only needed to implement the Window cross-domain scheme, so if access is
// allowed, return false so the normal lookup will take place.
......@@ -93,7 +93,7 @@ bool JSLocation::customGetOwnPropertySlot(ExecState* exec, const Identifier& pro
return true;
}
bool JSLocation::customPut(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
bool JSLocation::putDelegate(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
Frame* frame = impl()->frame();
if (!frame)
......@@ -311,7 +311,7 @@ JSValue JSLocation::toString(ExecState* exec, const ArgList&)
return jsString(exec, impl()->toString());
}
bool JSLocationPrototype::customPut(ExecState* exec, const Identifier& propertyName, JSValue, PutPropertySlot&)
bool JSLocationPrototype::putDelegate(ExecState* exec, const Identifier& propertyName, JSValue, PutPropertySlot&)
{
return (propertyName == exec->propertyNames().toString || propertyName == exec->propertyNames().valueOf);
}
......
......@@ -74,7 +74,7 @@ bool JSStorage::customGetPropertyNames(ExecState* exec, PropertyNameArray& prope
return false;
}
bool JSStorage::customPut(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot&)
bool JSStorage::putDelegate(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot&)
{
// Only perform the custom put if the object doesn't have a native property by this name.
// Since hasProperty() would end up calling canGetItemsForName() and be fooled, we need to check
......
......@@ -66,7 +66,7 @@ void JSWorkerContext::mark()
}
}
bool JSWorkerContext::customGetOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
bool JSWorkerContext::getOwnPropertySlotDelegate(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)
{
// Look for overrides before looking at any of our own properties.
if (JSGlobalObject::getOwnPropertySlot(exec, propertyName, slot))
......
......@@ -328,8 +328,8 @@ sub GenerateGetOwnPropertySlotBody
&$manualLookupGetterGeneration();
}
if ($dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}) {
push(@getOwnPropertySlotImpl, " if (customGetOwnPropertySlot(exec, propertyName, slot))\n");
if ($dataNode->extendedAttributes->{"DelegatingGetOwnPropertySlot"}) {
push(@getOwnPropertySlotImpl, " if (getOwnPropertySlotDelegate(exec, propertyName, slot))\n");
push(@getOwnPropertySlotImpl, " return true;\n");
}
......@@ -439,13 +439,14 @@ sub GenerateHeader
# Prototype
push(@headerContent, " static JSC::JSObject* createPrototype(JSC::ExecState*, JSC::JSGlobalObject*);\n") unless ($dataNode->extendedAttributes->{"ExtendsDOMGlobalObject"});
$implIncludes{"${className}Custom.h"} = 1 if $dataNode->extendedAttributes->{"CustomHeader"} || $dataNode->extendedAttributes->{"CustomPutFunction"};
$implIncludes{"${className}Custom.h"} = 1 if $dataNode->extendedAttributes->{"CustomHeader"} || $dataNode->extendedAttributes->{"CustomPutFunction"} || $dataNode->extendedAttributes->{"DelegatingPutFunction"};
my $hasGetter = $numAttributes > 0
|| $dataNode->extendedAttributes->{"GenerateConstructor"}
|| $dataNode->extendedAttributes->{"HasIndexGetter"}
|| $dataNode->extendedAttributes->{"HasCustomIndexGetter"}
|| $dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}
|| $dataNode->extendedAttributes->{"DelegatingGetOwnPropertySlot"}
|| $dataNode->extendedAttributes->{"HasNameGetter"}
|| $dataNode->extendedAttributes->{"HasOverridingNameGetter"};
......@@ -453,7 +454,7 @@ sub GenerateHeader
if ($hasGetter) {
push(@headerContent, " virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&);\n");
push(@headerContent, " virtual bool getOwnPropertySlot(JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);\n") if ($dataNode->extendedAttributes->{"HasIndexGetter"} || $dataNode->extendedAttributes->{"HasCustomIndexGetter"}) && !$dataNode->extendedAttributes->{"HasOverridingNameGetter"};
push(@headerContent, " bool customGetOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);\n") if $dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"};
push(@headerContent, " bool getOwnPropertySlotDelegate(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);\n") if $dataNode->extendedAttributes->{"DelegatingGetOwnPropertySlot"};
}
# Check if we have any writable properties
......@@ -466,13 +467,14 @@ sub GenerateHeader
my $hasSetter = $hasReadWriteProperties
|| $dataNode->extendedAttributes->{"CustomPutFunction"}
|| $dataNode->extendedAttributes->{"DelegatingPutFunction"}
|| $dataNode->extendedAttributes->{"HasCustomIndexSetter"};
# Getters
if ($hasSetter) {
push(@headerContent, " virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&);\n");
push(@headerContent, " virtual void put(JSC::ExecState*, unsigned propertyName, JSC::JSValue);\n") if $dataNode->extendedAttributes->{"HasCustomIndexSetter"};
push(@headerContent, " bool customPut(JSC::ExecState*, const JSC::Identifier&, JSC::JSValue, JSC::PutPropertySlot&);\n") if $dataNode->extendedAttributes->{"CustomPutFunction"};
push(@headerContent, " bool putDelegate(JSC::ExecState*, const JSC::Identifier&, JSC::JSValue, JSC::PutPropertySlot&);\n") if $dataNode->extendedAttributes->{"DelegatingPutFunction"};
}
# Class info
......@@ -620,7 +622,7 @@ sub GenerateHeader
push(@headerContent, "};\n\n");
if ($dataNode->extendedAttributes->{"InlineGetOwnPropertySlot"}) {
if ($dataNode->extendedAttributes->{"InlineGetOwnPropertySlot"} && !$dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}) {
push(@headerContent, "ALWAYS_INLINE bool ${className}::getOwnPropertySlot(JSC::ExecState* exec, const JSC::Identifier& propertyName, JSC::PropertySlot& slot)\n");
push(@headerContent, "{\n");
push(@headerContent, GenerateGetOwnPropertySlotBody($dataNode, $interfaceName, $className, $implClassName, $numAttributes > 0, 1));
......@@ -664,9 +666,9 @@ sub GenerateHeader
}
push(@headerContent, " virtual const JSC::ClassInfo* classInfo() const { return &s_info; }\n");
push(@headerContent, " static const JSC::ClassInfo s_info;\n");
if ($numFunctions > 0 || $numConstants > 0 || $dataNode->extendedAttributes->{"CustomPrototypeGetOwnPropertySlot"}) {
if ($numFunctions > 0 || $numConstants > 0 || $dataNode->extendedAttributes->{"DelegatingPrototypeGetOwnPropertySlot"}) {
push(@headerContent, " virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);\n");
push(@headerContent, " bool customGetOwnPropertySlot(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);\n") if $dataNode->extendedAttributes->{"CustomPrototypeGetOwnPropertySlot"};
push(@headerContent, " bool getOwnPropertySlotDelegate(JSC::ExecState*, const JSC::Identifier&, JSC::PropertySlot&);\n") if $dataNode->extendedAttributes->{"DelegatingPrototypeGetOwnPropertySlot"};
push(@headerContent,
" static PassRefPtr<JSC::Structure> createStructure(JSC::JSValue prototype)\n" .
......@@ -674,9 +676,9 @@ sub GenerateHeader
" return JSC::Structure::create(prototype, JSC::TypeInfo(JSC::ObjectType));\n" .
" }\n");
}
if ($dataNode->extendedAttributes->{"CustomPrototypePutFunction"}) {
if ($dataNode->extendedAttributes->{"DelegatingPrototypePutFunction"}) {
push(@headerContent, " virtual void put(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::JSValue, JSC::PutPropertySlot&);\n");
push(@headerContent, " bool customPut(JSC::ExecState*, const JSC::Identifier&, JSC::JSValue, JSC::PutPropertySlot&);\n");
push(@headerContent, " bool putDelegate(JSC::ExecState*, const JSC::Identifier&, JSC::JSValue, JSC::PutPropertySlot&);\n");
}
# Custom defineGetter function
......@@ -924,12 +926,12 @@ sub GenerateImplementation
push(@implContent, " return getDOMPrototype<${className}>(exec, globalObject);\n");
push(@implContent, "}\n\n");
}
if ($numConstants > 0 || $numFunctions > 0 || $dataNode->extendedAttributes->{"CustomPrototypeGetOwnPropertySlot"}) {
if ($numConstants > 0 || $numFunctions > 0 || $dataNode->extendedAttributes->{"DelegatingPrototypeGetOwnPropertySlot"}) {
push(@implContent, "bool ${className}Prototype::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)\n");
push(@implContent, "{\n");
if ($dataNode->extendedAttributes->{"CustomPrototypeGetOwnPropertySlot"}) {
push(@implContent, " if (customGetOwnPropertySlot(exec, propertyName, slot))\n");
if ($dataNode->extendedAttributes->{"DelegatingPrototypeGetOwnPropertySlot"}) {
push(@implContent, " if (getOwnPropertySlotDelegate(exec, propertyName, slot))\n");
push(@implContent, " return true;\n");
}
......@@ -945,10 +947,10 @@ sub GenerateImplementation
push(@implContent, "}\n\n");
}
if ($dataNode->extendedAttributes->{"CustomPrototypePutFunction"}) {
if ($dataNode->extendedAttributes->{"DelegatingPrototypePutFunction"}) {
push(@implContent, "void ${className}Prototype::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)\n");
push(@implContent, "{\n");
push(@implContent, " if (customPut(exec, propertyName, value, slot))\n");
push(@implContent, " if (putDelegate(exec, propertyName, value, slot))\n");
push(@implContent, " return;\n");
push(@implContent, " Base::put(exec, propertyName, value, slot);\n");
push(@implContent, "}\n\n");
......@@ -1063,13 +1065,14 @@ sub GenerateImplementation
|| $dataNode->extendedAttributes->{"GenerateConstructor"}
|| $dataNode->extendedAttributes->{"HasIndexGetter"}
|| $dataNode->extendedAttributes->{"HasCustomIndexGetter"}
|| $dataNode->extendedAttributes->{"DelegatingGetOwnPropertySlot"}
|| $dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}
|| $dataNode->extendedAttributes->{"HasNameGetter"}
|| $dataNode->extendedAttributes->{"HasOverridingNameGetter"};
# Attributes
if ($hasGetter) {
if (!$dataNode->extendedAttributes->{"InlineGetOwnPropertySlot"}) {
if (!$dataNode->extendedAttributes->{"InlineGetOwnPropertySlot"} && !$dataNode->extendedAttributes->{"CustomGetOwnPropertySlot"}) {
push(@implContent, "bool ${className}::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot)\n");
push(@implContent, "{\n");
push(@implContent, GenerateGetOwnPropertySlotBody($dataNode, $interfaceName, $className, $implClassName, $numAttributes > 0, 0));
......@@ -1205,31 +1208,33 @@ sub GenerateImplementation
}
my $hasSetter = $hasReadWriteProperties
|| $dataNode->extendedAttributes->{"CustomPutFunction"}
|| $dataNode->extendedAttributes->{"DelegatingPutFunction"}
|| $dataNode->extendedAttributes->{"HasCustomIndexSetter"};
if ($hasSetter) {
push(@implContent, "void ${className}::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)\n");
push(@implContent, "{\n");
if ($dataNode->extendedAttributes->{"HasCustomIndexSetter"}) {
push(@implContent, " bool ok;\n");
push(@implContent, " unsigned index = propertyName.toUInt32(&ok, false);\n");
push(@implContent, " if (ok) {\n");
push(@implContent, " indexSetter(exec, index, value);\n");
push(@implContent, " return;\n");
push(@implContent, " }\n");
}
if ($dataNode->extendedAttributes->{"CustomPutFunction"}) {
push(@implContent, " if (customPut(exec, propertyName, value, slot))\n");
push(@implContent, " return;\n");
}
if (!$dataNode->extendedAttributes->{"CustomPutFunction"}) {
push(@implContent, "void ${className}::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)\n");
push(@implContent, "{\n");
if ($dataNode->extendedAttributes->{"HasCustomIndexSetter"}) {
push(@implContent, " bool ok;\n");
push(@implContent, " unsigned index = propertyName.toUInt32(&ok, false);\n");
push(@implContent, " if (ok) {\n");
push(@implContent, " indexSetter(exec, index, value);\n");
push(@implContent, " return;\n");
push(@implContent, " }\n");
}
if ($dataNode->extendedAttributes->{"DelegatingPutFunction"}) {
push(@implContent, " if (putDelegate(exec, propertyName, value, slot))\n");
push(@implContent, " return;\n");
}
if ($hasReadWriteProperties) {
push(@implContent, " lookupPut<$className, Base>(exec, propertyName, value, " . hashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, slot);\n");
} else {
push(@implContent, " Base::put(exec, propertyName, value, slot);\n");
if ($hasReadWriteProperties) {
push(@implContent, " lookupPut<$className, Base>(exec, propertyName, value, " . hashTableAccessor($dataNode->extendedAttributes->{"NoStaticTables"}, $className) . ", this, slot);\n");
} else {
push(@implContent, " Base::put(exec, propertyName, value, slot);\n");
}
push(@implContent, "}\n\n");
}
push(@implContent, "}\n\n");
if ($dataNode->extendedAttributes->{"HasCustomIndexSetter"}) {
push(@implContent, "void ${className}::put(ExecState* exec, unsigned propertyName, JSValue value)\n");
......
......@@ -23,7 +23,7 @@ module css {
// Introduced in DOM Level 2:
interface [
GenerateConstructor,
CustomPutFunction,
DelegatingPutFunction,
HasNameGetter,
HasIndexGetter,
InterfaceUUID=9989b2c3-a2b6-449b-abf9-c60d2260b1d7,
......
......@@ -22,8 +22,8 @@ module html {
interface [
GenerateConstructor,
CustomPutFunction,
CustomGetOwnPropertySlot,
DelegatingPutFunction,
DelegatingGetOwnPropertySlot,
CustomCall,
HasOverridingNameGetter,
InterfaceUUID=9b5cb4a8-c156-4b55-afdb-c60938a4d1b1,
......
......@@ -22,8 +22,8 @@ module html {
interface [
GenerateConstructor,
CustomPutFunction,
CustomGetOwnPropertySlot,
DelegatingPutFunction,
DelegatingGetOwnPropertySlot,
CustomCall,
HasOverridingNameGetter,
InterfaceUUID=18f9bd58-6bb3-4b5c-aa30-6da13adfc91e,
......
......@@ -22,8 +22,8 @@ module html {
interface [
GenerateConstructor,
CustomPutFunction,
CustomGetOwnPropertySlot,
DelegatingPutFunction,
DelegatingGetOwnPropertySlot,
CustomCall,
HasOverridingNameGetter,
InterfaceUUID=9d04a3b8-9016-4b64-913a-3b00d548aca7,
......
......@@ -30,14 +30,14 @@ module window {
CustomDefineGetter,
CustomDefineSetter,
CustomDeleteProperty,
CustomGetOwnPropertySlot,
DelegatingGetOwnPropertySlot,
CustomGetPropertyAttributes,
CustomGetPropertyNames,
CustomLookupGetter,
CustomLookupSetter,
CustomMarkFunction,
CustomNativeConverter,
CustomPutFunction,
DelegatingPutFunction,
ExtendsDOMGlobalObject,
GenerateNativeConverter,
LegacyParent=JSDOMWindowBase
......
......@@ -29,8 +29,8 @@ module window {
#if defined(V8_BINDING) && V8_BINDING
CheckDomainSecurity,
#endif
CustomGetOwnPropertySlot,
CustomPutFunction,
DelegatingGetOwnPropertySlot,
DelegatingPutFunction,
CustomDeleteProperty,
CustomGetPropertyNames
] History {
......
......@@ -32,12 +32,12 @@ module window {
#if defined(V8_BINDING) && V8_BINDING
CheckDomainSecurity,
#endif
CustomGetOwnPropertySlot,
CustomPutFunction,
DelegatingGetOwnPropertySlot,
DelegatingPutFunction,
CustomDeleteProperty,
CustomGetPropertyNames,
CustomDefineGetter,
CustomPrototypePutFunction,
DelegatingPrototypePutFunction,
CustomPrototypeDefineGetter
] Location {
attribute [DoNotCheckDomainSecurityOnSet, CustomSetter, V8DisallowShadowing] DOMString href;
......
......@@ -30,7 +30,7 @@ module storage {
HasNameGetter,
CustomDeleteProperty,
CustomGetPropertyNames,
CustomPutFunction,
DelegatingPutFunction,
Conditional=DOM_STORAGE
] Storage {
readonly attribute [DontEnum] unsigned long length;
......
......@@ -28,7 +28,7 @@ module threads {
interface [
Conditional=WORKERS,
CustomGetOwnPropertySlot,
DelegatingGetOwnPropertySlot,
CustomMarkFunction,
ExtendsDOMGlobalObject,
LegacyParent=JSWorkerContextBase,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment