blob: ef2047600ae5dc2c6b286002399a86b3426d2cb4 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef PERIDOT_BIN_BASEMGR_SESSION_SHELL_SETTINGS_SESSION_SHELL_SETTINGS_H_
#define PERIDOT_BIN_BASEMGR_SESSION_SHELL_SETTINGS_SESSION_SHELL_SETTINGS_H_
#include <vector>
#include <fuchsia/ui/policy/cpp/fidl.h>
namespace modular {
// A data structure representing Session Shell Settings. See
// |kBaseShellConfigJsonPath| in session_shell_settings.cc for the path name and
// JSON that this is intended to represent.
struct SessionShellSettings {
// Returns the session shell settings for the system. This is guaranteed to be
// O(1). This is thread-unsafe; callers can safely call this method if callers
// synchronize access.
static const std::vector<SessionShellSettings>& GetSystemSettings();
// The name of the session shell, e.g. "ermine".
const std::string name;
// The screen width & height in millimeters for the session shell's display.
// Defaults to a signaling NaN so that any attempts to use it without checking
// for NaN will trap.
const float screen_width = std::numeric_limits<float>::signaling_NaN();
const float screen_height = std::numeric_limits<float>::signaling_NaN();
// The display usage policy for this session shell.
const fuchsia::ui::policy::DisplayUsage display_usage =
fuchsia::ui::policy::DisplayUsage::kUnknown;
};
bool operator==(const SessionShellSettings& lhs,
const SessionShellSettings& rhs);
} // namespace modular
#endif // PERIDOT_BIN_BASEMGR_SESSION_SHELL_SETTINGS_SESSION_SHELL_SETTINGS_H_