Remove unused CFWL_Message constructors.

Make Clone() method a pure virtual since all subclasses
override it themselves. Make copy constructor protected in
parent class, and ensure all subclasses instantiate copy
constructors once in their .cpp files rather than defaulting.

Change-Id: Iea41c1683896c792c850ee0c37d6021d74f51e9e
Reviewed-on: https://pdfium-review.googlesource.com/c/48331
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fwl/cfwl_message.cpp b/xfa/fwl/cfwl_message.cpp
index 7411c24..998966c 100644
--- a/xfa/fwl/cfwl_message.cpp
+++ b/xfa/fwl/cfwl_message.cpp
@@ -6,11 +6,6 @@
 
 #include "xfa/fwl/cfwl_message.h"
 
-CFWL_Message::CFWL_Message(CFWL_Message::Type type) : m_type(type) {}
-
-CFWL_Message::CFWL_Message(Type type, CFWL_Widget* pSrcTarget)
-    : m_type(type), m_pSrcTarget(pSrcTarget) {}
-
 CFWL_Message::CFWL_Message(Type type,
                            CFWL_Widget* pSrcTarget,
                            CFWL_Widget* pDstTarget)
@@ -19,7 +14,3 @@
 CFWL_Message::CFWL_Message(const CFWL_Message& that) = default;
 
 CFWL_Message::~CFWL_Message() = default;
-
-std::unique_ptr<CFWL_Message> CFWL_Message::Clone() {
-  return nullptr;
-}
diff --git a/xfa/fwl/cfwl_message.h b/xfa/fwl/cfwl_message.h
index 2d97895..227b758 100644
--- a/xfa/fwl/cfwl_message.h
+++ b/xfa/fwl/cfwl_message.h
@@ -19,13 +19,10 @@
  public:
   enum class Type { Key, KillFocus, Mouse, MouseWheel, SetFocus };
 
-  explicit CFWL_Message(Type type);
-  CFWL_Message(Type type, CFWL_Widget* pSrcTarget);
   CFWL_Message(Type type, CFWL_Widget* pSrcTarget, CFWL_Widget* pDstTarget);
-  CFWL_Message(const CFWL_Message& that);
   virtual ~CFWL_Message();
 
-  virtual std::unique_ptr<CFWL_Message> Clone();
+  virtual std::unique_ptr<CFWL_Message> Clone() = 0;
 
   Type GetType() const { return m_type; }
   CFWL_Widget* GetSrcTarget() const { return m_pSrcTarget.Get(); }
@@ -33,6 +30,9 @@
   void SetSrcTarget(CFWL_Widget* pWidget) { m_pSrcTarget = pWidget; }
   void SetDstTarget(CFWL_Widget* pWidget) { m_pDstTarget = pWidget; }
 
+ protected:
+  CFWL_Message(const CFWL_Message& that);
+
  private:
   const Type m_type;
   UnownedPtr<CFWL_Widget> m_pSrcTarget;
diff --git a/xfa/fwl/cfwl_messagekey.cpp b/xfa/fwl/cfwl_messagekey.cpp
index 38d4ea0..025175a 100644
--- a/xfa/fwl/cfwl_messagekey.cpp
+++ b/xfa/fwl/cfwl_messagekey.cpp
@@ -14,7 +14,9 @@
                                  CFWL_Widget* pDstTarget)
     : CFWL_Message(CFWL_Message::Type::Key, pSrcTarget, pDstTarget) {}
 
-CFWL_MessageKey::~CFWL_MessageKey() {}
+CFWL_MessageKey::CFWL_MessageKey(const CFWL_MessageKey& that) = default;
+
+CFWL_MessageKey::~CFWL_MessageKey() = default;
 
 std::unique_ptr<CFWL_Message> CFWL_MessageKey::Clone() {
   return pdfium::MakeUnique<CFWL_MessageKey>(*this);
diff --git a/xfa/fwl/cfwl_messagekey.h b/xfa/fwl/cfwl_messagekey.h
index 1835774..5ecb161 100644
--- a/xfa/fwl/cfwl_messagekey.h
+++ b/xfa/fwl/cfwl_messagekey.h
@@ -16,6 +16,7 @@
 class CFWL_MessageKey final : public CFWL_Message {
  public:
   CFWL_MessageKey(CFWL_Widget* pSrcTarget, CFWL_Widget* pDstTarget);
+  CFWL_MessageKey(const CFWL_MessageKey& that);
   ~CFWL_MessageKey() override;
 
   // CFWL_Message
diff --git a/xfa/fwl/cfwl_messagesetfocus.cpp b/xfa/fwl/cfwl_messagesetfocus.cpp
index f7653c9..d797781 100644
--- a/xfa/fwl/cfwl_messagesetfocus.cpp
+++ b/xfa/fwl/cfwl_messagesetfocus.cpp
@@ -14,7 +14,10 @@
                                            CFWL_Widget* pDstTarget)
     : CFWL_Message(CFWL_Message::Type::SetFocus, pSrcTarget, pDstTarget) {}
 
-CFWL_MessageSetFocus::~CFWL_MessageSetFocus() {}
+CFWL_MessageSetFocus::CFWL_MessageSetFocus(const CFWL_MessageSetFocus& that) =
+    default;
+
+CFWL_MessageSetFocus::~CFWL_MessageSetFocus() = default;
 
 std::unique_ptr<CFWL_Message> CFWL_MessageSetFocus::Clone() {
   return pdfium::MakeUnique<CFWL_MessageSetFocus>(*this);
diff --git a/xfa/fwl/cfwl_messagesetfocus.h b/xfa/fwl/cfwl_messagesetfocus.h
index b9f0f0f..410d26b 100644
--- a/xfa/fwl/cfwl_messagesetfocus.h
+++ b/xfa/fwl/cfwl_messagesetfocus.h
@@ -14,6 +14,7 @@
 class CFWL_MessageSetFocus final : public CFWL_Message {
  public:
   CFWL_MessageSetFocus(CFWL_Widget* pSrcTarget, CFWL_Widget* pDstTarget);
+  CFWL_MessageSetFocus(const CFWL_MessageSetFocus& that);
   ~CFWL_MessageSetFocus() override;
 
   // CFWL_Message