diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
index fbcd53f..536d654 100644
--- a/fpdfsdk/javascript/Document.cpp
+++ b/fpdfsdk/javascript/Document.cpp
@@ -1265,7 +1265,6 @@
     if (!pIcon)
       return false;
 
-    pIcon->SetStream(pIconElement->IconStream->GetStream());
     pIcon->SetIconName(pIconElement->IconName);
     Icons.SetElement(pRuntime, i++, CJS_Value(pRuntime, pJS_Icon));
   }
@@ -1306,8 +1305,6 @@
       return false;
 
     pIcon->SetIconName(swIconName);
-    pIcon->SetStream(pIconElement->IconStream->GetStream());
-
     vRet = CJS_Value(pRuntime, pJS_Icon);
     return true;
   }
diff --git a/fpdfsdk/javascript/Field.cpp b/fpdfsdk/javascript/Field.cpp
index 477b472..92b473b 100644
--- a/fpdfsdk/javascript/Field.cpp
+++ b/fpdfsdk/javascript/Field.cpp
@@ -2815,10 +2815,11 @@
                           const std::vector<CJS_Value>& params,
                           CJS_Value& vRet,
                           CFX_WideString& sError) {
-  int nface = 0;
-  int iSize = params.size();
-  if (iSize >= 1)
-    nface = params[0].ToInt(pRuntime);
+  if (params.size() >= 1) {
+    int nFace = params[0].ToInt(pRuntime);
+    if (nFace < 0 || nFace > 2)
+      return false;
+  }
 
   std::vector<CPDF_FormField*> FieldArray = GetFormFields(m_FieldName);
   if (FieldArray.empty())
@@ -2837,19 +2838,6 @@
   ASSERT(pObj.IsEmpty() == false);
 
   CJS_Icon* pJS_Icon = static_cast<CJS_Icon*>(pRuntime->GetObjectPrivate(pObj));
-  Icon* pIcon = (Icon*)pJS_Icon->GetEmbedObject();
-
-  CPDF_Stream* pIconStream = nullptr;
-  if (nface == 0)
-    pIconStream = pFormControl->GetNormalIcon();
-  else if (nface == 1)
-    pIconStream = pFormControl->GetDownIcon();
-  else if (nface == 2)
-    pIconStream = pFormControl->GetRolloverIcon();
-  else
-    return false;
-
-  pIcon->SetStream(pIconStream);
   vRet = CJS_Value(pRuntime, pJS_Icon);
   return true;
 }
diff --git a/fpdfsdk/javascript/Icon.cpp b/fpdfsdk/javascript/Icon.cpp
index 72d91fa..fa2f92f 100644
--- a/fpdfsdk/javascript/Icon.cpp
+++ b/fpdfsdk/javascript/Icon.cpp
@@ -21,27 +21,10 @@
 IMPLEMENT_JS_CLASS(CJS_Icon, Icon)
 
 Icon::Icon(CJS_Object* pJSObject)
-    : CJS_EmbedObj(pJSObject), m_pIconStream(nullptr), m_swIconName(L"") {}
+    : CJS_EmbedObj(pJSObject), m_swIconName(L"") {}
 
 Icon::~Icon() {}
 
-void Icon::SetStream(CPDF_Stream* pIconStream) {
-  if (pIconStream)
-    m_pIconStream = pIconStream;
-}
-
-CPDF_Stream* Icon::GetStream() {
-  return m_pIconStream;
-}
-
-void Icon::SetIconName(CFX_WideString name) {
-  m_swIconName = name;
-}
-
-CFX_WideString Icon::GetIconName() {
-  return m_swIconName;
-}
-
 bool Icon::name(CJS_Runtime* pRuntime,
                 CJS_PropValue& vp,
                 CFX_WideString& sError) {
diff --git a/fpdfsdk/javascript/Icon.h b/fpdfsdk/javascript/Icon.h
index 5a51f20..5580678 100644
--- a/fpdfsdk/javascript/Icon.h
+++ b/fpdfsdk/javascript/Icon.h
@@ -17,13 +17,10 @@
   ~Icon() override;
 
   bool name(CJS_Runtime* pRuntime, CJS_PropValue& vp, CFX_WideString& sError);
-  void SetStream(CPDF_Stream* pIconStream);
-  CPDF_Stream* GetStream();
-  void SetIconName(CFX_WideString name);
-  CFX_WideString GetIconName();
+  CFX_WideString GetIconName() const { return m_swIconName; }
+  void SetIconName(CFX_WideString name) { m_swIconName = name; }
 
  private:
-  CPDF_Stream* m_pIconStream;
   CFX_WideString m_swIconName;
 };
 
