/*
* Copyright (C) 2015 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.android.talkback.formatter;
import android.app.Instrumentation;
import android.test.suitebuilder.annotation.MediumTest;
import android.view.View;
import com.android.talkback.Utterance;
import com.android.talkback.R;
import com.google.android.marvin.talkback.TalkBackService;
import com.googlecode.eyesfree.testing.CharSequenceFilter;
import com.googlecode.eyesfree.testing.TalkBackInstrumentationTestCase;
import com.googlecode.eyesfree.testing.UtteranceFilter;
public class LiveViewFormatterTest extends TalkBackInstrumentationTestCase {
private TalkBackService mTalkBack;
private Instrumentation mInstrumentation;
@Override
protected void setUp() throws Exception {
super.setUp();
mTalkBack = getService();
mInstrumentation = getInstrumentation();
assertNotNull("Obtained TalkBack instance", mTalkBack);
}
@MediumTest
public void testView_pronounceLiveRegionWithNonFocusableChildren() throws Exception {
setContentView(R.layout.live_region);
getViewForId(R.id.root).setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE);
startRecordingUtterances();
mInstrumentation.waitForIdleSync();
waitForAccessibilityIdleSync();
final CharSequenceFilter textFilter = new CharSequenceFilter().addContainsIgnoreCase(
"text_one, text_two");
final UtteranceFilter utteranceFilter = new UtteranceFilter().addTextFilter(textFilter);
final Utterance utterance = stopRecordingUtterancesAfterMatch(utteranceFilter);
assertNotNull("Saw matching utterance", utterance);
}
@MediumTest
public void testView_pronounceRootViewContentDescription() throws Exception {
setContentView(R.layout.live_region);
final View root = getViewForId(R.id.root);
mInstrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
root.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE);
}
});
waitForAccessibilityIdleSync();
startRecordingUtterances();
mInstrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
root.setContentDescription("Content description");
}
});
waitForAccessibilityIdleSync();
final CharSequenceFilter textFilter = new CharSequenceFilter().addContainsIgnoreCase(
"Content description");
final UtteranceFilter utteranceFilter = new UtteranceFilter().addTextFilter(textFilter);
final Utterance utterance = stopRecordingUtterancesAfterMatch(utteranceFilter);
assertNotNull("Saw matching utterance", utterance);
}
@MediumTest
public void testView_notIncludeLiveNonFocusableChildren() throws Exception {
setContentView(R.layout.live_region);
mInstrumentation.runOnMainSync(new Runnable() {
@Override
public void run() {
getViewForId(R.id.text_one).setFocusable(true);
}
});
mInstrumentation.waitForIdleSync();
startRecordingUtterances();
waitForAccessibilityIdleSync();
final CharSequenceFilter textFilter = new CharSequenceFilter().addContainsIgnoreCase(
"text_one");
final UtteranceFilter utteranceFilter = new UtteranceFilter().addTextFilter(textFilter);
final Utterance utterance = stopRecordingUtterancesAfterMatch(utteranceFilter);
assertNull(utterance);
}
}