// 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 COMPONENTS_SERVICES_APP_SERVICE_PUBLIC_CPP_MENU_H_ #define COMPONENTS_SERVICES_APP_SERVICE_PUBLIC_CPP_MENU_H_ #include <memory> #include <vector> #include "base/component_export.h" #include "base/functional/callback.h" #include "ui/gfx/image/image_skia.h" namespace apps { // Which component requests context menus, the app list or shelf. enum class MenuType { … }; // The types of menu items shown in the app list or shelf. enum class MenuItemType { … }; struct COMPONENT_EXPORT(APP_TYPES) MenuItem { … }; MenuItemPtr; // MenuItems are used to populate context menus, e.g. in the app list or shelf. // Note: Some menu item types only support a subset of these item features. // Please update comments below (MenuItemType -> [fields expected for usage]) // when anything changed to MenuItemType or MenuItem. // // kCommand -> [command_id, string_id]. // kRadio -> [command_id, string_id, radio_group_id]. // kSeparator -> [command_id]. // kSubmenu -> [command_id, string_id, submenu]. // kPublisherCommand -> [command_id, shortcut_id, label, image]. // struct COMPONENT_EXPORT(APP_TYPES) MenuItems { … }; } // namespace apps #endif // COMPONENTS_SERVICES_APP_SERVICE_PUBLIC_CPP_MENU_H_