summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2013-10-23 19:59:23 +0100
committerMichael Meeks <michael.meeks@collabora.com>2013-10-30 11:09:55 +0000
commit72b954df59d64fa47f6380e4322243401afb683f (patch)
tree38fb4c8f97499daeeb825941086a34b9387af665
parent1dac69edef6f2b7632dc3be002ba7d3075c70b96 (diff)
Avoid using gconftool. Atk provides a11y not Java on Unix.
cf. comment in framework header. Should have no impact on real run-time Java a11y, which would be enabled later as-needed; only on JRE selection. For extreme corner-cases, where your auto-selected JRE has no a11y support either select another JRE in the UI or: $ export JFW_PLUGIN_FORCE_ACCESSIBILITY=1 to override. Change-Id: I59a6428e5a11664b75c29580cad76eb9500db45a
-rw-r--r--include/jvmfwk/framework.h8
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/util.cxx16
-rw-r--r--jvmfwk/source/fwkutil.cxx22
3 files changed, 25 insertions, 21 deletions
diff --git a/include/jvmfwk/framework.h b/include/jvmfwk/framework.h
index c404a9591158..7099f506e87f 100644
--- a/include/jvmfwk/framework.h
+++ b/include/jvmfwk/framework.h
@@ -73,7 +73,7 @@ extern "C" {
</p>
<p>Setting the class path used by a Java VM should not be necesarry. The locations
- of Jar files should be knows by a class loader. If a jar file depends on another
+ of Jar files should be known by a class loader. If a jar file depends on another
jar file then it can be referenced in the manifest file of the first jar. However,
a user may add jars to the class path by using this API. If it becomes necessary
to add files to the class path which is to be used by all users then one can use
@@ -168,6 +168,12 @@ extern "C" {
It may be removed in the future. By setting it to 1, the framework will not try to
find out if the system is configured to use accessibility tools or if a JRE has an
accessibiliy bridge installed</dd>
+ <dt>JFW_PLUGIN_FORCE_ACCESSIBILITY</dt>
+ <dd>This is a unofficial variable which was introduced to workaround external issues.
+ It may be removed in the future. By setting it to 1, the framework will override a
+ platform's desire not to probe each java backend to determine if it has an accessibility
+ bridge installed. If the JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY is set this variable has
+ no effect, and is Unix specific.</dd>
</dl>
*/
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/util.cxx b/jvmfwk/plugins/sunmajor/pluginlib/util.cxx
index 75c34129a4c7..832616f42e6c 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/util.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/util.cxx
@@ -364,6 +364,12 @@ void AsynchReader::execute()
}
}
+static bool isEnvVarSetToOne(const OUString &aVar)
+{
+ OUString aValue;
+ getBootstrap()->getFrom(aVar, aValue);
+ return aValue == "1";
+}
bool getJavaProps(const OUString & exePath,
#ifdef JVM_ONE_PATH_CHECK
@@ -393,8 +399,7 @@ bool getJavaProps(const OUString & exePath,
//If the bootstrap variable is "1" then we pass the argument
//"noaccessibility" to JREProperties.class. This will prevent
//that it calls java.awt.Toolkit.getDefaultToolkit();
- OUString sValue;
- getBootstrap()->getFrom("JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY", sValue);
+ bool bNoAccessibility = isEnvVarSetToOne("JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY");
//prepare the arguments
sal_Int32 cArgs = 3;
@@ -404,8 +409,13 @@ bool getJavaProps(const OUString & exePath,
OUString arg4 = "noaccessibility";
rtl_uString *args[4] = {arg1.pData, arg2.pData, arg3.pData};
+#ifdef UNX
+ // Java is no longer required for a11y - we use atk directly.
+ bNoAccessibility = !isEnvVarSetToOne("JFW_PLUGIN_FORCE_ACCESSIBILITY");
+#endif
+
// Only add the fourth param if the bootstrap parameter is set.
- if (sValue.equals(OUString::number( 1)))
+ if (bNoAccessibility)
{
args[3] = arg4.pData;
cArgs = 4;
diff --git a/jvmfwk/source/fwkutil.cxx b/jvmfwk/source/fwkutil.cxx
index 299869526d09..993ddb3cf729 100644
--- a/jvmfwk/source/fwkutil.cxx
+++ b/jvmfwk/source/fwkutil.cxx
@@ -56,9 +56,8 @@ namespace jfw
bool isAccessibilitySupportDesired()
{
OUString sValue;
- if ((sal_True == ::rtl::Bootstrap::get(
- OUString("JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY"), sValue)) && sValue == "1"
- )
+ if (::rtl::Bootstrap::get( "JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY", sValue) &&
+ sValue == "1" )
return false;
bool retVal = false;
@@ -103,24 +102,13 @@ bool isAccessibilitySupportDesired()
RegCloseKey(hKey);
#elif defined UNX
- char buf[16];
- // use 2 shells to suppress the eventual "gcontool-2 not found" message
- // of the shell trying to execute the command
- FILE* fp = popen( "/bin/sh 2>/dev/null -c \"gconftool-2 -g /desktop/gnome/interface/accessibility\"", "r" );
- if( fp )
- {
- if( fgets( buf, sizeof(buf), fp ) )
- {
- int nCompare = strncasecmp( buf, "true", 4 );
- retVal = (nCompare == 0 ? true : false);
- }
- pclose( fp );
- }
+ // Java is no longer required for a11y - we use atk directly.
+ retVal = ::rtl::Bootstrap::get( "JFW_PLUGIN_FORCE_ACCESSIBILITY", sValue) && sValue == "1";
#endif
+
return retVal;
}
-
rtl::ByteSequence encodeBase16(const rtl::ByteSequence& rawData)
{
static const char EncodingTable[] =