1816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/* 2816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Copyright (C) 2015 The Android Open Source Project 3816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 4816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License"); 5816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * you may not use this file except in compliance with the License. 6816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * You may obtain a copy of the License at 7816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 8816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * http://www.apache.org/licenses/LICENSE-2.0 9816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 10816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Unless required by applicable law or agreed to in writing, software 11816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS, 12816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * See the License for the specific language governing permissions and 14816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * limitations under the License. 15816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */ 16816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 17816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopackage com.android.tv.tests.ui; 18816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 19816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport static com.android.tv.testing.uihelper.UiDeviceAsserts.assertHas; 20816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport static com.android.tv.testing.uihelper.UiDeviceAsserts.assertWaitForCondition; 21816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 2265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.support.test.filters.LargeTest; 23816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.test.uiautomator.BySelector; 24816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.test.uiautomator.Until; 25816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 26816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.R; 27816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.testing.testinput.ChannelStateData; 28816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.testing.testinput.TvTestInputConstants; 29816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.testing.uihelper.Constants; 30816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.testing.uihelper.DialogHelper; 31816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 32816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/** 33816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Basic tests for the LiveChannels app. 34816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */ 35816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko@LargeTest 36816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopublic class LiveChannelsAppTest extends LiveChannelsTestCase { 37ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko private BySelector mBySettingsSidePanel; 38816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 39816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 40816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected void setUp() throws Exception { 41816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.setUp(); 42816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mLiveChannelsHelper.assertAppStarted(); 4307b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko pressKeysForChannel(TvTestInputConstants.CH_1_DEFAULT_DONT_MODIFY); 44816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getInstrumentation().waitForIdleSync(); 45ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko mBySettingsSidePanel = mSidePanelHelper.bySidePanelTitled( 46ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko R.string.side_panel_title_settings); 47816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 48816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 49ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko public void testSettingsCancel() { 50ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko mMenuHelper.assertPressOptionsSettings(); 51816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko BySelector byChannelSourcesSidePanel = mSidePanelHelper 52ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko .bySidePanelTitled(R.string.settings_channel_source_item_customize_channels); 53816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertWaitForCondition(mDevice, Until.hasObject(byChannelSourcesSidePanel)); 54816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mDevice.pressBack(); 55816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertWaitForCondition(mDevice, Until.gone(byChannelSourcesSidePanel)); 56816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertHas(mDevice, Constants.MENU, false); 57816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 58816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 59816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void testClosedCaptionsCancel() { 60816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mMenuHelper.assertPressOptionsClosedCaptions(); 61816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko BySelector byClosedCaptionSidePanel = mSidePanelHelper 62816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko .bySidePanelTitled(R.string.side_panel_title_closed_caption); 63816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertWaitForCondition(mDevice, Until.hasObject(byClosedCaptionSidePanel)); 64816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mDevice.pressBack(); 65816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertWaitForCondition(mDevice, Until.gone(byClosedCaptionSidePanel)); 66816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertHas(mDevice, Constants.MENU, false); 67816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 68816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 69816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void testDisplayModeCancel() { 70816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko ChannelStateData data = new ChannelStateData(); 71816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko data.mTvTrackInfos.add(com.android.tv.testing.Constants.SVGA_VIDEO_TRACK); 72816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko data.mSelectedVideoTrackId = com.android.tv.testing.Constants.SVGA_VIDEO_TRACK 73816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko .getId(); 74816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko updateThenTune(data, TvTestInputConstants.CH_2); 75816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 76816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mMenuHelper.assertPressOptionsDisplayMode(); 7707b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko BySelector byDisplayModeSidePanel = mSidePanelHelper 78816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko .bySidePanelTitled(R.string.side_panel_title_display_mode); 7907b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(byDisplayModeSidePanel)); 80816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mDevice.pressBack(); 8107b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko assertWaitForCondition(mDevice, Until.gone(byDisplayModeSidePanel)); 82816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertHas(mDevice, Constants.MENU, false); 83816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 84816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 85816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void testMenu() { 86816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mDevice.pressMenu(); 87816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 88816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertWaitForCondition(mDevice, Until.hasObject(Constants.MENU)); 89816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertHas(mDevice, mMenuHelper.getByChannels(), true); 90816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 91816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 92816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void testMultiAudioCancel() { 93816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko ChannelStateData data = new ChannelStateData(); 94816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko data.mTvTrackInfos.add(com.android.tv.testing.Constants.GENERIC_AUDIO_TRACK); 95816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko updateThenTune(data, TvTestInputConstants.CH_2); 96816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 97816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mMenuHelper.assertPressOptionsMultiAudio(); 9807b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko BySelector byMultiAudioSidePanel = mSidePanelHelper 99816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko .bySidePanelTitled(R.string.side_panel_title_multi_audio); 10007b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(byMultiAudioSidePanel)); 101816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mDevice.pressBack(); 10207b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko assertWaitForCondition(mDevice, Until.gone(byMultiAudioSidePanel)); 103816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertHas(mDevice, Constants.MENU, false); 104816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 105816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 106816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void testPinCancel() { 107816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mMenuHelper.showMenu(); 108ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko mMenuHelper.assertPressOptionsSettings(); 109ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko assertWaitForCondition(mDevice, Until.hasObject(mBySettingsSidePanel)); 110ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko mSidePanelHelper.assertNavigateToItem(R.string.settings_parental_controls); 111ba5845f23b8fbc985890f892961abc8b39886611Nick Chalko mDevice.pressDPadCenter(); 112816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko DialogHelper dialogHelper = new DialogHelper(mDevice, mTargetResources); 113816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko dialogHelper.assertWaitForPinDialogOpen(); 114816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mDevice.pressBack(); 115816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko dialogHelper.assertWaitForPinDialogClose(); 116816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko assertHas(mDevice, Constants.MENU, false); 117816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 118816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko} 119