Index: Source/core/svg/properties/SVGListPropertyHelper.h |
diff --git a/Source/core/svg/properties/SVGListPropertyHelper.h b/Source/core/svg/properties/SVGListPropertyHelper.h |
index a6fd4d713bc2ef6d9031351b66ccb2211cea05ee..76e6c8b1601e3fd88138cbde08dcf1439b80cd6e 100644 |
--- a/Source/core/svg/properties/SVGListPropertyHelper.h |
+++ b/Source/core/svg/properties/SVGListPropertyHelper.h |
@@ -171,7 +171,6 @@ protected: |
private: |
inline bool checkIndexBound(size_t, ExceptionState&); |
- bool removeFromOldOwnerListAndAdjustIndex(PassRefPtrWillBeRawPtr<ItemPropertyType>, size_t* indexToModify); |
size_t findItem(PassRefPtrWillBeRawPtr<ItemPropertyType>); |
WillBeHeapVector<RefPtrWillBeMember<ItemPropertyType>> m_values; |
@@ -221,9 +220,6 @@ PassRefPtrWillBeRawPtr<ItemProperty> SVGListPropertyHelper<Derived, ItemProperty |
{ |
RefPtrWillBeRawPtr<ItemPropertyType> newItem = passNewItem; |
- // Spec: If the inserted item is already in a list, it is removed from its previous list before it is inserted into this list. |
- removeFromOldOwnerListAndAdjustIndex(newItem, 0); |
- |
// Spec: Clears all existing current items from the list and re-initializes the list to hold the single item specified by the parameter. |
clear(); |
append(newItem); |
@@ -250,12 +246,6 @@ PassRefPtrWillBeRawPtr<ItemProperty> SVGListPropertyHelper<Derived, ItemProperty |
RefPtrWillBeRawPtr<ItemPropertyType> newItem = passNewItem; |
- // Spec: If newItem is already in a list, it is removed from its previous list before it is inserted into this list. |
- if (!removeFromOldOwnerListAndAdjustIndex(newItem, &index)) { |
- // Inserting the item before itself is a no-op. |
- return newItem.release(); |
- } |
- |
// Spec: Inserts a new item into the list at the specified position. The index of the item before which the new item is to be |
// inserted. The first item is number 0. If the index is equal to 0, then the new item is inserted at the front of the list. |
m_values.insert(index, newItem); |
@@ -283,9 +273,6 @@ PassRefPtrWillBeRawPtr<ItemProperty> SVGListPropertyHelper<Derived, ItemProperty |
{ |
RefPtrWillBeRawPtr<ItemPropertyType> newItem = passNewItem; |
- // Spec: If newItem is already in a list, it is removed from its previous list before it is inserted into this list. |
- removeFromOldOwnerListAndAdjustIndex(newItem, 0); |
- |
// Append the value and wrapper at the end of the list. |
append(newItem); |
@@ -300,13 +287,6 @@ PassRefPtrWillBeRawPtr<ItemProperty> SVGListPropertyHelper<Derived, ItemProperty |
RefPtrWillBeRawPtr<ItemPropertyType> newItem = passNewItem; |
- // Spec: If newItem is already in a list, it is removed from its previous list before it is inserted into this list. |
- // Spec: If the item is already in this list, note that the index of the item to replace is before the removal of the item. |
- if (!removeFromOldOwnerListAndAdjustIndex(newItem, &index)) { |
- // Replacing the item with itself is a no-op. |
- return newItem.release(); |
- } |
- |
if (m_values.isEmpty()) { |
// 'newItem' already lived in our list, we removed it, and now we're empty, which means there's nothing to replace. |
exceptionState.throwDOMException(IndexSizeError, String::format("Failed to replace the provided item at index %zu.", index)); |
@@ -335,41 +315,6 @@ bool SVGListPropertyHelper<Derived, ItemProperty>::checkIndexBound(size_t index, |
} |
template<typename Derived, typename ItemProperty> |
-bool SVGListPropertyHelper<Derived, ItemProperty>::removeFromOldOwnerListAndAdjustIndex(PassRefPtrWillBeRawPtr<ItemPropertyType> passItem, size_t* indexToModify) |
-{ |
- RefPtrWillBeRawPtr<ItemPropertyType> item = passItem; |
- ASSERT(item); |
- RefPtrWillBeRawPtr<Derived> ownerList = toDerived(item->ownerList()); |
- if (!ownerList) |
- return true; |
- |
- // Spec: If newItem is already in a list, it is removed from its previous list before it is inserted into this list. |
- // 'newItem' is already living in another list. If it's not our list, synchronize the other lists wrappers after the removal. |
- bool livesInOtherList = ownerList.get() != this; |
- size_t indexToRemove = ownerList->findItem(item); |
- ASSERT(indexToRemove != WTF::kNotFound); |
- |
- // Do not remove newItem if already in this list at the target index. |
- if (!livesInOtherList && indexToModify && indexToRemove == *indexToModify) |
- return false; |
- |
- ownerList->removeItem(indexToRemove, ASSERT_NO_EXCEPTION); |
- |
- if (!indexToModify) |
- return true; |
- |
- // If the item lived in our list, adjust the insertion index. |
- if (!livesInOtherList) { |
- size_t& index = *indexToModify; |
- // Spec: If the item is already in this list, note that the index of the item to (replace|insert before) is before the removal of the item. |
- if (static_cast<size_t>(indexToRemove) < index) |
- --index; |
- } |
- |
- return true; |
-} |
- |
-template<typename Derived, typename ItemProperty> |
size_t SVGListPropertyHelper<Derived, ItemProperty>::findItem(PassRefPtrWillBeRawPtr<ItemPropertyType> item) |
{ |
return m_values.find(item); |