use unique_ptr in xfa_checksum.h

Review-Url: https://codereview.chromium.org/2613143002
diff --git a/xfa/fxfa/app/xfa_checksum.cpp b/xfa/fxfa/app/xfa_checksum.cpp
index 641ec78..09c4271 100644
--- a/xfa/fxfa/app/xfa_checksum.cpp
+++ b/xfa/fxfa/app/xfa_checksum.cpp
@@ -7,6 +7,7 @@
 #include "xfa/fxfa/xfa_checksum.h"
 
 #include "core/fdrm/crypto/fx_crypt.h"
+#include "third_party/base/ptr_util.h"
 
 namespace {
 
@@ -210,19 +211,16 @@
   m_SAXContext.m_TextBuf.Clear();
 }
 
-CXFA_ChecksumContext::CXFA_ChecksumContext()
-    : m_pSAXReader(nullptr), m_pByteContext(nullptr) {}
+CXFA_ChecksumContext::CXFA_ChecksumContext() {}
 
-CXFA_ChecksumContext::~CXFA_ChecksumContext() {
-  FinishChecksum();
-}
+CXFA_ChecksumContext::~CXFA_ChecksumContext() {}
 
 void CXFA_ChecksumContext::StartChecksum() {
   FinishChecksum();
-  m_pByteContext = FX_Alloc(CRYPT_sha1_context, 1);
-  CRYPT_SHA1Start(m_pByteContext);
+  m_pByteContext = pdfium::MakeUnique<CRYPT_sha1_context>();
+  CRYPT_SHA1Start(m_pByteContext.get());
   m_bsChecksum.clear();
-  m_pSAXReader = new CFX_SAXReader;
+  m_pSAXReader = pdfium::MakeUnique<CFX_SAXReader>();
 }
 
 bool CXFA_ChecksumContext::UpdateChecksum(
@@ -248,18 +246,16 @@
 }
 
 void CXFA_ChecksumContext::FinishChecksum() {
-  delete m_pSAXReader;
-  m_pSAXReader = nullptr;
+  m_pSAXReader.reset();
   if (m_pByteContext) {
     uint8_t digest[20];
     FXSYS_memset(digest, 0, 20);
-    CRYPT_SHA1Finish(m_pByteContext, digest);
+    CRYPT_SHA1Finish(m_pByteContext.get(), digest);
     int32_t nLen = Base64EncodeA(digest, 20, nullptr);
     FX_CHAR* pBuffer = m_bsChecksum.GetBuffer(nLen);
     Base64EncodeA(digest, 20, pBuffer);
     m_bsChecksum.ReleaseBuffer(nLen);
-    FX_Free(m_pByteContext);
-    m_pByteContext = nullptr;
+    m_pByteContext.reset();
   }
 }
 
@@ -268,7 +264,8 @@
 }
 
 void CXFA_ChecksumContext::Update(const CFX_ByteStringC& bsText) {
-  if (m_pByteContext) {
-    CRYPT_SHA1Update(m_pByteContext, bsText.raw_str(), bsText.GetLength());
-  }
+  if (!m_pByteContext)
+    return;
+
+  CRYPT_SHA1Update(m_pByteContext.get(), bsText.raw_str(), bsText.GetLength());
 }
diff --git a/xfa/fxfa/xfa_checksum.h b/xfa/fxfa/xfa_checksum.h
index 45c3db5..31cf101 100644
--- a/xfa/fxfa/xfa_checksum.h
+++ b/xfa/fxfa/xfa_checksum.h
@@ -7,6 +7,8 @@
 #ifndef XFA_FXFA_XFA_CHECKSUM_H_
 #define XFA_FXFA_XFA_CHECKSUM_H_
 
+#include <memory>
+
 #include "core/fdrm/crypto/fx_crypt.h"
 #include "xfa/fde/xml/cfx_saxreader.h"
 #include "xfa/fxfa/fxfa.h"
@@ -70,8 +72,8 @@
   CFX_ByteString GetChecksum() const;
 
  protected:
-  CFX_SAXReader* m_pSAXReader;
-  CRYPT_sha1_context* m_pByteContext;
+  std::unique_ptr<CFX_SAXReader> m_pSAXReader;
+  std::unique_ptr<CRYPT_sha1_context> m_pByteContext;
   CFX_ByteString m_bsChecksum;
 };