/** @file\r
Entry and initialization module for the browser.\r
\r
-Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
CHAR16 *StrPtr;\r
UINTN BufferSize;\r
UINTN TmpSize;\r
+ FORMSET_STORAGE *BrowserStorage;\r
\r
if (RetrieveData) {\r
//\r
// Skip <ConfigHdr> and '&' to point to <ConfigBody> when first copy the configbody.\r
// Also need to consider add "\0" at first time.\r
//\r
- StrPtr = ConfigResp + StrLen (Storage->ConfigHdr) + 1;\r
+ StrPtr = StrStr (ConfigResp, L"PATH");\r
+ ASSERT (StrPtr != NULL);\r
+ StrPtr = StrStr (StrPtr, L"&");\r
+ StrPtr += 1;\r
BufferSize = StrSize (StrPtr);\r
\r
-\r
//\r
// Copy the data if the input buffer is bigger enough.\r
//\r
//\r
// Prepare <ConfigResp>\r
//\r
+ BrowserStorage = GetFstStgFromBrsStg (Storage);\r
+ ASSERT (BrowserStorage != NULL);\r
TmpSize = StrLen (*ResultsData);\r
- BufferSize = (TmpSize + StrLen (Storage->ConfigHdr) + 2) * sizeof (CHAR16);\r
+ BufferSize = (TmpSize + StrLen (BrowserStorage->ConfigHdr) + 2) * sizeof (CHAR16);\r
ConfigResp = AllocateZeroPool (BufferSize);\r
ASSERT (ConfigResp != NULL);\r
\r
- StrCpy (ConfigResp, Storage->ConfigHdr);\r
+ StrCpy (ConfigResp, BrowserStorage->ConfigHdr);\r
StrCat (ConfigResp, L"&");\r
StrCat (ConfigResp, *ResultsData);\r
\r
LIST_ENTRY *Link;\r
NAME_VALUE_NODE *Node;\r
UINT8 *SourceBuf;\r
+ FORMSET_STORAGE *FormsetStorage;\r
\r
Status = EFI_SUCCESS;\r
\r
\r
case EFI_HII_VARSTORE_NAME_VALUE:\r
*ConfigResp = NULL;\r
- NewStringCat (ConfigResp, Storage->ConfigHdr);\r
+ FormsetStorage = GetFstStgFromBrsStg(Storage);\r
+ ASSERT (FormsetStorage != NULL);\r
+ NewStringCat (ConfigResp, FormsetStorage->ConfigHdr);\r
\r
Link = GetFirstNode (&Storage->NameValueListHead);\r
while (!IsNull (&Storage->NameValueListHead, Link)) {\r
UINTN StorageWidth;\r
EFI_TIME EfiTime;\r
BROWSER_STORAGE *Storage;\r
+ FORMSET_STORAGE *FormsetStorage;\r
EFI_IFR_TYPE_VALUE *QuestionValue;\r
CHAR16 *ConfigRequest;\r
CHAR16 *Progress;\r
FreePool (Value);\r
}\r
} else {\r
+ FormsetStorage = GetFstStgFromVarId(FormSet, Question->VarStoreId);\r
+ ASSERT (FormsetStorage != NULL);\r
//\r
// <ConfigRequest> ::= <ConfigHdr> + <BlockName> ||\r
// <ConfigHdr> + "&" + <VariableName>\r
//\r
if (IsBufferStorage) {\r
- Length = StrLen (Storage->ConfigHdr);\r
+ Length = StrLen (FormsetStorage->ConfigHdr);\r
Length += StrLen (Question->BlockName);\r
} else {\r
- Length = StrLen (Storage->ConfigHdr);\r
+ Length = StrLen (FormsetStorage->ConfigHdr);\r
Length += StrLen (Question->VariableName) + 1;\r
}\r
ConfigRequest = AllocateZeroPool ((Length + 1) * sizeof (CHAR16));\r
ASSERT (ConfigRequest != NULL);\r
\r
- StrCpy (ConfigRequest, Storage->ConfigHdr);\r
+ StrCpy (ConfigRequest, FormsetStorage->ConfigHdr);\r
if (IsBufferStorage) {\r
StrCat (ConfigRequest, Question->BlockName);\r
} else {\r
UINTN BufferLen;\r
UINTN StorageWidth;\r
BROWSER_STORAGE *Storage;\r
+ FORMSET_STORAGE *FormsetStorage;\r
EFI_IFR_TYPE_VALUE *QuestionValue;\r
CHAR16 *ConfigResp;\r
CHAR16 *Progress;\r
} else {\r
Length += (StorageWidth * 2);\r
}\r
- ConfigResp = AllocateZeroPool ((StrLen (Storage->ConfigHdr) + Length + 1) * sizeof (CHAR16));\r
+ FormsetStorage = GetFstStgFromVarId(FormSet, Question->VarStoreId);\r
+ ASSERT (FormsetStorage != NULL);\r
+ ConfigResp = AllocateZeroPool ((StrLen (FormsetStorage->ConfigHdr) + Length + 1) * sizeof (CHAR16));\r
ASSERT (ConfigResp != NULL);\r
\r
- StrCpy (ConfigResp, Storage->ConfigHdr);\r
+ StrCpy (ConfigResp, FormsetStorage->ConfigHdr);\r
if (IsBufferStorage) {\r
StrCat (ConfigResp, Question->BlockName);\r
StrCat (ConfigResp, L"&VALUE=");\r
*RetQuestion = Statement;\r
break;\r
}\r
+\r
+ if (Statement->VariableName != NULL && StrStr (Statement->VariableName, Progress) != NULL) {\r
+ *RetQuestion = Statement;\r
+ break;\r
+ }\r
}\r
}\r
\r
/**\r
Adjust config request in storage, remove the request elements existed in the input ConfigRequest.\r
\r
- @param Storage Pointer to the browser storage.\r
+ @param Storage Pointer to the formset storage.\r
@param ConfigRequest The pointer to the Request element.\r
\r
**/\r
VOID\r
RemoveConfigRequest (\r
- BROWSER_STORAGE *Storage,\r
+ FORMSET_STORAGE *Storage,\r
CHAR16 *ConfigRequest\r
)\r
{\r
return;\r
}\r
\r
- if (Storage->Type == EFI_HII_VARSTORE_NAME_VALUE) {\r
+ if (Storage->BrowserStorage->Type == EFI_HII_VARSTORE_NAME_VALUE) {\r
//\r
// "&Name1&Name2" section for EFI_HII_VARSTORE_NAME_VALUE storage\r
//\r
//\r
// Find SearchKey storage\r
//\r
- if (Storage->Type == EFI_HII_VARSTORE_NAME_VALUE) {\r
+ if (Storage->BrowserStorage->Type == EFI_HII_VARSTORE_NAME_VALUE) {\r
RequestElement = StrStr (ConfigRequest, L"PATH");\r
ASSERT (RequestElement != NULL);\r
RequestElement = StrStr (RequestElement, SearchKey); \r
*NextRequestElement = L'\0';\r
}\r
\r
- RemoveElement (Storage, RequestElement);\r
+ RemoveElement (Storage->BrowserStorage, RequestElement);\r
\r
if (NextRequestElement != NULL) {\r
//\r
//\r
// If no request element remain, just remove the ConfigRequest string.\r
//\r
- if (StrCmp (Storage->ConfigRequest, Storage->ConfigHdr) == 0) {\r
- FreePool (Storage->ConfigRequest);\r
- Storage->ConfigRequest = NULL;\r
- Storage->SpareStrLen = 0;\r
+ if (StrCmp (Storage->BrowserStorage->ConfigRequest, Storage->ConfigHdr) == 0) {\r
+ FreePool (Storage->BrowserStorage->ConfigRequest);\r
+ Storage->BrowserStorage->ConfigRequest = NULL;\r
+ Storage->BrowserStorage->SpareStrLen = 0;\r
}\r
}\r
\r
continue;\r
}\r
\r
- RemoveConfigRequest (Storage->BrowserStorage, Storage->ConfigRequest);\r
+ RemoveConfigRequest (Storage, Storage->ConfigRequest);\r
} else if (Storage->BrowserStorage->Type == EFI_HII_VARSTORE_BUFFER ||\r
Storage->BrowserStorage->Type == EFI_HII_VARSTORE_NAME_VALUE) {\r
if (Storage->BrowserStorage->ConfigRequest != NULL) { \r
// Allocate and fill a buffer large enough to hold the <ConfigHdr> template\r
// followed by "&OFFSET=0&WIDTH=WWWW"followed by a Null-terminator\r
//\r
- StrLen = StrSize (Storage->BrowserStorage->ConfigHdr) + 20 * sizeof (CHAR16);\r
+ StrLen = StrSize (Storage->ConfigHdr) + 20 * sizeof (CHAR16);\r
ConfigRequest = AllocateZeroPool (StrLen);\r
ASSERT (ConfigRequest != NULL);\r
UnicodeSPrint (\r
ConfigRequest, \r
StrLen, \r
L"%s&OFFSET=0&WIDTH=%04x", \r
- Storage->BrowserStorage->ConfigHdr,\r
+ Storage->ConfigHdr,\r
Storage->BrowserStorage->Size);\r
} else {\r
ConfigRequest = Storage->ConfigRequest;\r