/* * Copyright (C) 2016 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.eventprocessor; import android.content.SharedPreferences; import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; import android.test.suitebuilder.annotation.MediumTest; import com.android.talkback.R; import com.android.talkback.controller.CursorController; import com.android.talkback.controller.DimScreenController; import com.android.talkback.controller.FeedbackController; import com.android.talkback.volumebutton.VolumeButtonPatternDetector; import com.android.utils.SharedPreferencesUtils; import com.google.android.marvin.talkback.TalkBackService; import com.googlecode.eyesfree.testing.TalkBackInstrumentationTestCase; public class ProcessorVolumeStreamTest extends TalkBackInstrumentationTestCase { private TalkBackService mTalkBack; private CursorController mCursorController; private ProcessorVolumeStream mProcessorVolumeStream; @Override protected void setUp() throws Exception { super.setUp(); mTalkBack = getService(); mCursorController = mTalkBack.getCursorController(); FeedbackController feedbackController = mTalkBack.getFeedbackController(); CursorController cursorController = mTalkBack.getCursorController(); DimScreenController dimScreenController = mTalkBack.getDimScreenController(); mProcessorVolumeStream = new ProcessorVolumeStream(feedbackController, cursorController, dimScreenController, mTalkBack); // Disable dim confirmation so it doesn't interfere with testing. SharedPreferences prefs = SharedPreferencesUtils.getSharedPreferences(getActivity()); SharedPreferencesUtils.putBooleanPref(prefs, getActivity().getResources(), R.string.pref_show_dim_screen_confirmation_dialog, false); assertNotNull("Obtained TalkBack instance", mTalkBack); assertNotNull("Obtained CursorController instance", mCursorController); assertNotNull("Obtained ProcessorVolumeStream instance", mProcessorVolumeStream); } @MediumTest public void testScrollSeekBarWithVolumeButton() { setContentView(R.layout.scroll_seek_bar_with_volume_key_test); AccessibilityNodeInfoCompat seekBar = getNodeForId(R.id.seek_bar); mCursorController.setCursor(seekBar); waitForAccessibilityIdleSync(); // The progress of the SeekBar has already been set to 99%. // Scroll the SeekBar from 99% to 100%. mProcessorVolumeStream.onPatternMatched(VolumeButtonPatternDetector.SHORT_PRESS_PATTERN, VolumeButtonPatternDetector.VOLUME_UP); waitForAccessibilityIdleSync(); // Scroll again the SeekBar. // It should not navigate to another node. mProcessorVolumeStream.onPatternMatched(VolumeButtonPatternDetector.SHORT_PRESS_PATTERN, VolumeButtonPatternDetector.VOLUME_UP); waitForAccessibilityIdleSync(); assertEquals(seekBar, mCursorController.getCursor()); } }