1cc671dd3caac1d0cbf3f6999ab063c9ff1f297b2Dake Gu// CHECKSTYLE:OFF Generated code 2b8706fd99b0a3724ed8e0c4b97bf37f3cdf389daDake Gu/* This file is auto-generated from BrowseFragmentTest.java. DO NOT MODIFY. */ 3255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 4255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu/* 5255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * Copyright (C) 2015 The Android Open Source Project 6255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * 7255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * Licensed under the Apache License, Version 2.0 (the "License"); 8255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * you may not use this file except in compliance with the License. 9255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * You may obtain a copy of the License at 10255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * 11255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * http://www.apache.org/licenses/LICENSE-2.0 12255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * 13255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * Unless required by applicable law or agreed to in writing, software 14255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * distributed under the License is distributed on an "AS IS" BASIS, 15255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * See the License for the specific language governing permissions and 17255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu * limitations under the License. 18255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu */ 19255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gupackage android.support.v17.leanback.app; 20255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 213103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport static org.junit.Assert.assertEquals; 223103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport static org.junit.Assert.assertNotNull; 233103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport static org.junit.Assert.assertNull; 243103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport static org.mockito.Matchers.any; 253103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport static org.mockito.Mockito.timeout; 263103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport static org.mockito.Mockito.verify; 273103f63e99d47573823957f7aa34308555873221Aurimas Liutikas 283103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport android.content.Intent; 2936d8c0834a50ef9aedb7a7e821dfcac152c0ab79Dake Guimport android.os.Build; 303103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport android.support.test.InstrumentationRegistry; 31754cb29c50f09a83251dd4bb633ba445b2411adbAurimas Liutikasimport android.support.test.filters.MediumTest; 323103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport android.support.test.rule.ActivityTestRule; 333103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport android.support.test.runner.AndroidJUnit4; 344ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Guimport android.support.v17.leanback.testutils.PollingCheck; 35fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Guimport android.support.v17.leanback.widget.ItemBridgeAdapter; 363103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport android.support.v17.leanback.widget.ListRowPresenter; 373103f63e99d47573823957f7aa34308555873221Aurimas Liutikasimport android.support.v17.leanback.widget.Presenter; 38fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Guimport android.support.v7.widget.RecyclerView; 39255e7911fa9ef664618b74bb9959e00479a9bec1Dake Guimport android.view.KeyEvent; 40fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Guimport android.view.View; 41255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 42439955872f652135e496c117b2aadaace9ae7274Dake Guimport org.junit.After; 43d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnataimport org.junit.Rule; 44d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnataimport org.junit.Test; 45d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnataimport org.junit.runner.RunWith; 46d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnataimport org.mockito.Mockito; 47d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata 48fad2335f169d36b7b6f2c0ec8ddfe6c0094c2072Aurimas Liutikas@MediumTest 49d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata@RunWith(AndroidJUnit4.class) 50d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnatapublic class BrowseSupportFragmentTest { 51255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 52fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu static final String TAG = "BrowseSupportFragmentTest"; 534ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu static final long WAIT_TRANSIITON_TIMEOUT = 10000; 540d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu 55d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata @Rule 563103f63e99d47573823957f7aa34308555873221Aurimas Liutikas public ActivityTestRule<BrowseSupportFragmentTestActivity> activityTestRule = 573103f63e99d47573823957f7aa34308555873221Aurimas Liutikas new ActivityTestRule<>(BrowseSupportFragmentTestActivity.class, false, false); 58d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata private BrowseSupportFragmentTestActivity mActivity; 59255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 60439955872f652135e496c117b2aadaace9ae7274Dake Gu @After 61439955872f652135e496c117b2aadaace9ae7274Dake Gu public void afterTest() throws Throwable { 62439955872f652135e496c117b2aadaace9ae7274Dake Gu activityTestRule.runOnUiThread(new Runnable() { 63e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas @Override 64439955872f652135e496c117b2aadaace9ae7274Dake Gu public void run() { 65439955872f652135e496c117b2aadaace9ae7274Dake Gu if (mActivity != null) { 66439955872f652135e496c117b2aadaace9ae7274Dake Gu mActivity.finish(); 67439955872f652135e496c117b2aadaace9ae7274Dake Gu mActivity = null; 68439955872f652135e496c117b2aadaace9ae7274Dake Gu } 69439955872f652135e496c117b2aadaace9ae7274Dake Gu } 70439955872f652135e496c117b2aadaace9ae7274Dake Gu }); 71439955872f652135e496c117b2aadaace9ae7274Dake Gu } 72439955872f652135e496c117b2aadaace9ae7274Dake Gu 734ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu void waitForEntranceTransitionFinished() { 744ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu PollingCheck.waitFor(WAIT_TRANSIITON_TIMEOUT, new PollingCheck.PollingCheckCondition() { 754ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu @Override 764ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu public boolean canProceed() { 7736d8c0834a50ef9aedb7a7e821dfcac152c0ab79Dake Gu if (Build.VERSION.SDK_INT >= 21) { 7836d8c0834a50ef9aedb7a7e821dfcac152c0ab79Dake Gu return mActivity.getBrowseTestSupportFragment() != null 7936d8c0834a50ef9aedb7a7e821dfcac152c0ab79Dake Gu && mActivity.getBrowseTestSupportFragment().mEntranceTransitionEnded; 8036d8c0834a50ef9aedb7a7e821dfcac152c0ab79Dake Gu } else { 8136d8c0834a50ef9aedb7a7e821dfcac152c0ab79Dake Gu // when entrance transition not supported, wait main fragment loaded. 8236d8c0834a50ef9aedb7a7e821dfcac152c0ab79Dake Gu return mActivity.getBrowseTestSupportFragment() != null 8336d8c0834a50ef9aedb7a7e821dfcac152c0ab79Dake Gu && mActivity.getBrowseTestSupportFragment().getMainFragment() != null; 8436d8c0834a50ef9aedb7a7e821dfcac152c0ab79Dake Gu } 854ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu } 864ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu }); 874ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu } 884ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu 894ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu void waitForHeaderTransitionFinished() { 904ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu View row = mActivity.getBrowseTestSupportFragment().getRowsSupportFragment().getRowViewHolder( 914ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu mActivity.getBrowseTestSupportFragment().getSelectedPosition()).view; 924ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu PollingCheck.waitFor(WAIT_TRANSIITON_TIMEOUT, new PollingCheck.ViewStableOnScreen(row)); 934ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu } 944ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu 95d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata @Test 96255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu public void testTwoBackKeysWithBackStack() throws Throwable { 97489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu final long dataLoadingDelay = 1000; 98d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata Intent intent = new Intent(); 99489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_LOAD_DATA_DELAY, dataLoadingDelay); 100255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_ADD_TO_BACKSTACK , true); 101d89094b31b55d54d2f3b1f502b15ddbff9e878caDake Gu mActivity = activityTestRule.launchActivity(intent); 102255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 1034ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu waitForEntranceTransitionFinished(); 104489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu 105489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu assertNotNull(mActivity.getBrowseTestSupportFragment().getMainFragment()); 106255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu sendKeys(KeyEvent.KEYCODE_DPAD_RIGHT); 1074ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu waitForHeaderTransitionFinished(); 108255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu sendKeys(KeyEvent.KEYCODE_BACK, KeyEvent.KEYCODE_BACK); 109255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 110255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 111d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata @Test 112255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu public void testTwoBackKeysWithoutBackStack() throws Throwable { 113489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu final long dataLoadingDelay = 1000; 114d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata Intent intent = new Intent(); 115489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_LOAD_DATA_DELAY, dataLoadingDelay); 116255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_ADD_TO_BACKSTACK , false); 117d89094b31b55d54d2f3b1f502b15ddbff9e878caDake Gu mActivity = activityTestRule.launchActivity(intent); 118255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 1194ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu waitForEntranceTransitionFinished(); 120489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu 121489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu assertNotNull(mActivity.getBrowseTestSupportFragment().getMainFragment()); 122255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu sendKeys(KeyEvent.KEYCODE_DPAD_RIGHT); 1234ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu waitForHeaderTransitionFinished(); 124255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu sendKeys(KeyEvent.KEYCODE_BACK, KeyEvent.KEYCODE_BACK); 125255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu } 126255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu 127d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata @Test 128489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu public void testPressRightBeforeMainFragmentCreated() throws Throwable { 129489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu final long dataLoadingDelay = 1000; 130489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu Intent intent = new Intent(); 131489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_LOAD_DATA_DELAY, dataLoadingDelay); 132489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_ADD_TO_BACKSTACK , false); 133d89094b31b55d54d2f3b1f502b15ddbff9e878caDake Gu mActivity = activityTestRule.launchActivity(intent); 134489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu 135489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu assertNull(mActivity.getBrowseTestSupportFragment().getMainFragment()); 136489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu sendKeys(KeyEvent.KEYCODE_DPAD_RIGHT); 137489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu } 138489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu 139489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu @Test 1400d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu public void testSelectCardOnARow() throws Throwable { 141d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata final int selectRow = 10; 142d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata final int selectItem = 20; 143d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata Intent intent = new Intent(); 144d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata final long dataLoadingDelay = 1000; 145d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_LOAD_DATA_DELAY, dataLoadingDelay); 1460d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_ADD_TO_BACKSTACK , true); 147d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata mActivity = activityTestRule.launchActivity(intent); 1480d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu 1494ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu waitForEntranceTransitionFinished(); 150d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata 151d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata Presenter.ViewHolderTask itemTask = Mockito.spy( 152d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata new ItemSelectionTask(mActivity, selectRow)); 153d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata 154d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata final ListRowPresenter.SelectItemViewHolderTask task = 155d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata new ListRowPresenter.SelectItemViewHolderTask(selectItem); 156d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata task.setItemTask(itemTask); 157d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata 158d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata mActivity.runOnUiThread(new Runnable() { 1590d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu @Override 1600d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu public void run() { 161d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata mActivity.getBrowseTestSupportFragment().setSelectedPosition(selectRow, true, task); 1620d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu } 1630d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu }); 1640d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu 165d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata verify(itemTask, timeout(5000).times(1)).run(any(Presenter.ViewHolder.class)); 166d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata 1672ad490fdf16accbe555e11a3a1ecdb26c9a87a66Dake Gu activityTestRule.runOnUiThread(new Runnable() { 1682ad490fdf16accbe555e11a3a1ecdb26c9a87a66Dake Gu @Override 1692ad490fdf16accbe555e11a3a1ecdb26c9a87a66Dake Gu public void run() { 1702ad490fdf16accbe555e11a3a1ecdb26c9a87a66Dake Gu ListRowPresenter.ViewHolder row = (ListRowPresenter.ViewHolder) mActivity 1712ad490fdf16accbe555e11a3a1ecdb26c9a87a66Dake Gu .getBrowseTestSupportFragment().getRowsSupportFragment().getRowViewHolder(selectRow); 1722ad490fdf16accbe555e11a3a1ecdb26c9a87a66Dake Gu assertNotNull(dumpRecyclerView(mActivity.getBrowseTestSupportFragment().getGridView()), row); 1732ad490fdf16accbe555e11a3a1ecdb26c9a87a66Dake Gu assertNotNull(row.getGridView()); 1742ad490fdf16accbe555e11a3a1ecdb26c9a87a66Dake Gu assertEquals(selectItem, row.getGridView().getSelectedPosition()); 1752ad490fdf16accbe555e11a3a1ecdb26c9a87a66Dake Gu } 1762ad490fdf16accbe555e11a3a1ecdb26c9a87a66Dake Gu }); 177d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata } 178d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata 17935d7a6c31606ed4ca38deda3cacae080a95c95c9susnata @Test 18042e7d6fafcde7bfe261dd7d8d75ee53ca0cd6790Aurimas Liutikas public void activityRecreate_notCrash() throws Throwable { 18135d7a6c31606ed4ca38deda3cacae080a95c95c9susnata final long dataLoadingDelay = 1000; 18235d7a6c31606ed4ca38deda3cacae080a95c95c9susnata Intent intent = new Intent(); 18335d7a6c31606ed4ca38deda3cacae080a95c95c9susnata intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_LOAD_DATA_DELAY, dataLoadingDelay); 18435d7a6c31606ed4ca38deda3cacae080a95c95c9susnata intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_ADD_TO_BACKSTACK , false); 18535d7a6c31606ed4ca38deda3cacae080a95c95c9susnata intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_SET_ADAPTER_AFTER_DATA_LOAD, true); 18635d7a6c31606ed4ca38deda3cacae080a95c95c9susnata mActivity = activityTestRule.launchActivity(intent); 18735d7a6c31606ed4ca38deda3cacae080a95c95c9susnata 1884ccbc343ff7e498b8fe9418cc8bd371be0d7acc5Dake Gu waitForEntranceTransitionFinished(); 18935d7a6c31606ed4ca38deda3cacae080a95c95c9susnata 19035d7a6c31606ed4ca38deda3cacae080a95c95c9susnata InstrumentationRegistry.getInstrumentation().callActivityOnRestart(mActivity); 19142e7d6fafcde7bfe261dd7d8d75ee53ca0cd6790Aurimas Liutikas activityTestRule.runOnUiThread(new Runnable() { 19235d7a6c31606ed4ca38deda3cacae080a95c95c9susnata @Override 19335d7a6c31606ed4ca38deda3cacae080a95c95c9susnata public void run() { 19435d7a6c31606ed4ca38deda3cacae080a95c95c9susnata mActivity.recreate(); 19535d7a6c31606ed4ca38deda3cacae080a95c95c9susnata } 19635d7a6c31606ed4ca38deda3cacae080a95c95c9susnata }); 19735d7a6c31606ed4ca38deda3cacae080a95c95c9susnata } 19835d7a6c31606ed4ca38deda3cacae080a95c95c9susnata 199f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu 200f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu @Test 201f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu public void lateLoadingHeaderDisabled() throws Throwable { 202f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu final long dataLoadingDelay = 1000; 203f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu Intent intent = new Intent(); 204f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_LOAD_DATA_DELAY, dataLoadingDelay); 205f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu intent.putExtra(BrowseSupportFragmentTestActivity.EXTRA_HEADERS_STATE, 206f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu BrowseSupportFragment.HEADERS_DISABLED); 207f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu mActivity = activityTestRule.launchActivity(intent); 208f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu waitForEntranceTransitionFinished(); 209f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu PollingCheck.waitFor(new PollingCheck.PollingCheckCondition() { 210f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu @Override 211f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu public boolean canProceed() { 212f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu return mActivity.getBrowseTestSupportFragment().getGridView() != null 213f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu && mActivity.getBrowseTestSupportFragment().getGridView().getChildCount() > 0; 214f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu } 215f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu }); 216f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu } 217f89c67eeac3938f245c858774cc7c9f87fb7487dDake Gu 218d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata private void sendKeys(int ...keys) { 219d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata for (int i = 0; i < keys.length; i++) { 220489c9a861b7cde47efcd5cf6351bc9696786ae41Dake Gu InstrumentationRegistry.getInstrumentation().sendKeyDownUpSync(keys[i]); 221d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata } 2220d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu } 2230d73d42df7cf4b325b8f49660e3326204915ce8fDake Gu 224d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata public static class ItemSelectionTask extends Presenter.ViewHolderTask { 225d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata 226d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata private final BrowseSupportFragmentTestActivity activity; 227d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata private final int expectedRow; 228d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata 2293bd47bb01a2654f8399e89d227d40f99393b1844Dake Gu public ItemSelectionTask(BrowseSupportFragmentTestActivity activity, int expectedRow) { 230d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata this.activity = activity; 231d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata this.expectedRow = expectedRow; 232d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata } 233d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata 234e2104f4b5c8e3ad63570306a25e61502dfe4c418Aurimas Liutikas @Override 235d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata public void run(Presenter.ViewHolder holder) { 236fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu android.util.Log.d(TAG, dumpRecyclerView(activity.getBrowseTestSupportFragment() 237fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu .getGridView())); 238fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu android.util.Log.d(TAG, "Row " + expectedRow + " " + activity.getBrowseTestSupportFragment() 239fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu .getRowsSupportFragment().getRowViewHolder(expectedRow), new Exception()); 240d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata } 241d447d1a3819bd66e2ab8c93c6947e982feb11bf7susnata } 242fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu 243fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu static String dumpRecyclerView(RecyclerView recyclerView) { 244fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu StringBuffer b = new StringBuffer(); 245fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu for (int i = 0; i < recyclerView.getChildCount(); i++) { 246fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu View child = recyclerView.getChildAt(i); 247fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu ItemBridgeAdapter.ViewHolder vh = (ItemBridgeAdapter.ViewHolder) 248fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu recyclerView.getChildViewHolder(child); 249fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu b.append("child").append(i).append(":").append(vh); 250fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu if (vh != null) { 251fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu b.append(",").append(vh.getViewHolder()); 252fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu } 253fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu b.append(";"); 254fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu } 255fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu return b.toString(); 256fe552f1dd322b48aeda32ae67ad9238e601d3cc3Dake Gu } 257255e7911fa9ef664618b74bb9959e00479a9bec1Dake Gu} 258