| Index: services/resource_coordinator/coordination_unit/coordination_unit_manager.cc
|
| diff --git a/services/resource_coordinator/coordination_unit/coordination_unit_manager.cc b/services/resource_coordinator/coordination_unit/coordination_unit_manager.cc
|
| index 4eca58767eeb3174725d51177d10ad7b67428785..a553dc99be16c26e5d3783689ffbca9917258889 100644
|
| --- a/services/resource_coordinator/coordination_unit/coordination_unit_manager.cc
|
| +++ b/services/resource_coordinator/coordination_unit/coordination_unit_manager.cc
|
| @@ -4,16 +4,21 @@
|
|
|
| #include "services/resource_coordinator/coordination_unit/coordination_unit_manager.h"
|
|
|
| +#include <memory>
|
| +#include <utility>
|
| +
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| +#include "base/macros.h"
|
| +#include "services/resource_coordinator/coordination_unit/coordination_unit_graph_observer.h"
|
| +#include "services/resource_coordinator/coordination_unit/coordination_unit_impl.h"
|
| #include "services/resource_coordinator/coordination_unit/coordination_unit_provider_impl.h"
|
| +#include "services/resource_coordinator/public/cpp/coordination_unit_types.h"
|
| #include "services/service_manager/public/cpp/binder_registry.h"
|
| #include "services/service_manager/public/cpp/service_context.h"
|
|
|
| namespace resource_coordinator {
|
|
|
| -class CoordinationUnitImpl;
|
| -
|
| CoordinationUnitManager::CoordinationUnitManager() = default;
|
|
|
| CoordinationUnitManager::~CoordinationUnitManager() = default;
|
| @@ -22,7 +27,27 @@ void CoordinationUnitManager::OnStart(
|
| service_manager::BinderRegistry* registry,
|
| service_manager::ServiceContextRefFactory* service_ref_factory) {
|
| registry->AddInterface(base::Bind(&CoordinationUnitProviderImpl::Create,
|
| - base::Unretained(service_ref_factory)));
|
| + base::Unretained(service_ref_factory),
|
| + base::Unretained(this)));
|
| +}
|
| +
|
| +void CoordinationUnitManager::RegisterObserver(
|
| + std::unique_ptr<CoordinationUnitGraphObserver> observer) {
|
| + observers_.push_back(std::move(observer));
|
| +}
|
| +
|
| +void CoordinationUnitManager::NotifyObserversCoordinationUnitCreated(
|
| + CoordinationUnitImpl* coordination_unit) {
|
| + for (auto& observer : observers_) {
|
| + if (observer->ShouldObserve(coordination_unit)) {
|
| + observer->OnCoordinationUnitCreated(coordination_unit);
|
| + }
|
| + }
|
| +}
|
| +
|
| +void CoordinationUnitManager::NotifyObserversCoordinationUnitWillBeDestroyed(
|
| + CoordinationUnitImpl* coordination_unit) {
|
| + coordination_unit->WillBeDestroyed();
|
| }
|
|
|
| } // namespace resource_coordinator
|
|
|