From 3751df6c38a201e4ceb8f284737164bbacdb8d1d Mon Sep 17 00:00:00 2001 From: Dandan Bi Date: Sun, 6 Sep 2015 02:17:49 +0000 Subject: MdeModulePkg:Support orderedList with default value Our tool can support OrderedList which has default value,but doesn't update the source code in HiiDatabase when parse the ifr data.Now update the code and add test case in DriverSample. (Sync patch r18388 from main trunk.) Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi Reviewed-by: Liming Gao git-svn-id: https://svn.code.sf.net/p/edk2/code/branches/UDK2015@18401 6f19259b-4bc3-4df7-8a09-765794883524 --- MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr | 1 + .../Universal/HiiDatabaseDxe/ConfigRouting.c | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 11 deletions(-) (limited to 'MdeModulePkg') diff --git a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr index 8da0d4b30b..bd28797a55 100644 --- a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr +++ b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr @@ -234,6 +234,7 @@ formset option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 3, flags = 0; option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 2, flags = 0; option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 1, flags = 0; + default = {1,2,3}, endlist; endif; diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c index 1081e75921..b618903b6a 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c @@ -1599,6 +1599,7 @@ ParseIfrData ( UINT16 VarWidth; UINT16 VarDefaultId; BOOLEAN FirstOneOfOption; + BOOLEAN FirstOrderedList; LIST_ENTRY *LinkData; LIST_ENTRY *LinkDefault; EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore; @@ -1610,6 +1611,7 @@ ParseIfrData ( DefaultDataPtr = NULL; FirstOneOfOption = FALSE; VarStoreId = 0; + FirstOrderedList = FALSE; ZeroMem (&DefaultData, sizeof (IFR_DEFAULT_DATA)); // @@ -1856,9 +1858,9 @@ ParseIfrData ( // // offset by question header // width by EFI_IFR_ORDERED_LIST MaxContainers * OneofOption Type - // no default value and default id, how to define its default value? // + FirstOrderedList = TRUE; // // OrderedList question is not in IFR Form. This IFR form is not valid. // @@ -2102,6 +2104,10 @@ ParseIfrData ( IfrOneOfOption = (EFI_IFR_ONE_OF_OPTION *) IfrOpHdr; if (BlockData->OpCode == EFI_IFR_ORDERED_LIST_OP) { + + if (!FirstOrderedList){ + break; + } // // Get ordered list option data type. // @@ -2158,10 +2164,9 @@ ParseIfrData ( // Add Block Data into VarStorageData BlockEntry // InsertBlockData (&VarStorageData->BlockEntry, &BlockData); - // - // No default data for OrderedList. - // - BlockData = NULL; + + FirstOrderedList = FALSE; + break; } @@ -2222,12 +2227,6 @@ ParseIfrData ( break; } - if (BlockData->OpCode == EFI_IFR_ORDERED_LIST_OP) { - // - // OrderedList Opcode is no default value. - // - break; - } // // Get the DefaultId // -- cgit v1.2.3