Index: chrome/browser/browser_accessibility_manager.h |
=================================================================== |
--- chrome/browser/browser_accessibility_manager.h (revision 16095) |
+++ chrome/browser/browser_accessibility_manager.h (working copy) |
@@ -5,8 +5,7 @@ |
#ifndef CHROME_BROWSER_BROWSER_ACCESSIBILITY_MANAGER_H_ |
#define CHROME_BROWSER_BROWSER_ACCESSIBILITY_MANAGER_H_ |
-#include <oaidl.h> // Needed for VARIANT structure. |
-#include <hash_map> |
+#include <map> |
#include "base/singleton.h" |
#include "chrome/common/notification_observer.h" |
@@ -16,6 +15,8 @@ |
class RenderProcessHost; |
class RenderWidgetHost; |
+using webkit_glue::WebAccessibility; |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// |
// BrowserAccessibilityManager |
@@ -35,36 +36,29 @@ |
static BrowserAccessibilityManager* GetInstance(); |
// Creates an instance of BrowserAccessibility, initializes it and sets the |
- // [acc_obj_id], which is used for IPC communication, and [instance_id], |
+ // |acc_obj_id|, which is used for IPC communication, and |instance_id|, |
// which is used to identify the mapping between accessibility instance and |
// RenderProcess. |
STDMETHODIMP CreateAccessibilityInstance(REFIID iid, |
int acc_obj_id, |
- int instance_id, |
+ int routing_id, |
+ int process_id, |
+ HWND parent_hwnd, |
void** interface_ptr); |
// Composes and sends a message for requesting needed accessibility |
- // information. Unused LONG input parameters should be NULL, and the VARIANT |
- // [var_id] an empty, valid instance. |
- bool RequestAccessibilityInfo(int acc_obj_id, |
- int instance_id, |
- int acc_func_id, |
- int child_id, |
- long input1, |
- long input2); |
+ // information. |
+ bool RequestAccessibilityInfo(WebAccessibility::InParams* in, |
+ int routing_id, |
+ int process_id); |
+ // Notifies assistive technology that renderer focus changed, through the |
+ // platform-specific channels. |
+ bool ChangeAccessibilityFocus(int acc_obj_id, int process_id, int routing_id); |
+ |
// Wrapper function, for cleaner code. |
- const webkit_glue::WebAccessibility::OutParams& response(); |
+ const WebAccessibility::OutParams& response(); |
- // Retrieves the parent HWND connected to the provided id. |
- HWND parent_hwnd(int id); |
- |
- // Mutator, needed since constructor does not take any arguments, and to keep |
- // instance accessor clean. |
- int SetMembers(BrowserAccessibility* browser_acc, |
- HWND parent_hwnd, |
- RenderWidgetHost* render_widget_host); |
- |
// NotificationObserver implementation. |
virtual void Observe(NotificationType type, |
const NotificationSource& source, |
@@ -78,32 +72,24 @@ |
~BrowserAccessibilityManager(); |
private: |
- // Member variable structure, used in instance hashmap. |
- struct UniqueMembers { |
- RenderWidgetHost* render_widget_host_; |
- HWND parent_hwnd_; |
+ // Retrieves the BrowserAccessibility instance connected to the |
+ // RenderProcessHost identified by the process/routing id pair. |
+ BrowserAccessibility* GetBrowserAccessibility(int process_id, int routing_id); |
- UniqueMembers(HWND parent_hwnd, RenderWidgetHost* render_widget_host) |
- : parent_hwnd_(parent_hwnd), |
- render_widget_host_(render_widget_host) { |
- } |
- }; |
+ // Multi-map from process id (key) to active BrowserAccessibility instances |
+ // for that RenderProcessHost. |
+ typedef std::multimap<int, BrowserAccessibility*> RenderProcessHostMap; |
+ typedef std::pair<int, BrowserAccessibility*> MapEntry; |
- typedef stdext::hash_map<int, UniqueMembers*> InstanceMap; |
- typedef stdext::hash_map<RenderProcessHost*, BrowserAccessibility*> |
- RenderProcessHostMap; |
- |
- // Caching of the unique member variables used to handle browser accessibility |
- // requests from multiple processes. |
- InstanceMap instance_map_; |
- int instance_id_; |
- |
- // Reverse mapping to track which RenderProcessHosts are active. If a |
- // RenderProcessHost is found to be terminated, it should be removed from this |
- // mapping, and the connected BrowserAccessibility ids/instances invalidated. |
+ // Mapping to track which RenderProcessHosts ids are active. If a |
+ // RenderProcessHost is found to be terminated, its id (key) should be removed |
+ // from this mapping, and the connected BrowserAccessibility ids/instances |
+ // invalidated. |
RenderProcessHostMap render_process_host_map_; |
- webkit_glue::WebAccessibility::OutParams out_params_; |
+ // Structure passed by reference to hold response parameters from the |
+ // renderer. |
+ WebAccessibility::OutParams out_params_; |
DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityManager); |
}; |