diff --git a/core/fpdfapi/page/cpdf_expintfunc.h b/core/fpdfapi/page/cpdf_expintfunc.h
index e4a973c..08b12fd 100644
--- a/core/fpdfapi/page/cpdf_expintfunc.h
+++ b/core/fpdfapi/page/cpdf_expintfunc.h
@@ -10,7 +10,7 @@
 #include "core/fpdfapi/page/cpdf_function.h"
 #include "core/fxcrt/data_vector.h"
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #include "third_party/base/span.h"
 #endif
 
@@ -27,7 +27,7 @@
   uint32_t GetOrigOutputs() const { return m_nOrigOutputs; }
   float GetExponent() const { return m_Exponent; }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   pdfium::span<const float> GetBeginValues() const { return m_BeginValues; }
   pdfium::span<const float> GetEndValues() const { return m_EndValues; }
 #endif
diff --git a/core/fpdfapi/page/cpdf_function.cpp b/core/fpdfapi/page/cpdf_function.cpp
index 95e4b7e..85b9e41 100644
--- a/core/fpdfapi/page/cpdf_function.cpp
+++ b/core/fpdfapi/page/cpdf_function.cpp
@@ -170,7 +170,7 @@
   return ymin + (divisor ? (x - xmin) * (ymax - ymin) / divisor : 0);
 }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 const CPDF_SampledFunc* CPDF_Function::ToSampledFunc() const {
   return m_Type == Type::kType0Sampled
              ? static_cast<const CPDF_SampledFunc*>(this)
@@ -188,4 +188,4 @@
              ? static_cast<const CPDF_StitchFunc*>(this)
              : nullptr;
 }
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
diff --git a/core/fpdfapi/page/cpdf_function.h b/core/fpdfapi/page/cpdf_function.h
index 0306fd9..faddb4e 100644
--- a/core/fpdfapi/page/cpdf_function.h
+++ b/core/fpdfapi/page/cpdf_function.h
@@ -48,11 +48,11 @@
                     float ymin,
                     float ymax) const;
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   const CPDF_SampledFunc* ToSampledFunc() const;
   const CPDF_ExpIntFunc* ToExpIntFunc() const;
   const CPDF_StitchFunc* ToStitchFunc() const;
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
 
  protected:
   explicit CPDF_Function(Type type);
diff --git a/core/fpdfapi/page/cpdf_sampledfunc.cpp b/core/fpdfapi/page/cpdf_sampledfunc.cpp
index 221e4a4..0aa28f4 100644
--- a/core/fpdfapi/page/cpdf_sampledfunc.cpp
+++ b/core/fpdfapi/page/cpdf_sampledfunc.cpp
@@ -176,7 +176,7 @@
   return true;
 }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 RetainPtr<CPDF_StreamAcc> CPDF_SampledFunc::GetSampleStream() const {
   return m_pSampleStream;
 }
diff --git a/core/fpdfapi/page/cpdf_sampledfunc.h b/core/fpdfapi/page/cpdf_sampledfunc.h
index 2497e8c..93c81df 100644
--- a/core/fpdfapi/page/cpdf_sampledfunc.h
+++ b/core/fpdfapi/page/cpdf_sampledfunc.h
@@ -40,7 +40,7 @@
   }
   uint32_t GetBitsPerSample() const { return m_nBitsPerSample; }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   RetainPtr<CPDF_StreamAcc> GetSampleStream() const;
 #endif
 
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index dd0e228..3eac569 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -660,7 +660,7 @@
   bitmap_render.SetFormResource(std::move(pFormResource));
   bitmap_render.Initialize(nullptr, nullptr);
   bitmap_render.ProcessObjectNoClip(pPageObj, new_matrix);
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
     // Safe because `CFX_SkiaDeviceDriver` always uses pre-multiplied alpha.
     // TODO(crbug.com/pdfium/2011): Remove the need for this.
diff --git a/core/fpdfapi/render/cpdf_rendertiling.cpp b/core/fpdfapi/render/cpdf_rendertiling.cpp
index 6f4df51..db1f338 100644
--- a/core/fpdfapi/render/cpdf_rendertiling.cpp
+++ b/core/fpdfapi/render/cpdf_rendertiling.cpp
@@ -59,10 +59,10 @@
   context.AppendLayer(pPatternForm, mtPattern2Bitmap);
   context.Render(&bitmap_device, nullptr, &options, nullptr);
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer())
     pBitmap->UnPreMultiply();
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
   return pBitmap;
 }
 
diff --git a/core/fxge/cfx_defaultrenderdevice.cpp b/core/fxge/cfx_defaultrenderdevice.cpp
index 27bae45..819be4e 100644
--- a/core/fxge/cfx_defaultrenderdevice.cpp
+++ b/core/fxge/cfx_defaultrenderdevice.cpp
@@ -62,7 +62,7 @@
     bool bRgbByteOrder,
     RetainPtr<CFX_DIBitmap> pBackdropBitmap,
     bool bGroupKnockout) {
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   if (SkiaIsDefaultRenderer()) {
     return AttachSkiaImpl(std::move(pBitmap), bRgbByteOrder,
                           std::move(pBackdropBitmap), bGroupKnockout);
@@ -76,7 +76,7 @@
                                      int height,
                                      FXDIB_Format format,
                                      RetainPtr<CFX_DIBitmap> pBackdropBitmap) {
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   if (SkiaIsDefaultRenderer())
     return CreateSkia(width, height, format, pBackdropBitmap);
 #endif
diff --git a/core/fxge/cfx_defaultrenderdevice.h b/core/fxge/cfx_defaultrenderdevice.h
index 4aac091..f9c20fe 100644
--- a/core/fxge/cfx_defaultrenderdevice.h
+++ b/core/fxge/cfx_defaultrenderdevice.h
@@ -78,7 +78,7 @@
                  FXDIB_Format format,
                  RetainPtr<CFX_DIBitmap> pBackdropBitmap);
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   bool AttachSkiaImpl(RetainPtr<CFX_DIBitmap> pBitmap,
                       bool bRgbByteOrder,
                       RetainPtr<CFX_DIBitmap> pBackdropBitmap,
diff --git a/core/fxge/cfx_font.cpp b/core/fxge/cfx_font.cpp
index 04f3d38..d5a674c 100644
--- a/core/fxge/cfx_font.cpp
+++ b/core/fxge/cfx_font.cpp
@@ -543,7 +543,7 @@
   return m_Face && FXFT_Is_Face_fixedwidth(m_Face->GetRec()) != 0;
 }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 bool CFX_Font::IsSubstFontBold() const {
   CFX_SubstFont* subst_font = GetSubstFont();
   return subst_font && subst_font->GetOriginalWeight() >= FXFONT_FW_BOLD;
@@ -790,7 +790,7 @@
   return kAngleSkew[-angle];
 }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 CFX_TypeFace* CFX_Font::GetDeviceCache() const {
   return GetOrCreateGlyphCache()->GetDeviceCache(this);
 }
diff --git a/core/fxge/cfx_font.h b/core/fxge/cfx_font.h
index 1a25d63..944cf79 100644
--- a/core/fxge/cfx_font.h
+++ b/core/fxge/cfx_font.h
@@ -23,7 +23,7 @@
 #include "third_party/abseil-cpp/absl/types/optional.h"
 #include "third_party/base/span.h"
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #include "core/fxge/fx_font.h"
 #endif
 
@@ -138,7 +138,7 @@
   std::unique_ptr<CFX_Path> LoadGlyphPathImpl(uint32_t glyph_index,
                                               int dest_width) const;
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   CFX_TypeFace* GetDeviceCache() const;
   bool IsSubstFontBold() const;
 #endif
diff --git a/core/fxge/cfx_glyphcache.cpp b/core/fxge/cfx_glyphcache.cpp
index 1227be1..55cf873 100644
--- a/core/fxge/cfx_glyphcache.cpp
+++ b/core/fxge/cfx_glyphcache.cpp
@@ -27,7 +27,7 @@
 #include "core/fxge/scoped_font_transform.h"
 #include "third_party/base/numerics/safe_math.h"
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #include "third_party/skia/include/core/SkStream.h"  // nogncheck
 #include "third_party/skia/include/core/SkTypeface.h"  // nogncheck
 
@@ -312,7 +312,7 @@
 #endif  // BUILDFLAG(IS_APPLE)
 }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 CFX_TypeFace* CFX_GlyphCache::GetDeviceCache(const CFX_Font* pFont) {
   if (!m_pTypeface) {
     pdfium::span<const uint8_t> span = pFont->GetFontSpan();
@@ -329,7 +329,7 @@
 #endif  // BUILDFLAG(IS_WIN)
   return m_pTypeface.get();
 }
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
 
 #if !BUILDFLAG(IS_APPLE)
 void CFX_GlyphCache::InitPlatform() {}
diff --git a/core/fxge/cfx_glyphcache.h b/core/fxge/cfx_glyphcache.h
index cb66c76..a57b770 100644
--- a/core/fxge/cfx_glyphcache.h
+++ b/core/fxge/cfx_glyphcache.h
@@ -16,7 +16,7 @@
 #include "core/fxcrt/retain_ptr.h"
 #include "core/fxge/cfx_face.h"
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #include "core/fxge/fx_font.h"
 #include "third_party/skia/include/core/SkTypeface.h"  // nogncheck
 #endif
@@ -46,7 +46,7 @@
   RetainPtr<CFX_Face> GetFace() { return m_Face; }
   FXFT_FaceRec* GetFaceRec() { return m_Face ? m_Face->GetRec() : nullptr; }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   CFX_TypeFace* GetDeviceCache(const CFX_Font* pFont);
 #endif
 
@@ -82,7 +82,7 @@
   RetainPtr<CFX_Face> const m_Face;
   std::map<ByteString, SizeGlyphCache> m_SizeMap;
   std::map<PathMapKey, std::unique_ptr<CFX_Path>> m_PathMap;
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   sk_sp<SkTypeface> m_pTypeface;
 #endif
 };
diff --git a/core/fxge/cfx_renderdevice.cpp b/core/fxge/cfx_renderdevice.cpp
index f0c0324..7e178ce 100644
--- a/core/fxge/cfx_renderdevice.cpp
+++ b/core/fxge/cfx_renderdevice.cpp
@@ -35,7 +35,7 @@
 #include "third_party/base/check_op.h"
 #include "third_party/base/span.h"
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #include "third_party/skia/include/core/SkTypes.h"  // nogncheck
 #endif
 
diff --git a/core/fxge/cfx_substfont.cpp b/core/fxge/cfx_substfont.cpp
index d2820cd..9fb243f 100644
--- a/core/fxge/cfx_substfont.cpp
+++ b/core/fxge/cfx_substfont.cpp
@@ -10,7 +10,7 @@
 
 CFX_SubstFont::~CFX_SubstFont() = default;
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 int CFX_SubstFont::GetOriginalWeight() const {
   int weight = m_Weight;
 
diff --git a/core/fxge/cfx_substfont.h b/core/fxge/cfx_substfont.h
index 0b33197..c989e37 100644
--- a/core/fxge/cfx_substfont.h
+++ b/core/fxge/cfx_substfont.h
@@ -15,7 +15,7 @@
   CFX_SubstFont();
   ~CFX_SubstFont();
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   int GetOriginalWeight() const;
 #endif
   void UseChromeSerif();
diff --git a/core/fxge/dib/cfx_dibitmap.cpp b/core/fxge/dib/cfx_dibitmap.cpp
index 7233089..fff3977 100644
--- a/core/fxge/dib/cfx_dibitmap.cpp
+++ b/core/fxge/dib/cfx_dibitmap.cpp
@@ -484,7 +484,7 @@
   return true;
 }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 uint32_t CFX_DIBitmap::GetPixel(int x, int y) const {
   if (!m_pBuffer)
     return 0;
@@ -595,7 +595,7 @@
       break;
   }
 }
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
 
 void CFX_DIBitmap::ConvertBGRColorScale(uint32_t forecolor,
                                         uint32_t backcolor) {
diff --git a/core/fxge/dib/cfx_dibitmap.h b/core/fxge/dib/cfx_dibitmap.h
index 40b41d2..5817155 100644
--- a/core/fxge/dib/cfx_dibitmap.h
+++ b/core/fxge/dib/cfx_dibitmap.h
@@ -41,10 +41,10 @@
   bool ConvertFormat(FXDIB_Format format);
   void Clear(uint32_t color);
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   uint32_t GetPixel(int x, int y) const;
   void SetPixel(int x, int y, uint32_t color);
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
 
   bool SetRedFromBitmap(const RetainPtr<CFX_DIBBase>& pSrcBitmap);
   bool SetAlphaFromBitmap(const RetainPtr<CFX_DIBBase>& pSrcBitmap);
@@ -113,7 +113,7 @@
                                                             FXDIB_Format format,
                                                             uint32_t pitch);
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   // Converts to pre-multiplied alpha if necessary.
   void PreMultiply();
 
@@ -132,7 +132,7 @@
  private:
   enum class Channel : uint8_t { kRed, kAlpha };
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   enum class Format { kCleared, kPreMultiplied, kUnPreMultiplied };
 #endif
 
@@ -167,7 +167,7 @@
                                   int src_top);
 
   MaybeOwned<uint8_t, FxFreeDeleter> m_pBuffer;
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   Format m_nFormat = Format::kCleared;
 #endif
 };
diff --git a/core/fxge/dib/cfx_dibitmap_unittest.cpp b/core/fxge/dib/cfx_dibitmap_unittest.cpp
index a47bc6e..ce79a01 100644
--- a/core/fxge/dib/cfx_dibitmap_unittest.cpp
+++ b/core/fxge/dib/cfx_dibitmap_unittest.cpp
@@ -113,7 +113,7 @@
                                                    FXDIB_Format::k8bppRgb, 0));
 }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 TEST(CFX_DIBitmap, PreMultiply_FromCleared) {
   auto bitmap = pdfium::MakeRetain<CFX_DIBitmap>();
   ASSERT_TRUE(bitmap->Create(1, 1, FXDIB_Format::kArgb));
@@ -199,4 +199,4 @@
   bitmap->UnPreMultiply();
   EXPECT_THAT(bitmap->GetBuffer(), ElementsAre(0xff, 0xff, 0xff, 0x7f));
 }
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
diff --git a/core/fxge/fx_font.h b/core/fxge/fx_font.h
index 059d864..60a27ed 100644
--- a/core/fxge/fx_font.h
+++ b/core/fxge/fx_font.h
@@ -43,7 +43,7 @@
 constexpr uint16_t kNamePlatformMac = 1;
 constexpr uint16_t kNamePlatformWindows = 3;
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 class SkTypeface;
 
 using CFX_TypeFace = SkTypeface;
diff --git a/fpdfsdk/fpdf_progressive.cpp b/fpdfsdk/fpdf_progressive.cpp
index 0cf7cf7..af2cc47 100644
--- a/fpdfsdk/fpdf_progressive.cpp
+++ b/fpdfsdk/fpdf_progressive.cpp
@@ -70,11 +70,11 @@
                                 size_y, rotate, flags, color_scheme,
                                 /*need_to_restore=*/false, &pause_adapter);
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
     pBitmap->UnPreMultiply();
   }
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
 
   if (!pContext->m_pRenderer)
     return FPDF_RENDER_FAILED;
@@ -113,11 +113,11 @@
   CPDFSDK_PauseAdapter pause_adapter(pause);
   pContext->m_pRenderer->Continue(&pause_adapter);
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
     pContext->m_pDevice->GetBitmap()->UnPreMultiply();
   }
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
   return ToFPDFStatus(pContext->m_pRenderer->GetStatus());
 }
 
diff --git a/fpdfsdk/fpdf_view.cpp b/fpdfsdk/fpdf_view.cpp
index 723af28..d65579d 100644
--- a/fpdfsdk/fpdf_view.cpp
+++ b/fpdfsdk/fpdf_view.cpp
@@ -52,10 +52,10 @@
 #include "third_party/base/ptr_util.h"
 #include "third_party/base/span.h"
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #include "third_party/skia/include/core/SkPictureRecorder.h"  // nogncheck
 #include "third_party/skia/include/core/SkRect.h"             // nogncheck
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
 
 #ifdef PDF_ENABLE_V8
 #include "fxjs/cfx_v8_array_buffer_allocator.h"
@@ -680,7 +680,7 @@
                                 /*need_to_restore=*/true,
                                 /*pause=*/nullptr);
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   if (CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
     pBitmap->UnPreMultiply();
   }
diff --git a/fpdfsdk/fpdf_view_embeddertest.cpp b/fpdfsdk/fpdf_view_embeddertest.cpp
index d492da8..469e9bd 100644
--- a/fpdfsdk/fpdf_view_embeddertest.cpp
+++ b/fpdfsdk/fpdf_view_embeddertest.cpp
@@ -27,7 +27,7 @@
 #include "testing/utils/path_service.h"
 #include "third_party/base/check.h"
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #include "third_party/skia/include/core/SkCanvas.h"           // nogncheck
 #include "third_party/skia/include/core/SkColor.h"            // nogncheck
 #include "third_party/skia/include/core/SkColorType.h"        // nogncheck
@@ -38,7 +38,7 @@
 #include "third_party/skia/include/core/SkRefCnt.h"           // nogncheck
 #include "third_party/skia/include/core/SkSize.h"             // nogncheck
 #include "third_party/skia/include/core/SkSurface.h"          // nogncheck
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
 
 using pdfium::ManyRectanglesChecksum;
 
@@ -109,7 +109,7 @@
   ~MockDownloadHints() = default;
 };
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 ScopedFPDFBitmap SkImageToPdfiumBitmap(const SkImage& image) {
   ScopedFPDFBitmap bitmap(
       FPDFBitmap_Create(image.width(), image.height(), /*alpha=*/1));
@@ -149,7 +149,7 @@
 
   return SkImageToPdfiumBitmap(*image);
 }
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
 
 }  // namespace
 
@@ -227,7 +227,7 @@
         page, format, /*bitmap_stride=*/0, expected_checksum);
   }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
   void TestRenderPageSkp(FPDF_PAGE page, const char* expected_checksum) {
     int width = static_cast<int>(FPDF_GetPageWidth(page));
     int height = static_cast<int>(FPDF_GetPageHeight(page));
@@ -245,7 +245,7 @@
         std::move(picture), SkISize::Make(width, height));
     CompareBitmap(bitmap.get(), width, height, expected_checksum);
   }
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
 
  private:
   void TestRenderPageBitmapWithExternalMemoryImpl(
@@ -2000,7 +2000,7 @@
   UnloadPage(page);
 }
 
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 TEST_F(FPDFViewEmbedderTest, RenderPageToSkp) {
   if (!CFX_DefaultRenderDevice::SkiaIsDefaultRenderer()) {
     GTEST_SKIP() << "FPDF_RenderPageSkp() only makes sense with Skia";
@@ -2031,7 +2031,7 @@
 
   UnloadPage(page);
 }
-#endif  // _SKIA_SUPPORT_
+#endif  // defined(_SKIA_SUPPORT_)
 
 TEST_F(FPDFViewEmbedderTest, NoSmoothTextItalicOverlappingGlyphs) {
   ASSERT_TRUE(OpenDocument("bug_1919.pdf"));
diff --git a/fxbarcode/cfx_barcode_unittest.cpp b/fxbarcode/cfx_barcode_unittest.cpp
index 24b860e..d7a43c2 100644
--- a/fxbarcode/cfx_barcode_unittest.cpp
+++ b/fxbarcode/cfx_barcode_unittest.cpp
@@ -65,7 +65,7 @@
 };
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_Code39 DISABLED_Code39
 #else
 #define MAYBE_Code39 Code39
@@ -78,7 +78,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_CodaBar DISABLED_CodaBar
 #else
 #define MAYBE_CodaBar CodaBar
@@ -96,7 +96,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_Code128 DISABLED_Code128
 #else
 #define MAYBE_Code128 Code128
@@ -109,7 +109,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_Code128B DISABLED_Code128B
 #else
 #define MAYBE_Code128B Code128B
@@ -122,7 +122,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_Code128C DISABLED_Code128C
 #else
 #define MAYBE_Code128C Code128C
@@ -135,7 +135,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_Code128CLetters DISABLED_Code128CLetters
 #else
 #define MAYBE_Code128CLetters Code128CLetters
@@ -148,7 +148,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_Ean8 DISABLED_Ean8
 #else
 #define MAYBE_Ean8 Ean8
@@ -166,7 +166,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_UPCA DISABLED_UPCA
 #else
 #define MAYBE_UPCA UPCA
@@ -184,7 +184,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_Ean13 DISABLED_Ean13
 #else
 #define MAYBE_Ean13 Ean13
@@ -202,7 +202,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_Pdf417 DISABLED_Pdf417
 #else
 #define MAYBE_Pdf417 Pdf417
@@ -215,7 +215,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_DataMatrix DISABLED_DataMatrix
 #else
 #define MAYBE_DataMatrix DataMatrix
@@ -228,7 +228,7 @@
 }
 
 // https://crbug.com/pdfium/738
-#ifdef _SKIA_SUPPORT_
+#if defined(_SKIA_SUPPORT_)
 #define MAYBE_QrCode DISABLED_QrCode
 #else
 #define MAYBE_QrCode QrCode
