blob: 7f0cfcffe7264f5d77f685f28bacf65df824f359 [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"
#include "base/memory/ptr_util.h"
namespace exo {
namespace {
WMHelper* g_instance = nullptr;
}
////////////////////////////////////////////////////////////////////////////////
// WMHelper, public:
WMHelper::WMHelper() {}
WMHelper::~WMHelper() {}
// static
void WMHelper::SetInstance(WMHelper* helper) {
DCHECK_NE(!!helper, !!g_instance);
g_instance = helper;
}
// static
WMHelper* WMHelper::GetInstance() {
DCHECK(g_instance);
return g_instance;
}
void WMHelper::AddActivationObserver(ActivationObserver* observer) {
activation_observers_.AddObserver(observer);
}
void WMHelper::RemoveActivationObserver(ActivationObserver* observer) {
activation_observers_.RemoveObserver(observer);
}
void WMHelper::AddFocusObserver(FocusObserver* observer) {
focus_observers_.AddObserver(observer);
}
void WMHelper::RemoveFocusObserver(FocusObserver* observer) {
focus_observers_.RemoveObserver(observer);
}
void WMHelper::AddCursorObserver(CursorObserver* observer) {
cursor_observers_.AddObserver(observer);
}
void WMHelper::RemoveCursorObserver(CursorObserver* observer) {
cursor_observers_.RemoveObserver(observer);
}
void WMHelper::AddMaximizeModeObserver(MaximizeModeObserver* observer) {
maximize_mode_observers_.AddObserver(observer);
}
void WMHelper::RemoveMaximizeModeObserver(MaximizeModeObserver* observer) {
maximize_mode_observers_.RemoveObserver(observer);
}
void WMHelper::AddAccessibilityObserver(AccessibilityObserver* observer) {
accessibility_observers_.AddObserver(observer);
}
void WMHelper::RemoveAccessibilityObserver(AccessibilityObserver* observer) {
accessibility_observers_.RemoveObserver(observer);
}
void WMHelper::AddInputDeviceEventObserver(InputDeviceEventObserver* observer) {
input_device_event_observers_.AddObserver(observer);
}
void WMHelper::RemoveInputDeviceEventObserver(
InputDeviceEventObserver* observer) {
input_device_event_observers_.RemoveObserver(observer);
}
void WMHelper::AddDisplayConfigurationObserver(
DisplayConfigurationObserver* observer) {
display_config_observers_.AddObserver(observer);
}
void WMHelper::RemoveDisplayConfigurationObserver(
DisplayConfigurationObserver* observer) {
display_config_observers_.RemoveObserver(observer);
}
void WMHelper::NotifyWindowActivated(aura::Window* gained_active,
aura::Window* lost_active) {
for (ActivationObserver& observer : activation_observers_)
observer.OnWindowActivated(gained_active, lost_active);
}
void WMHelper::NotifyWindowFocused(aura::Window* gained_focus,
aura::Window* lost_focus) {
for (FocusObserver& observer : focus_observers_)
observer.OnWindowFocused(gained_focus, lost_focus);
}
void WMHelper::NotifyCursorVisibilityChanged(bool is_visible) {
for (CursorObserver& observer : cursor_observers_)
observer.OnCursorVisibilityChanged(is_visible);
}
void WMHelper::NotifyCursorSetChanged(ui::CursorSetType cursor_set) {
for (CursorObserver& observer : cursor_observers_)
observer.OnCursorSetChanged(cursor_set);
}
void WMHelper::NotifyMaximizeModeStarted() {
for (MaximizeModeObserver& observer : maximize_mode_observers_)
observer.OnMaximizeModeStarted();
}
void WMHelper::NotifyMaximizeModeEnding() {
for (MaximizeModeObserver& observer : maximize_mode_observers_)
observer.OnMaximizeModeEnding();
}
void WMHelper::NotifyMaximizeModeEnded() {
for (MaximizeModeObserver& observer : maximize_mode_observers_)
observer.OnMaximizeModeEnded();
}
void WMHelper::NotifyAccessibilityModeChanged() {
for (AccessibilityObserver& observer : accessibility_observers_)
observer.OnAccessibilityModeChanged();
}
void WMHelper::NotifyKeyboardDeviceConfigurationChanged() {
for (InputDeviceEventObserver& observer : input_device_event_observers_)
observer.OnKeyboardDeviceConfigurationChanged();
}
void WMHelper::NotifyDisplayConfigurationChanged() {
for (DisplayConfigurationObserver& observer : display_config_observers_)
observer.OnDisplayConfigurationChanged();
}
} // namespace exo