// 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 "mojo/services/public/cpp/view_manager/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
