We should use && instead of || in operator=() which is introduced by [1]
bool TextIteratorBehavior::operator==(const TextIteratorBehavior& other) const {
return m_collapseTrailingSpace == other.m_collapseTrailingSpace ||
m_doesNotBreakAtReplacedElement ==
other.m_doesNotBreakAtReplacedElement ||
m_emitsCharactersBetweenAllVisiblePositions ==
other.m_emitsCharactersBetweenAllVisibl
...
[1] http://crrev.com/2657813002 (Introduce TextIteratorBehavior class
It is better to use
union {
uint32_t allFlags;
struct {
unsigned doesNotBraekAtReplacement : 1;
...
} bits;
} m_data;
For ease of adding new flags and make code simpler.
Note: As of Feb 14, 2017, TextIteratorBehavior::operator==() only used for DCHECK() in SimplifiedBackwardsTextIterator.
Comment 1 by xiaoche...@chromium.org
, Nov 13 2017