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