diff --git a/core/fpdfapi/font/cpdf_cidfont.cpp b/core/fpdfapi/font/cpdf_cidfont.cpp
index a8a79d4..221c438 100644
--- a/core/fpdfapi/font/cpdf_cidfont.cpp
+++ b/core/fpdfapi/font/cpdf_cidfont.cpp
@@ -602,7 +602,7 @@
     uint16_t cid = CIDFromCharCode(charcode);
     wchar_t unicode = 0;
     if (m_bCIDIsGID) {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
       if (FontStyleIsSymbolic(m_Flags))
         return cid;
 
@@ -667,7 +667,7 @@
     if (m_Charset == CIDSET_JAPAN1) {
       if (unicode == '\\') {
         unicode = '/';
-#if !defined(OS_MACOSX)
+#if !defined(OS_APPLE)
       } else if (unicode == 0xa5) {
         unicode = 0x5c;
 #endif
diff --git a/core/fpdfapi/font/cpdf_font.cpp b/core/fpdfapi/font/cpdf_font.cpp
index 829f7ca..8953350 100644
--- a/core/fpdfapi/font/cpdf_font.cpp
+++ b/core/fpdfapi/font/cpdf_font.cpp
@@ -115,7 +115,7 @@
   return pString.GetLength();
 }
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
 int CPDF_Font::GlyphFromCharCodeExt(uint32_t charcode) {
   return GlyphFromCharCode(charcode, nullptr);
 }
diff --git a/core/fpdfapi/font/cpdf_font.h b/core/fpdfapi/font/cpdf_font.h
index d504bfe..77d763c 100644
--- a/core/fpdfapi/font/cpdf_font.h
+++ b/core/fpdfapi/font/cpdf_font.h
@@ -88,7 +88,7 @@
   virtual size_t CountChar(ByteStringView pString) const;
   virtual int AppendChar(char* buf, uint32_t charcode) const;
   virtual int GlyphFromCharCode(uint32_t charcode, bool* pVertGlyph) = 0;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   virtual int GlyphFromCharCodeExt(uint32_t charcode);
 #endif
   virtual WideString UnicodeFromCharCode(uint32_t charcode) const;
diff --git a/core/fpdfapi/font/cpdf_type1font.cpp b/core/fpdfapi/font/cpdf_type1font.cpp
index 908d40d..00285e2 100644
--- a/core/fpdfapi/font/cpdf_type1font.cpp
+++ b/core/fpdfapi/font/cpdf_type1font.cpp
@@ -15,13 +15,13 @@
 #include "core/fxge/fx_font.h"
 #include "core/fxge/fx_freetype.h"
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
 #include "core/fxge/apple/fx_mac_impl.h"
 #endif
 
 namespace {
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
 struct GlyphNameMap {
   const char* m_pStrAdobe;    // Raw, POD struct.
   const char* m_pStrUnicode;  // Raw, POD struct.
@@ -41,7 +41,7 @@
   return nullptr;
 }
 
-#endif  // defined(OS_MACOSX)
+#endif  // defined(OS_APPLE)
 
 bool FT_UseType1Charmap(FXFT_FaceRec* face) {
   if (FXFT_Get_Face_CharmapCount(face) == 0) {
@@ -66,7 +66,7 @@
 CPDF_Type1Font::CPDF_Type1Font(CPDF_Document* pDocument,
                                CPDF_Dictionary* pFontDict)
     : CPDF_SimpleFont(pDocument, pFontDict) {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   memset(m_ExtGID, 0xff, sizeof(m_ExtGID));
 #endif
 }
@@ -111,7 +111,7 @@
   return LoadCommon();
 }
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
 int CPDF_Type1Font::GlyphFromCharCodeExt(uint32_t charcode) {
   if (charcode > 0xff)
     return -1;
@@ -125,7 +125,7 @@
   if (!m_Font.GetFaceRec())
     return;
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   bool bCoreText = true;
   CQuartz2D& quartz2d =
       static_cast<CApplePlatform*>(CFX_GEModule::Get()->GetPlatform())
@@ -149,7 +149,7 @@
           uint16_t unicode = prefix[j] * 256 + charcode;
           m_GlyphIndex[charcode] =
               FT_Get_Char_Index(m_Font.GetFaceRec(), unicode);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
           CalcExtGID(charcode);
 #endif
           if (m_GlyphIndex[charcode]) {
@@ -159,7 +159,7 @@
         }
       }
       if (bGotOne) {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
         if (!bCoreText)
           memcpy(m_ExtGID, m_GlyphIndex, 256);
 #endif
@@ -179,25 +179,25 @@
       m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name));
       m_GlyphIndex[charcode] = FT_Get_Char_Index(
           m_Font.GetFaceRec(), m_Encoding.UnicodeFromCharCode(charcode));
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
       CalcExtGID(charcode);
 #endif
       if (m_GlyphIndex[charcode] == 0 && strcmp(name, ".notdef") == 0) {
         m_Encoding.SetUnicode(charcode, 0x20);
         m_GlyphIndex[charcode] = FT_Get_Char_Index(m_Font.GetFaceRec(), 0x20);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
         CalcExtGID(charcode);
 #endif
       }
     }
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     if (!bCoreText)
       memcpy(m_ExtGID, m_GlyphIndex, 256);
 #endif
     return;
   }
   FT_UseType1Charmap(m_Font.GetFaceRec());
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   if (bCoreText) {
     if (FontStyleIsSymbolic(m_Flags)) {
       for (uint32_t charcode = 0; charcode < 256; charcode++) {
@@ -263,7 +263,7 @@
     }
     return;
   }
-#endif  // defined(OS_MACOSX)
+#endif  // defined(OS_APPLE)
   if (FontStyleIsSymbolic(m_Flags)) {
     for (int charcode = 0; charcode < 256; charcode++) {
       const char* name =
@@ -290,7 +290,7 @@
         }
       }
     }
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     if (!bCoreText)
       memcpy(m_ExtGID, m_GlyphIndex, 256);
 
@@ -319,7 +319,7 @@
       m_GlyphIndex[charcode] = 0xffff;
     }
   }
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   if (!bCoreText)
     memcpy(m_ExtGID, m_GlyphIndex, 256);
 #endif
@@ -335,7 +335,7 @@
          CFX_FontMapper::IsFixedFont(m_Base14Font.value());
 }
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
 void CPDF_Type1Font::SetExtGID(const char* name, uint32_t charcode) {
   CFStringRef name_ct = CFStringCreateWithCStringNoCopy(
       kCFAllocatorDefault, name, kCFStringEncodingASCII, kCFAllocatorNull);
@@ -352,4 +352,4 @@
   name_glyph[255] = 0;
   SetExtGID(name_glyph, charcode);
 }
-#endif  // defined(OS_MACOSX)
+#endif  // defined(OS_APPLE)
diff --git a/core/fpdfapi/font/cpdf_type1font.h b/core/fpdfapi/font/cpdf_type1font.h
index 49e5d2c..51c09ba 100644
--- a/core/fpdfapi/font/cpdf_type1font.h
+++ b/core/fpdfapi/font/cpdf_type1font.h
@@ -21,7 +21,7 @@
   bool IsType1Font() const override;
   const CPDF_Type1Font* AsType1Font() const override;
   CPDF_Type1Font* AsType1Font() override;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   int GlyphFromCharCodeExt(uint32_t charcode) override;
 #endif
 
@@ -39,7 +39,7 @@
   bool IsSymbolicFont() const;
   bool IsFixedFont() const;
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   void SetExtGID(const char* name, uint32_t charcode);
   void CalcExtGID(uint32_t charcode);
 
diff --git a/core/fpdfapi/page/cpdf_transferfuncdib.cpp b/core/fpdfapi/page/cpdf_transferfuncdib.cpp
index 7eb42e0..6d4598d 100644
--- a/core/fpdfapi/page/cpdf_transferfuncdib.cpp
+++ b/core/fpdfapi/page/cpdf_transferfuncdib.cpp
@@ -37,7 +37,7 @@
   if (m_pSrc->IsAlphaMask())
     return FXDIB_8bppMask;
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   return m_pSrc->HasAlpha() ? FXDIB_Argb : FXDIB_Rgb32;
 #else
   return m_pSrc->HasAlpha() ? FXDIB_Argb : FXDIB_Rgb;
@@ -67,7 +67,7 @@
           (*dest_buf)[index++] = g0;
           (*dest_buf)[index++] = r0;
         }
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
         index++;
 #endif
       }
@@ -101,7 +101,7 @@
           (*dest_buf)[index++] = m_RampR[src_byte];
         }
         src_buf++;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
         index++;
 #endif
       }
@@ -119,7 +119,7 @@
         (*dest_buf)[index++] = m_RampB[*(src_buf++)];
         (*dest_buf)[index++] = m_RampG[*(src_buf++)];
         (*dest_buf)[index++] = m_RampR[*(src_buf++)];
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
         index++;
 #endif
       }
@@ -136,7 +136,7 @@
         (*dest_buf)[index++] = m_RampR[*(src_buf++)];
         if (!bSkip) {
           (*dest_buf)[index++] = *src_buf;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
         } else {
           index++;
 #endif
@@ -164,7 +164,7 @@
       *dest_buf++ = m_RampR[*(src_buf++)];
     }
   } else {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     if (!m_pSrc->HasAlpha()) {
       for (int i = 0; i < pixels; i++) {
         *dest_buf++ = m_RampB[*(src_buf++)];
@@ -181,7 +181,7 @@
         *dest_buf++ = m_RampR[*(src_buf++)];
         *dest_buf++ = *(src_buf++);
       }
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     }
 #endif
   }
diff --git a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
index ef21cc8..75ae126 100644
--- a/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
+++ b/core/fpdfapi/parser/cpdf_security_handler_embeddertest.cpp
@@ -143,7 +143,7 @@
 TEST_F(CPDFSecurityHandlerEmbedderTest, MAYBE_PasswordAfterGenerateSave) {
 #if defined(OS_WIN)
   const char md5[] = "041c2fb541c8907cc22ce101b686c79e";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   const char md5[] = "1ace03eb7c466c132aacf319cb9d69d3";
 #else
   const char md5[] = "7048dca58e2ed8f93339008b91e4eb4e";
diff --git a/core/fpdfapi/render/charposlist.cpp b/core/fpdfapi/render/charposlist.cpp
index d398ec1..b05b210 100644
--- a/core/fpdfapi/render/charposlist.cpp
+++ b/core/fpdfapi/render/charposlist.cpp
@@ -37,7 +37,7 @@
     text_char_pos.m_GlyphIndex =
         font->GlyphFromCharCode(char_code, &is_vertical_glyph);
     uint32_t glyph_id = text_char_pos.m_GlyphIndex;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     text_char_pos.m_ExtGID = font->GlyphFromCharCodeExt(char_code);
     glyph_id = text_char_pos.m_ExtGID != static_cast<uint32_t>(-1)
                    ? text_char_pos.m_ExtGID
@@ -73,7 +73,7 @@
     if (use_fallback_font) {
       current_font =
           font->GetFontFallback(text_char_pos.m_FallbackFontPosition);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
       text_char_pos.m_ExtGID = text_char_pos.m_GlyphIndex;
 #endif
     } else {
diff --git a/core/fpdfapi/render/cpdf_devicebuffer.cpp b/core/fpdfapi/render/cpdf_devicebuffer.cpp
index 3426f01..3fffb89 100644
--- a/core/fpdfapi/render/cpdf_devicebuffer.cpp
+++ b/core/fpdfapi/render/cpdf_devicebuffer.cpp
@@ -17,7 +17,7 @@
 
 namespace {
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
 constexpr bool kScaleDeviceBuffer = false;
 #else
 constexpr bool kScaleDeviceBuffer = true;
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index 6b0d8c1..5798922 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -1398,7 +1398,7 @@
   int width = pClipRect->right - pClipRect->left;
   int height = pClipRect->bottom - pClipRect->top;
   FXDIB_Format format;
-#if defined(OS_MACOSX) || defined(_SKIA_SUPPORT_) || \
+#if defined(OS_APPLE) || defined(_SKIA_SUPPORT_) || \
     defined(_SKIA_SUPPORT_PATHS_)
   format = bLuminosity ? FXDIB_Rgb32 : FXDIB_8bppMask;
 #else
diff --git a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
index 18005dc..a1d6ee6 100644
--- a/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
+++ b/core/fpdfapi/render/fpdf_progressive_render_embeddertest.cpp
@@ -32,7 +32,7 @@
 #if defined(OS_WIN)
 static constexpr char kAnnotationStampWithApBaseContentChecksum[] =
     "649d6792ea50faf98c013c2d81710595";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
 static constexpr char kAnnotationStampWithApBaseContentChecksum[] =
     "83e9f5222c4c959b0b63a5cd24f773a1";
 #else
@@ -323,7 +323,7 @@
 #if defined(OS_WIN)
   static constexpr char kMD5ContentWithText[] =
       "4245f32cc11748a00fd69852a5e5808d";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   static constexpr char kMD5ContentWithText[] =
       "754a742f10ce0926b766dc3dd47d1f64";
 #else
@@ -369,7 +369,7 @@
 // Note: The fill color rendered for highlight is different from the normal
 // path since highlights have Multiply blend mode, while the other path has
 // Normal blend mode.
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   static constexpr char kMD5ContentWithHighlightFill[] =
       "a820afec9b99d3d3f2e9e9382bbad7c1";
 #else
@@ -392,7 +392,7 @@
 // Note: The stroke color rendered for highlight is different from the normal
 // path since highlights have Multiply blend mode, while the other path has
 // Normal blend mode.
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   static constexpr char kMD5ContentWithHighlight[] =
       "8837bea0b3520164b1784e513c882a2d";
 #else
@@ -430,7 +430,7 @@
 #if defined(OS_WIN)
   static constexpr char kMD5ContentWithStamp[] =
       "71dce8f1221e1d2fe59d74258c3afd54";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   static constexpr char kMD5ContentWithStamp[] =
       "e2d9bef817d366021e5727d9350bde43";
 #else
diff --git a/core/fpdfdoc/cpdf_filespec.cpp b/core/fpdfdoc/cpdf_filespec.cpp
index dd186a2..c961d14 100644
--- a/core/fpdfdoc/cpdf_filespec.cpp
+++ b/core/fpdfdoc/cpdf_filespec.cpp
@@ -19,12 +19,12 @@
 
 namespace {
 
-#if defined(OS_MACOSX) || defined(OS_WIN)
+#if defined(OS_APPLE) || defined(OS_WIN)
 WideString ChangeSlashToPlatform(const wchar_t* str) {
   WideString result;
   while (*str) {
     if (*str == '/') {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
       result += L':';
 #else
       result += L'\\';
@@ -49,7 +49,7 @@
   }
   return result;
 }
-#endif  // defined(OS_MACOSX) || defined(OS_WIN)
+#endif  // defined(OS_APPLE) || defined(OS_WIN)
 
 }  // namespace
 
@@ -68,7 +68,7 @@
   if (filepath.GetLength() <= 1)
     return WideString();
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   if (filepath.First(sizeof("/Mac") - 1) == WideStringView(L"/Mac"))
     return ChangeSlashToPlatform(filepath.c_str() + 1);
   return ChangeSlashToPlatform(filepath.c_str());
@@ -189,7 +189,7 @@
   if (filepath[0] == L'\\')
     return L'/' + ChangeSlashToPDF(filepath.c_str());
   return ChangeSlashToPDF(filepath.c_str());
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   if (filepath.First(sizeof("Mac") - 1).EqualsASCII("Mac"))
     return L'/' + ChangeSlashToPDF(filepath.c_str());
   return ChangeSlashToPDF(filepath.c_str());
diff --git a/core/fpdfdoc/cpdf_filespec_unittest.cpp b/core/fpdfdoc/cpdf_filespec_unittest.cpp
index 83acbd5..3a2359a 100644
--- a/core/fpdfdoc/cpdf_filespec_unittest.cpp
+++ b/core/fpdfdoc/cpdf_filespec_unittest.cpp
@@ -35,7 +35,7 @@
     {L"\\\\pdfdocs\\spec.pdf", L"/pdfdocs/spec.pdf"},
 // Network resource name. It is not supported yet.
 // {L"pclib/eng:\\pdfdocs\\spec.pdf", L"/pclib/eng/pdfdocs/spec.pdf"},
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
     // Absolute path with colon separator.
     {L"Mac HD:PDFDocs:spec.pdf", L"/Mac HD/PDFDocs/spec.pdf"},
     // Relative path with colon separator.
@@ -65,7 +65,7 @@
 #if defined(OS_WIN)
       L"/C/docs/test.pdf",
       L"C:\\docs\\test.pdf"
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
       L"/Mac HD/docs/test.pdf",
       L"Mac HD:docs:test.pdf"
 #else
@@ -86,7 +86,7 @@
       {L"/E/docs/test.pdf", L"E:\\docs\\test.pdf"},
       {L"/F/docs/test.pdf", L"F:\\docs\\test.pdf"},
       {L"/G/docs/test.pdf", L"G:\\docs\\test.pdf"},
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
       {L"/Mac HD/docs1/test.pdf", L"Mac HD:docs1:test.pdf"},
       {L"/Mac HD/docs2/test.pdf", L"Mac HD:docs2:test.pdf"},
       {L"/Mac HD/docs3/test.pdf", L"Mac HD:docs3:test.pdf"},
@@ -141,7 +141,7 @@
 #if defined(OS_WIN)
     L"C:\\docs\\test.pdf",
     L"/C/docs/test.pdf"
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
     L"Mac HD:docs:test.pdf",
     L"/Mac HD/docs/test.pdf"
 #else
diff --git a/core/fxcodec/progressive_decoder.cpp b/core/fxcodec/progressive_decoder.cpp
index 08b05a7..c22fde0 100644
--- a/core/fxcodec/progressive_decoder.cpp
+++ b/core/fxcodec/progressive_decoder.cpp
@@ -40,11 +40,11 @@
 constexpr size_t kBlockSize = 4096;
 
 #ifdef PDF_ENABLE_XFA_PNG
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
 const double kPngGamma = 1.7;
 #else
 const double kPngGamma = 2.2;
-#endif  // defined(OS_MACOSX)
+#endif  // defined(OS_APPLE)
 #endif  // PDF_ENABLE_XFA_PNG
 
 void RGB2BGR(uint8_t* buffer, int width = 1) {
diff --git a/core/fxcrt/cfx_datetime.cpp b/core/fxcrt/cfx_datetime.cpp
index 1e9a122..896aa7b 100644
--- a/core/fxcrt/cfx_datetime.cpp
+++ b/core/fxcrt/cfx_datetime.cpp
@@ -9,7 +9,7 @@
 #include "build/build_config.h"
 #include "core/fxcrt/fx_system.h"
 
-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \
+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_APPLE) || \
     defined(OS_ASMJS)
 #include <sys/time.h>
 #include <time.h>
diff --git a/core/fxcrt/widestring_unittest.cpp b/core/fxcrt/widestring_unittest.cpp
index 419328a..4575d90 100644
--- a/core/fxcrt/widestring_unittest.cpp
+++ b/core/fxcrt/widestring_unittest.cpp
@@ -1666,7 +1666,7 @@
   EXPECT_EQ(L"cla", WideString::Format(L"%.3ls", L"clams"));
   EXPECT_EQ(L"\u043e\u043f", WideString(L"\u043e\u043f"));
 
-#if !defined(OS_MACOSX)
+#if !defined(OS_APPLE)
   // See https://bugs.chromium.org/p/pdfium/issues/detail?id=1132
   EXPECT_EQ(L"\u043e\u043f", WideString::Format(L"\u043e\u043f"));
   EXPECT_EQ(L"\u043e\u043f", WideString::Format(L"%ls", L"\u043e\u043f"));
diff --git a/core/fxge/agg/fx_agg_driver.cpp b/core/fxge/agg/fx_agg_driver.cpp
index 440335a..5d7fde4 100644
--- a/core/fxge/agg/fx_agg_driver.cpp
+++ b/core/fxge/agg/fx_agg_driver.cpp
@@ -1141,7 +1141,7 @@
   return m_pBitmap->GetBuffer();
 }
 
-#if !defined(OS_MACOSX)
+#if !defined(OS_APPLE)
 void CFX_AggDeviceDriver::InitPlatform() {}
 
 void CFX_AggDeviceDriver::DestroyPlatform() {}
@@ -1154,7 +1154,7 @@
                                          uint32_t color) {
   return false;
 }
-#endif  // !defined(OS_MACOSX)
+#endif  // !defined(OS_APPLE)
 
 DeviceType CFX_AggDeviceDriver::GetDeviceType() const {
   return DeviceType::kDisplay;
diff --git a/core/fxge/agg/fx_agg_driver.h b/core/fxge/agg/fx_agg_driver.h
index 7f8f5fb..2fcf235 100644
--- a/core/fxge/agg/fx_agg_driver.h
+++ b/core/fxge/agg/fx_agg_driver.h
@@ -115,7 +115,7 @@
   RetainPtr<CFX_DIBitmap> const m_pBitmap;
   std::unique_ptr<CFX_ClipRgn> m_pClipRgn;
   std::vector<std::unique_ptr<CFX_ClipRgn>> m_StateStack;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   void* m_pPlatformGraphics = nullptr;
 #endif
   CFX_FillRenderOptions m_FillOptions;
diff --git a/core/fxge/cfx_font.cpp b/core/fxge/cfx_font.cpp
index 2d42e81..c8b860c 100644
--- a/core/fxge/cfx_font.cpp
+++ b/core/fxge/cfx_font.cpp
@@ -221,7 +221,7 @@
     {FX_CHARSET_ShiftJIS, "MS Gothic"},
     {FX_CHARSET_Hangul, "Batang"},
     {FX_CHARSET_MSWin_Cyrillic, "Arial"},
-#if defined(OS_LINUX) || defined(OS_ASMJS) || defined(OS_MACOSX)
+#if defined(OS_LINUX) || defined(OS_ASMJS) || defined(OS_APPLE)
     {FX_CHARSET_MSWin_EasternEuropean, "Arial"},
 #else
     {FX_CHARSET_MSWin_EasternEuropean, "Tahoma"},
@@ -339,7 +339,7 @@
   m_FontData = {};  // m_FontData can't outive m_Face.
   m_Face.Reset();
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   ReleasePlatformResource();
 #endif
 }
diff --git a/core/fxge/cfx_font.h b/core/fxge/cfx_font.h
index e669cfe..80f4845 100644
--- a/core/fxge/cfx_font.h
+++ b/core/fxge/cfx_font.h
@@ -107,7 +107,7 @@
   void AdjustMMParams(int glyph_index, int dest_width, int weight) const;
   CFX_PathData* LoadGlyphPathImpl(uint32_t glyph_index,
                                   uint32_t dest_width) const;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   void* GetPlatformFont() const { return m_pPlatformFont; }
   void SetPlatformFont(void* font) { m_pPlatformFont = font; }
 #endif
@@ -135,7 +135,7 @@
  private:
   RetainPtr<CFX_GlyphCache> GetOrCreateGlyphCache() const;
   void ClearGlyphCache();
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   void ReleasePlatformResource();
 #endif
   ByteString GetFamilyNameOrUntitled() const;
@@ -151,7 +151,7 @@
   pdfium::span<uint8_t> m_FontData;
   bool m_bEmbedded = false;
   bool m_bVertical = false;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   void* m_pPlatformFont = nullptr;
 #endif
 };
diff --git a/core/fxge/cfx_fontmapper.cpp b/core/fxge/cfx_fontmapper.cpp
index 496d393..485adc2 100644
--- a/core/fxge/cfx_fontmapper.cpp
+++ b/core/fxge/cfx_fontmapper.cpp
@@ -613,7 +613,7 @@
       }
     } else {
       if (Charset == FX_CHARSET_Symbol) {
-#if defined(OS_MACOSX) || defined(OS_ANDROID)
+#if defined(OS_APPLE) || defined(OS_ANDROID)
         if (SubstName == "Symbol") {
           pSubstFont->m_Family = "Chrome Symbol";
           pSubstFont->m_Charset = FX_CHARSET_Symbol;
diff --git a/core/fxge/cfx_glyphcache.cpp b/core/fxge/cfx_glyphcache.cpp
index 17a6b96..5168547 100644
--- a/core/fxge/cfx_glyphcache.cpp
+++ b/core/fxge/cfx_glyphcache.cpp
@@ -257,7 +257,7 @@
     return nullptr;
 
   UniqueKeyGen keygen;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   const bool bNative = text_options->native_text;
 #else
   const bool bNative = false;
@@ -265,7 +265,7 @@
   GenKey(&keygen, pFont, matrix, dest_width, anti_alias, bNative);
   ByteString FaceGlyphsKey(keygen.key_, keygen.key_len_);
 
-#if defined(OS_MACOSX) && !defined(_SKIA_SUPPORT_) && \
+#if defined(OS_APPLE) && !defined(_SKIA_SUPPORT_) && \
     !defined(_SKIA_SUPPORT_PATHS_)
   const bool bDoLookUp = !text_options->native_text;
 #else
@@ -276,7 +276,7 @@
                              bFontStyle, dest_width, anti_alias);
   }
 
-#if defined(OS_MACOSX) && !defined(_SKIA_SUPPORT_) && \
+#if defined(OS_APPLE) && !defined(_SKIA_SUPPORT_) && \
     !defined(_SKIA_SUPPORT_PATHS_)
   std::unique_ptr<CFX_GlyphBitmap> pGlyphBitmap;
   auto it = m_SizeMap.find(FaceGlyphsKey);
@@ -333,7 +333,7 @@
 }
 #endif  // defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
 
-#if !defined(OS_MACOSX)
+#if !defined(OS_APPLE)
 void CFX_GlyphCache::InitPlatform() {}
 #endif
 
diff --git a/core/fxge/cfx_renderdevice.cpp b/core/fxge/cfx_renderdevice.cpp
index e5de85e..1662e81 100644
--- a/core/fxge/cfx_renderdevice.cpp
+++ b/core/fxge/cfx_renderdevice.cpp
@@ -356,7 +356,7 @@
 
 bool ShouldDrawDeviceText(const CFX_Font* pFont,
                           const CFX_TextRenderOptions& options) {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   if (options.font_is_cid)
     return false;
 
@@ -454,7 +454,7 @@
   }
   if (m_RenderCaps & FXRC_BYTEMASK_OUTPUT)
     return pDIB->Create(width, height, FXDIB_8bppMask);
-#if defined(OS_MACOSX) || defined(_SKIA_SUPPORT_PATHS_)
+#if defined(OS_APPLE) || defined(_SKIA_SUPPORT_PATHS_)
   constexpr FXDIB_Format kPlatformFormat = FXDIB_Rgb32;
 #else
   constexpr FXDIB_Format kPlatformFormat = FXDIB_Rgb;
diff --git a/core/fxge/dib/cfx_dibitmap.cpp b/core/fxge/dib/cfx_dibitmap.cpp
index f719e16..8b0551c 100644
--- a/core/fxge/dib/cfx_dibitmap.cpp
+++ b/core/fxge/dib/cfx_dibitmap.cpp
@@ -319,7 +319,7 @@
         if (!ConvertFormat(IsCmykImage() ? FXDIB_Cmyka : FXDIB_Argb))
           return false;
       } else {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
         constexpr FXDIB_Format kPlatformFormat = FXDIB_Rgb32;
 #else
         constexpr FXDIB_Format kPlatformFormat = FXDIB_Rgb;
@@ -401,7 +401,7 @@
           return false;
         }
       } else {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
         constexpr FXDIB_Format kPlatformFormat = FXDIB_Rgb;
 #else
         constexpr FXDIB_Format kPlatformFormat = FXDIB_Rgb32;
diff --git a/core/fxge/skia/fx_skia_device.cpp b/core/fxge/skia/fx_skia_device.cpp
index 1735895..e540098 100644
--- a/core/fxge/skia/fx_skia_device.cpp
+++ b/core/fxge/skia/fx_skia_device.cpp
@@ -920,7 +920,7 @@
       m_charDetails.SetGlyphAt(cur_index,
                                static_cast<uint16_t>(cp.m_GlyphIndex));
       m_charDetails.SetFontCharWidthAt(cur_index, cp.m_FontCharWidth);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
       if (cp.m_ExtGID) {
         m_charDetails.SetGlyphAt(cur_index, static_cast<uint16_t>(cp.m_ExtGID));
       }
@@ -1716,7 +1716,7 @@
       }
     }
     glyphs[index] = static_cast<uint16_t>(cp.m_GlyphIndex);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     if (cp.m_ExtGID)
       glyphs[index] = static_cast<uint16_t>(cp.m_ExtGID);
 #endif
diff --git a/core/fxge/text_char_pos.h b/core/fxge/text_char_pos.h
index c211be8..8d0c301 100644
--- a/core/fxge/text_char_pos.h
+++ b/core/fxge/text_char_pos.h
@@ -19,7 +19,7 @@
   uint32_t m_Unicode = 0;
   uint32_t m_GlyphIndex = 0;
   uint32_t m_FontCharWidth = 0;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   uint32_t m_ExtGID = 0;
 #endif
   int32_t m_FallbackFontPosition = 0;
diff --git a/fpdfsdk/fpdf_annot_embeddertest.cpp b/fpdfsdk/fpdf_annot_embeddertest.cpp
index 4d63dc9..df5f363 100644
--- a/fpdfsdk/fpdf_annot_embeddertest.cpp
+++ b/fpdfsdk/fpdf_annot_embeddertest.cpp
@@ -527,11 +527,11 @@
   }
   {
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     static constexpr char kExpectedHash[] = "acddfe688a117ead56af7b249a2cf8a1";
 #else
     static constexpr char kExpectedHash[] = "1fb0dd8dd5f0b9bb8d076e48eb59296d";
-#endif  // defined(OS_MACOSX)
+#endif  // defined(OS_APPLE)
 #else
 #if defined(OS_WIN)
     static constexpr char kExpectedHash[] = "49d0a81c636531a337429325273d0508";
@@ -811,7 +811,7 @@
   static const char kMd5ModifiedHighlight[] =
       "66f3caef3a7d488a4fa1ad37fc06310e";
   static const char kMd5ModifiedSquare[] = "a456dad0bc6801ee2d6408a4394af563";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   static const char kMd5Original[] = "fc59468d154f397fd298c69f47ef565a";
   static const char kMd5ModifiedHighlight[] =
       "e64bf648f6e9354d1f3eedb47a2c9498";
@@ -1030,7 +1030,7 @@
   static const char kMd5ModifiedPath[] = "a7a8d675a6ddbcbdfecee65a33ba19e1";
   static const char kMd5TwoPaths[] = "7c0bdd4552329704c47a7cce47edbbd6";
   static const char kMd5NewAnnot[] = "3c48d492b4f62941fed0fb62f729f31e";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   static const char kMd5ModifiedPath[] = "8cfae6d547fc5d6702f5f1ac631beb5e";
   static const char kMd5TwoPaths[] = "9677e4892bb02950d3e4dbe74470578f";
   static const char kMd5NewAnnot[] = "e8ebddac4db8c0a4b556ddf79aa1a26d";
@@ -1241,7 +1241,7 @@
   static const char kMd5ModifiedImage[] = "5f97f98f58ed04dc393f31460485f1a2";
 #endif  // defined(OS_LINUX)
 #else
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   static const char kMd5NewImage[] = "dd18709d90c245a12ce0b8c4d092bea9";
   static const char kMd5ModifiedImage[] = "8d6f478ff8c7e67d49b253f1af587a99";
 #elif defined(OS_WIN)
@@ -1336,7 +1336,7 @@
 #if defined(OS_WIN)
   static const char kMd5NewText[] = "204cc01749a70b8afc246a4ca33c7eb6";
   static const char kMd5ModifiedText[] = "641261a45e8dfd68c89b80bfd237660d";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   static const char kMd5NewText[] = "e657266260b88c964938efe6c9b292da";
   static const char kMd5ModifiedText[] = "7accdf2bac64463101783221f53d3188";
 #else
@@ -1478,7 +1478,7 @@
   static const char kMd5[] = "626d25c5aa5baf67d22d9a0e1c23f6aa";
 #endif  // defined(OS_LINUX)
 #else
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   static const char kMd5[] = "5e7e185b386ad21ca83b0287268c50fb";
 #elif defined(OS_WIN)
   static const char kMd5[] = "20b612ebd46babcb44c48c903e2c5a48";
@@ -2915,7 +2915,7 @@
 #else
 #if defined(OS_WIN)
     static const char kMd5sum[] = "3877bec7cb3e3144eaa6d10f38bf7a30";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
     static const char kMd5sum[] = "04b16db5026b5490a50fb6ff0954c867";
 #else
     static const char kMd5sum[] = "40a7354d1f653127bcdac10e15f81654";
@@ -2945,7 +2945,7 @@
 #else
 #if defined(OS_WIN)
     static const char kMd5sum[] = "a30f1bd1cac022d08ceb100df4940b5f";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
     static const char kMd5sum[] = "3f984a164f2f6d6e3d69f27fd430e346";
 #else
     static const char kMd5sum[] = "e4c4de73addabf10672c308870e8a4ee";
@@ -2966,7 +2966,7 @@
 #else
 #if defined(OS_WIN)
     static const char kMd5sum[] = "467f5a4db98fcadd5121807ff4e2eb10";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
     static const char kMd5sum[] = "c6d6f9dc7090e8eaf3867ba714023b1e";
 #else
     static const char kMd5sum[] = "65e831885e16b7ecc977cce2e4a27110";
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp
index 378409f..5fb35d5 100644
--- a/fpdfsdk/fpdf_edit_embeddertest.cpp
+++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -41,7 +41,7 @@
 
 #if defined(OS_WIN)
 const char kBottomTextChecksum[] = "08d1ff3e5a42801bee6077fd366bef00";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
 const char kBottomTextChecksum[] = "324e1db8164a040cf6104538baa95ba6";
 #else
 const char kBottomTextChecksum[] = "eacaa24573b8ce997b3882595f096f00";
@@ -56,7 +56,7 @@
 #else
 #if defined(OS_WIN)
 const char kFirstRemovedChecksum[] = "aae6c5334721f90ec30d3d59f4ef7deb";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
 const char kFirstRemovedChecksum[] = "17ca3778fd8bb395b46532f1fa17f702";
 #else
 const char kFirstRemovedChecksum[] = "b76df015fe88009c3c342395df96abf1";
@@ -67,7 +67,7 @@
 
 #if defined(OS_WIN)
 const char kLoadedFontTextChecksum[] = "d60ba39f9698e32360d99e727dd93165";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
 const char kLoadedFontTextChecksum[] = "fc921c0bbdde73986ac13c15a85db4c3";
 #else
 const char kLoadedFontTextChecksum[] = "70592859010ffbf532a2237b8118bcc4";
@@ -628,7 +628,7 @@
 #else
 #if defined(OS_WIN)
   const char kChangedChecksum[] = "3137fdb27962671f5c3963a5e965eff5";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   const char kChangedChecksum[] = "904132275a1144ea06b0694537c80b4c";
 #else
   const char kChangedChecksum[] = "a0c4ea6620772991f66bf7130379b08a";
@@ -667,7 +667,7 @@
   static constexpr char kOriginalChecksum[] =
 #if defined(OS_WIN)
       "220bf2086398fc46ac094952b244c8d9";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
       "53cbaad93551ef2ccc27ddd63f2ca2b3";
 #else
       "ba1936fa8ca1e8cca108da76ff3500a6";
@@ -880,7 +880,7 @@
 
   // Show what the original file looks like.
   {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     const char kOriginalMD5[] = "adf815e53c788a5272b4df07c610a1da";
 #elif defined(OS_WIN)
     const char kOriginalMD5[] = "00542ee435b37749c4453be63bf7bdb6";
@@ -925,7 +925,7 @@
 
   EXPECT_EQ(11, FPDFPage_CountObjects(page));
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   const char kNonPrimesMD5[] = "d29e2ddff56e0d12f340794d26796400";
   const char kNonPrimesAfterSaveMD5[] = "10eff2cd0037b661496981779601fa6f";
 #elif defined(OS_WIN)
@@ -1211,7 +1211,7 @@
 #else
 #if defined(OS_WIN)
   const char kHelloRemovedChecksum[] = "a97d4c72c969ba373c2dce675d277e65";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   const char kHelloRemovedChecksum[] = "3b3b27602a86dfe5996a33c42c59885b";
 #else
   const char kHelloRemovedChecksum[] = "95b92950647a2190e1230911e7a1a0e9";
@@ -1372,7 +1372,7 @@
       EXPECT_EQ(1, cpdf_page_object->GetContentStream()) << i;
   }
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   const char kStream1RemovedMD5[] = "0e8856ca9abc7049412e64f9230c7c43";
 #elif defined(OS_WIN)
   const char kStream1RemovedMD5[] = "b4140f203523e38793283a5943d8075b";
@@ -1881,7 +1881,7 @@
 
   // Render and check the result. Text is slightly different on Mac.
   ScopedFPDFBitmap bitmap = RenderLoadedPage(page);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   const char md5[] = "e55bcd1facb7243dc6e16dd5f912265b";
 #elif defined(OS_WIN)
   const char md5[] = "74dd9c393b8b2578d2b7feb032b7daad";
@@ -2063,7 +2063,7 @@
   EXPECT_TRUE(FPDFPage_GenerateContent(page));
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     const char md5[] = "26a516d923b0a18fbea0a24e3aca5562";
 #elif defined(OS_WIN)
     const char md5[] = "3755dd35abd4c605755369401ee85b2d";
@@ -2087,7 +2087,7 @@
   EXPECT_TRUE(FPDFPage_GenerateContent(page));
   {
     ScopedFPDFBitmap page_bitmap = RenderPage(page);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     const char md5[] = "532024c9ded47843313bb64a060118f3";
 #elif defined(OS_WIN)
     const char md5[] = "5ded49fe157f89627903553771431e3d";
@@ -2144,7 +2144,7 @@
 #endif
 TEST_F(FPDFEditEmbedderTest, MAYBE_SetTextRenderMode) {
 // Platform specific original bitmaps
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   const char md5[] = "2453a9a524ee3f5f525dd21345ec4d81";
 #elif defined(OS_WIN)
   const char md5[] = "de6e86bad3e9fda753a8471a45cfbb58";
@@ -2685,7 +2685,7 @@
   ScopedFPDFBitmap page_bitmap2 = RenderPage(page);
 #if defined(OS_WIN)
   const char kInsertTrueTypeChecksum[] = "2199b579c49ab5f80c246a586a80ee90";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   const char kInsertTrueTypeChecksum[] = "9a1a7dfebe659513691aadd0d95b8d50";
 #else
   const char kInsertTrueTypeChecksum[] = "c1d10cce1761c4a998a16b2562030568";
diff --git a/fpdfsdk/fpdf_flatten_embeddertest.cpp b/fpdfsdk/fpdf_flatten_embeddertest.cpp
index 38ed906..dd0d5c9 100644
--- a/fpdfsdk/fpdf_flatten_embeddertest.cpp
+++ b/fpdfsdk/fpdf_flatten_embeddertest.cpp
@@ -47,7 +47,7 @@
 TEST_F(FPDFFlattenEmbedderTest, MAYBE_BUG_861842) {
 #if defined(OS_WIN)
   constexpr char kCheckboxHash[] = "95fba3cb7bce7e0d3c94279f60984e17";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   constexpr char kCheckboxHash[] = "6aafcb2d98da222964bcdbf5aa1f4f1f";
 #else
   constexpr char kCheckboxHash[] = "594265790b81df2d93120d33b72a6ada";
@@ -74,7 +74,7 @@
 #if defined(OS_WIN)
   constexpr char kPageHash[] = "8c6e1dab0a15072f2c9c0ca240fdc739";
   constexpr char kFlattenedPageHash[] = "9fb932ce7f370c0e68eec0a5d4d76271";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   constexpr char kPageHash[] = "d43f54c60b325726392a558f861402a9";
   constexpr char kFlattenedPageHash[] = "627f143efb920a5e7ddd311e963b9c66";
 #else
diff --git a/fpdfsdk/fpdf_formfill_embeddertest.cpp b/fpdfsdk/fpdf_formfill_embeddertest.cpp
index 43353a6..b19681e 100644
--- a/fpdfsdk/fpdf_formfill_embeddertest.cpp
+++ b/fpdfsdk/fpdf_formfill_embeddertest.cpp
@@ -1323,7 +1323,7 @@
   const char kUnfocusedTextFormWithAbcChecksum[] =
       "4a961599a512a08468b26b89d389c30a";
 #else
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   const char kFocusedTextFormWithAbcChecksum[] =
       "c6e4a2fb10661116771ee74f54d9c5e0";
   const char kUnfocusedTextFormWithAbcChecksum[] =
@@ -1414,7 +1414,7 @@
 #if defined(_SKIA_SUPPORT_) || defined(_SKIA_SUPPORT_PATHS_)
   const char kMd5NoHighlight[] = "6fe3921e4fe3f4190c248acf34e9bd3b";
 #else
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   const char kMd5NoHighlight[] = "5e4b87c5b304c6fa9bd5f6311260494e";
 #elif defined(OS_WIN)
   const char kMd5NoHighlight[] = "3ec0938828e0a37ef23f687ee95a80e1";
diff --git a/fpdfsdk/fpdf_view_embeddertest.cpp b/fpdfsdk/fpdf_view_embeddertest.cpp
index a989495..b13efa0 100644
--- a/fpdfsdk/fpdf_view_embeddertest.cpp
+++ b/fpdfsdk/fpdf_view_embeddertest.cpp
@@ -1342,7 +1342,7 @@
   static const char kLcdTextChecksum[] = "6e32f5a9c46e4e0730481081fe80617d";
   static const char kNoSmoothtextChecksum[] =
       "a728a18c9515ecddf77cfcf45fb6c375";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
   static const char kLcdTextChecksum[] = "c38b75e16a13852aee3b97d77a0f0ee7";
   static const char kNoSmoothtextChecksum[] =
       "c38b75e16a13852aee3b97d77a0f0ee7";
diff --git a/fxbarcode/oned/BC_OneDimWriter.cpp b/fxbarcode/oned/BC_OneDimWriter.cpp
index 90d3e6d..12cf617 100644
--- a/fxbarcode/oned/BC_OneDimWriter.cpp
+++ b/fxbarcode/oned/BC_OneDimWriter.cpp
@@ -151,7 +151,7 @@
   charPos[0].m_Origin = CFX_PointF(penX + left, penY + top);
   charPos[0].m_GlyphIndex = encoding->GlyphFromCharCode(charcodes[0]);
   charPos[0].m_FontCharWidth = cFont->GetGlyphWidth(charPos[0].m_GlyphIndex);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   charPos[0].m_ExtGID = charPos[0].m_GlyphIndex;
 #endif
   penX += (float)(charPos[0].m_FontCharWidth) * (float)fontSize / 1000.0f;
@@ -159,7 +159,7 @@
     charPos[i].m_Origin = CFX_PointF(penX + left, penY + top);
     charPos[i].m_GlyphIndex = encoding->GlyphFromCharCode(charcodes[i]);
     charPos[i].m_FontCharWidth = cFont->GetGlyphWidth(charPos[i].m_GlyphIndex);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     charPos[i].m_ExtGID = charPos[i].m_GlyphIndex;
 #endif
     penX += (float)(charPos[i].m_FontCharWidth) * (float)fontSize / 1000.0f;
diff --git a/testing/embedder_test_constants.cpp b/testing/embedder_test_constants.cpp
index a871e71..1ea6abe 100644
--- a/testing/embedder_test_constants.cpp
+++ b/testing/embedder_test_constants.cpp
@@ -20,7 +20,7 @@
 #if defined(OS_WIN)
 const char kAnnotationStampWithApChecksum[] =
     "6aa001a77ec05d0f1b0d1d22e28744d4";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
 const char kAnnotationStampWithApChecksum[] =
     "80d7b6cc7b13a78d77a6151bc846e80b";
 #else
@@ -46,7 +46,7 @@
 #else
 #if defined(OS_WIN)
 const char kHelloWorldChecksum[] = "795b7ce1626931aa06af0fa23b7d80bb";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
 const char kHelloWorldChecksum[] = "c38b75e16a13852aee3b97d77a0f0ee7";
 #else
 const char kHelloWorldChecksum[] = "2baa4c0e1758deba1b9c908e1fbd04ed";
@@ -58,7 +58,7 @@
 #else
 #if defined(OS_WIN)
 const char kHelloWorldRemovedChecksum[] = "93db13099042bafefb3c22a165bad684";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
 const char kHelloWorldRemovedChecksum[] = "572b1022bb3e8f43dc671162fc62cf7f";
 #else
 const char kHelloWorldRemovedChecksum[] = "93dcc09055f87a2792c8e3065af99a1b";
@@ -78,7 +78,7 @@
 #else
 #if defined(OS_WIN)
 const char kTextFormChecksum[] = "d3204faa62b607f0bd3893c9c22cabcb";
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
 const char kTextFormChecksum[] = "d485541d958fef08d24e8eca3e537023";
 #else
 const char kTextFormChecksum[] = "b890950d4b9bc163b1a96797f3004b53";
diff --git a/third_party/base/allocator/partition_allocator/address_space_randomization.h b/third_party/base/allocator/partition_allocator/address_space_randomization.h
index 5cb2ccc..c6d8ca9 100644
--- a/third_party/base/allocator/partition_allocator/address_space_randomization.h
+++ b/third_party/base/allocator/partition_allocator/address_space_randomization.h
@@ -55,7 +55,7 @@
     // Try not to map pages into the range where Windows loads DLLs by default.
     constexpr uintptr_t kASLROffset = 0x80000000ULL;
 
-  #elif defined(OS_MACOSX)
+  #elif defined(OS_APPLE)
 
     // macOS as of 10.12.5 does not clean up entries in page map levels 3/4
     // [PDP/PML4] created from mmap or mach_vm_allocate, even after the region
diff --git a/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h b/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h
index 2d62cb8..68e808c 100644
--- a/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h
+++ b/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h
@@ -10,7 +10,7 @@
 
 #include "build/build_config.h"
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
 #include <mach/mach.h>
 #endif
 #if defined(OS_ANDROID)
@@ -84,7 +84,7 @@
                                PageAccessibilityConfiguration accessibility,
                                PageTag page_tag,
                                bool commit) {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   // Use a custom tag to make it easier to distinguish Partition Alloc regions
   // in vmmap(1). Tags between 240-255 are supported.
   DCHECK(PageTag::kFirst <= page_tag);
@@ -179,7 +179,7 @@
 bool RecommitSystemPagesInternal(void* address,
                                  size_t length,
                                  PageAccessibilityConfiguration accessibility) {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   // On macOS, to update accounting, we need to make another syscall. For more
   // details, see https://crbug.com/823915.
   madvise(address, length, MADV_FREE_REUSE);
@@ -192,7 +192,7 @@
 }
 
 void DiscardSystemPagesInternal(void* address, size_t length) {
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
   int ret = madvise(address, length, MADV_FREE_REUSABLE);
   if (ret) {
     // MADV_FREE_REUSABLE sometimes fails, so fall back to MADV_DONTNEED.
diff --git a/third_party/base/immediate_crash.h b/third_party/base/immediate_crash.h
index 4bdce22..81f18cc 100644
--- a/third_party/base/immediate_crash.h
+++ b/third_party/base/immediate_crash.h
@@ -55,13 +55,13 @@
 // to continue after SIGTRAP.
 #define TRAP_SEQUENCE1_() asm volatile("int3")
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
 // Intentionally empty: __builtin_unreachable() is always part of the sequence
 // (see IMMEDIATE_CRASH below) and already emits a ud2 on Mac.
 #define TRAP_SEQUENCE2_() asm volatile("")
 #else
 #define TRAP_SEQUENCE2_() asm volatile("ud2")
-#endif  // defined(OS_MACOSX)
+#endif  // defined(OS_APPLE)
 
 #elif defined(ARCH_CPU_ARMEL)
 
diff --git a/xfa/fgas/font/cfx_fontsourceenum_file.cpp b/xfa/fgas/font/cfx_fontsourceenum_file.cpp
index d5a41cd..2eaf150 100644
--- a/xfa/fgas/font/cfx_fontsourceenum_file.cpp
+++ b/xfa/fgas/font/cfx_fontsourceenum_file.cpp
@@ -20,7 +20,7 @@
     "/usr/share/X11/fonts/Type1",
     "/usr/share/X11/fonts/TTF",
     "/usr/local/share/fonts",
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
     "~/Library/Fonts",
     "/Library/Fonts",
     "/System/Library/Fonts",
diff --git a/xfa/fgas/font/fgas_fontutils.cpp b/xfa/fgas/font/fgas_fontutils.cpp
index aded13e..9965b14 100644
--- a/xfa/fgas/font/fgas_fontutils.cpp
+++ b/xfa/fgas/font/fgas_fontutils.cpp
@@ -438,7 +438,7 @@
     {0xfe209a82, "LucidaCalligraphy", "Arial", 0, 1252},
     {0xfef135f8, "AdobeHeitiStd-Regular", "Batang,Century,Dotum", 0, 936},
 };
-#elif defined(OS_MACOSX)
+#elif defined(OS_APPLE)
 const FGAS_FontInfo g_XFAFontsMap[] = {
     {0x01d5d33e, "SimSun", "STHeiti,Heiti TC,STFangsong", 0, 936},
     {0x01e4f102, "YouYuan", "STHeiti,Heiti TC,STFangsong", 1, 936},
diff --git a/xfa/fgas/layout/cfx_rtfbreak.cpp b/xfa/fgas/layout/cfx_rtfbreak.cpp
index d294f80..2040372 100644
--- a/xfa/fgas/layout/cfx_rtfbreak.cpp
+++ b/xfa/fgas/layout/cfx_rtfbreak.cpp
@@ -782,7 +782,7 @@
       current_char_pos.m_GlyphIndex = pFont->GetGlyphIndex(wForm);
       if (current_char_pos.m_GlyphIndex == 0xFFFF)
         current_char_pos.m_GlyphIndex = pFont->GetGlyphIndex(wch);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
       current_char_pos.m_ExtGID = current_char_pos.m_GlyphIndex;
 #endif
       current_char_pos.m_FontCharWidth = iCharWidth;
diff --git a/xfa/fgas/layout/cfx_txtbreak.cpp b/xfa/fgas/layout/cfx_txtbreak.cpp
index 97a3be5..07bacab 100644
--- a/xfa/fgas/layout/cfx_txtbreak.cpp
+++ b/xfa/fgas/layout/cfx_txtbreak.cpp
@@ -843,7 +843,7 @@
       }
       if (!bEmptyChar || (bEmptyChar && !bSkipSpace)) {
         pCharPos->m_GlyphIndex = pFont->GetGlyphIndex(wForm);
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
         pCharPos->m_ExtGID = pCharPos->m_GlyphIndex;
 #endif
         // TODO(npm): change widths in this method to unsigned to avoid implicit
diff --git a/xfa/fwl/cfwl_edit.cpp b/xfa/fwl/cfwl_edit.cpp
index e966d95..8c49480 100644
--- a/xfa/fwl/cfwl_edit.cpp
+++ b/xfa/fwl/cfwl_edit.cpp
@@ -36,7 +36,7 @@
 
 constexpr int kEditMargin = 3;
 
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
 constexpr int kEditingModifier = FWL_KEYFLAG_Command;
 #else
 constexpr int kEditingModifier = FWL_KEYFLAG_Ctrl;
diff --git a/xfa/fwl/cfwl_notedriver.cpp b/xfa/fwl/cfwl_notedriver.cpp
index 36e72e3..2503ef6 100644
--- a/xfa/fwl/cfwl_notedriver.cpp
+++ b/xfa/fwl/cfwl_notedriver.cpp
@@ -168,7 +168,7 @@
 
 bool CFWL_NoteDriver::DoKey(CFWL_Message* pMessage, CFWL_Widget* pMessageForm) {
   CFWL_MessageKey* pMsg = static_cast<CFWL_MessageKey*>(pMessage);
-#if !defined(OS_MACOSX)
+#if !defined(OS_APPLE)
   if (pMsg->m_dwCmd == CFWL_MessageKey::Type::kKeyDown &&
       pMsg->m_dwKeyCode == XFA_FWL_VKEY_Tab) {
     CFWL_WidgetMgr* pWidgetMgr = pMessageForm->GetOwnerApp()->GetWidgetMgr();
diff --git a/xfa/fwl/theme/cfwl_listboxtp.cpp b/xfa/fwl/theme/cfwl_listboxtp.cpp
index 611ca49..290d06f 100644
--- a/xfa/fwl/theme/cfwl_listboxtp.cpp
+++ b/xfa/fwl/theme/cfwl_listboxtp.cpp
@@ -63,7 +63,7 @@
     pGraphics->SaveGraphState();
     pGraphics->SetFillColor(CXFA_GEColor(FWLTHEME_COLOR_BKSelected));
     CXFA_GEPath path;
-#if defined(OS_MACOSX)
+#if defined(OS_APPLE)
     path.AddRectangle(rtItem.left, rtItem.top, rtItem.width - 1,
                       rtItem.height - 1);
 #else
