| Index: xfa/fwl/theme/cfwl_checkboxtp.cpp | 
| diff --git a/xfa/fwl/theme/cfwl_checkboxtp.cpp b/xfa/fwl/theme/cfwl_checkboxtp.cpp | 
| index d00a097c611568fb435487eb819f475874521df8..45b0154bd64ace8be8c9ac9213cad28c2a40630a 100644 | 
| --- a/xfa/fwl/theme/cfwl_checkboxtp.cpp | 
| +++ b/xfa/fwl/theme/cfwl_checkboxtp.cpp | 
| @@ -28,17 +28,13 @@ const int kSignPath = 100; | 
| #define CHECKBOX_COLOR_BOXRB1 (ArgbEncode(255, 241, 239, 226)) | 
| #define CHECKBOX_COLOR_BOXRB2 (ArgbEncode(255, 255, 255, 255)) | 
|  | 
| -CFWL_CheckBoxTP::CFWL_CheckBoxTP() | 
| -    : m_pThemeData(new CKBThemeData), m_pCheckPath(nullptr) { | 
| +CFWL_CheckBoxTP::CFWL_CheckBoxTP() : m_pThemeData(new CKBThemeData) { | 
| SetThemeData(0); | 
| } | 
|  | 
| CFWL_CheckBoxTP::~CFWL_CheckBoxTP() { | 
| -  delete m_pThemeData; | 
| -  if (m_pCheckPath) { | 
| +  if (m_pCheckPath) | 
| m_pCheckPath->Clear(); | 
| -    delete m_pCheckPath; | 
| -  } | 
| } | 
|  | 
| bool CFWL_CheckBoxTP::IsValidWidget(IFWL_Widget* pWidget) { | 
| @@ -48,11 +44,11 @@ bool CFWL_CheckBoxTP::IsValidWidget(IFWL_Widget* pWidget) { | 
| uint32_t CFWL_CheckBoxTP::SetThemeID(IFWL_Widget* pWidget, | 
| uint32_t dwThemeID, | 
| FX_BOOL bChildren) { | 
| -  if (m_pThemeData) { | 
| +  if (m_pThemeData) | 
| SetThemeData(FWL_GetThemeColor(dwThemeID)); | 
| -  } | 
| return CFWL_WidgetTP::SetThemeID(pWidget, dwThemeID, bChildren); | 
| } | 
| + | 
| FX_BOOL CFWL_CheckBoxTP::DrawText(CFWL_ThemeText* pParams) { | 
| if (!m_pTextOut) | 
| return FALSE; | 
| @@ -61,6 +57,7 @@ FX_BOOL CFWL_CheckBoxTP::DrawText(CFWL_ThemeText* pParams) { | 
| : FWLTHEME_CAPACITY_TextColor); | 
| return CFWL_WidgetTP::DrawText(pParams); | 
| } | 
| + | 
| FX_BOOL CFWL_CheckBoxTP::DrawBackground(CFWL_ThemeBackground* pParams) { | 
| if (!pParams) | 
| return FALSE; | 
| @@ -100,14 +97,17 @@ FX_BOOL CFWL_CheckBoxTP::DrawBackground(CFWL_ThemeBackground* pParams) { | 
| } | 
| return TRUE; | 
| } | 
| + | 
| FWL_Error CFWL_CheckBoxTP::Initialize() { | 
| InitTTO(); | 
| return CFWL_WidgetTP::Initialize(); | 
| } | 
| + | 
| FWL_Error CFWL_CheckBoxTP::Finalize() { | 
| FinalizeTTO(); | 
| return CFWL_WidgetTP::Finalize(); | 
| } | 
| + | 
| void CFWL_CheckBoxTP::DrawBoxBk(IFWL_Widget* pWidget, | 
| CFX_Graphics* pGraphics, | 
| const CFX_RectF* pRect, | 
| @@ -159,6 +159,7 @@ void CFWL_CheckBoxTP::DrawBoxBk(IFWL_Widget* pWidget, | 
| m_pThemeData->clrBoxBk[iTheme][0], | 
| m_pThemeData->clrBoxBk[iTheme][1], &path, fillMode, pMatrix); | 
| } | 
| + | 
| void CFWL_CheckBoxTP::DrawSign(IFWL_Widget* pWidget, | 
| CFX_Graphics* pGraphics, | 
| const CFX_RectF* pRtBox, | 
| @@ -216,19 +217,21 @@ void CFWL_CheckBoxTP::DrawSign(IFWL_Widget* pWidget, | 
| FillSoildRect(pGraphics, ArgbEncode(255, 33, 161, 33), &rtSign, pMatrix); | 
| } | 
| } | 
| + | 
| void CFWL_CheckBoxTP::DrawSignNeutral(CFX_Graphics* pGraphics, | 
| const CFX_RectF* pRtSign, | 
| CFX_Matrix* pMatrix) { | 
| ((CFX_RectF*)pRtSign)->Inflate(-3, -3); | 
| FillSoildRect(pGraphics, m_pThemeData->clrSignNeutral, pRtSign, pMatrix); | 
| } | 
| + | 
| void CFWL_CheckBoxTP::DrawSignCheck(CFX_Graphics* pGraphics, | 
| const CFX_RectF* pRtSign, | 
| FX_ARGB argbFill, | 
| CFX_Matrix* pMatrix) { | 
| -  if (!m_pCheckPath) { | 
| -    initCheckPath(pRtSign->width); | 
| -  } | 
| +  if (!m_pCheckPath) | 
| +    InitCheckPath(pRtSign->width); | 
| + | 
| CFX_Matrix mt; | 
| mt.SetIdentity(); | 
| mt.Translate(pRtSign->left, pRtSign->top); | 
| @@ -236,9 +239,10 @@ void CFWL_CheckBoxTP::DrawSignCheck(CFX_Graphics* pGraphics, | 
| CFX_Color crFill(argbFill); | 
| pGraphics->SaveGraphState(); | 
| pGraphics->SetFillColor(&crFill); | 
| -  pGraphics->FillPath(m_pCheckPath, FXFILL_WINDING, &mt); | 
| +  pGraphics->FillPath(m_pCheckPath.get(), FXFILL_WINDING, &mt); | 
| pGraphics->RestoreGraphState(); | 
| } | 
| + | 
| void CFWL_CheckBoxTP::DrawSignCircle(CFX_Graphics* pGraphics, | 
| const CFX_RectF* pRtSign, | 
| FX_ARGB argbFill, | 
| @@ -252,6 +256,7 @@ void CFWL_CheckBoxTP::DrawSignCircle(CFX_Graphics* pGraphics, | 
| pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | 
| pGraphics->RestoreGraphState(); | 
| } | 
| + | 
| void CFWL_CheckBoxTP::DrawSignCross(CFX_Graphics* pGraphics, | 
| const CFX_RectF* pRtSign, | 
| FX_ARGB argbFill, | 
| @@ -269,6 +274,7 @@ void CFWL_CheckBoxTP::DrawSignCross(CFX_Graphics* pGraphics, | 
| pGraphics->StrokePath(&path, pMatrix); | 
| pGraphics->RestoreGraphState(); | 
| } | 
| + | 
| void CFWL_CheckBoxTP::DrawSignDiamond(CFX_Graphics* pGraphics, | 
| const CFX_RectF* pRtSign, | 
| FX_ARGB argbFill, | 
| @@ -289,6 +295,7 @@ void CFWL_CheckBoxTP::DrawSignDiamond(CFX_Graphics* pGraphics, | 
| pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | 
| pGraphics->RestoreGraphState(); | 
| } | 
| + | 
| void CFWL_CheckBoxTP::DrawSignSquare(CFX_Graphics* pGraphics, | 
| const CFX_RectF* pRtSign, | 
| FX_ARGB argbFill, | 
| @@ -303,6 +310,7 @@ void CFWL_CheckBoxTP::DrawSignSquare(CFX_Graphics* pGraphics, | 
| pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | 
| pGraphics->RestoreGraphState(); | 
| } | 
| + | 
| void CFWL_CheckBoxTP::DrawSignStar(CFX_Graphics* pGraphics, | 
| const CFX_RectF* pRtSign, | 
| FX_ARGB argbFill, | 
| @@ -336,6 +344,7 @@ void CFWL_CheckBoxTP::DrawSignStar(CFX_Graphics* pGraphics, | 
| pGraphics->FillPath(&path, FXFILL_WINDING, pMatrix); | 
| pGraphics->RestoreGraphState(); | 
| } | 
| + | 
| void CFWL_CheckBoxTP::DrawSignBorder(IFWL_Widget* pWidget, | 
| CFX_Graphics* pGraphics, | 
| const CFX_RectF* pRtBox, | 
| @@ -368,6 +377,7 @@ void CFWL_CheckBoxTP::DrawSignBorder(IFWL_Widget* pWidget, | 
| } | 
| } | 
| } | 
| + | 
| void CFWL_CheckBoxTP::SetThemeData(uint32_t dwID) { | 
| uint32_t* pData = (uint32_t*)&m_pThemeData->clrBoxBk; | 
| if (dwID) { | 
| @@ -436,9 +446,10 @@ void CFWL_CheckBoxTP::SetThemeData(uint32_t dwID) { | 
| m_pThemeData->clrSignNeutralPressed = ArgbEncode(255, 28, 134, 26); | 
| } | 
| } | 
| -void CFWL_CheckBoxTP::initCheckPath(FX_FLOAT fCheckLen) { | 
| + | 
| +void CFWL_CheckBoxTP::InitCheckPath(FX_FLOAT fCheckLen) { | 
| if (!m_pCheckPath) { | 
| -    m_pCheckPath = new CFX_Path; | 
| +    m_pCheckPath.reset(new CFX_Path); | 
| m_pCheckPath->Create(); | 
| FX_FLOAT fWidth = kSignPath; | 
| FX_FLOAT fHeight = -kSignPath; | 
|  |