| Index: content/browser/accessibility/browser_accessibility_win.h
|
| diff --git a/content/browser/accessibility/browser_accessibility_win.h b/content/browser/accessibility/browser_accessibility_win.h
|
| index 1ebf93102c34b58a34882ba44f9da74ca4f05ab5..250c9a8305c3d985f75abddc1cfc5fdecf1bc231 100644
|
| --- a/content/browser/accessibility/browser_accessibility_win.h
|
| +++ b/content/browser/accessibility/browser_accessibility_win.h
|
| @@ -7,971 +7,38 @@
|
|
|
| #include <atlbase.h>
|
| #include <atlcom.h>
|
| -#include <oleacc.h>
|
| -#include <stddef.h>
|
| -#include <stdint.h>
|
| -#include <UIAutomationCore.h>
|
|
|
| -#include <vector>
|
| -
|
| -#include "base/compiler_specific.h"
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/macros.h"
|
| #include "content/browser/accessibility/browser_accessibility.h"
|
| +#include "content/browser/accessibility/browser_accessibility_com_win.h"
|
| #include "content/common/content_export.h"
|
| -#include "third_party/iaccessible2/ia2_api_all.h"
|
| -#include "third_party/isimpledom/ISimpleDOMDocument.h"
|
| -#include "third_party/isimpledom/ISimpleDOMNode.h"
|
| -#include "third_party/isimpledom/ISimpleDOMText.h"
|
| -#include "ui/accessibility/platform/ax_platform_node_win.h"
|
|
|
| namespace content {
|
| -class BrowserAccessibilityRelation;
|
|
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -//
|
| -// BrowserAccessibilityWin
|
| -//
|
| -// Class implementing the windows accessible interface for the Browser-Renderer
|
| -// communication of accessibility information, providing accessibility
|
| -// to be used by screen readers and other assistive technology (AT).
|
| -//
|
| -////////////////////////////////////////////////////////////////////////////////
|
| -class __declspec(uuid("562072fe-3390-43b1-9e2c-dd4118f5ac79"))
|
| -BrowserAccessibilityWin
|
| - : public BrowserAccessibility,
|
| - public CComObjectRootEx<CComMultiThreadModel>,
|
| - public IDispatchImpl<IAccessible2, &IID_IAccessible2,
|
| - &LIBID_IAccessible2Lib>,
|
| - public IAccessibleApplication,
|
| - public IAccessibleHyperlink,
|
| - public IAccessibleHypertext,
|
| - public IAccessibleImage,
|
| - public IAccessibleTable,
|
| - public IAccessibleTable2,
|
| - public IAccessibleTableCell,
|
| - public IAccessibleValue,
|
| - public IServiceProvider,
|
| - public ISimpleDOMDocument,
|
| - public ISimpleDOMNode,
|
| - public ISimpleDOMText,
|
| - public IAccessibleEx,
|
| - public IRawElementProviderSimple {
|
| +class CONTENT_EXPORT BrowserAccessibilityWin : public BrowserAccessibility {
|
| public:
|
| - BEGIN_COM_MAP(BrowserAccessibilityWin)
|
| - COM_INTERFACE_ENTRY2(IDispatch, IAccessible2)
|
| - COM_INTERFACE_ENTRY(IAccessible)
|
| - COM_INTERFACE_ENTRY(IAccessible2)
|
| - COM_INTERFACE_ENTRY(IAccessibleAction)
|
| - COM_INTERFACE_ENTRY(IAccessibleApplication)
|
| - COM_INTERFACE_ENTRY(IAccessibleEx)
|
| - COM_INTERFACE_ENTRY(IAccessibleHyperlink)
|
| - COM_INTERFACE_ENTRY(IAccessibleHypertext)
|
| - COM_INTERFACE_ENTRY(IAccessibleImage)
|
| - COM_INTERFACE_ENTRY(IAccessibleTable)
|
| - COM_INTERFACE_ENTRY(IAccessibleTable2)
|
| - COM_INTERFACE_ENTRY(IAccessibleTableCell)
|
| - COM_INTERFACE_ENTRY(IAccessibleText)
|
| - COM_INTERFACE_ENTRY(IAccessibleValue)
|
| - COM_INTERFACE_ENTRY(IRawElementProviderSimple)
|
| - COM_INTERFACE_ENTRY(IServiceProvider)
|
| - COM_INTERFACE_ENTRY(ISimpleDOMDocument)
|
| - COM_INTERFACE_ENTRY(ISimpleDOMNode)
|
| - COM_INTERFACE_ENTRY(ISimpleDOMText)
|
| - END_COM_MAP()
|
| -
|
| - // Represents a non-static text node in IAccessibleHypertext. This character
|
| - // is embedded in the response to IAccessibleText::get_text, indicating the
|
| - // position where a non-static text child object appears.
|
| - CONTENT_EXPORT static const base::char16 kEmbeddedCharacter;
|
| -
|
| - // Mappings from roles and states to human readable strings. Initialize
|
| - // with |InitializeStringMaps|.
|
| - static std::map<int32_t, base::string16> role_string_map;
|
| - static std::map<int32_t, base::string16> state_string_map;
|
| -
|
| - CONTENT_EXPORT BrowserAccessibilityWin();
|
| -
|
| - CONTENT_EXPORT ~BrowserAccessibilityWin() override;
|
| -
|
| - // Called after an atomic tree update completes. See
|
| - // BrowserAccessibilityManagerWin::OnAtomicUpdateFinished for more
|
| - // details on what these do.
|
| - CONTENT_EXPORT void UpdateStep1ComputeWinAttributes();
|
| - CONTENT_EXPORT void UpdateStep2ComputeHypertext();
|
| - CONTENT_EXPORT void UpdateStep3FireEvents(bool is_subtree_creation);
|
| + BrowserAccessibilityWin();
|
| + ~BrowserAccessibilityWin() override;
|
|
|
| // This is used to call UpdateStep1ComputeWinAttributes, ... above when
|
| // a node needs to be updated for some other reason other than via
|
| // OnAtomicUpdateFinished.
|
| - CONTENT_EXPORT void UpdatePlatformAttributes() override;
|
| + void UpdatePlatformAttributes() override;
|
|
|
| //
|
| // BrowserAccessibility methods.
|
| //
|
| - CONTENT_EXPORT void OnSubtreeWillBeDeleted() override;
|
| - CONTENT_EXPORT void NativeAddReference() override;
|
| - CONTENT_EXPORT void NativeReleaseReference() override;
|
| - CONTENT_EXPORT bool IsNative() const override;
|
| - CONTENT_EXPORT void OnLocationChanged() override;
|
| -
|
| - //
|
| - // IAccessible methods.
|
| - //
|
| -
|
| - // Performs the default action on a given object.
|
| - CONTENT_EXPORT STDMETHODIMP accDoDefaultAction(VARIANT var_id) override;
|
| -
|
| - // Retrieves the child element or child object at a given point on the screen.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - accHitTest(LONG x_left, LONG y_top, VARIANT* child) override;
|
| -
|
| - // Retrieves the specified object's current screen location.
|
| - CONTENT_EXPORT STDMETHODIMP accLocation(LONG* x_left,
|
| - LONG* y_top,
|
| - LONG* width,
|
| - LONG* height,
|
| - VARIANT var_id) override;
|
| -
|
| - // Traverses to another UI element and retrieves the object.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - accNavigate(LONG nav_dir, VARIANT start, VARIANT* end) override;
|
| -
|
| - // Retrieves an IDispatch interface pointer for the specified child.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_accChild(VARIANT var_child, IDispatch** disp_child) override;
|
| -
|
| - // Retrieves the number of accessible children.
|
| - CONTENT_EXPORT STDMETHODIMP get_accChildCount(LONG* child_count) override;
|
| -
|
| - // Retrieves a string that describes the object's default action.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_accDefaultAction(VARIANT var_id, BSTR* default_action) override;
|
| -
|
| - // Retrieves the object's description.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_accDescription(VARIANT var_id, BSTR* desc) override;
|
| -
|
| - // Retrieves the object that has the keyboard focus.
|
| - CONTENT_EXPORT STDMETHODIMP get_accFocus(VARIANT* focus_child) override;
|
| -
|
| - // Retrieves the help information associated with the object.
|
| - CONTENT_EXPORT STDMETHODIMP get_accHelp(VARIANT var_id, BSTR* heflp) override;
|
| -
|
| - // Retrieves the specified object's shortcut.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_accKeyboardShortcut(VARIANT var_id, BSTR* access_key) override;
|
| -
|
| - // Retrieves the name of the specified object.
|
| - CONTENT_EXPORT STDMETHODIMP get_accName(VARIANT var_id, BSTR* name) override;
|
| -
|
| - // Retrieves the IDispatch interface of the object's parent.
|
| - CONTENT_EXPORT STDMETHODIMP get_accParent(IDispatch** disp_parent) override;
|
| -
|
| - // Retrieves information describing the role of the specified object.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_accRole(VARIANT var_id, VARIANT* role) override;
|
| -
|
| - // Retrieves the current state of the specified object.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_accState(VARIANT var_id, VARIANT* state) override;
|
| -
|
| - // Returns the value associated with the object.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_accValue(VARIANT var_id, BSTR* value) override;
|
| -
|
| - // Make an object take focus or extend the selection.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - accSelect(LONG flags_sel, VARIANT var_id) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_accHelpTopic(BSTR* help_file, VARIANT var_id, LONG* topic_id) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_accSelection(VARIANT* selected) override;
|
| -
|
| - // Deprecated methods, not implemented.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - put_accName(VARIANT var_id, BSTR put_name) override;
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - put_accValue(VARIANT var_id, BSTR put_val) override;
|
| -
|
| - //
|
| - // IAccessible2 methods.
|
| - //
|
| -
|
| - // Returns role from a longer list of possible roles.
|
| - CONTENT_EXPORT STDMETHODIMP role(LONG* role) override;
|
| -
|
| - // Returns the state bitmask from a larger set of possible states.
|
| - CONTENT_EXPORT STDMETHODIMP get_states(AccessibleStates* states) override;
|
| -
|
| - // Returns the attributes specific to this IAccessible2 object,
|
| - // such as a cell's formula.
|
| - CONTENT_EXPORT STDMETHODIMP get_attributes(BSTR* attributes) override;
|
| -
|
| - // Get the unique ID of this object so that the client knows if it's
|
| - // been encountered previously.
|
| - CONTENT_EXPORT STDMETHODIMP get_uniqueID(LONG* unique_id) override;
|
| -
|
| - // Get the window handle of the enclosing window.
|
| - CONTENT_EXPORT STDMETHODIMP get_windowHandle(HWND* window_handle) override;
|
| -
|
| - // Get this object's index in its parent object.
|
| - CONTENT_EXPORT STDMETHODIMP get_indexInParent(LONG* index_in_parent) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nRelations(LONG* n_relations) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_relation(LONG relation_index, IAccessibleRelation** relation) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_relations(LONG max_relations,
|
| - IAccessibleRelation** relations,
|
| - LONG* n_relations) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP scrollTo(enum IA2ScrollType scroll_type) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - scrollToPoint(enum IA2CoordinateType coordinate_type,
|
| - LONG x,
|
| - LONG y) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_groupPosition(LONG* group_level,
|
| - LONG* similar_items_in_group,
|
| - LONG* position_in_group) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_localizedExtendedRole(BSTR* localized_extended_role) override;
|
| -
|
| - //
|
| - // IAccessible2 methods not implemented.
|
| - //
|
| - CONTENT_EXPORT STDMETHODIMP get_extendedRole(BSTR* extended_role) override;
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_nExtendedStates(LONG* n_extended_states) override;
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_extendedStates(LONG max_extended_states,
|
| - BSTR** extended_states,
|
| - LONG* n_extended_states) override;
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_localizedExtendedStates(LONG max_localized_extended_states,
|
| - BSTR** localized_extended_states,
|
| - LONG* n_localized_extended_states) override;
|
| - CONTENT_EXPORT STDMETHODIMP get_locale(IA2Locale* locale) override;
|
| -
|
| - //
|
| - // IAccessibleApplication methods.
|
| - //
|
| - CONTENT_EXPORT STDMETHODIMP get_appName(BSTR* app_name) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_appVersion(BSTR* app_version) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_toolkitName(BSTR* toolkit_name) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_toolkitVersion(BSTR* toolkit_version) override;
|
| -
|
| - //
|
| - // IAccessibleImage methods.
|
| - //
|
| - CONTENT_EXPORT STDMETHODIMP get_description(BSTR* description) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_imagePosition(enum IA2CoordinateType coordinate_type,
|
| - LONG* x,
|
| - LONG* y) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_imageSize(LONG* height, LONG* width) override;
|
| -
|
| - //
|
| - // IAccessibleTable methods.
|
| - //
|
| -
|
| - // get_description - also used by IAccessibleImage
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_accessibleAt(long row, long column, IUnknown** accessible) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_caption(IUnknown** accessible) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_childIndex(long row_index, long column_index, long* cell_index) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_columnDescription(long column, BSTR* description) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_columnExtentAt(long row, long column, long* n_columns_spanned) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_columnHeader(IAccessibleTable** accessible_table,
|
| - long* starting_row_index) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_columnIndex(long cell_index, long* column_index) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nColumns(long* column_count) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nRows(long* row_count) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nSelectedChildren(long* cell_count) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nSelectedColumns(long* column_count) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nSelectedRows(long* row_count) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_rowDescription(long row, BSTR* description) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_rowExtentAt(long row, long column, long* n_rows_spanned) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_rowHeader(IAccessibleTable** accessible_table,
|
| - long* starting_column_index) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_rowIndex(long cell_index, long* row_index) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_selectedChildren(long max_children,
|
| - long** children,
|
| - long* n_children) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_selectedColumns(long max_columns,
|
| - long** columns,
|
| - long* n_columns) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_selectedRows(long max_rows, long** rows, long* n_rows) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_summary(IUnknown** accessible) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_isColumnSelected(long column, boolean* is_selected) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_isRowSelected(long row, boolean* is_selected) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_isSelected(long row, long column, boolean* is_selected) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_rowColumnExtentsAtIndex(long index,
|
| - long* row,
|
| - long* column,
|
| - long* row_extents,
|
| - long* column_extents,
|
| - boolean* is_selected) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP selectRow(long row) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP selectColumn(long column) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP unselectRow(long row) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP unselectColumn(long column) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_modelChange(IA2TableModelChange* model_change) override;
|
| -
|
| - //
|
| - // IAccessibleTable2 methods.
|
| - //
|
| - // (Most of these are duplicates of IAccessibleTable methods, only the
|
| - // unique ones are included here.)
|
| - //
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_cellAt(long row, long column, IUnknown** cell) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nSelectedCells(long* cell_count) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_selectedCells(IUnknown*** cells, long* n_selected_cells) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_selectedColumns(long** columns, long* n_columns) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_selectedRows(long** rows, long* n_rows) override;
|
| -
|
| - //
|
| - // IAccessibleTableCell methods.
|
| - //
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_columnExtent(long* n_columns_spanned) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_columnHeaderCells(IUnknown*** cell_accessibles,
|
| - long* n_column_header_cells) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_columnIndex(long* column_index) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_rowExtent(long* n_rows_spanned) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_rowHeaderCells(IUnknown*** cell_accessibles,
|
| - long* n_row_header_cells) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_rowIndex(long* row_index) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_isSelected(boolean* is_selected) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_rowColumnExtents(long* row,
|
| - long* column,
|
| - long* row_extents,
|
| - long* column_extents,
|
| - boolean* is_selected) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_table(IUnknown** table) override;
|
| -
|
| - //
|
| - // IAccessibleText methods.
|
| - //
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nCharacters(LONG* n_characters) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_caretOffset(LONG* offset) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_characterExtents(LONG offset,
|
| - enum IA2CoordinateType coord_type,
|
| - LONG* out_x,
|
| - LONG* out_y,
|
| - LONG* out_width,
|
| - LONG* out_height) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nSelections(LONG* n_selections) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_selection(LONG selection_index,
|
| - LONG* start_offset,
|
| - LONG* end_offset) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_text(LONG start_offset, LONG end_offset, BSTR* text) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_textAtOffset(LONG offset,
|
| - enum IA2TextBoundaryType boundary_type,
|
| - LONG* start_offset,
|
| - LONG* end_offset,
|
| - BSTR* text) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_textBeforeOffset(LONG offset,
|
| - enum IA2TextBoundaryType boundary_type,
|
| - LONG* start_offset,
|
| - LONG* end_offset,
|
| - BSTR* text) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_textAfterOffset(LONG offset,
|
| - enum IA2TextBoundaryType boundary_type,
|
| - LONG* start_offset,
|
| - LONG* end_offset,
|
| - BSTR* text) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_newText(IA2TextSegment* new_text) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_oldText(IA2TextSegment* old_text) override;
|
| + void OnSubtreeWillBeDeleted() override;
|
| + bool IsNative() const override;
|
| + void Destroy() override;
|
| + void OnLocationChanged() override;
|
| + base::string16 GetText() const override;
|
|
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_offsetAtPoint(LONG x,
|
| - LONG y,
|
| - enum IA2CoordinateType coord_type,
|
| - LONG* offset) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - scrollSubstringTo(LONG start_index,
|
| - LONG end_index,
|
| - enum IA2ScrollType scroll_type) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - scrollSubstringToPoint(LONG start_index,
|
| - LONG end_index,
|
| - enum IA2CoordinateType coordinate_type,
|
| - LONG x,
|
| - LONG y) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - addSelection(LONG start_offset, LONG end_offset) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP removeSelection(LONG selection_index) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP setCaretOffset(LONG offset) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP setSelection(LONG selection_index,
|
| - LONG start_offset,
|
| - LONG end_offset) override;
|
| -
|
| - // IAccessibleText methods not implemented.
|
| - CONTENT_EXPORT STDMETHODIMP get_attributes(LONG offset,
|
| - LONG* start_offset,
|
| - LONG* end_offset,
|
| - BSTR* text_attributes) override;
|
| -
|
| - //
|
| - // IAccessibleHypertext methods.
|
| - //
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nHyperlinks(long* hyperlink_count) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_hyperlink(long index, IAccessibleHyperlink** hyperlink) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_hyperlinkIndex(long char_index, long* hyperlink_index) override;
|
| -
|
| - // IAccessibleHyperlink methods.
|
| - CONTENT_EXPORT STDMETHODIMP get_anchor(long index, VARIANT* anchor) override;
|
| - CONTENT_EXPORT STDMETHODIMP get_anchorTarget(long index,
|
| - VARIANT* anchor_target) override;
|
| - CONTENT_EXPORT STDMETHODIMP get_startIndex(long* index) override;
|
| - CONTENT_EXPORT STDMETHODIMP get_endIndex(long* index) override;
|
| - // This method is deprecated in the IA2 Spec and so we don't implement it.
|
| - CONTENT_EXPORT STDMETHODIMP get_valid(boolean* valid) override;
|
| -
|
| - // IAccessibleAction mostly not implemented.
|
| - CONTENT_EXPORT STDMETHODIMP nActions(long* n_actions) override;
|
| - CONTENT_EXPORT STDMETHODIMP doAction(long action_index) override;
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_description(long action_index, BSTR* description) override;
|
| - CONTENT_EXPORT STDMETHODIMP get_keyBinding(long action_index,
|
| - long n_max_bindings,
|
| - BSTR** key_bindings,
|
| - long* n_bindings) override;
|
| - CONTENT_EXPORT STDMETHODIMP get_name(long action_index, BSTR* name) override;
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_localizedName(long action_index, BSTR* localized_name) override;
|
| -
|
| - //
|
| - // IAccessibleValue methods.
|
| - //
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_currentValue(VARIANT* value) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_minimumValue(VARIANT* value) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_maximumValue(VARIANT* value) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP setCurrentValue(VARIANT new_value) override;
|
| -
|
| - //
|
| - // ISimpleDOMDocument methods.
|
| - //
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_URL(BSTR* url) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_title(BSTR* title) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_mimeType(BSTR* mime_type) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_docType(BSTR* doc_type) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_nameSpaceURIForID(short name_space_id, BSTR* name_space_uri) override;
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - put_alternateViewMediaTypes(BSTR* comma_separated_media_types) override;
|
| -
|
| - //
|
| - // ISimpleDOMNode methods.
|
| - //
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nodeInfo(BSTR* node_name,
|
| - short* name_space_id,
|
| - BSTR* node_value,
|
| - unsigned int* num_children,
|
| - unsigned int* unique_id,
|
| - unsigned short* node_type) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_attributes(unsigned short max_attribs,
|
| - BSTR* attrib_names,
|
| - short* name_space_id,
|
| - BSTR* attrib_values,
|
| - unsigned short* num_attribs) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_attributesForNames(unsigned short num_attribs,
|
| - BSTR* attrib_names,
|
| - short* name_space_id,
|
| - BSTR* attrib_values) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_computedStyle(unsigned short max_style_properties,
|
| - boolean use_alternate_view,
|
| - BSTR* style_properties,
|
| - BSTR* style_values,
|
| - unsigned short* num_style_properties) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_computedStyleForProperties(unsigned short num_style_properties,
|
| - boolean use_alternate_view,
|
| - BSTR* style_properties,
|
| - BSTR* style_values) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP scrollTo(boolean placeTopLeft) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_parentNode(ISimpleDOMNode** node) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_firstChild(ISimpleDOMNode** node) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_lastChild(ISimpleDOMNode** node) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_previousSibling(ISimpleDOMNode** node) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_nextSibling(ISimpleDOMNode** node) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_childAt(unsigned int child_index, ISimpleDOMNode** node) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_innerHTML(BSTR* innerHTML) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_localInterface(void** local_interface) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_language(BSTR* language) override;
|
| -
|
| - //
|
| - // ISimpleDOMText methods.
|
| - //
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_domText(BSTR* dom_text) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_clippedSubstringBounds(unsigned int start_index,
|
| - unsigned int end_index,
|
| - int* out_x,
|
| - int* out_y,
|
| - int* out_width,
|
| - int* out_height) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_unclippedSubstringBounds(unsigned int start_index,
|
| - unsigned int end_index,
|
| - int* out_x,
|
| - int* out_y,
|
| - int* out_width,
|
| - int* out_height) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - scrollToSubstring(unsigned int start_index, unsigned int end_index) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP get_fontFamily(BSTR* font_family) override;
|
| -
|
| - //
|
| - // IServiceProvider methods.
|
| - //
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - QueryService(REFGUID guidService, REFIID riid, void** object) override;
|
| -
|
| - // IAccessibleEx methods not implemented.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - GetObjectForChild(long child_id, IAccessibleEx** ret) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - GetIAccessiblePair(IAccessible** acc, long* child_id) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP GetRuntimeId(SAFEARRAY** runtime_id) override;
|
| -
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - ConvertReturnedElement(IRawElementProviderSimple* element,
|
| - IAccessibleEx** acc) override;
|
| -
|
| - //
|
| - // IRawElementProviderSimple methods.
|
| - //
|
| - // The GetPatternProvider/GetPropertyValue methods need to be implemented for
|
| - // the on-screen keyboard to show up in Windows 8 metro.
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - GetPatternProvider(PATTERNID id, IUnknown** provider) override;
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - GetPropertyValue(PROPERTYID id, VARIANT* ret) override;
|
| -
|
| - //
|
| - // IRawElementProviderSimple methods not implemented
|
| - //
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_ProviderOptions(enum ProviderOptions* ret) override;
|
| - CONTENT_EXPORT STDMETHODIMP
|
| - get_HostRawElementProvider(IRawElementProviderSimple** provider) override;
|
| -
|
| - //
|
| - // CComObjectRootEx methods.
|
| - //
|
| -
|
| - // Called by BEGIN_COM_MAP() / END_COM_MAP().
|
| - static CONTENT_EXPORT HRESULT WINAPI
|
| - InternalQueryInterface(void* this_ptr,
|
| - const _ATL_INTMAP_ENTRY* entries,
|
| - REFIID iid,
|
| - void** object);
|
| -
|
| - // Computes and caches the IA2 text style attributes for the text and other
|
| - // embedded child objects.
|
| - CONTENT_EXPORT void ComputeStylesIfNeeded();
|
| -
|
| - // |offset| could either be a text character or a child index in case of
|
| - // non-text objects.
|
| - AXPlatformPosition::AXPositionInstance CreatePositionForSelectionAt(
|
| - int offset) const;
|
| -
|
| - CONTENT_EXPORT base::string16 GetText() const override;
|
| -
|
| - // Accessors.
|
| - int32_t ia_role() const { return win_attributes_->ia_role; }
|
| - int32_t ia_state() const { return win_attributes_->ia_state; }
|
| - const base::string16& role_name() const { return win_attributes_->role_name; }
|
| - int32_t ia2_role() const { return win_attributes_->ia2_role; }
|
| - int32_t ia2_state() const { return win_attributes_->ia2_state; }
|
| - const std::vector<base::string16>& ia2_attributes() const {
|
| - return win_attributes_->ia2_attributes;
|
| - }
|
| - base::string16 name() const { return win_attributes_->name; }
|
| - base::string16 description() const { return win_attributes_->description; }
|
| - base::string16 value() const { return win_attributes_->value; }
|
| - const std::map<int, std::vector<base::string16>>& offset_to_text_attributes()
|
| - const {
|
| - return win_attributes_->offset_to_text_attributes;
|
| - }
|
| - std::map<int32_t, int32_t>& hyperlink_offset_to_index() const {
|
| - return win_attributes_->hyperlink_offset_to_index;
|
| - }
|
| - std::vector<int32_t>& hyperlinks() const {
|
| - return win_attributes_->hyperlinks;
|
| - }
|
| + class BrowserAccessibilityComWin* GetCOM() const;
|
|
|
| private:
|
| - // Returns the IA2 text attributes for this object.
|
| - std::vector<base::string16> ComputeTextAttributes() const;
|
| -
|
| - // Add one to the reference count and return the same object. Always
|
| - // use this method when returning a BrowserAccessibilityWin object as
|
| - // an output parameter to a COM interface, never use it otherwise.
|
| - BrowserAccessibilityWin* NewReference();
|
| -
|
| - // Returns a list of IA2 attributes indicating the offsets in the text of a
|
| - // leaf object, such as a text field or static text, where spelling errors are
|
| - // present.
|
| - std::map<int, std::vector<base::string16>> GetSpellingAttributes() const;
|
| -
|
| - // Many MSAA methods take a var_id parameter indicating that the operation
|
| - // should be performed on a particular child ID, rather than this object.
|
| - // This method tries to figure out the target object from |var_id| and
|
| - // returns a pointer to the target object if it exists, otherwise NULL.
|
| - // Does not return a new reference.
|
| - BrowserAccessibilityWin* GetTargetFromChildID(const VARIANT& var_id);
|
| -
|
| - // Initialize the role and state metadata from the role enum and state
|
| - // bitmasks defined in ui::AXNodeData.
|
| - void InitRoleAndState();
|
| -
|
| - // Retrieve the value of an attribute from the string attribute map and
|
| - // if found and nonempty, allocate a new BSTR (with SysAllocString)
|
| - // and return S_OK. If not found or empty, return S_FALSE.
|
| - HRESULT GetStringAttributeAsBstr(
|
| - ui::AXStringAttribute attribute,
|
| - BSTR* value_bstr);
|
| -
|
| - // Escapes characters in string attributes as required by the IA2 Spec.
|
| - // It's okay for input to be the same as output.
|
| - CONTENT_EXPORT static void SanitizeStringAttributeForIA2(
|
| - const base::string16& input,
|
| - base::string16* output);
|
| - FRIEND_TEST_ALL_PREFIXES(BrowserAccessibilityTest,
|
| - TestSanitizeStringAttributeForIA2);
|
| -
|
| - // Sets the selection given a start and end offset in IA2 Hypertext.
|
| - void SetIA2HypertextSelection(LONG start_offset, LONG end_offset);
|
| -
|
| - // If the string attribute |attribute| is present, add its value as an
|
| - // IAccessible2 attribute with the name |ia2_attr|.
|
| - void StringAttributeToIA2(ui::AXStringAttribute attribute,
|
| - const char* ia2_attr);
|
| -
|
| - // If the bool attribute |attribute| is present, add its value as an
|
| - // IAccessible2 attribute with the name |ia2_attr|.
|
| - void BoolAttributeToIA2(ui::AXBoolAttribute attribute,
|
| - const char* ia2_attr);
|
| -
|
| - // If the int attribute |attribute| is present, add its value as an
|
| - // IAccessible2 attribute with the name |ia2_attr|.
|
| - void IntAttributeToIA2(ui::AXIntAttribute attribute,
|
| - const char* ia2_attr);
|
| -
|
| - //
|
| - // Helper methods for IA2 hyperlinks.
|
| - //
|
| - // Hyperlink is an IA2 misnomer. It refers to objects embedded within other
|
| - // objects, such as a numbered list within a contenteditable div.
|
| - // Also, in IA2, text that includes embedded objects is called hypertext.
|
| -
|
| - // Returns true if the current object is an IA2 hyperlink.
|
| - bool IsHyperlink() const;
|
| - // Returns the hyperlink at the given text position, or nullptr if no
|
| - // hyperlink can be found.
|
| - BrowserAccessibilityWin* GetHyperlinkFromHypertextOffset(int offset) const;
|
| -
|
| - // Functions for retrieving offsets for hyperlinks and hypertext.
|
| - // Return -1 in case of failure.
|
| - int32_t GetHyperlinkIndexFromChild(
|
| - const BrowserAccessibilityWin& child) const;
|
| - int32_t GetHypertextOffsetFromHyperlinkIndex(int32_t hyperlink_index) const;
|
| - int32_t GetHypertextOffsetFromChild(
|
| - const BrowserAccessibilityWin& child) const;
|
| - int32_t GetHypertextOffsetFromDescendant(
|
| - const BrowserAccessibilityWin& descendant) const;
|
| -
|
| - // If the selection endpoint is either equal to or an ancestor of this object,
|
| - // returns endpoint_offset.
|
| - // If the selection endpoint is a descendant of this object, returns its
|
| - // offset. Otherwise, returns either 0 or the length of the hypertext
|
| - // depending on the direction of the selection.
|
| - // Returns -1 in case of unexpected failure, e.g. the selection endpoint
|
| - // cannot be found in the accessibility tree.
|
| - int GetHypertextOffsetFromEndpoint(
|
| - const BrowserAccessibilityWin& endpoint_object,
|
| - int endpoint_offset) const;
|
| -
|
| - //
|
| - // Selection helper functions.
|
| - //
|
| - // The following functions retrieve the endpoints of the current selection.
|
| - // First they check for a local selection found on the current control, e.g.
|
| - // when querying the selection on a textarea.
|
| - // If not found they retrieve the global selection found on the current frame.
|
| - int GetSelectionAnchor() const;
|
| - int GetSelectionFocus() const;
|
| - // Retrieves the selection offsets in the way required by the IA2 APIs.
|
| - // selection_start and selection_end are -1 when there is no selection active
|
| - // on this object.
|
| - // The greatest of the two offsets is one past the last character of the
|
| - // selection.)
|
| - void GetSelectionOffsets(int* selection_start, int* selection_end) const;
|
| -
|
| - // Get the value text, which might come from the floating-point
|
| - // value for some roles.
|
| - base::string16 GetValueText();
|
| -
|
| - bool IsSameHypertextCharacter(size_t old_char_index, size_t new_char_index);
|
| - void ComputeHypertextRemovedAndInserted(
|
| - int* start, int* old_len, int* new_len);
|
| -
|
| - // If offset is a member of IA2TextSpecialOffsets this function updates the
|
| - // value of offset and returns, otherwise offset remains unchanged.
|
| - void HandleSpecialTextOffset(LONG* offset);
|
| -
|
| - // Convert from a IA2TextBoundaryType to a ui::TextBoundaryType.
|
| - ui::TextBoundaryType IA2TextBoundaryToTextBoundary(IA2TextBoundaryType type);
|
| -
|
| - // Search forwards (direction == 1) or backwards (direction == -1)
|
| - // from the given offset until the given boundary is found, and
|
| - // return the offset of that boundary.
|
| - LONG FindBoundary(const base::string16& text,
|
| - IA2TextBoundaryType ia2_boundary,
|
| - LONG start_offset,
|
| - ui::TextBoundaryDirection direction);
|
| -
|
| - // Searches forward from the given offset until the start of the next style
|
| - // is found, or searches backward from the given offset until the start of the
|
| - // current style is found.
|
| - LONG FindStartOfStyle(LONG start_offset,
|
| - ui::TextBoundaryDirection direction) const;
|
| -
|
| - // ID refers to the node ID in the current tree, not the globally unique ID.
|
| - // TODO(nektar): Could we use globally unique IDs everywhere?
|
| - // TODO(nektar): Rename this function to GetFromNodeID.
|
| - BrowserAccessibilityWin* GetFromID(int32_t id) const;
|
| -
|
| - // Returns true if this is a list box option with a parent of type list box,
|
| - // or a menu list option with a parent of type menu list popup.
|
| - bool IsListBoxOptionOrMenuListOption();
|
| -
|
| - // For adding / removing IA2 relations.
|
| -
|
| - void AddRelation(const base::string16& relation_type, int target_id);
|
| - void AddBidirectionalRelations(const base::string16& relation_type,
|
| - const base::string16& reverse_relation_type,
|
| - ui::AXIntListAttribute attribute);
|
| - // Clears all the forward relations from this object to any other object and
|
| - // the associated reverse relations on the other objects, but leaves any
|
| - // reverse relations on this object alone.
|
| - void ClearOwnRelations();
|
| - void RemoveBidirectionalRelationsOfType(
|
| - const base::string16& relation_type,
|
| - const base::string16& reverse_relation_type);
|
| - void RemoveTargetFromRelation(const base::string16& relation_type,
|
| - int target_id);
|
| -
|
| - // Updates object attributes of IA2 with html attributes.
|
| - void UpdateRequiredAttributes();
|
| -
|
| - // Fire a Windows-specific accessibility event notification on this node.
|
| - void FireNativeEvent(LONG win_event_type) const;
|
| -
|
| - ui::AXPlatformNodeWin* GetPlatformNodeWin() const;
|
| -
|
| - static bool IsInTreeGrid(const BrowserAccessibility* item);
|
| -
|
| - struct WinAttributes {
|
| - WinAttributes();
|
| - ~WinAttributes();
|
| -
|
| - // IAccessible role and state.
|
| - int32_t ia_role;
|
| - int32_t ia_state;
|
| - base::string16 role_name;
|
| -
|
| - // IAccessible name, description, help, value.
|
| - base::string16 name;
|
| - base::string16 description;
|
| - base::string16 value;
|
| -
|
| - // IAccessible2 role and state.
|
| - int32_t ia2_role;
|
| - int32_t ia2_state;
|
| -
|
| - // IAccessible2 attributes.
|
| - std::vector<base::string16> ia2_attributes;
|
| -
|
| - // Hypertext.
|
| - base::string16 hypertext;
|
| -
|
| - // Maps each style span to its start offset in hypertext.
|
| - std::map<int, std::vector<base::string16>> offset_to_text_attributes;
|
| -
|
| - // Maps an embedded character offset in |hypertext_| to an index in
|
| - // |hyperlinks_|.
|
| - std::map<int32_t, int32_t> hyperlink_offset_to_index;
|
| -
|
| - // The unique id of a BrowserAccessibilityWin for each hyperlink.
|
| - // TODO(nektar): Replace object IDs with child indices if we decide that
|
| - // we are not implementing IA2 hyperlinks for anything other than IA2
|
| - // Hypertext.
|
| - std::vector<int32_t> hyperlinks;
|
| - };
|
| -
|
| - std::unique_ptr<WinAttributes> win_attributes_;
|
| -
|
| - // Only valid during the scope of a IA2_EVENT_TEXT_REMOVED or
|
| - // IA2_EVENT_TEXT_INSERTED event.
|
| - std::unique_ptr<WinAttributes> old_win_attributes_;
|
| -
|
| - // Relationships between this node and other nodes.
|
| - std::vector<BrowserAccessibilityRelation*> relations_;
|
| -
|
| - // The previous scroll position, so we can tell if this object scrolled.
|
| - int previous_scroll_x_;
|
| - int previous_scroll_y_;
|
| -
|
| + CComObject<BrowserAccessibilityComWin>* browser_accessibility_com_;
|
| // Give BrowserAccessibility::Create access to our constructor.
|
| friend class BrowserAccessibility;
|
| - friend class BrowserAccessibilityRelation;
|
| -
|
| DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityWin);
|
| };
|
|
|
|
|