blob: 3024f1454915383a8ad99f92b7e70cdda92437ac [file] [log] [blame]
dmazzonie6f29fc2016-10-19 16:34:291// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ui/accessibility/ax_action_data.h"
6
7#include <set>
8
9#include "base/strings/string_number_conversions.h"
10#include "base/strings/string_util.h"
11#include "base/strings/stringprintf.h"
12#include "base/strings/utf_string_conversions.h"
Dominic Mazzonidcef1b732018-01-26 17:57:0413#include "ui/accessibility/ax_enum_util.h"
dmazzonie6f29fc2016-10-19 16:34:2914
15using base::IntToString;
16
17namespace ui {
18
Brett Wilson0feae3a2017-12-06 03:16:5619AXActionData::AXActionData() = default;
dmazzonie6f29fc2016-10-19 16:34:2920AXActionData::AXActionData(const AXActionData& other) = default;
Brett Wilson0feae3a2017-12-06 03:16:5621AXActionData::~AXActionData() = default;
dmazzonie6f29fc2016-10-19 16:34:2922
Dominic Mazzoni909f8e72018-01-24 20:37:0423namespace {
24
Dominic Mazzonidcef1b732018-01-26 17:57:0425bool IsFlagSet(uint32_t bitfield, ax::mojom::ActionFlags flag) {
Dominic Mazzoni909f8e72018-01-24 20:37:0426 return 0 != (bitfield & (1 << static_cast<uint32_t>(flag)));
27}
28
29} // namespace
30
dmazzonie6f29fc2016-10-19 16:34:2931// Note that this includes an initial space character if nonempty, but
Dominic Mazzonidcef1b732018-01-26 17:57:0432// that works fine because this is normally printed by
33// ax::mojom::Action::ToString.
dmazzonie6f29fc2016-10-19 16:34:2934std::string AXActionData::ToString() const {
35 std::string result = ui::ToString(action);
36
37 if (target_node_id != -1)
38 result += " target_node_id=" + IntToString(target_node_id);
39
Dominic Mazzonidcef1b732018-01-26 17:57:0440 if (IsFlagSet(flags, ax::mojom::ActionFlags::kRequestImages))
dmazzonie6f29fc2016-10-19 16:34:2941 result += " flag_request_images";
42
Dominic Mazzonidcef1b732018-01-26 17:57:0443 if (IsFlagSet(flags, ax::mojom::ActionFlags::kRequestInlineTextBoxes))
dmazzonie6f29fc2016-10-19 16:34:2944 result += " flag_request_inline_text_boxes";
45
dmazzonie6f29fc2016-10-19 16:34:2946 if (anchor_node_id != -1) {
47 result += " anchor_node_id=" + IntToString(anchor_node_id);
48 result += " anchor_offset=" + IntToString(anchor_offset);
49 }
50 if (focus_node_id != -1) {
51 result += " focus_node_id=" + IntToString(focus_node_id);
52 result += " focus_offset=" + IntToString(focus_offset);
53 }
54
55 return result;
56}
57
58} // namespace ui