blob: 829ceecec915993e2140ec71e22cb778881887ea [file] [log] [blame]
// Copyright 2017 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 CHROME_BROWSER_RESOURCE_COORDINATOR_LIFECYCLE_UNIT_SOURCE_BASE_H_
#define CHROME_BROWSER_RESOURCE_COORDINATOR_LIFECYCLE_UNIT_SOURCE_BASE_H_
#include "base/macros.h"
#include "base/observer_list.h"
#include "chrome/browser/resource_coordinator/lifecycle_unit_source.h"
namespace resource_coordinator {
class LifecycleUnit;
// Base class for a class that creates and destroys LifecycleUnits.
class LifecycleUnitSourceBase : public LifecycleUnitSource {
public:
LifecycleUnitSourceBase();
~LifecycleUnitSourceBase() override;
// LifecycleUnitSource:
void AddObserver(LifecycleUnitSourceObserver* observer) override;
void RemoveObserver(LifecycleUnitSourceObserver* observer) override;
protected:
// Notifies observers that a LifecycleUnit was created / destroyed.
void NotifyLifecycleUnitCreated(LifecycleUnit* lifecycle_unit);
void NotifyLifecycleUnitDestroyed(LifecycleUnit* lifecycle_unit);
private:
// Observers notified when a LifecycleUnit is created or destroyed.
base::ObserverList<LifecycleUnitSourceObserver> observers_;
DISALLOW_COPY_AND_ASSIGN(LifecycleUnitSourceBase);
};
} // namespace resource_coordinator
#endif // CHROME_BROWSER_RESOURCE_COORDINATOR_LIFECYCLE_UNIT_SOURCE_BASE_H_