910e62b5创建于 1月15日历史提交
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_LINUX_LINUX_UI_FACTORY_H_
#define UI_LINUX_LINUX_UI_FACTORY_H_

#include <vector>

#include "base/component_export.h"
#include "base/memory/raw_ptr.h"

namespace ui {

class LinuxUi;
class LinuxUiTheme;
enum class SystemTheme : int;

// Returns a LinuxUi for the default toolkit.  May create a LinuxUi instance if
// one does not exist.  May return nullptr if no toolkits are available.
COMPONENT_EXPORT(LINUX_UI_FACTORY)
LinuxUi* GetDefaultLinuxUi();

// Returns a LinuxUiTheme for the default toolkit.  May create a LinuxUiTheme
// instance if one does not exist.  May return nullptr if no toolkits are
// available.  Should only be used by tests or LinuxUi internals. Otherwise, use
// the accessors in LinuxUiTheme instead.
COMPONENT_EXPORT(LINUX_UI_FACTORY)
LinuxUiTheme* GetDefaultLinuxUiTheme();

COMPONENT_EXPORT(LINUX_UI_FACTORY)
LinuxUiTheme* GetLinuxUiTheme(SystemTheme system_theme);

// Returns all `LinuxUiTheme`s that have been created.
COMPONENT_EXPORT(LINUX_UI_FACTORY)
const std::vector<raw_ptr<LinuxUiTheme, VectorExperimental>>&
GetLinuxUiThemes();

COMPONENT_EXPORT(LINUX_UI_FACTORY)
SystemTheme GetDefaultSystemTheme();

}  // namespace ui

#endif  // UI_LINUX_LINUX_UI_FACTORY_H_