blob: 1ce5960e7a060052daf1df009133b6bb1627553c [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.
#include "chrome/browser/resource_coordinator/lifecycle_unit_source_base.h"
#include "chrome/browser/resource_coordinator/lifecycle_unit_base.h"
#include "chrome/browser/resource_coordinator/lifecycle_unit_source_observer.h"
namespace resource_coordinator {
LifecycleUnitSourceBase::LifecycleUnitSourceBase() = default;
LifecycleUnitSourceBase::~LifecycleUnitSourceBase() = default;
void LifecycleUnitSourceBase::AddObserver(
LifecycleUnitSourceObserver* observer) {
observers_.AddObserver(observer);
}
void LifecycleUnitSourceBase::RemoveObserver(
LifecycleUnitSourceObserver* observer) {
observers_.RemoveObserver(observer);
}
void LifecycleUnitSourceBase::NotifyLifecycleUnitBeingCreated(
LifecycleUnitBase* lifecycle_unit) {
++lifecycle_unit_count_;
if (lifecycle_unit_count_ == 1)
OnFirstLifecycleUnitCreated();
}
void LifecycleUnitSourceBase::NotifyLifecycleUnitCreated(
LifecycleUnitBase* lifecycle_unit) {
for (LifecycleUnitSourceObserver& observer : observers_) {
observer.OnLifecycleUnitCreated(lifecycle_unit);
}
}
void LifecycleUnitSourceBase::NotifyLifecycleUnitBeingDestroyed(
LifecycleUnitBase* lifecycle_unit) {
DCHECK_LT(0u, lifecycle_unit_count_);
--lifecycle_unit_count_;
if (lifecycle_unit_count_ == 0)
OnAllLifecycleUnitsDestroyed();
}
void LifecycleUnitSourceBase::OnFirstLifecycleUnitCreated() {}
void LifecycleUnitSourceBase::OnAllLifecycleUnitsDestroyed() {}
} // namespace resource_coordinator