1 /** @file
2   This protocol provides services to display a popup window.
3   The protocol is typically produced by the forms browser and consumed by a driver callback handler.
4 
5   Copyright (c) 2017-2021, Intel Corporation. All rights reserved.<BR>
6   SPDX-License-Identifier: BSD-2-Clause-Patent
7 
8   @par Revision Reference:
9   This Protocol was introduced in UEFI Specification 2.7.
10 
11 **/
12 
13 #ifndef __HII_POPUP_H__
14 #define __HII_POPUP_H__
15 
16 #define EFI_HII_POPUP_PROTOCOL_GUID \
17   {0x4311edc0, 0x6054, 0x46d4, {0x9e, 0x40, 0x89, 0x3e, 0xa9, 0x52, 0xfc, 0xcc}}
18 
19 #define EFI_HII_POPUP_PROTOCOL_REVISION  1
20 
21 typedef struct _EFI_HII_POPUP_PROTOCOL EFI_HII_POPUP_PROTOCOL;
22 
23 typedef enum {
24   EfiHiiPopupStyleInfo,
25   EfiHiiPopupStyleWarning,
26   EfiHiiPopupStyleError
27 } EFI_HII_POPUP_STYLE;
28 
29 typedef enum {
30   EfiHiiPopupTypeOk,
31   EfiHiiPopupTypeOkCancel,
32   EfiHiiPopupTypeYesNo,
33   EfiHiiPopupTypeYesNoCancel
34 } EFI_HII_POPUP_TYPE;
35 
36 typedef enum {
37   EfiHiiPopupSelectionOk,
38   EfiHiiPopupSelectionCancel,
39   EfiHiiPopupSelectionYes,
40   EfiHiiPopupSelectionNo
41 } EFI_HII_POPUP_SELECTION;
42 
43 /**
44   Displays a popup window.
45 
46   @param  This           A pointer to the EFI_HII_POPUP_PROTOCOL instance.
47   @param  PopupStyle     Popup style to use.
48   @param  PopupType      Type of the popup to display.
49   @param  HiiHandle      HII handle of the string pack containing Message
50   @param  Message        A message to display in the popup box.
51   @param  UserSelection  User selection.
52 
53   @retval EFI_SUCCESS            The popup box was successfully displayed.
54   @retval EFI_INVALID_PARAMETER  HiiHandle and Message do not define a valid HII string.
55   @retval EFI_INVALID_PARAMETER  PopupType is not one of the values defined by this specification.
56   @retval EFI_OUT_OF_RESOURCES   There are not enough resources available to display the popup box.
57 
58 **/
59 typedef
60 EFI_STATUS
61 (EFIAPI *EFI_HII_CREATE_POPUP)(
62   IN  EFI_HII_POPUP_PROTOCOL  *This,
63   IN  EFI_HII_POPUP_STYLE     PopupStyle,
64   IN  EFI_HII_POPUP_TYPE      PopupType,
65   IN  EFI_HII_HANDLE          HiiHandle,
66   IN  EFI_STRING_ID           Message,
67   OUT EFI_HII_POPUP_SELECTION *UserSelection OPTIONAL
68   );
69 
70 struct _EFI_HII_POPUP_PROTOCOL {
71   UINT64                  Revision;
72   EFI_HII_CREATE_POPUP    CreatePopup;
73 };
74 
75 extern EFI_GUID  gEfiHiiPopupProtocolGuid;
76 
77 #endif
78