Pass owning reference to CFWL_Message to OnProcessMessageToForm()
As a consequence, we can avoid a Clone() call of a previously
stack-based object just to get an owning reference. In turn,
this makes Clone() unused, so remove it. In turn, this makes
the copy constructor unused, so remove it.
-- delete copy-assign operator while were at it for symmetry.
Change-Id: I7901f0bc4f29bce508e1e5227bbeb7688955d3bd
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/59830
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fwl/cfwl_message.cpp b/xfa/fwl/cfwl_message.cpp
index 998966c..f330a08 100644
--- a/xfa/fwl/cfwl_message.cpp
+++ b/xfa/fwl/cfwl_message.cpp
@@ -11,6 +11,4 @@
CFWL_Widget* pDstTarget)
: m_type(type), m_pSrcTarget(pSrcTarget), m_pDstTarget(pDstTarget) {}
-CFWL_Message::CFWL_Message(const CFWL_Message& that) = default;
-
CFWL_Message::~CFWL_Message() = default;
diff --git a/xfa/fwl/cfwl_message.h b/xfa/fwl/cfwl_message.h
index 227b758..2242831 100644
--- a/xfa/fwl/cfwl_message.h
+++ b/xfa/fwl/cfwl_message.h
@@ -19,11 +19,8 @@
public:
enum class Type { Key, KillFocus, Mouse, MouseWheel, SetFocus };
- CFWL_Message(Type type, CFWL_Widget* pSrcTarget, CFWL_Widget* pDstTarget);
virtual ~CFWL_Message();
- virtual std::unique_ptr<CFWL_Message> Clone() = 0;
-
Type GetType() const { return m_type; }
CFWL_Widget* GetSrcTarget() const { return m_pSrcTarget.Get(); }
CFWL_Widget* GetDstTarget() const { return m_pDstTarget.Get(); }
@@ -31,7 +28,9 @@
void SetDstTarget(CFWL_Widget* pWidget) { m_pDstTarget = pWidget; }
protected:
- CFWL_Message(const CFWL_Message& that);
+ CFWL_Message(Type type, CFWL_Widget* pSrcTarget, CFWL_Widget* pDstTarget);
+ CFWL_Message(const CFWL_Message& that) = delete;
+ CFWL_Message& operator=(const CFWL_Message& that) = delete;
private:
const Type m_type;
diff --git a/xfa/fwl/cfwl_messagekey.cpp b/xfa/fwl/cfwl_messagekey.cpp
index 12464fa..9abb0c1 100644
--- a/xfa/fwl/cfwl_messagekey.cpp
+++ b/xfa/fwl/cfwl_messagekey.cpp
@@ -19,10 +19,4 @@
m_dwFlags(flags),
m_dwKeyCode(keycode) {}
-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 4b54509..3b46531 100644
--- a/xfa/fwl/cfwl_messagekey.h
+++ b/xfa/fwl/cfwl_messagekey.h
@@ -19,12 +19,8 @@
FWL_KeyCommand cmd,
uint32_t flags,
uint32_t keycode);
- CFWL_MessageKey(const CFWL_MessageKey& that);
~CFWL_MessageKey() override;
- // CFWL_Message
- std::unique_ptr<CFWL_Message> Clone() override;
-
FWL_KeyCommand m_dwCmd;
uint32_t m_dwFlags;
uint32_t m_dwKeyCode;
diff --git a/xfa/fwl/cfwl_messagekillfocus.cpp b/xfa/fwl/cfwl_messagekillfocus.cpp
index 34c4c05..15fe562 100644
--- a/xfa/fwl/cfwl_messagekillfocus.cpp
+++ b/xfa/fwl/cfwl_messagekillfocus.cpp
@@ -17,11 +17,4 @@
CFWL_Widget* pDstTarget)
: CFWL_Message(CFWL_Message::Type::KillFocus, pSrcTarget, pDstTarget) {}
-CFWL_MessageKillFocus::CFWL_MessageKillFocus(
- const CFWL_MessageKillFocus& that) = default;
-
CFWL_MessageKillFocus::~CFWL_MessageKillFocus() = default;
-
-std::unique_ptr<CFWL_Message> CFWL_MessageKillFocus::Clone() {
- return pdfium::MakeUnique<CFWL_MessageKillFocus>(*this);
-}
diff --git a/xfa/fwl/cfwl_messagekillfocus.h b/xfa/fwl/cfwl_messagekillfocus.h
index b94fc3f..18e64f9 100644
--- a/xfa/fwl/cfwl_messagekillfocus.h
+++ b/xfa/fwl/cfwl_messagekillfocus.h
@@ -16,12 +16,8 @@
public:
explicit CFWL_MessageKillFocus(CFWL_Widget* pSrcTarget);
CFWL_MessageKillFocus(CFWL_Widget* pSrcTarget, CFWL_Widget* pDstTarget);
- CFWL_MessageKillFocus(const CFWL_MessageKillFocus& that);
~CFWL_MessageKillFocus() override;
- // CFWL_Message:
- std::unique_ptr<CFWL_Message> Clone() override;
-
bool IsFocusedOnWidget(const CFWL_Widget* pWidget) const {
return pWidget == m_pSetFocus;
}
diff --git a/xfa/fwl/cfwl_messagemouse.cpp b/xfa/fwl/cfwl_messagemouse.cpp
index fdeee99..395c9e6 100644
--- a/xfa/fwl/cfwl_messagemouse.cpp
+++ b/xfa/fwl/cfwl_messagemouse.cpp
@@ -24,10 +24,4 @@
m_dwFlags(flags),
m_pos(pos) {}
-CFWL_MessageMouse::CFWL_MessageMouse(const CFWL_MessageMouse& other) = default;
-
CFWL_MessageMouse::~CFWL_MessageMouse() = default;
-
-std::unique_ptr<CFWL_Message> CFWL_MessageMouse::Clone() {
- return pdfium::MakeUnique<CFWL_MessageMouse>(*this);
-}
diff --git a/xfa/fwl/cfwl_messagemouse.h b/xfa/fwl/cfwl_messagemouse.h
index a38f60c..b0cea2a 100644
--- a/xfa/fwl/cfwl_messagemouse.h
+++ b/xfa/fwl/cfwl_messagemouse.h
@@ -32,12 +32,8 @@
FWL_MouseCommand cmd,
uint32_t flags,
CFX_PointF pos);
- CFWL_MessageMouse(const CFWL_MessageMouse& other);
~CFWL_MessageMouse() override;
- // CFWL_Message
- std::unique_ptr<CFWL_Message> Clone() override;
-
FWL_MouseCommand m_dwCmd;
uint32_t m_dwFlags = 0;
CFX_PointF m_pos;
diff --git a/xfa/fwl/cfwl_messagemousewheel.cpp b/xfa/fwl/cfwl_messagemousewheel.cpp
index fd6e69d..3331179 100644
--- a/xfa/fwl/cfwl_messagemousewheel.cpp
+++ b/xfa/fwl/cfwl_messagemousewheel.cpp
@@ -19,11 +19,4 @@
m_pos(pos),
m_delta(delta) {}
-CFWL_MessageMouseWheel::CFWL_MessageMouseWheel(const CFWL_MessageMouseWheel&) =
- default;
-
CFWL_MessageMouseWheel::~CFWL_MessageMouseWheel() = default;
-
-std::unique_ptr<CFWL_Message> CFWL_MessageMouseWheel::Clone() {
- return pdfium::MakeUnique<CFWL_MessageMouseWheel>(*this);
-}
diff --git a/xfa/fwl/cfwl_messagemousewheel.h b/xfa/fwl/cfwl_messagemousewheel.h
index 5385458..8eb4be7 100644
--- a/xfa/fwl/cfwl_messagemousewheel.h
+++ b/xfa/fwl/cfwl_messagemousewheel.h
@@ -18,12 +18,8 @@
uint32_t flags,
CFX_PointF pos,
CFX_PointF delta);
- CFWL_MessageMouseWheel(const CFWL_MessageMouseWheel&);
~CFWL_MessageMouseWheel() override;
- // CFWL_Message
- std::unique_ptr<CFWL_Message> Clone() override;
-
uint32_t m_dwFlags;
CFX_PointF m_pos;
CFX_PointF m_delta;
diff --git a/xfa/fwl/cfwl_messagesetfocus.cpp b/xfa/fwl/cfwl_messagesetfocus.cpp
index d797781..ec0c27a 100644
--- a/xfa/fwl/cfwl_messagesetfocus.cpp
+++ b/xfa/fwl/cfwl_messagesetfocus.cpp
@@ -14,11 +14,5 @@
CFWL_Widget* pDstTarget)
: CFWL_Message(CFWL_Message::Type::SetFocus, pSrcTarget, pDstTarget) {}
-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 410d26b..67e0035 100644
--- a/xfa/fwl/cfwl_messagesetfocus.h
+++ b/xfa/fwl/cfwl_messagesetfocus.h
@@ -14,11 +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
- std::unique_ptr<CFWL_Message> Clone() override;
};
#endif // XFA_FWL_CFWL_MESSAGESETFOCUS_H_
diff --git a/xfa/fwl/cfwl_widgetmgr.cpp b/xfa/fwl/cfwl_widgetmgr.cpp
index 184b403..1eefe37 100644
--- a/xfa/fwl/cfwl_widgetmgr.cpp
+++ b/xfa/fwl/cfwl_widgetmgr.cpp
@@ -309,16 +309,14 @@
pPopupRect);
}
-void CFWL_WidgetMgr::OnProcessMessageToForm(CFWL_Message* pMessage) {
- if (!pMessage)
- return;
-
+void CFWL_WidgetMgr::OnProcessMessageToForm(
+ std::unique_ptr<CFWL_Message> pMessage) {
CFWL_Widget* pDstWidget = pMessage->GetDstTarget();
if (!pDstWidget)
return;
CFWL_NoteDriver* pNoteDriver = pDstWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->ProcessMessage(pMessage->Clone());
+ pNoteDriver->ProcessMessage(std::move(pMessage));
}
void CFWL_WidgetMgr::OnDrawWidget(CFWL_Widget* pWidget,
diff --git a/xfa/fwl/cfwl_widgetmgr.h b/xfa/fwl/cfwl_widgetmgr.h
index 75b7250..a401e22 100644
--- a/xfa/fwl/cfwl_widgetmgr.h
+++ b/xfa/fwl/cfwl_widgetmgr.h
@@ -37,7 +37,7 @@
static CFWL_Widget* NextTab(CFWL_Widget* parent, CFWL_Widget* focus);
- void OnProcessMessageToForm(CFWL_Message* pMessage);
+ void OnProcessMessageToForm(std::unique_ptr<CFWL_Message> pMessage);
void OnDrawWidget(CFWL_Widget* pWidget,
CXFA_Graphics* pGraphics,
const CFX_Matrix& matrix);
diff --git a/xfa/fxfa/cxfa_fffield.cpp b/xfa/fxfa/cxfa_fffield.cpp
index 10f146e..e4c3fab 100644
--- a/xfa/fxfa/cxfa_fffield.cpp
+++ b/xfa/fxfa/cxfa_fffield.cpp
@@ -698,7 +698,7 @@
void CXFA_FFField::SendMessageToFWLWidget(
std::unique_ptr<CFWL_Message> pMessage) {
- GetApp()->GetFWLWidgetMgr()->OnProcessMessageToForm(pMessage.get());
+ GetApp()->GetFWLWidgetMgr()->OnProcessMessageToForm(std::move(pMessage));
}
void CXFA_FFField::OnProcessMessage(CFWL_Message* pMessage) {}