Skip to content

Commit

Permalink
Bug 1159327 - Enable accessibility more broadly with e10s and add an …
Browse files Browse the repository at this point in the history
…e10s a11y blacklist for clients with known issues. r=tbsaunde
  • Loading branch information
jmathies committed Apr 30, 2015
1 parent 6651595 commit 379acdb
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 11 deletions.
20 changes: 20 additions & 0 deletions accessible/windows/msaa/Compatibility.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,26 @@ class Compatibility
*/
static bool IsDolphin() { return !!(sConsumers & DOLPHIN); }

/**
* Return true if we should disable e10s due to a detected
* accessibility client.
*/
static bool IsBlacklistedForE10S()
{
// We currently blacklist everything except UNKNOWN and UIAUTOMATION
return !!(sConsumers &
(NVDA |
JAWS |
OLDJAWS |
WE |
DOLPHIN |
SEROTEK |
COBRA |
ZOOMTEXT |
KAZAGURU |
YOUDAO));
}

private:
Compatibility();
Compatibility(const Compatibility&);
Expand Down
3 changes: 1 addition & 2 deletions browser/components/nsBrowserGlue.js
Original file line number Diff line number Diff line change
Expand Up @@ -2811,8 +2811,7 @@ let E10SUINotification = {
// e10s doesn't work with accessibility, so we prompt to disable
// e10s if a11y is enabled, now or in the future.
Services.obs.addObserver(this, "a11y-init-or-shutdown", true);
if (Services.appinfo.accessibilityEnabled &&
!Services.appinfo.accessibilityIsUIA) {
if (Services.appinfo.accessibilityIsBlacklistedForE10S) {
this._showE10sAccessibilityWarning();
}
} else {
Expand Down
18 changes: 12 additions & 6 deletions toolkit/xre/nsAppRunner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@

#ifdef ACCESSIBILITY
#include "nsAccessibilityService.h"
#if defined(XP_WIN)
#include "mozilla/a11y/Compatibility.h"
#endif
#endif

#include "nsCRT.h"
Expand Down Expand Up @@ -859,17 +862,20 @@ nsXULAppInfo::GetAccessibilityEnabled(bool* aResult)
}

NS_IMETHODIMP
nsXULAppInfo::GetAccessibilityIsUIA(bool* aResult)
nsXULAppInfo::GetAccessibilityIsBlacklistedForE10S(bool* aResult)
{
*aResult = false;
#if defined(ACCESSIBILITY) && defined(XP_WIN)
// This is the same check the a11y service does to identify uia clients.
if (GetAccService() != nullptr &&
(::GetModuleHandleW(L"uiautomation") ||
::GetModuleHandleW(L"uiautomationcore"))) {
#if defined(ACCESSIBILITY)
#if defined(XP_WIN)
if (GetAccService() && mozilla::a11y::Compatibility::IsBlacklistedForE10S()) {
*aResult = true;
}
#elif defined(XP_MACOSX)
if (GetAccService()) {
*aResult = true;
}
#endif
#endif // defined(ACCESSIBILITY)
return NS_OK;
}

Expand Down
6 changes: 3 additions & 3 deletions xpcom/system/nsIXULRuntime.idl
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ bool BrowserTabsRemoteAutostart();
* stable/frozen, please contact Benjamin Smedberg.
*/

[scriptable, uuid(c4cd11c4-6e8e-49da-85a8-dad3b7605bc3)]
[scriptable, uuid(ce9d05f4-0c20-4f52-87e1-3a425e61e2f3)]
interface nsIXULRuntime : nsISupports
{
/**
Expand Down Expand Up @@ -97,10 +97,10 @@ interface nsIXULRuntime : nsISupports
readonly attribute boolean accessibilityEnabled;

/**
* Indicates if the active accessibility client is UIA.
* Indicates if the active accessibility client is blacklisted for e10s.
* DO NOT USE! This is temporary and will be removed.
*/
readonly attribute boolean accessibilityIsUIA;
readonly attribute boolean accessibilityIsBlacklistedForE10S;

/**
* Indicates whether the current Firefox build is 64-bit.
Expand Down

0 comments on commit 379acdb

Please sign in to comment.