Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1105)

Unified Diff: xfa/fde/cfde_txtedtbuf.cpp

Issue 2614383003: Add CFDE_TxtEdtBuf tests (Closed)
Patch Set: Review feedback Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « xfa/fde/cfde_txtedtbuf.h ('k') | xfa/fde/cfde_txtedtbuf_unittest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: xfa/fde/cfde_txtedtbuf.cpp
diff --git a/xfa/fde/cfde_txtedtbuf.cpp b/xfa/fde/cfde_txtedtbuf.cpp
index 94383c261ca750916655f9b01822877aca78f9e3..36fc47e4923c2b9781b751f97e8220a2d3ca4bad 100644
--- a/xfa/fde/cfde_txtedtbuf.cpp
+++ b/xfa/fde/cfde_txtedtbuf.cpp
@@ -37,6 +37,7 @@ int32_t CFDE_TxtEdtBuf::GetTextLength() const {
void CFDE_TxtEdtBuf::SetText(const CFX_WideString& wsText) {
ASSERT(!wsText.IsEmpty());
+
Clear(false);
int32_t nTextLength = wsText.GetLength();
int32_t nNeedCount =
@@ -89,6 +90,12 @@ FX_WCHAR CFDE_TxtEdtBuf::GetCharByIndex(int32_t nIndex) const {
}
CFX_WideString CFDE_TxtEdtBuf::GetRange(int32_t nBegin, int32_t nLength) const {
+ if (nLength == 0 || GetTextLength() == 0)
+ return CFX_WideString();
+
+ ASSERT(nBegin >= 0 && nLength > 0 && nBegin < GetTextLength() &&
+ nBegin + nLength <= GetTextLength());
+
FDE_CHUNKPLACE cp;
Index2CP(nBegin, cp);
int32_t nLeave = nLength;
@@ -124,6 +131,8 @@ void CFDE_TxtEdtBuf::Insert(int32_t nPos,
const FX_WCHAR* lpText,
int32_t nLength) {
ASSERT(nPos >= 0 && nPos <= m_nTotal);
+ ASSERT(nLength > 0);
+
FDE_CHUNKPLACE cp;
Index2CP(nPos, cp);
int32_t nLengthTemp = nLength;
@@ -220,52 +229,6 @@ void CFDE_TxtEdtBuf::Clear(bool bRelease) {
m_bChanged = true;
}
-bool CFDE_TxtEdtBuf::Optimize(IFX_Pause* pPause) {
- if (m_bChanged == false) {
- return true;
- }
- if (m_nTotal == 0) {
- return true;
- }
- int32_t nCount = m_Chunks.GetSize();
- if (nCount == 0) {
- return true;
- }
- int32_t i = 0;
- for (; i < nCount; i++) {
- FDE_CHUNKHEADER* lpChunk = m_Chunks[i];
- if (lpChunk->nUsed == 0) {
- m_pAllocator->Free(lpChunk);
- m_Chunks.RemoveAt(i);
- --i;
- --nCount;
- }
- }
- if (pPause && pPause->NeedToPauseNow())
- return false;
-
- FDE_CHUNKHEADER* lpPreChunk = m_Chunks[0];
- FDE_CHUNKHEADER* lpCurChunk = nullptr;
- for (i = 1; i < nCount; i++) {
- lpCurChunk = m_Chunks[i];
- if (lpPreChunk->nUsed + lpCurChunk->nUsed <= m_nChunkSize) {
- FXSYS_memcpy(lpPreChunk->wChars + lpPreChunk->nUsed, lpCurChunk->wChars,
- lpCurChunk->nUsed * sizeof(FX_WCHAR));
- lpPreChunk->nUsed += lpCurChunk->nUsed;
- m_pAllocator->Free(lpCurChunk);
- m_Chunks.RemoveAt(i);
- --i;
- --nCount;
- } else {
- lpPreChunk = lpCurChunk;
- }
- if (pPause && pPause->NeedToPauseNow())
- return false;
- }
- m_bChanged = false;
- return true;
-}
-
void CFDE_TxtEdtBuf::ResetChunkBuffer(int32_t nDefChunkCount,
int32_t nChunkSize) {
ASSERT(nChunkSize);
@@ -284,6 +247,11 @@ void CFDE_TxtEdtBuf::ResetChunkBuffer(int32_t nDefChunkCount,
m_nTotal = 0;
}
+void CFDE_TxtEdtBuf::SetChunkSizeForTesting(size_t size) {
+ Clear(true);
+ ResetChunkBuffer(kDefaultChunkCount, size);
+}
+
int32_t CFDE_TxtEdtBuf::CP2Index(const FDE_CHUNKPLACE& cp) const {
int32_t nTotal = cp.nCharIndex;
int32_t i = 0;
« no previous file with comments | « xfa/fde/cfde_txtedtbuf.h ('k') | xfa/fde/cfde_txtedtbuf_unittest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698