blob: da7db59c4f4a40380fa4921e4771c9afeddb59c9 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "headless/public/headless_window_state.h"
#include "base/containers/flat_map.h"
#include "base/no_destructor.h"
#include "headless/lib/browser/protocol/target_handler.h"
namespace headless {
std::string GetProtocolWindowState(HeadlessWindowState window_state) {
switch (window_state) {
case HeadlessWindowState::kNormal:
return protocol::Target::WindowStateEnum::Normal;
case HeadlessWindowState::kMinimized:
return protocol::Target::WindowStateEnum::Minimized;
case HeadlessWindowState::kMaximized:
return protocol::Target::WindowStateEnum::Maximized;
case HeadlessWindowState::kFullscreen:
return protocol::Target::WindowStateEnum::Fullscreen;
}
}
std::optional<HeadlessWindowState> GetWindowStateFromProtocol(
std::string_view window_state) {
static const base::NoDestructor<
base::flat_map<std::string_view, HeadlessWindowState>>
kWindowStateMap({
{protocol::Target::WindowStateEnum::Normal,
HeadlessWindowState::kNormal},
{protocol::Target::WindowStateEnum::Minimized,
HeadlessWindowState::kMinimized},
{protocol::Target::WindowStateEnum::Maximized,
HeadlessWindowState::kMaximized},
{protocol::Target::WindowStateEnum::Fullscreen,
HeadlessWindowState::kFullscreen},
});
const auto it = kWindowStateMap->find(window_state);
if (it != kWindowStateMap->cend()) {
return it->second;
}
return std::nullopt;
}
} // namespace headless