| 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
|
|
|