Add title and icon in panel header

- Add getIcon() and getSubTitle() in PanelContent
- Check icon avalibility to decide header layout
- Add test cases

Bug: 147776885
Test: make -j42 RunSettingsRoboTests
Change-Id: Idb51e81359b6037ca9b90965dd9b370fc5e22c84
This commit is contained in:
timhypeng
2020-01-16 10:14:13 +08:00
parent 07416f4bee
commit adae7475b0
5 changed files with 142 additions and 3 deletions

View File

@@ -31,6 +31,7 @@ import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
@@ -41,10 +42,15 @@ import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.android.controller.ActivityController;
import java.util.Objects;
@RunWith(RobolectricTestRunner.class)
public class PanelFragmentTest {
private static final String SUBTITLE = "subtitle";
private Context mContext;
private PanelFragment mPanelFragment;
private FakeSettingsPanelActivity mActivity;
@@ -141,4 +147,38 @@ public class PanelFragmentTest {
0
);
}
@Test
public void supportIcon_displayIconHeaderLayout() {
mFakePanelContent.setIcon(R.drawable.ic_android);
mFakePanelContent.setSubTitle(SUBTITLE);
final ActivityController<FakeSettingsPanelActivity> activityController =
Robolectric.buildActivity(FakeSettingsPanelActivity.class);
activityController.setup();
final PanelFragment panelFragment = (PanelFragment)
Objects.requireNonNull(activityController
.get()
.getSupportFragmentManager()
.findFragmentById(R.id.main_content));
final View titleView = panelFragment.mLayoutView.findViewById(R.id.panel_title);
final LinearLayout panelHeader = panelFragment.mLayoutView.findViewById(R.id.panel_header);
final TextView headerTitle = panelFragment.mLayoutView.findViewById(R.id.header_title);
final TextView headerSubtitle = panelFragment.mLayoutView.findViewById(
R.id.header_subtitle);
// Check visibility
assertThat(panelHeader.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(titleView.getVisibility()).isEqualTo(View.GONE);
// Check content
assertThat(headerTitle.getText()).isEqualTo(FakePanelContent.TITLE);
assertThat(headerSubtitle.getText()).isEqualTo(SUBTITLE);
}
@Test
public void notSupportIcon_displayDefaultHeaderLayout() {
final View titleView = mPanelFragment.mLayoutView.findViewById(R.id.panel_title);
final View panelHeader = mPanelFragment.mLayoutView.findViewById(R.id.panel_header);
assertThat(panelHeader.getVisibility()).isEqualTo(View.GONE);
assertThat(titleView.getVisibility()).isEqualTo(View.VISIBLE);
}
}