diff --git a/core/fpdfapi/parser/BUILD.gn b/core/fpdfapi/parser/BUILD.gn
index 6bfac18..af141a8 100644
--- a/core/fpdfapi/parser/BUILD.gn
+++ b/core/fpdfapi/parser/BUILD.gn
@@ -86,6 +86,12 @@
   allow_circular_includes_from = []
   visibility = [ "../../../*" ]
 
+  if (pdf_enable_xfa) {
+    sources += [
+      "cpdf_seekablemultistream.cpp",
+      "cpdf_seekablemultistream.h",
+    ]
+  }
   if (pdf_use_skia || pdf_use_skia_paths) {
     allow_circular_includes_from += [ "../../fxge" ]
   }
@@ -117,6 +123,9 @@
   ]
   pdfium_root_dir = "../../../"
 
+  if (pdf_enable_xfa) {
+    sources += [ "cpdf_seekablemultistream_unittest.cpp" ]
+  }
   if (is_clang) {
     # Suppress no override warning for overridden functions.
     cflags = [ "-Wno-inconsistent-missing-override" ]
diff --git a/core/fxcrt/cfx_seekablemultistream.cpp b/core/fpdfapi/parser/cpdf_seekablemultistream.cpp
similarity index 70%
rename from core/fxcrt/cfx_seekablemultistream.cpp
rename to core/fpdfapi/parser/cpdf_seekablemultistream.cpp
index f600854..d2a0417 100644
--- a/core/fxcrt/cfx_seekablemultistream.cpp
+++ b/core/fpdfapi/parser/cpdf_seekablemultistream.cpp
@@ -4,7 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "core/fxcrt/cfx_seekablemultistream.h"
+#include "core/fpdfapi/parser/cpdf_seekablemultistream.h"
 
 #include <algorithm>
 
@@ -12,7 +12,7 @@
 #include "third_party/base/logging.h"
 #include "third_party/base/stl_util.h"
 
-CFX_SeekableMultiStream::CFX_SeekableMultiStream(
+CPDF_SeekableMultiStream::CPDF_SeekableMultiStream(
     const std::vector<const CPDF_Stream*>& streams) {
   for (const CPDF_Stream* pStream : streams) {
     m_Data.push_back(pdfium::MakeRetain<CPDF_StreamAcc>(pStream));
@@ -20,18 +20,18 @@
   }
 }
 
-CFX_SeekableMultiStream::~CFX_SeekableMultiStream() {}
+CPDF_SeekableMultiStream::~CPDF_SeekableMultiStream() {}
 
-FX_FILESIZE CFX_SeekableMultiStream::GetSize() {
+FX_FILESIZE CPDF_SeekableMultiStream::GetSize() {
   uint32_t dwSize = 0;
   for (const auto& acc : m_Data)
     dwSize += acc->GetSize();
   return dwSize;
 }
 
-bool CFX_SeekableMultiStream::ReadBlockAtOffset(void* buffer,
-                                                FX_FILESIZE offset,
-                                                size_t size) {
+bool CPDF_SeekableMultiStream::ReadBlockAtOffset(void* buffer,
+                                                 FX_FILESIZE offset,
+                                                 size_t size) {
   int32_t iCount = pdfium::CollectionSize<int32_t>(m_Data);
   int32_t index = 0;
   while (index < iCount) {
@@ -59,27 +59,27 @@
   return false;
 }
 
-size_t CFX_SeekableMultiStream::ReadBlock(void* buffer, size_t size) {
+size_t CPDF_SeekableMultiStream::ReadBlock(void* buffer, size_t size) {
   NOTREACHED();
   return 0;
 }
 
-FX_FILESIZE CFX_SeekableMultiStream::GetPosition() {
+FX_FILESIZE CPDF_SeekableMultiStream::GetPosition() {
   return 0;
 }
 
-bool CFX_SeekableMultiStream::IsEOF() {
+bool CPDF_SeekableMultiStream::IsEOF() {
   return false;
 }
 
-bool CFX_SeekableMultiStream::Flush() {
+bool CPDF_SeekableMultiStream::Flush() {
   NOTREACHED();
   return false;
 }
 
-bool CFX_SeekableMultiStream::WriteBlockAtOffset(const void* pData,
-                                                 FX_FILESIZE offset,
-                                                 size_t size) {
+bool CPDF_SeekableMultiStream::WriteBlockAtOffset(const void* pData,
+                                                  FX_FILESIZE offset,
+                                                  size_t size) {
   NOTREACHED();
   return false;
 }
diff --git a/core/fxcrt/cfx_seekablemultistream.h b/core/fpdfapi/parser/cpdf_seekablemultistream.h
similarity index 75%
rename from core/fxcrt/cfx_seekablemultistream.h
rename to core/fpdfapi/parser/cpdf_seekablemultistream.h
index 2f8b874..30a8479 100644
--- a/core/fxcrt/cfx_seekablemultistream.h
+++ b/core/fpdfapi/parser/cpdf_seekablemultistream.h
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef CORE_FXCRT_CFX_SEEKABLEMULTISTREAM_H_
-#define CORE_FXCRT_CFX_SEEKABLEMULTISTREAM_H_
+#ifndef CORE_FPDFAPI_PARSER_CPDF_SEEKABLEMULTISTREAM_H_
+#define CORE_FPDFAPI_PARSER_CPDF_SEEKABLEMULTISTREAM_H_
 
 #include <vector>
 
@@ -15,11 +15,11 @@
 class CPDF_Stream;
 class CPDF_StreamAcc;
 
-class CFX_SeekableMultiStream final : public IFX_SeekableStream {
+class CPDF_SeekableMultiStream final : public IFX_SeekableStream {
  public:
-  explicit CFX_SeekableMultiStream(
+  explicit CPDF_SeekableMultiStream(
       const std::vector<const CPDF_Stream*>& streams);
-  ~CFX_SeekableMultiStream() override;
+  ~CPDF_SeekableMultiStream() override;
 
   // IFX_SeekableReadStream
   FX_FILESIZE GetPosition() override;
@@ -38,4 +38,4 @@
   std::vector<RetainPtr<CPDF_StreamAcc>> m_Data;
 };
 
-#endif  // CORE_FXCRT_CFX_SEEKABLEMULTISTREAM_H_
+#endif  // CORE_FPDFAPI_PARSER_CPDF_SEEKABLEMULTISTREAM_H_
diff --git a/core/fxcrt/cfx_seekablemultistream_unittest.cpp b/core/fpdfapi/parser/cpdf_seekablemultistream_unittest.cpp
similarity index 89%
rename from core/fxcrt/cfx_seekablemultistream_unittest.cpp
rename to core/fpdfapi/parser/cpdf_seekablemultistream_unittest.cpp
index ad6fa2f..4f806fa 100644
--- a/core/fxcrt/cfx_seekablemultistream_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_seekablemultistream_unittest.cpp
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "core/fxcrt/cfx_seekablemultistream.h"
+#include "core/fpdfapi/parser/cpdf_seekablemultistream.h"
 
 #include <memory>
 #include <vector>
@@ -12,9 +12,9 @@
 #include "testing/gtest/include/gtest/gtest.h"
 #include "third_party/base/ptr_util.h"
 
-TEST(CFX_SeekableMultiStreamTest, NoStreams) {
+TEST(CPDFSeekableMultiStreamTest, NoStreams) {
   std::vector<const CPDF_Stream*> streams;
-  auto fileread = pdfium::MakeRetain<CFX_SeekableMultiStream>(streams);
+  auto fileread = pdfium::MakeRetain<CPDF_SeekableMultiStream>(streams);
 
   uint8_t output_buffer[16];
   memset(output_buffer, 0xbd, sizeof(output_buffer));
@@ -26,7 +26,7 @@
   std::vector<const CPDF_Stream*> streams;
   auto stream1 = pdfium::MakeRetain<CPDF_Stream>();
   streams.push_back(stream1.Get());
-  auto fileread = pdfium::MakeRetain<CFX_SeekableMultiStream>(streams);
+  auto fileread = pdfium::MakeRetain<CPDF_SeekableMultiStream>(streams);
 
   uint8_t output_buffer[16];
   memset(output_buffer, 0xbd, sizeof(output_buffer));
@@ -51,7 +51,7 @@
   streams.push_back(stream1.Get());
   streams.push_back(stream2.Get());
   streams.push_back(stream3.Get());
-  auto fileread = pdfium::MakeRetain<CFX_SeekableMultiStream>(streams);
+  auto fileread = pdfium::MakeRetain<CPDF_SeekableMultiStream>(streams);
 
   uint8_t output_buffer[16];
   memset(output_buffer, 0xbd, sizeof(output_buffer));
diff --git a/core/fxcrt/BUILD.gn b/core/fxcrt/BUILD.gn
index e4b1154..0b31e16 100644
--- a/core/fxcrt/BUILD.gn
+++ b/core/fxcrt/BUILD.gn
@@ -126,21 +126,6 @@
   }
 }
 
-if (pdf_enable_xfa) {
-  jumbo_source_set("seekablemultistream") {
-    sources = [
-      "cfx_seekablemultistream.cpp",
-      "cfx_seekablemultistream.h",
-    ]
-    deps = [
-      ":fxcrt",
-      "../fpdfapi/parser",
-    ]
-    configs += [ "../../:pdfium_core_config" ]
-    visibility = [ "../../*" ]
-  }
-}
-
 pdfium_unittest_source_set("unittests") {
   sources = [
     "autorestorer_unittest.cpp",
@@ -181,13 +166,11 @@
   if (pdf_enable_xfa) {
     sources += [
       "cfx_memorystream_unittest.cpp",
-      "cfx_seekablemultistream_unittest.cpp",
       "css/cfx_cssdeclaration_unittest.cpp",
       "css/cfx_cssstylesheet_unittest.cpp",
       "css/cfx_cssvaluelistparser_unittest.cpp",
     ]
     deps += [
-      ":seekablemultistream",
       "../fpdfapi/parser",
       "css",
     ]
diff --git a/xfa/fxfa/BUILD.gn b/xfa/fxfa/BUILD.gn
index 24aa711..f3c132d 100644
--- a/xfa/fxfa/BUILD.gn
+++ b/xfa/fxfa/BUILD.gn
@@ -101,7 +101,6 @@
     "../../core/fpdfdoc",
     "../../core/fxcodec",
     "../../core/fxcrt",
-    "../../core/fxcrt:seekablemultistream",
     "../../core/fxcrt/css",
     "../../core/fxge",
     "../../fxbarcode",
diff --git a/xfa/fxfa/cxfa_ffdoc.cpp b/xfa/fxfa/cxfa_ffdoc.cpp
index ebc3356..a71d7ec 100644
--- a/xfa/fxfa/cxfa_ffdoc.cpp
+++ b/xfa/fxfa/cxfa_ffdoc.cpp
@@ -13,11 +13,11 @@
 #include "core/fpdfapi/parser/cpdf_array.h"
 #include "core/fpdfapi/parser/cpdf_dictionary.h"
 #include "core/fpdfapi/parser/cpdf_document.h"
+#include "core/fpdfapi/parser/cpdf_seekablemultistream.h"
 #include "core/fpdfapi/parser/cpdf_stream.h"
 #include "core/fpdfapi/parser/cpdf_stream_acc.h"
 #include "core/fpdfdoc/cpdf_nametree.h"
 #include "core/fxcrt/cfx_readonlymemorystream.h"
-#include "core/fxcrt/cfx_seekablemultistream.h"
 #include "core/fxcrt/fx_extension.h"
 #include "core/fxcrt/xml/cfx_xmldocument.h"
 #include "core/fxcrt/xml/cfx_xmlelement.h"
@@ -120,7 +120,7 @@
   if (xfaStreams.empty())
     return false;
 
-  auto stream = pdfium::MakeRetain<CFX_SeekableMultiStream>(xfaStreams);
+  auto stream = pdfium::MakeRetain<CPDF_SeekableMultiStream>(xfaStreams);
 
   CXFA_DocumentParser parser(m_pDocument.get());
   bool parsed = parser.Parse(stream, XFA_PacketType::Xdp);
