Move CPDFSDK_MemoryAccess to fxcrt.

Rename it CFX_ReadOnlyMemoryStream and swap out one use of CFX_MemoryStream.

BUG=pdfium:263

Change-Id: I15012df156a6a4d7c36f6fd58f32c355eae5fa1a
Reviewed-on: https://pdfium-review.googlesource.com/39878
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn
index f08ce43..c3576b4 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -131,8 +131,6 @@
     "fpdfsdk/cpdfsdk_helpers.h",
     "fpdfsdk/cpdfsdk_interform.cpp",
     "fpdfsdk/cpdfsdk_interform.h",
-    "fpdfsdk/cpdfsdk_memoryaccess.cpp",
-    "fpdfsdk/cpdfsdk_memoryaccess.h",
     "fpdfsdk/cpdfsdk_pageview.cpp",
     "fpdfsdk/cpdfsdk_pageview.h",
     "fpdfsdk/cpdfsdk_widget.cpp",
@@ -852,6 +850,8 @@
     "core/fxcrt/cfx_fixedbufgrow.h",
     "core/fxcrt/cfx_memorystream.cpp",
     "core/fxcrt/cfx_memorystream.h",
+    "core/fxcrt/cfx_readonlymemorystream.cpp",
+    "core/fxcrt/cfx_readonlymemorystream.h",
     "core/fxcrt/cfx_seekablemultistream.cpp",
     "core/fxcrt/cfx_seekablemultistream.h",
     "core/fxcrt/cfx_seekablestreamproxy.cpp",
diff --git a/core/fpdfdoc/cpdf_metadata.cpp b/core/fpdfdoc/cpdf_metadata.cpp
index 5ef7312..b9a9296 100644
--- a/core/fpdfdoc/cpdf_metadata.cpp
+++ b/core/fpdfdoc/cpdf_metadata.cpp
@@ -8,7 +8,7 @@
 
 #include "core/fpdfapi/parser/cpdf_stream.h"
 #include "core/fpdfapi/parser/cpdf_stream_acc.h"
-#include "core/fxcrt/cfx_memorystream.h"
+#include "core/fxcrt/cfx_readonlymemorystream.h"
 #include "core/fxcrt/fx_codepage.h"
 #include "core/fxcrt/xml/cfx_xmldocument.h"
 #include "core/fxcrt/xml/cfx_xmlelement.h"
@@ -67,8 +67,8 @@
   auto pAcc = pdfium::MakeRetain<CPDF_StreamAcc>(stream_.Get());
   pAcc->LoadAllDataFiltered();
 
-  auto stream = pdfium::MakeRetain<CFX_MemoryStream>(pAcc->GetData(),
-                                                     pAcc->GetSize(), false);
+  auto stream = pdfium::MakeRetain<CFX_ReadOnlyMemoryStream>(pAcc->GetData(),
+                                                             pAcc->GetSize());
   CFX_XMLParser parser(stream);
   std::unique_ptr<CFX_XMLDocument> doc = parser.Parse();
   if (!doc)
diff --git a/core/fxcrt/cfx_readonlymemorystream.cpp b/core/fxcrt/cfx_readonlymemorystream.cpp
new file mode 100644
index 0000000..1d09759
--- /dev/null
+++ b/core/fxcrt/cfx_readonlymemorystream.cpp
@@ -0,0 +1,34 @@
+// Copyright 2018 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
+
+#include "core/fxcrt/cfx_readonlymemorystream.h"
+
+#include "core/fxcrt/fx_safe_types.h"
+
+CFX_ReadOnlyMemoryStream::CFX_ReadOnlyMemoryStream(const uint8_t* pBuf,
+                                                   FX_FILESIZE size)
+    : m_pBuf(pBuf), m_size(size) {}
+
+CFX_ReadOnlyMemoryStream::~CFX_ReadOnlyMemoryStream() = default;
+
+FX_FILESIZE CFX_ReadOnlyMemoryStream::GetSize() {
+  return m_size;
+}
+
+bool CFX_ReadOnlyMemoryStream::ReadBlock(void* buffer,
+                                         FX_FILESIZE offset,
+                                         size_t size) {
+  if (offset < 0)
+    return false;
+
+  FX_SAFE_FILESIZE newPos = pdfium::base::checked_cast<FX_FILESIZE>(size);
+  newPos += offset;
+  if (!newPos.IsValid() || newPos.ValueOrDie() > m_size)
+    return false;
+
+  memcpy(buffer, m_pBuf + offset, size);
+  return true;
+}
diff --git a/fpdfsdk/cpdfsdk_memoryaccess.h b/core/fxcrt/cfx_readonlymemorystream.h
similarity index 62%
rename from fpdfsdk/cpdfsdk_memoryaccess.h
rename to core/fxcrt/cfx_readonlymemorystream.h
index ed9c80a..e9d1822 100644
--- a/fpdfsdk/cpdfsdk_memoryaccess.h
+++ b/core/fxcrt/cfx_readonlymemorystream.h
@@ -4,12 +4,13 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef FPDFSDK_CPDFSDK_MEMORYACCESS_H_
-#define FPDFSDK_CPDFSDK_MEMORYACCESS_H_
+#ifndef CORE_FXCRT_CFX_READONLYMEMORYSTREAM_H_
+#define CORE_FXCRT_CFX_READONLYMEMORYSTREAM_H_
 
 #include "core/fxcrt/fx_stream.h"
+#include "core/fxcrt/retain_ptr.h"
 
-class CPDFSDK_MemoryAccess final : public IFX_SeekableReadStream {
+class CFX_ReadOnlyMemoryStream final : public IFX_SeekableReadStream {
  public:
   template <typename T, typename... Args>
   friend RetainPtr<T> pdfium::MakeRetain(Args&&... args);
@@ -19,11 +20,11 @@
   bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override;
 
  private:
-  CPDFSDK_MemoryAccess(const uint8_t* pBuf, FX_FILESIZE size);
-  ~CPDFSDK_MemoryAccess() override;
+  CFX_ReadOnlyMemoryStream(const uint8_t* pBuf, FX_FILESIZE size);
+  ~CFX_ReadOnlyMemoryStream() override;
 
   const uint8_t* const m_pBuf;
   const FX_FILESIZE m_size;
 };
 
-#endif  // FPDFSDK_CPDFSDK_MEMORYACCESS_H_
+#endif  // CORE_FXCRT_CFX_READONLYMEMORYSTREAM_H_
diff --git a/fpdfsdk/cpdfsdk_memoryaccess.cpp b/fpdfsdk/cpdfsdk_memoryaccess.cpp
deleted file mode 100644
index 2a5b7ae..0000000
--- a/fpdfsdk/cpdfsdk_memoryaccess.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2018 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "fpdfsdk/cpdfsdk_memoryaccess.h"
-
-CPDFSDK_MemoryAccess::CPDFSDK_MemoryAccess(const uint8_t* pBuf,
-                                           FX_FILESIZE size)
-    : m_pBuf(pBuf), m_size(size) {}
-
-CPDFSDK_MemoryAccess::~CPDFSDK_MemoryAccess() = default;
-
-FX_FILESIZE CPDFSDK_MemoryAccess::GetSize() {
-  return m_size;
-}
-
-bool CPDFSDK_MemoryAccess::ReadBlock(void* buffer,
-                                     FX_FILESIZE offset,
-                                     size_t size) {
-  if (offset < 0)
-    return false;
-
-  FX_SAFE_FILESIZE newPos = pdfium::base::checked_cast<FX_FILESIZE>(size);
-  newPos += offset;
-  if (!newPos.IsValid() || newPos.ValueOrDie() > m_size)
-    return false;
-
-  memcpy(buffer, m_pBuf + offset, size);
-  return true;
-}
diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp
index c44d582..bd8cfe1 100644
--- a/fpdfsdk/fpdf_view.cpp
+++ b/fpdfsdk/fpdf_view.cpp
@@ -26,6 +26,7 @@
 #include "core/fpdfdoc/cpdf_nametree.h"
 #include "core/fpdfdoc/cpdf_occontext.h"
 #include "core/fpdfdoc/cpdf_viewerpreferences.h"
+#include "core/fxcrt/cfx_readonlymemorystream.h"
 #include "core/fxcrt/fx_stream.h"
 #include "core/fxcrt/fx_system.h"
 #include "core/fxcrt/unowned_ptr.h"
@@ -35,7 +36,6 @@
 #include "fpdfsdk/cpdfsdk_customaccess.h"
 #include "fpdfsdk/cpdfsdk_formfillenvironment.h"
 #include "fpdfsdk/cpdfsdk_helpers.h"
-#include "fpdfsdk/cpdfsdk_memoryaccess.h"
 #include "fpdfsdk/cpdfsdk_pageview.h"
 #include "fpdfsdk/ipdfsdk_pauseadapter.h"
 #include "fxjs/ijs_runtime.h"
@@ -269,7 +269,7 @@
 
 FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV
 FPDF_LoadMemDocument(const void* data_buf, int size, FPDF_BYTESTRING password) {
-  return LoadDocumentImpl(pdfium::MakeRetain<CPDFSDK_MemoryAccess>(
+  return LoadDocumentImpl(pdfium::MakeRetain<CFX_ReadOnlyMemoryStream>(
                               static_cast<const uint8_t*>(data_buf), size),
                           password);
 }