blob: 8b8f9a09aa7076d19ef280b1fcd0382c9ba04d65 [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 "ash/common/wm/immersive_context_ash.h"
#include "ash/common/shelf/wm_shelf.h"
#include "ash/common/wm/window_state.h"
#include "ash/common/wm_lookup.h"
#include "ash/common/wm_shell.h"
#include "ash/common/wm_window.h"
#include "ash/shared/immersive_fullscreen_controller.h"
#include "base/logging.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
namespace ash {
ImmersiveContextAsh::ImmersiveContextAsh() {}
ImmersiveContextAsh::~ImmersiveContextAsh() {}
void ImmersiveContextAsh::InstallResizeHandleWindowTargeter(
ImmersiveFullscreenController* controller) {
WmWindow* window = WmLookup::Get()->GetWindowForWidget(controller->widget());
window->InstallResizeHandleWindowTargeter(controller);
}
void ImmersiveContextAsh::OnEnteringOrExitingImmersive(
ImmersiveFullscreenController* controller,
bool entering) {
WmWindow* window = WmLookup::Get()->GetWindowForWidget(controller->widget());
wm::WindowState* window_state = window->GetWindowState();
// Auto hide the shelf in immersive fullscreen instead of hiding it.
window_state->set_hide_shelf_when_fullscreen(!entering);
// Update the window's immersive mode state for the window manager.
window_state->set_in_immersive_fullscreen(entering);
for (WmWindow* root_window : WmShell::Get()->GetAllRootWindows())
WmShelf::ForWindow(root_window)->UpdateVisibilityState();
}
gfx::Rect ImmersiveContextAsh::GetDisplayBoundsInScreen(views::Widget* widget) {
WmWindow* window = WmLookup::Get()->GetWindowForWidget(widget);
return window->GetDisplayNearestWindow().bounds();
}
void ImmersiveContextAsh::AddPointerWatcher(
views::PointerWatcher* watcher,
views::PointerWatcherEventTypes events) {
WmShell::Get()->AddPointerWatcher(watcher, events);
}
void ImmersiveContextAsh::RemovePointerWatcher(views::PointerWatcher* watcher) {
WmShell::Get()->RemovePointerWatcher(watcher);
}
bool ImmersiveContextAsh::DoesAnyWindowHaveCapture() {
return WmShell::Get()->GetCaptureWindow() != nullptr;
}
bool ImmersiveContextAsh::IsMouseEventsEnabled() {
return WmShell::Get()->IsMouseEventsEnabled();
}
} // namespace ash