Chromium Code Reviews| Index: services/resource_coordinator/coordination_unit/coordination_unit_impl.cc |
| diff --git a/services/resource_coordinator/coordination_unit/coordination_unit_impl.cc b/services/resource_coordinator/coordination_unit/coordination_unit_impl.cc |
| index c212a708c02b3a55c7bc9e9519460391a83fef57..233ffd780579bc5a0502cd1c442b01b96cc317ea 100644 |
| --- a/services/resource_coordinator/coordination_unit/coordination_unit_impl.cc |
| +++ b/services/resource_coordinator/coordination_unit/coordination_unit_impl.cc |
| @@ -157,9 +157,26 @@ bool CoordinationUnitImpl::AddChild(CoordinationUnitImpl* child) { |
| return children_.count(child) ? false : children_.insert(child).second; |
| } |
| -void CoordinationUnitImpl::RemoveChild(CoordinationUnitImpl* child) { |
| +void CoordinationUnitImpl::RemoveChild(const CoordinationUnitID& child_id) { |
| + auto child_iter = g_cu_map().find(child_id); |
| + if (child_iter != g_cu_map().end()) { |
|
nasko
2017/06/09 22:19:13
nit: Invert the check and return early. Leads to l
matthalp
2017/06/09 22:31:58
Good suggestion -- Done.
|
| + CoordinationUnitImpl* child = child_iter->second; |
| + if (!HasChild(child)) { |
| + return; |
| + } |
| + |
| + DCHECK(child->id_ == child_id); |
| + DCHECK(child != this); |
| + |
| + if (RemoveChild(child)) { |
| + child->RemoveParent(this); |
| + } |
| + } |
| +} |
| + |
| +bool CoordinationUnitImpl::RemoveChild(CoordinationUnitImpl* child) { |
| size_t children_removed = children_.erase(child); |
| - DCHECK_EQ(1u, children_removed); |
| + return children_removed > 0; |
| } |
| void CoordinationUnitImpl::AddParent(CoordinationUnitImpl* parent) { |