15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/window_tracker.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/window.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura { 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WindowTracker::WindowTracker() { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WindowTracker::~WindowTracker() { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (Windows::iterator i = windows_.begin(); i != windows_.end(); ++i) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (*i)->RemoveObserver(this); 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WindowTracker::Add(Window* window) { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (windows_.count(window)) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) window->AddObserver(this); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) windows_.insert(window); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WindowTracker::Remove(Window* window) { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (windows_.count(window)) { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) windows_.erase(window); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) window->RemoveObserver(this); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WindowTracker::Contains(Window* window) { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return windows_.count(window) > 0; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WindowTracker::OnWindowDestroying(Window* window) { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_GT(windows_.count(window), 0u); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Remove(window); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace aura 44