blob: 1cf41e1583bee1ec4ef44b08d3d56a902155481b [file] [log] [blame]
// Copyright 2016 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 "components/exo/wm_helper.h"
namespace exo {
namespace {
WMHelper* g_instance = nullptr;
} // namespace
WMHelper::LifetimeManager::LifetimeManager() = default;
WMHelper::LifetimeManager::~LifetimeManager() {
for (Observer& observer : observers_)
observer.OnDestroyed();
}
void WMHelper::LifetimeManager::AddObserver(Observer* observer) {
observers_.AddObserver(observer);
}
void WMHelper::LifetimeManager::RemoveObserver(Observer* observer) {
observers_.RemoveObserver(observer);
}
WMHelper::WMHelper() {
DCHECK(!g_instance);
g_instance = this;
}
WMHelper::~WMHelper() {
DCHECK(g_instance);
g_instance = nullptr;
}
void WMHelper::AddExoWindowObserver(ExoWindowObserver* observer) {
exo_window_observers_.AddObserver(observer);
}
void WMHelper::RemoveExoWindowObserver(ExoWindowObserver* observer) {
exo_window_observers_.RemoveObserver(observer);
}
void WMHelper::AddPowerObserver(PowerObserver* observer) {
NOTREACHED();
}
void WMHelper::RemovePowerObserver(PowerObserver* observer) {
NOTREACHED();
}
void WMHelper::NotifyExoWindowCreated(aura::Window* window) {
for (auto& obs : exo_window_observers_)
obs.OnExoWindowCreated(window);
}
// static
WMHelper* WMHelper::GetInstance() {
DCHECK(g_instance);
return g_instance;
}
// static
bool WMHelper::HasInstance() {
return !!g_instance;
}
void WMHelper::RegisterAppPropertyResolver(
std::unique_ptr<AppPropertyResolver> resolver) {
resolver_list_.push_back(std::move(resolver));
}
void WMHelper::PopulateAppProperties(
const AppPropertyResolver::Params& params,
ui::PropertyHandler& out_properties_container) {
for (auto& resolver : resolver_list_) {
resolver->PopulateProperties(params, out_properties_container);
}
}
} // namespace exo