Use "= default' in more places.

See https://abseil.io/tips/131 for explanation.

Change-Id: I569e9b65176b072e75f39c33281e91776cf188cf
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/78911
Reviewed-by: Hui Yingst <nigi@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_font.h b/core/fpdfapi/font/cpdf_font.h
index 0bf5053..5390b36 100644
--- a/core/fpdfapi/font/cpdf_font.h
+++ b/core/fpdfapi/font/cpdf_font.h
@@ -37,7 +37,7 @@
   // Callback mechanism for Type3 fonts to get pixels from forms.
   class FormIface {
    public:
-    virtual ~FormIface() {}
+    virtual ~FormIface() = default;
 
     virtual void ParseContentForType3Char(CPDF_Type3Char* pChar) = 0;
     virtual bool HasPageObjects() const = 0;
@@ -49,7 +49,7 @@
   // Callback mechanism for Type3 fonts to get new forms from upper layers.
   class FormFactoryIface {
    public:
-    virtual ~FormFactoryIface() {}
+    virtual ~FormFactoryIface() = default;
 
     virtual std::unique_ptr<FormIface> CreateForm(
         CPDF_Document* pDocument,
diff --git a/core/fpdfapi/page/cpdf_page.h b/core/fpdfapi/page/cpdf_page.h
index c8dc45c..cd159cd 100644
--- a/core/fpdfapi/page/cpdf_page.h
+++ b/core/fpdfapi/page/cpdf_page.h
@@ -32,13 +32,13 @@
   // Data for the render layer to attach to this page.
   class RenderContextIface {
    public:
-    virtual ~RenderContextIface() {}
+    virtual ~RenderContextIface() = default;
   };
 
   // Cache for the render layer to attach to this page.
   class RenderCacheIface {
    public:
-    virtual ~RenderCacheIface() {}
+    virtual ~RenderCacheIface() = default;
     virtual void ResetBitmapForImage(const RetainPtr<CPDF_Image>& pImage) = 0;
   };
 
diff --git a/core/fpdfapi/parser/cpdf_indirect_object_holder_unittest.cpp b/core/fpdfapi/parser/cpdf_indirect_object_holder_unittest.cpp
index 7aa75f7..6cca905 100644
--- a/core/fpdfapi/parser/cpdf_indirect_object_holder_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_indirect_object_holder_unittest.cpp
@@ -13,8 +13,8 @@
 
 class MockIndirectObjectHolder final : public CPDF_IndirectObjectHolder {
  public:
-  MockIndirectObjectHolder() {}
-  ~MockIndirectObjectHolder() override {}
+  MockIndirectObjectHolder() = default;
+  ~MockIndirectObjectHolder() override = default;
 
   MOCK_METHOD1(ParseIndirectObject, RetainPtr<CPDF_Object>(uint32_t objnum));
 };
diff --git a/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp b/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp
index a51afb9..e6e3b20 100644
--- a/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_object_avail_unittest.cpp
@@ -32,7 +32,7 @@
   TestReadValidator()
       : CPDF_ReadValidator(pdfium::MakeRetain<InvalidSeekableReadStream>(100),
                            nullptr) {}
-  ~TestReadValidator() override {}
+  ~TestReadValidator() override = default;
 };
 
 class TestHolder final : public CPDF_IndirectObjectHolder {
@@ -42,7 +42,7 @@
     Available,
   };
   TestHolder() : validator_(pdfium::MakeRetain<TestReadValidator>()) {}
-  ~TestHolder() override {}
+  ~TestHolder() override = default;
 
   // CPDF_IndirectObjectHolder overrides:
   CPDF_Object* GetOrParseIndirectObject(uint32_t objnum) override {
@@ -96,7 +96,7 @@
 class CPDF_ObjectAvailFailOnExclude final : public CPDF_ObjectAvail {
  public:
   using CPDF_ObjectAvail::CPDF_ObjectAvail;
-  ~CPDF_ObjectAvailFailOnExclude() override {}
+  ~CPDF_ObjectAvailFailOnExclude() override = default;
   bool ExcludeObject(const CPDF_Object* object) const override {
     NOTREACHED();
     return false;
@@ -106,7 +106,7 @@
 class CPDF_ObjectAvailExcludeArray final : public CPDF_ObjectAvail {
  public:
   using CPDF_ObjectAvail::CPDF_ObjectAvail;
-  ~CPDF_ObjectAvailExcludeArray() override {}
+  ~CPDF_ObjectAvailExcludeArray() override = default;
   bool ExcludeObject(const CPDF_Object* object) const override {
     return object->IsArray();
   }
@@ -115,7 +115,7 @@
 class CPDF_ObjectAvailExcludeTypeKey final : public CPDF_ObjectAvail {
  public:
   using CPDF_ObjectAvail::CPDF_ObjectAvail;
-  ~CPDF_ObjectAvailExcludeTypeKey() override {}
+  ~CPDF_ObjectAvailExcludeTypeKey() override = default;
   bool ExcludeObject(const CPDF_Object* object) const override {
     // The value of "Type" may be reference, and if it is not available, we can
     // incorrect filter objects.
diff --git a/core/fpdfapi/parser/cpdf_object_walker.cpp b/core/fpdfapi/parser/cpdf_object_walker.cpp
index 848d3a5..dfebab6 100644
--- a/core/fpdfapi/parser/cpdf_object_walker.cpp
+++ b/core/fpdfapi/parser/cpdf_object_walker.cpp
@@ -17,7 +17,7 @@
  public:
   explicit StreamIterator(const CPDF_Stream* stream)
       : SubobjectIterator(stream) {}
-  ~StreamIterator() override {}
+  ~StreamIterator() override = default;
 
   bool IsFinished() const override { return IsStarted() && is_finished_; }
 
@@ -38,7 +38,7 @@
  public:
   explicit DictionaryIterator(const CPDF_Dictionary* dictionary)
       : SubobjectIterator(dictionary), locker_(dictionary) {}
-  ~DictionaryIterator() override {}
+  ~DictionaryIterator() override = default;
 
   bool IsFinished() const override {
     return IsStarted() && dict_iterator_ == locker_.end();
@@ -71,7 +71,7 @@
   explicit ArrayIterator(const CPDF_Array* array)
       : SubobjectIterator(array), locker_(array) {}
 
-  ~ArrayIterator() override {}
+  ~ArrayIterator() override = default;
 
   bool IsFinished() const override {
     return IsStarted() && arr_iterator_ == locker_.end();
diff --git a/core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp b/core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp
index f95c36e..64b01e5 100644
--- a/core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_page_object_avail_unittest.cpp
@@ -32,7 +32,7 @@
   TestReadValidator()
       : CPDF_ReadValidator(pdfium::MakeRetain<InvalidSeekableReadStream>(100),
                            nullptr) {}
-  ~TestReadValidator() override {}
+  ~TestReadValidator() override = default;
 };
 
 class TestHolder final : public CPDF_IndirectObjectHolder {
@@ -42,7 +42,7 @@
     Available,
   };
   TestHolder() : validator_(pdfium::MakeRetain<TestReadValidator>()) {}
-  ~TestHolder() override {}
+  ~TestHolder() override = default;
 
   // CPDF_IndirectObjectHolder overrides:
   CPDF_Object* GetOrParseIndirectObject(uint32_t objnum) override {
diff --git a/core/fpdfapi/parser/cpdf_parser_unittest.cpp b/core/fpdfapi/parser/cpdf_parser_unittest.cpp
index c888b46..b32f8c9 100644
--- a/core/fpdfapi/parser/cpdf_parser_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_parser_unittest.cpp
@@ -33,8 +33,8 @@
 // A wrapper class to help test member functions of CPDF_Parser.
 class CPDF_TestParser final : public CPDF_Parser {
  public:
-  CPDF_TestParser() {}
-  ~CPDF_TestParser() {}
+  CPDF_TestParser() = default;
+  ~CPDF_TestParser() = default;
 
   // Setup reading from a file and initial states.
   bool InitTestFromFile(const char* path) {
diff --git a/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp b/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp
index abc8603..70d1cd8 100644
--- a/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_read_validator_unittest.cpp
@@ -23,7 +23,7 @@
 class MockFileAvail final : public CPDF_DataAvail::FileAvail {
  public:
   MockFileAvail() : available_range_(0, 0) {}
-  ~MockFileAvail() override {}
+  ~MockFileAvail() override = default;
 
   bool IsDataAvail(FX_FILESIZE offset, size_t size) override {
     return available_range_.first <= offset &&
@@ -45,7 +45,7 @@
 class MockDownloadHints final : public CPDF_DataAvail::DownloadHints {
  public:
   MockDownloadHints() : last_requested_range_(0, 0) {}
-  ~MockDownloadHints() override {}
+  ~MockDownloadHints() override = default;
 
   void AddSegment(FX_FILESIZE offset, size_t size) override {
     last_requested_range_.first = offset;
diff --git a/core/fpdfapi/render/cpdf_pagerendercontext.h b/core/fpdfapi/render/cpdf_pagerendercontext.h
index 8a5a5eb..ac6fb68 100644
--- a/core/fpdfapi/render/cpdf_pagerendercontext.h
+++ b/core/fpdfapi/render/cpdf_pagerendercontext.h
@@ -22,7 +22,7 @@
   // Context merely manages the lifetime for callers.
   class AnnotListIface {
    public:
-    virtual ~AnnotListIface() {}
+    virtual ~AnnotListIface() = default;
   };
 
   CPDF_PageRenderContext();
diff --git a/core/fpdfdoc/cpdf_defaultappearance.h b/core/fpdfdoc/cpdf_defaultappearance.h
index 6ecbc24..5a3fb20 100644
--- a/core/fpdfdoc/cpdf_defaultappearance.h
+++ b/core/fpdfdoc/cpdf_defaultappearance.h
@@ -17,7 +17,7 @@
 
 class CPDF_DefaultAppearance {
  public:
-  CPDF_DefaultAppearance() {}
+  CPDF_DefaultAppearance() = default;
   explicit CPDF_DefaultAppearance(const ByteString& csDA) : m_csDA(csDA) {}
   CPDF_DefaultAppearance(const CPDF_DefaultAppearance& cDA)
       : m_csDA(cDA.m_csDA) {}
diff --git a/core/fxcrt/css/cfx_css.h b/core/fxcrt/css/cfx_css.h
index 7336052..1c21586 100644
--- a/core/fxcrt/css/cfx_css.h
+++ b/core/fxcrt/css/cfx_css.h
@@ -182,7 +182,7 @@
 
 class CFX_CSSLength {
  public:
-  CFX_CSSLength() {}
+  CFX_CSSLength() = default;
 
   CFX_CSSLength(CFX_CSSLengthUnit eUnit, float fValue)
       : m_unit(eUnit), m_fValue(fValue) {}
@@ -210,7 +210,7 @@
 
 class CFX_CSSRect {
  public:
-  CFX_CSSRect() {}
+  CFX_CSSRect() = default;
 
   CFX_CSSRect(CFX_CSSLengthUnit eUnit, float val)
       : left(eUnit, val),
diff --git a/core/fxcrt/fx_stream.cpp b/core/fxcrt/fx_stream.cpp
index 434b80c..e027bcf 100644
--- a/core/fxcrt/fx_stream.cpp
+++ b/core/fxcrt/fx_stream.cpp
@@ -63,7 +63,7 @@
  private:
   explicit CFX_CRTFileStream(std::unique_ptr<FileAccessIface> pFA)
       : m_pFile(std::move(pFA)) {}
-  ~CFX_CRTFileStream() override {}
+  ~CFX_CRTFileStream() override = default;
 
   std::unique_ptr<FileAccessIface> m_pFile;
 };
diff --git a/core/fxcrt/shared_copy_on_write.h b/core/fxcrt/shared_copy_on_write.h
index a672ddf..6f2398f 100644
--- a/core/fxcrt/shared_copy_on_write.h
+++ b/core/fxcrt/shared_copy_on_write.h
@@ -20,10 +20,10 @@
 template <class ObjClass>
 class SharedCopyOnWrite {
  public:
-  SharedCopyOnWrite() {}
+  SharedCopyOnWrite() = default;
   SharedCopyOnWrite(const SharedCopyOnWrite& other)
       : m_pObject(other.m_pObject) {}
-  ~SharedCopyOnWrite() {}
+  ~SharedCopyOnWrite() = default;
 
   template <typename... Args>
   ObjClass* Emplace(Args... params) {
diff --git a/core/fxge/apple/fx_mac_impl.cpp b/core/fxge/apple/fx_mac_impl.cpp
index 76a932b..0dd1633 100644
--- a/core/fxge/apple/fx_mac_impl.cpp
+++ b/core/fxge/apple/fx_mac_impl.cpp
@@ -37,8 +37,8 @@
 
 class CFX_MacFontInfo final : public CFX_FolderFontInfo {
  public:
-  CFX_MacFontInfo() {}
-  ~CFX_MacFontInfo() override {}
+  CFX_MacFontInfo() = default;
+  ~CFX_MacFontInfo() override = default;
 
   // CFX_FolderFontInfo
   void* MapFont(int weight,
diff --git a/core/fxge/cfx_gemodule.h b/core/fxge/cfx_gemodule.h
index 0303b57..1a5d72c 100644
--- a/core/fxge/cfx_gemodule.h
+++ b/core/fxge/cfx_gemodule.h
@@ -18,7 +18,7 @@
   class PlatformIface {
    public:
     static std::unique_ptr<PlatformIface> Create();
-    virtual ~PlatformIface() {}
+    virtual ~PlatformIface() = default;
 
     virtual void Init() = 0;
     virtual std::unique_ptr<SystemFontInfoIface>
diff --git a/fpdfsdk/cpdfsdk_appstream.cpp b/fpdfsdk/cpdfsdk_appstream.cpp
index 7be7c09..2945f41 100644
--- a/fpdfsdk/cpdfsdk_appstream.cpp
+++ b/fpdfsdk/cpdfsdk_appstream.cpp
@@ -101,7 +101,7 @@
  public:
   explicit AutoClosedQCommand(std::ostringstream* stream)
       : AutoClosedCommand(stream, kStateSaveOperator, kStateRestoreOperator) {}
-  ~AutoClosedQCommand() override {}
+  ~AutoClosedQCommand() override = default;
 };
 
 ByteString GetColorAppStream(const CFX_Color& color,
diff --git a/fpdfsdk/fpdf_dataavail.cpp b/fpdfsdk/fpdf_dataavail.cpp
index ab9178c..cfbd730 100644
--- a/fpdfsdk/fpdf_dataavail.cpp
+++ b/fpdfsdk/fpdf_dataavail.cpp
@@ -98,7 +98,7 @@
  public:
   explicit FPDF_DownloadHintsContext(FX_DOWNLOADHINTS* pDownloadHints)
       : m_pDownloadHints(pDownloadHints) {}
-  ~FPDF_DownloadHintsContext() override {}
+  ~FPDF_DownloadHintsContext() override = default;
 
   // IFX_DownloadHints
   void AddSegment(FX_FILESIZE offset, size_t size) override {
diff --git a/fpdfsdk/fpdf_view_embeddertest.cpp b/fpdfsdk/fpdf_view_embeddertest.cpp
index a47145e..bd19083 100644
--- a/fpdfsdk/fpdf_view_embeddertest.cpp
+++ b/fpdfsdk/fpdf_view_embeddertest.cpp
@@ -91,7 +91,7 @@
     FX_DOWNLOADHINTS::AddSegment = SAddSegment;
   }
 
-  ~MockDownloadHints() {}
+  ~MockDownloadHints() = default;
 };
 
 }  // namespace
diff --git a/fpdfsdk/pwl/cpwl_wnd.cpp b/fpdfsdk/pwl/cpwl_wnd.cpp
index 4658813..0935e1b 100644
--- a/fpdfsdk/pwl/cpwl_wnd.cpp
+++ b/fpdfsdk/pwl/cpwl_wnd.cpp
@@ -32,7 +32,7 @@
 class CPWL_MsgControl final : public Observable {
  public:
   explicit CPWL_MsgControl(CPWL_Wnd* pWnd) : m_pCreatedWnd(pWnd) {}
-  ~CPWL_MsgControl() {}
+  ~CPWL_MsgControl() = default;
 
   bool IsWndCreated(const CPWL_Wnd* pWnd) const {
     return m_pCreatedWnd == pWnd;
diff --git a/fxjs/cfx_globaldata.h b/fxjs/cfx_globaldata.h
index fb5c080..5e532f6 100644
--- a/fxjs/cfx_globaldata.h
+++ b/fxjs/cfx_globaldata.h
@@ -20,7 +20,7 @@
  public:
   class Delegate {
    public:
-    virtual ~Delegate() {}
+    virtual ~Delegate() = default;
 
     virtual bool StoreBuffer(pdfium::span<const uint8_t> pBuffer) = 0;
     virtual Optional<pdfium::span<uint8_t>> LoadBuffer() = 0;
diff --git a/fxjs/cfx_globaldata_unittest.cpp b/fxjs/cfx_globaldata_unittest.cpp
index 9a204e9..24c080a 100644
--- a/fxjs/cfx_globaldata_unittest.cpp
+++ b/fxjs/cfx_globaldata_unittest.cpp
@@ -14,7 +14,7 @@
 class TestDelegate : public CFX_GlobalData::Delegate {
  public:
   TestDelegate() = default;
-  ~TestDelegate() override {}
+  ~TestDelegate() override = default;
 
   bool StoreBuffer(pdfium::span<const uint8_t> buffer) override {
     last_buffer_ = std::vector<uint8_t, FxAllocAllocator<uint8_t>>(
diff --git a/fxjs/cjs_event_context_stub.cpp b/fxjs/cjs_event_context_stub.cpp
index 82530e4..d19c6eb 100644
--- a/fxjs/cjs_event_context_stub.cpp
+++ b/fxjs/cjs_event_context_stub.cpp
@@ -6,6 +6,10 @@
 
 #include "fxjs/cjs_event_context_stub.h"
 
+CJS_EventContextStub::CJS_EventContextStub() = default;
+
+CJS_EventContextStub::~CJS_EventContextStub() = default;
+
 Optional<IJS_Runtime::JS_Error> CJS_EventContextStub::RunScript(
     const WideString& script) {
   return IJS_Runtime::JS_Error(1, 1, L"JavaScript support not present");
diff --git a/fxjs/cjs_event_context_stub.h b/fxjs/cjs_event_context_stub.h
index 06d0184..6614f9a 100644
--- a/fxjs/cjs_event_context_stub.h
+++ b/fxjs/cjs_event_context_stub.h
@@ -11,8 +11,8 @@
 
 class CJS_EventContextStub final : public IJS_EventContext {
  public:
-  CJS_EventContextStub() {}
-  ~CJS_EventContextStub() override {}
+  CJS_EventContextStub();
+  ~CJS_EventContextStub() override;
 
   // IJS_EventContext:
   Optional<IJS_Runtime::JS_Error> RunScript(const WideString& script) override;
diff --git a/testing/fuzzers/pdf_hint_table_fuzzer.cc b/testing/fuzzers/pdf_hint_table_fuzzer.cc
index f08f117..da69586 100644
--- a/testing/fuzzers/pdf_hint_table_fuzzer.cc
+++ b/testing/fuzzers/pdf_hint_table_fuzzer.cc
@@ -27,7 +27,7 @@
                       int shared_hint_table_offset)
       : CPDF_HintTables(nullptr, pLinearized),
         shared_hint_table_offset_(shared_hint_table_offset) {}
-  ~HintTableForFuzzing() {}
+  ~HintTableForFuzzing() = default;
 
   void Fuzz(const uint8_t* data, size_t size) {
     if (shared_hint_table_offset_ <= 0)
diff --git a/xfa/fde/cfde_texteditengine.cpp b/xfa/fde/cfde_texteditengine.cpp
index 1b8bfe4..f325e56 100644
--- a/xfa/fde/cfde_texteditengine.cpp
+++ b/xfa/fde/cfde_texteditengine.cpp
@@ -31,7 +31,7 @@
                   const WideString& added_text)
       : engine_(engine), start_idx_(start_idx), added_text_(added_text) {}
 
-  ~InsertOperation() override {}
+  ~InsertOperation() override = default;
 
   void Redo() const override {
     engine_->Insert(start_idx_, added_text_,
@@ -56,7 +56,7 @@
                   const WideString& removed_text)
       : engine_(engine), start_idx_(start_idx), removed_text_(removed_text) {}
 
-  ~DeleteOperation() override {}
+  ~DeleteOperation() override = default;
 
   void Redo() const override {
     engine_->Delete(start_idx_, removed_text_.GetLength(),
@@ -83,7 +83,7 @@
       : insert_op_(engine, start_idx, added_text),
         delete_op_(engine, start_idx, removed_text) {}
 
-  ~ReplaceOperation() override {}
+  ~ReplaceOperation() override = default;
 
   void Redo() const override {
     delete_op_.Redo();
diff --git a/xfa/fde/cfde_texteditengine_unittest.cpp b/xfa/fde/cfde_texteditengine_unittest.cpp
index 83014e8..1383113 100644
--- a/xfa/fde/cfde_texteditengine_unittest.cpp
+++ b/xfa/fde/cfde_texteditengine_unittest.cpp
@@ -33,8 +33,8 @@
     bool text_is_full = false;
   };
 
-  CFDE_TextEditEngineTest() {}
-  ~CFDE_TextEditEngineTest() override {}
+  CFDE_TextEditEngineTest() = default;
+  ~CFDE_TextEditEngineTest() override = default;
 
   void SetUp() override {
     font_ = CFGAS_GEFont::LoadFont(L"Arial Black", 0, 0);
diff --git a/xfa/fwl/cfwl_widget.h b/xfa/fwl/cfwl_widget.h
index cf34fc3..cf067e4 100644
--- a/xfa/fwl/cfwl_widget.h
+++ b/xfa/fwl/cfwl_widget.h
@@ -55,7 +55,7 @@
  public:
   class AdapterIface {
    public:
-    virtual ~AdapterIface() {}
+    virtual ~AdapterIface() = default;
     virtual CFX_Matrix GetRotateMatrix() = 0;
     virtual void DisplayCaret(bool bVisible, const CFX_RectF* pRtAnchor) = 0;
     virtual void GetBorderColorAndThickness(FX_ARGB* cr, float* fWidth) = 0;
diff --git a/xfa/fwl/cfwl_widgetmgr.h b/xfa/fwl/cfwl_widgetmgr.h
index a3a8982..22b253b 100644
--- a/xfa/fwl/cfwl_widgetmgr.h
+++ b/xfa/fwl/cfwl_widgetmgr.h
@@ -28,7 +28,7 @@
  public:
   class AdapterIface : public cppgc::GarbageCollectedMixin {
    public:
-    virtual ~AdapterIface() {}
+    virtual ~AdapterIface() = default;
     virtual void RepaintWidget(CFWL_Widget* pWidget) = 0;
     virtual bool GetPopupPos(CFWL_Widget* pWidget,
                              float fMinHeight,