]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Per UEFI spec, on CallBack action EFI_BROWSER_ACTION_CHANGING, the return value of...
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 15 Dec 2011 02:54:49 +0000 (02:54 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 15 Dec 2011 02:54:49 +0000 (02:54 +0000)
But, EDKII browser still processes the got ActionRequest. And, all HII drivers in EDKII project also returns their expected ActionRequest value on action EFI_BROWSER_ACTION_CHANGING.
Now update the browser to follow the spec, and update all core Hii drivers to keep old working modal.

Update for MdeModulePkg.

Signed-off-by: ydong10
Reviewed-by: lgao4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12865 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c
MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfigDxe.vfr
MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxe.vfr
MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigNv.c
MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c
MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c
MdeModulePkg/Universal/PlatformDriOverrideDxe/Vfr.vfr
MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c

index 4b44330ec8ccbf32612f60a0e2585453a1b9bf95..e7c1202ecfd7eacc68b2ce22a9627c356e428c2b 100644 (file)
@@ -1667,50 +1667,6 @@ DriverCallback (
       }\r
       break;\r
 \r
-    case 0x1237:\r
-      //\r
-      // User press "Exit now", request Browser to exit\r
-      //\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
-      break;\r
-\r
-    case 0x1238:\r
-      //\r
-      // User press "Save now", request Browser to save the uncommitted data.\r
-      //\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
-      break;\r
-\r
-    case 0x1241:\r
-    case 0x1246:\r
-      //\r
-      // User press "Submit current form and Exit now", request Browser to submit current form and exit\r
-      //\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;\r
-      break;\r
-\r
-    case 0x1242:\r
-      //\r
-      // User press "Discard current form now", request Browser to discard the uncommitted data.\r
-      //\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD;\r
-      break;\r
-\r
-    case 0x1243:\r
-      //\r
-      // User press "Submit current form now", request Browser to save the uncommitted data.\r
-      //\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY;\r
-      break;\r
-\r
-    case 0x1244:\r
-    case 0x1245:\r
-      //\r
-      // User press "Discard current form and Exit now", request Browser to discard the uncommitted data and exit.\r
-      //\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;\r
-      break;\r
-\r
     case 0x2000:\r
       //\r
       // Only used to update the state.\r
@@ -1751,6 +1707,57 @@ DriverCallback (
   }\r
   break;\r
 \r
+  case EFI_BROWSER_ACTION_CHANGED:\r
+    switch (QuestionId) {\r
+      case 0x1237:\r
+        //\r
+        // User press "Exit now", request Browser to exit\r
+        //\r
+        *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
+        break;\r
+      \r
+      case 0x1238:\r
+        //\r
+        // User press "Save now", request Browser to save the uncommitted data.\r
+        //\r
+        *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+        break;\r
+      \r
+      case 0x1241:\r
+      case 0x1246:\r
+        //\r
+        // User press "Submit current form and Exit now", request Browser to submit current form and exit\r
+        //\r
+        *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;\r
+        break;\r
+      \r
+      case 0x1242:\r
+        //\r
+        // User press "Discard current form now", request Browser to discard the uncommitted data.\r
+        //\r
+        *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD;\r
+        break;\r
+      \r
+      case 0x1243:\r
+        //\r
+        // User press "Submit current form now", request Browser to save the uncommitted data.\r
+        //\r
+        *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY;\r
+        break;\r
+      \r
+      case 0x1244:\r
+      case 0x1245:\r
+        //\r
+        // User press "Discard current form and Exit now", request Browser to discard the uncommitted data and exit.\r
+        //\r
+        *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;\r
+        break;\r
+        \r
+      default:\r
+      break;\r
+    }\r
+  break;\r
+\r
   default:\r
     Status = EFI_UNSUPPORTED;\r
     break;\r
index 81d9583bcd5a7f865174f7c3b1c05f22bad3a43e..4fdb5adf2ca129048eb75256cea4da42420d284e 100644 (file)
@@ -676,20 +676,40 @@ IScsiFormCallback (
   EFI_STATUS                Status;\r
   EFI_INPUT_KEY             Key;\r
 \r
+  if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  Private   = ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This);\r
+  //\r
+  // Retrive uncommitted data from Browser\r
+  //\r
+  IfrNvData = AllocateZeroPool (sizeof (ISCSI_CONFIG_IFR_NVDATA));\r
+  ASSERT (IfrNvData != NULL);\r
+  if (!HiiGetBrowserData (&gIp4IScsiConfigGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData)) {\r
+    FreePool (IfrNvData);\r
+    return EFI_NOT_FOUND;\r
+  }\r
+  Status = EFI_SUCCESS;\r
+\r
   if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
-    Private   = ISCSI_FORM_CALLBACK_INFO_FROM_FORM_CALLBACK (This);\r
-    //\r
-    // Retrive uncommitted data from Browser\r
-    //\r
-    IfrNvData = AllocateZeroPool (sizeof (ISCSI_CONFIG_IFR_NVDATA));\r
-    ASSERT (IfrNvData != NULL);\r
-    if (!HiiGetBrowserData (&gIp4IScsiConfigGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData)) {\r
-      FreePool (IfrNvData);\r
-      return EFI_NOT_FOUND;\r
-    }\r
-    Status = EFI_SUCCESS;\r
+    if ((QuestionId >= KEY_DEVICE_ENTRY_BASE) && (QuestionId < (mNumberOfIScsiDevices + KEY_DEVICE_ENTRY_BASE))) {\r
+      //\r
+      // In case goto the device configuration form, update the device form title.\r
+      //\r
+      ConfigFormEntry = IScsiGetConfigFormEntryByIndex ((UINT32) (QuestionId - KEY_DEVICE_ENTRY_BASE));\r
+      ASSERT (ConfigFormEntry != NULL);\r
+\r
+      UnicodeSPrint (PortString, (UINTN) 128, L"Port %s", ConfigFormEntry->MacString);\r
+      DeviceFormTitleToken = (EFI_STRING_ID) STR_ISCSI_DEVICE_FORM_TITLE;\r
+      HiiSetString (Private->RegisteredHandle, DeviceFormTitleToken, PortString, NULL);\r
 \r
-    switch (QuestionId) {\r
+      IScsiConvertDeviceConfigDataToIfrNvData (ConfigFormEntry, IfrNvData);\r
+\r
+      Private->Current = ConfigFormEntry;\r
+    }\r
+  } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+    switch (QuestionId) { \r
     case KEY_INITIATOR_NAME:\r
       IScsiUnicodeStrToAsciiStr (IfrNvData->InitiatorName, IScsiName);\r
       BufferSize  = AsciiStrSize (IScsiName);\r
@@ -889,41 +909,20 @@ IScsiFormCallback (
       break;\r
 \r
     default:\r
-      if ((QuestionId >= KEY_DEVICE_ENTRY_BASE) && (QuestionId < (mNumberOfIScsiDevices + KEY_DEVICE_ENTRY_BASE))) {\r
-        //\r
-        // In case goto the device configuration form, update the device form title.\r
-        //\r
-        ConfigFormEntry = IScsiGetConfigFormEntryByIndex ((UINT32) (QuestionId - KEY_DEVICE_ENTRY_BASE));\r
-        ASSERT (ConfigFormEntry != NULL);\r
-\r
-        UnicodeSPrint (PortString, (UINTN) 128, L"Port %s", ConfigFormEntry->MacString);\r
-        DeviceFormTitleToken = (EFI_STRING_ID) STR_ISCSI_DEVICE_FORM_TITLE;\r
-        HiiSetString (Private->RegisteredHandle, DeviceFormTitleToken, PortString, NULL);\r
-\r
-        IScsiConvertDeviceConfigDataToIfrNvData (ConfigFormEntry, IfrNvData);\r
-\r
-        Private->Current = ConfigFormEntry;\r
-      }\r
-\r
       break;\r
     }\r
-\r
-    if (!EFI_ERROR (Status)) {\r
-      //\r
-      // Pass changed uncommitted data back to Form Browser\r
-      //\r
-      HiiSetBrowserData (&gIp4IScsiConfigGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData, NULL);\r
-    }\r
-    \r
-    FreePool (IfrNvData);\r
-\r
-    return Status;\r
   }\r
 \r
-  //\r
-  // All other action return unsupported.\r
-  //\r
-  return EFI_UNSUPPORTED;\r
+  if (!EFI_ERROR (Status)) {\r
+    //\r
+    // Pass changed uncommitted data back to Form Browser\r
+    //\r
+    HiiSetBrowserData (&gIp4IScsiConfigGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData, NULL);\r
+  }\r
+  \r
+  FreePool (IfrNvData);\r
+  \r
+  return Status;\r
 }\r
 \r
 /**\r
index 82364a8b4abcfcca4fb7789633009caf0548be57..719353de2905ea3cf146aa6159d4bf0df17d8a29 100644 (file)
@@ -204,12 +204,13 @@ formset
 \r
     subtitle text = STRING_TOKEN(STR_NULL); \r
 \r
-    goto FORMID_DEVICE_FORM,  \r
-    prompt = STRING_TOKEN (STR_SAVE_CHANGES),\r
-    help   = STRING_TOKEN (STR_SAVE_CHANGES),\r
-    flags  = INTERACTIVE,\r
-    key    = KEY_SAVE_CHANGES;\r
-\r
+    text\r
+      help   = STRING_TOKEN (STR_SAVE_CHANGES),\r
+      text   = STRING_TOKEN (STR_SAVE_CHANGES),\r
+        text   = STRING_TOKEN (STR_SAVE_CHANGES),\r
+      flags  = INTERACTIVE,\r
+      key    = KEY_SAVE_CHANGES;\r
+      \r
     goto FORMID_MAIN_FORM, \r
     prompt = STRING_TOKEN (STR_RETURN_MAIN_FORM), \r
     help   = STRING_TOKEN (STR_RETURN_MAIN_FORM),\r
index 5b5685db422306dcfb587a635c39bf5fc3719871..c5d74b06df727387251f6f63f8f9089e23f10b37 100644 (file)
@@ -78,13 +78,14 @@ formset
     endif;\r
 \r
     subtitle text = STRING_TOKEN(STR_NULL);\r
-\r
-    goto FORMID_DEVICE_FORM,\r
-    prompt = STRING_TOKEN (STR_SAVE_CHANGES),\r
-    help   = STRING_TOKEN (STR_SAVE_CHANGES),\r
-    flags  = INTERACTIVE,\r
-    key    = KEY_SAVE_CHANGES;\r
-\r
+    \r
+    text\r
+      help   = STRING_TOKEN(STR_SAVE_CHANGES),\r
+      text   = STRING_TOKEN(STR_SAVE_CHANGES),\r
+        text   = STRING_TOKEN(STR_SAVE_CHANGES),\r
+      flags  = INTERACTIVE,\r
+      key    = KEY_SAVE_CHANGES;\r
+      \r
   endform;\r
 \r
 endformset;\r
index 59e5127b44a7d683b21d462d04a5cffe71f54c45..58c4c1a02cd05ae856c85ac3b1946de8c3ca6070 100644 (file)
@@ -689,7 +689,7 @@ Ip4FormCallback (
   EFI_STATUS                Status;\r
   EFI_INPUT_KEY             Key;\r
 \r
-  if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+  if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
     Ip4ConfigInstance = IP4_CONFIG_INSTANCE_FROM_CONFIG_ACCESS (This);\r
 \r
     IfrFormNvData = AllocateZeroPool (sizeof (IP4_CONFIG_IFR_NVDATA));\r
index ea70d5e28d0e0ba8fd65acf00c7bf942f5a4e4e2..f992cea07b80bc6a742f86d40dbf4543d9e019c3 100644 (file)
@@ -239,16 +239,23 @@ VlanCallback (
     return EFI_SUCCESS;\r
   }\r
 \r
-  if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+  if ((Action != EFI_BROWSER_ACTION_CHANGED) && (Action != EFI_BROWSER_ACTION_CHANGING)) {\r
     //\r
-    // Get Browser data\r
+    // All other action return unsupported.\r
     //\r
-    Configuration = AllocateZeroPool (sizeof (VLAN_CONFIGURATION));\r
-    ASSERT (Configuration != NULL);\r
-    HiiGetBrowserData (&gVlanConfigFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration);\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  //\r
+  // Get Browser data\r
+  //\r
+  Configuration = AllocateZeroPool (sizeof (VLAN_CONFIGURATION));\r
+  ASSERT (Configuration != NULL);\r
+  HiiGetBrowserData (&gVlanConfigFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration);\r
 \r
-    VlanConfig = PrivateData->VlanConfig;\r
+  VlanConfig = PrivateData->VlanConfig;\r
 \r
+  if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
     switch (QuestionId) {\r
     case VLAN_ADD_QUESTION_ID:\r
       //\r
@@ -304,6 +311,11 @@ VlanCallback (
       ZeroMem (Configuration->VlanList, MAX_VLAN_NUMBER);\r
       break;\r
 \r
+    default:\r
+      break;\r
+    }\r
+  } else if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+    switch (QuestionId) {\r
     case VLAN_UPDATE_QUESTION_ID:\r
       //\r
       // Update current VLAN list into Form.\r
@@ -314,16 +326,11 @@ VlanCallback (
     default:\r
       break;\r
     }\r
-\r
-    HiiSetBrowserData (&gVlanConfigFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration, NULL);\r
-    FreePool (Configuration);\r
-    return EFI_SUCCESS;\r
   }\r
-\r
-  //\r
-  // All other action return unsupported.\r
-  //\r
-  return EFI_UNSUPPORTED;\r
+  \r
+  HiiSetBrowserData (&gVlanConfigFormSetGuid, mVlanStorageName, sizeof (VLAN_CONFIGURATION), (UINT8 *) Configuration, NULL);\r
+  FreePool (Configuration);\r
+  return EFI_SUCCESS;\r
 }\r
 \r
 \r
index 20bc43c345aefbaad36204673d2b21dde8cd7d36..ab8a000f1360916ae4a421974b99934f4a3e0cbf 100644 (file)
@@ -1334,17 +1334,25 @@ PlatOverMngrCallback (
   EFI_INPUT_KEY                             Key;\r
   PLAT_OVER_MNGR_DATA                       *FakeNvData;\r
 \r
+  if ((Action != EFI_BROWSER_ACTION_CHANGING) && (Action != EFI_BROWSER_ACTION_CHANGED)) {\r
+    //\r
+    // All other action return unsupported.\r
+    //\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
+  FakeNvData = &Private->FakeNvData;\r
+  if (!HiiGetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
   if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
-    Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
-    FakeNvData = &Private->FakeNvData;\r
-    if (!HiiGetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {\r
-      return EFI_NOT_FOUND;\r
+    if (Value == NULL) {\r
+      return EFI_INVALID_PARAMETER;\r
     }\r
-\r
-    if (KeyValue == KEY_VALUE_DEVICE_REFRESH ||\r
-        KeyValue == KEY_VALUE_DEVICE_FILTER ||\r
-        KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS\r
-        ) {\r
+    \r
+    if (KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS) {\r
       UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
       //\r
       // Update page title string\r
@@ -1380,15 +1388,6 @@ PlatOverMngrCallback (
       }\r
     }\r
 \r
-    if (KeyValue == KEY_VALUE_ORDER_SAVE_AND_EXIT) {\r
-      Status = CommintChanges (Private, KeyValue, FakeNvData);\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
-      if (EFI_ERROR (Status)) {\r
-        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL);\r
-        return EFI_DEVICE_ERROR;\r
-      }\r
-    }\r
-\r
     if (KeyValue == KEY_VALUE_DEVICE_CLEAR) {\r
       //\r
       // Deletes all environment variable(s) that contain the override mappings info\r
@@ -1397,18 +1396,40 @@ PlatOverMngrCallback (
       Status = SaveOverridesMapping (&mMappingDataBase);\r
       UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
     }\r
-    //\r
-    // Pass changed uncommitted data back to Form Browser\r
-    //\r
-    HiiSetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL);\r
+  } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+    switch (KeyValue) {\r
+    case KEY_VALUE_DEVICE_REFRESH:\r
+    case KEY_VALUE_DEVICE_FILTER:\r
+      UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
+      //\r
+      // Update page title string\r
+      //\r
+      NewStringToken = STRING_TOKEN (STR_TITLE);\r
+      if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"First, Select the controller by device path", NULL) == 0) {\r
+        ASSERT (FALSE);\r
+      }\r
+    break;\r
+    \r
+    case KEY_VALUE_ORDER_SAVE_AND_EXIT:\r
+      Status = CommintChanges (Private, KeyValue, FakeNvData);\r
+      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+      if (EFI_ERROR (Status)) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL);\r
+        return EFI_DEVICE_ERROR;\r
+      }\r
+    break;\r
 \r
-    return EFI_SUCCESS;\r
-  } \r
+    default:\r
+    break;\r
+    }\r
+  }\r
 \r
   //\r
-  // All other action return unsupported.\r
+  // Pass changed uncommitted data back to Form Browser\r
   //\r
-  return EFI_UNSUPPORTED;\r
+  HiiSetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL);\r
+\r
+  return EFI_SUCCESS;\r
 }\r
 \r
 /**\r
index 0f50645948feffc3484de2337b6d4973a294b6ce..a4eede18d07c6552e7b882608950d917cadc974a 100644 (file)
@@ -99,11 +99,12 @@ formset
 \r
     subtitle text = STRING_TOKEN(STR_NULL_STRING);\r
 \r
-    goto FORM_ID_ORDER,\r
-      prompt  = STRING_TOKEN(STR_SAVE_AND_EXIT),\r
-      help    = STRING_TOKEN(STR_NULL_STRING),\r
-      flags   = INTERACTIVE | RESET_REQUIRED,\r
-      key     = KEY_VALUE_ORDER_SAVE_AND_EXIT;\r
+    text\r
+      help   = STRING_TOKEN (STR_NULL_STRING),\r
+      text   = STRING_TOKEN (STR_SAVE_AND_EXIT),\r
+        text   = STRING_TOKEN (STR_SAVE_AND_EXIT),\r
+      flags  = INTERACTIVE | RESET_REQUIRED,\r
+      key    = KEY_VALUE_ORDER_SAVE_AND_EXIT;\r
   endform;\r
 \r
 endformset;\r
index ba39f30253d0b1d988e4c9c7f45851c996279bea..2ba2165971308580387c3842b0013c5e3fa201db 100644 (file)
@@ -1248,45 +1248,50 @@ ProcessCallBackFunction (
                              &ActionRequest\r
                              );\r
     if (!EFI_ERROR (Status)) {\r
-      switch (ActionRequest) {\r
-      case EFI_BROWSER_ACTION_REQUEST_RESET:\r
-        gResetRequired = TRUE;\r
-        Selection->Action = UI_ACTION_EXIT;\r
-        break;\r
+      //\r
+      // Only for EFI_BROWSER_ACTION_CHANGED need to handle this ActionRequest.\r
+      //\r
+      if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+        switch (ActionRequest) {\r
+        case EFI_BROWSER_ACTION_REQUEST_RESET:\r
+          gResetRequired = TRUE;\r
+          Selection->Action = UI_ACTION_EXIT;\r
+          break;\r
 \r
-      case EFI_BROWSER_ACTION_REQUEST_SUBMIT:\r
-        SubmitFormIsRequired = TRUE;\r
-        Selection->Action = UI_ACTION_EXIT;\r
-        break;\r
+        case EFI_BROWSER_ACTION_REQUEST_SUBMIT:\r
+          SubmitFormIsRequired = TRUE;\r
+          Selection->Action = UI_ACTION_EXIT;\r
+          break;\r
 \r
-      case EFI_BROWSER_ACTION_REQUEST_EXIT:\r
-        Selection->Action = UI_ACTION_EXIT;\r
-        break;\r
+        case EFI_BROWSER_ACTION_REQUEST_EXIT:\r
+          Selection->Action = UI_ACTION_EXIT;\r
+          break;\r
 \r
-      case EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT:\r
-        SubmitFormIsRequired  = TRUE;\r
-        SettingLevel          = FormLevel;\r
-        NeedExit              = TRUE;\r
-        break;\r
+        case EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT:\r
+          SubmitFormIsRequired  = TRUE;\r
+          SettingLevel          = FormLevel;\r
+          NeedExit              = TRUE;\r
+          break;\r
 \r
-      case EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT:\r
-        DiscardFormIsRequired = TRUE;\r
-        SettingLevel          = FormLevel;      \r
-        NeedExit              = TRUE;\r
-        break;\r
+        case EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT:\r
+          DiscardFormIsRequired = TRUE;\r
+          SettingLevel          = FormLevel;      \r
+          NeedExit              = TRUE;\r
+          break;\r
 \r
-      case EFI_BROWSER_ACTION_REQUEST_FORM_APPLY:\r
-        SubmitFormIsRequired  = TRUE;\r
-        SettingLevel          = FormLevel;\r
-        break;\r
+        case EFI_BROWSER_ACTION_REQUEST_FORM_APPLY:\r
+          SubmitFormIsRequired  = TRUE;\r
+          SettingLevel          = FormLevel;\r
+          break;\r
 \r
-      case EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD:\r
-        DiscardFormIsRequired = TRUE;\r
-        SettingLevel          = FormLevel;\r
-        break;\r
+        case EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD:\r
+          DiscardFormIsRequired = TRUE;\r
+          SettingLevel          = FormLevel;\r
+          break;\r
 \r
-      default:\r
-        break;\r
+        default:\r
+          break;\r
+        }\r
       }\r
 \r
       //\r
@@ -1555,7 +1560,7 @@ SetupBrowser (
           }\r
         }\r
 \r
-        if ((Status == EFI_SUCCESS) && (Statement->Operand != EFI_IFR_REF_OP)) {\r
+        if (!EFI_ERROR (Status) && Statement->Operand != EFI_IFR_REF_OP) {\r
           ProcessCallBackFunction(Selection, Statement, EFI_BROWSER_ACTION_CHANGED, FALSE);\r
         }\r
       }\r