blob: 4fa6ead9468b5d4e527f99a39bca7823ceb9a404 [file] [log] [blame]
// Copyright 2018 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_base.h"
#include "chrome/browser/resource_coordinator/lifecycle_unit_observer.h"
#include "chrome/browser/resource_coordinator/time.h"
namespace resource_coordinator {
LifecycleUnitBase::LifecycleUnitBase() = default;
LifecycleUnitBase::~LifecycleUnitBase() = default;
int32_t LifecycleUnitBase::GetID() const {
return id_;
}
LifecycleUnit::State LifecycleUnitBase::GetState() const {
return state_;
}
base::TimeTicks LifecycleUnitBase::GetLastVisibilityChangeTime() const {
return last_visibility_change_time_;
}
void LifecycleUnitBase::AddObserver(LifecycleUnitObserver* observer) {
observers_.AddObserver(observer);
}
void LifecycleUnitBase::RemoveObserver(LifecycleUnitObserver* observer) {
observers_.RemoveObserver(observer);
}
void LifecycleUnitBase::SetState(State state) {
if (state == state_)
return;
state_ = state;
for (auto& observer : observers_)
observer.OnLifecycleUnitStateChanged(this);
}
void LifecycleUnitBase::OnLifecycleUnitVisibilityChanged(
content::Visibility visibility) {
for (auto& observer : observers_)
observer.OnLifecycleUnitVisibilityChanged(this, visibility);
last_visibility_change_time_ = NowTicks();
}
void LifecycleUnitBase::OnLifecycleUnitDestroyed() {
for (auto& observer : observers_)
observer.OnLifecycleUnitDestroyed(this);
}
int32_t LifecycleUnitBase::next_id_ = 0;
} // namespace resource_coordinator