Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(756)

Unified Diff: third_party/WebKit/Source/core/svg/properties/SVGListPropertyHelper.h

Issue 2920103002: Tidy up SVGListPropertyHelper (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/svg/properties/SVGListPropertyHelper.h
diff --git a/third_party/WebKit/Source/core/svg/properties/SVGListPropertyHelper.h b/third_party/WebKit/Source/core/svg/properties/SVGListPropertyHelper.h
index 22f2279efa4b33cb2ec7095f5c4904b5a84ad176..528b556c62ab433d9c99d95cc5f4c6aa22986f5c 100644
--- a/third_party/WebKit/Source/core/svg/properties/SVGListPropertyHelper.h
+++ b/third_party/WebKit/Source/core/svg/properties/SVGListPropertyHelper.h
@@ -99,7 +99,9 @@ class SVGListPropertyHelper : public SVGPropertyHelper<Derived> {
new_item->SetOwnerList(this);
}
- bool operator==(const Derived&) const;
+ bool operator==(const Derived& other) const {
+ return values_ == other.values_;
+ }
bool operator!=(const Derived& other) const { return !(*this == other); }
bool IsEmpty() const { return !length(); }
@@ -142,38 +144,17 @@ class SVGListPropertyHelper : public SVGPropertyHelper<Derived> {
private:
inline bool CheckIndexBound(size_t, ExceptionState&);
- size_t FindItem(ItemPropertyType*);
HeapVector<Member<ItemPropertyType>> values_;
};
template <typename Derived, typename ItemProperty>
-bool SVGListPropertyHelper<Derived, ItemProperty>::operator==(
- const Derived& other) const {
- if (length() != other.length())
- return false;
-
- size_t size = length();
- for (size_t i = 0; i < size; ++i) {
- if (*at(i) != *other.at(i))
- return false;
- }
-
- return true;
-}
-
-template <typename Derived, typename ItemProperty>
void SVGListPropertyHelper<Derived, ItemProperty>::Clear() {
- // detach all list items as they are no longer part of this list
- typename HeapVector<Member<ItemPropertyType>>::const_iterator it =
- values_.begin();
- typename HeapVector<Member<ItemPropertyType>>::const_iterator it_end =
- values_.end();
- for (; it != it_end; ++it) {
- DCHECK_EQ((*it)->OwnerList(), this);
- (*it)->SetOwnerList(nullptr);
+ // Detach all list items as they are no longer part of this list.
+ for (auto& value : values_) {
+ DCHECK_EQ(value->OwnerList(), this);
+ value->SetOwnerList(nullptr);
}
-
values_.clear();
}
@@ -193,10 +174,7 @@ ItemProperty* SVGListPropertyHelper<Derived, ItemProperty>::GetItem(
ExceptionState& exception_state) {
if (!CheckIndexBound(index, exception_state))
return nullptr;
-
- DCHECK_LT(index, values_.size());
- DCHECK_EQ(values_.at(index)->OwnerList(), this);
- return values_.at(index);
+ return at(index);
}
template <typename Derived, typename ItemProperty>
@@ -214,7 +192,6 @@ ItemProperty* SVGListPropertyHelper<Derived, ItemProperty>::InsertItemBefore(
// front of the list.
values_.insert(index, new_item);
new_item->SetOwnerList(this);
-
return new_item;
}
@@ -222,16 +199,13 @@ template <typename Derived, typename ItemProperty>
ItemProperty* SVGListPropertyHelper<Derived, ItemProperty>::RemoveItem(
size_t index,
ExceptionState& exception_state) {
- if (index >= values_.size()) {
- exception_state.ThrowDOMException(
- kIndexSizeError, ExceptionMessages::IndexExceedsMaximumBound(
- "index", index, values_.size()));
+ if (!CheckIndexBound(index, exception_state))
return nullptr;
- }
+
DCHECK_EQ(values_.at(index)->OwnerList(), this);
ItemPropertyType* old_item = values_.at(index);
values_.erase(index);
- old_item->SetOwnerList(0);
+ old_item->SetOwnerList(nullptr);
return old_item;
}
@@ -240,7 +214,6 @@ ItemProperty* SVGListPropertyHelper<Derived, ItemProperty>::AppendItem(
ItemProperty* new_item) {
// Append the value and wrapper at the end of the list.
Append(new_item);
-
return new_item;
}
@@ -255,6 +228,7 @@ ItemProperty* SVGListPropertyHelper<Derived, ItemProperty>::ReplaceItem(
if (values_.IsEmpty()) {
// 'newItem' already lived in our list, we removed it, and now we're empty,
// which means there's nothing to replace.
+ // TODO(fs): This should not cause us to throw an exception.
pdr. 2017/06/04 17:05:08 Is this actually deadcode due to the CheckIndexBou
fs 2017/06/04 17:11:27 Yes, it certainly looks that way. Should check tha
exception_state.ThrowDOMException(
kIndexSizeError,
String::Format("Failed to replace the provided item at index %zu.",
@@ -265,10 +239,9 @@ ItemProperty* SVGListPropertyHelper<Derived, ItemProperty>::ReplaceItem(
// Update the value at the desired position 'index'.
Member<ItemPropertyType>& position = values_[index];
DCHECK_EQ(position->OwnerList(), this);
- position->SetOwnerList(0);
+ position->SetOwnerList(nullptr);
position = new_item;
new_item->SetOwnerList(this);
-
return new_item;
}
@@ -282,26 +255,14 @@ bool SVGListPropertyHelper<Derived, ItemProperty>::CheckIndexBound(
"index", index, values_.size()));
return false;
}
-
return true;
}
template <typename Derived, typename ItemProperty>
-size_t SVGListPropertyHelper<Derived, ItemProperty>::FindItem(
- ItemPropertyType* item) {
- return values_.Find(item);
-}
-
-template <typename Derived, typename ItemProperty>
void SVGListPropertyHelper<Derived, ItemProperty>::DeepCopy(Derived* from) {
Clear();
- typename HeapVector<Member<ItemPropertyType>>::const_iterator it =
- from->values_.begin();
- typename HeapVector<Member<ItemPropertyType>>::const_iterator it_end =
- from->values_.end();
- for (; it != it_end; ++it) {
- Append((*it)->Clone());
- }
+ for (const auto& from_value : from->values_)
+ Append(from_value->Clone());
}
template <typename Derived, typename ItemProperty>
@@ -325,16 +286,12 @@ bool SVGListPropertyHelper<Derived, ItemProperty>::AdjustFromToListValues(
} else {
DeepCopy(to_list);
}
-
return false;
}
DCHECK(!from_list_size || from_list_size == to_list_size);
- if (length() < to_list_size) {
- size_t padding_count = to_list_size - length();
- for (size_t i = 0; i < padding_count; ++i)
- Append(CreatePaddingItem());
- }
+ for (size_t i = length(); i < to_list_size; ++i)
+ Append(CreatePaddingItem());
return true;
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698