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

Unified Diff: chrome/browser/gtk/accessibility_event_router_gtk.h

Issue 1585011: Add menu and menu item events to the accessibility extension api, and... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/gtk/accessibility_event_router_gtk.h
===================================================================
--- chrome/browser/gtk/accessibility_event_router_gtk.h (revision 43705)
+++ chrome/browser/gtk/accessibility_event_router_gtk.h (working copy)
@@ -36,6 +36,10 @@
gulong hook_id;
};
+// NOTE: This class is part of the Accessibility Extension API, which lets
+// extensions receive accessibility events. It's distinct from code that
+// implements platform accessibility APIs like MSAA or ATK.
+//
// Singleton class that adds a signal emission hook to many gtk events, and
// then sends an accessibility notification whenever a relevant event is
// sent to an accessible control.
@@ -47,7 +51,7 @@
//
// You can use Profile::PauseAccessibilityEvents to prevent a flurry
// of accessibility events when a window is being created or initialized.
-class AccessibilityEventRouter {
+class AccessibilityEventRouterGtk {
public:
// Internal information about a particular widget to override the
// information we get directly from gtk.
@@ -62,7 +66,7 @@
};
// Get the single instance of this class.
- static AccessibilityEventRouter* GetInstance();
+ static AccessibilityEventRouterGtk* GetInstance();
// Start sending accessibility events for this widget and all of its
// descendants. Notifications will go to the specified profile.
@@ -86,15 +90,6 @@
// The following methods are only for use by gtk signal handlers.
//
- // Returns true if this widget is a descendant of one of our registered
- // root widgets and not in the set of ignored widgets. If |profile| is
- // not null, return the profile where notifications associated with this
- // widget should be sent.
- bool IsWidgetAccessible(GtkWidget* widget, Profile** profile);
-
- // Return the name of a widget.
- std::string GetWidgetName(GtkWidget* widget);
-
// Called by the signal handler. Checks the type of the widget and
// calls one of the more specific Send*Notification methods, below.
void DispatchAccessibilityNotification(
@@ -105,6 +100,17 @@
void PostDispatchAccessibilityNotification(
GtkWidget* widget, NotificationType type);
+ private:
+ AccessibilityEventRouterGtk();
+ virtual ~AccessibilityEventRouterGtk();
+
+ // Given a widget, determine if it's the descendant of a root widget
+ // that's mapped to a profile and if so, if it's marked as accessible.
+ void FindWidget(GtkWidget* widget, Profile** profile, bool* is_accessible);
+
+ // Return the name of a widget.
+ std::string GetWidgetName(GtkWidget* widget);
+
// Each of these methods constructs an AccessibilityControlInfo object
// and sends a notification of a specific accessibility event.
void SendButtonNotification(
@@ -115,6 +121,8 @@
GtkWidget* widget, NotificationType type, Profile* profile);
void SendListBoxNotification(
GtkWidget* widget, NotificationType type, Profile* profile);
+ void SendMenuItemNotification(
+ GtkWidget* widget, NotificationType type, Profile* profile);
void SendRadioButtonNotification(
GtkWidget* widget, NotificationType type, Profile* profile);
void SendTabNotification(
@@ -129,10 +137,6 @@
void StartListening();
void StopListening();
- private:
- AccessibilityEventRouter();
- virtual ~AccessibilityEventRouter();
-
// Add a signal emission hook for one particular signal name and
// widget type, and save the hook_id in installed_hooks so we can
// remove it later.
@@ -141,7 +145,7 @@
GType widget_type,
GSignalEmissionHook hook_func);
- friend struct DefaultSingletonTraits<AccessibilityEventRouter>;
+ friend struct DefaultSingletonTraits<AccessibilityEventRouterGtk>;
// The set of all root widgets; only descendants of these will generate
// accessibility notifications.
@@ -156,8 +160,14 @@
// True if we are currently listening to signals.
bool listening_;
- // Used to schedule invocations of StartListening().
- ScopedRunnableMethodFactory<AccessibilityEventRouter> method_factory_;
+ // The profile associated with the most recent window event - used to
+ // figure out where to route a few events that can't be directly traced
+ // to a window with a profile (like menu events).
+ Profile* most_recent_profile_;
+
+ // Used to schedule invocations of StartListening() and to defer handling
+ // of some events until the next time through the event loop.
+ ScopedRunnableMethodFactory<AccessibilityEventRouterGtk> method_factory_;
};
#endif // CHROME_BROWSER_GTK_ACCESSIBILITY_EVENT_ROUTER_GTK_H_

Powered by Google App Engine
This is Rietveld 408576698