Chromium Code Reviews| Index: ui/accessibility/ax_node_data.cc |
| diff --git a/ui/accessibility/ax_node_data.cc b/ui/accessibility/ax_node_data.cc |
| index 0debb01196624557961d0d53f0ab626673a77874..98eeb013f20840deddcad5e036a4c26cdb9d53a9 100644 |
| --- a/ui/accessibility/ax_node_data.cc |
| +++ b/ui/accessibility/ax_node_data.cc |
| @@ -23,6 +23,23 @@ namespace ui { |
| namespace { |
| +bool IsFlagSet(uint32_t bitfield, uint32_t flag) { |
| + return 0 != (bitfield & (1 << flag)); |
| +} |
| + |
| +uint32_t ModifyFlag(uint32_t bitfield, uint32_t flag, bool set) { |
| + return set ? (bitfield |= (1 << flag)) : (bitfield &= ~(1 << flag)); |
|
tapted
2017/05/05 05:53:36
The '=' on this line are not needed. i.e. '|=' ->
Patti Lor
2017/05/08 00:28:08
Deleted :)
|
| +} |
| + |
| +std::string StateBitfieldToString(uint32_t state) { |
| + std::string str; |
| + for (uint32_t i = AX_STATE_NONE + 1; i <= AX_STATE_LAST; ++i) { |
| + if (IsFlagSet(state, i)) |
| + str += " " + base::ToUpperASCII(ToString(static_cast<AXState>(i))); |
| + } |
| + return str; |
| +} |
| + |
| std::string IntVectorToString(const std::vector<int>& items) { |
| std::string str; |
| for (size_t i = 0; i < items.size(); ++i) { |
| @@ -417,17 +434,18 @@ void AXNodeData::SetValue(const base::string16& value) { |
| SetValue(base::UTF16ToUTF8(value)); |
| } |
| -// static |
| -bool AXNodeData::IsFlagSet(uint32_t state, ui::AXState state_flag) { |
| - return 0 != (state & (1 << state_flag)); |
| +void AXNodeData::ClearBitfields() { |
| + DCHECK(state == 0xFFFFFFFF); |
|
tapted
2017/05/05 05:53:36
DCHECK_EQ?
Patti Lor
2017/05/08 00:28:08
Done.
|
| + state = AX_STATE_NONE; |
| } |
| -void AXNodeData::AddStateFlag(ui::AXState state_flag) { |
| - state |= (1 << state_flag); |
| +bool AXNodeData::HasState(AXState state_flag) const { |
| + return IsFlagSet(state, state_flag); |
| } |
| -bool AXNodeData::HasStateFlag(ui::AXState state_flag) const { |
| - return IsFlagSet(state, state_flag); |
| +void AXNodeData::AddState(AXState state_flag) { |
| + DCHECK(state_flag != AX_STATE_NONE); |
|
tapted
2017/05/05 05:53:36
DCHECK_NE?
Patti Lor
2017/05/08 00:28:08
Done.
|
| + state = ModifyFlag(state, state_flag, true); |
| } |
| std::string AXNodeData::ToString() const { |
| @@ -436,46 +454,7 @@ std::string AXNodeData::ToString() const { |
| result += "id=" + IntToString(id); |
| result += " " + ui::ToString(role); |
| - if (state & (1 << AX_STATE_BUSY)) |
| - result += " BUSY"; |
| - if (state & (1 << AX_STATE_COLLAPSED)) |
| - result += " COLLAPSED"; |
| - if (state & (1 << AX_STATE_EDITABLE)) |
| - result += " EDITABLE"; |
| - if (state & (1 << AX_STATE_EXPANDED)) |
| - result += " EXPANDED"; |
| - if (state & (1 << AX_STATE_FOCUSABLE)) |
| - result += " FOCUSABLE"; |
| - if (state & (1 << AX_STATE_HASPOPUP)) |
| - result += " HASPOPUP"; |
| - if (state & (1 << AX_STATE_HOVERED)) |
| - result += " HOVERED"; |
| - if (state & (1 << AX_STATE_INVISIBLE)) |
| - result += " INVISIBLE"; |
| - if (state & (1 << AX_STATE_LINKED)) |
| - result += " LINKED"; |
| - if (state & (1 << AX_STATE_MULTISELECTABLE)) |
| - result += " MULTISELECTABLE"; |
| - if (state & (1 << AX_STATE_OFFSCREEN)) |
| - result += " OFFSCREEN"; |
| - if (state & (1 << AX_STATE_PRESSED)) |
| - result += " PRESSED"; |
| - if (state & (1 << AX_STATE_PROTECTED)) |
| - result += " PROTECTED"; |
| - if (state & (1 << AX_STATE_READ_ONLY)) |
| - result += " READONLY"; |
| - if (state & (1 << AX_STATE_REQUIRED)) |
| - result += " REQUIRED"; |
| - if (state & (1 << AX_STATE_RICHLY_EDITABLE)) |
| - result += " RICHLY_EDITABLE"; |
| - if (state & (1 << AX_STATE_SELECTABLE)) |
| - result += " SELECTABLE"; |
| - if (state & (1 << AX_STATE_SELECTED)) |
| - result += " SELECTED"; |
| - if (state & (1 << AX_STATE_VERTICAL)) |
| - result += " VERTICAL"; |
| - if (state & (1 << AX_STATE_VISITED)) |
| - result += " VISITED"; |
| + result += StateBitfieldToString(state); |
| result += " (" + IntToString(location.x()) + ", " + |
| IntToString(location.y()) + ")-(" + |