| Index: Source/core/svg/properties/NewSVGListPropertyTearOffHelper.h
|
| diff --git a/Source/core/svg/properties/NewSVGListPropertyTearOffHelper.h b/Source/core/svg/properties/NewSVGListPropertyTearOffHelper.h
|
| index 18fb7d04d97e2224755a7103efee3c1f5f0d6135..bcdc16e00db004c35855b8d741a3d4346fb726dc 100644
|
| --- a/Source/core/svg/properties/NewSVGListPropertyTearOffHelper.h
|
| +++ b/Source/core/svg/properties/NewSVGListPropertyTearOffHelper.h
|
| @@ -55,7 +55,7 @@ public:
|
| void clear(ExceptionState& exceptionState)
|
| {
|
| if (toDerived()->isImmutable()) {
|
| - exceptionState.throwDOMException(NoModificationAllowedError, ExceptionMessages::failedToExecute("clear", Derived::propertyTypeName(), "The object is read-only."));
|
| + exceptionState.throwDOMException(NoModificationAllowedError, "The object is read-only.");
|
| return;
|
| }
|
|
|
| @@ -67,7 +67,7 @@ public:
|
| RefPtr<ItemTearOffType> item = passItem;
|
|
|
| if (toDerived()->isImmutable()) {
|
| - exceptionState.throwDOMException(NoModificationAllowedError, ExceptionMessages::failedToExecute("initialize", Derived::propertyTypeName(), "The object is read-only."));
|
| + exceptionState.throwDOMException(NoModificationAllowedError, "The object is read-only.");
|
| return 0;
|
| }
|
|
|
| @@ -83,6 +83,7 @@ public:
|
| ownerList = Derived::upcastFrom(item->ownerList())->target();
|
|
|
| RefPtr<ItemPropertyType> value = toDerived()->target()->initialize(item->target(), ownerList);
|
| + item->setOwnerList(this);
|
| toDerived()->commitChange();
|
|
|
| return createItemTearOff(value.release());
|
| @@ -99,12 +100,12 @@ public:
|
| RefPtr<ItemTearOffType> item = passItem;
|
|
|
| if (toDerived()->isImmutable()) {
|
| - exceptionState.throwDOMException(NoModificationAllowedError, ExceptionMessages::failedToExecute("insertItemBefore", Derived::propertyTypeName(), "The object is read-only."));
|
| + exceptionState.throwDOMException(NoModificationAllowedError, "The object is read-only.");
|
| return 0;
|
| }
|
|
|
| if (!item) {
|
| - exceptionState.throwTypeError(ExceptionMessages::failedToExecute("insertItemBefore", Derived::propertyTypeName(), "An invalid item cannot be inserted to a list."));
|
| + exceptionState.throwTypeError("An invalid item cannot be inserted to a list.");
|
| return 0;
|
| }
|
|
|
| @@ -115,6 +116,7 @@ public:
|
| ownerList = Derived::upcastFrom(item->ownerList())->target();
|
|
|
| RefPtr<ItemPropertyType> value = toDerived()->target()->insertItemBefore(item->target(), ownerList, index);
|
| + item->setOwnerList(this);
|
| toDerived()->commitChange();
|
|
|
| return createItemTearOff(value.release());
|
| @@ -125,12 +127,12 @@ public:
|
| RefPtr<ItemTearOffType> item = passItem;
|
|
|
| if (toDerived()->isImmutable()) {
|
| - exceptionState.throwDOMException(NoModificationAllowedError, ExceptionMessages::failedToExecute("replaceItem", Derived::propertyTypeName(), "The object is read-only."));
|
| + exceptionState.throwDOMException(NoModificationAllowedError, "The object is read-only.");
|
| return 0;
|
| }
|
|
|
| if (!item) {
|
| - exceptionState.throwTypeError(ExceptionMessages::failedToExecute("replaceItem", Derived::propertyTypeName(), "An invalid item cannot be replaced with an existing list item."));
|
| + exceptionState.throwTypeError("An invalid item cannot be replaced with an existing list item.");
|
| return 0;
|
| }
|
|
|
| @@ -141,6 +143,7 @@ public:
|
| ownerList = Derived::upcastFrom(item->ownerList())->target();
|
|
|
| RefPtr<ItemPropertyType> value = toDerived()->target()->replaceItem(item->target(), ownerList, index, exceptionState);
|
| + item->setOwnerList(this);
|
| toDerived()->commitChange();
|
|
|
| return createItemTearOff(value.release());
|
| @@ -151,7 +154,7 @@ public:
|
| RefPtr<ItemPropertyType> value = toDerived()->target()->removeItem(index, exceptionState);
|
| toDerived()->commitChange();
|
|
|
| - return createItemTearOff(value.release());
|
| + return createItemTearOff(value.release(), false);
|
| }
|
|
|
| PassRefPtr<ItemTearOffType> appendItem(PassRefPtr<ItemTearOffType> passItem, ExceptionState& exceptionState)
|
| @@ -159,12 +162,12 @@ public:
|
| RefPtr<ItemTearOffType> item = passItem;
|
|
|
| if (toDerived()->isImmutable()) {
|
| - exceptionState.throwDOMException(NoModificationAllowedError, ExceptionMessages::failedToExecute("appendItem", Derived::propertyTypeName(), "The object is read-only."));
|
| + exceptionState.throwDOMException(NoModificationAllowedError, "The object is read-only.");
|
| return 0;
|
| }
|
|
|
| if (!item) {
|
| - exceptionState.throwTypeError(ExceptionMessages::failedToExecute("appendItem", Derived::propertyTypeName(), "An invalid item cannot be appended to a list."));
|
| + exceptionState.throwTypeError("An invalid item cannot be appended to a list.");
|
| return 0;
|
| }
|
|
|
| @@ -175,6 +178,7 @@ public:
|
| ownerList = Derived::upcastFrom(item->ownerList())->target();
|
|
|
| RefPtr<ItemPropertyType> value = toDerived()->target()->appendItem(item->target(), ownerList);
|
| + item->setOwnerList(this);
|
| toDerived()->commitChange();
|
|
|
| return createItemTearOff(value.release());
|
| @@ -206,18 +210,26 @@ protected:
|
| return newItem.release();
|
| }
|
|
|
| - PassRefPtr<ItemTearOffType> createItemTearOff(PassRefPtr<ItemPropertyType> value)
|
| + PassRefPtr<ItemTearOffType> createItemTearOff(PassRefPtr<ItemPropertyType> value, bool setOwnerList = true)
|
| {
|
| if (!value)
|
| return 0;
|
|
|
| RefPtr<ItemTearOffType> tearoff = ItemTearOffType::create(value, toDerived()->contextElement(), toDerived()->propertyIsAnimVal(), toDerived()->attributeName());
|
| - tearoff->setBelongingList(this);
|
| + if (setOwnerList)
|
| + tearoff->setOwnerList(this);
|
| return tearoff.release();
|
| }
|
|
|
| private:
|
| Derived* toDerived() { return static_cast<Derived*>(this); }
|
| +
|
| + static PassRefPtr<Derived> upcastFrom(PassRefPtr<NewSVGPropertyTearOffBase> passBase)
|
| + {
|
| + RefPtr<NewSVGPropertyTearOffBase> base = passBase;
|
| + ASSERT(base->type() == ListPropertyType::classType());
|
| + return static_pointer_cast<Derived>(base.release());
|
| + }
|
| };
|
|
|
| }
|
|
|