16ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko/* 26ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Copyright (C) 2017 The Android Open Source Project 36ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * 46ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Licensed under the Apache License, Version 2.0 (the "License"); 56ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * you may not use this file except in compliance with the License. 66ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * You may obtain a copy of the License at 76ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * 86ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * http://www.apache.org/licenses/LICENSE-2.0 96ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * 106ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * Unless required by applicable law or agreed to in writing, software 116ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * distributed under the License is distributed on an "AS IS" BASIS, 126ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * See the License for the specific language governing permissions and 146ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko * limitations under the License. 156ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko */ 166ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 176ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkopackage com.android.tv.tests.ui.sidepanel; 186ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 196ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport static com.android.tv.testing.uihelper.UiDeviceAsserts.assertWaitForCondition; 206ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 216ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport android.graphics.Point; 226ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport android.support.test.filters.LargeTest; 236ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport android.support.test.uiautomator.BySelector; 246ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport android.support.test.uiautomator.Direction; 256ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport android.support.test.uiautomator.UiObject2; 266ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport android.support.test.uiautomator.Until; 276ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 286ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.R; 296ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.testing.uihelper.Constants; 306ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoimport com.android.tv.tests.ui.LiveChannelsTestCase; 316ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 326ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko@LargeTest 336ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkopublic class CustomizeChannelListFragmentTest extends LiveChannelsTestCase { 346ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private BySelector mBySettingsSidePanel; 356ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private UiObject2 mTvView; 366ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private Point mNormalTvViewCenter; 376ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 386ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko @Override 396ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko protected void setUp() throws Exception { 406ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko super.setUp(); 416ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mLiveChannelsHelper.assertAppStarted(); 426ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mTvView = mDevice.findObject(Constants.TV_VIEW); 436ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mNormalTvViewCenter = mTvView.getVisibleCenter(); 446ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertNotNull(mNormalTvViewCenter); 456ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko pressKeysForChannel(com.android.tv.testing.testinput.TvTestInputConstants.CH_2); 466ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // Wait until KeypadChannelSwitchView closes. 476ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(Constants.CHANNEL_BANNER)); 486ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mBySettingsSidePanel = mSidePanelHelper.bySidePanelTitled( 496ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko R.string.side_panel_title_settings); 506ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 516ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 526ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private void assertShrunkenTvView(boolean shrunkenExpected) { 536ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko Point currentTvViewCenter = mTvView.getVisibleCenter(); 546ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko if (shrunkenExpected) { 556ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertFalse(mNormalTvViewCenter.equals(currentTvViewCenter)); 566ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } else { 576ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertTrue(mNormalTvViewCenter.equals(currentTvViewCenter)); 586ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 596ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 606ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 616ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public void testCustomizeChannelList_noraml() { 626ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // Show customize channel list fragment 636ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mMenuHelper.assertPressOptionsSettings(); 646ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(mBySettingsSidePanel)); 656ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mSidePanelHelper.assertNavigateToItem( 666ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko R.string.settings_channel_source_item_customize_channels); 676ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDevice.pressDPadCenter(); 686ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko BySelector bySidePanel = mSidePanelHelper.bySidePanelTitled( 696ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko R.string.side_panel_title_edit_channels_for_an_input); 706ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(bySidePanel)); 716ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertShrunkenTvView(true); 726ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 736ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // Show group by fragment 746ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mSidePanelHelper.assertNavigateToItem(R.string.edit_channels_item_group_by, Direction.UP); 756ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDevice.pressDPadCenter(); 766ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko bySidePanel = mSidePanelHelper.bySidePanelTitled(R.string.side_panel_title_group_by); 776ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(bySidePanel)); 786ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertShrunkenTvView(true); 796ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 806ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // Back to customize channel list fragment 816ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDevice.pressBack(); 826ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko bySidePanel = mSidePanelHelper.bySidePanelTitled( 836ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko R.string.side_panel_title_edit_channels_for_an_input); 846ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(bySidePanel)); 856ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertShrunkenTvView(true); 866ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 876ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // Return to the main menu. 886ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDevice.pressBack(); 896ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(mBySettingsSidePanel)); 906ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertShrunkenTvView(false); 916ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 926ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 936ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public void testCustomizeChannelList_timeout() { 946ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // Show customize channel list fragment 956ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mMenuHelper.assertPressOptionsSettings(); 966ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(mBySettingsSidePanel)); 976ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mSidePanelHelper.assertNavigateToItem( 986ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko R.string.settings_channel_source_item_customize_channels); 996ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDevice.pressDPadCenter(); 1006ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko BySelector bySidePanel = mSidePanelHelper.bySidePanelTitled( 1016ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko R.string.side_panel_title_edit_channels_for_an_input); 1026ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(bySidePanel)); 1036ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertShrunkenTvView(true); 1046ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1056ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // Show group by fragment 1066ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mSidePanelHelper.assertNavigateToItem(R.string.edit_channels_item_group_by, Direction.UP); 1076ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mDevice.pressDPadCenter(); 1086ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko bySidePanel = mSidePanelHelper.bySidePanelTitled(R.string.side_panel_title_group_by); 1096ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertWaitForCondition(mDevice, Until.hasObject(bySidePanel)); 1106ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertShrunkenTvView(true); 1116ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 1126ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko // Wait for time-out to return to the main menu. 1136ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertWaitForCondition(mDevice, Until.gone(bySidePanel), 1146ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mTargetResources.getInteger(R.integer.side_panel_show_duration)); 1156ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko assertShrunkenTvView(false); 1166ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 1176ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko} 118