Prefer retaining layout item in CXFA_FFField::OnChar().

This is more reliable than observing its destruction.

Bug: chromium:1052651
Change-Id: Ic759e1eac74b1aa8213e450b87d8c88d298ddea3
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/66690
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fxfa/cxfa_fffield.cpp b/xfa/fxfa/cxfa_fffield.cpp
index 4fb6141..d83f8da 100644
--- a/xfa/fxfa/cxfa_fffield.cpp
+++ b/xfa/fxfa/cxfa_fffield.cpp
@@ -567,6 +567,7 @@
 }
 
 bool CXFA_FFField::OnChar(uint32_t dwChar, uint32_t dwFlags) {
+  RetainPtr<CXFA_ContentLayoutItem> pWatched(m_pLayoutItem.Get());
   if (!GetDoc()->GetXFADoc()->IsInteractive())
     return false;
   if (dwChar == XFA_FWL_VKEY_Tab)
@@ -576,11 +577,10 @@
   if (!m_pNode->IsOpenAccess())
     return false;
 
-  ObservedPtr<CXFA_FFField> pWatched(this);
   SendMessageToFWLWidget(pdfium::MakeUnique<CFWL_MessageKey>(
       GetNormalWidget(), FWL_KeyCommand::Char, dwFlags, dwChar));
 
-  return !!pWatched;
+  return true;
 }
 
 FWL_WidgetHit CXFA_FFField::HitTest(const CFX_PointF& point) {