mozilla-a11y.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Sun, 07 Oct 2012 21:27:06 +0200
branchesr10
changeset 549 eed5124a1ab3
parent 369 04fc00b85b21
permissions -rw-r--r--
10.0.8 release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
     1
# HG changeset patch
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
     2
# User Michael Gorse <mgorse@suse.com>
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
     3
# Parent 2c115988d04c0a0a8cb75b3a597ecdb2c4c001c9
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
     4
a11y only enabled from Gnome 2's GConf setting
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
     5
https://bugzilla.novell.com/show_bug.cgi?id=732898
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
     6
https://bugzilla.mozilla.org/show_bug.cgi?id=693343
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
     7
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
     8
diff --git a/accessible/src/atk/Makefile.in b/accessible/src/atk/Makefile.in
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
     9
--- a/accessible/src/atk/Makefile.in
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    10
+++ b/accessible/src/atk/Makefile.in
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    11
@@ -87,15 +87,19 @@ EXPORTS = \
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    12
 # we want to force the creation of a static lib.
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    13
 FORCE_STATIC_LIB = 1
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    14
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    15
 include $(topsrcdir)/config/rules.mk
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    16
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    17
 CFLAGS		+= $(MOZ_GTK2_CFLAGS)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    18
 CXXFLAGS	+= $(MOZ_GTK2_CFLAGS)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    19
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    20
+ifdef MOZ_ENABLE_DBUS
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    21
+CXXFLAGS += $(MOZ_DBUS_CFLAGS)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    22
+endif
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    23
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    24
 LOCAL_INCLUDES += \
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    25
   -I$(srcdir) \
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    26
   -I$(srcdir)/../base \
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    27
   -I$(srcdir)/../html \
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    28
   -I$(srcdir)/../xul \
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    29
   -I$(topsrcdir)/other-licenses/atk-1.0 \
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    30
   $(NULL)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    31
diff --git a/accessible/src/atk/nsApplicationAccessibleWrap.cpp b/accessible/src/atk/nsApplicationAccessibleWrap.cpp
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    32
--- a/accessible/src/atk/nsApplicationAccessibleWrap.cpp
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    33
+++ b/accessible/src/atk/nsApplicationAccessibleWrap.cpp
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
    34
@@ -47,29 +47,29 @@
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    35
 #include "nsIPrefBranch.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    36
 #include "nsIServiceManager.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    37
 #include "nsAutoPtr.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    38
 #include "nsAccessibilityService.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    39
 #include "AtkSocketAccessible.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    40
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    41
 #include <gtk/gtk.h>
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    42
 #include <atk/atk.h>
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
    43
+#ifdef MOZ_ENABLE_DBUS
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    44
+#include <dbus/dbus.h>
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
    45
+#endif
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    46
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    47
+using namespace mozilla::a11y;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    48
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    49
 typedef GType (* AtkGetTypeType) (void);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    50
 GType g_atk_hyperlink_impl_type = G_TYPE_INVALID;
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
    51
 static bool sATKChecked = false;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    52
 static PRLibrary *sATKLib = nsnull;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    53
 static const char sATKLibName[] = "libatk-1.0.so.0";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    54
 static const char sATKHyperlinkImplGetTypeSymbol[] =
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    55
     "atk_hyperlink_impl_get_type";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    56
-static const char sAccEnv [] = "GNOME_ACCESSIBILITY";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    57
-static const char sSysPrefService [] =
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    58
-    "@mozilla.org/system-preference-service;1";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    59
-static const char sAccessibilityKey [] =
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    60
-    "config.use_system_prefs.accessibility";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    61
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    62
 /* gail function pointer */
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    63
 static guint (* gail_add_global_event_listener) (GSignalEmissionHook listener,
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    64
                                                  const gchar *event_type);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    65
 static void (* gail_remove_global_event_listener) (guint remove_listener);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    66
 static void (* gail_remove_key_event_listener) (guint remove_listener);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    67
 static AtkObject * (*gail_get_root) (void);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    68
 
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
    69
@@ -609,36 +609,17 @@ toplevel_event_watcher(GSignalInvocation
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    70
   }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    71
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    72
   return TRUE;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    73
 }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    74
 
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
    75
 bool
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    76
 nsApplicationAccessibleWrap::Init()
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    77
 {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    78
-    // XXX following code is copied from widget/src/gtk2/nsWindow.cpp
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    79
-    // we should put it to somewhere that can be used from both modules
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    80
-    // see bug 390761
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    81
-
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    82
-    // check if accessibility enabled/disabled by environment variable
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
    83
-    bool isGnomeATEnabled = false;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    84
-    const char *envValue = PR_GetEnv(sAccEnv);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    85
-    if (envValue) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    86
-        isGnomeATEnabled = !!atoi(envValue);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    87
-    } else {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    88
-        //check gconf-2 setting
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    89
-        nsresult rv;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    90
-        nsCOMPtr<nsIPrefBranch> sysPrefService =
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    91
-            do_GetService(sSysPrefService, &rv);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    92
-        if (NS_SUCCEEDED(rv) && sysPrefService) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    93
-            sysPrefService->GetBoolPref(sAccessibilityKey, &isGnomeATEnabled);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    94
-        }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    95
-    }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    96
-
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    97
-    if (isGnomeATEnabled) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    98
+    if (ShouldA11yBeEnabled()) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
    99
         // load and initialize gail library
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   100
         nsresult rv = LoadGtkModule(sGail);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   101
         if (NS_SUCCEEDED(rv)) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   102
             (*sGail.init)();
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   103
         }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   104
         else {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   105
             MAI_LOG_DEBUG(("Fail to load lib: %s\n", sGail.libName));
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   106
         }
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   107
@@ -877,8 +858,129 @@ LoadGtkModule(GnomeAccessibilityModule& 
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   108
                        aModule.init ? aModule.shutdownName : aModule.initName,
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   109
                        aModule.libName));
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   110
         PR_UnloadLibrary(aModule.lib);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   111
         aModule.lib = NULL;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   112
         return NS_ERROR_FAILURE;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   113
     }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   114
     return NS_OK;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   115
 }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   116
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   117
+namespace mozilla {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   118
+namespace a11y {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   119
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   120
+#ifdef MOZ_ENABLE_DBUS
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   121
+  static DBusPendingCall *a11yPendingCall = NULL;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   122
+#endif
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   123
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   124
+void
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   125
+PreInit()
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   126
+{
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   127
+  static bool sChecked = false;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   128
+  if (sChecked)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   129
+    return;
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   130
+  sChecked = true;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   131
+  DBusError error;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   132
+  dbus_error_init(&error);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   133
+  DBusConnection* bus = dbus_bus_get(DBUS_BUS_SESSION, &error);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   134
+  if (!bus)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   135
+    return;
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   136
+  dbus_connection_set_exit_on_disconnect(bus, false);
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   137
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   138
+  DBusMessage *message;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   139
+  message = dbus_message_new_method_call("org.a11y.Bus", "/org/a11y/bus",
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   140
+                                         "org.freedesktop.DBus.Properties",
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   141
+                                         "Get");
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   142
+  if (!message)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   143
+    goto dbus_done;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   144
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   145
+  static const char* iface = "org.a11y.Status";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   146
+  static const char* member = "IsEnabled";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   147
+  dbus_message_append_args(message, DBUS_TYPE_STRING, &iface,
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   148
+                           DBUS_TYPE_STRING, &member, DBUS_TYPE_INVALID);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   149
+  dbus_connection_send_with_reply(bus, message, &a11yPendingCall, 1000);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   150
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   151
+dbus_done:
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   152
+  if (message)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   153
+    dbus_message_unref(message);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   154
+  if (bus)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   155
+    dbus_connection_unref(bus);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   156
+  dbus_error_free(&error);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   157
+}
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   158
+
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   159
+bool
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   160
+ShouldA11yBeEnabled()
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   161
+{
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   162
+  static bool sChecked = false, sShouldEnable = false;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   163
+  if (sChecked)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   164
+    return sShouldEnable;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   165
+
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   166
+  sChecked = true;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   167
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   168
+  // check if accessibility enabled/disabled by environment variable
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   169
+  static const char sAccEnv [] = "GNOME_ACCESSIBILITY";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   170
+  const char* envValue = PR_GetEnv(sAccEnv);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   171
+  if (envValue)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   172
+    return sShouldEnable = !!atoi(envValue);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   173
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   174
+#ifdef MOZ_ENABLE_DBUS
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   175
+  PreInit();
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   176
+  bool dbusSuccess = false;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   177
+  DBusMessage *reply = nsnull;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   178
+  if (a11yPendingCall) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   179
+    dbus_pending_call_block(a11yPendingCall);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   180
+    reply = dbus_pending_call_steal_reply(a11yPendingCall);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   181
+    dbus_pending_call_unref(a11yPendingCall);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   182
+    a11yPendingCall = nsnull;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   183
+  }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   184
+  if (!reply ||
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   185
+      dbus_message_get_type(reply) != DBUS_MESSAGE_TYPE_METHOD_RETURN ||
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   186
+      strcmp(dbus_message_get_signature (reply), "v"))
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   187
+    goto dbus_done;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   188
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   189
+  DBusMessageIter iter, iter_variant, iter_struct;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   190
+  dbus_bool_t dResult;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   191
+  dbus_message_iter_init(reply, &iter);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   192
+  dbus_message_iter_recurse (&iter, &iter_variant);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   193
+  switch (dbus_message_iter_get_arg_type(&iter_variant)) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   194
+    case DBUS_TYPE_STRUCT:
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   195
+      // at-spi2-core 2.2.0-2.2.1 had a bug where it returned a struct
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   196
+      dbus_message_iter_recurse(&iter_variant, &iter_struct);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   197
+      if (dbus_message_iter_get_arg_type(&iter_struct) == DBUS_TYPE_BOOLEAN) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   198
+        dbus_message_iter_get_basic(&iter_struct, &dResult);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   199
+        sShouldEnable = dResult;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   200
+        dbusSuccess = true;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   201
+      }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   202
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   203
+      break;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   204
+    case DBUS_TYPE_BOOLEAN:
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   205
+      dbus_message_iter_get_basic(&iter_variant, &dResult);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   206
+      sShouldEnable = dResult;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   207
+      dbusSuccess = true;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   208
+      break;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   209
+    default:
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   210
+      break;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   211
+  }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   212
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   213
+  dbus_done:
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   214
+  if (reply)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   215
+    dbus_message_unref(reply);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   216
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   217
+  if (dbusSuccess)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   218
+    return sShouldEnable;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   219
+#endif
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   220
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   221
+  //check gconf-2 setting
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   222
+  nsresult rv = NS_OK;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   223
+  static const char sSysPrefService [] =
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   224
+    "@mozilla.org/system-preference-service;1";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   225
+  static const char sAccessibilityKey [] =
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   226
+    "config.use_system_prefs.accessibility";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   227
+  nsCOMPtr<nsIPrefBranch> sysPrefService =
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   228
+    do_GetService(sSysPrefService, &rv);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   229
+  if (NS_SUCCEEDED(rv) && sysPrefService)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   230
+    sysPrefService->GetBoolPref(sAccessibilityKey, &sShouldEnable);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   231
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   232
+  return sShouldEnable;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   233
+}
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   234
+} // namespace a11y
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   235
+} // namespace mozilla
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   236
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   237
diff --git a/accessible/src/base/nsAccessibilityService.h b/accessible/src/base/nsAccessibilityService.h
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   238
--- a/accessible/src/base/nsAccessibilityService.h
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   239
+++ b/accessible/src/base/nsAccessibilityService.h
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   240
@@ -46,16 +46,33 @@
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   241
 
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   242
 #include "mozilla/a11y/FocusManager.h"
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   243
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   244
 #include "nsIObserver.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   245
 
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   246
 namespace mozilla {
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   247
 namespace a11y {
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   248
 
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   249
+#ifdef MOZ_ACCESSIBILITY_ATK
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   250
+/**
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   251
+ * + * Perform initialization that should be done as soon as possible, in
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   252
+ * order
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   253
+ * + * to minimize startup time.
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   254
+ * + * XXX: this function and the next defined in
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   255
+ * nsApplicationAccessibleWrap.cpp
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   256
+ * + */
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   257
+void PreInit();
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   258
+
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   259
+/**
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   260
+ * + * Is platform accessibility enabled.
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   261
+ * + * Only used on linux with atk for now.
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   262
+ * + */
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   263
+bool ShouldA11yBeEnabled();
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   264
+#endif
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   265
+
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   266
 /**
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   267
  * Return focus manager.
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   268
  */
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   269
 FocusManager* FocusMgr();
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   270
 
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   271
 } // namespace a11y
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   272
 } // namespace mozilla
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   273
 
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   274
diff --git a/widget/src/gtk2/nsWindow.cpp b/widget/src/gtk2/nsWindow.cpp
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   275
--- a/widget/src/gtk2/nsWindow.cpp
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   276
+++ b/widget/src/gtk2/nsWindow.cpp
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   277
@@ -105,29 +105,21 @@
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   278
 #include "nsIStringBundle.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   279
 #include "nsGfxCIID.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   280
 #include "nsIObserverService.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   281
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   282
 #include "nsIdleService.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   283
 #include "nsIPropertyBag2.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   284
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   285
 #ifdef ACCESSIBILITY
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   286
-#include "nsIAccessibilityService.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   287
+#include "nsAccessibilityService.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   288
 #include "nsIAccessibleDocument.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   289
-#include "prenv.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   290
-#include "stdlib.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   291
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   292
 using namespace mozilla;
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   293
 
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   294
-static bool sAccessibilityChecked = false;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   295
-/* static */
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   296
-bool nsWindow::sAccessibilityEnabled = false;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   297
-static const char sSysPrefService [] = "@mozilla.org/system-preference-service;1";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   298
-static const char sAccEnv [] = "GNOME_ACCESSIBILITY";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   299
-static const char sAccessibilityKey [] = "config.use_system_prefs.accessibility";
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   300
 #endif
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   301
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   302
 /* For SetIcon */
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   303
 #include "nsAppDirectoryServiceDefs.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   304
 #include "nsXPIDLString.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   305
 #include "nsIFile.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   306
 #include "nsILocalFile.h"
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   307
 
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   308
@@ -1111,19 +1103,18 @@ nsWindow::Show(bool aState)
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   309
             NativeResize(mBounds.x, mBounds.y, mBounds.width, mBounds.height,
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   310
                          false);
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   311
         } else if (mNeedsResize) {
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   312
             NativeResize(mBounds.width, mBounds.height, false);
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   313
         }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   314
     }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   315
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   316
 #ifdef ACCESSIBILITY
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   317
-    if (aState && sAccessibilityEnabled) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   318
+    if (aState && a11y::ShouldA11yBeEnabled())
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   319
         CreateRootAccessible();
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   320
-    }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   321
 #endif
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   322
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   323
     NativeShow(aState);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   324
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   325
     return NS_OK;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   326
 }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   327
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   328
 NS_IMETHODIMP
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   329
@@ -3885,16 +3876,21 @@ nsWindow::Create(nsIWidget        *aPare
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   330
     nsIWidget *baseParent = aInitData &&
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   331
         (aInitData->mWindowType == eWindowType_dialog ||
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   332
          aInitData->mWindowType == eWindowType_toplevel ||
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   333
          aInitData->mWindowType == eWindowType_invisible) ?
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   334
         nsnull : aParent;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   335
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   336
     NS_ASSERTION(!mWindowGroup, "already have window group (leaking it)");
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   337
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   338
+#ifdef ACCESSIBILITY
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   339
+    // Send a DBus message to check whether a11y is enabled
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   340
+    a11y::PreInit();
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   341
+#endif
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   342
+
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   343
     // Ensure that the toolkit is created.
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   344
     nsGTKToolkit::GetToolkit();
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   345
 
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   346
     // initialize all the common bits of this class
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   347
     BaseCreate(baseParent, aRect, aHandleEventFunction, aContext, aInitData);
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   348
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   349
     // Do we need to listen for resizes?
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   350
     bool listenForResizes = false;;
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   351
@@ -4278,43 +4274,16 @@ nsWindow::Create(nsIWidget        *aPare
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   352
         LOG(("\tmGdkWindow %p %lx\n", (void *)mGdkWindow,
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   353
              gdk_x11_window_get_xid(mGdkWindow)));
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   354
     }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   355
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   356
     // resize so that everything is set to the right dimensions
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   357
     if (!mIsTopLevel)
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   358
         Resize(mBounds.x, mBounds.y, mBounds.width, mBounds.height, false);
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   359
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   360
-#ifdef ACCESSIBILITY
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   361
-    nsresult rv;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   362
-    if (!sAccessibilityChecked) {
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   363
-        sAccessibilityChecked = true;
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   364
-
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   365
-        //check if accessibility enabled/disabled by environment variable
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   366
-        const char *envValue = PR_GetEnv(sAccEnv);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   367
-        if (envValue) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   368
-            sAccessibilityEnabled = atoi(envValue) != 0;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   369
-            LOG(("Accessibility Env %s=%s\n", sAccEnv, envValue));
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   370
-        }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   371
-        //check gconf-2 setting
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   372
-        else {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   373
-            nsCOMPtr<nsIPrefBranch> sysPrefService =
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   374
-                do_GetService(sSysPrefService, &rv);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   375
-            if (NS_SUCCEEDED(rv) && sysPrefService) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   376
-
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   377
-                // do the work to get gconf setting.
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   378
-                // will be done soon later.
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   379
-                sysPrefService->GetBoolPref(sAccessibilityKey,
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   380
-                                            &sAccessibilityEnabled);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   381
-            }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   382
-
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   383
-        }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   384
-    }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   385
-#endif
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   386
-
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   387
 #ifdef MOZ_DFB
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   388
     if (!mDFB) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   389
          DirectFBCreate( &mDFB );
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   390
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   391
          D_ASSUME( mDFB != NULL );
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   392
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   393
          if (mDFB)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   394
               mDFB->GetDisplayLayer( mDFB, DLID_PRIMARY, &mDFBLayer );
369
04fc00b85b21 build 10.0b2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 358
diff changeset
   395
@@ -6504,19 +6473,18 @@ nsWindow::DispatchAccessibleEvent()
358
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   396
     DispatchEvent(&event, status);
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   397
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   398
     return event.mAccessible;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   399
 }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   400
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   401
 void
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   402
 nsWindow::DispatchEventToRootAccessible(PRUint32 aEventType)
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   403
 {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   404
-    if (!sAccessibilityEnabled) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   405
+    if (!a11y::ShouldA11yBeEnabled())
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   406
         return;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   407
-    }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   408
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   409
     nsCOMPtr<nsIAccessibilityService> accService =
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   410
         do_GetService("@mozilla.org/accessibilityService;1");
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   411
     if (!accService) {
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   412
         return;
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   413
     }
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   414
 
b28670af14d5 Read a11y status from Gnome3
Michael Gorse <mgorse@suse.com>
parents:
diff changeset
   415
     // Get the root document accessible and fire event to it.