Do not replace existing objects in CPWL_AppStream::SetAsPushButton

An empty string is no assurance of a key not being set.

Bug: chromium:913320
Change-Id: Ia06d0cbe0fa7c2ee662c8fb3d0d537878e80a1ed
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/51451
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fpdfsdk/pwl/cpwl_appstream.cpp b/fpdfsdk/pwl/cpwl_appstream.cpp
index 4b68972..670bda6 100644
--- a/fpdfsdk/pwl/cpwl_appstream.cpp
+++ b/fpdfsdk/pwl/cpwl_appstream.cpp
@@ -1100,6 +1100,20 @@
   return ByteString(sAppStream);
 }
 
+void SetDefaultIconName(CPDF_Stream* pIcon, const char* name) {
+  if (!pIcon)
+    return;
+
+  CPDF_Dictionary* pImageDict = pIcon->GetDict();
+  if (!pImageDict)
+    return;
+
+  if (pImageDict->KeyExist("Name"))
+    return;
+
+  pImageDict->SetNewFor<CPDF_String>("Name", name, false);
+}
+
 }  // namespace
 
 CPWL_AppStream::CPWL_AppStream(CPDFSDK_Widget* widget, CPDF_Dictionary* dict)
@@ -1213,29 +1227,11 @@
   if (pControl->HasMKEntry("IX"))
     pDownIcon = pControl->GetDownIcon();
 
-  if (pNormalIcon) {
-    if (CPDF_Dictionary* pImageDict = pNormalIcon->GetDict()) {
-      if (pImageDict->GetStringFor("Name").IsEmpty())
-        pImageDict->SetNewFor<CPDF_String>("Name", "ImgA", false);
-    }
-  }
-
-  if (pRolloverIcon) {
-    if (CPDF_Dictionary* pImageDict = pRolloverIcon->GetDict()) {
-      if (pImageDict->GetStringFor("Name").IsEmpty())
-        pImageDict->SetNewFor<CPDF_String>("Name", "ImgB", false);
-    }
-  }
-
-  if (pDownIcon) {
-    if (CPDF_Dictionary* pImageDict = pDownIcon->GetDict()) {
-      if (pImageDict->GetStringFor("Name").IsEmpty())
-        pImageDict->SetNewFor<CPDF_String>("Name", "ImgC", false);
-    }
-  }
+  SetDefaultIconName(pNormalIcon, "ImgA");
+  SetDefaultIconName(pRolloverIcon, "ImgB");
+  SetDefaultIconName(pDownIcon, "ImgC");
 
   CPDF_IconFit iconFit = pControl->GetIconFit();
-
   CBA_FontMap font_map(
       widget_.Get(),
       widget_->GetInteractiveForm()->GetFormFillEnv()->GetSysHandler());