diff --git a/xfa/fgas/layout/fgas_linebreak.cpp b/xfa/fgas/layout/fgas_linebreak.cpp
index 7c34681..a13a948 100644
--- a/xfa/fgas/layout/fgas_linebreak.cpp
+++ b/xfa/fgas/layout/fgas_linebreak.cpp
@@ -20,7 +20,7 @@
 #define FX_LBPB FX_LINEBREAKTYPE::kPROHIBITED_BRK
 #define FX_LBHS FX_LINEBREAKTYPE::kHANGUL_SPACE_BRK
 
-const FX_LINEBREAKTYPE gs_FX_LineBreak_PairTable[38][38] = {
+const FX_LINEBREAKTYPE kFX_LineBreak_PairTable[38][38] = {
     {FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB,
      FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB,
      FX_LBPB, FX_LBPB, FX_LBPB, FX_LBCP, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB,
@@ -227,7 +227,7 @@
                                           FX_BREAKPROPERTY next_char) {
   size_t row = static_cast<size_t>(curr_char);
   size_t col = static_cast<size_t>(next_char);
-  DCHECK(row < pdfium::size(gs_FX_LineBreak_PairTable));
-  DCHECK(col < pdfium::size(gs_FX_LineBreak_PairTable[0]));
-  return gs_FX_LineBreak_PairTable[row][col];
+  DCHECK(row < pdfium::size(kFX_LineBreak_PairTable));
+  DCHECK(col < pdfium::size(kFX_LineBreak_PairTable[0]));
+  return kFX_LineBreak_PairTable[row][col];
 }
diff --git a/xfa/fxfa/cxfa_ffdocview.cpp b/xfa/fxfa/cxfa_ffdocview.cpp
index e04e69c..5c24b66 100644
--- a/xfa/fxfa/cxfa_ffdocview.cpp
+++ b/xfa/fxfa/cxfa_ffdocview.cpp
@@ -43,7 +43,7 @@
 #include "xfa/fxfa/parser/cxfa_validate.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
 
-const XFA_AttributeValue gs_EventActivity[] = {
+const XFA_AttributeValue kXFAEventActivity[] = {
     XFA_AttributeValue::Click,      XFA_AttributeValue::Change,
     XFA_AttributeValue::DocClose,   XFA_AttributeValue::DocReady,
     XFA_AttributeValue::Enter,      XFA_AttributeValue::Exit,
@@ -375,7 +375,7 @@
       return pNode->ExecuteScript(pDocView, calc->GetScriptIfExists(), pParam);
     }
     default:
-      return pNode->ProcessEvent(pDocView, gs_EventActivity[pParam->m_eType],
+      return pNode->ProcessEvent(pDocView, kXFAEventActivity[pParam->m_eType],
                                  pParam);
   }
 }
diff --git a/xfa/fxfa/cxfa_ffdocview.h b/xfa/fxfa/cxfa_ffdocview.h
index d2030eb..6eb69cb 100644
--- a/xfa/fxfa/cxfa_ffdocview.h
+++ b/xfa/fxfa/cxfa_ffdocview.h
@@ -26,7 +26,8 @@
 class CXFA_Node;
 class CXFA_ViewLayoutItem;
 
-extern const XFA_AttributeValue gs_EventActivity[];
+extern const XFA_AttributeValue kXFAEventActivity[];
+
 enum XFA_DOCVIEW_LAYOUTSTATUS {
   XFA_DOCVIEW_LAYOUTSTATUS_None,
   XFA_DOCVIEW_LAYOUTSTATUS_Start,
diff --git a/xfa/fxfa/cxfa_ffwidgethandler.cpp b/xfa/fxfa/cxfa_ffwidgethandler.cpp
index 4fe4bc3..f1afca3 100644
--- a/xfa/fxfa/cxfa_ffwidgethandler.cpp
+++ b/xfa/fxfa/cxfa_ffwidgethandler.cpp
@@ -217,7 +217,7 @@
     default:
       break;
   }
-  return !pNode->GetEventByActivity(gs_EventActivity[eEventType], false)
+  return !pNode->GetEventByActivity(kXFAEventActivity[eEventType], false)
               .empty();
 }
 
@@ -248,5 +248,5 @@
       break;
   }
   return pNode->ProcessEvent(m_pDocView.Get(),
-                             gs_EventActivity[pParam->m_eType], pParam);
+                             kXFAEventActivity[pParam->m_eType], pParam);
 }
diff --git a/xfa/fxfa/fm2js/cxfa_fmexpression.cpp b/xfa/fxfa/fm2js/cxfa_fmexpression.cpp
index 030bff5..89f3d43 100644
--- a/xfa/fxfa/fm2js/cxfa_fmexpression.cpp
+++ b/xfa/fxfa/fm2js/cxfa_fmexpression.cpp
@@ -51,7 +51,7 @@
   uint32_t m_dParameters;
 };
 
-const XFA_FMSOMMethod gs_FMSomMethods[] = {
+const XFA_FMSOMMethod kFMSomMethods[] = {
     {L"absPage", 0x01},
     {L"absPageInBatch", 0x01},
     {L"absPageSpan", 0x01},
@@ -445,11 +445,11 @@
 uint32_t CXFA_FMCallExpression::IsMethodWithObjParam(
     const WideString& methodName) const {
   const XFA_FMSOMMethod* result = std::lower_bound(
-      std::begin(gs_FMSomMethods), std::end(gs_FMSomMethods), methodName,
+      std::begin(kFMSomMethods), std::end(kFMSomMethods), methodName,
       [](const XFA_FMSOMMethod iter, const WideString& val) {
         return val.Compare(iter.m_wsSomMethodName) > 0;
       });
-  if (result != std::end(gs_FMSomMethods) &&
+  if (result != std::end(kFMSomMethods) &&
       methodName == result->m_wsSomMethodName) {
     return result->m_dParameters;
   }
