Avoid more |CXFA_FFField::m_pNormalWidget| usage.
Another CL leading towards making |CXFA_FFField::m_pNormalWidget|
private. This CL targets LoadWidget() methods in the CXFA_FFField class
hierachy. Add asserts to make sure IsLoaded() returns false in
LoadWidget().
Change-Id: I39f1f07bb55053890564c0e31a64f00a2185f91d
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/62491
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/xfa/fxfa/cxfa_ffbarcode.cpp b/xfa/fxfa/cxfa_ffbarcode.cpp
index aa93c96..31b0608 100644
--- a/xfa/fxfa/cxfa_ffbarcode.cpp
+++ b/xfa/fxfa/cxfa_ffbarcode.cpp
@@ -139,22 +139,21 @@
CXFA_FFBarcode::~CXFA_FFBarcode() = default;
bool CXFA_FFBarcode::LoadWidget() {
+ ASSERT(!IsLoaded());
auto pNew = pdfium::MakeUnique<CFWL_Barcode>(GetFWLApp());
CFWL_Barcode* pFWLBarcode = pNew.get();
m_pNormalWidget = std::move(pNew);
- m_pNormalWidget->SetFFWidget(this);
+ pFWLBarcode->SetFFWidget(this);
- CFWL_NoteDriver* pNoteDriver =
- m_pNormalWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(),
- m_pNormalWidget.get());
- m_pOldDelegate = m_pNormalWidget->GetDelegate();
- m_pNormalWidget->SetDelegate(this);
- m_pNormalWidget->LockUpdate();
+ CFWL_NoteDriver* pNoteDriver = pFWLBarcode->GetOwnerApp()->GetNoteDriver();
+ pNoteDriver->RegisterEventTarget(pFWLBarcode, pFWLBarcode);
+ m_pOldDelegate = pFWLBarcode->GetDelegate();
+ pFWLBarcode->SetDelegate(this);
+ pFWLBarcode->LockUpdate();
pFWLBarcode->SetText(m_pNode->GetValue(XFA_VALUEPICTURE_Display));
UpdateWidgetProperty();
- m_pNormalWidget->UnlockUpdate();
+ pFWLBarcode->UnlockUpdate();
return CXFA_FFField::LoadWidget();
}
diff --git a/xfa/fxfa/cxfa_ffcheckbutton.cpp b/xfa/fxfa/cxfa_ffcheckbutton.cpp
index f72b63c..b9f1ef8 100644
--- a/xfa/fxfa/cxfa_ffcheckbutton.cpp
+++ b/xfa/fxfa/cxfa_ffcheckbutton.cpp
@@ -31,24 +31,23 @@
CXFA_FFCheckButton::~CXFA_FFCheckButton() = default;
bool CXFA_FFCheckButton::LoadWidget() {
+ ASSERT(!IsLoaded());
auto pNew = pdfium::MakeUnique<CFWL_CheckBox>(GetFWLApp());
CFWL_CheckBox* pCheckBox = pNew.get();
m_pNormalWidget = std::move(pNew);
- m_pNormalWidget->SetFFWidget(this);
+ pCheckBox->SetFFWidget(this);
- CFWL_NoteDriver* pNoteDriver =
- m_pNormalWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(),
- m_pNormalWidget.get());
- m_pOldDelegate = m_pNormalWidget->GetDelegate();
- m_pNormalWidget->SetDelegate(this);
+ CFWL_NoteDriver* pNoteDriver = pCheckBox->GetOwnerApp()->GetNoteDriver();
+ pNoteDriver->RegisterEventTarget(pCheckBox, pCheckBox);
+ m_pOldDelegate = pCheckBox->GetDelegate();
+ pCheckBox->SetDelegate(this);
if (m_pNode->IsRadioButton())
pCheckBox->ModifyStylesEx(FWL_STYLEEXT_CKB_RadioButton, 0xFFFFFFFF);
- m_pNormalWidget->LockUpdate();
+ pCheckBox->LockUpdate();
UpdateWidgetProperty();
SetFWLCheckState(m_pNode->GetCheckState());
- m_pNormalWidget->UnlockUpdate();
+ pCheckBox->UnlockUpdate();
return CXFA_FFField::LoadWidget();
}
diff --git a/xfa/fxfa/cxfa_ffcombobox.cpp b/xfa/fxfa/cxfa_ffcombobox.cpp
index 75d152ae1..5c5e5a0 100644
--- a/xfa/fxfa/cxfa_ffcombobox.cpp
+++ b/xfa/fxfa/cxfa_ffcombobox.cpp
@@ -45,18 +45,17 @@
}
bool CXFA_FFComboBox::LoadWidget() {
+ ASSERT(!IsLoaded());
auto pNew = pdfium::MakeUnique<CFWL_ComboBox>(GetFWLApp());
CFWL_ComboBox* pComboBox = pNew.get();
m_pNormalWidget = std::move(pNew);
- m_pNormalWidget->SetFFWidget(this);
+ pComboBox->SetFFWidget(this);
- CFWL_NoteDriver* pNoteDriver =
- m_pNormalWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(),
- m_pNormalWidget.get());
- m_pOldDelegate = m_pNormalWidget->GetDelegate();
- m_pNormalWidget->SetDelegate(this);
- m_pNormalWidget->LockUpdate();
+ CFWL_NoteDriver* pNoteDriver = pComboBox->GetOwnerApp()->GetNoteDriver();
+ pNoteDriver->RegisterEventTarget(pComboBox, pComboBox);
+ m_pOldDelegate = pComboBox->GetDelegate();
+ pComboBox->SetDelegate(this);
+ pComboBox->LockUpdate();
for (const auto& label : m_pNode->GetChoiceListItems(false))
pComboBox->AddString(label);
@@ -68,7 +67,7 @@
pComboBox->SetCurSel(iSelArray.front());
UpdateWidgetProperty();
- m_pNormalWidget->UnlockUpdate();
+ pComboBox->UnlockUpdate();
return CXFA_FFField::LoadWidget();
}
diff --git a/xfa/fxfa/cxfa_ffdatetimeedit.cpp b/xfa/fxfa/cxfa_ffdatetimeedit.cpp
index 6d51e55..d324e66 100644
--- a/xfa/fxfa/cxfa_ffdatetimeedit.cpp
+++ b/xfa/fxfa/cxfa_ffdatetimeedit.cpp
@@ -41,18 +41,17 @@
}
bool CXFA_FFDateTimeEdit::LoadWidget() {
+ ASSERT(!IsLoaded());
auto pNewPicker = pdfium::MakeUnique<CFWL_DateTimePicker>(GetFWLApp());
CFWL_DateTimePicker* pWidget = pNewPicker.get();
m_pNormalWidget = std::move(pNewPicker);
- m_pNormalWidget->SetFFWidget(this);
+ pWidget->SetFFWidget(this);
- CFWL_NoteDriver* pNoteDriver =
- m_pNormalWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(),
- m_pNormalWidget.get());
- m_pOldDelegate = m_pNormalWidget->GetDelegate();
- m_pNormalWidget->SetDelegate(this);
- m_pNormalWidget->LockUpdate();
+ CFWL_NoteDriver* pNoteDriver = pWidget->GetOwnerApp()->GetNoteDriver();
+ pNoteDriver->RegisterEventTarget(pWidget, pWidget);
+ m_pOldDelegate = pWidget->GetDelegate();
+ pWidget->SetDelegate(this);
+ pWidget->LockUpdate();
WideString wsText = m_pNode->GetValue(XFA_VALUEPICTURE_Display);
pWidget->SetEditText(wsText);
@@ -73,7 +72,7 @@
}
}
UpdateWidgetProperty();
- m_pNormalWidget->UnlockUpdate();
+ pWidget->UnlockUpdate();
return CXFA_FFField::LoadWidget();
}
diff --git a/xfa/fxfa/cxfa_ffimageedit.cpp b/xfa/fxfa/cxfa_ffimageedit.cpp
index 1cebdf6..5641932 100644
--- a/xfa/fxfa/cxfa_ffimageedit.cpp
+++ b/xfa/fxfa/cxfa_ffimageedit.cpp
@@ -31,15 +31,14 @@
}
bool CXFA_FFImageEdit::LoadWidget() {
+ ASSERT(!IsLoaded());
auto pNew = pdfium::MakeUnique<CFWL_PictureBox>(GetFWLApp());
CFWL_PictureBox* pPictureBox = pNew.get();
m_pNormalWidget = std::move(pNew);
- m_pNormalWidget->SetFFWidget(this);
+ pPictureBox->SetFFWidget(this);
- CFWL_NoteDriver* pNoteDriver =
- m_pNormalWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(),
- m_pNormalWidget.get());
+ CFWL_NoteDriver* pNoteDriver = pPictureBox->GetOwnerApp()->GetNoteDriver();
+ pNoteDriver->RegisterEventTarget(pPictureBox, pPictureBox);
m_pOldDelegate = pPictureBox->GetDelegate();
pPictureBox->SetDelegate(this);
diff --git a/xfa/fxfa/cxfa_fflistbox.cpp b/xfa/fxfa/cxfa_fflistbox.cpp
index f15b89e..fc4ec69 100644
--- a/xfa/fxfa/cxfa_fflistbox.cpp
+++ b/xfa/fxfa/cxfa_fflistbox.cpp
@@ -38,21 +38,20 @@
}
bool CXFA_FFListBox::LoadWidget() {
+ ASSERT(!IsLoaded());
auto pNew = pdfium::MakeUnique<CFWL_ListBox>(
GetFWLApp(), pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr);
CFWL_ListBox* pListBox = pNew.get();
pListBox->ModifyStyles(FWL_WGTSTYLE_VScroll | FWL_WGTSTYLE_NoBackground,
0xFFFFFFFF);
m_pNormalWidget = std::move(pNew);
- m_pNormalWidget->SetFFWidget(this);
+ pListBox->SetFFWidget(this);
- CFWL_NoteDriver* pNoteDriver =
- m_pNormalWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(),
- m_pNormalWidget.get());
- m_pOldDelegate = m_pNormalWidget->GetDelegate();
- m_pNormalWidget->SetDelegate(this);
- m_pNormalWidget->LockUpdate();
+ CFWL_NoteDriver* pNoteDriver = pListBox->GetOwnerApp()->GetNoteDriver();
+ pNoteDriver->RegisterEventTarget(pListBox, pListBox);
+ m_pOldDelegate = pListBox->GetDelegate();
+ pListBox->SetDelegate(this);
+ pListBox->LockUpdate();
for (const auto& label : m_pNode->GetChoiceListItems(false))
pListBox->AddString(label);
@@ -62,11 +61,11 @@
dwExtendedStyle |= FWL_STYLEEXT_LTB_MultiSelection;
dwExtendedStyle |= GetAlignment();
- m_pNormalWidget->ModifyStylesEx(dwExtendedStyle, 0xFFFFFFFF);
+ pListBox->ModifyStylesEx(dwExtendedStyle, 0xFFFFFFFF);
for (int32_t selected : m_pNode->GetSelectedItems())
pListBox->SetSelItem(pListBox->GetItem(nullptr, selected), true);
- m_pNormalWidget->UnlockUpdate();
+ pListBox->UnlockUpdate();
return CXFA_FFField::LoadWidget();
}
diff --git a/xfa/fxfa/cxfa_ffnumericedit.cpp b/xfa/fxfa/cxfa_ffnumericedit.cpp
index 9240f27..ab8d67c 100644
--- a/xfa/fxfa/cxfa_ffnumericedit.cpp
+++ b/xfa/fxfa/cxfa_ffnumericedit.cpp
@@ -23,23 +23,22 @@
CXFA_FFNumericEdit::~CXFA_FFNumericEdit() = default;
bool CXFA_FFNumericEdit::LoadWidget() {
+ ASSERT(!IsLoaded());
auto pNewEdit = pdfium::MakeUnique<CFWL_Edit>(
GetFWLApp(), pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr);
CFWL_Edit* pWidget = pNewEdit.get();
m_pNormalWidget = std::move(pNewEdit);
- m_pNormalWidget->SetFFWidget(this);
+ pWidget->SetFFWidget(this);
- CFWL_NoteDriver* pNoteDriver =
- m_pNormalWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(),
- m_pNormalWidget.get());
- m_pOldDelegate = m_pNormalWidget->GetDelegate();
- m_pNormalWidget->SetDelegate(this);
- m_pNormalWidget->LockUpdate();
+ CFWL_NoteDriver* pNoteDriver = pWidget->GetOwnerApp()->GetNoteDriver();
+ pNoteDriver->RegisterEventTarget(pWidget, pWidget);
+ m_pOldDelegate = pWidget->GetDelegate();
+ pWidget->SetDelegate(this);
+ pWidget->LockUpdate();
pWidget->SetText(m_pNode->GetValue(XFA_VALUEPICTURE_Display));
UpdateWidgetProperty();
- m_pNormalWidget->UnlockUpdate();
+ pWidget->UnlockUpdate();
return CXFA_FFField::LoadWidget();
}
diff --git a/xfa/fxfa/cxfa_ffpasswordedit.cpp b/xfa/fxfa/cxfa_ffpasswordedit.cpp
index 100d14e..7691631 100644
--- a/xfa/fxfa/cxfa_ffpasswordedit.cpp
+++ b/xfa/fxfa/cxfa_ffpasswordedit.cpp
@@ -22,23 +22,22 @@
CXFA_FFPasswordEdit::~CXFA_FFPasswordEdit() = default;
bool CXFA_FFPasswordEdit::LoadWidget() {
+ ASSERT(!IsLoaded());
auto pNewEdit = pdfium::MakeUnique<CFWL_Edit>(
GetFWLApp(), pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr);
CFWL_Edit* pWidget = pNewEdit.get();
m_pNormalWidget = std::move(pNewEdit);
- m_pNormalWidget->SetFFWidget(this);
+ pWidget->SetFFWidget(this);
- CFWL_NoteDriver* pNoteDriver =
- m_pNormalWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(),
- m_pNormalWidget.get());
- m_pOldDelegate = m_pNormalWidget->GetDelegate();
- m_pNormalWidget->SetDelegate(this);
- m_pNormalWidget->LockUpdate();
+ CFWL_NoteDriver* pNoteDriver = pWidget->GetOwnerApp()->GetNoteDriver();
+ pNoteDriver->RegisterEventTarget(pWidget, pWidget);
+ m_pOldDelegate = pWidget->GetDelegate();
+ pWidget->SetDelegate(this);
+ pWidget->LockUpdate();
pWidget->SetText(m_pNode->GetValue(XFA_VALUEPICTURE_Display));
UpdateWidgetProperty();
- m_pNormalWidget->UnlockUpdate();
+ pWidget->UnlockUpdate();
return CXFA_FFField::LoadWidget();
}
diff --git a/xfa/fxfa/cxfa_ffpushbutton.cpp b/xfa/fxfa/cxfa_ffpushbutton.cpp
index 8811d24..1b09f60 100644
--- a/xfa/fxfa/cxfa_ffpushbutton.cpp
+++ b/xfa/fxfa/cxfa_ffpushbutton.cpp
@@ -50,22 +50,20 @@
}
bool CXFA_FFPushButton::LoadWidget() {
- ASSERT(!m_pNormalWidget);
+ ASSERT(!IsLoaded());
auto pNew = pdfium::MakeUnique<CFWL_PushButton>(GetFWLApp());
CFWL_PushButton* pPushButton = pNew.get();
m_pOldDelegate = pPushButton->GetDelegate();
pPushButton->SetDelegate(this);
m_pNormalWidget = std::move(pNew);
- m_pNormalWidget->SetFFWidget(this);
+ pPushButton->SetFFWidget(this);
- CFWL_NoteDriver* pNoteDriver =
- m_pNormalWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(),
- m_pNormalWidget.get());
- m_pNormalWidget->LockUpdate();
+ CFWL_NoteDriver* pNoteDriver = pPushButton->GetOwnerApp()->GetNoteDriver();
+ pNoteDriver->RegisterEventTarget(pPushButton, pPushButton);
+ pPushButton->LockUpdate();
UpdateWidgetProperty();
LoadHighlightCaption();
- m_pNormalWidget->UnlockUpdate();
+ pPushButton->UnlockUpdate();
return CXFA_FFField::LoadWidget();
}
diff --git a/xfa/fxfa/cxfa_ffsignature.cpp b/xfa/fxfa/cxfa_ffsignature.cpp
index 88d10b6..9de23b6 100644
--- a/xfa/fxfa/cxfa_ffsignature.cpp
+++ b/xfa/fxfa/cxfa_ffsignature.cpp
@@ -17,6 +17,7 @@
CXFA_FFSignature::~CXFA_FFSignature() = default;
bool CXFA_FFSignature::LoadWidget() {
+ ASSERT(!IsLoaded());
return CXFA_FFField::LoadWidget();
}
diff --git a/xfa/fxfa/cxfa_fftextedit.cpp b/xfa/fxfa/cxfa_fftextedit.cpp
index 8052290..b5f2f87 100644
--- a/xfa/fxfa/cxfa_fftextedit.cpp
+++ b/xfa/fxfa/cxfa_fftextedit.cpp
@@ -44,21 +44,20 @@
bool CXFA_FFTextEdit::LoadWidget() {
auto pNewWidget = pdfium::MakeUnique<CFWL_Edit>(
GetFWLApp(), pdfium::MakeUnique<CFWL_WidgetProperties>(), nullptr);
+ ASSERT(!IsLoaded());
CFWL_Edit* pFWLEdit = pNewWidget.get();
m_pNormalWidget = std::move(pNewWidget);
- m_pNormalWidget->SetFFWidget(this);
+ pFWLEdit->SetFFWidget(this);
- CFWL_NoteDriver* pNoteDriver =
- m_pNormalWidget->GetOwnerApp()->GetNoteDriver();
- pNoteDriver->RegisterEventTarget(m_pNormalWidget.get(),
- m_pNormalWidget.get());
- m_pOldDelegate = m_pNormalWidget->GetDelegate();
- m_pNormalWidget->SetDelegate(this);
- m_pNormalWidget->LockUpdate();
+ CFWL_NoteDriver* pNoteDriver = pFWLEdit->GetOwnerApp()->GetNoteDriver();
+ pNoteDriver->RegisterEventTarget(pFWLEdit, pFWLEdit);
+ m_pOldDelegate = pFWLEdit->GetDelegate();
+ pFWLEdit->SetDelegate(this);
+ pFWLEdit->LockUpdate();
UpdateWidgetProperty();
pFWLEdit->SetText(m_pNode->GetValue(XFA_VALUEPICTURE_Display));
- m_pNormalWidget->UnlockUpdate();
+ pFWLEdit->UnlockUpdate();
return CXFA_FFField::LoadWidget();
}