// Copyright 2014 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 "view_manager/cpp/view_tracker.h" namespace mojo { ViewTracker::ViewTracker() {} ViewTracker::~ViewTracker() { for (Views::iterator i = views_.begin(); i != views_.end(); ++i) (*i)->RemoveObserver(this); } void ViewTracker::Add(View* view) { if (views_.count(view)) return; view->AddObserver(this); views_.insert(view); } void ViewTracker::Remove(View* view) { if (views_.count(view)) { views_.erase(view); view->RemoveObserver(this); } } bool ViewTracker::Contains(View* view) { return views_.count(view) > 0; } void ViewTracker::OnViewDestroying(View* view) { DCHECK_GT(views_.count(view), 0u); Remove(view); } } // namespace mojo