blob: e05e98f773779695254be5ced97083c3c49e676d [file] [log] [blame]
// Copyright 2022 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/custom_window_state_delegate.h"
#include "ash/shell.h"
#include "ash/shell_delegate.h"
#include "ash/wm/window_state.h"
#include "components/exo/shell_surface_presentation_time_recorder.h"
#include "ui/base/hit_test.h"
namespace exo {
CustomWindowStateDelegate::CustomWindowStateDelegate()
: CustomWindowStateDelegate(nullptr) {}
CustomWindowStateDelegate::CustomWindowStateDelegate(
ShellSurface* shell_surface)
: shell_surface_(shell_surface) {}
CustomWindowStateDelegate::~CustomWindowStateDelegate() = default;
bool CustomWindowStateDelegate::ToggleFullscreen(
ash::WindowState* window_state) {
return false;
}
void CustomWindowStateDelegate::ToggleLockedFullscreen(
ash::WindowState* window_state) {
// Sets up the shell environment as appropriate for locked Lacros or Ash
// chrome sessions including disabling ARC.
ash::Shell::Get()->shell_delegate()->SetUpEnvironmentForLockedFullscreen(
window_state->IsPinned());
}
std::unique_ptr<ash::PresentationTimeRecorder>
CustomWindowStateDelegate::OnDragStarted(int component) {
if (!shell_surface_ || !ui::IsResizingComponent(component))
return nullptr;
return std::make_unique<ShellSurfacePresentationTimeRecorder>(
shell_surface_,
ShellSurfacePresentationTimeRecorder::CreateHistogramReporter(
"Ash.InteractiveWindowResize.Lacros.TimeToPresent",
"Ash.InteractiveWindowResize.Lacros.TimeToPresent.MaxLatency"));
}
} // namespace exo