blob: 5d117d10f2a35efdc6a661b9fbd8ebe0641b7efd [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_ash.h"
#include "ash/common/accessibility_delegate.h"
#include "ash/common/system/tray/system_tray_notifier.h"
#include "ash/common/wm/maximize_mode/maximize_mode_controller.h"
#include "ash/common/wm_shell.h"
#include "ash/shell.h"
#include "base/memory/singleton.h"
#include "ui/aura/client/focus_client.h"
#include "ui/display/manager/display_manager.h"
#include "ui/events/devices/device_data_manager.h"
#include "ui/wm/public/activation_client.h"
namespace exo {
////////////////////////////////////////////////////////////////////////////////
// WMHelperAsh, public:
WMHelperAsh::WMHelperAsh() {
ash::WmShell::Get()->AddShellObserver(this);
ash::Shell::GetInstance()->activation_client()->AddObserver(this);
aura::client::FocusClient* focus_client =
aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow());
focus_client->AddObserver(this);
ui::DeviceDataManager::GetInstance()->AddObserver(this);
ash::WmShell::Get()->system_tray_notifier()->AddAccessibilityObserver(this);
}
WMHelperAsh::~WMHelperAsh() {
if (!ash::Shell::HasInstance())
return;
aura::client::FocusClient* focus_client =
aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow());
focus_client->RemoveObserver(this);
ash::Shell::GetInstance()->activation_client()->RemoveObserver(this);
ash::WmShell::Get()->RemoveShellObserver(this);
ui::DeviceDataManager::GetInstance()->RemoveObserver(this);
ash::WmShell::Get()->system_tray_notifier()->RemoveAccessibilityObserver(
this);
}
////////////////////////////////////////////////////////////////////////////////
// WMHelperAsh, private:
const display::ManagedDisplayInfo WMHelperAsh::GetDisplayInfo(
int64_t display_id) const {
return ash::Shell::GetInstance()->display_manager()->GetDisplayInfo(
display_id);
}
aura::Window* WMHelperAsh::GetContainer(int container_id) {
return ash::Shell::GetContainer(ash::Shell::GetTargetRootWindow(),
container_id);
}
aura::Window* WMHelperAsh::GetActiveWindow() const {
return ash::Shell::GetInstance()->activation_client()->GetActiveWindow();
}
aura::Window* WMHelperAsh::GetFocusedWindow() const {
aura::client::FocusClient* focus_client =
aura::client::GetFocusClient(ash::Shell::GetPrimaryRootWindow());
return focus_client->GetFocusedWindow();
}
ui::CursorSetType WMHelperAsh::GetCursorSet() const {
return ash::Shell::GetInstance()->cursor_manager()->GetCursorSet();
}
void WMHelperAsh::AddPreTargetHandler(ui::EventHandler* handler) {
ash::Shell::GetInstance()->AddPreTargetHandler(handler);
}
void WMHelperAsh::PrependPreTargetHandler(ui::EventHandler* handler) {
ash::Shell::GetInstance()->PrependPreTargetHandler(handler);
}
void WMHelperAsh::RemovePreTargetHandler(ui::EventHandler* handler) {
ash::Shell::GetInstance()->RemovePreTargetHandler(handler);
}
void WMHelperAsh::AddPostTargetHandler(ui::EventHandler* handler) {
ash::Shell::GetInstance()->AddPostTargetHandler(handler);
}
void WMHelperAsh::RemovePostTargetHandler(ui::EventHandler* handler) {
ash::Shell::GetInstance()->RemovePostTargetHandler(handler);
}
bool WMHelperAsh::IsMaximizeModeWindowManagerEnabled() const {
return ash::WmShell::Get()
->maximize_mode_controller()
->IsMaximizeModeWindowManagerEnabled();
}
bool WMHelperAsh::IsSpokenFeedbackEnabled() const {
return ash::WmShell::Get()
->accessibility_delegate()
->IsSpokenFeedbackEnabled();
}
void WMHelperAsh::PlayEarcon(int sound_key) const {
return ash::WmShell::Get()->accessibility_delegate()->PlayEarcon(sound_key);
}
void WMHelperAsh::OnWindowActivated(
aura::client::ActivationChangeObserver::ActivationReason reason,
aura::Window* gained_active,
aura::Window* lost_active) {
NotifyWindowActivated(gained_active, lost_active);
}
void WMHelperAsh::OnWindowFocused(aura::Window* gained_focus,
aura::Window* lost_focus) {
NotifyWindowFocused(gained_focus, lost_focus);
}
void WMHelperAsh::OnCursorVisibilityChanged(bool is_visible) {
NotifyCursorVisibilityChanged(is_visible);
}
void WMHelperAsh::OnCursorSetChanged(ui::CursorSetType cursor_set) {
NotifyCursorSetChanged(cursor_set);
}
void WMHelperAsh::OnAccessibilityModeChanged(
ash::AccessibilityNotificationVisibility notify) {
NotifyAccessibilityModeChanged();
}
void WMHelperAsh::OnMaximizeModeStarted() {
NotifyMaximizeModeStarted();
}
void WMHelperAsh::OnMaximizeModeEnded() {
NotifyMaximizeModeEnded();
}
void WMHelperAsh::OnKeyboardDeviceConfigurationChanged() {
NotifyKeyboardDeviceConfigurationChanged();
}
} // namespace exo