⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 286093 in webkit


Ignore:
Timestamp:
Nov 19, 2021, 11:52:57 PM (5 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK][a11y] Add implementation of image interface when building with ATSPI
https://bugs.webkit.org/show_bug.cgi?id=232782

Reviewed by Adrian Perez de Castro.

Source/WebCore:

  • SourcesGTK.txt:
  • accessibility/atspi/AccessibilityObjectAtspi.cpp:

(WebCore::AccessibilityObjectAtspi::interfacesForObject):
(WebCore::AccessibilityObjectAtspi::path):
(WebCore::AccessibilityObjectAtspi::buildInterfaces const):

  • accessibility/atspi/AccessibilityObjectAtspi.h:
  • accessibility/atspi/AccessibilityObjectImageAtspi.cpp: Added.

(WebCore::AccessibilityObjectAtspi::imageDescription const):

Tools:

Add unit tests for the image interface.

  • TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp:

(testImageBasic):
(beforeAll):

Location:
trunk
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r286091 r286093  
     12021-11-19  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK][a11y] Add implementation of image interface when building with ATSPI
     4        https://bugs.webkit.org/show_bug.cgi?id=232782
     5
     6        Reviewed by Adrian Perez de Castro.
     7
     8        * SourcesGTK.txt:
     9        * accessibility/atspi/AccessibilityObjectAtspi.cpp:
     10        (WebCore::AccessibilityObjectAtspi::interfacesForObject):
     11        (WebCore::AccessibilityObjectAtspi::path):
     12        (WebCore::AccessibilityObjectAtspi::buildInterfaces const):
     13        * accessibility/atspi/AccessibilityObjectAtspi.h:
     14        * accessibility/atspi/AccessibilityObjectImageAtspi.cpp: Added.
     15        (WebCore::AccessibilityObjectAtspi::imageDescription const):
     16
    1172021-11-19  Commit Queue  <commit-queue@webkit.org>
    218
  • trunk/Source/WebCore/SourcesGTK.txt

    r286059 r286093  
    4747accessibility/atspi/AccessibilityObjectHyperlinkAtspi.cpp
    4848accessibility/atspi/AccessibilityObjectHypertextAtspi.cpp
     49accessibility/atspi/AccessibilityObjectImageAtspi.cpp
    4950accessibility/atspi/AccessibilityObjectTextAtspi.cpp
    5051accessibility/atspi/AccessibilityObjectValueAtspi.cpp
  • trunk/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.cpp

    r286059 r286093  
    9494    if (coreObject.roleValue() == AccessibilityRole::WebArea)
    9595        interfaces.add(Interface::Document);
     96
     97    if (coreObject.isImage())
     98        interfaces.add(Interface::Image);
    9699
    97100    return interfaces;
     
    491494        if (m_interfaces.contains(Interface::Document))
    492495            interfaces.append({ const_cast<GDBusInterfaceInfo*>(&webkit_document_interface), &s_documentFunctions });
     496        if (m_interfaces.contains(Interface::Image))
     497            interfaces.append({ const_cast<GDBusInterfaceInfo*>(&webkit_image_interface), &s_imageFunctions });
    493498        m_path = atspiRoot->atspi().registerObject(*this, WTFMove(interfaces));
    494499    }
     
    11331138    if (m_interfaces.contains(Interface::Document))
    11341139        g_variant_builder_add(builder, "s", webkit_document_interface.name);
     1140    if (m_interfaces.contains(Interface::Image))
     1141        g_variant_builder_add(builder, "s", webkit_image_interface.name);
    11351142}
    11361143
  • trunk/Source/WebCore/accessibility/atspi/AccessibilityObjectAtspi.h

    r286059 r286093  
    4343    ~AccessibilityObjectAtspi() = default;
    4444
    45     enum class Interface : uint8_t {
     45    enum class Interface : uint16_t {
    4646        Accessible = 1 << 0,
    4747        Component = 1 << 1,
     
    5151        Hypertext = 1 << 5,
    5252        Action = 1 << 6,
    53         Document = 1 << 7
     53        Document = 1 << 7,
     54        Image = 1 << 8
    5455    };
    5556    const OptionSet<Interface>& interfaces() const { return m_interfaces; }
     
    176177    String documentLocale() const;
    177178
     179    String imageDescription() const;
     180
    178181    static OptionSet<Interface> interfacesForObject(AXCoreObject&);
    179182
     
    186189    static GDBusInterfaceVTable s_actionFunctions;
    187190    static GDBusInterfaceVTable s_documentFunctions;
     191    static GDBusInterfaceVTable s_imageFunctions;
    188192
    189193    AXCoreObject* m_axObject { nullptr };
  • trunk/Tools/ChangeLog

    r286084 r286093  
     12021-11-19  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK][a11y] Add implementation of image interface when building with ATSPI
     4        https://bugs.webkit.org/show_bug.cgi?id=232782
     5
     6        Reviewed by Adrian Perez de Castro.
     7
     8        Add unit tests for the image interface.
     9
     10        * TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp:
     11        (testImageBasic):
     12        (beforeAll):
     13
    1142021-11-19  Alex Christensen  <achristensen@webkit.org>
    215
  • trunk/Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebKitAccessibility.cpp

    r286059 r286093  
    20022002}
    20032003
     2004static void testImageBasic(AccessibilityTest* test, gconstpointer)
     2005{
     2006    test->showInWindow(800, 600);
     2007    GUniquePtr<char> baseDir(g_strdup_printf("file://%s/", Test::getResourcesDir().data()));
     2008    test->loadHtml(
     2009        "<html>"
     2010        "  <body>"
     2011        "    <img style='position:absolute; left:1; top:1' src='blank.ico' width=5 height=5 alt='This is a blank icon' lang='en'></img>"
     2012        "  </body>"
     2013        "</html>",
     2014        baseDir.get());
     2015    test->waitUntilLoadFinished();
     2016
     2017    auto testApp = test->findTestApplication();
     2018    g_assert_true(ATSPI_IS_ACCESSIBLE(testApp.get()));
     2019
     2020    auto documentWeb = test->findDocumentWeb(testApp.get());
     2021    g_assert_true(ATSPI_IS_ACCESSIBLE(documentWeb.get()));
     2022    g_assert_cmpint(atspi_accessible_get_child_count(documentWeb.get(), nullptr), ==, 1);
     2023
     2024    auto img = adoptGRef(atspi_accessible_get_child_at_index(documentWeb.get(), 0, nullptr));
     2025    g_assert_true(ATSPI_IS_IMAGE(img.get()));
     2026    GUniquePtr<AtspiRect> rect(atspi_image_get_image_extents(ATSPI_IMAGE(img.get()), ATSPI_COORD_TYPE_WINDOW, nullptr));
     2027    g_assert_nonnull(rect.get());
     2028    g_assert_cmpuint(rect->x, ==, 1);
     2029    g_assert_cmpuint(rect->y, ==, 1);
     2030    g_assert_cmpuint(rect->width, ==, 5);
     2031    g_assert_cmpuint(rect->height, ==, 5);
     2032    GUniquePtr<AtspiPoint> point(atspi_image_get_image_position(ATSPI_IMAGE(img.get()), ATSPI_COORD_TYPE_WINDOW, nullptr));
     2033    g_assert_nonnull(point.get());
     2034    g_assert_cmpuint(rect->x, ==, point->x);
     2035    g_assert_cmpuint(rect->y, ==, point->y);
     2036    GUniquePtr<AtspiPoint> size(atspi_image_get_image_size(ATSPI_IMAGE(img.get()), nullptr));
     2037    g_assert_nonnull(size.get());
     2038    g_assert_cmpuint(size->x, ==, rect->width);
     2039    g_assert_cmpuint(size->y, ==, rect->height);
     2040
     2041    GUniquePtr<char> description(atspi_image_get_image_description(ATSPI_IMAGE(img.get()), nullptr));
     2042    g_assert_cmpstr(description.get(), ==, "This is a blank icon");
     2043#if USE(ATSPI)
     2044    GUniquePtr<char> locale(atspi_image_get_image_locale(ATSPI_IMAGE(img.get()), nullptr));
     2045    g_assert_cmpstr(locale.get(), ==, "en");
     2046#endif
     2047}
     2048
    20042049void beforeAll()
    20052050{
     
    20272072    AccessibilityTest::add("WebKitAccessibility", "action/basic", testActionBasic);
    20282073    AccessibilityTest::add("WebKitAccessibility", "document/basic", testDocumentBasic);
     2074    AccessibilityTest::add("WebKitAccessibility", "image/basic", testImageBasic);
    20292075}
    20302076
Note: See TracChangeset for help on using the changeset viewer.