diff --git a/src/com/android/settings/applications/UsageAccessDetails.java b/src/com/android/settings/applications/UsageAccessDetails.java index 62ce08e0a77..0a01896f879 100644 --- a/src/com/android/settings/applications/UsageAccessDetails.java +++ b/src/com/android/settings/applications/UsageAccessDetails.java @@ -36,6 +36,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.applications.AppStateUsageBridge.UsageState; import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenceChangeListener, OnPreferenceClickListener { @@ -113,8 +114,14 @@ public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenc void logSpecialPermissionChange(boolean newState, String packageName) { int logCategory = newState ? MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_ALLOW : MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY; - FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(), - logCategory, packageName); + final MetricsFeatureProvider metricsFeatureProvider = + FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider(); + metricsFeatureProvider.action( + metricsFeatureProvider.getAttribution(getActivity()), + logCategory, + getMetricsCategory(), + packageName, + 0); } @Override diff --git a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java index 12c4d9d7f2c..6d726b9eed9 100644 --- a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java @@ -51,6 +51,7 @@ import com.android.settings.Utils; import com.android.settings.applications.ApplicationFeatureProvider; import com.android.settings.applications.specialaccess.deviceadmin.DeviceAdminAdd; import com.android.settings.core.BasePreferenceController; +import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.ActionButtonPreference; @@ -106,7 +107,7 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp private final UserManager mUserManager; private final PackageManager mPm; private final SettingsActivity mActivity; - private final Fragment mFragment; + private final InstrumentedPreferenceFragment mFragment; private final MetricsFeatureProvider mMetricsFeatureProvider; private final ApplicationFeatureProvider mApplicationFeatureProvider; private final int mUserId; @@ -119,7 +120,8 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp private boolean mFinishing = false; private boolean mAppsControlDisallowedBySystem; - public AppButtonsPreferenceController(SettingsActivity activity, Fragment fragment, + public AppButtonsPreferenceController(SettingsActivity activity, + InstrumentedPreferenceFragment fragment, Lifecycle lifecycle, String packageName, ApplicationsState state, int requestUninstall, int requestRemoveDeviceAdmin) { super(activity, KEY_ACTION_BUTTONS); @@ -517,8 +519,12 @@ public class AppButtonsPreferenceController extends BasePreferenceController imp @VisibleForTesting void forceStopPackage(String pkgName) { - FeatureFactory.getFactory(mContext).getMetricsFeatureProvider().action(mContext, - MetricsProto.MetricsEvent.ACTION_APP_FORCE_STOP, pkgName); + mMetricsFeatureProvider.action( + mMetricsFeatureProvider.getAttribution(mActivity), + MetricsProto.MetricsEvent.ACTION_APP_FORCE_STOP, + mFragment.getMetricsCategory(), + pkgName, + 0); ActivityManager am = (ActivityManager) mActivity.getSystemService( Context.ACTIVITY_SERVICE); Log.d(TAG, "Stopping package " + pkgName); diff --git a/src/com/android/settings/applications/appinfo/DrawOverlayDetails.java b/src/com/android/settings/applications/appinfo/DrawOverlayDetails.java index 8405c618dc4..f0d1068fd58 100644 --- a/src/com/android/settings/applications/appinfo/DrawOverlayDetails.java +++ b/src/com/android/settings/applications/appinfo/DrawOverlayDetails.java @@ -42,6 +42,7 @@ import com.android.settings.applications.AppStateOverlayBridge; import com.android.settings.applications.AppStateOverlayBridge.OverlayState; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.applications.ApplicationsState.AppEntry; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class DrawOverlayDetails extends AppInfoWithHeader implements OnPreferenceChangeListener, OnPreferenceClickListener { @@ -129,8 +130,14 @@ public class DrawOverlayDetails extends AppInfoWithHeader implements OnPreferenc void logSpecialPermissionChange(boolean newState, String packageName) { int logCategory = newState ? MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_ALLOW : MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_DENY; - FeatureFactory.getFactory(getContext()) - .getMetricsFeatureProvider().action(getContext(), logCategory, packageName); + final MetricsFeatureProvider metricsFeatureProvider = + FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider(); + metricsFeatureProvider.action( + metricsFeatureProvider.getAttribution(getActivity()), + logCategory, + getMetricsCategory(), + packageName, + 0); } @Override diff --git a/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java b/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java index 9a337a5943f..14bf1ef82d4 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java +++ b/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java @@ -17,12 +17,12 @@ package com.android.settings.applications.defaultapps; import android.app.Dialog; +import android.app.settings.SettingsEnums; import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.os.Bundle; import android.text.TextUtils; -import android.util.Pair; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; @@ -69,11 +69,12 @@ public abstract class DefaultAppPickerFragment extends RadioButtonPickerFragment @Override protected void onRadioButtonConfirmed(String selectedKey) { - mMetricsFeatureProvider.action(getContext(), + mMetricsFeatureProvider.action( + mMetricsFeatureProvider.getAttribution(getActivity()), MetricsEvent.ACTION_SETTINGS_UPDATE_DEFAULT_APP, + getMetricsCategory(), selectedKey, - Pair.create(MetricsEvent.FIELD_CONTEXT, getMetricsCategory())); - + 0 /* value */); super.onRadioButtonConfirmed(selectedKey); } diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java index 7c05bab1d20..a260f678db5 100644 --- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java +++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAdd.java @@ -23,6 +23,7 @@ import android.app.Dialog; import android.app.admin.DeviceAdminInfo; import android.app.admin.DeviceAdminReceiver; import android.app.admin.DevicePolicyManager; +import android.app.settings.SettingsEnums; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; @@ -489,7 +490,12 @@ public class DeviceAdminAdd extends Activity { void logSpecialPermissionChange(boolean allow, String packageName) { int logCategory = allow ? MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_ALLOW : MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_DENY; - FeatureFactory.getFactory(this).getMetricsFeatureProvider().action(this, logCategory, packageName); + FeatureFactory.getFactory(this).getMetricsFeatureProvider().action( + SettingsEnums.PAGE_UNKNOWN, + logCategory, + SettingsEnums.PAGE_UNKNOWN, + packageName, + 0); } @Override diff --git a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetails.java b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetails.java index 33a779fd9e7..c36c97ad34e 100644 --- a/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetails.java +++ b/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetails.java @@ -33,6 +33,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.applications.AppInfoWithHeader; import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; public class PictureInPictureDetails extends AppInfoWithHeader implements OnPreferenceChangeListener { @@ -99,7 +100,7 @@ public class PictureInPictureDetails extends AppInfoWithHeader /** * @return whether the app associated with the given {@param packageName} is allowed to enter - * picture-in-picture. + * picture-in-picture. */ static boolean getEnterPipStateForPackage(Context context, int uid, String packageName) { final AppOpsManager appOps = context.getSystemService(AppOpsManager.class); @@ -108,7 +109,7 @@ public class PictureInPictureDetails extends AppInfoWithHeader /** * @return the summary for the current state of whether the app associated with the given - * {@param packageName} is allowed to enter picture-in-picture. + * {@param packageName} is allowed to enter picture-in-picture. */ public static int getPreferenceSummary(Context context, int uid, String packageName) { final boolean enabled = PictureInPictureDetails.getEnterPipStateForPackage(context, uid, @@ -122,7 +123,13 @@ public class PictureInPictureDetails extends AppInfoWithHeader int logCategory = newState ? MetricsEvent.APP_PICTURE_IN_PICTURE_ALLOW : MetricsEvent.APP_PICTURE_IN_PICTURE_DENY; - FeatureFactory.getFactory(getContext()) - .getMetricsFeatureProvider().action(getContext(), logCategory, packageName); + final MetricsFeatureProvider metricsFeatureProvider = + FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider(); + metricsFeatureProvider.action( + metricsFeatureProvider.getAttribution(getActivity()), + logCategory, + getMetricsCategory(), + packageName, + 0); } } diff --git a/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java b/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java index 5c0d4b145aa..2ccf64ff5e1 100644 --- a/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java +++ b/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java @@ -44,6 +44,7 @@ import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.applications.ApplicationsState.Callbacks; import com.android.settingslib.applications.ApplicationsState.Session; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.search.SearchIndexable; import com.android.settingslib.widget.FooterPreference; @@ -126,8 +127,15 @@ public class PremiumSmsAccess extends EmptyTextSettings break; } if (category != SmsUsageMonitor.PREMIUM_SMS_PERMISSION_UNKNOWN) { - FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action( - getContext(), category, packageName); + // TODO(117860032): Category is wrong. It should be defined in SettingsEnums. + final MetricsFeatureProvider metricsFeatureProvider = + FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider(); + metricsFeatureProvider.action( + metricsFeatureProvider.getAttribution(getActivity()), + category, + getMetricsCategory(), + packageName, + smsState); } } @@ -214,7 +222,7 @@ public class PremiumSmsAccess extends EmptyTextSettings setIcon(mAppEntry.icon); } setEntries(R.array.security_settings_premium_sms_values); - setEntryValues(new CharSequence[] { + setEntryValues(new CharSequence[]{ String.valueOf(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ASK_USER), String.valueOf(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW), String.valueOf(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW), diff --git a/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerSettings.java b/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerSettings.java index cad59571c58..b0c745dae6a 100644 --- a/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerSettings.java +++ b/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerSettings.java @@ -29,6 +29,7 @@ import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; import com.android.settings.utils.ManagedServiceSettings; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.search.SearchIndexable; import java.util.ArrayList; @@ -73,8 +74,14 @@ public class VrListenerSettings extends ManagedServiceSettings { void logSpecialPermissionChange(boolean enable, String packageName) { int logCategory = enable ? MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_ALLOW : MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_DENY; - FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider().action(getContext(), - logCategory, packageName); + final MetricsFeatureProvider metricsFeatureProvider = + FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider(); + metricsFeatureProvider.action( + metricsFeatureProvider.getAttribution(getActivity()), + logCategory, + getMetricsCategory(), + packageName, + 0); } public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = diff --git a/src/com/android/settings/core/instrumentation/StatsLogWriter.java b/src/com/android/settings/core/instrumentation/StatsLogWriter.java index 2617259235d..b6644c677fa 100644 --- a/src/com/android/settings/core/instrumentation/StatsLogWriter.java +++ b/src/com/android/settings/core/instrumentation/StatsLogWriter.java @@ -18,8 +18,8 @@ package com.android.settings.core.instrumentation; import android.app.settings.SettingsEnums; import android.content.Context; -import android.util.Pair; import android.util.StatsLog; +import android.util.Pair; import com.android.settingslib.core.instrumentation.LogWriter; @@ -45,7 +45,7 @@ public class StatsLogWriter implements LogWriter { 0 /* changedPreferenceIntValue */); } - @Override + @Override public void action(Context context, int action, Pair... taggedData) { action(SettingsEnums.PAGE_UNKNOWN /* attribution */, action, @@ -73,8 +73,7 @@ public class StatsLogWriter implements LogWriter { } @Override - public void action(Context context, int action, String pkg, - Pair... taggedData) { + public void action(Context context, int action, String pkg) { action(SettingsEnums.PAGE_UNKNOWN /* attribution */, action, SettingsEnums.PAGE_UNKNOWN /* pageId */, diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java index 00111770104..b755ba7861a 100644 --- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java +++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java @@ -19,12 +19,9 @@ package com.android.settings.dashboard.suggestions; import android.content.ComponentName; import android.content.Context; import android.content.SharedPreferences; -import android.service.settings.suggestions.Suggestion; import androidx.annotation.NonNull; -import com.android.settingslib.suggestions.SuggestionControllerMixinCompat; - /** Interface should be implemented if you have added new suggestions */ public interface SuggestionFeatureProvider { @@ -45,10 +42,4 @@ public interface SuggestionFeatureProvider { * Returns the {@link SharedPreferences} that holds metadata for suggestions. */ SharedPreferences getSharedPrefs(Context context); - - /** - * Dismisses a suggestion. - */ - void dismissSuggestion(Context context, SuggestionControllerMixinCompat suggestionMixin, - Suggestion suggestion); } diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java index 39d0299c0f5..bfa44e5216e 100644 --- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java +++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java @@ -20,12 +20,9 @@ import android.app.ActivityManager; import android.content.ComponentName; import android.content.Context; import android.content.SharedPreferences; -import android.service.settings.suggestions.Suggestion; -import android.util.Log; import androidx.annotation.NonNull; -import com.android.internal.logging.nano.MetricsProto; import com.android.settings.Settings.NightDisplaySuggestionActivity; import com.android.settings.biometrics.fingerprint.FingerprintEnrollSuggestionActivity; import com.android.settings.biometrics.fingerprint.FingerprintSuggestionActivity; @@ -37,10 +34,6 @@ import com.android.settings.password.ScreenLockSuggestionActivity; import com.android.settings.wallpaper.WallpaperSuggestionActivity; import com.android.settings.wifi.calling.WifiCallingSuggestionActivity; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; -import com.android.settingslib.drawer.Tile; -import com.android.settingslib.suggestions.SuggestionControllerMixinCompat; - -import java.util.List; public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider { @@ -95,16 +88,4 @@ public class SuggestionFeatureProviderImpl implements SuggestionFeatureProvider mMetricsFeatureProvider = FeatureFactory.getFactory(appContext) .getMetricsFeatureProvider(); } - - @Override - public void dismissSuggestion(Context context, SuggestionControllerMixinCompat mixin, - Suggestion suggestion) { - if (mixin == null || suggestion == null || context == null) { - return; - } - mMetricsFeatureProvider.action( - context, MetricsProto.MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION, - suggestion.getId()); - mixin.dismissSuggestion(suggestion); - } } diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java index 6256e23dcde..65492d5b054 100644 --- a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java +++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java @@ -26,16 +26,15 @@ import android.os.UserHandle; import android.os.UserManager; import android.text.BidiFormatter; import android.text.TextUtils; -import android.util.Pair; import android.widget.Toast; -import androidx.fragment.app.Fragment; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.Utils; +import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settings.password.ChooseLockSettingsHelper; @@ -57,7 +56,7 @@ public class BuildNumberPreferenceController extends AbstractPreferenceControlle private static final String KEY_BUILD_NUMBER = "build_number"; private final Activity mActivity; - private final Fragment mFragment; + private final InstrumentedPreferenceFragment mFragment; private final UserManager mUm; private final MetricsFeatureProvider mMetricsFeatureProvider; @@ -67,8 +66,8 @@ public class BuildNumberPreferenceController extends AbstractPreferenceControlle private int mDevHitCountdown; private boolean mProcessingLastDevHit; - public BuildNumberPreferenceController(Context context, Activity activity, Fragment fragment, - Lifecycle lifecycle) { + public BuildNumberPreferenceController(Context context, Activity activity, + InstrumentedPreferenceFragment fragment, Lifecycle lifecycle) { super(context); mActivity = activity; mFragment = fragment; @@ -145,7 +144,7 @@ public class BuildNumberPreferenceController extends AbstractPreferenceControlle .setPackage(componentName.getPackageName()) .setAction("com.android.settings.action.REQUEST_DEBUG_FEATURES"); final ResolveInfo resolveInfo = mContext.getPackageManager().resolveActivity( - requestDebugFeatures, 0); + requestDebugFeatures, 0); if (resolveInfo != null) { mContext.startActivity(requestDebugFeatures); return false; @@ -176,9 +175,11 @@ public class BuildNumberPreferenceController extends AbstractPreferenceControlle enableDevelopmentSettings(); } mMetricsFeatureProvider.action( - mContext, MetricsEvent.ACTION_SETTINGS_BUILD_NUMBER_PREF, - Pair.create(MetricsEvent.FIELD_SETTINGS_BUILD_NUMBER_DEVELOPER_MODE_ENABLED, - mProcessingLastDevHit ? 0 : 1)); + mMetricsFeatureProvider.getAttribution(mActivity), + MetricsEvent.FIELD_SETTINGS_BUILD_NUMBER_DEVELOPER_MODE_ENABLED, + mFragment.getMetricsCategory(), + null, + mProcessingLastDevHit ? 0 : 1); } else if (mDevHitCountdown > 0 && mDevHitCountdown < (TAPS_TO_BE_A_DEVELOPER - 2)) { if (mDevHitToast != null) { @@ -191,10 +192,13 @@ public class BuildNumberPreferenceController extends AbstractPreferenceControlle Toast.LENGTH_SHORT); mDevHitToast.show(); } + mMetricsFeatureProvider.action( - mContext, MetricsEvent.ACTION_SETTINGS_BUILD_NUMBER_PREF, - Pair.create(MetricsEvent.FIELD_SETTINGS_BUILD_NUMBER_DEVELOPER_MODE_ENABLED, - 0)); + mMetricsFeatureProvider.getAttribution(mActivity), + MetricsEvent.FIELD_SETTINGS_BUILD_NUMBER_DEVELOPER_MODE_ENABLED, + mFragment.getMetricsCategory(), + null, + 0); } else if (mDevHitCountdown < 0) { if (mDevHitToast != null) { mDevHitToast.cancel(); @@ -203,9 +207,11 @@ public class BuildNumberPreferenceController extends AbstractPreferenceControlle Toast.LENGTH_LONG); mDevHitToast.show(); mMetricsFeatureProvider.action( - mContext, MetricsEvent.ACTION_SETTINGS_BUILD_NUMBER_PREF, - Pair.create(MetricsEvent.FIELD_SETTINGS_BUILD_NUMBER_DEVELOPER_MODE_ENABLED, - 1)); + mMetricsFeatureProvider.getAttribution(mActivity), + MetricsEvent.FIELD_SETTINGS_BUILD_NUMBER_DEVELOPER_MODE_ENABLED, + mFragment.getMetricsCategory(), + null, + 1); } return true; } diff --git a/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobService.java b/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobService.java index b3be061dd7a..2534d083b4c 100644 --- a/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobService.java +++ b/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobService.java @@ -26,6 +26,7 @@ import android.app.job.JobParameters; import android.app.job.JobScheduler; import android.app.job.JobService; import android.app.job.JobWorkItem; +import android.app.settings.SettingsEnums; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; @@ -35,7 +36,6 @@ import android.os.StatsDimensionsValue; import android.os.UserManager; import android.provider.Settings; import android.util.Log; -import android.util.Pair; import androidx.annotation.GuardedBy; import androidx.annotation.VisibleForTesting; @@ -146,20 +146,18 @@ public class AnomalyDetectionJobService extends JobService { final int uid = extractUidFromStatsDimensionsValue(intentDimsValue); final boolean autoFeatureOn = powerUsageFeatureProvider.isSmartBatterySupported() ? Settings.Global.getInt(contentResolver, - Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, ON) == ON + Settings.Global.ADAPTIVE_BATTERY_MANAGEMENT_ENABLED, ON) == ON : Settings.Global.getInt(contentResolver, Settings.Global.APP_AUTO_RESTRICTION_ENABLED, ON) == ON; final String packageName = batteryUtils.getPackageName(uid); final long versionCode = batteryUtils.getAppLongVersionCode(packageName); - + final String versionedPackage = packageName + "/" + versionCode; if (batteryUtils.shouldHideAnomaly(powerWhitelistBackend, uid, anomalyInfo)) { - metricsFeatureProvider.action(context, + metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, MetricsProto.MetricsEvent.ACTION_ANOMALY_IGNORED, - packageName, - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, - anomalyInfo.anomalyType), - Pair.create(MetricsProto.MetricsEvent.FIELD_APP_VERSION_CODE, - versionCode)); + SettingsEnums.PAGE_UNKNOWN, + versionedPackage, + anomalyInfo.anomalyType); } else { if (autoFeatureOn && anomalyInfo.autoRestriction) { // Auto restrict this app @@ -173,13 +171,11 @@ public class AnomalyDetectionJobService extends JobService { AnomalyDatabaseHelper.State.NEW, timeMs); } - metricsFeatureProvider.action(context, + metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, MetricsProto.MetricsEvent.ACTION_ANOMALY_TRIGGERED, - packageName, - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, - anomalyInfo.anomalyType), - Pair.create(MetricsProto.MetricsEvent.FIELD_APP_VERSION_CODE, - versionCode)); + SettingsEnums.PAGE_UNKNOWN, + versionedPackage, + anomalyInfo.anomalyType); } } catch (NullPointerException | IndexOutOfBoundsException e) { diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppAction.java index ac946df571d..d52a9676c23 100644 --- a/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppAction.java +++ b/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppAction.java @@ -17,8 +17,8 @@ package com.android.settings.fuelgauge.batterytip.actions; import android.app.AppOpsManager; +import android.app.settings.SettingsEnums; import android.content.Context; -import android.util.Pair; import androidx.annotation.VisibleForTesting; @@ -64,15 +64,18 @@ public class RestrictAppAction extends BatteryTipAction { AppOpsManager.MODE_IGNORED); if (CollectionUtils.isEmpty(appInfo.anomalyTypes)) { // Only log context if there is no anomaly type - mMetricsFeatureProvider.action(mContext, - MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, packageName, - Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, metricsKey)); + mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, + metricsKey, + packageName, + 0); } else { for (int type : appInfo.anomalyTypes) { - mMetricsFeatureProvider.action(mContext, - MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, packageName, - Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, metricsKey), - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, type)); + mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, + metricsKey, + packageName, + type); } } } diff --git a/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppAction.java b/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppAction.java index 419e0431345..db882e5bac7 100644 --- a/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppAction.java +++ b/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppAction.java @@ -17,8 +17,8 @@ package com.android.settings.fuelgauge.batterytip.actions; import android.app.AppOpsManager; +import android.app.settings.SettingsEnums; import android.content.Context; -import android.util.Pair; import androidx.annotation.VisibleForTesting; @@ -50,8 +50,11 @@ public class UnrestrictAppAction extends BatteryTipAction { // Clear force app standby, then app can run in the background mBatteryUtils.setForceAppStandby(appInfo.uid, appInfo.packageName, AppOpsManager.MODE_ALLOWED); - mMetricsFeatureProvider.action(mContext, - MetricsProto.MetricsEvent.ACTION_TIP_UNRESTRICT_APP, appInfo.packageName, - Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, metricsKey)); + mMetricsFeatureProvider.action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.ACTION_TIP_UNRESTRICT_APP, + metricsKey, + appInfo.packageName, + 0); } } diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java index 4ff0d28cd6f..f16673484ec 100644 --- a/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java +++ b/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTip.java @@ -16,11 +16,11 @@ package com.android.settings.fuelgauge.batterytip.tips; +import android.app.settings.SettingsEnums; import android.content.Context; import android.content.res.Resources; import android.icu.text.ListFormatter; import android.os.Parcel; -import android.util.Pair; import androidx.annotation.VisibleForTesting; @@ -126,12 +126,12 @@ public class RestrictAppTip extends BatteryTip { for (int i = 0, size = mRestrictAppList.size(); i < size; i++) { final AppInfo appInfo = mRestrictAppList.get(i); for (Integer anomalyType : appInfo.anomalyTypes) { - metricsFeatureProvider.action(context, + metricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN, MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP_LIST, + SettingsEnums.PAGE_UNKNOWN, appInfo.packageName, - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, anomalyType)); + anomalyType); } - } } } diff --git a/src/com/android/settings/slices/SliceBroadcastReceiver.java b/src/com/android/settings/slices/SliceBroadcastReceiver.java index 4b86f336332..2860e9a7544 100644 --- a/src/com/android/settings/slices/SliceBroadcastReceiver.java +++ b/src/com/android/settings/slices/SliceBroadcastReceiver.java @@ -17,24 +17,20 @@ package com.android.settings.slices; import static com.android.settings.bluetooth.BluetoothSliceBuilder.ACTION_BLUETOOTH_SLICE_CHANGED; -import static com.android.settings.flashlight.FlashlightSliceBuilder - .ACTION_FLASHLIGHT_SLICE_CHANGED; -import static com.android.settings.network.telephony.Enhanced4gLteSliceHelper - .ACTION_ENHANCED_4G_LTE_CHANGED; +import static com.android.settings.flashlight.FlashlightSliceBuilder.ACTION_FLASHLIGHT_SLICE_CHANGED; +import static com.android.settings.network.telephony.Enhanced4gLteSliceHelper.ACTION_ENHANCED_4G_LTE_CHANGED; import static com.android.settings.notification.ZenModeSliceBuilder.ACTION_ZEN_MODE_SLICE_CHANGED; +import static com.android.settings.slices.SettingsSliceProvider.ACTION_COPY; import static com.android.settings.slices.SettingsSliceProvider.ACTION_SLIDER_CHANGED; import static com.android.settings.slices.SettingsSliceProvider.ACTION_TOGGLE_CHANGED; -import static com.android.settings.slices.SettingsSliceProvider.ACTION_COPY; import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_KEY; import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_PLATFORM_DEFINED; import static com.android.settings.wifi.calling.WifiCallingSliceHelper.ACTION_WIFI_CALLING_CHANGED; -import static com.android.settings.wifi.calling.WifiCallingSliceHelper - .ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED; -import static com.android.settings.wifi.calling.WifiCallingSliceHelper - .ACTION_WIFI_CALLING_PREFERENCE_WIFI_ONLY; -import static com.android.settings.wifi.calling.WifiCallingSliceHelper - .ACTION_WIFI_CALLING_PREFERENCE_WIFI_PREFERRED; +import static com.android.settings.wifi.calling.WifiCallingSliceHelper.ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED; +import static com.android.settings.wifi.calling.WifiCallingSliceHelper.ACTION_WIFI_CALLING_PREFERENCE_WIFI_ONLY; +import static com.android.settings.wifi.calling.WifiCallingSliceHelper.ACTION_WIFI_CALLING_PREFERENCE_WIFI_PREFERRED; +import android.app.settings.SettingsEnums; import android.app.slice.Slice; import android.content.BroadcastReceiver; import android.content.ContentResolver; @@ -44,7 +40,6 @@ import android.net.Uri; import android.provider.SettingsSlicesContract; import android.text.TextUtils; import android.util.Log; -import android.util.Pair; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.bluetooth.BluetoothSliceBuilder; @@ -216,12 +211,11 @@ public class SliceBroadcastReceiver extends BroadcastReceiver { * follows the pattern in SharedPreferenceLogger. */ private void logSliceValueChange(Context context, String sliceKey, int newValue) { - final Pair namePair = Pair.create( - MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME, sliceKey); - final Pair valuePair = Pair.create( - MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, newValue); FeatureFactory.getFactory(context).getMetricsFeatureProvider() - .action(context, MetricsEvent.ACTION_SETTINGS_SLICE_CHANGED, namePair, valuePair); + .action(SettingsEnums.PAGE_UNKNOWN, + MetricsEvent.ACTION_SETTINGS_SLICE_CHANGED, + SettingsEnums.PAGE_UNKNOWN, + sliceKey, newValue); } private BasePreferenceController getPreferenceController(Context context, String key) { diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java index f6cc57f4f0e..f18225ade27 100644 --- a/src/com/android/settings/slices/SliceBuilderUtils.java +++ b/src/com/android/settings/slices/SliceBuilderUtils.java @@ -22,6 +22,7 @@ import static com.android.settings.slices.SettingsSliceProvider.EXTRA_SLICE_PLAT import android.annotation.ColorInt; import android.app.PendingIntent; +import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -77,12 +78,12 @@ public class SliceBuilderUtils { public static Slice buildSlice(Context context, SliceData sliceData) { Log.d(TAG, "Creating slice for: " + sliceData.getPreferenceController()); final BasePreferenceController controller = getPreferenceController(context, sliceData); - final Pair sliceNamePair = - Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME, sliceData.getKey()); - // Log Slice requests using the same schema as SharedPreferenceLogger (but with a different - // action name). FeatureFactory.getFactory(context).getMetricsFeatureProvider() - .action(context, MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED, sliceNamePair); + .action(SettingsEnums.PAGE_UNKNOWN, + MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED, + SettingsEnums.PAGE_UNKNOWN, + sliceData.getKey(), + 0); if (!controller.isAvailable()) { // Cannot guarantee setting page is accessible, let the presenter handle error case. diff --git a/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java b/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java index f9cb01b9881..183468905c5 100644 --- a/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java +++ b/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java @@ -18,12 +18,10 @@ package com.android.settings.applications; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.nullable; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import android.content.Context; +import android.app.settings.SettingsEnums; import android.os.Bundle; import com.android.internal.logging.nano.MetricsProto; @@ -54,12 +52,20 @@ public class UsageAccessDetailsTest { @Test public void logSpecialPermissionChange() { mFragment.logSpecialPermissionChange(true, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_ALLOW), eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_ALLOW, + mFragment.getMetricsCategory(), + "app", + 0); mFragment.logSpecialPermissionChange(false, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY), eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY, + mFragment.getMetricsCategory(), + "app", + 0); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java index 44ace780c82..f7b27003aa8 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java @@ -35,6 +35,7 @@ import static org.mockito.Mockito.when; import android.app.ActivityManager; import android.app.Application; import android.app.admin.DevicePolicyManager; +import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; @@ -42,10 +43,9 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.UserManager; -import androidx.fragment.app.Fragment; - import com.android.settings.R; import com.android.settings.SettingsActivity; +import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.widget.ActionButtonPreference; @@ -377,12 +377,17 @@ public class AppButtonsPreferenceControllerTest { * The test fragment which implements * {@link ButtonActionDialogFragment.AppButtonsDialogListener} */ - public static class TestFragment extends Fragment + public static class TestFragment extends InstrumentedPreferenceFragment implements ButtonActionDialogFragment.AppButtonsDialogListener { @Override public void handleDialogClick(int type) { // Do nothing } + + @Override + public int getMetricsCategory() { + return SettingsEnums.PAGE_UNKNOWN; + } } } diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailsTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailsTest.java index 1b25286cef8..4093cba68de 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailsTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/DrawOverlayDetailsTest.java @@ -19,12 +19,10 @@ package com.android.settings.applications.appinfo; import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.eq; -import static org.mockito.Matchers.nullable; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import android.content.Context; +import android.app.settings.SettingsEnums; import android.view.Window; import android.view.WindowManager.LayoutParams; @@ -75,12 +73,14 @@ public class DrawOverlayDetailsTest { when(mFragment.getContext()).thenReturn(RuntimeEnvironment.application); mFragment.logSpecialPermissionChange(true, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_ALLOW), eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_ALLOW, + mFragment.getMetricsCategory(), "app", 0); mFragment.logSpecialPermissionChange(false, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_DENY), eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_APPDRAW_DENY, + mFragment.getMetricsCategory(), "app", 0); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java index 541954b7822..de602badec1 100644 --- a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java +++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragmentTest.java @@ -17,15 +17,14 @@ package com.android.settings.applications.defaultapps; import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.app.settings.SettingsEnums; import android.content.Context; import android.os.UserManager; -import android.util.Pair; import androidx.fragment.app.FragmentActivity; import androidx.preference.PreferenceScreen; @@ -89,10 +88,12 @@ public class DefaultAppPickerFragmentTest { mFragment.onAttach((Context) mActivity); mFragment.onRadioButtonConfirmed("test_pkg"); - verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class), - eq(MetricsProto.MetricsEvent.ACTION_SETTINGS_UPDATE_DEFAULT_APP), - eq("test_pkg"), - any(Pair.class)); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.ACTION_SETTINGS_UPDATE_DEFAULT_APP, + mFragment.getMetricsCategory(), + "test_pkg", + 0); } public static class TestFragment extends DefaultAppPickerFragment { diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAddTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAddTest.java index 6bc143ca25b..eaccdc0ac4b 100644 --- a/tests/robotests/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAddTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminAddTest.java @@ -16,10 +16,8 @@ package com.android.settings.applications.specialaccess.deviceadmin; -import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; @@ -29,7 +27,7 @@ import static org.mockito.Mockito.when; import android.app.AppOpsManager; import android.app.admin.DeviceAdminInfo; -import android.content.Context; +import android.app.settings.SettingsEnums; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.fuelgauge.BatteryUtils; @@ -73,12 +71,20 @@ public class DeviceAdminAddTest { @Test public void logSpecialPermissionChange() { mDeviceAdminAdd.logSpecialPermissionChange(true, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_ALLOW), eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_ALLOW, + SettingsEnums.PAGE_UNKNOWN, + "app", + 0); mDeviceAdminAdd.logSpecialPermissionChange(false, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_DENY), eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_ADMIN_DENY, + SettingsEnums.PAGE_UNKNOWN, + "app", + 0); } @Test diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailsTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailsTest.java index 9d53f956103..b3d695849f4 100644 --- a/tests/robotests/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailsTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/pictureinpicture/PictureInPictureDetailsTest.java @@ -18,11 +18,9 @@ package com.android.settings.applications.specialaccess.pictureinpicture; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.nullable; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; -import android.content.Context; +import android.app.settings.SettingsEnums; import android.content.pm.ActivityInfo; import com.android.internal.logging.nano.MetricsProto; @@ -75,12 +73,20 @@ public class PictureInPictureDetailsTest { @Test public void logSpecialPermissionChange() { mFragment.logSpecialPermissionChange(true, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_PICTURE_IN_PICTURE_ALLOW), eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_PICTURE_IN_PICTURE_ALLOW, + mFragment.getMetricsCategory(), + "app", + 0); mFragment.logSpecialPermissionChange(false, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_PICTURE_IN_PICTURE_DENY), eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_PICTURE_IN_PICTURE_DENY, + mFragment.getMetricsCategory(), + "app", + 0); } private boolean checkPackageHasPictureInPictureActivities(String packageName, diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccessTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccessTest.java index 3978825474e..1f32b18da0e 100644 --- a/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccessTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccessTest.java @@ -16,11 +16,9 @@ package com.android.settings.applications.specialaccess.premiumsms; -import static org.mockito.ArgumentMatchers.nullable; -import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; -import android.content.Context; +import android.app.settings.SettingsEnums; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.telephony.SmsUsageMonitor; @@ -51,18 +49,29 @@ public class PremiumSmsAccessTest { public void logSpecialPermissionChange() { mFragment.logSpecialPermissionChange(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ASK_USER, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_ASK), eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_ASK, + mFragment.getMetricsCategory(), + "app", + SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ASK_USER); mFragment.logSpecialPermissionChange(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_DENY), eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_DENY, + mFragment.getMetricsCategory(), + "app", + SmsUsageMonitor.PREMIUM_SMS_PERMISSION_NEVER_ALLOW); mFragment.logSpecialPermissionChange(SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_ALWAYS_ALLOW), - eq("app")); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_PREMIUM_SMS_ALWAYS_ALLOW, + mFragment.getMetricsCategory(), + "app", + SmsUsageMonitor.PREMIUM_SMS_PERMISSION_ALWAYS_ALLOW); } } diff --git a/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerSettingsTest.java b/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerSettingsTest.java index 4f5b2bbed1d..3f0bc1d3895 100644 --- a/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerSettingsTest.java +++ b/tests/robotests/src/com/android/settings/applications/specialaccess/vrlistener/VrListenerSettingsTest.java @@ -16,11 +16,7 @@ package com.android.settings.applications.specialaccess.vrlistener; -import static org.mockito.ArgumentMatchers.nullable; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.verify; - -import android.content.Context; +import android.app.settings.SettingsEnums; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.testutils.FakeFeatureFactory; @@ -47,11 +43,19 @@ public class VrListenerSettingsTest { @Test public void logSpecialPermissionChange() { mFragment.logSpecialPermissionChange(true, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_ALLOW), eq("app")); + mFeatureFactory.metricsFeatureProvider.action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_ALLOW, + SettingsEnums.PAGE_UNKNOWN, + "app", + 0); mFragment.logSpecialPermissionChange(false, "app"); - verify(mFeatureFactory.metricsFeatureProvider).action(nullable(Context.class), - eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_DENY), eq("app")); + mFeatureFactory.metricsFeatureProvider.action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_DENY, + SettingsEnums.PAGE_UNKNOWN, + "app", + 0); } } diff --git a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java index f9a737942a2..3c97f489360 100644 --- a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImplTest.java @@ -18,10 +18,6 @@ package com.android.settings.dashboard.suggestions; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import android.app.ActivityManager; @@ -31,13 +27,10 @@ import android.content.pm.PackageManager; import android.hardware.fingerprint.FingerprintManager; import android.service.settings.suggestions.Suggestion; -import com.android.internal.logging.nano.MetricsProto; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResources; import com.android.settings.testutils.shadow.ShadowSecureSettings; -import com.android.settingslib.drawer.CategoryKey; -import com.android.settingslib.drawer.Tile; import com.android.settingslib.suggestions.SuggestionControllerMixinCompat; import org.junit.After; @@ -49,9 +42,6 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; -import java.util.ArrayList; -import java.util.List; - @RunWith(SettingsRobolectricTestRunner.class) @Config(shadows = ShadowSecureSettings.class) public class SuggestionFeatureProviderImplTest { @@ -111,36 +101,8 @@ public class SuggestionFeatureProviderImplTest { } @Test - public void isSuggestionV2Enabled_isNotLowMemoryDevice_shouldReturnTrue() { + public void isSuggestionEnabled_isNotLowMemoryDevice_shouldReturnTrue() { when(mActivityManager.isLowRamDevice()).thenReturn(false); assertThat(mProvider.isSuggestionEnabled(mContext)).isTrue(); } - - @Test - public void dismissSuggestion_noControllerOrSuggestion_noop() { - mProvider.dismissSuggestion(mContext, null, null); - mProvider.dismissSuggestion(mContext, mSuggestionControllerMixin, null); - mProvider.dismissSuggestion(mContext, null, new Suggestion.Builder("id").build()); - - verifyZeroInteractions(mFactory.metricsFeatureProvider); - verifyZeroInteractions(mSuggestionControllerMixin); - } - - @Test - public void dismissSuggestion_noContext_shouldDoNothing() { - mProvider.dismissSuggestion(null, mSuggestionControllerMixin, mSuggestion); - - verifyZeroInteractions(mFactory.metricsFeatureProvider); - } - - @Test - public void dismissSuggestion_shouldLogAndDismiss() { - mProvider.dismissSuggestion(mContext, mSuggestionControllerMixin, mSuggestion); - - verify(mFactory.metricsFeatureProvider).action( - eq(mContext), - eq(MetricsProto.MetricsEvent.ACTION_SETTINGS_DISMISS_SUGGESTION), - anyString()); - verify(mSuggestionControllerMixin).dismissSuggestion(mSuggestion); - } } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java index c88237d7b7c..9bec78d2bcd 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java @@ -33,12 +33,12 @@ import android.os.UserManager; import android.provider.Settings; import android.text.BidiFormatter; -import androidx.fragment.app.Fragment; import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto; +import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowUtils; @@ -64,7 +64,7 @@ public class BuildNumberPreferenceControllerTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Activity mActivity; @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private Fragment mFragment; + private InstrumentedPreferenceFragment mFragment; @Mock(answer = RETURNS_DEEP_STUBS) private PreferenceScreen mScreen; diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java index 8622e658c10..11b22ddc3e6 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyDetectionJobServiceTest.java @@ -43,13 +43,13 @@ import android.app.job.JobInfo; import android.app.job.JobParameters; import android.app.job.JobScheduler; import android.app.job.JobWorkItem; +import android.app.settings.SettingsEnums; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Process; import android.os.StatsDimensionsValue; import android.os.UserManager; -import android.util.Pair; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; @@ -174,11 +174,11 @@ public class AnomalyDetectionJobServiceTest { verify(mBatteryDatabaseManager, never()).insertAnomaly(anyInt(), anyString(), anyInt(), anyInt(), anyLong()); - verify(mFeatureFactory.metricsFeatureProvider).action(mContext, + verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN, MetricsProto.MetricsEvent.ACTION_ANOMALY_IGNORED, - SYSTEM_PACKAGE, - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, ANOMALY_TYPE), - Pair.create(MetricsProto.MetricsEvent.FIELD_APP_VERSION_CODE, VERSION_CODE)); + SettingsEnums.PAGE_UNKNOWN, + SYSTEM_PACKAGE + "/" + VERSION_CODE, + ANOMALY_TYPE); } @Test @@ -229,11 +229,11 @@ public class AnomalyDetectionJobServiceTest { verify(mBatteryDatabaseManager).insertAnomaly(anyInt(), anyString(), eq(6), eq(AnomalyDatabaseHelper.State.AUTO_HANDLED), anyLong()); - verify(mFeatureFactory.metricsFeatureProvider).action(mContext, + verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN, MetricsProto.MetricsEvent.ACTION_ANOMALY_TRIGGERED, - SYSTEM_PACKAGE, - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, ANOMALY_TYPE), - Pair.create(MetricsProto.MetricsEvent.FIELD_APP_VERSION_CODE, VERSION_CODE)); + SettingsEnums.PAGE_UNKNOWN, + SYSTEM_PACKAGE + "/" + VERSION_CODE, + ANOMALY_TYPE); } @Test @@ -254,11 +254,11 @@ public class AnomalyDetectionJobServiceTest { verify(mBatteryDatabaseManager).insertAnomaly(anyInt(), anyString(), eq(6), eq(AnomalyDatabaseHelper.State.NEW), anyLong()); - verify(mFeatureFactory.metricsFeatureProvider).action(mContext, + verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN, MetricsProto.MetricsEvent.ACTION_ANOMALY_TRIGGERED, - SYSTEM_PACKAGE, - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, ANOMALY_TYPE), - Pair.create(MetricsProto.MetricsEvent.FIELD_APP_VERSION_CODE, VERSION_CODE)); + SettingsEnums.PAGE_UNKNOWN, + SYSTEM_PACKAGE + "/" + VERSION_CODE, + ANOMALY_TYPE); } @Test diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppActionTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppActionTest.java index 0d6f9c55ba6..86c6714ef83 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppActionTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/RestrictAppActionTest.java @@ -18,7 +18,7 @@ package com.android.settings.fuelgauge.batterytip.actions; import static org.mockito.Mockito.verify; import android.app.AppOpsManager; -import android.util.Pair; +import android.app.settings.SettingsEnums; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.fuelgauge.BatteryUtils; @@ -91,16 +91,13 @@ public class RestrictAppActionTest { .setForceAppStandby(UID_1, PACKAGE_NAME_1, AppOpsManager.MODE_IGNORED); verify(mBatteryUtils) .setForceAppStandby(UID_2, PACKAGE_NAME_2, AppOpsManager.MODE_IGNORED); - verify(mFeatureFactory.metricsFeatureProvider).action(RuntimeEnvironment.application, - MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, PACKAGE_NAME_1, Pair.create( - MetricsProto.MetricsEvent.FIELD_CONTEXT, METRICS_KEY)); - verify(mFeatureFactory.metricsFeatureProvider).action(RuntimeEnvironment.application, - MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, PACKAGE_NAME_2, - Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, METRICS_KEY), - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, ANOMALY_WAKEUP)); - verify(mFeatureFactory.metricsFeatureProvider).action(RuntimeEnvironment.application, - MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, PACKAGE_NAME_2, - Pair.create(MetricsProto.MetricsEvent.FIELD_CONTEXT, METRICS_KEY), - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, ANOMALY_BT)); + verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, METRICS_KEY, PACKAGE_NAME_1, 0); + verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, METRICS_KEY, PACKAGE_NAME_2, + ANOMALY_WAKEUP); + verify(mFeatureFactory.metricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.ACTION_TIP_RESTRICT_APP, METRICS_KEY, PACKAGE_NAME_2, + ANOMALY_BT); } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppActionTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppActionTest.java index c44ae786bf3..f57284a05e9 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppActionTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/actions/UnrestrictAppActionTest.java @@ -18,7 +18,7 @@ package com.android.settings.fuelgauge.batterytip.actions; import static org.mockito.Mockito.verify; import android.app.AppOpsManager; -import android.util.Pair; +import android.app.settings.SettingsEnums; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.fuelgauge.BatteryUtils; @@ -75,8 +75,11 @@ public class UnrestrictAppActionTest { verify(mBatteryUtils) .setForceAppStandby(UID_1, PACKAGE_NAME_1, AppOpsManager.MODE_ALLOWED); - verify(mFeatureFactory.metricsFeatureProvider).action(RuntimeEnvironment.application, - MetricsProto.MetricsEvent.ACTION_TIP_UNRESTRICT_APP, PACKAGE_NAME_1, Pair.create( - MetricsProto.MetricsEvent.FIELD_CONTEXT, METRICS_KEY)); + verify(mFeatureFactory.metricsFeatureProvider).action( + SettingsEnums.PAGE_UNKNOWN, + MetricsProto.MetricsEvent.ACTION_TIP_UNRESTRICT_APP, + METRICS_KEY, + PACKAGE_NAME_1, + 0); } } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTipTest.java index 317e4266431..d4a10bce476 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTipTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/RestrictAppTipTest.java @@ -17,7 +17,6 @@ package com.android.settings.fuelgauge.batterytip.tips; 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.anyString; import static org.mockito.Mockito.doReturn; @@ -26,11 +25,11 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import android.app.settings.SettingsEnums; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Parcel; -import android.util.Pair; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; @@ -99,7 +98,8 @@ public class RestrictAppTipTest { mUsageAppList.add(mAppInfo); mNewBatteryTip = new RestrictAppTip(BatteryTip.StateType.NEW, mUsageAppList); mHandledBatteryTip = new RestrictAppTip(BatteryTip.StateType.HANDLED, mUsageAppList); - mInvisibleBatteryTip = new RestrictAppTip(BatteryTip.StateType.INVISIBLE, new ArrayList<>()); + mInvisibleBatteryTip = new RestrictAppTip(BatteryTip.StateType.INVISIBLE, + new ArrayList<>()); } @After @@ -142,7 +142,7 @@ public class RestrictAppTipTest { @Test public void getSummary_stateNew_showRestrictSummary() { assertThat(mNewBatteryTip.getSummary(mContext)) - .isEqualTo("app has high background battery usage"); + .isEqualTo("app has high background battery usage"); } @Test @@ -226,14 +226,16 @@ public class RestrictAppTipTest { verify(mMetricsFeatureProvider).action(mContext, MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP, BatteryTip.StateType.NEW); - verify(mMetricsFeatureProvider).action(mContext, + verify(mMetricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN, MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP_LIST, + SettingsEnums.PAGE_UNKNOWN, PACKAGE_NAME, - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, ANOMALY_WAKEUP)); - verify(mMetricsFeatureProvider).action(mContext, + ANOMALY_WAKEUP); + verify(mMetricsFeatureProvider).action(SettingsEnums.PAGE_UNKNOWN, MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP_LIST, + SettingsEnums.PAGE_UNKNOWN, PACKAGE_NAME, - Pair.create(MetricsProto.MetricsEvent.FIELD_ANOMALY_TYPE, ANOMALY_WAKELOCK)); + ANOMALY_WAKELOCK); } @Test @@ -242,7 +244,8 @@ public class RestrictAppTipTest { verify(mMetricsFeatureProvider).action(mContext, MetricsProto.MetricsEvent.ACTION_APP_RESTRICTION_TIP, BatteryTip.StateType.HANDLED); - verify(mMetricsFeatureProvider, never()).action(any(), anyInt(), anyString(), any()); + verify(mMetricsFeatureProvider, never()).action( + anyInt(), anyInt(), anyInt(), anyString(), anyInt()); } } diff --git a/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java b/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java index 4e09632c9b2..bd59179b2b6 100644 --- a/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java +++ b/tests/robotests/src/com/android/settings/slices/SliceBroadcastReceiverTest.java @@ -28,6 +28,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.app.settings.SettingsEnums; import android.app.slice.Slice; import android.content.ContentResolver; import android.content.ContentValues; @@ -37,7 +38,6 @@ import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.provider.Settings; import android.provider.SettingsSlicesContract; -import android.util.Pair; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.BasePreferenceController; @@ -54,7 +54,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; import org.robolectric.RuntimeEnvironment; @RunWith(SettingsRobolectricTestRunner.class) @@ -72,8 +71,6 @@ public class SliceBroadcastReceiverTest { private SliceBroadcastReceiver mReceiver; private SearchFeatureProvider mSearchFeatureProvider; private FakeFeatureFactory mFakeFeatureFactory; - private ArgumentCaptor> mLoggingNameArgumentCatpor; - private ArgumentCaptor> mLoggingValueArgumentCatpor; @Before public void setUp() { @@ -88,8 +85,6 @@ public class SliceBroadcastReceiverTest { CustomSliceManager manager = new CustomSliceManager(mContext); when(mFakeFeatureFactory.slicesFeatureProvider.getCustomSliceManager(any())) .thenReturn(manager); - mLoggingNameArgumentCatpor = ArgumentCaptor.forClass(Pair.class); - mLoggingValueArgumentCatpor = ArgumentCaptor.forClass(Pair.class); } @After @@ -123,20 +118,12 @@ public class SliceBroadcastReceiverTest { assertThat(fakeToggleController.isChecked()).isFalse(); verify(mFakeFeatureFactory.metricsFeatureProvider) - .action(eq(mContext), - eq(MetricsEvent.ACTION_SETTINGS_SLICE_CHANGED), - mLoggingNameArgumentCatpor.capture(), - mLoggingValueArgumentCatpor.capture()); - - final Pair namePair = mLoggingNameArgumentCatpor.getValue(); - final Pair valuePair = mLoggingValueArgumentCatpor.getValue(); - assertThat(namePair.first).isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME); - assertThat(namePair.second).isEqualTo(fakeToggleController.getPreferenceKey()); - + .action(SettingsEnums.PAGE_UNKNOWN, + MetricsEvent.ACTION_SETTINGS_SLICE_CHANGED, + SettingsEnums.PAGE_UNKNOWN, + fakeToggleController.getPreferenceKey(), + 0); verify(resolver).notifyChange(uri, null); - assertThat(valuePair.first) - .isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE); - assertThat(valuePair.second).isEqualTo(0); } @Test @@ -229,20 +216,13 @@ public class SliceBroadcastReceiverTest { assertThat(fakeSliderController.getSliderPosition()).isEqualTo(position); verify(mFakeFeatureFactory.metricsFeatureProvider) - .action(eq(mContext), - eq(MetricsEvent.ACTION_SETTINGS_SLICE_CHANGED), - mLoggingNameArgumentCatpor.capture(), - mLoggingValueArgumentCatpor.capture()); - - final Pair namePair = mLoggingNameArgumentCatpor.getValue(); - final Pair valuePair = mLoggingValueArgumentCatpor.getValue(); - assertThat(namePair.first).isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME); - assertThat(namePair.second).isEqualTo(key); + .action(SettingsEnums.PAGE_UNKNOWN, + MetricsEvent.ACTION_SETTINGS_SLICE_CHANGED, + SettingsEnums.PAGE_UNKNOWN, + key, + position); verify(resolver).notifyChange(uri, null); - assertThat(valuePair.first) - .isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE); - assertThat(valuePair.second).isEqualTo(position); } @Test(expected = IllegalArgumentException.class) diff --git a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java index 43712788312..2e2104be7c0 100644 --- a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java +++ b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java @@ -18,11 +18,11 @@ package com.android.settings.slices; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import android.app.settings.SettingsEnums; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -52,7 +52,6 @@ import com.android.settings.testutils.SliceTester; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; import org.robolectric.RuntimeEnvironment; @RunWith(SettingsRobolectricTestRunner.class) @@ -77,14 +76,11 @@ public class SliceBuilderUtilsTest { private Context mContext; private FakeFeatureFactory mFeatureFactory; - private ArgumentCaptor> mLoggingArgumentCatpor; @Before public void setUp() { mContext = RuntimeEnvironment.application; mFeatureFactory = FakeFeatureFactory.setupForTest(); - mLoggingArgumentCatpor = ArgumentCaptor.forClass(Pair.class); - // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); } @@ -103,14 +99,11 @@ public class SliceBuilderUtilsTest { final Slice slice = SliceBuilderUtils.buildSlice(mContext, dummyData); verify(mFeatureFactory.metricsFeatureProvider) - .action(eq(mContext), eq(MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED), - mLoggingArgumentCatpor.capture()); - final Pair capturedLoggingPair = mLoggingArgumentCatpor.getValue(); - - assertThat(capturedLoggingPair.first) - .isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME); - assertThat(capturedLoggingPair.second) - .isEqualTo(dummyData.getKey()); + .action(SettingsEnums.PAGE_UNKNOWN, + MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED, + SettingsEnums.PAGE_UNKNOWN, + dummyData.getKey(), + 0); SliceTester.testSettingsToggleSlice(mContext, slice, dummyData); } @@ -120,14 +113,11 @@ public class SliceBuilderUtilsTest { final Slice slice = SliceBuilderUtils.buildSlice(mContext, data); verify(mFeatureFactory.metricsFeatureProvider) - .action(eq(mContext), eq(MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED), - mLoggingArgumentCatpor.capture()); - final Pair capturedLoggingPair = mLoggingArgumentCatpor.getValue(); - - assertThat(capturedLoggingPair.first) - .isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME); - assertThat(capturedLoggingPair.second) - .isEqualTo(data.getKey()); + .action(SettingsEnums.PAGE_UNKNOWN, + MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED, + SettingsEnums.PAGE_UNKNOWN, + data.getKey(), + 0); SliceTester.testSettingsSliderSlice(mContext, slice, data); } @@ -137,14 +127,11 @@ public class SliceBuilderUtilsTest { final Slice slice = SliceBuilderUtils.buildSlice(mContext, dummyData); verify(mFeatureFactory.metricsFeatureProvider) - .action(eq(mContext), eq(MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED), - mLoggingArgumentCatpor.capture()); - final Pair capturedLoggingPair = mLoggingArgumentCatpor.getValue(); - - assertThat(capturedLoggingPair.first) - .isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME); - assertThat(capturedLoggingPair.second) - .isEqualTo(dummyData.getKey()); + .action(SettingsEnums.PAGE_UNKNOWN, + MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED, + SettingsEnums.PAGE_UNKNOWN, + dummyData.getKey(), + 0); SliceTester.testSettingsCopyableSlice(mContext, slice, dummyData); } @@ -390,14 +377,12 @@ public class SliceBuilderUtilsTest { final Slice slice = SliceBuilderUtils.buildSlice(mContext, data); verify(mFeatureFactory.metricsFeatureProvider) - .action(eq(mContext), eq(MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED), - mLoggingArgumentCatpor.capture()); - final Pair capturedLoggingPair = mLoggingArgumentCatpor.getValue(); + .action(SettingsEnums.PAGE_UNKNOWN, + MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED, + SettingsEnums.PAGE_UNKNOWN, + data.getKey(), + 0); - assertThat(capturedLoggingPair.first) - .isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME); - assertThat(capturedLoggingPair.second) - .isEqualTo(data.getKey()); SliceTester.testSettingsUnavailableSlice(mContext, slice, data); } @@ -412,16 +397,11 @@ public class SliceBuilderUtilsTest { final Slice slice = SliceBuilderUtils.buildSlice(mContext, data); verify(mFeatureFactory.metricsFeatureProvider) - .action(eq(mContext), eq(MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED), - mLoggingArgumentCatpor.capture()); - - final Pair capturedLoggingPair = mLoggingArgumentCatpor.getValue(); - - assertThat(capturedLoggingPair.first) - .isEqualTo(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME); - assertThat(capturedLoggingPair.second) - .isEqualTo(data.getKey()); - assertThat(slice).isNull(); + .action(SettingsEnums.PAGE_UNKNOWN, + MetricsEvent.ACTION_SETTINGS_SLICE_REQUESTED, + SettingsEnums.PAGE_UNKNOWN, + data.getKey(), + 0); } @Test