Migrate to use instrumentation classes from settingslib.
Test: Compiles. Manually tested. Change-Id: I70a6e76cc8440547746ecc008c32bd06a7de8161
This commit is contained in:
@@ -30,8 +30,8 @@ import android.support.v7.preference.Preference;
|
|||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.internal.telephony.PhoneStateIntentReceiver;
|
import com.android.internal.telephony.PhoneStateIntentReceiver;
|
||||||
import com.android.internal.telephony.TelephonyProperties;
|
import com.android.internal.telephony.TelephonyProperties;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settingslib.WirelessUtils;
|
import com.android.settingslib.WirelessUtils;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListener {
|
public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListener {
|
||||||
|
|
||||||
|
@@ -49,8 +49,9 @@ import android.widget.Switch;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.core.instrumentation.Instrumentable;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
|
|
||||||
import org.xmlpull.v1.XmlPullParserException;
|
import org.xmlpull.v1.XmlPullParserException;
|
||||||
|
|
||||||
@@ -63,8 +64,7 @@ import java.util.List;
|
|||||||
public class DeviceAdminSettings extends ListFragment implements Instrumentable {
|
public class DeviceAdminSettings extends ListFragment implements Instrumentable {
|
||||||
static final String TAG = "DeviceAdminSettings";
|
static final String TAG = "DeviceAdminSettings";
|
||||||
|
|
||||||
private final VisibilityLoggerMixin mVisibilityLoggerMixin =
|
private VisibilityLoggerMixin mVisibilityLoggerMixin;
|
||||||
new VisibilityLoggerMixin(getMetricsCategory());
|
|
||||||
private DevicePolicyManager mDPM;
|
private DevicePolicyManager mDPM;
|
||||||
private UserManager mUm;
|
private UserManager mUm;
|
||||||
|
|
||||||
@@ -85,12 +85,6 @@ public class DeviceAdminSettings extends ListFragment implements Instrumentable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onAttach(Context context) {
|
|
||||||
super.onAttach(context);
|
|
||||||
mVisibilityLoggerMixin.onAttach(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal collection of device admin info objects for all profiles associated with the current
|
* Internal collection of device admin info objects for all profiles associated with the current
|
||||||
* user.
|
* user.
|
||||||
@@ -121,6 +115,8 @@ public class DeviceAdminSettings extends ListFragment implements Instrumentable
|
|||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
|
mVisibilityLoggerMixin = new VisibilityLoggerMixin(getMetricsCategory(),
|
||||||
|
FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -56,13 +56,13 @@ import com.android.settings.Settings.WifiSettingsActivity;
|
|||||||
import com.android.settings.applications.manageapplications.ManageApplications;
|
import com.android.settings.applications.manageapplications.ManageApplications;
|
||||||
import com.android.settings.backup.BackupSettingsActivity;
|
import com.android.settings.backup.BackupSettingsActivity;
|
||||||
import com.android.settings.core.gateway.SettingsGateway;
|
import com.android.settings.core.gateway.SettingsGateway;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.core.instrumentation.SharedPreferencesLogger;
|
|
||||||
import com.android.settings.dashboard.DashboardFeatureProvider;
|
import com.android.settings.dashboard.DashboardFeatureProvider;
|
||||||
import com.android.settings.dashboard.DashboardSummary;
|
import com.android.settings.dashboard.DashboardSummary;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.wfd.WifiDisplaySettings;
|
import com.android.settings.wfd.WifiDisplaySettings;
|
||||||
import com.android.settings.widget.SwitchBar;
|
import com.android.settings.widget.SwitchBar;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
import com.android.settingslib.core.instrumentation.SharedPreferencesLogger;
|
||||||
import com.android.settingslib.development.DevelopmentSettingsEnabler;
|
import com.android.settingslib.development.DevelopmentSettingsEnabler;
|
||||||
import com.android.settingslib.drawer.DashboardCategory;
|
import com.android.settingslib.drawer.DashboardCategory;
|
||||||
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
||||||
@@ -92,11 +92,6 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
*/
|
*/
|
||||||
public static final String EXTRA_SHOW_FRAGMENT = ":settings:show_fragment";
|
public static final String EXTRA_SHOW_FRAGMENT = ":settings:show_fragment";
|
||||||
|
|
||||||
/**
|
|
||||||
* The metrics category constant for logging source when a setting fragment is opened.
|
|
||||||
*/
|
|
||||||
public static final String EXTRA_SOURCE_METRICS_CATEGORY = ":settings:source_metrics";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When starting this activity and using {@link #EXTRA_SHOW_FRAGMENT},
|
* When starting this activity and using {@link #EXTRA_SHOW_FRAGMENT},
|
||||||
* this extra can also be specified to supply a Bundle of arguments to pass
|
* this extra can also be specified to supply a Bundle of arguments to pass
|
||||||
@@ -220,7 +215,8 @@ public class SettingsActivity extends SettingsDrawerActivity
|
|||||||
@Override
|
@Override
|
||||||
public SharedPreferences getSharedPreferences(String name, int mode) {
|
public SharedPreferences getSharedPreferences(String name, int mode) {
|
||||||
if (name.equals(getPackageName() + "_preferences")) {
|
if (name.equals(getPackageName() + "_preferences")) {
|
||||||
return new SharedPreferencesLogger(this, getMetricsTag());
|
return new SharedPreferencesLogger(this, getMetricsTag(),
|
||||||
|
FeatureFactory.getFactory(this).getMetricsFeatureProvider());
|
||||||
}
|
}
|
||||||
return super.getSharedPreferences(name, mode);
|
return super.getSharedPreferences(name, mode);
|
||||||
}
|
}
|
||||||
|
@@ -45,7 +45,6 @@ import android.widget.Button;
|
|||||||
|
|
||||||
import com.android.settings.applications.LayoutPreference;
|
import com.android.settings.applications.LayoutPreference;
|
||||||
import com.android.settings.core.InstrumentedPreferenceFragment;
|
import com.android.settings.core.InstrumentedPreferenceFragment;
|
||||||
import com.android.settings.core.instrumentation.Instrumentable;
|
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
import com.android.settings.search.actionbar.SearchMenuController;
|
import com.android.settings.search.actionbar.SearchMenuController;
|
||||||
import com.android.settings.support.actionbar.HelpMenuController;
|
import com.android.settings.support.actionbar.HelpMenuController;
|
||||||
@@ -53,6 +52,7 @@ import com.android.settings.support.actionbar.HelpResourceProvider;
|
|||||||
import com.android.settings.widget.LoadingViewController;
|
import com.android.settings.widget.LoadingViewController;
|
||||||
import com.android.settingslib.CustomDialogPreference;
|
import com.android.settingslib.CustomDialogPreference;
|
||||||
import com.android.settingslib.CustomEditTextPreference;
|
import com.android.settingslib.CustomEditTextPreference;
|
||||||
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
import com.android.settingslib.widget.FooterPreferenceMixin;
|
import com.android.settingslib.widget.FooterPreferenceMixin;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@@ -110,6 +110,7 @@ import com.android.internal.widget.LockPatternUtils;
|
|||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
||||||
import com.android.settings.wrapper.FingerprintManagerWrapper;
|
import com.android.settings.wrapper.FingerprintManagerWrapper;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -577,7 +578,7 @@ public final class Utils extends com.android.settingslib.Utils {
|
|||||||
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, titleResId);
|
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, titleResId);
|
||||||
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, title);
|
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, title);
|
||||||
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SHORTCUT, isShortcut);
|
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SHORTCUT, isShortcut);
|
||||||
intent.putExtra(SettingsActivity.EXTRA_SOURCE_METRICS_CATEGORY, sourceMetricsCategory);
|
intent.putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY, sourceMetricsCategory);
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -51,12 +51,12 @@ import com.android.settings.SettingsActivity;
|
|||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.SearchIndexableRaw;
|
import com.android.settings.search.SearchIndexableRaw;
|
||||||
import com.android.settingslib.RestrictedPreference;
|
import com.android.settingslib.RestrictedPreference;
|
||||||
import com.android.settingslib.accounts.AuthenticatorHelper;
|
import com.android.settingslib.accounts.AuthenticatorHelper;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnPause;
|
import com.android.settingslib.core.lifecycle.events.OnPause;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnResume;
|
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||||
|
@@ -37,8 +37,8 @@ import com.android.internal.annotations.VisibleForTesting;
|
|||||||
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.applications.AppStateUsageBridge.UsageState;
|
import com.android.settings.applications.AppStateUsageBridge.UsageState;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
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 {
|
||||||
|
@@ -33,10 +33,10 @@ import android.widget.ImageView;
|
|||||||
|
|
||||||
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.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.widget.GearPreference;
|
import com.android.settings.widget.GearPreference;
|
||||||
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
|
import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
|
||||||
|
|
||||||
|
@@ -23,9 +23,9 @@ import android.support.v7.preference.Preference;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
|
import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
public class BluetoothDeviceRenamePreferenceController extends
|
public class BluetoothDeviceRenamePreferenceController extends
|
||||||
|
@@ -27,12 +27,12 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.widget.SwitchWidgetController;
|
import com.android.settings.widget.SwitchWidgetController;
|
||||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
import com.android.settingslib.WirelessUtils;
|
import com.android.settingslib.WirelessUtils;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
|
import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* BluetoothEnabler is a helper to manage the Bluetooth on/off checkbox
|
* BluetoothEnabler is a helper to manage the Bluetooth on/off checkbox
|
||||||
|
@@ -23,9 +23,9 @@ import android.support.v7.preference.Preference;
|
|||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controller that shows received files
|
* Controller that shows received files
|
||||||
|
@@ -16,8 +16,11 @@
|
|||||||
|
|
||||||
package com.android.settings.core;
|
package com.android.settings.core;
|
||||||
|
|
||||||
import com.android.settings.core.instrumentation.Instrumentable;
|
import android.os.Bundle;
|
||||||
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
import com.android.settingslib.core.lifecycle.ObservableActivity;
|
import com.android.settingslib.core.lifecycle.ObservableActivity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -25,9 +28,11 @@ import com.android.settingslib.core.lifecycle.ObservableActivity;
|
|||||||
*/
|
*/
|
||||||
public abstract class InstrumentedActivity extends ObservableActivity implements Instrumentable {
|
public abstract class InstrumentedActivity extends ObservableActivity implements Instrumentable {
|
||||||
|
|
||||||
public InstrumentedActivity() {
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
// Mixin that logs visibility change for activity.
|
// Mixin that logs visibility change for activity.
|
||||||
getLifecycle().addObserver(new VisibilityLoggerMixin(getMetricsCategory()));
|
getLifecycle().addObserver(new VisibilityLoggerMixin(getMetricsCategory(),
|
||||||
|
FeatureFactory.getFactory(this).getMetricsFeatureProvider()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -18,30 +18,28 @@ package com.android.settings.core;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.android.settings.core.instrumentation.Instrumentable;
|
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.survey.SurveyMixin;
|
import com.android.settings.survey.SurveyMixin;
|
||||||
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
import com.android.settingslib.core.lifecycle.ObservableFragment;
|
import com.android.settingslib.core.lifecycle.ObservableFragment;
|
||||||
|
|
||||||
public abstract class InstrumentedFragment extends ObservableFragment implements Instrumentable {
|
public abstract class InstrumentedFragment extends ObservableFragment implements Instrumentable {
|
||||||
|
|
||||||
protected MetricsFeatureProvider mMetricsFeatureProvider;
|
protected MetricsFeatureProvider mMetricsFeatureProvider;
|
||||||
|
|
||||||
private final VisibilityLoggerMixin mVisibilityLoggerMixin;
|
private VisibilityLoggerMixin mVisibilityLoggerMixin;
|
||||||
|
|
||||||
public InstrumentedFragment() {
|
|
||||||
// Mixin that logs visibility change for activity.
|
|
||||||
mVisibilityLoggerMixin = new VisibilityLoggerMixin(getMetricsCategory());
|
|
||||||
getLifecycle().addObserver(mVisibilityLoggerMixin);
|
|
||||||
getLifecycle().addObserver(new SurveyMixin(this, getClass().getSimpleName()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
|
||||||
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
||||||
|
mVisibilityLoggerMixin = new VisibilityLoggerMixin(getMetricsCategory(),
|
||||||
|
mMetricsFeatureProvider);
|
||||||
|
// Mixin that logs visibility change for activity.
|
||||||
|
getLifecycle().addObserver(mVisibilityLoggerMixin);
|
||||||
|
getLifecycle().addObserver(new SurveyMixin(this, getClass().getSimpleName()));
|
||||||
|
super.onAttach(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -23,11 +23,11 @@ import android.support.v7.preference.PreferenceScreen;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settings.core.instrumentation.Instrumentable;
|
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.survey.SurveyMixin;
|
import com.android.settings.survey.SurveyMixin;
|
||||||
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
import com.android.settingslib.core.lifecycle.ObservablePreferenceFragment;
|
import com.android.settingslib.core.lifecycle.ObservablePreferenceFragment;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -44,19 +44,17 @@ public abstract class InstrumentedPreferenceFragment extends ObservablePreferenc
|
|||||||
// metrics placeholder value. Only use this for development.
|
// metrics placeholder value. Only use this for development.
|
||||||
protected final int PLACEHOLDER_METRIC = 10000;
|
protected final int PLACEHOLDER_METRIC = 10000;
|
||||||
|
|
||||||
private final VisibilityLoggerMixin mVisibilityLoggerMixin;
|
private VisibilityLoggerMixin mVisibilityLoggerMixin;
|
||||||
|
|
||||||
public InstrumentedPreferenceFragment() {
|
|
||||||
// Mixin that logs visibility change for activity.
|
|
||||||
mVisibilityLoggerMixin = new VisibilityLoggerMixin(getMetricsCategory());
|
|
||||||
getLifecycle().addObserver(mVisibilityLoggerMixin);
|
|
||||||
getLifecycle().addObserver(new SurveyMixin(this, getClass().getSimpleName()));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
|
||||||
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
||||||
|
// Mixin that logs visibility change for activity.
|
||||||
|
mVisibilityLoggerMixin = new VisibilityLoggerMixin(getMetricsCategory(),
|
||||||
|
mMetricsFeatureProvider);
|
||||||
|
getLifecycle().addObserver(mVisibilityLoggerMixin);
|
||||||
|
getLifecycle().addObserver(new SurveyMixin(this, getClass().getSimpleName()));
|
||||||
|
super.onAttach(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -1,110 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.settings.core.instrumentation;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.metrics.LogMaker;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.util.Pair;
|
|
||||||
|
|
||||||
import com.android.internal.logging.MetricsLogger;
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link LogWriter} that writes data to eventlog.
|
|
||||||
*/
|
|
||||||
public class EventLogWriter implements LogWriter {
|
|
||||||
|
|
||||||
private final MetricsLogger mMetricsLogger = new MetricsLogger();
|
|
||||||
|
|
||||||
public void visible(Context context, int source, int category) {
|
|
||||||
final LogMaker logMaker = new LogMaker(category)
|
|
||||||
.setType(MetricsProto.MetricsEvent.TYPE_OPEN)
|
|
||||||
.addTaggedData(MetricsProto.MetricsEvent.FIELD_CONTEXT, source);
|
|
||||||
MetricsLogger.action(logMaker);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void hidden(Context context, int category) {
|
|
||||||
MetricsLogger.hidden(context, category);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void action(int category, int value, Pair<Integer, Object>... taggedData) {
|
|
||||||
if (taggedData == null || taggedData.length == 0) {
|
|
||||||
mMetricsLogger.action(category, value);
|
|
||||||
} else {
|
|
||||||
final LogMaker logMaker = new LogMaker(category)
|
|
||||||
.setType(MetricsProto.MetricsEvent.TYPE_ACTION)
|
|
||||||
.setSubtype(value);
|
|
||||||
for (Pair<Integer, Object> pair : taggedData) {
|
|
||||||
logMaker.addTaggedData(pair.first, pair.second);
|
|
||||||
}
|
|
||||||
mMetricsLogger.write(logMaker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void action(int category, boolean value, Pair<Integer, Object>... taggedData) {
|
|
||||||
action(category, value ? 1 : 0, taggedData);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void action(Context context, int category, Pair<Integer, Object>... taggedData) {
|
|
||||||
action(context, category, "", taggedData);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void actionWithSource(Context context, int source, int category) {
|
|
||||||
final LogMaker logMaker = new LogMaker(category)
|
|
||||||
.setType(MetricsProto.MetricsEvent.TYPE_ACTION);
|
|
||||||
if (source != MetricsProto.MetricsEvent.VIEW_UNKNOWN) {
|
|
||||||
logMaker.addTaggedData(MetricsProto.MetricsEvent.FIELD_CONTEXT, source);
|
|
||||||
}
|
|
||||||
MetricsLogger.action(logMaker);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @deprecated use {@link #action(int, int, Pair[])} */
|
|
||||||
@Deprecated
|
|
||||||
public void action(Context context, int category, int value) {
|
|
||||||
MetricsLogger.action(context, category, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @deprecated use {@link #action(int, boolean, Pair[])} */
|
|
||||||
@Deprecated
|
|
||||||
public void action(Context context, int category, boolean value) {
|
|
||||||
MetricsLogger.action(context, category, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void action(Context context, int category, String pkg,
|
|
||||||
Pair<Integer, Object>... taggedData) {
|
|
||||||
if (taggedData == null || taggedData.length == 0) {
|
|
||||||
MetricsLogger.action(context, category, pkg);
|
|
||||||
} else {
|
|
||||||
final LogMaker logMaker = new LogMaker(category)
|
|
||||||
.setType(MetricsProto.MetricsEvent.TYPE_ACTION)
|
|
||||||
.setPackageName(pkg);
|
|
||||||
for (Pair<Integer, Object> pair : taggedData) {
|
|
||||||
logMaker.addTaggedData(pair.first, pair.second);
|
|
||||||
}
|
|
||||||
MetricsLogger.action(logMaker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void count(Context context, String name, int value) {
|
|
||||||
MetricsLogger.count(context, name, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void histogram(Context context, String name, int bucket) {
|
|
||||||
MetricsLogger.histogram(context, name, bucket);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.settings.core.instrumentation;
|
|
||||||
|
|
||||||
public interface Instrumentable {
|
|
||||||
|
|
||||||
int METRICS_CATEGORY_UNKNOWN = 0;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instrumented name for a view as defined in
|
|
||||||
* {@link com.android.internal.logging.nano.MetricsProto.MetricsEvent}.
|
|
||||||
*/
|
|
||||||
int getMetricsCategory();
|
|
||||||
}
|
|
@@ -19,6 +19,9 @@ import android.content.Context;
|
|||||||
|
|
||||||
import com.android.settings.DialogCreatable;
|
import com.android.settings.DialogCreatable;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
import com.android.settingslib.core.lifecycle.ObservableDialogFragment;
|
import com.android.settingslib.core.lifecycle.ObservableDialogFragment;
|
||||||
|
|
||||||
public abstract class InstrumentedDialogFragment extends ObservableDialogFragment
|
public abstract class InstrumentedDialogFragment extends ObservableDialogFragment
|
||||||
@@ -38,13 +41,15 @@ public abstract class InstrumentedDialogFragment extends ObservableDialogFragmen
|
|||||||
public InstrumentedDialogFragment(DialogCreatable dialogCreatable, int dialogId) {
|
public InstrumentedDialogFragment(DialogCreatable dialogCreatable, int dialogId) {
|
||||||
mDialogCreatable = dialogCreatable;
|
mDialogCreatable = dialogCreatable;
|
||||||
mDialogId = dialogId;
|
mDialogId = dialogId;
|
||||||
mLifecycle.addObserver(new VisibilityLoggerMixin(getMetricsCategory()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Context context) {
|
public void onAttach(Context context) {
|
||||||
super.onAttach(context);
|
super.onAttach(context);
|
||||||
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
mMetricsFeatureProvider = FeatureFactory.getFactory(context)
|
||||||
|
.getMetricsFeatureProvider();
|
||||||
|
mLifecycle.addObserver(new VisibilityLoggerMixin(getMetricsCategory(),
|
||||||
|
mMetricsFeatureProvider));
|
||||||
|
mLifecycle.onAttach(context);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,84 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package com.android.settings.core.instrumentation;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.util.Pair;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generic log writer interface.
|
|
||||||
*/
|
|
||||||
public interface LogWriter {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs a visibility event when view becomes visible.
|
|
||||||
*/
|
|
||||||
void visible(Context context, int source, int category);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs a visibility event when view becomes hidden.
|
|
||||||
*/
|
|
||||||
void hidden(Context context, int category);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs a user action.
|
|
||||||
*/
|
|
||||||
void action(int category, int value, Pair<Integer, Object>... taggedData);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs a user action.
|
|
||||||
*/
|
|
||||||
void action(int category, boolean value, Pair<Integer, Object>... taggedData);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs an user action.
|
|
||||||
*/
|
|
||||||
void action(Context context, int category, Pair<Integer, Object>... taggedData);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs an user action.
|
|
||||||
*/
|
|
||||||
void actionWithSource(Context context, int source, int category);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs an user action.
|
|
||||||
* @deprecated use {@link #action(int, int, Pair[])}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
void action(Context context, int category, int value);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs an user action.
|
|
||||||
* @deprecated use {@link #action(int, boolean, Pair[])}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
void action(Context context, int category, boolean value);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs an user action.
|
|
||||||
*/
|
|
||||||
void action(Context context, int category, String pkg, Pair<Integer, Object>... taggedData);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs a count.
|
|
||||||
*/
|
|
||||||
void count(Context context, String name, int value);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs a histogram event.
|
|
||||||
*/
|
|
||||||
void histogram(Context context, String name, int bucket);
|
|
||||||
}
|
|
@@ -1,159 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package com.android.settings.core.instrumentation;
|
|
||||||
|
|
||||||
import android.content.ComponentName;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.text.TextUtils;
|
|
||||||
import android.util.Pair;
|
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* FeatureProvider for metrics.
|
|
||||||
*/
|
|
||||||
public class MetricsFeatureProvider {
|
|
||||||
private List<LogWriter> mLoggerWriters;
|
|
||||||
|
|
||||||
public MetricsFeatureProvider() {
|
|
||||||
mLoggerWriters = new ArrayList<>();
|
|
||||||
installLogWriters();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void installLogWriters() {
|
|
||||||
mLoggerWriters.add(new EventLogWriter());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void visible(Context context, int source, int category) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.visible(context, source, category);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void hidden(Context context, int category) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.hidden(context, category);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void actionWithSource(Context context, int source, int category) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.actionWithSource(context, source, category);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs a user action. Includes the elapsed time since the containing
|
|
||||||
* fragment has been visible.
|
|
||||||
*/
|
|
||||||
public void action(VisibilityLoggerMixin visibilityLogger, int category, int value) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.action(category, value,
|
|
||||||
sinceVisibleTaggedData(visibilityLogger.elapsedTimeSinceVisible()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs a user action. Includes the elapsed time since the containing
|
|
||||||
* fragment has been visible.
|
|
||||||
*/
|
|
||||||
public void action(VisibilityLoggerMixin visibilityLogger, int category, boolean value) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.action(category, value,
|
|
||||||
sinceVisibleTaggedData(visibilityLogger.elapsedTimeSinceVisible()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void action(Context context, int category, Pair<Integer, Object>... taggedData) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.action(context, category, taggedData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @deprecated use {@link #action(VisibilityLoggerMixin, int, int)} */
|
|
||||||
@Deprecated
|
|
||||||
public void action(Context context, int category, int value) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.action(context, category, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @deprecated use {@link #action(VisibilityLoggerMixin, int, boolean)} */
|
|
||||||
@Deprecated
|
|
||||||
public void action(Context context, int category, boolean value) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.action(context, category, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void action(Context context, int category, String pkg,
|
|
||||||
Pair<Integer, Object>... taggedData) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.action(context, category, pkg, taggedData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void count(Context context, String name, int value) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.count(context, name, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void histogram(Context context, String name, int bucket) {
|
|
||||||
for (LogWriter writer : mLoggerWriters) {
|
|
||||||
writer.histogram(context, name, bucket);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getMetricsCategory(Object object) {
|
|
||||||
if (object == null || !(object instanceof Instrumentable)) {
|
|
||||||
return MetricsEvent.VIEW_UNKNOWN;
|
|
||||||
}
|
|
||||||
return ((Instrumentable) object).getMetricsCategory();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void logDashboardStartIntent(Context context, Intent intent,
|
|
||||||
int sourceMetricsCategory) {
|
|
||||||
if (intent == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final ComponentName cn = intent.getComponent();
|
|
||||||
if (cn == null) {
|
|
||||||
final String action = intent.getAction();
|
|
||||||
if (TextUtils.isEmpty(action)) {
|
|
||||||
// Not loggable
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
action(context, MetricsEvent.ACTION_SETTINGS_TILE_CLICK, action,
|
|
||||||
Pair.create(MetricsEvent.FIELD_CONTEXT, sourceMetricsCategory));
|
|
||||||
return;
|
|
||||||
} else if (TextUtils.equals(cn.getPackageName(), context.getPackageName())) {
|
|
||||||
// Going to a Setting internal page, skip click logging in favor of page's own
|
|
||||||
// visibility logging.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
action(context, MetricsEvent.ACTION_SETTINGS_TILE_CLICK, cn.flattenToString(),
|
|
||||||
Pair.create(MetricsEvent.FIELD_CONTEXT, sourceMetricsCategory));
|
|
||||||
}
|
|
||||||
|
|
||||||
private Pair<Integer, Object> sinceVisibleTaggedData(long timestamp) {
|
|
||||||
return Pair.create(MetricsEvent.NOTIFICATION_SINCE_VISIBLE_MILLIS, timestamp);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,259 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
|
|
||||||
* except in compliance with the License. You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software distributed under the
|
|
||||||
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the specific language governing
|
|
||||||
* permissions and limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.settings.core.instrumentation;
|
|
||||||
|
|
||||||
import android.annotation.Nullable;
|
|
||||||
import android.content.ComponentName;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.os.AsyncTask;
|
|
||||||
import android.support.annotation.VisibleForTesting;
|
|
||||||
import android.text.TextUtils;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.util.Pair;
|
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.ConcurrentSkipListSet;
|
|
||||||
|
|
||||||
public class SharedPreferencesLogger implements SharedPreferences {
|
|
||||||
|
|
||||||
private static final String LOG_TAG = "SharedPreferencesLogger";
|
|
||||||
|
|
||||||
private final String mTag;
|
|
||||||
private final Context mContext;
|
|
||||||
private final MetricsFeatureProvider mMetricsFeature;
|
|
||||||
private final Set<String> mPreferenceKeySet;
|
|
||||||
|
|
||||||
public SharedPreferencesLogger(Context context, String tag) {
|
|
||||||
mContext = context;
|
|
||||||
mTag = tag;
|
|
||||||
mMetricsFeature = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
|
||||||
mPreferenceKeySet = new ConcurrentSkipListSet<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, ?> getAll() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getString(String key, @Nullable String defValue) {
|
|
||||||
return defValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Set<String> getStringSet(String key, @Nullable Set<String> defValues) {
|
|
||||||
return defValues;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getInt(String key, int defValue) {
|
|
||||||
return defValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public long getLong(String key, long defValue) {
|
|
||||||
return defValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getFloat(String key, float defValue) {
|
|
||||||
return defValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean getBoolean(String key, boolean defValue) {
|
|
||||||
return defValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean contains(String key) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Editor edit() {
|
|
||||||
return new EditorLogger();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void registerOnSharedPreferenceChangeListener(
|
|
||||||
OnSharedPreferenceChangeListener listener) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void unregisterOnSharedPreferenceChangeListener(
|
|
||||||
OnSharedPreferenceChangeListener listener) {
|
|
||||||
}
|
|
||||||
|
|
||||||
private void logValue(String key, Object value) {
|
|
||||||
logValue(key, value, false /* forceLog */);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void logValue(String key, Object value, boolean forceLog) {
|
|
||||||
final String prefKey = buildPrefKey(mTag, key);
|
|
||||||
if (!forceLog && !mPreferenceKeySet.contains(prefKey)) {
|
|
||||||
// Pref key doesn't exist in set, this is initial display so we skip metrics but
|
|
||||||
// keeps track of this key.
|
|
||||||
mPreferenceKeySet.add(prefKey);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// TODO: Remove count logging to save some resource.
|
|
||||||
mMetricsFeature.count(mContext, buildCountName(prefKey, value), 1);
|
|
||||||
|
|
||||||
final Pair<Integer, Object> valueData;
|
|
||||||
if (value instanceof Long) {
|
|
||||||
final Long longVal = (Long) value;
|
|
||||||
final int intVal;
|
|
||||||
if (longVal > Integer.MAX_VALUE) {
|
|
||||||
intVal = Integer.MAX_VALUE;
|
|
||||||
} else if (longVal < Integer.MIN_VALUE) {
|
|
||||||
intVal = Integer.MIN_VALUE;
|
|
||||||
} else {
|
|
||||||
intVal = longVal.intValue();
|
|
||||||
}
|
|
||||||
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE,
|
|
||||||
intVal);
|
|
||||||
} else if (value instanceof Integer) {
|
|
||||||
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE,
|
|
||||||
value);
|
|
||||||
} else if (value instanceof Boolean) {
|
|
||||||
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE,
|
|
||||||
(Boolean) value ? 1 : 0);
|
|
||||||
} else if (value instanceof Float) {
|
|
||||||
valueData = Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE,
|
|
||||||
value);
|
|
||||||
} else if (value instanceof String) {
|
|
||||||
Log.d(LOG_TAG, "Tried to log string preference " + prefKey + " = " + value);
|
|
||||||
valueData = null;
|
|
||||||
} else {
|
|
||||||
Log.w(LOG_TAG, "Tried to log unloggable object" + value);
|
|
||||||
valueData = null;
|
|
||||||
}
|
|
||||||
if (valueData != null) {
|
|
||||||
// Pref key exists in set, log it's change in metrics.
|
|
||||||
mMetricsFeature.action(mContext, MetricsEvent.ACTION_SETTINGS_PREFERENCE_CHANGE,
|
|
||||||
Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME, prefKey),
|
|
||||||
valueData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
void logPackageName(String key, String value) {
|
|
||||||
final String prefKey = mTag + "/" + key;
|
|
||||||
mMetricsFeature.action(mContext, MetricsEvent.ACTION_SETTINGS_PREFERENCE_CHANGE, value,
|
|
||||||
Pair.create(MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME, prefKey));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void safeLogValue(String key, String value) {
|
|
||||||
new AsyncPackageCheck().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, key, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String buildCountName(String prefKey, Object value) {
|
|
||||||
return prefKey + "|" + value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String buildPrefKey(String tag, String key) {
|
|
||||||
return tag + "/" + key;
|
|
||||||
}
|
|
||||||
|
|
||||||
private class AsyncPackageCheck extends AsyncTask<String, Void, Void> {
|
|
||||||
@Override
|
|
||||||
protected Void doInBackground(String... params) {
|
|
||||||
String key = params[0];
|
|
||||||
String value = params[1];
|
|
||||||
PackageManager pm = mContext.getPackageManager();
|
|
||||||
try {
|
|
||||||
// Check if this might be a component.
|
|
||||||
ComponentName name = ComponentName.unflattenFromString(value);
|
|
||||||
if (value != null) {
|
|
||||||
value = name.getPackageName();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
pm.getPackageInfo(value, PackageManager.MATCH_ANY_USER);
|
|
||||||
logPackageName(key, value);
|
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
|
||||||
// Clearly not a package, and it's unlikely this preference is in prefSet, so
|
|
||||||
// lets force log it.
|
|
||||||
logValue(key, value, true /* forceLog */);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class EditorLogger implements Editor {
|
|
||||||
@Override
|
|
||||||
public Editor putString(String key, @Nullable String value) {
|
|
||||||
safeLogValue(key, value);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Editor putStringSet(String key, @Nullable Set<String> values) {
|
|
||||||
safeLogValue(key, TextUtils.join(",", values));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Editor putInt(String key, int value) {
|
|
||||||
logValue(key, value);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Editor putLong(String key, long value) {
|
|
||||||
logValue(key, value);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Editor putFloat(String key, float value) {
|
|
||||||
logValue(key, value);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Editor putBoolean(String key, boolean value) {
|
|
||||||
logValue(key, value);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Editor remove(String key) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Editor clear() {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean commit() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void apply() {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,100 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.android.settings.core.instrumentation;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
|
|
||||||
import android.os.SystemClock;
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
|
||||||
import com.android.settings.SettingsActivity;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
|
||||||
import com.android.settingslib.core.lifecycle.events.OnAttach;
|
|
||||||
import com.android.settingslib.core.lifecycle.events.OnPause;
|
|
||||||
import com.android.settingslib.core.lifecycle.events.OnResume;
|
|
||||||
|
|
||||||
import static com.android.settings.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Logs visibility change of a fragment.
|
|
||||||
*/
|
|
||||||
public class VisibilityLoggerMixin implements LifecycleObserver, OnResume, OnPause, OnAttach {
|
|
||||||
|
|
||||||
private static final String TAG = "VisibilityLoggerMixin";
|
|
||||||
|
|
||||||
private final int mMetricsCategory;
|
|
||||||
|
|
||||||
private MetricsFeatureProvider mMetricsFeature;
|
|
||||||
private int mSourceMetricsCategory = MetricsProto.MetricsEvent.VIEW_UNKNOWN;
|
|
||||||
private long mVisibleTimestamp;
|
|
||||||
|
|
||||||
public VisibilityLoggerMixin(int metricsCategory) {
|
|
||||||
// MetricsFeature will be set during onAttach.
|
|
||||||
this(metricsCategory, null /* metricsFeature */);
|
|
||||||
}
|
|
||||||
|
|
||||||
public VisibilityLoggerMixin(int metricsCategory, MetricsFeatureProvider metricsFeature) {
|
|
||||||
mMetricsCategory = metricsCategory;
|
|
||||||
mMetricsFeature = metricsFeature;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onAttach(Context context) {
|
|
||||||
mMetricsFeature = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onResume() {
|
|
||||||
mVisibleTimestamp = SystemClock.elapsedRealtime();
|
|
||||||
if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
|
|
||||||
mMetricsFeature.visible(null /* context */, mSourceMetricsCategory, mMetricsCategory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPause() {
|
|
||||||
mVisibleTimestamp = 0;
|
|
||||||
if (mMetricsFeature != null && mMetricsCategory != METRICS_CATEGORY_UNKNOWN) {
|
|
||||||
mMetricsFeature.hidden(null /* context */, mMetricsCategory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets source metrics category for this logger. Source is the caller that opened this UI.
|
|
||||||
*/
|
|
||||||
public void setSourceMetricsCategory(Activity activity) {
|
|
||||||
if (mSourceMetricsCategory != MetricsProto.MetricsEvent.VIEW_UNKNOWN || activity == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final Intent intent = activity.getIntent();
|
|
||||||
if (intent == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mSourceMetricsCategory = intent.getIntExtra(SettingsActivity.EXTRA_SOURCE_METRICS_CATEGORY,
|
|
||||||
MetricsProto.MetricsEvent.VIEW_UNKNOWN);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Returns elapsed time since onResume() */
|
|
||||||
public long elapsedTimeSinceVisible() {
|
|
||||||
if (mVisibleTimestamp == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return SystemClock.elapsedRealtime() - mVisibleTimestamp;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -41,7 +41,6 @@ import android.widget.TextView;
|
|||||||
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.R.id;
|
import com.android.settings.R.id;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardData.SuggestionConditionHeaderData;
|
import com.android.settings.dashboard.DashboardData.SuggestionConditionHeaderData;
|
||||||
import com.android.settings.dashboard.conditional.Condition;
|
import com.android.settings.dashboard.conditional.Condition;
|
||||||
import com.android.settings.dashboard.conditional.ConditionAdapter;
|
import com.android.settings.dashboard.conditional.ConditionAdapter;
|
||||||
@@ -50,6 +49,7 @@ import com.android.settings.dashboard.suggestions.SuggestionControllerMixin;
|
|||||||
import com.android.settings.dashboard.suggestions.SuggestionDismissController;
|
import com.android.settings.dashboard.suggestions.SuggestionDismissController;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.Utils;
|
import com.android.settingslib.Utils;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.drawer.DashboardCategory;
|
import com.android.settingslib.drawer.DashboardCategory;
|
||||||
import com.android.settingslib.drawer.Tile;
|
import com.android.settingslib.drawer.Tile;
|
||||||
|
|
||||||
|
@@ -39,13 +39,13 @@ import android.widget.TextView;
|
|||||||
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.R.id;
|
import com.android.settings.R.id;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardDataV2.ConditionHeaderData;
|
import com.android.settings.dashboard.DashboardDataV2.ConditionHeaderData;
|
||||||
import com.android.settings.dashboard.conditional.Condition;
|
import com.android.settings.dashboard.conditional.Condition;
|
||||||
import com.android.settings.dashboard.conditional.ConditionAdapterV2;
|
import com.android.settings.dashboard.conditional.ConditionAdapterV2;
|
||||||
import com.android.settings.dashboard.suggestions.SuggestionAdapterV2;
|
import com.android.settings.dashboard.suggestions.SuggestionAdapterV2;
|
||||||
import com.android.settings.dashboard.suggestions.SuggestionControllerMixin;
|
import com.android.settings.dashboard.suggestions.SuggestionControllerMixin;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
||||||
|
@@ -41,8 +41,9 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
|||||||
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.FeatureFlags;
|
import com.android.settings.core.FeatureFlags;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
import com.android.settingslib.drawer.CategoryManager;
|
import com.android.settingslib.drawer.CategoryManager;
|
||||||
import com.android.settingslib.drawer.DashboardCategory;
|
import com.android.settingslib.drawer.DashboardCategory;
|
||||||
import com.android.settingslib.drawer.ProfileSelectDialog;
|
import com.android.settingslib.drawer.ProfileSelectDialog;
|
||||||
@@ -159,7 +160,8 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
|||||||
pref.setFragment(clsName);
|
pref.setFragment(clsName);
|
||||||
} else if (tile.intent != null) {
|
} else if (tile.intent != null) {
|
||||||
final Intent intent = new Intent(tile.intent);
|
final Intent intent = new Intent(tile.intent);
|
||||||
intent.putExtra(SettingsActivity.EXTRA_SOURCE_METRICS_CATEGORY, sourceMetricsCategory);
|
intent.putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY,
|
||||||
|
sourceMetricsCategory);
|
||||||
if (action != null) {
|
if (action != null) {
|
||||||
intent.setAction(action);
|
intent.setAction(action);
|
||||||
}
|
}
|
||||||
@@ -208,7 +210,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
final Intent intent = new Intent(tile.intent)
|
final Intent intent = new Intent(tile.intent)
|
||||||
.putExtra(SettingsActivity.EXTRA_SOURCE_METRICS_CATEGORY,
|
.putExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY,
|
||||||
MetricsEvent.DASHBOARD_SUMMARY)
|
MetricsEvent.DASHBOARD_SUMMARY)
|
||||||
.putExtra(SettingsDrawerActivity.EXTRA_SHOW_MENU, true)
|
.putExtra(SettingsDrawerActivity.EXTRA_SHOW_MENU, true)
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||||
|
@@ -24,8 +24,8 @@ import android.os.PersistableBundle;
|
|||||||
|
|
||||||
import android.support.annotation.VisibleForTesting;
|
import android.support.annotation.VisibleForTesting;
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
public abstract class Condition {
|
public abstract class Condition {
|
||||||
|
|
||||||
|
@@ -27,13 +27,13 @@ import android.widget.Button;
|
|||||||
|
|
||||||
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.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardAdapter;
|
import com.android.settings.dashboard.DashboardAdapter;
|
||||||
import com.android.settings.dashboard.DashboardAdapter.DashboardItemHolder;
|
import com.android.settings.dashboard.DashboardAdapter.DashboardItemHolder;
|
||||||
import com.android.settings.dashboard.DashboardData;
|
import com.android.settings.dashboard.DashboardData;
|
||||||
import com.android.settings.dashboard.DashboardData.HeaderMode;
|
import com.android.settings.dashboard.DashboardData.HeaderMode;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.WirelessUtils;
|
import com.android.settingslib.WirelessUtils;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@@ -27,10 +27,10 @@ import android.widget.Button;
|
|||||||
|
|
||||||
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.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardAdapterV2.DashboardItemHolder;
|
import com.android.settings.dashboard.DashboardAdapterV2.DashboardItemHolder;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.WirelessUtils;
|
import com.android.settingslib.WirelessUtils;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@@ -27,10 +27,10 @@ import android.view.ViewGroup;
|
|||||||
|
|
||||||
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.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardAdapter.DashboardItemHolder;
|
import com.android.settings.dashboard.DashboardAdapter.DashboardItemHolder;
|
||||||
import com.android.settings.dashboard.DashboardAdapter.IconCache;
|
import com.android.settings.dashboard.DashboardAdapter.IconCache;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@@ -31,10 +31,10 @@ import android.widget.LinearLayout;
|
|||||||
|
|
||||||
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.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardAdapterV2.DashboardItemHolder;
|
import com.android.settings.dashboard.DashboardAdapterV2.DashboardItemHolder;
|
||||||
import com.android.settings.dashboard.DashboardAdapterV2.IconCache;
|
import com.android.settings.dashboard.DashboardAdapterV2.IconCache;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
||||||
|
@@ -31,7 +31,6 @@ import android.util.Pair;
|
|||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.Settings.NightDisplaySuggestionActivity;
|
import com.android.settings.Settings.NightDisplaySuggestionActivity;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.fingerprint.FingerprintEnrollSuggestionActivity;
|
import com.android.settings.fingerprint.FingerprintEnrollSuggestionActivity;
|
||||||
import com.android.settings.fingerprint.FingerprintSuggestionActivity;
|
import com.android.settings.fingerprint.FingerprintSuggestionActivity;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
@@ -39,6 +38,7 @@ import com.android.settings.password.ScreenLockSuggestionActivity;
|
|||||||
import com.android.settings.support.NewDeviceIntroSuggestionActivity;
|
import com.android.settings.support.NewDeviceIntroSuggestionActivity;
|
||||||
import com.android.settings.wallpaper.WallpaperSuggestionActivity;
|
import com.android.settings.wallpaper.WallpaperSuggestionActivity;
|
||||||
import com.android.settings.wifi.WifiCallingSuggestionActivity;
|
import com.android.settings.wifi.WifiCallingSuggestionActivity;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.drawer.Tile;
|
import com.android.settingslib.drawer.Tile;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@@ -25,8 +25,8 @@ import android.os.RemoteException;
|
|||||||
import android.util.SparseIntArray;
|
import android.util.SparseIntArray;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.utils.ThreadUtils;
|
import com.android.settingslib.utils.ThreadUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@@ -35,8 +35,9 @@ import android.widget.TextView;
|
|||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.Instrumentable;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
import com.android.settingslib.datetime.ZoneGetter;
|
import com.android.settingslib.datetime.ZoneGetter;
|
||||||
|
|
||||||
import java.text.Collator;
|
import java.text.Collator;
|
||||||
@@ -57,8 +58,7 @@ public class ZonePicker extends ListFragment implements Instrumentable {
|
|||||||
|
|
||||||
private static final int MENU_TIMEZONE = Menu.FIRST+1;
|
private static final int MENU_TIMEZONE = Menu.FIRST+1;
|
||||||
private static final int MENU_ALPHABETICAL = Menu.FIRST;
|
private static final int MENU_ALPHABETICAL = Menu.FIRST;
|
||||||
private final VisibilityLoggerMixin mVisibilityLoggerMixin =
|
private VisibilityLoggerMixin mVisibilityLoggerMixin;
|
||||||
new VisibilityLoggerMixin(getMetricsCategory());
|
|
||||||
|
|
||||||
private boolean mSortedByTimezone;
|
private boolean mSortedByTimezone;
|
||||||
|
|
||||||
@@ -144,12 +144,6 @@ public class ZonePicker extends ListFragment implements Instrumentable {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onAttach(Context context) {
|
|
||||||
super.onAttach(context);
|
|
||||||
mVisibilityLoggerMixin.onAttach(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
return MetricsProto.MetricsEvent.ZONE_PICKER;
|
return MetricsProto.MetricsEvent.ZONE_PICKER;
|
||||||
@@ -169,6 +163,13 @@ public class ZonePicker extends ListFragment implements Instrumentable {
|
|||||||
activity.setTitle(R.string.date_time_set_timezone);
|
activity.setTitle(R.string.date_time_set_timezone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
mVisibilityLoggerMixin = new VisibilityLoggerMixin(getMetricsCategory(),
|
||||||
|
FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
|
@@ -23,10 +23,10 @@ import android.provider.Settings;
|
|||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
|
|
||||||
import com.android.internal.util.Preconditions;
|
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.widget.SwitchBar;
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
|
import com.android.internal.util.Preconditions;
|
||||||
|
import com.android.settings.widget.SwitchBar;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/** Handles the logic for flipping the storage management toggle on a {@link SwitchBar}. */
|
/** Handles the logic for flipping the storage management toggle on a {@link SwitchBar}. */
|
||||||
public class AutomaticStorageManagerSwitchBarController
|
public class AutomaticStorageManagerSwitchBarController
|
||||||
|
@@ -34,11 +34,11 @@ 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.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnResume;
|
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||||
|
@@ -25,12 +25,12 @@ import android.support.annotation.VisibleForTesting;
|
|||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.deletionhelper.ActivationWarningFragment;
|
import com.android.settings.deletionhelper.ActivationWarningFragment;
|
||||||
import com.android.settings.widget.MasterSwitchController;
|
import com.android.settings.widget.MasterSwitchController;
|
||||||
import com.android.settings.widget.MasterSwitchPreference;
|
import com.android.settings.widget.MasterSwitchPreference;
|
||||||
import com.android.settings.widget.SwitchWidgetController;
|
import com.android.settings.widget.SwitchWidgetController;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnResume;
|
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||||
|
|
||||||
|
@@ -38,11 +38,11 @@ import com.android.settings.Settings;
|
|||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.applications.manageapplications.ManageApplications;
|
import com.android.settings.applications.manageapplications.ManageApplications;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.deviceinfo.PrivateVolumeSettings.SystemInfoFragment;
|
import com.android.settings.deviceinfo.PrivateVolumeSettings.SystemInfoFragment;
|
||||||
import com.android.settings.deviceinfo.StorageItemPreference;
|
import com.android.settings.deviceinfo.StorageItemPreference;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.deviceinfo.StorageMeasurement;
|
import com.android.settingslib.deviceinfo.StorageMeasurement;
|
||||||
import com.android.settingslib.deviceinfo.StorageVolumeProvider;
|
import com.android.settingslib.deviceinfo.StorageVolumeProvider;
|
||||||
|
|
||||||
|
@@ -27,11 +27,11 @@ import android.support.v7.preference.Preference;
|
|||||||
import com.android.internal.hardware.AmbientDisplayConfiguration;
|
import com.android.internal.hardware.AmbientDisplayConfiguration;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.search.DatabaseIndexingUtils;
|
import com.android.settings.search.DatabaseIndexingUtils;
|
||||||
import com.android.settings.search.InlineSwitchPayload;
|
import com.android.settings.search.InlineSwitchPayload;
|
||||||
import com.android.settings.search.ResultPayload;
|
import com.android.settings.search.ResultPayload;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
public class AmbientDisplayNotificationsPreferenceController extends
|
public class AmbientDisplayNotificationsPreferenceController extends
|
||||||
AbstractPreferenceController implements PreferenceControllerMixin,
|
AbstractPreferenceController implements PreferenceControllerMixin,
|
||||||
|
@@ -23,13 +23,13 @@ import android.provider.SearchIndexableResource;
|
|||||||
import com.android.internal.hardware.AmbientDisplayConfiguration;
|
import com.android.internal.hardware.AmbientDisplayConfiguration;
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.gestures.DoubleTapScreenPreferenceController;
|
import com.android.settings.gestures.DoubleTapScreenPreferenceController;
|
||||||
import com.android.settings.gestures.PickupGesturePreferenceController;
|
import com.android.settings.gestures.PickupGesturePreferenceController;
|
||||||
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.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@@ -20,9 +20,9 @@ import android.support.v7.preference.TwoStatePreference;
|
|||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.internal.view.RotationPolicy;
|
import com.android.internal.view.RotationPolicy;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnPause;
|
import com.android.settingslib.core.lifecycle.events.OnPause;
|
||||||
|
@@ -29,9 +29,9 @@ import android.text.TextUtils;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import libcore.util.Objects;
|
import libcore.util.Objects;
|
||||||
|
|
||||||
|
@@ -48,7 +48,6 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.widget.ActionButtonPreference;
|
import com.android.settings.widget.ActionButtonPreference;
|
||||||
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
||||||
@@ -56,6 +55,7 @@ import com.android.settingslib.RestrictedLockUtils;
|
|||||||
import com.android.settingslib.applications.AppUtils;
|
import com.android.settingslib.applications.AppUtils;
|
||||||
import com.android.settingslib.applications.ApplicationsState;
|
import com.android.settingslib.applications.ApplicationsState;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
||||||
|
@@ -49,10 +49,10 @@ import com.android.settings.SettingsActivity;
|
|||||||
import com.android.settings.core.FeatureFlags;
|
import com.android.settings.core.FeatureFlags;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.fuelgauge.anomaly.Anomaly;
|
import com.android.settings.fuelgauge.anomaly.Anomaly;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
||||||
|
@@ -47,7 +47,6 @@ import com.android.settings.SettingsActivity;
|
|||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.applications.LayoutPreference;
|
import com.android.settings.applications.LayoutPreference;
|
||||||
import com.android.settings.applications.manageapplications.ManageApplications;
|
import com.android.settings.applications.manageapplications.ManageApplications;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.display.AmbientDisplayPreferenceController;
|
import com.android.settings.display.AmbientDisplayPreferenceController;
|
||||||
import com.android.settings.display.AutoBrightnessPreferenceController;
|
import com.android.settings.display.AutoBrightnessPreferenceController;
|
||||||
@@ -61,6 +60,7 @@ import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
|||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@@ -54,7 +54,6 @@ import com.android.settings.SettingsActivity;
|
|||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.applications.LayoutPreference;
|
import com.android.settings.applications.LayoutPreference;
|
||||||
import com.android.settings.applications.manageapplications.ManageApplications;
|
import com.android.settings.applications.manageapplications.ManageApplications;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.display.AmbientDisplayPreferenceController;
|
import com.android.settings.display.AmbientDisplayPreferenceController;
|
||||||
import com.android.settings.display.AutoBrightnessPreferenceController;
|
import com.android.settings.display.AutoBrightnessPreferenceController;
|
||||||
@@ -67,6 +66,7 @@ import com.android.settings.fuelgauge.anomaly.AnomalyLoader;
|
|||||||
import com.android.settings.fuelgauge.anomaly.AnomalySummaryPreferenceController;
|
import com.android.settings.fuelgauge.anomaly.AnomalySummaryPreferenceController;
|
||||||
import com.android.settings.fuelgauge.anomaly.AnomalyUtils;
|
import com.android.settings.fuelgauge.anomaly.AnomalyUtils;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@@ -24,7 +24,6 @@ import android.util.SparseIntArray;
|
|||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.internal.os.BatteryStatsHelper;
|
import com.android.internal.os.BatteryStatsHelper;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.fuelgauge.anomaly.action.AnomalyAction;
|
import com.android.settings.fuelgauge.anomaly.action.AnomalyAction;
|
||||||
import com.android.settings.fuelgauge.anomaly.action.ForceStopAction;
|
import com.android.settings.fuelgauge.anomaly.action.ForceStopAction;
|
||||||
import com.android.settings.fuelgauge.anomaly.action.LocationCheckAction;
|
import com.android.settings.fuelgauge.anomaly.action.LocationCheckAction;
|
||||||
@@ -33,6 +32,7 @@ import com.android.settings.fuelgauge.anomaly.checker.AnomalyDetector;
|
|||||||
import com.android.settings.fuelgauge.anomaly.checker.BluetoothScanAnomalyDetector;
|
import com.android.settings.fuelgauge.anomaly.checker.BluetoothScanAnomalyDetector;
|
||||||
import com.android.settings.fuelgauge.anomaly.checker.WakeLockAnomalyDetector;
|
import com.android.settings.fuelgauge.anomaly.checker.WakeLockAnomalyDetector;
|
||||||
import com.android.settings.fuelgauge.anomaly.checker.WakeupAlarmAnomalyDetector;
|
import com.android.settings.fuelgauge.anomaly.checker.WakeupAlarmAnomalyDetector;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@@ -20,9 +20,9 @@ import android.content.Context;
|
|||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.fuelgauge.anomaly.Anomaly;
|
import com.android.settings.fuelgauge.anomaly.Anomaly;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract class for anomaly action, which is triggered if we need to handle the anomaly
|
* Abstract class for anomaly action, which is triggered if we need to handle the anomaly
|
||||||
|
@@ -18,7 +18,7 @@ package com.android.settings.fuelgauge.batterytip.actions;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract class for battery tip action, which is triggered if we need to handle the battery tip
|
* Abstract class for battery tip action, which is triggered if we need to handle the battery tip
|
||||||
|
@@ -22,8 +22,8 @@ import android.support.v14.preference.PreferenceFragment;
|
|||||||
|
|
||||||
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.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.fuelgauge.SmartBatterySettings;
|
import com.android.settings.fuelgauge.SmartBatterySettings;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
public class SmartBatteryAction extends BatteryTipAction {
|
public class SmartBatteryAction extends BatteryTipAction {
|
||||||
private SettingsActivity mSettingsActivity;
|
private SettingsActivity mSettingsActivity;
|
||||||
|
@@ -42,10 +42,11 @@ import android.widget.SimpleCursorAdapter;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
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.instrumentation.Instrumentable;
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
|
|
||||||
public class UserDictionarySettings extends ListFragment implements Instrumentable,
|
public class UserDictionarySettings extends ListFragment implements Instrumentable,
|
||||||
LoaderManager.LoaderCallbacks<Cursor> {
|
LoaderManager.LoaderCallbacks<Cursor> {
|
||||||
@@ -59,8 +60,7 @@ public class UserDictionarySettings extends ListFragment implements Instrumentab
|
|||||||
private static final int OPTIONS_MENU_ADD = Menu.FIRST;
|
private static final int OPTIONS_MENU_ADD = Menu.FIRST;
|
||||||
private static final int LOADER_ID = 1;
|
private static final int LOADER_ID = 1;
|
||||||
|
|
||||||
private final VisibilityLoggerMixin mVisibilityLoggerMixin =
|
private VisibilityLoggerMixin mVisibilityLoggerMixin;
|
||||||
new VisibilityLoggerMixin(getMetricsCategory());
|
|
||||||
|
|
||||||
private Cursor mCursor;
|
private Cursor mCursor;
|
||||||
private String mLocale;
|
private String mLocale;
|
||||||
@@ -70,16 +70,13 @@ public class UserDictionarySettings extends ListFragment implements Instrumentab
|
|||||||
return MetricsProto.MetricsEvent.USER_DICTIONARY_SETTINGS;
|
return MetricsProto.MetricsEvent.USER_DICTIONARY_SETTINGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onAttach(Context context) {
|
|
||||||
super.onAttach(context);
|
|
||||||
mVisibilityLoggerMixin.onAttach(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
mVisibilityLoggerMixin = new VisibilityLoggerMixin(getMetricsCategory(),
|
||||||
|
FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider());
|
||||||
|
|
||||||
final Intent intent = getActivity().getIntent();
|
final Intent intent = getActivity().getIntent();
|
||||||
final String localeFromIntent =
|
final String localeFromIntent =
|
||||||
null == intent ? null : intent.getStringExtra("locale");
|
null == intent ? null : intent.getStringExtra("locale");
|
||||||
|
@@ -28,10 +28,10 @@ import com.android.internal.telephony.TelephonyIntents;
|
|||||||
import com.android.internal.telephony.TelephonyProperties;
|
import com.android.internal.telephony.TelephonyProperties;
|
||||||
import com.android.settings.AirplaneModeEnabler;
|
import com.android.settings.AirplaneModeEnabler;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnPause;
|
import com.android.settingslib.core.lifecycle.events.OnPause;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnResume;
|
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||||
|
@@ -31,13 +31,13 @@ import android.view.MenuInflater;
|
|||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardFragment;
|
import com.android.settings.dashboard.DashboardFragment;
|
||||||
import com.android.settings.dashboard.SummaryLoader;
|
import com.android.settings.dashboard.SummaryLoader;
|
||||||
import com.android.settings.network.MobilePlanPreferenceController.MobilePlanPreferenceHost;
|
import com.android.settings.network.MobilePlanPreferenceController.MobilePlanPreferenceHost;
|
||||||
import com.android.settings.search.BaseSearchIndexProvider;
|
import com.android.settings.search.BaseSearchIndexProvider;
|
||||||
import com.android.settings.wifi.WifiMasterSwitchPreferenceController;
|
import com.android.settings.wifi.WifiMasterSwitchPreferenceController;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@@ -34,9 +34,9 @@ import android.support.v7.preference.PreferenceScreen;
|
|||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnPause;
|
import com.android.settingslib.core.lifecycle.events.OnPause;
|
||||||
|
@@ -30,10 +30,10 @@ import android.view.View;
|
|||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.utils.ManagedServiceSettings;
|
import com.android.settings.utils.ManagedServiceSettings;
|
||||||
import com.android.settings.utils.ZenServiceListing;
|
import com.android.settings.utils.ZenServiceListing;
|
||||||
import com.android.settingslib.TwoTargetPreference;
|
import com.android.settingslib.TwoTargetPreference;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -145,4 +145,4 @@ public class ZenRulePreference extends TwoTargetPreference {
|
|||||||
? mContext.getResources().getString(R.string.switch_off_text)
|
? mContext.getResources().getString(R.string.switch_off_text)
|
||||||
: mContext.getResources().getString(R.string.switch_on_text);
|
: mContext.getResources().getString(R.string.switch_on_text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,6 @@ import com.android.settings.accounts.AccountFeatureProvider;
|
|||||||
import com.android.settings.applications.ApplicationFeatureProvider;
|
import com.android.settings.applications.ApplicationFeatureProvider;
|
||||||
import com.android.settings.bluetooth.BluetoothFeatureProvider;
|
import com.android.settings.bluetooth.BluetoothFeatureProvider;
|
||||||
import com.android.settings.connecteddevice.SmsMirroringFeatureProvider;
|
import com.android.settings.connecteddevice.SmsMirroringFeatureProvider;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardFeatureProvider;
|
import com.android.settings.dashboard.DashboardFeatureProvider;
|
||||||
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
|
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
|
||||||
import com.android.settings.datausage.DataPlanFeatureProvider;
|
import com.android.settings.datausage.DataPlanFeatureProvider;
|
||||||
@@ -37,6 +36,7 @@ import com.android.settings.security.SecurityFeatureProvider;
|
|||||||
import com.android.settings.search.SearchFeatureProvider;
|
import com.android.settings.search.SearchFeatureProvider;
|
||||||
import com.android.settings.slices.SlicesFeatureProvider;
|
import com.android.settings.slices.SlicesFeatureProvider;
|
||||||
import com.android.settings.users.UserFeatureProvider;
|
import com.android.settings.users.UserFeatureProvider;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract class for creating feature controllers. Allows OEM implementations to define their own
|
* Abstract class for creating feature controllers. Allows OEM implementations to define their own
|
||||||
|
@@ -31,7 +31,6 @@ import com.android.settings.bluetooth.BluetoothFeatureProvider;
|
|||||||
import com.android.settings.bluetooth.BluetoothFeatureProviderImpl;
|
import com.android.settings.bluetooth.BluetoothFeatureProviderImpl;
|
||||||
import com.android.settings.connecteddevice.SmsMirroringFeatureProvider;
|
import com.android.settings.connecteddevice.SmsMirroringFeatureProvider;
|
||||||
import com.android.settings.connecteddevice.SmsMirroringFeatureProviderImpl;
|
import com.android.settings.connecteddevice.SmsMirroringFeatureProviderImpl;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardFeatureProvider;
|
import com.android.settings.dashboard.DashboardFeatureProvider;
|
||||||
import com.android.settings.dashboard.DashboardFeatureProviderImpl;
|
import com.android.settings.dashboard.DashboardFeatureProviderImpl;
|
||||||
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
|
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
|
||||||
@@ -57,6 +56,7 @@ import com.android.settings.users.UserFeatureProviderImpl;
|
|||||||
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
||||||
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
|
||||||
import com.android.settings.wrapper.IPackageManagerWrapper;
|
import com.android.settings.wrapper.IPackageManagerWrapper;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -39,9 +39,9 @@ import android.widget.Switch;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@@ -33,9 +33,9 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
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.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.widget.SwitchWidgetController;
|
import com.android.settings.widget.SwitchWidgetController;
|
||||||
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
import com.android.settingslib.WirelessUtils;
|
import com.android.settingslib.WirelessUtils;
|
||||||
|
@@ -19,12 +19,12 @@ import android.content.Context;
|
|||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.widget.SummaryUpdater;
|
import com.android.settings.widget.SummaryUpdater;
|
||||||
import com.android.settings.widget.MasterSwitchPreference;
|
import com.android.settings.widget.MasterSwitchPreference;
|
||||||
import com.android.settings.widget.MasterSwitchController;
|
import com.android.settings.widget.MasterSwitchController;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnPause;
|
import com.android.settingslib.core.lifecycle.events.OnPause;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnResume;
|
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||||
|
@@ -54,7 +54,6 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.applications.LayoutPreference;
|
import com.android.settings.applications.LayoutPreference;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.widget.ActionButtonPreference;
|
import com.android.settings.widget.ActionButtonPreference;
|
||||||
import com.android.settings.widget.EntityHeaderController;
|
import com.android.settings.widget.EntityHeaderController;
|
||||||
import com.android.settings.wifi.WifiDetailPreference;
|
import com.android.settings.wifi.WifiDetailPreference;
|
||||||
@@ -63,6 +62,7 @@ import com.android.settings.wifi.WifiDialog.WifiDialogListener;
|
|||||||
import com.android.settings.wifi.WifiUtils;
|
import com.android.settings.wifi.WifiUtils;
|
||||||
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
import com.android.settingslib.core.lifecycle.events.OnPause;
|
import com.android.settingslib.core.lifecycle.events.OnPause;
|
||||||
|
@@ -17,6 +17,7 @@ package com.android.settings;
|
|||||||
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.app.Fragment;
|
import android.app.Fragment;
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -38,6 +39,8 @@ public class SettingsDialogFragmentTest {
|
|||||||
|
|
||||||
private static final int DIALOG_ID = 15;
|
private static final int DIALOG_ID = 15;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private Context mContext;
|
||||||
@Mock
|
@Mock
|
||||||
private DialogCreatableFragment mDialogCreatable;
|
private DialogCreatableFragment mDialogCreatable;
|
||||||
private SettingsPreferenceFragment.SettingsDialogFragment mDialogFragment;
|
private SettingsPreferenceFragment.SettingsDialogFragment mDialogFragment;
|
||||||
@@ -53,9 +56,10 @@ public class SettingsDialogFragmentTest {
|
|||||||
|
|
||||||
mDialogFragment =
|
mDialogFragment =
|
||||||
new SettingsPreferenceFragment.SettingsDialogFragment(mDialogCreatable, DIALOG_ID);
|
new SettingsPreferenceFragment.SettingsDialogFragment(mDialogCreatable, DIALOG_ID);
|
||||||
|
mDialogFragment.onAttach(mContext);
|
||||||
mDialogFragment.getMetricsCategory();
|
mDialogFragment.getMetricsCategory();
|
||||||
|
|
||||||
// getDialogMetricsCategory called in constructor, and explicitly in test.
|
// getDialogMetricsCategory called in onAttach, and explicitly in test.
|
||||||
verify(mDialogCreatable, times(2)).getDialogMetricsCategory(DIALOG_ID);
|
verify(mDialogCreatable, times(2)).getDialogMetricsCategory(DIALOG_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,6 +70,7 @@ public class SettingsDialogFragmentTest {
|
|||||||
try {
|
try {
|
||||||
mDialogFragment = new SettingsPreferenceFragment.SettingsDialogFragment(
|
mDialogFragment = new SettingsPreferenceFragment.SettingsDialogFragment(
|
||||||
mDialogCreatable, DIALOG_ID);
|
mDialogCreatable, DIALOG_ID);
|
||||||
|
mDialogFragment.onAttach(mContext);
|
||||||
} catch (IllegalStateException e) {
|
} catch (IllegalStateException e) {
|
||||||
// getDialogMetricsCategory called in constructor
|
// getDialogMetricsCategory called in constructor
|
||||||
verify(mDialogCreatable).getDialogMetricsCategory(DIALOG_ID);
|
verify(mDialogCreatable).getDialogMetricsCategory(DIALOG_ID);
|
||||||
|
@@ -42,9 +42,9 @@ import android.widget.Button;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
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.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
@@ -32,11 +32,11 @@ import android.os.UserManager;
|
|||||||
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.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
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.settingslib.bluetooth.CachedBluetoothDevice;
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@@ -29,13 +29,13 @@ import android.widget.Switch;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||||
import com.android.settings.widget.MasterSwitchController;
|
import com.android.settings.widget.MasterSwitchController;
|
||||||
import com.android.settings.widget.MasterSwitchPreference;
|
import com.android.settings.widget.MasterSwitchPreference;
|
||||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
|
import com.android.settingslib.bluetooth.LocalBluetoothAdapter;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
|
@@ -26,11 +26,11 @@ import android.content.Context;
|
|||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
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.settingslib.bluetooth.LocalBluetoothManager;
|
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2018 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.core;
|
||||||
|
|
||||||
|
import android.content.res.Resources;
|
||||||
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.robolectric.Robolectric;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
|
public class InstrumentedActivityTest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verifies that the {@link InstrumentedActivity} class can be instantiated successfully.
|
||||||
|
* Code added to the activity constructor had resulted in an NPE if resources are accessed
|
||||||
|
* before onCreate().
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void canInstantiate() {
|
||||||
|
Robolectric.buildActivity(InstrumentedActivityTestable.class).setup().get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class InstrumentedActivityTestable extends InstrumentedActivity {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMetricsCategory() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -20,6 +20,7 @@ import android.app.Fragment;
|
|||||||
import android.util.ArraySet;
|
import android.util.ArraySet;
|
||||||
|
|
||||||
import com.android.settings.core.codeinspection.CodeInspector;
|
import com.android.settings.core.codeinspection.CodeInspector;
|
||||||
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@@ -21,6 +21,7 @@ import android.os.Bundle;
|
|||||||
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
@@ -31,6 +31,9 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
|||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
import com.android.settingslib.core.instrumentation.LogWriter;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -58,7 +61,6 @@ public class MetricsFeatureProviderTest {
|
|||||||
@Mock private VisibilityLoggerMixin mockVisibilityLogger;
|
@Mock private VisibilityLoggerMixin mockVisibilityLogger;
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private MetricsFeatureProvider mProvider;
|
|
||||||
|
|
||||||
@Captor
|
@Captor
|
||||||
private ArgumentCaptor<Pair> mPairCaptor;
|
private ArgumentCaptor<Pair> mPairCaptor;
|
||||||
@@ -67,12 +69,6 @@ public class MetricsFeatureProviderTest {
|
|||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = RuntimeEnvironment.application;
|
mContext = RuntimeEnvironment.application;
|
||||||
mProvider = new MetricsFeatureProvider();
|
|
||||||
List<LogWriter> writers = new ArrayList<>();
|
|
||||||
writers.add(mockLogWriter);
|
|
||||||
ReflectionHelpers.setField(mProvider, "mLoggerWriters", writers);
|
|
||||||
|
|
||||||
when(mockVisibilityLogger.elapsedTimeSinceVisible()).thenReturn(ELAPSED_TIME);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -84,60 +80,4 @@ public class MetricsFeatureProviderTest {
|
|||||||
|
|
||||||
assertThat(feature1 == feature2).isTrue();
|
assertThat(feature1 == feature2).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void logDashboardStartIntent_intentEmpty_shouldNotLog() {
|
|
||||||
mProvider.logDashboardStartIntent(mContext, null /* intent */,
|
|
||||||
MetricsEvent.SETTINGS_GESTURES);
|
|
||||||
|
|
||||||
verifyNoMoreInteractions(mockLogWriter);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void logDashboardStartIntent_intentHasNoComponent_shouldLog() {
|
|
||||||
final Intent intent = new Intent(Intent.ACTION_ASSIST);
|
|
||||||
|
|
||||||
mProvider.logDashboardStartIntent(mContext, intent, MetricsEvent.SETTINGS_GESTURES);
|
|
||||||
|
|
||||||
verify(mockLogWriter).action(
|
|
||||||
eq(mContext),
|
|
||||||
eq(MetricsEvent.ACTION_SETTINGS_TILE_CLICK),
|
|
||||||
anyString(),
|
|
||||||
eq(Pair.create(MetricsEvent.FIELD_CONTEXT, MetricsEvent.SETTINGS_GESTURES)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void logDashboardStartIntent_intentIsExternal_shouldLog() {
|
|
||||||
final Intent intent = new Intent().setComponent(new ComponentName("pkg", "cls"));
|
|
||||||
|
|
||||||
mProvider.logDashboardStartIntent(mContext, intent, MetricsEvent.SETTINGS_GESTURES);
|
|
||||||
|
|
||||||
verify(mockLogWriter).action(
|
|
||||||
eq(mContext),
|
|
||||||
eq(MetricsEvent.ACTION_SETTINGS_TILE_CLICK),
|
|
||||||
anyString(),
|
|
||||||
eq(Pair.create(MetricsEvent.FIELD_CONTEXT, MetricsEvent.SETTINGS_GESTURES)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void action_BooleanLogsElapsedTime() {
|
|
||||||
mProvider.action(mockVisibilityLogger, CATEGORY, SUBTYPE_BOOLEAN);
|
|
||||||
verify(mockLogWriter).action(eq(CATEGORY), eq(SUBTYPE_BOOLEAN), mPairCaptor.capture());
|
|
||||||
|
|
||||||
Pair value = mPairCaptor.getValue();
|
|
||||||
assertThat(value.first instanceof Integer).isTrue();
|
|
||||||
assertThat((int) value.first).isEqualTo(MetricsEvent.NOTIFICATION_SINCE_VISIBLE_MILLIS);
|
|
||||||
assertThat(value.second).isEqualTo(ELAPSED_TIME);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void action_IntegerLogsElapsedTime() {
|
|
||||||
mProvider.action(mockVisibilityLogger, CATEGORY, SUBTYPE_INTEGER);
|
|
||||||
verify(mockLogWriter).action(eq(CATEGORY), eq(SUBTYPE_INTEGER), mPairCaptor.capture());
|
|
||||||
|
|
||||||
Pair value = mPairCaptor.getValue();
|
|
||||||
assertThat(value.first instanceof Integer).isTrue();
|
|
||||||
assertThat((int) value.first).isEqualTo(MetricsEvent.NOTIFICATION_SINCE_VISIBLE_MILLIS);
|
|
||||||
assertThat(value.second).isEqualTo(ELAPSED_TIME);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,185 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package com.android.settings.core.instrumentation;
|
|
||||||
|
|
||||||
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_SETTINGS_PREFERENCE_CHANGE;
|
|
||||||
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE;
|
|
||||||
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE;
|
|
||||||
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME;
|
|
||||||
import static org.mockito.Matchers.any;
|
|
||||||
import static org.mockito.Matchers.anyInt;
|
|
||||||
import static org.mockito.Matchers.argThat;
|
|
||||||
import static org.mockito.Matchers.eq;
|
|
||||||
import static org.mockito.Mockito.times;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.util.Pair;
|
|
||||||
|
|
||||||
import com.android.settings.TestConfig;
|
|
||||||
import com.android.settings.testutils.FakeFeatureFactory;
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
|
||||||
|
|
||||||
import com.google.common.truth.Platform;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.mockito.Answers;
|
|
||||||
import org.mockito.ArgumentMatcher;
|
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.robolectric.annotation.Config;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
|
||||||
public class SharedPreferenceLoggerTest {
|
|
||||||
|
|
||||||
private static final String TEST_TAG = "tag";
|
|
||||||
private static final String TEST_KEY = "key";
|
|
||||||
|
|
||||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
|
||||||
private Context mContext;
|
|
||||||
|
|
||||||
private ArgumentMatcher<Pair<Integer, Object>> mNamePairMatcher;
|
|
||||||
private FakeFeatureFactory mFactory;
|
|
||||||
private MetricsFeatureProvider mMetricsFeature;
|
|
||||||
private SharedPreferencesLogger mSharedPrefLogger;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void init() {
|
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
mFactory = FakeFeatureFactory.setupForTest();
|
|
||||||
mMetricsFeature = mFactory.metricsFeatureProvider;
|
|
||||||
|
|
||||||
mSharedPrefLogger = new SharedPreferencesLogger(mContext, TEST_TAG);
|
|
||||||
mNamePairMatcher = pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_NAME, String.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void putInt_shouldNotLogInitialPut() {
|
|
||||||
final SharedPreferences.Editor editor = mSharedPrefLogger.edit();
|
|
||||||
editor.putInt(TEST_KEY, 1);
|
|
||||||
editor.putInt(TEST_KEY, 1);
|
|
||||||
editor.putInt(TEST_KEY, 1);
|
|
||||||
editor.putInt(TEST_KEY, 2);
|
|
||||||
editor.putInt(TEST_KEY, 2);
|
|
||||||
editor.putInt(TEST_KEY, 2);
|
|
||||||
editor.putInt(TEST_KEY, 2);
|
|
||||||
|
|
||||||
verify(mMetricsFeature, times(6)).action(any(Context.class), anyInt(),
|
|
||||||
argThat(mNamePairMatcher),
|
|
||||||
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, Integer.class)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void putBoolean_shouldNotLogInitialPut() {
|
|
||||||
final SharedPreferences.Editor editor = mSharedPrefLogger.edit();
|
|
||||||
editor.putBoolean(TEST_KEY, true);
|
|
||||||
editor.putBoolean(TEST_KEY, true);
|
|
||||||
editor.putBoolean(TEST_KEY, false);
|
|
||||||
editor.putBoolean(TEST_KEY, false);
|
|
||||||
editor.putBoolean(TEST_KEY, false);
|
|
||||||
|
|
||||||
|
|
||||||
verify(mMetricsFeature).action(any(Context.class), anyInt(),
|
|
||||||
argThat(mNamePairMatcher),
|
|
||||||
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, true)));
|
|
||||||
verify(mMetricsFeature, times(3)).action(any(Context.class), anyInt(),
|
|
||||||
argThat(mNamePairMatcher),
|
|
||||||
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, false)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void putLong_shouldNotLogInitialPut() {
|
|
||||||
final SharedPreferences.Editor editor = mSharedPrefLogger.edit();
|
|
||||||
editor.putLong(TEST_KEY, 1);
|
|
||||||
editor.putLong(TEST_KEY, 1);
|
|
||||||
editor.putLong(TEST_KEY, 1);
|
|
||||||
editor.putLong(TEST_KEY, 1);
|
|
||||||
editor.putLong(TEST_KEY, 2);
|
|
||||||
|
|
||||||
verify(mMetricsFeature, times(4)).action(any(Context.class), anyInt(),
|
|
||||||
argThat(mNamePairMatcher),
|
|
||||||
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, Integer.class)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void putLong_biggerThanIntMax_shouldLogIntMax() {
|
|
||||||
final SharedPreferences.Editor editor = mSharedPrefLogger.edit();
|
|
||||||
final long veryBigNumber = 500L + Integer.MAX_VALUE;
|
|
||||||
editor.putLong(TEST_KEY, 1);
|
|
||||||
editor.putLong(TEST_KEY, veryBigNumber);
|
|
||||||
|
|
||||||
verify(mMetricsFeature).action(any(Context.class), anyInt(),
|
|
||||||
argThat(mNamePairMatcher),
|
|
||||||
argThat(pairMatches(
|
|
||||||
FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, Integer.MAX_VALUE)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void putLong_smallerThanIntMin_shouldLogIntMin() {
|
|
||||||
final SharedPreferences.Editor editor = mSharedPrefLogger.edit();
|
|
||||||
final long veryNegativeNumber = -500L + Integer.MIN_VALUE;
|
|
||||||
editor.putLong(TEST_KEY, 1);
|
|
||||||
editor.putLong(TEST_KEY, veryNegativeNumber);
|
|
||||||
|
|
||||||
verify(mMetricsFeature).action(any(Context.class), anyInt(),
|
|
||||||
argThat(mNamePairMatcher),
|
|
||||||
argThat(pairMatches(
|
|
||||||
FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE, Integer.MIN_VALUE)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void putFloat_shouldNotLogInitialPut() {
|
|
||||||
final SharedPreferences.Editor editor = mSharedPrefLogger.edit();
|
|
||||||
editor.putFloat(TEST_KEY, 1);
|
|
||||||
editor.putFloat(TEST_KEY, 1);
|
|
||||||
editor.putFloat(TEST_KEY, 1);
|
|
||||||
editor.putFloat(TEST_KEY, 1);
|
|
||||||
editor.putFloat(TEST_KEY, 2);
|
|
||||||
|
|
||||||
verify(mMetricsFeature, times(4)).action(any(Context.class), anyInt(),
|
|
||||||
argThat(mNamePairMatcher),
|
|
||||||
argThat(pairMatches(FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE, Float.class)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void logPackage_shouldUseLogPackageApi() {
|
|
||||||
mSharedPrefLogger.logPackageName("key", "com.android.settings");
|
|
||||||
verify(mMetricsFeature).action(any(Context.class),
|
|
||||||
eq(ACTION_SETTINGS_PREFERENCE_CHANGE),
|
|
||||||
eq("com.android.settings"),
|
|
||||||
any(Pair.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
private ArgumentMatcher<Pair<Integer, Object>> pairMatches(int tag, Class clazz) {
|
|
||||||
return pair -> pair.first == tag && Platform.isInstanceOfType(pair.second, clazz);
|
|
||||||
}
|
|
||||||
|
|
||||||
private ArgumentMatcher<Pair<Integer, Object>> pairMatches(int tag, boolean bool) {
|
|
||||||
return pair -> pair.first == tag
|
|
||||||
&& Platform.isInstanceOfType(pair.second, Integer.class)
|
|
||||||
&& pair.second.equals((bool ? 1 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
private ArgumentMatcher<Pair<Integer, Object>> pairMatches(int tag, int val) {
|
|
||||||
return pair -> pair.first == tag
|
|
||||||
&& Platform.isInstanceOfType(pair.second, Integer.class)
|
|
||||||
&& pair.second.equals(val);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,123 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package com.android.settings.core.instrumentation;
|
|
||||||
|
|
||||||
import static com.android.settings.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN;
|
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.nullable;
|
|
||||||
import static org.mockito.Matchers.anyInt;
|
|
||||||
import static org.mockito.Matchers.eq;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
import static org.mockito.Mockito.never;
|
|
||||||
import static org.mockito.Mockito.times;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
|
||||||
import com.android.settings.SettingsActivity;
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
|
||||||
import com.android.settings.TestConfig;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.robolectric.annotation.Config;
|
|
||||||
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
|
||||||
public class VisibilityLoggerMixinTest {
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private MetricsFeatureProvider mMetricsFeature;
|
|
||||||
|
|
||||||
private VisibilityLoggerMixin mMixin;
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void init() {
|
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
mMixin = new VisibilityLoggerMixin(TestInstrumentable.TEST_METRIC, mMetricsFeature);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldLogVisibleOnResume() {
|
|
||||||
mMixin.onResume();
|
|
||||||
|
|
||||||
verify(mMetricsFeature, times(1))
|
|
||||||
.visible(nullable(Context.class), eq(MetricsProto.MetricsEvent.VIEW_UNKNOWN),
|
|
||||||
eq(TestInstrumentable.TEST_METRIC));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldLogVisibleWithSource() {
|
|
||||||
final Intent sourceIntent = new Intent()
|
|
||||||
.putExtra(SettingsActivity.EXTRA_SOURCE_METRICS_CATEGORY,
|
|
||||||
MetricsProto.MetricsEvent.SETTINGS_GESTURES);
|
|
||||||
final Activity activity = mock(Activity.class);
|
|
||||||
when(activity.getIntent()).thenReturn(sourceIntent);
|
|
||||||
mMixin.setSourceMetricsCategory(activity);
|
|
||||||
mMixin.onResume();
|
|
||||||
|
|
||||||
verify(mMetricsFeature, times(1))
|
|
||||||
.visible(nullable(Context.class), eq(MetricsProto.MetricsEvent.SETTINGS_GESTURES),
|
|
||||||
eq(TestInstrumentable.TEST_METRIC));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldLogHideOnPause() {
|
|
||||||
mMixin.onPause();
|
|
||||||
|
|
||||||
verify(mMetricsFeature, times(1))
|
|
||||||
.hidden(nullable(Context.class), eq(TestInstrumentable.TEST_METRIC));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldNotLogIfMetricsFeatureIsNull() {
|
|
||||||
mMixin = new VisibilityLoggerMixin(TestInstrumentable.TEST_METRIC);
|
|
||||||
mMixin.onResume();
|
|
||||||
mMixin.onPause();
|
|
||||||
|
|
||||||
verify(mMetricsFeature, never())
|
|
||||||
.hidden(nullable(Context.class), anyInt());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldNotLogIfMetricsCategoryIsUnknown() {
|
|
||||||
mMixin = new VisibilityLoggerMixin(METRICS_CATEGORY_UNKNOWN, mMetricsFeature);
|
|
||||||
|
|
||||||
mMixin.onResume();
|
|
||||||
mMixin.onPause();
|
|
||||||
|
|
||||||
verify(mMetricsFeature, never())
|
|
||||||
.hidden(nullable(Context.class), anyInt());
|
|
||||||
}
|
|
||||||
|
|
||||||
private final class TestInstrumentable implements Instrumentable {
|
|
||||||
|
|
||||||
public static final int TEST_METRIC = 12345;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getMetricsCategory() {
|
|
||||||
return TEST_METRIC;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -51,6 +51,7 @@ import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
|||||||
import com.android.settings.testutils.shadow.ShadowThreadUtils;
|
import com.android.settings.testutils.shadow.ShadowThreadUtils;
|
||||||
import com.android.settings.testutils.shadow.ShadowTileUtils;
|
import com.android.settings.testutils.shadow.ShadowTileUtils;
|
||||||
import com.android.settings.testutils.shadow.ShadowUserManager;
|
import com.android.settings.testutils.shadow.ShadowUserManager;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
import com.android.settingslib.drawer.CategoryKey;
|
import com.android.settingslib.drawer.CategoryKey;
|
||||||
import com.android.settingslib.drawer.CategoryManager;
|
import com.android.settingslib.drawer.CategoryManager;
|
||||||
import com.android.settingslib.drawer.DashboardCategory;
|
import com.android.settingslib.drawer.DashboardCategory;
|
||||||
@@ -372,7 +373,7 @@ public class DashboardFeatureProviderImplTest {
|
|||||||
final Intent launchIntent = shadowActivity.getNextStartedActivityForResult().intent;
|
final Intent launchIntent = shadowActivity.getNextStartedActivityForResult().intent;
|
||||||
assertThat(launchIntent.getAction())
|
assertThat(launchIntent.getAction())
|
||||||
.isEqualTo("TestAction");
|
.isEqualTo("TestAction");
|
||||||
assertThat(launchIntent.getIntExtra(SettingsActivity.EXTRA_SOURCE_METRICS_CATEGORY, 0))
|
assertThat(launchIntent.getIntExtra(VisibilityLoggerMixin.EXTRA_SOURCE_METRICS_CATEGORY, 0))
|
||||||
.isEqualTo(MetricsProto.MetricsEvent.SETTINGS_GESTURES);
|
.isEqualTo(MetricsProto.MetricsEvent.SETTINGS_GESTURES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,10 +33,10 @@ import android.support.v7.preference.PreferenceScreen;
|
|||||||
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.PreferenceControllerMixin;
|
import com.android.settings.core.PreferenceControllerMixin;
|
||||||
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
|
||||||
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.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
import com.android.settingslib.drawer.DashboardCategory;
|
import com.android.settingslib.drawer.DashboardCategory;
|
||||||
import com.android.settingslib.drawer.Tile;
|
import com.android.settingslib.drawer.Tile;
|
||||||
import com.android.settingslib.drawer.TileUtils;
|
import com.android.settingslib.drawer.TileUtils;
|
||||||
|
@@ -22,7 +22,7 @@ import android.graphics.drawable.Icon;
|
|||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
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;
|
||||||
|
@@ -60,6 +60,7 @@ public class DataUsageListTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void resumePause_shouldListenUnlistenDataStateChange() {
|
public void resumePause_shouldListenUnlistenDataStateChange() {
|
||||||
|
mDataUsageList.onAttach(mContext);
|
||||||
mDataUsageList.onResume();
|
mDataUsageList.onResume();
|
||||||
|
|
||||||
verify(mListener).setListener(true, 0, mContext);
|
verify(mListener).setListener(true, 0, mContext);
|
||||||
|
@@ -28,8 +28,8 @@ import android.view.ViewGroup;
|
|||||||
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
|
|
||||||
import com.android.settings.testutils.shadow.ShadowZoneGetter;
|
import com.android.settings.testutils.shadow.ShadowZoneGetter;
|
||||||
|
import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@@ -31,11 +31,11 @@ import android.support.v7.preference.Preference;
|
|||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
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.SettingsShadowSystemProperties;
|
import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
|
||||||
import com.android.settings.widget.SwitchBar;
|
import com.android.settings.widget.SwitchBar;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@@ -37,13 +37,13 @@ import android.support.v7.preference.PreferenceScreen;
|
|||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.internal.os.RoSystemProperties;
|
import com.android.internal.os.RoSystemProperties;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.deletionhelper.ActivationWarningFragment;
|
import com.android.settings.deletionhelper.ActivationWarningFragment;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
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.SettingsShadowSystemProperties;
|
import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
|
||||||
import com.android.settings.widget.MasterSwitchPreference;
|
import com.android.settings.widget.MasterSwitchPreference;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
@@ -50,13 +50,13 @@ import com.android.settings.SettingsActivity;
|
|||||||
import com.android.settings.SubSettings;
|
import com.android.settings.SubSettings;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.applications.manageapplications.ManageApplications;
|
import com.android.settings.applications.manageapplications.ManageApplications;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.deviceinfo.PrivateVolumeSettings;
|
import com.android.settings.deviceinfo.PrivateVolumeSettings;
|
||||||
import com.android.settings.deviceinfo.StorageItemPreference;
|
import com.android.settings.deviceinfo.StorageItemPreference;
|
||||||
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.settingslib.applications.StorageStatsSource;
|
import com.android.settingslib.applications.StorageStatsSource;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.deviceinfo.StorageVolumeProvider;
|
import com.android.settingslib.deviceinfo.StorageVolumeProvider;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
|
@@ -38,10 +38,10 @@ import android.widget.LinearLayout;
|
|||||||
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.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
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.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.deviceinfo.StorageVolumeProvider;
|
import com.android.settingslib.deviceinfo.StorageVolumeProvider;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
|
@@ -32,11 +32,11 @@ import android.support.v14.preference.SwitchPreference;
|
|||||||
|
|
||||||
import com.android.internal.hardware.AmbientDisplayConfiguration;
|
import com.android.internal.hardware.AmbientDisplayConfiguration;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.search.InlinePayload;
|
import com.android.settings.search.InlinePayload;
|
||||||
import com.android.settings.search.InlineSwitchPayload;
|
import com.android.settings.search.InlineSwitchPayload;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.ShadowSecureSettings;
|
import com.android.settings.testutils.shadow.ShadowSecureSettings;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@@ -36,6 +36,7 @@ import android.widget.TextView;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
|
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;
|
||||||
import com.android.settings.testutils.shadow.ShadowVibrator;
|
import com.android.settings.testutils.shadow.ShadowVibrator;
|
||||||
@@ -69,12 +70,15 @@ public class FingerprintEnrollEnrollingTest {
|
|||||||
|
|
||||||
private FingerprintEnrollEnrolling mActivity;
|
private FingerprintEnrollEnrolling mActivity;
|
||||||
|
|
||||||
|
private FakeFeatureFactory mFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
ShadowUtils.setFingerprintManager(mFingerprintManager);
|
ShadowUtils.setFingerprintManager(mFingerprintManager);
|
||||||
ShadowVibrator.addToServiceMap();
|
ShadowVibrator.addToServiceMap();
|
||||||
|
|
||||||
|
mFactory = FakeFeatureFactory.setupForTest();
|
||||||
mActivity = Robolectric.buildActivity(
|
mActivity = Robolectric.buildActivity(
|
||||||
FingerprintEnrollEnrolling.class,
|
FingerprintEnrollEnrolling.class,
|
||||||
new Intent()
|
new Intent()
|
||||||
|
@@ -33,6 +33,7 @@ import android.widget.Button;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
|
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.ShadowEventLogWriter;
|
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
|
||||||
@@ -69,10 +70,13 @@ public class FingerprintEnrollFindSensorTest {
|
|||||||
|
|
||||||
private FingerprintEnrollFindSensor mActivity;
|
private FingerprintEnrollFindSensor mActivity;
|
||||||
|
|
||||||
|
private FakeFeatureFactory mFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
ShadowUtils.setFingerprintManager(mFingerprintManager);
|
ShadowUtils.setFingerprintManager(mFingerprintManager);
|
||||||
|
mFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
|
||||||
mActivity = Robolectric.buildActivity(
|
mActivity = Robolectric.buildActivity(
|
||||||
FingerprintEnrollFindSensor.class,
|
FingerprintEnrollFindSensor.class,
|
||||||
|
@@ -30,6 +30,7 @@ import android.widget.Button;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
|
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
|
||||||
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
|
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
|
||||||
@@ -63,9 +64,12 @@ public class FingerprintSuggestionActivityTest {
|
|||||||
|
|
||||||
private ActivityController<FingerprintSuggestionActivity> mController;
|
private ActivityController<FingerprintSuggestionActivity> mController;
|
||||||
|
|
||||||
|
private FakeFeatureFactory mFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
|
mFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
mController = Robolectric.buildActivity(FingerprintSuggestionActivity.class, intent);
|
mController = Robolectric.buildActivity(FingerprintSuggestionActivity.class, intent);
|
||||||
|
@@ -27,6 +27,7 @@ import android.widget.Button;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
|
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.ShadowEventLogWriter;
|
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
|
||||||
@@ -61,10 +62,13 @@ public class SetupFingerprintEnrollFindSensorTest {
|
|||||||
|
|
||||||
private SetupFingerprintEnrollFindSensor mActivity;
|
private SetupFingerprintEnrollFindSensor mActivity;
|
||||||
|
|
||||||
|
private FakeFeatureFactory mFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
ShadowUtils.setFingerprintManager(mFingerprintManager);
|
ShadowUtils.setFingerprintManager(mFingerprintManager);
|
||||||
|
mFactory = FakeFeatureFactory.setupForTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createActivity(Intent intent) {
|
private void createActivity(Intent intent) {
|
||||||
|
@@ -35,6 +35,7 @@ import com.android.settings.fingerprint.SetupFingerprintEnrollIntroductionTest
|
|||||||
import com.android.settings.password.SetupChooseLockGeneric.SetupChooseLockGenericFragment;
|
import com.android.settings.password.SetupChooseLockGeneric.SetupChooseLockGenericFragment;
|
||||||
import com.android.settings.password.SetupSkipDialog;
|
import com.android.settings.password.SetupSkipDialog;
|
||||||
import com.android.settings.password.StorageManagerWrapper;
|
import com.android.settings.password.StorageManagerWrapper;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
|
import com.android.settings.testutils.shadow.ShadowEventLogWriter;
|
||||||
import com.android.settings.testutils.shadow.ShadowFingerprintManager;
|
import com.android.settings.testutils.shadow.ShadowFingerprintManager;
|
||||||
@@ -72,6 +73,7 @@ public class SetupFingerprintEnrollIntroductionTest {
|
|||||||
|
|
||||||
@Mock
|
@Mock
|
||||||
private UserInfo mUserInfo;
|
private UserInfo mUserInfo;
|
||||||
|
private FakeFeatureFactory mFactory;
|
||||||
|
|
||||||
private ActivityController<SetupFingerprintEnrollIntroduction> mController;
|
private ActivityController<SetupFingerprintEnrollIntroduction> mController;
|
||||||
|
|
||||||
@@ -83,6 +85,8 @@ public class SetupFingerprintEnrollIntroductionTest {
|
|||||||
.setSystemFeature(PackageManager.FEATURE_FINGERPRINT, true);
|
.setSystemFeature(PackageManager.FEATURE_FINGERPRINT, true);
|
||||||
ShadowFingerprintManager.addToServiceMap();
|
ShadowFingerprintManager.addToServiceMap();
|
||||||
|
|
||||||
|
mFactory = FakeFeatureFactory.setupForTest();
|
||||||
|
|
||||||
final Intent intent = new Intent();
|
final Intent intent = new Intent();
|
||||||
mController = Robolectric.buildActivity(SetupFingerprintEnrollIntroduction.class, intent);
|
mController = Robolectric.buildActivity(SetupFingerprintEnrollIntroduction.class, intent);
|
||||||
|
|
||||||
|
@@ -24,7 +24,6 @@ import android.os.Build;
|
|||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto;
|
import com.android.internal.logging.nano.MetricsProto;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.fuelgauge.anomaly.action.StopAndBackgroundCheckAction;
|
import com.android.settings.fuelgauge.anomaly.action.StopAndBackgroundCheckAction;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
@@ -32,6 +31,7 @@ import com.android.settings.fuelgauge.anomaly.action.ForceStopAction;
|
|||||||
import com.android.settings.fuelgauge.anomaly.checker.WakeLockAnomalyDetector;
|
import com.android.settings.fuelgauge.anomaly.checker.WakeLockAnomalyDetector;
|
||||||
import com.android.settings.testutils.shadow.ShadowKeyValueListParserWrapperImpl;
|
import com.android.settings.testutils.shadow.ShadowKeyValueListParserWrapperImpl;
|
||||||
import com.android.settings.fuelgauge.anomaly.checker.WakeupAlarmAnomalyDetector;
|
import com.android.settings.fuelgauge.anomaly.checker.WakeupAlarmAnomalyDetector;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@@ -20,6 +20,7 @@ import android.content.Context;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.testutils.FakeFeatureFactory;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.ShadowSettingsPreferenceFragment;
|
import com.android.settings.testutils.shadow.ShadowSettingsPreferenceFragment;
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@ import org.junit.Assert;
|
|||||||
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.Mock;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
@@ -39,6 +41,11 @@ public class LocaleListEditorTest {
|
|||||||
|
|
||||||
private LocaleListEditor mLocaleListEditor;
|
private LocaleListEditor mLocaleListEditor;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private Context mContext;
|
||||||
|
|
||||||
|
private FakeFeatureFactory mFactory;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mLocaleListEditor = new LocaleListEditor();
|
mLocaleListEditor = new LocaleListEditor();
|
||||||
@@ -48,11 +55,13 @@ public class LocaleListEditorTest {
|
|||||||
RuntimeEnvironment.application.getSystemService(Context.RESTRICTIONS_SERVICE));
|
RuntimeEnvironment.application.getSystemService(Context.RESTRICTIONS_SERVICE));
|
||||||
ReflectionHelpers.setField(mLocaleListEditor, "mUserManager",
|
ReflectionHelpers.setField(mLocaleListEditor, "mUserManager",
|
||||||
RuntimeEnvironment.application.getSystemService(Context.USER_SERVICE));
|
RuntimeEnvironment.application.getSystemService(Context.USER_SERVICE));
|
||||||
|
mFactory = FakeFeatureFactory.setupForTest();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDisallowConfigLocale_unrestrict() {
|
public void testDisallowConfigLocale_unrestrict() {
|
||||||
ReflectionHelpers.setField(mLocaleListEditor, "mIsUiRestricted", true);
|
ReflectionHelpers.setField(mLocaleListEditor, "mIsUiRestricted", true);
|
||||||
|
mLocaleListEditor.onAttach(mContext);
|
||||||
mLocaleListEditor.onResume();
|
mLocaleListEditor.onResume();
|
||||||
Assert.assertEquals(View.GONE, mLocaleListEditor.getEmptyTextView().getVisibility());
|
Assert.assertEquals(View.GONE, mLocaleListEditor.getEmptyTextView().getVisibility());
|
||||||
}
|
}
|
||||||
@@ -60,6 +69,7 @@ public class LocaleListEditorTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testDisallowConfigLocale_restrict() {
|
public void testDisallowConfigLocale_restrict() {
|
||||||
ReflectionHelpers.setField(mLocaleListEditor, "mIsUiRestricted", false);
|
ReflectionHelpers.setField(mLocaleListEditor, "mIsUiRestricted", false);
|
||||||
|
mLocaleListEditor.onAttach(mContext);
|
||||||
mLocaleListEditor.onResume();
|
mLocaleListEditor.onResume();
|
||||||
Assert.assertEquals(View.VISIBLE, mLocaleListEditor.getEmptyTextView().getVisibility());
|
Assert.assertEquals(View.VISIBLE, mLocaleListEditor.getEmptyTextView().getVisibility());
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,6 @@ import com.android.settings.accounts.AccountFeatureProvider;
|
|||||||
import com.android.settings.applications.ApplicationFeatureProvider;
|
import com.android.settings.applications.ApplicationFeatureProvider;
|
||||||
import com.android.settings.bluetooth.BluetoothFeatureProvider;
|
import com.android.settings.bluetooth.BluetoothFeatureProvider;
|
||||||
import com.android.settings.connecteddevice.SmsMirroringFeatureProvider;
|
import com.android.settings.connecteddevice.SmsMirroringFeatureProvider;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.dashboard.DashboardFeatureProvider;
|
import com.android.settings.dashboard.DashboardFeatureProvider;
|
||||||
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
|
import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider;
|
||||||
import com.android.settings.datausage.DataPlanFeatureProvider;
|
import com.android.settings.datausage.DataPlanFeatureProvider;
|
||||||
@@ -40,6 +39,7 @@ import com.android.settings.search.SearchFeatureProvider;
|
|||||||
import com.android.settings.security.SecurityFeatureProvider;
|
import com.android.settings.security.SecurityFeatureProvider;
|
||||||
import com.android.settings.slices.SlicesFeatureProvider;
|
import com.android.settings.slices.SlicesFeatureProvider;
|
||||||
import com.android.settings.users.UserFeatureProvider;
|
import com.android.settings.users.UserFeatureProvider;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.mockito.Answers;
|
import org.mockito.Answers;
|
||||||
|
|
||||||
|
@@ -19,7 +19,7 @@ package com.android.settings.testutils.shadow;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.android.settings.core.instrumentation.EventLogWriter;
|
import com.android.settingslib.core.instrumentation.EventLogWriter;
|
||||||
|
|
||||||
import org.robolectric.annotation.Implementation;
|
import org.robolectric.annotation.Implementation;
|
||||||
import org.robolectric.annotation.Implements;
|
import org.robolectric.annotation.Implements;
|
||||||
|
@@ -44,10 +44,10 @@ import android.os.UserManager;
|
|||||||
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.applications.defaultapps.DefaultAppInfo;
|
import com.android.settings.applications.defaultapps.DefaultAppInfo;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.widget.RadioButtonPreference;
|
import com.android.settings.widget.RadioButtonPreference;
|
||||||
import com.android.settings.wrapper.UserPackageWrapper;
|
import com.android.settings.wrapper.UserPackageWrapper;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
import com.android.settingslib.wrapper.PackageManagerWrapper;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
@@ -22,9 +22,9 @@ import android.net.wifi.WifiManager;
|
|||||||
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.widget.SwitchWidgetController;
|
import com.android.settings.widget.SwitchWidgetController;
|
||||||
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@@ -30,10 +30,10 @@ import android.support.v7.preference.Preference.OnPreferenceChangeListener;
|
|||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
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.MasterSwitchPreference;
|
import com.android.settings.widget.MasterSwitchPreference;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@@ -65,7 +65,6 @@ import com.android.internal.logging.nano.MetricsProto;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
import com.android.settings.applications.LayoutPreference;
|
import com.android.settings.applications.LayoutPreference;
|
||||||
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.ShadowBidiFormatter;
|
import com.android.settings.testutils.shadow.ShadowBidiFormatter;
|
||||||
import com.android.settings.testutils.shadow.ShadowDevicePolicyManagerWrapper;
|
import com.android.settings.testutils.shadow.ShadowDevicePolicyManagerWrapper;
|
||||||
@@ -76,6 +75,7 @@ import com.android.settings.widget.ActionButtonPreferenceTest;
|
|||||||
import com.android.settings.widget.EntityHeaderController;
|
import com.android.settings.widget.EntityHeaderController;
|
||||||
import com.android.settings.wifi.WifiDetailPreference;
|
import com.android.settings.wifi.WifiDetailPreference;
|
||||||
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
import com.android.settings.wrapper.ConnectivityManagerWrapper;
|
||||||
|
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
import com.android.settingslib.wifi.AccessPoint;
|
import com.android.settingslib.wifi.AccessPoint;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user