diff options
-rw-r--r-- | src/core/browser_accessibility_manager_qt.cpp | 13 | ||||
-rw-r--r-- | src/core/browser_accessibility_manager_qt.h | 2 | ||||
-rw-r--r-- | src/core/browser_accessibility_qt.cpp | 96 | ||||
-rw-r--r-- | src/core/browser_accessibility_qt.h | 15 | ||||
-rw-r--r-- | tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp | 12 |
5 files changed, 20 insertions, 118 deletions
diff --git a/src/core/browser_accessibility_manager_qt.cpp b/src/core/browser_accessibility_manager_qt.cpp index 392f57e20..bd3c5e7d9 100644 --- a/src/core/browser_accessibility_manager_qt.cpp +++ b/src/core/browser_accessibility_manager_qt.cpp @@ -47,7 +47,7 @@ using namespace blink; namespace content { BrowserAccessibilityManager* BrowserAccessibilityManager::Create( - const SimpleAXTreeUpdate& initialTree, + const ui::AXTreeUpdate& initialTree, BrowserAccessibilityDelegate* delegate, BrowserAccessibilityFactory* factory) { @@ -69,12 +69,11 @@ BrowserAccessibility *BrowserAccessibilityFactoryQt::Create() #ifndef QT_NO_ACCESSIBILITY BrowserAccessibilityManagerQt::BrowserAccessibilityManagerQt( - QObject* parentObject, - const SimpleAXTreeUpdate& initialTree, - BrowserAccessibilityDelegate* delegate, - BrowserAccessibilityFactory* factory) - : BrowserAccessibilityManager(delegate, factory) - , m_parentObject(parentObject) { + QObject *parentObject, const ui::AXTreeUpdate &initialTree, + BrowserAccessibilityDelegate* delegate, BrowserAccessibilityFactory* factory) + : BrowserAccessibilityManager(delegate, factory) + , m_parentObject(parentObject) +{ Initialize(initialTree); } diff --git a/src/core/browser_accessibility_manager_qt.h b/src/core/browser_accessibility_manager_qt.h index 7f139e03d..4ff9fb699 100644 --- a/src/core/browser_accessibility_manager_qt.h +++ b/src/core/browser_accessibility_manager_qt.h @@ -61,7 +61,7 @@ class BrowserAccessibilityManagerQt : public BrowserAccessibilityManager public: BrowserAccessibilityManagerQt( QObject* parentObject, - const SimpleAXTreeUpdate& initialTree, + const ui::AXTreeUpdate& initialTree, BrowserAccessibilityDelegate* delegate, BrowserAccessibilityFactory* factory = new BrowserAccessibilityFactoryQt()); diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp index 4bb9e3a4a..fecbac111 100644 --- a/src/core/browser_accessibility_qt.cpp +++ b/src/core/browser_accessibility_qt.cpp @@ -62,84 +62,6 @@ BrowserAccessibilityQt::BrowserAccessibilityQt() QAccessible::registerAccessibleInterface(this); } -// This function is taken from chromium/content/browser/accessibility/browser_accessibility_win.cc -// see also http://www.w3.org/TR/html-aapi -void BrowserAccessibilityQt::OnDataChanged() -{ - BrowserAccessibility::OnDataChanged(); - - // The calculation of the accessible name of an element has been - // standardized in the HTML to Platform Accessibility APIs Implementation - // Guide (http://www.w3.org/TR/html-aapi/). In order to return the - // appropriate accessible name on Windows, we need to apply some logic - // to the fields we get from WebKit. - // - // TODO(dmazzoni): move most of this logic into WebKit. - // - // WebKit gives us: - // - // name: the default name, e.g. inner text - // title ui element: a reference to a <label> element on the same - // page that labels this node. - // description: accessible labels that override the default name: - // aria-label or aria-labelledby or aria-describedby - // help: the value of the "title" attribute - // - // On Windows, the logic we apply lets some fields take precedence and - // always returns the primary name in "name" and the secondary name, - // if any, in "description". - - int title_elem_id = GetIntAttribute(ui::AX_ATTR_TITLE_UI_ELEMENT); - base::string16 name = GetString16Attribute(ui::AX_ATTR_NAME); - base::string16 description = GetString16Attribute(ui::AX_ATTR_DESCRIPTION); - base::string16 help = GetString16Attribute(ui::AX_ATTR_HELP); - base::string16 value = GetString16Attribute(ui::AX_ATTR_VALUE); - - // WebKit annoyingly puts the title in the description if there's no other - // description, which just confuses the rest of the logic. Put it back. - // Now "help" is always the value of the "title" attribute, if present. - base::string16 title_attr; - if (GetHtmlAttribute("title", &title_attr) && - description == title_attr && - help.empty()) { - help = description; - description.clear(); - } - - // Now implement the main logic: the descripion should become the name if - // it's nonempty, and the help should become the description if - // there's no description - or the name if there's no name or description. - if (!description.empty()) { - name = description; - description.clear(); - } - if (!help.empty() && description.empty()) { - description = help; - help.clear(); - } - if (!description.empty() && name.empty() && !title_elem_id) { - name = description; - description.clear(); - } - - // If it's a text field, also consider the placeholder. - base::string16 placeholder; - if (GetRole() == ui::AX_ROLE_TEXT_FIELD && - HasState(ui::AX_STATE_FOCUSABLE) && - GetHtmlAttribute("placeholder", &placeholder)) { - if (name.empty() && !title_elem_id) { - name = placeholder; - } else if (description.empty()) { - description = placeholder; - } - } - - m_name = toQt(name); - m_description = toQt(description); - m_help = toQt(help); - m_value = toQt(value); -} - bool BrowserAccessibilityQt::isValid() const { return true; @@ -169,7 +91,7 @@ void *BrowserAccessibilityQt::interface_cast(QAccessible::InterfaceType type) return static_cast<QAccessibleActionInterface*>(this); break; case QAccessible::TextInterface: - if (IsEditableText()) + if (HasState(ui::AX_STATE_EDITABLE)) return static_cast<QAccessibleTextInterface*>(this); break; case QAccessible::ValueInterface: { @@ -232,13 +154,11 @@ QString BrowserAccessibilityQt::text(QAccessible::Text t) const { switch (t) { case QAccessible::Name: - return name(); + return toQt(GetStringAttribute(ui::AX_ATTR_NAME)); case QAccessible::Description: - return description(); - case QAccessible::Help: - return help(); + return toQt(GetStringAttribute(ui::AX_ATTR_DESCRIPTION)); case QAccessible::Value: - return value(); + return toQt(GetStringAttribute(ui::AX_ATTR_VALUE)); case QAccessible::Accelerator: return toQt(GetStringAttribute(ui::AX_ATTR_SHORTCUT)); default: @@ -485,7 +405,7 @@ QAccessible::Role BrowserAccessibilityQt::role() const QAccessible::State BrowserAccessibilityQt::state() const { QAccessible::State state = QAccessible::State(); - int32 s = GetState(); + int32_t s = GetState(); if (s & (1 << ui::AX_STATE_BUSY)) state.busy = true; if (s & (1 << ui::AX_STATE_CHECKED)) @@ -504,8 +424,6 @@ QAccessible::State BrowserAccessibilityQt::state() const state.hasPopup = true; if (s & (1 << ui::AX_STATE_HOVERED)) state.hotTracked = true; - if (s & (1 << ui::AX_STATE_INDETERMINATE)) - {} // FIXME if (s & (1 << ui::AX_STATE_INVISIBLE)) state.invisible = true; if (s & (1 << ui::AX_STATE_LINKED)) @@ -530,7 +448,7 @@ QAccessible::State BrowserAccessibilityQt::state() const {} // FIXME if (s & (1 << ui::AX_STATE_VISITED)) {} // FIXME - if (IsEditableText()) + if (HasState(ui::AX_STATE_EDITABLE)) state.editable = true; return state; } @@ -713,7 +631,7 @@ QAccessibleInterface *BrowserAccessibilityQt::cellAt(int row, int column) const if (row < 0 || row >= rows || column < 0 || column >= columns) return 0; - const std::vector<int32>& cell_ids = GetIntListAttribute(ui::AX_ATTR_CELL_IDS); + const std::vector<int32_t>& cell_ids = GetIntListAttribute(ui::AX_ATTR_CELL_IDS); DCHECK_EQ(columns * rows, static_cast<int>(cell_ids.size())); int cell_id = cell_ids[row * columns + column]; diff --git a/src/core/browser_accessibility_qt.h b/src/core/browser_accessibility_qt.h index 1cdd97fb3..186bd7d84 100644 --- a/src/core/browser_accessibility_qt.h +++ b/src/core/browser_accessibility_qt.h @@ -58,9 +58,6 @@ class BrowserAccessibilityQt public: BrowserAccessibilityQt(); - // BrowserAccessibility - virtual void OnDataChanged() Q_DECL_OVERRIDE; - // QAccessibleInterface virtual bool isValid() const Q_DECL_OVERRIDE; virtual QObject *object() const Q_DECL_OVERRIDE; @@ -145,18 +142,6 @@ public: virtual QAccessibleInterface* table() const Q_DECL_OVERRIDE; virtual void modelChange(QAccessibleTableModelChangeEvent *event) Q_DECL_OVERRIDE; - - QString name() const { return m_name; } - QString description() const { return m_description; } - QString help() const { return m_help; } - QString value() const { return m_value; } - -private: - // IAccessible name, description, help, value. - QString m_name; - QString m_description; - QString m_help; - QString m_value; }; } diff --git a/tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp b/tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp index 016c4f98c..63ca25396 100644 --- a/tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp +++ b/tests/auto/widgets/qwebengineaccessibility/tst_qwebengineaccessibility.cpp @@ -112,9 +112,9 @@ void tst_QWebEngineView::hierarchy() QCOMPARE(text->parent(), grouping); QCOMPARE(grouping->indexOfChild(text), 0); QCOMPARE(text->childCount(), 0); - QCOMPARE(text->text(QAccessible::Name), QString()); + QCOMPARE(text->text(QAccessible::Name), QStringLiteral("Hello world")); QCOMPARE(text->text(QAccessible::Description), QString()); - QCOMPARE(text->text(QAccessible::Value), QStringLiteral("Hello world")); + QCOMPARE(text->text(QAccessible::Value), QString()); QAccessibleInterface *input = grouping->child(1); QCOMPARE(input->role(), QAccessible::EditableText); @@ -182,9 +182,9 @@ void tst_QWebEngineView::text() QAccessibleInterface *grouping2 = document->child(1); QAccessibleInterface *label1 = grouping2->child(0); QCOMPARE(label1->role(), QAccessible::StaticText); - QCOMPARE(label1->text(QAccessible::Name), QString()); + QCOMPARE(label1->text(QAccessible::Name), QStringLiteral("Enter your name here:")); QCOMPARE(label1->text(QAccessible::Description), QString()); - QCOMPARE(label1->text(QAccessible::Value), QStringLiteral("Enter your name here:")); + QCOMPARE(label1->text(QAccessible::Value), QString()); QAccessibleInterface *grouping3 = document->child(2); QAccessibleInterface *input2 = grouping3->child(0); QCOMPARE(input2->role(), QAccessible::EditableText); @@ -194,9 +194,9 @@ void tst_QWebEngineView::text() QAccessibleInterface *grouping4 = document->child(3); QAccessibleInterface *label2 = grouping4->child(0); QCOMPARE(label2->role(), QAccessible::StaticText); - QCOMPARE(label2->text(QAccessible::Name), QString()); + QCOMPARE(label2->text(QAccessible::Name), QStringLiteral("Provide both first and last name.")); QCOMPARE(label2->text(QAccessible::Description), QString()); - QCOMPARE(label2->text(QAccessible::Value), QStringLiteral("Provide both first and last name.")); + QCOMPARE(label2->text(QAccessible::Value), QString()); // Good day! [edit] QAccessibleInterface *grouping5 = document->child(4); |