Merge "Check whether ChromeVox is ready before attempting to call it." into jb-mr1-dev

This commit is contained in:
Svetoslav Ganov
2012-10-11 17:12:22 -07:00
committed by Android (Google) Code Review

View File

@@ -96,11 +96,26 @@ class AccessibilityInjector {
// Template for JavaScript that performs AndroidVox actions. // Template for JavaScript that performs AndroidVox actions.
private static final String ACCESSIBILITY_ANDROIDVOX_TEMPLATE = private static final String ACCESSIBILITY_ANDROIDVOX_TEMPLATE =
"cvox.AndroidVox.performAction('%1s')"; "(function() {" +
" if ((typeof(cvox) != 'undefined')"+
" && (typeof(cvox.ChromeVox) != 'undefined')" +
" && (typeof(cvox.AndroidVox) != 'undefined')" +
" && cvox.ChromeVox.isActive) {" +
" return cvox.AndroidVox.performAction('%1s');" +
" } else {" +
" return false;" +
" }" +
"})()";
// JS code used to shut down an active AndroidVox instance. // JS code used to shut down an active AndroidVox instance.
private static final String TOGGLE_CVOX_TEMPLATE = private static final String TOGGLE_CVOX_TEMPLATE =
"javascript:(function() { cvox.ChromeVox.host.activateOrDeactivateChromeVox(%b); })();"; "javascript:(function() {" +
" if ((typeof(cvox) != 'undefined')"+
" && (typeof(cvox.ChromeVox) != 'undefined')" +
" && (typeof(cvox.ChromeVox.host) != 'undefined')) {" +
" cvox.ChromeVox.host.activateOrDeactivateChromeVox(%b);" +
" }" +
"})();";
/** /**
* Creates an instance of the AccessibilityInjector based on * Creates an instance of the AccessibilityInjector based on
@@ -776,20 +791,26 @@ class AccessibilityInjector {
while (true) { while (true) {
try { try {
if (mResultId == resultId) { if (mResultId == resultId) {
if (DEBUG)
Log.w(TAG, "Received CVOX result");
return true; return true;
} }
if (mResultId > resultId) { if (mResultId > resultId) {
if (DEBUG)
Log.w(TAG, "Obsolete CVOX result");
return false; return false;
} }
final long elapsedTimeMillis = SystemClock.uptimeMillis() - startTimeMillis; final long elapsedTimeMillis = SystemClock.uptimeMillis() - startTimeMillis;
waitTimeMillis = RESULT_TIMEOUT - elapsedTimeMillis; waitTimeMillis = RESULT_TIMEOUT - elapsedTimeMillis;
if (waitTimeMillis <= 0) { if (waitTimeMillis <= 0) {
if (DEBUG)
Log.w(TAG, "Timed out while waiting for CVOX result");
return false; return false;
} }
mResultLock.wait(waitTimeMillis); mResultLock.wait(waitTimeMillis);
} catch (InterruptedException ie) { } catch (InterruptedException ie) {
if (DEBUG) if (DEBUG)
Log.w(TAG, "Timed out while waiting for CVOX result"); Log.w(TAG, "Interrupted while waiting for CVOX result");
/* ignore */ /* ignore */
} }
} }
@@ -805,6 +826,8 @@ class AccessibilityInjector {
@JavascriptInterface @JavascriptInterface
@SuppressWarnings("unused") @SuppressWarnings("unused")
public void onResult(String id, String result) { public void onResult(String id, String result) {
if (DEBUG)
Log.w(TAG, "Saw CVOX result of '" + result + "'");
final long resultId; final long resultId;
try { try {