Home | History | Annotate | Download | only in common
      1 // Copyright (c) 2012 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 // IPC messages for accessibility.
      6 // Multiply-included message file, hence no include guard.
      7 
      8 #include "base/basictypes.h"
      9 #include "content/common/content_export.h"
     10 #include "content/common/view_message_enums.h"
     11 #include "content/public/common/common_param_traits.h"
     12 #include "ipc/ipc_message_macros.h"
     13 #include "ipc/ipc_message_utils.h"
     14 #include "ipc/ipc_param_traits.h"
     15 #include "ipc/param_traits_macros.h"
     16 #include "third_party/WebKit/public/web/WebAXEnums.h"
     17 #include "ui/accessibility/ax_node_data.h"
     18 #include "ui/accessibility/ax_tree_update.h"
     19 
     20 #undef IPC_MESSAGE_EXPORT
     21 #define IPC_MESSAGE_EXPORT CONTENT_EXPORT
     22 
     23 #define IPC_MESSAGE_START AccessibilityMsgStart
     24 
     25 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXEvent, ui::AX_EVENT_LAST)
     26 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXRole, ui::AX_ROLE_LAST)
     27 
     28 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXBoolAttribute, ui::AX_BOOL_ATTRIBUTE_LAST)
     29 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXFloatAttribute, ui::AX_FLOAT_ATTRIBUTE_LAST)
     30 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXIntAttribute, ui::AX_INT_ATTRIBUTE_LAST)
     31 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXIntListAttribute,
     32                           ui::AX_INT_LIST_ATTRIBUTE_LAST)
     33 IPC_ENUM_TRAITS_MAX_VALUE(ui::AXStringAttribute, ui::AX_STRING_ATTRIBUTE_LAST)
     34 
     35 IPC_STRUCT_TRAITS_BEGIN(ui::AXNodeData)
     36   IPC_STRUCT_TRAITS_MEMBER(id)
     37   IPC_STRUCT_TRAITS_MEMBER(role)
     38   IPC_STRUCT_TRAITS_MEMBER(state)
     39   IPC_STRUCT_TRAITS_MEMBER(location)
     40   IPC_STRUCT_TRAITS_MEMBER(string_attributes)
     41   IPC_STRUCT_TRAITS_MEMBER(int_attributes)
     42   IPC_STRUCT_TRAITS_MEMBER(float_attributes)
     43   IPC_STRUCT_TRAITS_MEMBER(bool_attributes)
     44   IPC_STRUCT_TRAITS_MEMBER(intlist_attributes)
     45   IPC_STRUCT_TRAITS_MEMBER(html_attributes)
     46   IPC_STRUCT_TRAITS_MEMBER(child_ids)
     47 IPC_STRUCT_TRAITS_END()
     48 
     49 IPC_STRUCT_TRAITS_BEGIN(ui::AXTreeUpdate)
     50   IPC_STRUCT_TRAITS_MEMBER(node_id_to_clear)
     51   IPC_STRUCT_TRAITS_MEMBER(nodes)
     52 IPC_STRUCT_TRAITS_END()
     53 
     54 IPC_STRUCT_BEGIN(AccessibilityHostMsg_EventParams)
     55   // The tree update.
     56   IPC_STRUCT_MEMBER(ui::AXTreeUpdate, update)
     57 
     58   // Type of event.
     59   IPC_STRUCT_MEMBER(ui::AXEvent, event_type)
     60 
     61   // ID of the node that the event applies to.
     62   IPC_STRUCT_MEMBER(int, id)
     63 IPC_STRUCT_END()
     64 
     65 IPC_STRUCT_BEGIN(AccessibilityHostMsg_LocationChangeParams)
     66   // ID of the object whose location is changing.
     67   IPC_STRUCT_MEMBER(int, id)
     68 
     69   // The object's new location, in frame-relative coordinates (same
     70   // as the coordinates in AccessibilityNodeData).
     71   IPC_STRUCT_MEMBER(gfx::Rect, new_location)
     72 IPC_STRUCT_END()
     73 
     74 // Messages sent from the browser to the renderer.
     75 
     76 // Relay a request from assistive technology to set focus to a given node.
     77 IPC_MESSAGE_ROUTED1(AccessibilityMsg_SetFocus,
     78                     int /* object id */)
     79 
     80 // Relay a request from assistive technology to perform the default action
     81 // on a given node.
     82 IPC_MESSAGE_ROUTED1(AccessibilityMsg_DoDefaultAction,
     83                     int /* object id */)
     84 
     85 // Relay a request from assistive technology to make a given object
     86 // visible by scrolling as many scrollable containers as possible.
     87 // In addition, if it's not possible to make the entire object visible,
     88 // scroll so that the |subfocus| rect is visible at least. The subfocus
     89 // rect is in local coordinates of the object itself.
     90 IPC_MESSAGE_ROUTED2(AccessibilityMsg_ScrollToMakeVisible,
     91                     int /* object id */,
     92                     gfx::Rect /* subfocus */)
     93 
     94 // Relay a request from assistive technology to move a given object
     95 // to a specific location, in the WebContents area coordinate space, i.e.
     96 // (0, 0) is the top-left corner of the WebContents.
     97 IPC_MESSAGE_ROUTED2(AccessibilityMsg_ScrollToPoint,
     98                     int /* object id */,
     99                     gfx::Point /* new location */)
    100 
    101 // Relay a request from assistive technology to set the cursor or
    102 // selection within an editable text element.
    103 IPC_MESSAGE_ROUTED3(AccessibilityMsg_SetTextSelection,
    104                     int /* object id */,
    105                     int /* New start offset */,
    106                     int /* New end offset */)
    107 
    108 // Determine the accessibility object under a given point and reply with
    109 // a AccessibilityHostMsg_HitTestResult with the same id.
    110 IPC_MESSAGE_ROUTED1(AccessibilityMsg_HitTest,
    111                     gfx::Point /* location to test */);
    112 
    113 // Tells the render view that a AccessibilityHostMsg_Events
    114 // message was processed and it can send addition events.
    115 IPC_MESSAGE_ROUTED0(AccessibilityMsg_Events_ACK)
    116 
    117 // Kill the renderer because we got a fatal error in the accessibility tree.
    118 IPC_MESSAGE_ROUTED0(AccessibilityMsg_FatalError)
    119 
    120 // Messages sent from the renderer to the browser.
    121 
    122 // Sent to notify the browser about renderer accessibility events.
    123 // The browser responds with a AccessibilityMsg_Events_ACK.
    124 IPC_MESSAGE_ROUTED1(
    125     AccessibilityHostMsg_Events,
    126     std::vector<AccessibilityHostMsg_EventParams>)
    127 
    128 // Sent to update the browser of the location of accessibility objects.
    129 IPC_MESSAGE_ROUTED1(
    130     AccessibilityHostMsg_LocationChanges,
    131     std::vector<AccessibilityHostMsg_LocationChangeParams>)
    132