// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ui/aura/window_tracker.h" #include "ui/aura/window.h" namespace aura { WindowTracker::WindowTracker() { } WindowTracker::~WindowTracker() { for (Windows::iterator i = windows_.begin(); i != windows_.end(); ++i) (*i)->RemoveObserver(this); } void WindowTracker::Add(Window* window) { if (windows_.count(window)) return; window->AddObserver(this); windows_.insert(window); } void WindowTracker::Remove(Window* window) { if (windows_.count(window)) { windows_.erase(window); window->RemoveObserver(this); } } bool WindowTracker::Contains(Window* window) { return windows_.count(window) > 0; } void WindowTracker::OnWindowDestroying(Window* window) { DCHECK_GT(windows_.count(window), 0u); Remove(window); } } // namespace aura