diff --git a/res/layout/settings_entity_header.xml b/res/layout/settings_entity_header.xml index 2db23e40ac8..72b688b2f0f 100644 --- a/res/layout/settings_entity_header.xml +++ b/res/layout/settings_entity_header.xml @@ -15,102 +15,96 @@ limitations under the License. --> - + + android:paddingStart="?android:attr/listPreferredItemPaddingStart" + android:paddingEnd="0dp" + android:paddingTop="24dp" + android:paddingBottom="24dp"> - - + + + + + + + + + + - + android:layout_toEndOf="@id/entity_header_icon" + android:layout_toStartOf="@id/entity_header_links" + android:paddingStart="24dp" + android:paddingEnd="24dp" + android:orientation="vertical"> - - - - - - - - - + android:singleLine="false" + android:ellipsize="marquee" + android:gravity="start" + android:textDirection="locale" + android:paddingTop="8dp" /> - + - + - + - - - - - \ No newline at end of file + diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml index 1eea8dda464..273b80d2d82 100644 --- a/res/xml/development_prefs.xml +++ b/res/xml/development_prefs.xml @@ -412,12 +412,12 @@ android:entries="@array/app_process_limit_entries" android:entryValues="@array/app_process_limit_values" /> - + findPersistentPreferredActivities(@UserIdInt int userId, Intent[] intents); diff --git a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java index a74479239ce..cdbbeb6cf65 100644 --- a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java +++ b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java @@ -24,7 +24,6 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.os.RemoteException; -import android.os.UserHandle; import android.os.UserManager; import android.util.ArraySet; import android.view.View; @@ -54,8 +53,8 @@ public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvide } @Override - public AppHeaderController newAppHeaderController(Fragment fragment, View appHeader) { - return new AppHeaderController(mContext, fragment, appHeader); + public EntityHeaderController newAppHeaderController(Fragment fragment, View appHeader) { + return new EntityHeaderController(mContext, fragment, appHeader); } @Override diff --git a/src/com/android/settings/applications/AppHeaderController.java b/src/com/android/settings/applications/EntityHeaderController.java similarity index 79% rename from src/com/android/settings/applications/AppHeaderController.java rename to src/com/android/settings/applications/EntityHeaderController.java index c638d351f0e..98658b13ef4 100644 --- a/src/com/android/settings/applications/AppHeaderController.java +++ b/src/com/android/settings/applications/EntityHeaderController.java @@ -47,7 +47,7 @@ import com.android.settingslib.applications.ApplicationsState; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -public class AppHeaderController { +public class EntityHeaderController { @IntDef({ActionType.ACTION_NONE, ActionType.ACTION_APP_INFO, @@ -68,7 +68,7 @@ public class AppHeaderController { private final Context mContext; private final Fragment mFragment; private final int mMetricsCategory; - private final View mAppHeader; + private final View mHeader; private Drawable mIcon; private CharSequence mLabel; @@ -78,84 +78,84 @@ public class AppHeaderController { @UserIdInt private int mUid = UserHandle.USER_NULL; @ActionType - private int mLeftAction; + private int mAction1; @ActionType - private int mRightAction; + private int mAction2; private boolean mIsInstantApp; - public AppHeaderController(Context context, Fragment fragment, View appHeader) { + public EntityHeaderController(Context context, Fragment fragment, View header) { mContext = context; mFragment = fragment; mMetricsCategory = FeatureFactory.getFactory(context).getMetricsFeatureProvider() .getMetricsCategory(fragment); - if (appHeader != null) { - mAppHeader = appHeader; + if (header != null) { + mHeader = header; } else { - mAppHeader = LayoutInflater.from(fragment.getContext()) + mHeader = LayoutInflater.from(fragment.getContext()) .inflate(R.layout.settings_entity_header, null /* root */); } } - public AppHeaderController setIcon(Drawable icon) { + public EntityHeaderController setIcon(Drawable icon) { if (icon != null) { mIcon = icon.getConstantState().newDrawable(mContext.getResources()); } return this; } - public AppHeaderController setIcon(ApplicationsState.AppEntry appEntry) { + public EntityHeaderController setIcon(ApplicationsState.AppEntry appEntry) { if (appEntry.icon != null) { mIcon = appEntry.icon.getConstantState().newDrawable(mContext.getResources()); } return this; } - public AppHeaderController setLabel(CharSequence label) { + public EntityHeaderController setLabel(CharSequence label) { mLabel = label; return this; } - public AppHeaderController setLabel(ApplicationsState.AppEntry appEntry) { + public EntityHeaderController setLabel(ApplicationsState.AppEntry appEntry) { mLabel = appEntry.label; return this; } - public AppHeaderController setSummary(CharSequence summary) { + public EntityHeaderController setSummary(CharSequence summary) { mSummary = summary; return this; } - public AppHeaderController setSummary(PackageInfo packageInfo) { + public EntityHeaderController setSummary(PackageInfo packageInfo) { if (packageInfo != null) { mSummary = packageInfo.versionName; } return this; } - public AppHeaderController setButtonActions(@ActionType int leftAction, - @ActionType int rightAction) { - mLeftAction = leftAction; - mRightAction = rightAction; + public EntityHeaderController setButtonActions(@ActionType int action1, + @ActionType int action2) { + mAction1 = action1; + mAction2 = action2; return this; } - public AppHeaderController setPackageName(String packageName) { + public EntityHeaderController setPackageName(String packageName) { mPackageName = packageName; return this; } - public AppHeaderController setUid(int uid) { + public EntityHeaderController setUid(int uid) { mUid = uid; return this; } - public AppHeaderController setAppNotifPrefIntent(Intent appNotifPrefIntent) { + public EntityHeaderController setAppNotifPrefIntent(Intent appNotifPrefIntent) { mAppNotifPrefIntent = appNotifPrefIntent; return this; } - public AppHeaderController setIsInstantApp(boolean isInstantApp) { + public EntityHeaderController setIsInstantApp(boolean isInstantApp) { this.mIsInstantApp = isInstantApp; return this; } @@ -172,41 +172,41 @@ public class AppHeaderController { } /** - * Done mutating appheader, rebinds everything (optionally skip rebinding buttons). + * Done mutating entity header, rebinds everything (optionally skip rebinding buttons). */ public View done(Activity activity, boolean rebindActions) { styleActionBar(activity); - ImageView iconView = mAppHeader.findViewById(R.id.app_detail_icon); + ImageView iconView = mHeader.findViewById(R.id.entity_header_icon); if (iconView != null) { iconView.setImageDrawable(mIcon); } - setText(R.id.app_detail_title, mLabel); - setText(R.id.app_detail_summary, mSummary); + setText(R.id.entity_header_title, mLabel); + setText(R.id.entity_header_summary, mSummary); if (mIsInstantApp) { setText(R.id.install_type, - mAppHeader.getResources().getString(R.string.install_type_instant)); + mHeader.getResources().getString(R.string.install_type_instant)); } if (rebindActions) { - bindAppHeaderButtons(); + bindHeaderButtons(); } - return mAppHeader; + return mHeader; } /** * Only binds app header with button actions. */ - public AppHeaderController bindAppHeaderButtons() { - ImageButton leftButton = mAppHeader.findViewById(R.id.left_button); - ImageButton rightButton = mAppHeader.findViewById(R.id.right_button); + public EntityHeaderController bindHeaderButtons() { + ImageButton button1 = mHeader.findViewById(android.R.id.button1); + ImageButton button2 = mHeader.findViewById(android.R.id.button2); - bindButton(leftButton, mLeftAction); - bindButton(rightButton, mRightAction); + bindButton(button1, mAction1); + bindButton(button2, mAction2); return this; } - public AppHeaderController styleActionBar(Activity activity) { + public EntityHeaderController styleActionBar(Activity activity) { if (activity == null) { Log.w(TAG, "No activity, cannot style actionbar."); return this; @@ -224,7 +224,7 @@ public class AppHeaderController { } /** - * Done mutating appheader, rebinds everything. + * Done mutating entity header, rebinds everything. */ @VisibleForTesting View done(Activity activity) { @@ -289,7 +289,7 @@ public class AppHeaderController { } private void setText(@IdRes int id, CharSequence text) { - TextView textView = mAppHeader.findViewById(id); + TextView textView = mHeader.findViewById(id); if (textView != null) { textView.setText(text); textView.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE); diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index 3b82b4cf1f8..1ff4a03073f 100755 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -37,7 +37,6 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ResolveInfo; import android.content.pm.UserInfo; import android.content.res.Resources; -import android.graphics.drawable.Drawable; import android.icu.text.ListFormatter; import android.net.INetworkStatsService; import android.net.INetworkStatsSession; @@ -60,16 +59,12 @@ import android.text.TextUtils; import android.text.format.DateUtils; import android.text.format.Formatter; import android.util.Log; -import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.view.ViewGroup; import android.webkit.IWebViewUpdateService; import android.widget.Button; -import android.widget.ImageView; -import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.os.BatterySipper; @@ -413,12 +408,12 @@ public class InstalledAppDetails extends AppInfoBase mActionButtons = (LayoutPreference) findPreference(KEY_ACTION_BUTTONS); FeatureFactory.getFactory(activity) .getApplicationFeatureProvider(activity) - .newAppHeaderController(this, mHeader.findViewById(R.id.app_snippet)) + .newAppHeaderController(this, mHeader.findViewById(R.id.entity_header)) .setPackageName(mPackageName) - .setButtonActions(AppHeaderController.ActionType.ACTION_APP_PREFERENCE, - AppHeaderController.ActionType.ACTION_NONE) + .setButtonActions(EntityHeaderController.ActionType.ACTION_APP_PREFERENCE, + EntityHeaderController.ActionType.ACTION_NONE) .styleActionBar(activity) - .bindAppHeaderButtons(); + .bindHeaderButtons(); prepareUninstallAndStop(); mNotificationPreference = findPreference(KEY_NOTIFICATION); @@ -584,7 +579,7 @@ public class InstalledAppDetails extends AppInfoBase // Utility method to set application label and icon. private void setAppLabelAndIcon(PackageInfo pkgInfo) { - final View appSnippet = mHeader.findViewById(R.id.app_snippet); + final View appSnippet = mHeader.findViewById(R.id.entity_header); mState.ensureIcon(mAppEntry); final Activity activity = getActivity(); final boolean isInstantApp = AppUtils.isInstant(mPackageInfo.applicationInfo); @@ -1245,32 +1240,6 @@ public class InstalledAppDetails extends AppInfoBase } } - /** - * @deprecated app info pages should use {@link AppHeaderController} to show the app header. - */ - public static void setupAppSnippet(View appSnippet, CharSequence label, Drawable icon, - CharSequence versionName) { - LayoutInflater.from(appSnippet.getContext()).inflate(R.layout.widget_text_views, - (ViewGroup) appSnippet.findViewById(android.R.id.widget_frame)); - - ImageView iconView = (ImageView) appSnippet.findViewById(R.id.app_detail_icon); - iconView.setImageDrawable(icon); - // Set application name. - TextView labelView = (TextView) appSnippet.findViewById(R.id.app_detail_title); - labelView.setText(label); - // Version number of application - TextView appVersion = (TextView) appSnippet.findViewById(R.id.widget_text1); - - if (!TextUtils.isEmpty(versionName)) { - appVersion.setSelected(true); - appVersion.setVisibility(View.VISIBLE); - appVersion.setText(appSnippet.getContext().getString(R.string.version_text, - String.valueOf(versionName))); - } else { - appVersion.setVisibility(View.INVISIBLE); - } - } - public static NetworkTemplate getTemplate(Context context) { if (DataUsageList.hasReadyMobileRadio(context)) { return NetworkTemplate.buildTemplateMobileWildcard(); diff --git a/src/com/android/settings/applications/ProcessStatsDetail.java b/src/com/android/settings/applications/ProcessStatsDetail.java index 6c0928c1e6e..0313239b288 100644 --- a/src/com/android/settings/applications/ProcessStatsDetail.java +++ b/src/com/android/settings/applications/ProcessStatsDetail.java @@ -16,7 +16,7 @@ package com.android.settings.applications; -import static com.android.settings.applications.AppHeaderController.ActionType; +import static com.android.settings.applications.EntityHeaderController.ActionType; import android.app.Activity; import android.app.ActivityManager; diff --git a/src/com/android/settings/datausage/AppDataUsage.java b/src/com/android/settings/datausage/AppDataUsage.java index 3d2db9650b4..0aa08422cb8 100644 --- a/src/com/android/settings/datausage/AppDataUsage.java +++ b/src/com/android/settings/datausage/AppDataUsage.java @@ -41,7 +41,7 @@ import android.widget.AdapterView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; -import com.android.settings.applications.AppHeaderController; +import com.android.settings.applications.EntityHeaderController; import com.android.settings.applications.AppInfoBase; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.AppItem; @@ -330,9 +330,9 @@ public class AppDataUsage extends DataUsageBase implements Preference.OnPreferen .getApplicationFeatureProvider(activity) .newAppHeaderController(this, null /* appHeader */) .setButtonActions(showInfoButton - ? AppHeaderController.ActionType.ACTION_APP_INFO - : AppHeaderController.ActionType.ACTION_NONE, - AppHeaderController.ActionType.ACTION_NONE) + ? EntityHeaderController.ActionType.ACTION_APP_INFO + : EntityHeaderController.ActionType.ACTION_NONE, + EntityHeaderController.ActionType.ACTION_NONE) .setIcon(mIcon) .setLabel(mLabel) .setPackageName(pkg) diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java index 37e685dc6a6..456a5112547 100644 --- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java @@ -37,7 +37,7 @@ import com.android.internal.util.ArrayUtils; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.Utils; -import com.android.settings.applications.AppHeaderController; +import com.android.settings.applications.EntityHeaderController; import com.android.settings.applications.LayoutPreference; import com.android.settings.core.PreferenceController; import com.android.settings.dashboard.DashboardFragment; @@ -180,14 +180,14 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements @VisibleForTesting void initHeader() { - final View appSnippet = mHeaderPreference.findViewById(R.id.app_snippet); + final View appSnippet = mHeaderPreference.findViewById(R.id.entity_header); final Activity context = getActivity(); final Bundle bundle = getArguments(); - AppHeaderController controller = FeatureFactory.getFactory(context) + EntityHeaderController controller = FeatureFactory.getFactory(context) .getApplicationFeatureProvider(context) .newAppHeaderController(this, appSnippet) - .setButtonActions(AppHeaderController.ActionType.ACTION_NONE, - AppHeaderController.ActionType.ACTION_NONE); + .setButtonActions(EntityHeaderController.ActionType.ACTION_NONE, + EntityHeaderController.ActionType.ACTION_NONE); if (mAppEntry == null) { controller.setLabel(bundle.getString(EXTRA_LABEL)); diff --git a/src/com/android/settings/notification/AppNotificationSettings.java b/src/com/android/settings/notification/AppNotificationSettings.java index 03a71ca705b..3a4e1c91a17 100644 --- a/src/com/android/settings/notification/AppNotificationSettings.java +++ b/src/com/android/settings/notification/AppNotificationSettings.java @@ -16,10 +16,6 @@ package com.android.settings.notification; -import static android.app.NotificationManager.IMPORTANCE_LOW; -import static android.app.NotificationManager.IMPORTANCE_NONE; -import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED; - import android.app.Activity; import android.app.NotificationChannel; import android.app.NotificationChannelGroup; @@ -41,8 +37,8 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.AppHeader; import com.android.settings.R; import com.android.settings.Utils; -import com.android.settings.applications.AppHeaderController; import com.android.settings.applications.AppInfoBase; +import com.android.settings.applications.EntityHeaderController; import com.android.settings.applications.LayoutPreference; import com.android.settings.notification.NotificationBackend.AppRow; import com.android.settings.overlay.FeatureFactory; @@ -51,12 +47,15 @@ import com.android.settings.widget.SwitchBar; import com.android.settingslib.RestrictedSwitchPreference; import com.android.settingslib.widget.FooterPreference; -import java.text.Collator; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; +import static android.app.NotificationManager.IMPORTANCE_LOW; +import static android.app.NotificationManager.IMPORTANCE_NONE; +import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED; + /** These settings are per app, so should not be returned in global search results. */ public class AppNotificationSettings extends NotificationSettingsBase { private static final String TAG = "AppNotificationSettings"; @@ -139,8 +138,8 @@ public class AppNotificationSettings extends NotificationSettingsBase { .setLabel(mAppRow.label) .setPackageName(mAppRow.pkg) .setUid(mAppRow.uid) - .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO, - AppHeaderController.ActionType.ACTION_NOTIF_PREFERENCE) + .setButtonActions(EntityHeaderController.ActionType.ACTION_APP_INFO, + EntityHeaderController.ActionType.ACTION_NOTIF_PREFERENCE) .done(activity, getPrefContext()); pref.setKey(KEY_HEADER); getPreferenceScreen().addPreference(pref); diff --git a/src/com/android/settings/notification/ChannelNotificationSettings.java b/src/com/android/settings/notification/ChannelNotificationSettings.java index 0ce9ec3e7ef..6984c212601 100644 --- a/src/com/android/settings/notification/ChannelNotificationSettings.java +++ b/src/com/android/settings/notification/ChannelNotificationSettings.java @@ -24,10 +24,8 @@ import android.app.Activity; import android.app.NotificationChannel; import android.app.NotificationManager; import android.content.Intent; -import android.content.pm.UserInfo; import android.net.Uri; import android.os.Bundle; -import android.os.UserHandle; import android.provider.Settings; import android.support.v7.preference.Preference; import android.text.TextUtils; @@ -38,12 +36,11 @@ import android.view.View; import android.widget.Switch; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.internal.widget.LockPatternUtils; import com.android.settings.AppHeader; import com.android.settings.R; import com.android.settings.RingtonePreference; import com.android.settings.Utils; -import com.android.settings.applications.AppHeaderController; +import com.android.settings.applications.EntityHeaderController; import com.android.settings.applications.AppInfoBase; import com.android.settings.applications.LayoutPreference; import com.android.settings.overlay.FeatureFactory; @@ -122,8 +119,8 @@ public class ChannelNotificationSettings extends NotificationSettingsBase { .setSummary(mAppRow.label) .setPackageName(mAppRow.pkg) .setUid(mAppRow.uid) - .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO, - AppHeaderController.ActionType.ACTION_NOTIF_PREFERENCE) + .setButtonActions(EntityHeaderController.ActionType.ACTION_APP_INFO, + EntityHeaderController.ActionType.ACTION_NOTIF_PREFERENCE) .done(activity, getPrefContext()); getPreferenceScreen().addPreference(pref); } diff --git a/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java b/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java index 68c153cb6e4..c8a782e9343 100644 --- a/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java +++ b/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java @@ -68,12 +68,12 @@ public class AppInfoWithHeaderTest { @Test public void testAppHeaderIsAdded() { - final AppHeaderController appHeaderController = new AppHeaderController( + final EntityHeaderController entityHeaderController = new EntityHeaderController( ShadowApplication.getInstance().getApplicationContext(), mAppInfoWithHeader, null); when(mFactory.applicationFeatureProvider.newAppHeaderController(mAppInfoWithHeader, null)) - .thenReturn(appHeaderController); + .thenReturn(entityHeaderController); mAppInfoWithHeader.onActivityCreated(null); verify(mAppInfoWithHeader.mScreen).addPreference(any(LayoutPreference.class)); diff --git a/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java b/tests/robotests/src/com/android/settings/applications/EntityHeaderControllerTest.java similarity index 68% rename from tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java rename to tests/robotests/src/com/android/settings/applications/EntityHeaderControllerTest.java index 2cdafe8fcf6..e2e0fa0c027 100644 --- a/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/EntityHeaderControllerTest.java @@ -17,14 +17,6 @@ package com.android.settings.applications; -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyInt; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; @@ -53,9 +45,17 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) -public class AppHeaderControllerTest { +public class EntityHeaderControllerTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Context mContext; @@ -67,7 +67,7 @@ public class AppHeaderControllerTest { private Context mShadowContext; private LayoutInflater mLayoutInflater; private PackageInfo mInfo; - private AppHeaderController mController; + private EntityHeaderController mController; @Before @@ -82,7 +82,7 @@ public class AppHeaderControllerTest { @Test public void testBuildView_constructedWithoutView_shouldCreateNewView() { - mController = new AppHeaderController(mShadowContext, mFragment, null); + mController = new EntityHeaderController(mShadowContext, mFragment, null); View view = mController.done(mActivity); assertThat(view).isNotNull(); @@ -90,7 +90,7 @@ public class AppHeaderControllerTest { @Test public void testBuildView_withContext_shouldBuildPreference() { - mController = new AppHeaderController(mShadowContext, mFragment, null); + mController = new EntityHeaderController(mShadowContext, mFragment, null); Preference preference = mController.done(mActivity, mShadowContext); assertThat(preference instanceof LayoutPreference).isTrue(); @@ -99,7 +99,7 @@ public class AppHeaderControllerTest { @Test public void testBuildView_constructedWithView_shouldReturnSameView() { View inputView = mLayoutInflater.inflate(R.layout.settings_entity_header, null /* root */); - mController = new AppHeaderController(mShadowContext, mFragment, inputView); + mController = new EntityHeaderController(mShadowContext, mFragment, inputView); View view = mController.done(mActivity); assertThat(view).isSameAs(inputView); @@ -108,11 +108,12 @@ public class AppHeaderControllerTest { @Test public void bindViews_shouldBindAllData() { final String testString = "test"; - final View appHeader = mLayoutInflater.inflate(R.layout.settings_entity_header, null /* root */); - final TextView label = appHeader.findViewById(R.id.app_detail_title); - final TextView version = appHeader.findViewById(R.id.app_detail_summary); + final View header = mLayoutInflater.inflate( + R.layout.settings_entity_header, null /* root */); + final TextView label = header.findViewById(R.id.entity_header_title); + final TextView version = header.findViewById(R.id.entity_header_summary); - mController = new AppHeaderController(mShadowContext, mFragment, appHeader); + mController = new EntityHeaderController(mShadowContext, mFragment, header); mController.setLabel(testString); mController.setSummary(testString); mController.setIcon(mShadowContext.getDrawable(R.drawable.ic_add)); @@ -133,18 +134,18 @@ public class AppHeaderControllerTest { when(mContext.getPackageManager().resolveActivity(any(Intent.class), anyInt())) .thenReturn(info); - mController = new AppHeaderController(mContext, mFragment, appLinks); + mController = new EntityHeaderController(mContext, mFragment, appLinks); mController.setButtonActions( - AppHeaderController.ActionType.ACTION_APP_PREFERENCE, - AppHeaderController.ActionType.ACTION_NONE); + EntityHeaderController.ActionType.ACTION_APP_PREFERENCE, + EntityHeaderController.ActionType.ACTION_NONE); mController.done(mActivity); - assertThat(appLinks.findViewById(R.id.left_button).getVisibility()) + assertThat(appLinks.findViewById(android.R.id.button1).getVisibility()) .isEqualTo(View.VISIBLE); - assertThat(appLinks.findViewById(R.id.right_button).getVisibility()) + assertThat(appLinks.findViewById(android.R.id.button2).getVisibility()) .isEqualTo(View.GONE); try { - appLinks.findViewById(R.id.left_button).performClick(); + appLinks.findViewById(android.R.id.button1).performClick(); } catch (Exception e) { // Ignore exception because the launching intent is fake. } @@ -158,15 +159,15 @@ public class AppHeaderControllerTest { when(mContext.getPackageManager().resolveActivity(any(Intent.class), anyInt())) .thenReturn(null); - mController = new AppHeaderController(mContext, mFragment, appLinks); + mController = new EntityHeaderController(mContext, mFragment, appLinks); mController.setButtonActions( - AppHeaderController.ActionType.ACTION_APP_PREFERENCE, - AppHeaderController.ActionType.ACTION_NONE); + EntityHeaderController.ActionType.ACTION_APP_PREFERENCE, + EntityHeaderController.ActionType.ACTION_NONE); mController.done(mActivity); - assertThat(appLinks.findViewById(R.id.left_button).getVisibility()) + assertThat(appLinks.findViewById(android.R.id.button1).getVisibility()) .isEqualTo(View.GONE); - assertThat(appLinks.findViewById(R.id.right_button).getVisibility()) + assertThat(appLinks.findViewById(android.R.id.button2).getVisibility()) .isEqualTo(View.GONE); } @@ -175,16 +176,16 @@ public class AppHeaderControllerTest { final View appLinks = mLayoutInflater .inflate(R.layout.settings_entity_header, null /* root */); - mController = new AppHeaderController(mContext, mFragment, appLinks); + mController = new EntityHeaderController(mContext, mFragment, appLinks); mController.setPackageName(null) .setButtonActions( - AppHeaderController.ActionType.ACTION_APP_INFO, - AppHeaderController.ActionType.ACTION_NONE); + EntityHeaderController.ActionType.ACTION_APP_INFO, + EntityHeaderController.ActionType.ACTION_NONE); mController.done(mActivity); - assertThat(appLinks.findViewById(R.id.left_button).getVisibility()) + assertThat(appLinks.findViewById(android.R.id.button1).getVisibility()) .isEqualTo(View.GONE); - assertThat(appLinks.findViewById(R.id.right_button).getVisibility()) + assertThat(appLinks.findViewById(android.R.id.button2).getVisibility()) .isEqualTo(View.GONE); } @@ -194,17 +195,17 @@ public class AppHeaderControllerTest { .inflate(R.layout.settings_entity_header, null /* root */); when(mFragment.getActivity()).thenReturn(mock(Activity.class)); - mController = new AppHeaderController(mContext, mFragment, appLinks); + mController = new EntityHeaderController(mContext, mFragment, appLinks); mController.setPackageName("123") .setUid(UserHandle.USER_SYSTEM) .setButtonActions( - AppHeaderController.ActionType.ACTION_APP_INFO, - AppHeaderController.ActionType.ACTION_NOTIF_PREFERENCE); + EntityHeaderController.ActionType.ACTION_APP_INFO, + EntityHeaderController.ActionType.ACTION_NOTIF_PREFERENCE); mController.done(mActivity); - assertThat(appLinks.findViewById(R.id.left_button).getVisibility()) + assertThat(appLinks.findViewById(android.R.id.button1).getVisibility()) .isEqualTo(View.VISIBLE); - assertThat(appLinks.findViewById(R.id.right_button).getVisibility()) + assertThat(appLinks.findViewById(android.R.id.button2).getVisibility()) .isEqualTo(View.GONE); } @@ -215,15 +216,15 @@ public class AppHeaderControllerTest { when(mFragment.getActivity()).thenReturn(mock(Activity.class)); when(mContext.getString(eq(R.string.application_info_label))).thenReturn("App Info"); - mController = new AppHeaderController(mContext, mFragment, appLinks); + mController = new EntityHeaderController(mContext, mFragment, appLinks); mController.setPackageName("123") .setUid(UserHandle.USER_SYSTEM) .setButtonActions( - AppHeaderController.ActionType.ACTION_APP_INFO, - AppHeaderController.ActionType.ACTION_NOTIF_PREFERENCE); + EntityHeaderController.ActionType.ACTION_APP_INFO, + EntityHeaderController.ActionType.ACTION_NOTIF_PREFERENCE); mController.done(mActivity); - assertThat(appLinks.findViewById(R.id.left_button).getContentDescription()) + assertThat(appLinks.findViewById(android.R.id.button1).getContentDescription()) .isEqualTo("App Info"); } @@ -232,16 +233,16 @@ public class AppHeaderControllerTest { final View appLinks = mLayoutInflater .inflate(R.layout.settings_entity_header, null /* root */); - mController = new AppHeaderController(mContext, mFragment, appLinks); + mController = new EntityHeaderController(mContext, mFragment, appLinks); mController.setAppNotifPrefIntent(new Intent()) .setButtonActions( - AppHeaderController.ActionType.ACTION_NOTIF_PREFERENCE, - AppHeaderController.ActionType.ACTION_NONE); + EntityHeaderController.ActionType.ACTION_NOTIF_PREFERENCE, + EntityHeaderController.ActionType.ACTION_NONE); mController.done(mActivity); - assertThat(appLinks.findViewById(R.id.left_button).getVisibility()) + assertThat(appLinks.findViewById(android.R.id.button1).getVisibility()) .isEqualTo(View.VISIBLE); - assertThat(appLinks.findViewById(R.id.right_button).getVisibility()) + assertThat(appLinks.findViewById(android.R.id.button2).getVisibility()) .isEqualTo(View.GONE); } @@ -249,31 +250,35 @@ public class AppHeaderControllerTest { // app is instant. @Test public void instantApps_normalAppsDontGetLabel() { - final View appHeader = mLayoutInflater.inflate(R.layout.settings_entity_header, null /* root */); - mController = new AppHeaderController(mContext, mFragment, appHeader); + final View header = mLayoutInflater.inflate( + R.layout.settings_entity_header, null /* root */); + mController = new EntityHeaderController(mContext, mFragment, header); mController.done(mActivity); - assertThat(appHeader.findViewById(R.id.install_type).getVisibility()) + + assertThat(header.findViewById(R.id.install_type).getVisibility()) .isEqualTo(View.GONE); } // Test that the "instant apps" label is present in the header when we have an instant app. @Test public void instantApps_expectedHeaderItem() { - final View appHeader = mLayoutInflater.inflate(R.layout.settings_entity_header, null /* root */); - mController = new AppHeaderController(mContext, mFragment, appHeader); + final View header = mLayoutInflater.inflate( + R.layout.settings_entity_header, null /* root */); + mController = new EntityHeaderController(mContext, mFragment, header); mController.setIsInstantApp(true); mController.done(mActivity); - TextView label = appHeader.findViewById(R.id.install_type); + TextView label = header.findViewById(R.id.install_type); + assertThat(label.getVisibility()).isEqualTo(View.VISIBLE); assertThat(label.getText()).isEqualTo( - appHeader.getResources().getString(R.string.install_type_instant)); - assertThat(appHeader.findViewById(R.id.app_detail_summary).getVisibility()) + header.getResources().getString(R.string.install_type_instant)); + assertThat(header.findViewById(R.id.entity_header_summary).getVisibility()) .isEqualTo(View.GONE); } @Test public void styleActionBar_invalidObjects_shouldNotCrash() { - mController = new AppHeaderController(mShadowContext, mFragment, null); + mController = new EntityHeaderController(mShadowContext, mFragment, null); mController.styleActionBar(null); when(mActivity.getActionBar()).thenReturn(null); @@ -286,7 +291,7 @@ public class AppHeaderControllerTest { public void styleActionBar_setElevationAndBackground() { final ActionBar actionBar = mActivity.getActionBar(); - mController = new AppHeaderController(mShadowContext, mFragment, null); + mController = new EntityHeaderController(mShadowContext, mFragment, null); mController.styleActionBar(mActivity); verify(actionBar).setElevation(0); @@ -297,7 +302,7 @@ public class AppHeaderControllerTest { @Test public void initAppHeaderController_appHeaderNull_useFragmentContext() { - mController = new AppHeaderController(mContext, mFragment, null); + mController = new EntityHeaderController(mContext, mFragment, null); // Fragment.getContext() is invoked to inflate the view verify(mFragment).getContext(); diff --git a/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java b/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java index 2e49ed2a8b6..6edbe351d5b 100644 --- a/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java +++ b/tests/robotests/src/com/android/settings/datausage/AppDataUsageTest.java @@ -25,8 +25,8 @@ import android.view.View; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; -import com.android.settings.applications.AppHeaderController; -import com.android.settings.applications.AppHeaderController.ActionType; +import com.android.settings.applications.EntityHeaderController; +import com.android.settings.applications.EntityHeaderController.ActionType; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.AppItem; @@ -54,7 +54,7 @@ public class AppDataUsageTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Context mContext; @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private AppHeaderController mHeaderController; + private EntityHeaderController mHeaderController; private FakeFeatureFactory mFeatureFactory; private AppDataUsage mFragment; diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java index 69bd767c501..5762e76c0b1 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java @@ -16,19 +16,6 @@ package com.android.settings.fuelgauge; -import static com.google.common.truth.Truth.assertThat; - -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyInt; -import static org.mockito.Matchers.anyLong; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; - import android.app.Activity; import android.app.Fragment; import android.content.Context; @@ -44,7 +31,7 @@ import com.android.internal.os.BatteryStatsHelper; import com.android.settings.SettingsActivity; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; -import com.android.settings.applications.AppHeaderController; +import com.android.settings.applications.EntityHeaderController; import com.android.settings.applications.LayoutPreference; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.applications.AppUtils; @@ -64,6 +51,18 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyInt; +import static org.mockito.Matchers.anyLong; +import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.eq; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; + @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class AdvancedPowerUsageDetailTest { @@ -85,7 +84,7 @@ public class AdvancedPowerUsageDetailTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Activity mActivity; @Mock - private AppHeaderController mAppHeaderController; + private EntityHeaderController mEntityHeaderController; @Mock private LayoutPreference mHeaderPreference; @Mock @@ -121,18 +120,18 @@ public class AdvancedPowerUsageDetailTest { doReturn(APP_LABEL).when(mBundle).getString(anyString()); doReturn(mBundle).when(mFragment).getArguments(); - doReturn(mAppHeaderController).when(mFeatureFactory.applicationFeatureProvider) + doReturn(mEntityHeaderController).when(mFeatureFactory.applicationFeatureProvider) .newAppHeaderController(any(Fragment.class), any(View.class)); - doReturn(mAppHeaderController).when(mAppHeaderController).setButtonActions(anyInt(), - anyInt()); - doReturn(mAppHeaderController).when(mAppHeaderController).setIcon(any(Drawable.class)); - doReturn(mAppHeaderController).when(mAppHeaderController).setIcon(any( + doReturn(mEntityHeaderController).when(mEntityHeaderController) + .setButtonActions(anyInt(), anyInt()); + doReturn(mEntityHeaderController).when(mEntityHeaderController) + .setIcon(any(Drawable.class)); + doReturn(mEntityHeaderController).when(mEntityHeaderController).setIcon(any( ApplicationsState.AppEntry.class)); - doReturn(mAppHeaderController).when(mAppHeaderController).setLabel(anyString()); - doReturn(mAppHeaderController).when(mAppHeaderController).setLabel(any( - ApplicationsState.AppEntry.class)); - doReturn(mAppHeaderController).when(mAppHeaderController).setSummary(anyString()); - + doReturn(mEntityHeaderController).when(mEntityHeaderController).setLabel(anyString()); + doReturn(mEntityHeaderController).when(mEntityHeaderController) + .setLabel(any(ApplicationsState.AppEntry.class)); + doReturn(mEntityHeaderController).when(mEntityHeaderController).setSummary(anyString()); doReturn(UID).when(mBatterySipper).getUid(); doReturn(APP_LABEL).when(mBatteryEntry).getLabel(); @@ -171,8 +170,8 @@ public class AdvancedPowerUsageDetailTest { mFragment.mAppEntry = null; mFragment.initHeader(); - verify(mAppHeaderController).setIcon(any(Drawable.class)); - verify(mAppHeaderController).setLabel(APP_LABEL); + verify(mEntityHeaderController).setIcon(any(Drawable.class)); + verify(mEntityHeaderController).setLabel(APP_LABEL); } @Test @@ -187,9 +186,9 @@ public class AdvancedPowerUsageDetailTest { mFragment.mAppEntry = mAppEntry; mFragment.initHeader(); - verify(mAppHeaderController).setIcon(mAppEntry); - verify(mAppHeaderController).setLabel(mAppEntry); - verify(mAppHeaderController).setIsInstantApp(false); + verify(mEntityHeaderController).setIcon(mAppEntry); + verify(mEntityHeaderController).setLabel(mAppEntry); + verify(mEntityHeaderController).setIsInstantApp(false); } @Test @@ -204,10 +203,10 @@ public class AdvancedPowerUsageDetailTest { mFragment.mAppEntry = mAppEntry; mFragment.initHeader(); - verify(mAppHeaderController).setIcon(mAppEntry); - verify(mAppHeaderController).setLabel(mAppEntry); - verify(mAppHeaderController).setIsInstantApp(true); - verify(mAppHeaderController).setSummary((CharSequence) null); + verify(mEntityHeaderController).setIcon(mAppEntry); + verify(mEntityHeaderController).setLabel(mAppEntry); + verify(mEntityHeaderController).setIsInstantApp(true); + verify(mEntityHeaderController).setSummary((CharSequence) null); } @Test