diff --git a/testing/fuzzers/BUILD.gn b/testing/fuzzers/BUILD.gn
index aba2375..f82c395 100644
--- a/testing/fuzzers/BUILD.gn
+++ b/testing/fuzzers/BUILD.gn
@@ -30,7 +30,6 @@
   "pdf_streamparser_fuzzer",
   "pdf_xml_fuzzer",
   "pdfium_fuzzer",
-  "pdfium_lpm_fuzzer",
 ]
 if (pdf_enable_v8) {
   fuzzer_list += [
@@ -48,6 +47,7 @@
       "pdf_formcalc_context_fuzzer",
       "pdf_formcalc_fuzzer",
       "pdfium_xfa_fuzzer",
+      "pdfium_xfa_lpm_fuzzer",
     ]
     if (pdf_enable_xfa_bmp) {
       fuzzer_list += [ "pdf_codec_bmp_fuzzer" ]
@@ -399,6 +399,18 @@
       ]
       public_fuzzer = true
     }
+
+    pdfium_fuzzer("pdfium_xfa_lpm_fuzzer") {
+      sources = [
+        "pdfium_xfa_lpm_fuzz_stub.cc",
+        "pdfium_xfa_lpm_fuzz_stub.h",
+      ]
+      deps = [
+        ":fuzzer_helper",
+        "../../:pdfium_public_headers",
+      ]
+      public_fuzzer = true
+    }
   }
 }
 
@@ -539,15 +551,3 @@
   ]
   public_fuzzer = true
 }
-
-pdfium_fuzzer("pdfium_lpm_fuzzer") {
-  sources = [
-    "pdfium_lpm_fuzz_stub.cc",
-    "pdfium_lpm_fuzz_stub.h",
-  ]
-  deps = [
-    ":fuzzer_helper",
-    "../../:pdfium_public_headers",
-  ]
-  public_fuzzer = true
-}
diff --git a/testing/fuzzers/pdfium_lpm_fuzz_stub.cc b/testing/fuzzers/pdfium_lpm_fuzz_stub.cc
deleted file mode 100644
index 0989005..0000000
--- a/testing/fuzzers/pdfium_lpm_fuzz_stub.cc
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "testing/fuzzers/pdfium_fuzzer_helper.h"
-#include "testing/fuzzers/pdfium_lpm_fuzz_stub.h"
-
-class PDFiumLpmFuzzStub : public PDFiumFuzzerHelper {
- public:
-  PDFiumLpmFuzzStub() = default;
-  ~PDFiumLpmFuzzStub() override = default;
-
-  int GetFormCallbackVersion() const override { return 1; }
-};
-
-void FuzzPdf(const char* pdf, size_t size) {
-  PDFiumLpmFuzzStub fuzz_stub;
-  fuzz_stub.RenderPdf(pdf, size);
-}
diff --git a/testing/fuzzers/pdfium_lpm_fuzz_stub.h b/testing/fuzzers/pdfium_lpm_fuzz_stub.h
deleted file mode 100644
index e5f9416..0000000
--- a/testing/fuzzers/pdfium_lpm_fuzz_stub.h
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef TESTING_FUZZERS_PDFIUM_LPM_FUZZ_STUB_H_
-#define TESTING_FUZZERS_PDFIUM_LPM_FUZZ_STUB_H_
-
-#include "public/fpdfview.h"
-
-// LPM defines LLVMFuzzerTestOneInput, this function should be used by the LPM
-// harness to pass the deserialized proto to PDFium.
-FPDF_EXPORT void FuzzPdf(const char* pdf, size_t size);
-
-#endif  // TESTING_FUZZERS_PDFIUM_LPM_FUZZ_STUB_H_
diff --git a/testing/fuzzers/pdfium_xfa_lpm_fuzz_stub.cc b/testing/fuzzers/pdfium_xfa_lpm_fuzz_stub.cc
new file mode 100644
index 0000000..c4b55b6
--- /dev/null
+++ b/testing/fuzzers/pdfium_xfa_lpm_fuzz_stub.cc
@@ -0,0 +1,28 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "public/fpdf_formfill.h"
+#include "testing/fuzzers/pdfium_fuzzer_helper.h"
+#include "testing/fuzzers/pdfium_xfa_lpm_fuzz_stub.h"
+
+class PDFiumLpmFuzzStub : public PDFiumFuzzerHelper {
+ public:
+  PDFiumLpmFuzzStub() = default;
+  ~PDFiumLpmFuzzStub() override = default;
+
+  int GetFormCallbackVersion() const override { return 2; }
+  // Allow fuzzer to fuzz XFA but don't require it to fuzz.
+  bool OnFormFillEnvLoaded(FPDF_DOCUMENT doc) override {
+    FPDF_LoadXFA(doc);
+    return true;
+  }
+};
+
+void PdfiumXFALPMFuzzStub(const char* pdf, size_t size) {
+  PDFiumLpmFuzzStub fuzz_stub;
+  fuzz_stub.RenderPdf(pdf, size);
+}
diff --git a/testing/fuzzers/pdfium_xfa_lpm_fuzz_stub.h b/testing/fuzzers/pdfium_xfa_lpm_fuzz_stub.h
new file mode 100644
index 0000000..bb6bf1d
--- /dev/null
+++ b/testing/fuzzers/pdfium_xfa_lpm_fuzz_stub.h
@@ -0,0 +1,14 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef TESTING_FUZZERS_PDFIUM_XFA_LPM_FUZZ_STUB_H_
+#define TESTING_FUZZERS_PDFIUM_XFA_LPM_FUZZ_STUB_H_
+
+#include "public/fpdfview.h"
+
+// LPM defines LLVMFuzzerTestOneInput, this function should be used by the LPM
+// harness to pass the deserialized proto to PDFium.
+FPDF_EXPORT void PdfiumXFALPMFuzzStub(const char* pdf, size_t size);
+
+#endif  // TESTING_FUZZERS_PDFIUM_XFA_LPM_FUZZ_STUB_H_
