// 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. #ifndef MOJO_SERVICES_VIEW_MANAGER_CPP_VIEW_TRACKER_H_ #define MOJO_SERVICES_VIEW_MANAGER_CPP_VIEW_TRACKER_H_ #include #include #include "mojo/public/cpp/system/macros.h" #include "view_manager/cpp/view_observer.h" namespace mojo { class ViewTracker : public ViewObserver { public: using Views = std::set; ViewTracker(); ~ViewTracker() override; // Returns the set of views being observed. const std::set& views() const { return views_; } // Adds |view| to the set of Views being tracked. void Add(View* view); // Removes |view| from the set of views being tracked. void Remove(View* view); // Returns true if |view| was previously added and has not been removed or // deleted. bool Contains(View* view); // ViewObserver overrides: void OnViewDestroying(View* view) override; private: Views views_; MOJO_DISALLOW_COPY_AND_ASSIGN(ViewTracker); }; } // namespace mojo #endif // MOJO_SERVICES_VIEW_MANAGER_CPP_VIEW_TRACKER_H_