Index: ui/base/sequential_id_generator.cc |
diff --git a/ui/base/sequential_id_generator.cc b/ui/base/sequential_id_generator.cc |
index 492efe5af8219d83382a4f7e6793fb38d596e32a..ac3b1a0ed41d0f1bf45e18a8effdcfdfbba181ce 100644 |
--- a/ui/base/sequential_id_generator.cc |
+++ b/ui/base/sequential_id_generator.cc |
@@ -40,7 +40,7 @@ uint32 SequentialIDGenerator::GetGeneratedID(uint32 number) { |
if (find != number_to_id_.end()) |
return find->second; |
- int id = GetNextAvailableSlot(); |
+ int id = GetNextAvailableID(); |
number_to_id_.insert(std::make_pair(number, id)); |
id_to_number_.insert(std::make_pair(id, number)); |
return id; |
@@ -51,18 +51,17 @@ bool SequentialIDGenerator::HasGeneratedIDFor(uint32 number) const { |
} |
void SequentialIDGenerator::ReleaseGeneratedID(uint32 id) { |
- if (id < min_available_id_) { |
- min_available_id_ = id; |
- DCHECK_GE(min_available_id_, min_id_); |
- } |
+ UpdateNextAvailableIDAfterRelease(id); |
Remove(id, &id_to_number_, &number_to_id_); |
} |
void SequentialIDGenerator::ReleaseNumber(uint32 number) { |
+ DCHECK_GT(number_to_id_.count(number), 0U); |
+ UpdateNextAvailableIDAfterRelease(number_to_id_[number]); |
Remove(number, &number_to_id_, &id_to_number_); |
} |
-uint32 SequentialIDGenerator::GetNextAvailableSlot() { |
+uint32 SequentialIDGenerator::GetNextAvailableID() { |
const uint32 kMaxID = 128; |
while (id_to_number_.count(min_available_id_) > 0 && |
min_available_id_ < kMaxID) { |
@@ -73,4 +72,11 @@ uint32 SequentialIDGenerator::GetNextAvailableSlot() { |
return min_available_id_; |
} |
+void SequentialIDGenerator::UpdateNextAvailableIDAfterRelease(uint32 id) { |
+ if (id < min_available_id_) { |
+ min_available_id_ = id; |
+ DCHECK_GE(min_available_id_, min_id_); |
+ } |
+} |
+ |
} // namespace ui |