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

Unified Diff: ui/aura/window_tracker.cc

Issue 1484383003: Use WindowTracker when resizing root window as it may delete other window in unit tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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
Index: ui/aura/window_tracker.cc
diff --git a/ui/aura/window_tracker.cc b/ui/aura/window_tracker.cc
index 9653e5fcf9ea57dc2b147e0e2f34b6d041cdef9b..5ff1a0fc429e842a1102296d74657a8249263a63 100644
--- a/ui/aura/window_tracker.cc
+++ b/ui/aura/window_tracker.cc
@@ -11,9 +11,15 @@ namespace aura {
WindowTracker::WindowTracker() {
}
+WindowTracker::WindowTracker(const WindowList& windows) {
+ // |windows| may contain dups, so call Add() instead of insert().
+ for (auto iter = windows.begin(); iter != windows.end(); iter++)
+ Add(*iter);
+}
+
WindowTracker::~WindowTracker() {
- for (Windows::iterator i = windows_.begin(); i != windows_.end(); ++i)
- (*i)->RemoveObserver(this);
+ while (has_windows())
+ Pop()->RemoveObserver(this);
}
void WindowTracker::Add(Window* window) {
@@ -35,6 +41,13 @@ bool WindowTracker::Contains(Window* window) {
return windows_.count(window) > 0;
}
+aura::Window* WindowTracker::Pop() {
+ DCHECK(!windows_.empty());
+ aura::Window* window = *windows_.begin();
+ Remove(window);
+ return window;
+}
+
void WindowTracker::OnWindowDestroying(Window* window) {
DCHECK_GT(windows_.count(window), 0u);
Remove(window);

Powered by Google App Engine
This is Rietveld 408576698