Merge "Initial search bar implementation." into oc-dev

am: 91fe76263f

Change-Id: I7e6921134a239e136aaf6380ab4d7993e943435a
This commit is contained in:
Andrew Sapperstein
2017-06-01 20:01:49 +00:00
committed by android-build-merger
11 changed files with 243 additions and 42 deletions

View File

@@ -20,12 +20,15 @@ import android.app.Activity;
import android.app.ActivityManager;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.Menu;
import com.android.settings.search2.SearchActivity;
import com.android.settings.testutils.FakeFeatureFactory;
import org.junit.Before;
import org.junit.Test;
@@ -35,6 +38,7 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.util.ReflectionHelpers;
import static com.google.common.truth.Truth.assertThat;
@@ -138,4 +142,15 @@ public class SettingsActivityTest {
assertThat(mActivity.mDisplaySearch).isTrue();
}
@Test
public void testOnClick() {
doReturn("com.android.settings").when(mActivity).getPackageName();
mActivity.onClick(null);
Intent intent = ShadowApplication.getInstance().getNextStartedActivity();
assertThat(intent.getComponent()).isEqualTo(
new ComponentName("com.android.settings", SearchActivity.class.getName()));
}
}

View File

@@ -19,16 +19,23 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Icon;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.dashboard.conditional.Condition;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.SettingsShadowResources;
import com.android.settings.testutils.shadow.ShadowDynamicIndexableContentMonitor;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.Tile;
import org.junit.Before;
@@ -47,6 +54,7 @@ import java.util.List;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -99,6 +107,53 @@ public class DashboardAdapterTest {
when(mView.getTag()).thenReturn(mCondition);
}
@Test
public void testOnBindViewHolder_spacer_noSuggestions_noConditions() {
makeCategory();
DashboardAdapter.DashboardItemHolder holder = setupSpacer();
mDashboardAdapter.onBindViewHolder(holder, 0);
assertThat(holder.itemView.getBackground()).isNull();
}
@Test
public void testOnBindViewHolder_spacer_suggestion_noConditions() {
setupSuggestions(makeSuggestions("pkg1"));
makeCategory();
DashboardAdapter.DashboardItemHolder holder = setupSpacer();
mDashboardAdapter.onBindViewHolder(holder, 0);
assertThat(holder.itemView.getBackground()).isNotNull();
assertThat(holder.itemView.getBackground()).isInstanceOf(ColorDrawable.class);
}
@Test
public void testOnBindViewHolder_spacer_noSuggestion_condition() {
makeCondition();
makeCategory();
DashboardAdapter.DashboardItemHolder holder = setupSpacer();
mDashboardAdapter.onBindViewHolder(holder, 0);
assertThat(holder.itemView.getBackground()).isNotNull();
assertThat(holder.itemView.getBackground()).isInstanceOf(ColorDrawable.class);
}
@Test
public void testOnBindViewHolder_spacer_suggestion_condition() {
setupSuggestions(makeSuggestions("pkg1"));
makeCondition();
makeCategory();
DashboardAdapter.DashboardItemHolder holder = setupSpacer();
mDashboardAdapter.onBindViewHolder(holder, 0);
assertThat(holder.itemView.getBackground()).isNotNull();
assertThat(holder.itemView.getBackground()).isInstanceOf(ColorDrawable.class);
}
@Test
public void testSetConditions_AfterSetConditions_ExpandedConditionNull() {
mDashboardAdapter.onExpandClick(mView);
@@ -109,7 +164,7 @@ public class DashboardAdapterTest {
@Test
public void testSuggestionsLogs_NotExpanded() {
setUpSuggestions(makeSuggestions(new String[]{"pkg1", "pkg2", "pkg3"}));
setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3"));
verify(mFactory.metricsFeatureProvider, times(2)).action(
any(Context.class), mActionCategoryCaptor.capture(),
mActionPackageCaptor.capture());
@@ -124,7 +179,7 @@ public class DashboardAdapterTest {
@Test
public void testSuggestionsLogs_NotExpandedAndPaused() {
setUpSuggestions(makeSuggestions(new String[]{"pkg1", "pkg2", "pkg3"}));
setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3"));
mDashboardAdapter.onPause();
verify(mFactory.metricsFeatureProvider, times(4)).action(
any(Context.class), mActionCategoryCaptor.capture(),
@@ -141,7 +196,7 @@ public class DashboardAdapterTest {
@Test
public void testSuggestionsLogs_Expanded() {
setUpSuggestions(makeSuggestions(new String[]{"pkg1", "pkg2", "pkg3"}));
setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3"));
mDashboardAdapter.onBindSuggestionHeader(
mSuggestionHolder, mSuggestionHeaderData);
mSuggestionHolder.itemView.callOnClick();
@@ -160,7 +215,7 @@ public class DashboardAdapterTest {
@Test
public void testSuggestionsLogs_ExpandedAndPaused() {
setUpSuggestions(makeSuggestions(new String[]{"pkg1", "pkg2", "pkg3"}));
setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3"));
mDashboardAdapter.onBindSuggestionHeader(
mSuggestionHolder, mSuggestionHeaderData);
mSuggestionHolder.itemView.callOnClick();
@@ -183,7 +238,7 @@ public class DashboardAdapterTest {
@Test
public void testSuggestionsLogs_ExpandedAfterPause() {
setUpSuggestions(makeSuggestions(new String[]{"pkg1", "pkg2", "pkg3"}));
setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3"));
mDashboardAdapter.onPause();
mDashboardAdapter.onBindSuggestionHeader(
mSuggestionHolder, mSuggestionHeaderData);
@@ -208,7 +263,7 @@ public class DashboardAdapterTest {
@Test
public void testSuggestionsLogs_ExpandedAfterPauseAndPausedAgain() {
setUpSuggestions(makeSuggestions(new String[]{"pkg1", "pkg2", "pkg3"}));
setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3"));
mDashboardAdapter.onPause();
mDashboardAdapter.onBindSuggestionHeader(
mSuggestionHolder, mSuggestionHeaderData);
@@ -237,7 +292,7 @@ public class DashboardAdapterTest {
@Test
public void testSuggestionsLogs_ExpandedWithLessThanDefaultShown() {
setUpSuggestions(makeSuggestions(new String[]{"pkg1"}));
setupSuggestions(makeSuggestions("pkg1"));
mDashboardAdapter.onBindSuggestionHeader(
mSuggestionHolder, mSuggestionHeaderData);
mSuggestionHolder.itemView.callOnClick();
@@ -254,7 +309,7 @@ public class DashboardAdapterTest {
@Test
public void testSuggestionsLogs_ExpandedWithLessThanDefaultShownAndPaused() {
setUpSuggestions(makeSuggestions(new String[]{"pkg1"}));
setupSuggestions(makeSuggestions("pkg1"));
mDashboardAdapter.onBindSuggestionHeader(
mSuggestionHolder, mSuggestionHeaderData);
mSuggestionHolder.itemView.callOnClick();
@@ -273,7 +328,7 @@ public class DashboardAdapterTest {
@Test
public void testSuggestionsLogs_ExpandedWithLessThanDefaultShownAfterPause() {
setUpSuggestions(makeSuggestions(new String[]{"pkg1"}));
setupSuggestions(makeSuggestions("pkg1"));
mDashboardAdapter.onPause();
mDashboardAdapter.onBindSuggestionHeader(
mSuggestionHolder, mSuggestionHeaderData);
@@ -293,7 +348,7 @@ public class DashboardAdapterTest {
@Test
public void testSuggestionsLogs_ExpandedWithLessThanDefaultShownAfterPauseAndPausedAgain() {
setUpSuggestions(makeSuggestions(new String[]{"pkg1"}));
setupSuggestions(makeSuggestions("pkg1"));
mDashboardAdapter.onPause();
mDashboardAdapter.onBindSuggestionHeader(
mSuggestionHolder, mSuggestionHeaderData);
@@ -313,7 +368,7 @@ public class DashboardAdapterTest {
assertThat(mActionCategoryCaptor.getAllValues().toArray()).isEqualTo(expectedActions);
}
private List<Tile> makeSuggestions(String[] pkgNames) {
private List<Tile> makeSuggestions(String... pkgNames) {
final List<Tile> suggestions = new ArrayList<>();
for (String pkgName : pkgNames) {
Tile suggestion = new Tile();
@@ -324,11 +379,31 @@ public class DashboardAdapterTest {
return suggestions;
}
private void setUpSuggestions(List<Tile> suggestions) {
private void setupSuggestions(List<Tile> suggestions) {
mDashboardAdapter.setCategoriesAndSuggestions(new ArrayList<>(), suggestions);
mSuggestionHolder = mDashboardAdapter.onCreateViewHolder(
new FrameLayout(RuntimeEnvironment.application),
mDashboardAdapter.getItemViewType(0));
mDashboardAdapter.getItemViewType(1));
}
private void makeCondition() {
final List<Condition> conditions = new ArrayList<>();
Condition condition = mock(Condition.class);
when(condition.shouldShow()).thenReturn(true);
conditions.add(condition);
mDashboardAdapter.setConditions(conditions);
}
private void makeCategory() {
List<DashboardCategory> categories = new ArrayList<>();
categories.add(new DashboardCategory());
mDashboardAdapter.setCategory(categories);
}
private DashboardAdapter.DashboardItemHolder setupSpacer() {
Context context = RuntimeEnvironment.application;
final View view = LayoutInflater.from(context)
.inflate(R.layout.dashboard_header_spacer, new LinearLayout(context), false);
return new DashboardAdapter.DashboardItemHolder(view);
}
}

View File

@@ -112,7 +112,7 @@ public class DashboardDataTest {
public void testBuildItemsData_containsAllData() {
final DashboardData.SuggestionHeaderData data =
new DashboardData.SuggestionHeaderData(false, 1, 0);
final Object[] expectedObjects = {mTestCondition, null, data, mTestSuggestion,
final Object[] expectedObjects = {null, mTestCondition, null, data, mTestSuggestion,
mDashboardCategory, mTestCategoryTile};
final int expectedSize = expectedObjects.length;
@@ -171,7 +171,7 @@ public class DashboardDataTest {
@Test
public void testDiffUtil_DataEqual_noResultData() {
List<ListUpdateResult.ResultData> testResultData = new ArrayList<>();
testDiffUtil(mDashboardDataWithOneConditions,
testDiffUtil(mDashboardDataWithOneConditions,
mDashboardDataWithOneConditions, testResultData);
}
@@ -180,7 +180,7 @@ public class DashboardDataTest {
//Build testResultData
final List<ListUpdateResult.ResultData> testResultData = new ArrayList<>();
testResultData.add(new ListUpdateResult.ResultData(
ListUpdateResult.ResultData.TYPE_OPERATION_INSERT, 1, 1));
ListUpdateResult.ResultData.TYPE_OPERATION_INSERT, 2, 1));
testDiffUtil(mDashboardDataWithOneConditions,
mDashboardDataWithTwoConditions, testResultData);
@@ -191,7 +191,7 @@ public class DashboardDataTest {
//Build testResultData
final List<ListUpdateResult.ResultData> testResultData = new ArrayList<>();
testResultData.add(new ListUpdateResult.ResultData(
ListUpdateResult.ResultData.TYPE_OPERATION_REMOVE, 0, 6));
ListUpdateResult.ResultData.TYPE_OPERATION_REMOVE, 1, 6));
testDiffUtil(mDashboardDataWithOneConditions, mDashboardDataWithNoItems, testResultData);
}
@@ -203,8 +203,8 @@ public class DashboardDataTest {
mDashboardDataWithOneConditions.getItemList(),
mDashboardDataWithOneConditions.getItemList());
// Item in position 0 is condition card, which payload should not be null
assertThat(callback.getChangePayload(0, 0)).isNotEqualTo(null);
// Item in position 1 is condition card, which payload should not be null
assertThat(callback.getChangePayload(1, 1)).isNotNull();
}
@Test
@@ -214,9 +214,9 @@ public class DashboardDataTest {
mDashboardDataWithOneConditions.getItemList(),
mDashboardDataWithOneConditions.getItemList());
// Only item in position 0 is condition card, so others' payload should be null
for (int i = 1; i < mDashboardDataWithOneConditions.getItemList().size(); i++) {
assertThat(callback.getChangePayload(i, i)).isEqualTo(null);
// Position 0 is spacer, 1 is condition card, so others' payload should be null
for (int i = 2; i < mDashboardDataWithOneConditions.getItemList().size(); i++) {
assertThat(callback.getChangePayload(i, i)).isNull();
}
}
@@ -356,6 +356,11 @@ public class DashboardDataTest {
return arg2 - resultData.arg2;
}
@Override
public String toString() {
return "op:" + operation + ",arg1:" + arg1 + ",arg2:" + arg2;
}
}
}
}