Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(541)

Side by Side Diff: chrome/browser/accessibility/browser_accessibility_win.h

Issue 3591003: Make BrowserAccessibilityManager cross platform. Step 1.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Some cleanup. Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_BROWSER_ACCESSIBILITY_WIN_H_ 5 #ifndef CHROME_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_WIN_H_
6 #define CHROME_BROWSER_BROWSER_ACCESSIBILITY_WIN_H_ 6 #define CHROME_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_WIN_H_
7 #pragma once 7 #pragma once
8 8
9 #include <atlbase.h> 9 #include <atlbase.h>
10 #include <atlcom.h> 10 #include <atlcom.h>
11 #include <oleacc.h> 11 #include <oleacc.h>
12 12
13 #include <map>
14 #include <vector> 13 #include <vector>
15 14
16 #include "chrome/browser/browser_accessibility_manager_win.h" 15 #include "chrome/browser/accessibility/browser_accessibility.h"
17 #include "ia2_api_all.h" // Generated 16 #include "ia2_api_all.h" // Generated
18 #include "ISimpleDOMDocument.h" // Generated 17 #include "ISimpleDOMDocument.h" // Generated
19 #include "ISimpleDOMNode.h" // Generated 18 #include "ISimpleDOMNode.h" // Generated
20 #include "ISimpleDOMText.h" // Generated 19 #include "ISimpleDOMText.h" // Generated
21 #include "webkit/glue/webaccessibility.h" 20 #include "webkit/glue/webaccessibility.h"
22 21
22 class BrowserAccessibilityManagerWin;
23
23 using webkit_glue::WebAccessibility; 24 using webkit_glue::WebAccessibility;
24 25
25 //////////////////////////////////////////////////////////////////////////////// 26 ////////////////////////////////////////////////////////////////////////////////
26 // 27 //
27 // BrowserAccessibility 28 // BrowserAccessibilityWin
28 // 29 //
29 // Class implementing the MSAA IAccessible COM interface for the 30 // Class implementing the windows accessible interface for the Browser-Renderer
30 // Browser-Renderer communication of MSAA information, providing accessibility 31 // communication of accessibility information, providing accessibility
31 // to be used by screen readers and other assistive technology (AT). 32 // to be used by screen readers and other assistive technology (AT).
32 // 33 //
33 //////////////////////////////////////////////////////////////////////////////// 34 ////////////////////////////////////////////////////////////////////////////////
34 class ATL_NO_VTABLE BrowserAccessibility 35 class BrowserAccessibilityWin
35 : public CComObjectRootEx<CComMultiThreadModel>, 36 : public BrowserAccessibility,
36 public IDispatchImpl<IAccessible2, &IID_IAccessible2, 37 public CComObjectRootEx<CComMultiThreadModel>,
37 &LIBID_IAccessible2Lib>, 38 public IDispatchImpl<IAccessible2, &IID_IAccessible2,
38 public IAccessibleImage, 39 &LIBID_IAccessible2Lib>,
39 public IAccessibleText, 40 public IAccessibleImage,
40 public IServiceProvider, 41 public IAccessibleText,
41 public ISimpleDOMDocument, 42 public IServiceProvider,
42 public ISimpleDOMNode, 43 public ISimpleDOMDocument,
43 public ISimpleDOMText { 44 public ISimpleDOMNode,
45 public ISimpleDOMText {
44 public: 46 public:
45 BEGIN_COM_MAP(BrowserAccessibility) 47 BEGIN_COM_MAP(BrowserAccessibilityWin)
46 COM_INTERFACE_ENTRY2(IDispatch, IAccessible2) 48 COM_INTERFACE_ENTRY2(IDispatch, IAccessible2)
47 COM_INTERFACE_ENTRY2(IAccessible, IAccessible2) 49 COM_INTERFACE_ENTRY2(IAccessible, IAccessible2)
48 COM_INTERFACE_ENTRY(IAccessible2) 50 COM_INTERFACE_ENTRY(IAccessible2)
49 COM_INTERFACE_ENTRY(IAccessibleImage) 51 COM_INTERFACE_ENTRY(IAccessibleImage)
50 COM_INTERFACE_ENTRY(IAccessibleText) 52 COM_INTERFACE_ENTRY(IAccessibleText)
51 COM_INTERFACE_ENTRY(IServiceProvider) 53 COM_INTERFACE_ENTRY(IServiceProvider)
52 COM_INTERFACE_ENTRY(ISimpleDOMDocument) 54 COM_INTERFACE_ENTRY(ISimpleDOMDocument)
53 COM_INTERFACE_ENTRY(ISimpleDOMNode) 55 COM_INTERFACE_ENTRY(ISimpleDOMNode)
54 COM_INTERFACE_ENTRY(ISimpleDOMText) 56 COM_INTERFACE_ENTRY(ISimpleDOMText)
55 END_COM_MAP() 57 END_COM_MAP()
56 58
57 BrowserAccessibility(); 59 BrowserAccessibilityWin();
58 60
59 virtual ~BrowserAccessibility(); 61 virtual ~BrowserAccessibilityWin();
60 62
61 // Initialize this object and mark it as active. 63 // Initialize this object and mark it as active.
62 void Initialize(BrowserAccessibilityManager* manager, 64 void Initialize(BrowserAccessibilityManagerWin* manager,
63 BrowserAccessibility* parent, 65 BrowserAccessibilityWin* parent,
64 LONG child_id, 66 LONG child_id,
65 LONG index_in_parent, 67 LONG index_in_parent,
66 const webkit_glue::WebAccessibility& src); 68 const webkit_glue::WebAccessibility& src);
67 69
68 // Add a child of this object. 70 // Add a child of this object.
69 void AddChild(BrowserAccessibility* child); 71 void AddChild(BrowserAccessibilityWin* child);
70 72
71 // Mark this object as inactive, and remove references to all children. 73 // Mark this object as inactive, and remove references to all children.
72 // When no other clients hold any references to this object it will be 74 // When no other clients hold any references to this object it will be
73 // deleted, and in the meantime, calls to any methods will return E_FAIL. 75 // deleted, and in the meantime, calls to any methods will return E_FAIL.
74 void InactivateTree(); 76 void InactivateTree();
75 77
76 // Return true if this object is equal to or a descendant of |ancestor|. 78 // Return true if this object is equal to or a descendant of |ancestor|.
77 bool IsDescendantOf(BrowserAccessibility* ancestor); 79 bool IsDescendantOf(BrowserAccessibilityWin* ancestor);
78 80
79 // Returns the parent of this object, or NULL if it's the BrowserAccessibility 81 // Returns the parent of this object, or NULL if it's the
80 // root. 82 // BrowserAccessibilityWin root.
81 BrowserAccessibility* GetParent(); 83 BrowserAccessibilityWin* GetParent();
82 84
83 // Returns the number of children of this BrowserAccessibility object. 85 // Returns the number of children of this BrowserAccessibilityWin object.
84 uint32 GetChildCount(); 86 uint32 GetChildCount();
85 87
86 // Return the previous sibling of this object, or NULL if it's the first 88 // Return the previous sibling of this object, or NULL if it's the first
87 // child of its parent. 89 // child of its parent.
88 BrowserAccessibility* GetPreviousSibling(); 90 BrowserAccessibilityWin* GetPreviousSibling();
89 91
90 // Return the next sibling of this object, or NULL if it's the last child 92 // Return the next sibling of this object, or NULL if it's the last child
91 // of its parent. 93 // of its parent.
92 BrowserAccessibility* GetNextSibling(); 94 BrowserAccessibilityWin* GetNextSibling();
93 95
94 // Replace a child BrowserAccessibility object. Used when updating the 96 // Replace a child BrowserAccessibilityWin object. Used when updating the
95 // accessibility tree. 97 // accessibility tree.
96 void ReplaceChild( 98 void ReplaceChild(
97 const BrowserAccessibility* old_acc, BrowserAccessibility* new_acc); 99 const BrowserAccessibilityWin* old_acc, BrowserAccessibilityWin* new_acc);
98 100
99 // Accessors 101 // Accessors
100 LONG child_id() const { return child_id_; } 102 LONG child_id() const { return child_id_; }
101 int32 renderer_id() const { return renderer_id_; } 103 int32 renderer_id() const { return renderer_id_; }
102 LONG index_in_parent() const { return index_in_parent_; } 104 LONG index_in_parent() const { return index_in_parent_; }
103 105
104 // Add one to the reference count and return the same object. Always 106 // Add one to the reference count and return the same object. Always
105 // use this method when returning a BrowserAccessibility object as 107 // use this method when returning a BrowserAccessibilityWin object as
106 // an output parameter to a COM interface, never use it otherwise. 108 // an output parameter to a COM interface, never use it otherwise.
107 BrowserAccessibility* NewReference(); 109 BrowserAccessibilityWin* NewReference();
108 110
109 // 111 //
110 // IAccessible methods. 112 // IAccessible methods.
111 // 113 //
112 114
113 // Performs the default action on a given object. 115 // Performs the default action on a given object.
114 STDMETHODIMP accDoDefaultAction(VARIANT var_id); 116 STDMETHODIMP accDoDefaultAction(VARIANT var_id);
115 117
116 // Retrieves the child element or child object at a given point on the screen. 118 // Retrieves the child element or child object at a given point on the screen.
117 STDMETHODIMP accHitTest(LONG x_left, LONG y_top, VARIANT* child); 119 STDMETHODIMP accHitTest(LONG x_left, LONG y_top, VARIANT* child);
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 const _ATL_INTMAP_ENTRY* entries, 485 const _ATL_INTMAP_ENTRY* entries,
484 REFIID iid, 486 REFIID iid,
485 void** object); 487 void** object);
486 488
487 private: 489 private:
488 // Many MSAA methods take a var_id parameter indicating that the operation 490 // Many MSAA methods take a var_id parameter indicating that the operation
489 // should be performed on a particular child ID, rather than this object. 491 // should be performed on a particular child ID, rather than this object.
490 // This method tries to figure out the target object from |var_id| and 492 // This method tries to figure out the target object from |var_id| and
491 // returns a pointer to the target object if it exists, otherwise NULL. 493 // returns a pointer to the target object if it exists, otherwise NULL.
492 // Does not return a new reference. 494 // Does not return a new reference.
493 BrowserAccessibility* GetTargetFromChildID(const VARIANT& var_id); 495 BrowserAccessibilityWin* GetTargetFromChildID(const VARIANT& var_id);
494 496
495 // Initialize the role and state metadata from the role enum and state 497 // Initialize the role and state metadata from the role enum and state
496 // bitmasks defined in webkit/glue/webaccessibility.h. 498 // bitmasks defined in webkit/glue/webaccessibility.h.
497 void InitRoleAndState(LONG web_accessibility_role, 499 void InitRoleAndState(LONG web_accessibility_role,
498 LONG web_accessibility_state); 500 LONG web_accessibility_state);
499 501
500 // Return true if this attribute is in the attributes map. 502 // Return true if this attribute is in the attributes map.
501 bool HasAttribute(WebAccessibility::Attribute attribute); 503 bool HasAttribute(WebAccessibility::Attribute attribute);
502 504
503 // Retrieve the string value of an attribute from the attribute map and 505 // Retrieve the string value of an attribute from the attribute map and
504 // returns true if found. 506 // returns true if found.
505 bool GetAttribute(WebAccessibility::Attribute attribute, string16* value); 507 bool GetAttribute(WebAccessibility::Attribute attribute, string16* value);
506 508
507 // Retrieve the string value of an attribute from the attribute map and 509 // Retrieve the string value of an attribute from the attribute map and
508 // if found and nonempty, allocate a new BSTR (with SysAllocString) 510 // if found and nonempty, allocate a new BSTR (with SysAllocString)
509 // and return S_OK. If not found or empty, return S_FALSE. 511 // and return S_OK. If not found or empty, return S_FALSE.
510 HRESULT GetAttributeAsBstr( 512 HRESULT GetAttributeAsBstr(
511 WebAccessibility::Attribute attribute, BSTR* value_bstr); 513 WebAccessibility::Attribute attribute, BSTR* value_bstr);
512 514
513 // Escape a string like it would be escaped for a URL or HTML form. 515 // Escape a string like it would be escaped for a URL or HTML form.
514 string16 Escape(string16 str); 516 string16 Escape(string16 str);
515 517
516 // The manager of this tree of accessibility objects; needed for 518 // The manager of this tree of accessibility objects; needed for
517 // global operations like focus tracking. 519 // global operations like focus tracking.
518 BrowserAccessibilityManager* manager_; 520 BrowserAccessibilityManagerWin* manager_;
519 // The parent of this object, may be NULL if we're the root object. 521 // The parent of this object, may be NULL if we're the root object.
520 BrowserAccessibility* parent_; 522 BrowserAccessibilityWin* parent_;
521 // The ID of this object; globally unique within the browser process. 523 // The ID of this object; globally unique within the browser process.
522 LONG child_id_; 524 LONG child_id_;
523 // The index of this within its parent object. 525 // The index of this within its parent object.
524 LONG index_in_parent_; 526 LONG index_in_parent_;
525 // The ID of this object in the renderer process. 527 // The ID of this object in the renderer process.
526 int32 renderer_id_; 528 int32 renderer_id_;
527 529
528 // The children of this object. 530 // The children of this object.
529 std::vector<BrowserAccessibility*> children_; 531 std::vector<BrowserAccessibilityWin*> children_;
530 532
531 // Accessibility metadata from the renderer, used to respond to MSAA 533 // Accessibility metadata from the renderer, used to respond to MSAA
532 // events. 534 // events.
533 string16 name_; 535 string16 name_;
534 string16 value_; 536 string16 value_;
535 std::map<int32, string16> attributes_; 537 std::map<int32, string16> attributes_;
536 std::vector<std::pair<string16, string16> > html_attributes_; 538 std::vector<std::pair<string16, string16> > html_attributes_;
537 539
538 LONG role_; 540 LONG role_;
539 LONG state_; 541 LONG state_;
540 string16 role_name_; 542 string16 role_name_;
541 LONG ia2_role_; 543 LONG ia2_role_;
542 LONG ia2_state_; 544 LONG ia2_state_;
543 WebKit::WebRect location_; 545 WebKit::WebRect location_;
544 546
545 // COM objects are reference-counted. When we're done with this object 547 // COM objects are reference-counted. When we're done with this object
546 // and it's removed from our accessibility tree, a client may still be 548 // and it's removed from our accessibility tree, a client may still be
547 // holding onto a pointer to this object, so we mark it as inactive 549 // holding onto a pointer to this object, so we mark it as inactive
548 // so that calls to any of this object's methods immediately return 550 // so that calls to any of this object's methods immediately return
549 // failure. 551 // failure.
550 bool instance_active_; 552 bool instance_active_;
551 553
552 DISALLOW_COPY_AND_ASSIGN(BrowserAccessibility); 554 DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityWin);
553 }; 555 };
554 556
555 #endif // CHROME_BROWSER_BROWSER_ACCESSIBILITY_WIN_H_ 557 #endif // CHROME_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_WIN_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698