15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_WIN_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_WIN_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atlbase.h>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <atlcom.h>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <oleacc.h>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <UIAutomationCore.h>
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/accessibility/browser_accessibility.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/content_export.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/iaccessible2/ia2_api_all.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/isimpledom/ISimpleDOMDocument.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/isimpledom/ISimpleDOMNode.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/isimpledom/ISimpleDOMText.h"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum TextBoundaryDirection;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum TextBoundaryType;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserAccessibilityRelation;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)////////////////////////////////////////////////////////////////////////////////
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// BrowserAccessibilityWin
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Class implementing the windows accessible interface for the Browser-Renderer
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// communication of accessibility information, providing accessibility
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// to be used by screen readers and other assistive technology (AT).
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)////////////////////////////////////////////////////////////////////////////////
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class __declspec(uuid("562072fe-3390-43b1-9e2c-dd4118f5ac79"))
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BrowserAccessibilityWin
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : public BrowserAccessibility,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public CComObjectRootEx<CComMultiThreadModel>,
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IDispatchImpl<IAccessible2, &IID_IAccessible2,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           &LIBID_IAccessible2Lib>,
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      public IAccessibleApplication,
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IAccessibleHyperlink,
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IAccessibleHypertext,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IAccessibleImage,
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IAccessibleTable,
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IAccessibleTable2,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IAccessibleTableCell,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IAccessibleValue,
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IServiceProvider,
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public ISimpleDOMDocument,
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public ISimpleDOMNode,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public ISimpleDOMText,
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IAccessibleEx,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public IRawElementProviderSimple {
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BEGIN_COM_MAP(BrowserAccessibilityWin)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY2(IDispatch, IAccessible2)
636d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessible)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessible2)
65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessibleApplication)
666d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessibleEx)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessibleHyperlink)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessibleHypertext)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessibleImage)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessibleTable)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessibleTable2)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessibleTableCell)
736d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessibleText)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(IAccessibleValue)
756d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    COM_INTERFACE_ENTRY(IRawElementProviderSimple)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(IServiceProvider)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(ISimpleDOMDocument)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(ISimpleDOMNode)
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    COM_INTERFACE_ENTRY(ISimpleDOMText)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  END_COM_MAP()
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Represents a non-static text node in IAccessibleHypertext. This character
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is embedded in the response to IAccessibleText::get_text, indicating the
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // position where a non-static text child object appears.
855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  CONTENT_EXPORT static const base::char16 kEmbeddedCharacter[];
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Mappings from roles and states to human readable strings. Initialize
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // with |InitializeStringMaps|.
89a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  static std::map<int32, base::string16> role_string_map;
90a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  static std::map<int32, base::string16> state_string_map;
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT BrowserAccessibilityWin();
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT virtual ~BrowserAccessibilityWin();
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The Windows-specific unique ID, used as the child ID for MSAA methods
97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // like NotifyWinEvent, and as the unique ID for IAccessible2 and ISimpleDOM.
98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  LONG unique_id_win() const { return unique_id_win_; }
99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // BrowserAccessibility methods.
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1030529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  CONTENT_EXPORT virtual void OnDataChanged() OVERRIDE;
1040529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  CONTENT_EXPORT virtual void OnUpdateFinished() OVERRIDE;
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT virtual void NativeAddReference() OVERRIDE;
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT virtual void NativeReleaseReference() OVERRIDE;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT virtual bool IsNative() const OVERRIDE;
1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  CONTENT_EXPORT virtual void OnLocationChanged() OVERRIDE;
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessible methods.
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Performs the default action on a given object.
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP accDoDefaultAction(VARIANT var_id);
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the child element or child object at a given point on the screen.
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP accHitTest(LONG x_left, LONG y_top,
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         VARIANT* child);
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the specified object's current screen location.
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP accLocation(LONG* x_left,
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          LONG* y_top,
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          LONG* width,
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          LONG* height,
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          VARIANT var_id);
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Traverses to another UI element and retrieves the object.
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP accNavigate(LONG nav_dir, VARIANT start,
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                          VARIANT* end);
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves an IDispatch interface pointer for the specified child.
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accChild(VARIANT var_child,
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           IDispatch** disp_child);
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the number of accessible children.
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accChildCount(LONG* child_count);
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves a string that describes the object's default action.
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accDefaultAction(VARIANT var_id,
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                   BSTR* default_action);
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the object's description.
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accDescription(VARIANT var_id, BSTR* desc);
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the object that has the keyboard focus.
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accFocus(VARIANT* focus_child);
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the help information associated with the object.
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accHelp(VARIANT var_id, BSTR* heflp);
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the specified object's shortcut.
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accKeyboardShortcut(VARIANT var_id,
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                                      BSTR* access_key);
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the name of the specified object.
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accName(VARIANT var_id, BSTR* name);
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the IDispatch interface of the object's parent.
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accParent(IDispatch** disp_parent);
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves information describing the role of the specified object.
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accRole(VARIANT var_id, VARIANT* role);
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieves the current state of the specified object.
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accState(VARIANT var_id, VARIANT* state);
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the value associated with the object.
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accValue(VARIANT var_id, BSTR* value);
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make an object take focus or extend the selection.
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP accSelect(LONG flags_sel, VARIANT var_id);
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accHelpTopic(BSTR* help_file,
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                               VARIANT var_id,
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                               LONG* topic_id);
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accSelection(VARIANT* selected);
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Deprecated methods, not implemented.
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP put_accName(VARIANT var_id, BSTR put_name) {
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP put_accValue(VARIANT var_id, BSTR put_val) {
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessible2 methods.
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns role from a longer list of possible roles.
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP role(LONG* role);
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the state bitmask from a larger set of possible states.
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_states(AccessibleStates* states);
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the attributes specific to this IAccessible2 object,
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // such as a cell's formula.
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_attributes(BSTR* attributes);
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Get the unique ID of this object so that the client knows if it's
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // been encountered previously.
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_uniqueID(LONG* unique_id);
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Get the window handle of the enclosing window.
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_windowHandle(HWND* window_handle);
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Get this object's index in its parent object.
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_indexInParent(LONG* index_in_parent);
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nRelations(LONG* n_relations);
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_relation(LONG relation_index,
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           IAccessibleRelation** relation);
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_relations(LONG max_relations,
2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                            IAccessibleRelation** relations,
2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                            LONG* n_relations);
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP scrollTo(enum IA2ScrollType scroll_type);
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP scrollToPoint(
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      enum IA2CoordinateType coordinate_type,
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG x,
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG y);
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_groupPosition(LONG* group_level,
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                LONG* similar_items_in_group,
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                LONG* position_in_group);
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleEx methods not implemented.
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_extendedRole(BSTR* extended_role) {
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_localizedExtendedRole(
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR* localized_extended_role) {
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nExtendedStates(LONG* n_extended_states) {
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_extendedStates(LONG max_extended_states,
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 BSTR** extended_states,
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 LONG* n_extended_states) {
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_localizedExtendedStates(
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG max_localized_extended_states,
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR** localized_extended_states,
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG* n_localized_extended_states) {
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_locale(IA2Locale* locale) {
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
261c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // IAccessibleApplication methods.
262c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  //
263c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_appName(BSTR* app_name);
264c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
265c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_appVersion(BSTR* app_version);
266c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
267c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_toolkitName(BSTR* toolkit_name);
268c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
269c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_toolkitVersion(BSTR* toolkit_version);
270c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  //
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleImage methods.
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_description(BSTR* description);
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_imagePosition(
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      enum IA2CoordinateType coordinate_type,
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG* x,
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG* y);
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_imageSize(LONG* height, LONG* width);
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleTable methods.
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // get_description - also used by IAccessibleImage
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_accessibleAt(long row,
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                               long column,
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                               IUnknown** accessible);
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_caption(IUnknown** accessible);
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_childIndex(long row_index,
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             long column_index,
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             long* cell_index);
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_columnDescription(long column,
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                    BSTR* description);
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_columnExtentAt(long row,
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 long column,
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 long* n_columns_spanned);
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_columnHeader(
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IAccessibleTable** accessible_table,
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      long* starting_row_index);
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_columnIndex(long cell_index,
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                              long* column_index);
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nColumns(long* column_count);
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nRows(long* row_count);
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nSelectedChildren(long* cell_count);
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nSelectedColumns(long* column_count);
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nSelectedRows(long *row_count);
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_rowDescription(long row,
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 BSTR* description);
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_rowExtentAt(long row,
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                              long column,
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                              long* n_rows_spanned);
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_rowHeader(IAccessibleTable** accessible_table,
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            long* starting_column_index);
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_rowIndex(long cell_index,
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           long* row_index);
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_selectedChildren(long max_children,
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                   long** children,
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                   long* n_children);
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_selectedColumns(long max_columns,
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                  long** columns,
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                  long* n_columns);
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_selectedRows(long max_rows,
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                               long** rows,
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                               long* n_rows);
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_summary(IUnknown** accessible);
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_isColumnSelected(long column,
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                   boolean* is_selected);
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_isRowSelected(long row,
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                boolean* is_selected);
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_isSelected(long row,
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             long column,
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             boolean* is_selected);
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_rowColumnExtentsAtIndex(long index,
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                          long* row,
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                          long* column,
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                          long* row_extents,
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                          long* column_extents,
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                          boolean* is_selected);
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP selectRow(long row) {
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP selectColumn(long column) {
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP unselectRow(long row) {
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP unselectColumn(long column) {
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_modelChange(
3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IA2TableModelChange* model_change) {
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleTable2 methods.
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // (Most of these are duplicates of IAccessibleTable methods, only the
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // unique ones are included here.)
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_cellAt(long row,
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         long column,
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                         IUnknown** cell);
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nSelectedCells(long* cell_count);
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_selectedCells(IUnknown*** cells,
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                long* n_selected_cells);
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_selectedColumns(long** columns,
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                  long* n_columns);
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_selectedRows(long** rows,
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                               long* n_rows);
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleTableCell methods.
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_columnExtent(long* n_columns_spanned);
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_columnHeaderCells(
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IUnknown*** cell_accessibles,
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      long* n_column_header_cells);
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_columnIndex(long* column_index);
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_rowExtent(long* n_rows_spanned);
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_rowHeaderCells(IUnknown*** cell_accessibles,
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 long* n_row_header_cells);
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_rowIndex(long* row_index);
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_isSelected(boolean* is_selected);
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_rowColumnExtents(long* row,
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                   long* column,
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                   long* row_extents,
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                   long* column_extents,
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                   boolean* is_selected);
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_table(IUnknown** table);
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleText methods.
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nCharacters(LONG* n_characters);
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_caretOffset(LONG* offset);
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
447f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_characterExtents(
448f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      LONG offset,
449f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      enum IA2CoordinateType coord_type,
450f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      LONG* out_x,
451f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      LONG* out_y,
452f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      LONG* out_width,
453f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      LONG* out_height);
454f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nSelections(LONG* n_selections);
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_selection(LONG selection_index,
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            LONG* start_offset,
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                            LONG* end_offset);
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_text(LONG start_offset,
4622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                       LONG end_offset,
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       BSTR* text);
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_textAtOffset(
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG offset,
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      enum IA2TextBoundaryType boundary_type,
4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LONG* start_offset,
4692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LONG* end_offset,
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR* text);
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_textBeforeOffset(
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG offset,
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      enum IA2TextBoundaryType boundary_type,
4752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LONG* start_offset,
4762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LONG* end_offset,
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR* text);
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_textAfterOffset(
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG offset,
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      enum IA2TextBoundaryType boundary_type,
4822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LONG* start_offset,
4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LONG* end_offset,
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR* text);
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_newText(IA2TextSegment* new_text);
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_oldText(IA2TextSegment* old_text);
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_offsetAtPoint(
4912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LONG x,
4922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      LONG y,
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      enum IA2CoordinateType coord_type,
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG* offset);
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP scrollSubstringTo(
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       LONG start_index,
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       LONG end_index,
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       enum IA2ScrollType scroll_type);
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP scrollSubstringToPoint(
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG start_index,
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG end_index,
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      enum IA2CoordinateType coordinate_type,
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LONG x, LONG y);
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP addSelection(LONG start_offset, LONG end_offset);
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP removeSelection(LONG selection_index);
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP setCaretOffset(LONG offset);
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP setSelection(LONG selection_index,
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           LONG start_offset,
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           LONG end_offset);
5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleText methods not implemented.
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_attributes(LONG offset, LONG* start_offset,
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             LONG* end_offset,
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             BSTR* text_attributes) {
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleHypertext methods.
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nHyperlinks(long* hyperlink_count);
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_hyperlink(long index,
5312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                            IAccessibleHyperlink** hyperlink);
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_hyperlinkIndex(long char_index,
5342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                                 long* hyperlink_index);
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleHyperlink not implemented.
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_anchor(long index, VARIANT* anchor) {
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_anchorTarget(long index,
5412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                               VARIANT* anchor_target) {
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_startIndex( long* index) {
5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_endIndex( long* index) {
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_valid(boolean* valid) {
5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleAction not implemented.
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP nActions(long* n_actions) {
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP doAction(long action_index) {
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_description(long action_index,
5622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                              BSTR* description) {
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_keyBinding(long action_index,
5662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             long n_max_bindings,
5672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             BSTR** key_bindings,
5682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             long* n_bindings) {
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_name(long action_index, BSTR* name) {
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_localizedName(long action_index,
5752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                                BSTR* localized_name) {
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleValue methods.
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_currentValue(VARIANT* value);
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_minimumValue(VARIANT* value);
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_maximumValue(VARIANT* value);
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP setCurrentValue(VARIANT new_value);
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ISimpleDOMDocument methods.
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_URL(BSTR* url);
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_title(BSTR* title);
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_mimeType(BSTR* mime_type);
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_docType(BSTR* doc_type);
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nameSpaceURIForID(short name_space_id,
6042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                                    BSTR* name_space_uri) {
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP put_alternateViewMediaTypes(
6082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      BSTR* comma_separated_media_types) {
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ISimpleDOMNode methods.
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nodeInfo(BSTR* node_name,
6172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           short* name_space_id,
6182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           BSTR* node_value,
6192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           unsigned int* num_children,
6202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           unsigned int* unique_id,
6212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           unsigned short* node_type);
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_attributes(unsigned short max_attribs,
6242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             BSTR* attrib_names,
6252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             short* name_space_id,
6262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             BSTR* attrib_values,
6272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                             unsigned short* num_attribs);
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_attributesForNames(
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned short num_attribs,
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR* attrib_names,
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      short* name_space_id,
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR* attrib_values);
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_computedStyle(
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned short max_style_properties,
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      boolean use_alternate_view,
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR *style_properties,
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR *style_values,
6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned short *num_style_properties);
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_computedStyleForProperties(
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned short num_style_properties,
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      boolean use_alternate_view,
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR* style_properties,
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      BSTR* style_values);
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP scrollTo(boolean placeTopLeft);
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_parentNode(ISimpleDOMNode** node);
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_firstChild(ISimpleDOMNode** node);
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_lastChild(ISimpleDOMNode** node);
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_previousSibling(ISimpleDOMNode** node);
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_nextSibling(ISimpleDOMNode** node);
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_childAt(unsigned int child_index,
6612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                          ISimpleDOMNode** node);
6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_innerHTML(BSTR* innerHTML) {
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_localInterface(void** local_interface) {
6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_language(BSTR* language) {
6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ISimpleDOMText methods.
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_domText(BSTR* dom_text);
6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_clippedSubstringBounds(
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned int start_index,
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned int end_index,
684f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int* out_x,
685f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int* out_y,
686f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int* out_width,
687f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int* out_height);
6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_unclippedSubstringBounds(
6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned int start_index,
6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      unsigned int end_index,
692f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int* out_x,
693f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int* out_y,
694f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int* out_width,
695f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      int* out_height);
6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP scrollToSubstring(unsigned int start_index,
698f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                                unsigned int end_index);
6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_fontFamily(BSTR *font_family)  {
7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IServiceProvider methods.
7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP QueryService(REFGUID guidService,
7092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           REFIID riid,
7102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                           void** object);
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessibleEx methods not implemented.
7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP GetObjectForChild(long child_id,
7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                IAccessibleEx** ret) {
7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP GetIAccessiblePair(IAccessible** acc,
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 long* child_id) {
7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP GetRuntimeId(SAFEARRAY** runtime_id) {
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP ConvertReturnedElement(
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IRawElementProviderSimple* element,
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IAccessibleEx** acc) {
7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IRawElementProviderSimple methods.
7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The GetPatternProvider/GetPropertyValue methods need to be implemented for
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // the on-screen keyboard to show up in Windows 8 metro.
7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP GetPatternProvider(PATTERNID id,
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                                 IUnknown** provider);
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP GetPropertyValue(PROPERTYID id, VARIANT* ret);
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IRawElementProviderSimple methods not implemented
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_ProviderOptions(enum ProviderOptions* ret) {
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONTENT_EXPORT STDMETHODIMP get_HostRawElementProvider(
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IRawElementProviderSimple** provider) {
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return E_NOTIMPL;
7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // CComObjectRootEx methods.
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  CONTENT_EXPORT HRESULT WINAPI InternalQueryInterface(
7592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      void* this_ptr,
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const _ATL_INTMAP_ENTRY* entries,
7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      REFIID iid,
7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      void** object);
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Accessors.
7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 ia_role() const { return ia_role_; }
7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 ia_state() const { return ia_state_; }
767a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  const base::string16& role_name() const { return role_name_; }
7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 ia2_role() const { return ia2_role_; }
7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 ia2_state() const { return ia2_state_; }
770a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  const std::vector<base::string16>& ia2_attributes() const {
7712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return ia2_attributes_;
7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Add one to the reference count and return the same object. Always
7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // use this method when returning a BrowserAccessibilityWin object as
7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // an output parameter to a COM interface, never use it otherwise.
7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserAccessibilityWin* NewReference();
7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Many MSAA methods take a var_id parameter indicating that the operation
7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // should be performed on a particular child ID, rather than this object.
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This method tries to figure out the target object from |var_id| and
7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // returns a pointer to the target object if it exists, otherwise NULL.
7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Does not return a new reference.
7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserAccessibilityWin* GetTargetFromChildID(const VARIANT& var_id);
7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Initialize the role and state metadata from the role enum and state
7885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // bitmasks defined in ui::AXNodeData.
7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void InitRoleAndState();
7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieve the value of an attribute from the string attribute map and
7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // if found and nonempty, allocate a new BSTR (with SysAllocString)
7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // and return S_OK. If not found or empty, return S_FALSE.
7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HRESULT GetStringAttributeAsBstr(
7955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      ui::AXStringAttribute attribute,
7962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      BSTR* value_bstr);
7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If the string attribute |attribute| is present, add its value as an
7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessible2 attribute with the name |ia2_attr|.
8005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void StringAttributeToIA2(ui::AXStringAttribute attribute,
8012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                            const char* ia2_attr);
8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If the bool attribute |attribute| is present, add its value as an
8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessible2 attribute with the name |ia2_attr|.
8055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void BoolAttributeToIA2(ui::AXBoolAttribute attribute,
8062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                          const char* ia2_attr);
8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If the int attribute |attribute| is present, add its value as an
8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessible2 attribute with the name |ia2_attr|.
8105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void IntAttributeToIA2(ui::AXIntAttribute attribute,
8112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         const char* ia2_attr);
8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Get the value text, which might come from the floating-point
8143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // value for some roles.
815a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 GetValueText();
8163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Get the text of this node for the purposes of IAccessibleText - it may
8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // be the name, it may be the value, etc. depending on the role.
819a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 TextForIAccessibleText();
8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If offset is a member of IA2TextSpecialOffsets this function updates the
8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // value of offset and returns, otherwise offset remains unchanged.
823a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  void HandleSpecialTextOffset(const base::string16& text, LONG* offset);
8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Convert from a IA2TextBoundaryType to a ui::TextBoundaryType.
8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui::TextBoundaryType IA2TextBoundaryToTextBoundary(IA2TextBoundaryType type);
8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Search forwards (direction == 1) or backwards (direction == -1)
8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // from the given offset until the given boundary is found, and
8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // return the offset of that boundary.
831a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  LONG FindBoundary(const base::string16& text,
8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    IA2TextBoundaryType ia2_boundary,
8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    LONG start_offset,
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    ui::TextBoundaryDirection direction);
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // Return a pointer to the object corresponding to the given id,
8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // does not make a new reference.
8380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  BrowserAccessibilityWin* GetFromID(int32 id);
8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
840c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // Windows-specific unique ID (unique within the browser process),
841c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // used for get_accChild, NotifyWinEvent, and as the unique ID for
842c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // IAccessible2 and ISimpleDOM.
843c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  LONG unique_id_win_;
844c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessible role and state.
8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 ia_role_;
8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 ia_state_;
848a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 role_name_;
8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessible2 role and state.
8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 ia2_role_;
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 ia2_state_;
8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // IAccessible2 attributes.
855a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  std::vector<base::string16> ia2_attributes_;
8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // True in Initialize when the object is first created, and false
8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // subsequent times.
8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool first_time_;
8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The previous text, before the last update to this object.
862a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 previous_text_;
8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The old text to return in IAccessibleText::get_oldText - this is like
8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // previous_text_ except that it's NOT updated when the object
8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is initialized again but the text doesn't change.
867a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 old_text_;
8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The previous state, used to see if there was a state change.
8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int32 old_ia_state_;
8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Relationships between this node and other nodes.
8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<BrowserAccessibilityRelation*> relations_;
8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The text of this node including embedded hyperlink characters.
876a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  base::string16 hypertext_;
8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Maps the |hypertext_| embedded character offset to an index in
8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |hyperlinks_|.
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::map<int32, int32> hyperlink_offset_to_index_;
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Collection of non-static text child indicies, each of which corresponds to
8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // a hyperlink.
8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<int32> hyperlinks_;
8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // The previous scroll position, so we can tell if this object scrolled.
8875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  int previous_scroll_x_;
8885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  int previous_scroll_y_;
8895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
890c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // The next unique id to use.
891c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  static LONG next_unique_id_win_;
892c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Give BrowserAccessibility::Create access to our constructor.
8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class BrowserAccessibility;
8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  friend class BrowserAccessibilityRelation;
8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityWin);
8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_WIN_H_
903