#include "ui/views/widget/widget_enumerator.h"
#include <utility>
#include "base/check.h"
#include "base/containers/contains.h"
namespace views {
WidgetEnumerator::WidgetEnumerator(Widget::Widgets widgets)
: widgets_(std::move(widgets)) {
for (Widget* widget : widgets_) {
widget->AddObserver(this);
}
}
WidgetEnumerator::~WidgetEnumerator() {
for (Widget* widget : widgets_) {
widget->RemoveObserver(this);
}
}
void WidgetEnumerator::OnWidgetDestroying(Widget* widget) {
CHECK(base::Contains(widgets_, widget));
widget->RemoveObserver(this);
widgets_.erase(widget);
}
bool WidgetEnumerator::IsEmpty() const {
return widgets_.empty();
}
Widget* WidgetEnumerator::Next() {
Widget* widget = *widgets_.begin();
widget->RemoveObserver(this);
widgets_.erase(widgets_.begin());
return widget;
}
}