Add preference click metric logs for some special cases

Bug: 137559984
Test: visual, robotest
Change-Id: If8624b49abcd0000487065160ce4a7ba861f234c
This commit is contained in:
Jason Chiu
2019-12-19 15:59:07 +08:00
parent d889dec474
commit 2d609759cd
18 changed files with 134 additions and 42 deletions

View File

@@ -34,7 +34,7 @@
settings:searchable="false"/> settings:searchable="false"/>
<Preference <Preference
android:key="configure_settings" android:key="configure_wifi_settings"
android:title="@string/wifi_configure_settings_preference_title" android:title="@string/wifi_configure_settings_preference_title"
settings:allowDividerAbove="true" settings:allowDividerAbove="true"
android:fragment="com.android.settings.wifi.ConfigureWifiSettings"/> android:fragment="com.android.settings.wifi.ConfigureWifiSettings"/>

View File

@@ -32,7 +32,7 @@
android:layout="@layout/preference_category_no_label"/> android:layout="@layout/preference_category_no_label"/>
<Preference <Preference
android:key="configure_settings" android:key="configure_wifi_settings"
android:title="@string/wifi_configure_settings_preference_title" android:title="@string/wifi_configure_settings_preference_title"
settings:allowDividerAbove="true" settings:allowDividerAbove="true"
android:fragment="com.android.settings.wifi.ConfigureWifiSettings"/> android:fragment="com.android.settings.wifi.ConfigureWifiSettings"/>

View File

@@ -23,7 +23,6 @@ import android.content.Context;
import android.icu.text.RelativeDateTimeFormatter; import android.icu.text.RelativeDateTimeFormatter;
import android.os.UserHandle; import android.os.UserHandle;
import android.util.IconDrawableFactory; import android.util.IconDrawableFactory;
import android.util.Log;
import android.view.View; import android.view.View;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@@ -37,7 +36,9 @@ import com.android.settings.applications.appinfo.AppInfoDashboardFragment;
import com.android.settings.applications.manageapplications.ManageApplications; import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.utils.StringUtil; import com.android.settingslib.utils.StringUtil;
import com.android.settingslib.widget.AppEntitiesHeaderController; import com.android.settingslib.widget.AppEntitiesHeaderController;
import com.android.settingslib.widget.AppEntityInfo; import com.android.settingslib.widget.AppEntityInfo;
@@ -65,6 +66,7 @@ public class RecentAppsPreferenceController extends BasePreferenceController
private final ApplicationsState mApplicationsState; private final ApplicationsState mApplicationsState;
private final int mUserId; private final int mUserId;
private final IconDrawableFactory mIconDrawableFactory; private final IconDrawableFactory mIconDrawableFactory;
private final MetricsFeatureProvider mMetricsFeatureProvider;
private Fragment mHost; private Fragment mHost;
private List<UsageStats> mRecentApps; private List<UsageStats> mRecentApps;
@@ -75,6 +77,7 @@ public class RecentAppsPreferenceController extends BasePreferenceController
(Application) mContext.getApplicationContext()); (Application) mContext.getApplicationContext());
mUserId = UserHandle.myUserId(); mUserId = UserHandle.myUserId();
mIconDrawableFactory = IconDrawableFactory.newInstance(mContext); mIconDrawableFactory = IconDrawableFactory.newInstance(mContext);
mMetricsFeatureProvider = FeatureFactory.getFactory(mContext).getMetricsFeatureProvider();
} }
public void setFragment(Fragment fragment) { public void setFragment(Fragment fragment) {
@@ -96,6 +99,8 @@ public class RecentAppsPreferenceController extends BasePreferenceController
mAppEntitiesController = AppEntitiesHeaderController.newInstance(mContext, view) mAppEntitiesController = AppEntitiesHeaderController.newInstance(mContext, view)
.setHeaderTitleRes(R.string.recent_app_category_title) .setHeaderTitleRes(R.string.recent_app_category_title)
.setHeaderDetailsClickListener((View v) -> { .setHeaderDetailsClickListener((View v) -> {
mMetricsFeatureProvider.logClickedPreference(mRecentAppsPreference,
SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY);
new SubSettingLauncher(mContext) new SubSettingLauncher(mContext)
.setDestination(ManageApplications.class.getName()) .setDestination(ManageApplications.class.getName())
.setArguments(null /* arguments */) .setArguments(null /* arguments */)
@@ -161,11 +166,14 @@ public class RecentAppsPreferenceController extends BasePreferenceController
.setSummary(StringUtil.formatRelativeTime(mContext, .setSummary(StringUtil.formatRelativeTime(mContext,
System.currentTimeMillis() - stat.getLastTimeUsed(), false, System.currentTimeMillis() - stat.getLastTimeUsed(), false,
RelativeDateTimeFormatter.Style.SHORT)) RelativeDateTimeFormatter.Style.SHORT))
.setOnClickListener(v -> .setOnClickListener(v -> {
AppInfoBase.startAppInfoFragment(AppInfoDashboardFragment.class, mMetricsFeatureProvider.logClickedPreference(mRecentAppsPreference,
R.string.application_info_label, pkgName, appEntry.info.uid, SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY);
mHost, 1001 /*RequestCode*/, AppInfoBase.startAppInfoFragment(AppInfoDashboardFragment.class,
SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY)) R.string.application_info_label, pkgName, appEntry.info.uid,
mHost, 1001 /*RequestCode*/,
SettingsEnums.SETTINGS_APP_NOTIF_CATEGORY);
})
.build(); .build();
} }
} }

View File

@@ -46,6 +46,9 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
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.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -71,6 +74,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
private final UserManager mUm; private final UserManager mUm;
private final PackageManager mPackageManager; private final PackageManager mPackageManager;
private final IPackageManager mIPackageManager; private final IPackageManager mIPackageManager;
private final MetricsFeatureProvider mMetricsFeatureProvider;
/** /**
* 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.
@@ -102,6 +106,7 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
mUm = (UserManager) context.getSystemService(Context.USER_SERVICE); mUm = (UserManager) context.getSystemService(Context.USER_SERVICE);
mPackageManager = mContext.getPackageManager(); mPackageManager = mContext.getPackageManager();
mIPackageManager = AppGlobals.getPackageManager(); mIPackageManager = AppGlobals.getPackageManager();
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
} }
@Override @Override
@@ -197,6 +202,8 @@ public class DeviceAdminListPreferenceController extends BasePreferenceControlle
pref.setSummary(item.getDescription()); pref.setSummary(item.getDescription());
pref.setEnabled(item.isEnabled()); pref.setEnabled(item.isEnabled());
pref.setOnPreferenceClickListener(preference -> { pref.setOnPreferenceClickListener(preference -> {
mMetricsFeatureProvider.logClickedPreference(preference,
pref.getExtras().getInt(DashboardFragment.CATEGORY));
final UserHandle user = item.getUser(); final UserHandle user = item.getUser();
mContext.startActivityAsUser(item.getLaunchIntent(mContext), user); mContext.startActivityAsUser(item.getLaunchIntent(mContext), user);
return true; return true;

View File

@@ -35,6 +35,8 @@ public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater
private static final String TAG = "AvailableMediaBluetoothDeviceUpdater"; private static final String TAG = "AvailableMediaBluetoothDeviceUpdater";
private static final boolean DBG = false; private static final boolean DBG = false;
private static final String PREF_KEY = "available_media_bt";
private final AudioManager mAudioManager; private final AudioManager mAudioManager;
public AvailableMediaBluetoothDeviceUpdater(Context context, DashboardFragment fragment, public AvailableMediaBluetoothDeviceUpdater(Context context, DashboardFragment fragment,
@@ -97,9 +99,14 @@ public class AvailableMediaBluetoothDeviceUpdater extends BluetoothDeviceUpdater
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
mMetricsFeatureProvider.logClickedPreference(preference, mFragment.getMetricsCategory());
final CachedBluetoothDevice device = ((BluetoothDevicePreference) preference) final CachedBluetoothDevice device = ((BluetoothDevicePreference) preference)
.getBluetoothDevice(); .getBluetoothDevice();
return device.setActive(); return device.setActive();
} }
}
@Override
protected String getPreferenceKey() {
return PREF_KEY;
}
}

View File

@@ -28,12 +28,14 @@ import com.android.settings.R;
import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.connecteddevice.DevicePreferenceCallback;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.GearPreference; import com.android.settings.widget.GearPreference;
import com.android.settingslib.bluetooth.BluetoothCallback; import com.android.settingslib.bluetooth.BluetoothCallback;
import com.android.settingslib.bluetooth.BluetoothDeviceFilter; import com.android.settingslib.bluetooth.BluetoothDeviceFilter;
import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager; import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
@@ -52,6 +54,7 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
private static final String TAG = "BluetoothDeviceUpdater"; private static final String TAG = "BluetoothDeviceUpdater";
private static final boolean DBG = false; private static final boolean DBG = false;
protected final MetricsFeatureProvider mMetricsFeatureProvider;
protected final DevicePreferenceCallback mDevicePreferenceCallback; protected final DevicePreferenceCallback mDevicePreferenceCallback;
protected final Map<BluetoothDevice, Preference> mPreferenceMap; protected final Map<BluetoothDevice, Preference> mPreferenceMap;
protected Context mPrefContext; protected Context mPrefContext;
@@ -76,6 +79,8 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
mDevicePreferenceCallback = devicePreferenceCallback; mDevicePreferenceCallback = devicePreferenceCallback;
mPreferenceMap = new HashMap<>(); mPreferenceMap = new HashMap<>();
mLocalManager = localManager; mLocalManager = localManager;
mMetricsFeatureProvider = FeatureFactory.getFactory(mFragment.getContext())
.getMetricsFeatureProvider();
} }
/** /**
@@ -206,6 +211,11 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
*/ */
public abstract boolean isFilterMatched(CachedBluetoothDevice cachedBluetoothDevice); public abstract boolean isFilterMatched(CachedBluetoothDevice cachedBluetoothDevice);
/**
* Return a preference key for logging
*/
protected abstract String getPreferenceKey();
/** /**
* Update whether to show {@link CachedBluetoothDevice} in the list. * Update whether to show {@link CachedBluetoothDevice} in the list.
*/ */
@@ -228,6 +238,7 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
new BluetoothDevicePreference(mPrefContext, cachedDevice, new BluetoothDevicePreference(mPrefContext, cachedDevice,
true /* showDeviceWithoutNames */, true /* showDeviceWithoutNames */,
BluetoothDevicePreference.SortType.TYPE_DEFAULT); BluetoothDevicePreference.SortType.TYPE_DEFAULT);
btPreference.setKey(getPreferenceKey());
btPreference.setOnGearClickListener(mDeviceProfilesListener); btPreference.setOnGearClickListener(mDeviceProfilesListener);
if (this instanceof Preference.OnPreferenceClickListener) { if (this instanceof Preference.OnPreferenceClickListener) {
btPreference.setOnPreferenceClickListener( btPreference.setOnPreferenceClickListener(
@@ -264,6 +275,7 @@ public abstract class BluetoothDeviceUpdater implements BluetoothCallback,
* {@link SubSettingLauncher} to launch {@link BluetoothDeviceDetailsFragment} * {@link SubSettingLauncher} to launch {@link BluetoothDeviceDetailsFragment}
*/ */
protected void launchDeviceDetails(Preference preference) { protected void launchDeviceDetails(Preference preference) {
mMetricsFeatureProvider.logClickedPreference(preference, mFragment.getMetricsCategory());
final CachedBluetoothDevice device = final CachedBluetoothDevice device =
((BluetoothDevicePreference) preference).getBluetoothDevice(); ((BluetoothDevicePreference) preference).getBluetoothDevice();
if (device == null) { if (device == null) {

View File

@@ -35,6 +35,8 @@ public class ConnectedBluetoothDeviceUpdater extends BluetoothDeviceUpdater {
private static final String TAG = "ConnBluetoothDeviceUpdater"; private static final String TAG = "ConnBluetoothDeviceUpdater";
private static final boolean DBG = false; private static final boolean DBG = false;
private static final String PREF_KEY = "connected_bt";
private final AudioManager mAudioManager; private final AudioManager mAudioManager;
public ConnectedBluetoothDeviceUpdater(Context context, DashboardFragment fragment, public ConnectedBluetoothDeviceUpdater(Context context, DashboardFragment fragment,
@@ -111,4 +113,9 @@ public class ConnectedBluetoothDeviceUpdater extends BluetoothDeviceUpdater {
}); });
} }
} }
@Override
protected String getPreferenceKey() {
return PREF_KEY;
}
} }

View File

@@ -30,9 +30,12 @@ import com.android.settingslib.bluetooth.CachedBluetoothDevice;
*/ */
public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater
implements Preference.OnPreferenceClickListener { implements Preference.OnPreferenceClickListener {
private static final String TAG = "SavedBluetoothDeviceUpdater"; private static final String TAG = "SavedBluetoothDeviceUpdater";
private static final boolean DBG = false; private static final boolean DBG = false;
private static final String PREF_KEY = "saved_bt";
public SavedBluetoothDeviceUpdater(Context context, DashboardFragment fragment, public SavedBluetoothDeviceUpdater(Context context, DashboardFragment fragment,
DevicePreferenceCallback devicePreferenceCallback) { DevicePreferenceCallback devicePreferenceCallback) {
super(context, fragment, devicePreferenceCallback); super(context, fragment, devicePreferenceCallback);
@@ -51,9 +54,15 @@ public class SavedBluetoothDeviceUpdater extends BluetoothDeviceUpdater
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
mMetricsFeatureProvider.logClickedPreference(preference, mFragment.getMetricsCategory());
final CachedBluetoothDevice device = ((BluetoothDevicePreference) preference) final CachedBluetoothDevice device = ((BluetoothDevicePreference) preference)
.getBluetoothDevice(); .getBluetoothDevice();
device.connect(true); device.connect(true);
return true; return true;
} }
@Override
protected String getPreferenceKey() {
return PREF_KEY;
}
} }

View File

@@ -29,11 +29,18 @@ import com.android.settings.R;
import com.android.settings.connecteddevice.DevicePreferenceCallback; import com.android.settings.connecteddevice.DevicePreferenceCallback;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
/** /**
* Controller to maintain connected usb device * Controller to maintain connected usb device
*/ */
public class ConnectedUsbDeviceUpdater { public class ConnectedUsbDeviceUpdater {
private static final String PREF_KEY = "connected_usb";
private final MetricsFeatureProvider mMetricsFeatureProvider;
private DashboardFragment mFragment; private DashboardFragment mFragment;
private UsbBackend mUsbBackend; private UsbBackend mUsbBackend;
private DevicePreferenceCallback mDevicePreferenceCallback; private DevicePreferenceCallback mDevicePreferenceCallback;
@@ -67,6 +74,8 @@ public class ConnectedUsbDeviceUpdater {
mUsbBackend = usbBackend; mUsbBackend = usbBackend;
mUsbReceiver = new UsbConnectionBroadcastReceiver(context, mUsbReceiver = new UsbConnectionBroadcastReceiver(context,
mUsbConnectionListener, mUsbBackend); mUsbConnectionListener, mUsbBackend);
mMetricsFeatureProvider = FeatureFactory.getFactory(mFragment.getContext())
.getMetricsFeatureProvider();
} }
public void registerCallback() { public void registerCallback() {
@@ -82,7 +91,9 @@ public class ConnectedUsbDeviceUpdater {
mUsbPreference = new Preference(context, null /* AttributeSet */); mUsbPreference = new Preference(context, null /* AttributeSet */);
mUsbPreference.setTitle(R.string.usb_pref); mUsbPreference.setTitle(R.string.usb_pref);
mUsbPreference.setIcon(R.drawable.ic_usb); mUsbPreference.setIcon(R.drawable.ic_usb);
mUsbPreference.setKey(PREF_KEY);
mUsbPreference.setOnPreferenceClickListener((Preference p) -> { mUsbPreference.setOnPreferenceClickListener((Preference p) -> {
mMetricsFeatureProvider.logClickedPreference(p, mFragment.getMetricsCategory());
// New version - uses a separate screen. // New version - uses a separate screen.
new SubSettingLauncher(mFragment.getContext()) new SubSettingLauncher(mFragment.getContext())
.setDestination(UsbDetailsFragment.class.getName()) .setDestination(UsbDetailsFragment.class.getName())

View File

@@ -150,12 +150,15 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements
@Override @Override
public boolean onPreferenceTreeClick(Preference preference) { public boolean onPreferenceTreeClick(Preference preference) {
if (preference == mBillingCycle) { if (preference == mBillingCycle) {
writePreferenceClickMetric(preference);
CycleEditorFragment.show(this); CycleEditorFragment.show(this);
return true; return true;
} else if (preference == mDataWarning) { } else if (preference == mDataWarning) {
writePreferenceClickMetric(preference);
BytesEditorFragment.show(this, false); BytesEditorFragment.show(this, false);
return true; return true;
} else if (preference == mDataLimit) { } else if (preference == mDataLimit) {
writePreferenceClickMetric(preference);
BytesEditorFragment.show(this, true); BytesEditorFragment.show(this, true);
return true; return true;
} }

View File

@@ -27,22 +27,25 @@ import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.euicc.EuiccManager; import android.telephony.euicc.EuiccManager;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.network.telephony.MobileNetworkActivity;
import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.widget.AddPreference;
import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
import java.util.List;
import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent; import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.network.telephony.MobileNetworkActivity;
import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.AddPreference;
import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import java.util.List;
public class MobileNetworkSummaryController extends AbstractPreferenceController implements public class MobileNetworkSummaryController extends AbstractPreferenceController implements
SubscriptionsChangeListener.SubscriptionsChangeListenerClient, LifecycleObserver, SubscriptionsChangeListener.SubscriptionsChangeListenerClient, LifecycleObserver,
PreferenceControllerMixin { PreferenceControllerMixin {
@@ -50,6 +53,8 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
private static final String KEY = "mobile_network_list"; private static final String KEY = "mobile_network_list";
private final MetricsFeatureProvider mMetricsFeatureProvider;
private SubscriptionManager mSubscriptionManager; private SubscriptionManager mSubscriptionManager;
private UserManager mUserManager; private UserManager mUserManager;
private SubscriptionsChangeListener mChangeListener; private SubscriptionsChangeListener mChangeListener;
@@ -72,6 +77,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
*/ */
public MobileNetworkSummaryController(Context context, Lifecycle lifecycle) { public MobileNetworkSummaryController(Context context, Lifecycle lifecycle) {
super(context); super(context);
mMetricsFeatureProvider = FeatureFactory.getFactory(mContext).getMetricsFeatureProvider();
mSubscriptionManager = context.getSystemService(SubscriptionManager.class); mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mUserManager = context.getSystemService(UserManager.class); mUserManager = context.getSystemService(UserManager.class);
if (lifecycle != null) { if (lifecycle != null) {
@@ -146,6 +152,8 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
if (subs.isEmpty()) { if (subs.isEmpty()) {
if (MobileNetworkUtils.showEuiccSettings(mContext)) { if (MobileNetworkUtils.showEuiccSettings(mContext)) {
mPreference.setOnPreferenceClickListener((Preference pref) -> { mPreference.setOnPreferenceClickListener((Preference pref) -> {
mMetricsFeatureProvider.logClickedPreference(pref,
pref.getExtras().getInt(DashboardFragment.CATEGORY));
startAddSimFlow(); startAddSimFlow();
return true; return true;
}); });
@@ -157,11 +165,17 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
// supported. // supported.
if (MobileNetworkUtils.showEuiccSettings(mContext)) { if (MobileNetworkUtils.showEuiccSettings(mContext)) {
mPreference.setAddWidgetEnabled(!mChangeListener.isAirplaneModeOn()); mPreference.setAddWidgetEnabled(!mChangeListener.isAirplaneModeOn());
mPreference.setOnAddClickListener(p -> startAddSimFlow()); mPreference.setOnAddClickListener(p -> {
mMetricsFeatureProvider.logClickedPreference(p,
p.getExtras().getInt(DashboardFragment.CATEGORY));
startAddSimFlow();
});
} }
if (subs.size() == 1) { if (subs.size() == 1) {
mPreference.setOnPreferenceClickListener((Preference pref) -> { mPreference.setOnPreferenceClickListener((Preference pref) -> {
mMetricsFeatureProvider.logClickedPreference(pref,
pref.getExtras().getInt(DashboardFragment.CATEGORY));
final SubscriptionInfo info = subs.get(0); final SubscriptionInfo info = subs.get(0);
final int subId = info.getSubscriptionId(); final int subId = info.getSubscriptionId();
if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId) if (!info.isEmbedded() && !mSubscriptionManager.isActiveSubscriptionId(subId)

View File

@@ -85,6 +85,7 @@ public class MobilePlanPreferenceController extends AbstractPreferenceController
if (mHost != null && KEY_MANAGE_MOBILE_PLAN.equals(preference.getKey())) { if (mHost != null && KEY_MANAGE_MOBILE_PLAN.equals(preference.getKey())) {
mMobilePlanDialogMessage = null; mMobilePlanDialogMessage = null;
onManageMobilePlanClick(); onManageMobilePlanClick();
return true;
} }
return false; return false;
} }

View File

@@ -133,6 +133,7 @@ public class ConfigureNotificationSettings extends DashboardFragment implements
@Override @Override
public boolean onPreferenceTreeClick(Preference preference) { public boolean onPreferenceTreeClick(Preference preference) {
if (preference instanceof RingtonePreference) { if (preference instanceof RingtonePreference) {
writePreferenceClickMetric(preference);
mRequestPreference = (RingtonePreference) preference; mRequestPreference = (RingtonePreference) preference;
mRequestPreference.onPrepareRingtonePickerIntent(mRequestPreference.getIntent()); mRequestPreference.onPrepareRingtonePickerIntent(mRequestPreference.getIntent());
getActivity().startActivityForResultAsUser( getActivity().startActivityForResultAsUser(

View File

@@ -27,6 +27,7 @@ import androidx.preference.Preference;
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.dashboard.DashboardFragment;
import com.android.settings.notification.SettingsEnableZenModeDialog; import com.android.settings.notification.SettingsEnableZenModeDialog;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.widget.LayoutPreference; import com.android.settingslib.widget.LayoutPreference;
@@ -65,23 +66,22 @@ public class ZenModeButtonPreferenceController extends AbstractZenModePreference
mZenButtonOn = ((LayoutPreference) preference) mZenButtonOn = ((LayoutPreference) preference)
.findViewById(R.id.zen_mode_settings_turn_on_button); .findViewById(R.id.zen_mode_settings_turn_on_button);
mZenButtonOn.setFocusableInTouchMode(true); mZenButtonOn.setFocusableInTouchMode(true);
updateZenButtonOnClickListener(); updateZenButtonOnClickListener(preference);
} }
if (null == mZenButtonOff) { if (null == mZenButtonOff) {
mZenButtonOff = ((LayoutPreference) preference) mZenButtonOff = ((LayoutPreference) preference)
.findViewById(R.id.zen_mode_settings_turn_off_button); .findViewById(R.id.zen_mode_settings_turn_off_button);
mZenButtonOff.setOnClickListener(v -> { mZenButtonOff.setOnClickListener(v -> {
mMetricsFeatureProvider.action(mContext, writeMetrics(preference, false);
SettingsEnums.ACTION_ZEN_TOGGLE_DND_BUTTON, false);
mBackend.setZenMode(Settings.Global.ZEN_MODE_OFF); mBackend.setZenMode(Settings.Global.ZEN_MODE_OFF);
}); });
} }
updateButtons(); updateButtons(preference);
} }
private void updateButtons() { private void updateButtons(Preference preference) {
switch (getZenMode()) { switch (getZenMode()) {
case Settings.Global.ZEN_MODE_ALARMS: case Settings.Global.ZEN_MODE_ALARMS:
case Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS: case Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS:
@@ -93,35 +93,39 @@ public class ZenModeButtonPreferenceController extends AbstractZenModePreference
case Settings.Global.ZEN_MODE_OFF: case Settings.Global.ZEN_MODE_OFF:
default: default:
mZenButtonOff.setVisibility(View.GONE); mZenButtonOff.setVisibility(View.GONE);
updateZenButtonOnClickListener(); updateZenButtonOnClickListener(preference);
mZenButtonOn.setVisibility(View.VISIBLE); mZenButtonOn.setVisibility(View.VISIBLE);
mZenButtonOn.requestFocus(); mZenButtonOn.requestFocus();
} }
} }
private void updateZenButtonOnClickListener() { private void updateZenButtonOnClickListener(Preference preference) {
int zenDuration = getZenDuration(); int zenDuration = getZenDuration();
switch (zenDuration) { switch (zenDuration) {
case Settings.Secure.ZEN_DURATION_PROMPT: case Settings.Secure.ZEN_DURATION_PROMPT:
mZenButtonOn.setOnClickListener(v -> { mZenButtonOn.setOnClickListener(v -> {
mMetricsFeatureProvider.action(mContext, writeMetrics(preference, true);
SettingsEnums.ACTION_ZEN_TOGGLE_DND_BUTTON, false);
new SettingsEnableZenModeDialog().show(mFragment, TAG); new SettingsEnableZenModeDialog().show(mFragment, TAG);
}); });
break; break;
case Settings.Secure.ZEN_DURATION_FOREVER: case Settings.Secure.ZEN_DURATION_FOREVER:
mZenButtonOn.setOnClickListener(v -> { mZenButtonOn.setOnClickListener(v -> {
mMetricsFeatureProvider.action(mContext, writeMetrics(preference, true);
SettingsEnums.ACTION_ZEN_TOGGLE_DND_BUTTON, false);
mBackend.setZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS); mBackend.setZenMode(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
}); });
break; break;
default: default:
mZenButtonOn.setOnClickListener(v -> { mZenButtonOn.setOnClickListener(v -> {
mMetricsFeatureProvider.action(mContext, writeMetrics(preference, true);
SettingsEnums.ACTION_ZEN_TOGGLE_DND_BUTTON, false);
mBackend.setZenModeForDuration(zenDuration); mBackend.setZenModeForDuration(zenDuration);
}); });
} }
} }
private void writeMetrics(Preference preference, boolean buttonOn) {
mMetricsFeatureProvider.logClickedPreference(preference,
preference.getExtras().getInt(DashboardFragment.CATEGORY));
mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ZEN_TOGGLE_DND_BUTTON,
buttonOn);
}
} }

View File

@@ -28,6 +28,7 @@ import android.provider.Contacts;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.Lifecycle;
public class ZenModeStarredContactsPreferenceController extends public class ZenModeStarredContactsPreferenceController extends
@@ -89,6 +90,8 @@ public class ZenModeStarredContactsPreferenceController extends
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
mMetricsFeatureProvider.logClickedPreference(preference,
preference.getExtras().getInt(DashboardFragment.CATEGORY));
if (mStarredContactsIntent.resolveActivity(mPackageManager) != null) { if (mStarredContactsIntent.resolveActivity(mPackageManager) != null) {
mContext.startActivity(mStarredContactsIntent); mContext.startActivity(mStarredContactsIntent);
} else { } else {

View File

@@ -118,7 +118,7 @@ public class WifiSettings extends RestrictedSettingsFragment
private static final String PREF_KEY_EMPTY_WIFI_LIST = "wifi_empty_list"; private static final String PREF_KEY_EMPTY_WIFI_LIST = "wifi_empty_list";
private static final String PREF_KEY_CONNECTED_ACCESS_POINTS = "connected_access_point"; private static final String PREF_KEY_CONNECTED_ACCESS_POINTS = "connected_access_point";
private static final String PREF_KEY_ACCESS_POINTS = "access_points"; private static final String PREF_KEY_ACCESS_POINTS = "access_points";
private static final String PREF_KEY_CONFIGURE_WIFI_SETTINGS = "configure_settings"; private static final String PREF_KEY_CONFIGURE_WIFI_SETTINGS = "configure_wifi_settings";
private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks"; private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
private static final String PREF_KEY_STATUS_MESSAGE = "wifi_status_message"; private static final String PREF_KEY_STATUS_MESSAGE = "wifi_status_message";
@VisibleForTesting @VisibleForTesting

View File

@@ -120,7 +120,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
// TODO(b/70983952): Rename these to use WifiEntry instead of AccessPoint. // TODO(b/70983952): Rename these to use WifiEntry instead of AccessPoint.
private static final String PREF_KEY_CONNECTED_ACCESS_POINTS = "connected_access_point"; private static final String PREF_KEY_CONNECTED_ACCESS_POINTS = "connected_access_point";
private static final String PREF_KEY_ACCESS_POINTS = "access_points"; private static final String PREF_KEY_ACCESS_POINTS = "access_points";
private static final String PREF_KEY_CONFIGURE_WIFI_SETTINGS = "configure_settings"; private static final String PREF_KEY_CONFIGURE_WIFI_SETTINGS = "configure_wifi_settings";
private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks"; private static final String PREF_KEY_SAVED_NETWORKS = "saved_networks";
private static final String PREF_KEY_STATUS_MESSAGE = "wifi_status_message"; private static final String PREF_KEY_STATUS_MESSAGE = "wifi_status_message";
@VisibleForTesting @VisibleForTesting
@@ -1111,7 +1111,7 @@ public class WifiSettings2 extends RestrictedSettingsFragment
.launch(); .launch();
} }
/** Helper method to return whether an WifiEntry is disabled due to a wrong password */ /** Helper method to return whether a WifiEntry is disabled due to a wrong password */
private static boolean isDisabledByWrongPassword(WifiEntry wifiEntry) { private static boolean isDisabledByWrongPassword(WifiEntry wifiEntry) {
WifiConfiguration config = wifiEntry.getWifiConfiguration(); WifiConfiguration config = wifiEntry.getWifiConfiguration();
if (config == null) { if (config == null) {

View File

@@ -82,7 +82,7 @@ public class BluetoothDeviceUpdaterTest {
private BluetoothDeviceUpdater mBluetoothDeviceUpdater; private BluetoothDeviceUpdater mBluetoothDeviceUpdater;
private BluetoothDevicePreference mPreference; private BluetoothDevicePreference mPreference;
private ShadowBluetoothAdapter mShadowBluetoothAdapter; private ShadowBluetoothAdapter mShadowBluetoothAdapter;
private List<CachedBluetoothDevice> mCachedDevices = new ArrayList<CachedBluetoothDevice>(); private List<CachedBluetoothDevice> mCachedDevices = new ArrayList<>();
@Before @Before
public void setUp() { public void setUp() {
@@ -104,11 +104,16 @@ public class BluetoothDeviceUpdaterTest {
mBluetoothDeviceUpdater = mBluetoothDeviceUpdater =
new BluetoothDeviceUpdater(mDashboardFragment, mDevicePreferenceCallback, new BluetoothDeviceUpdater(mDashboardFragment, mDevicePreferenceCallback,
mLocalManager) { mLocalManager) {
@Override @Override
public boolean isFilterMatched(CachedBluetoothDevice cachedBluetoothDevice) { public boolean isFilterMatched(CachedBluetoothDevice cachedBluetoothDevice) {
return true; return true;
} }
};
@Override
protected String getPreferenceKey() {
return "test_bt";
}
};
mBluetoothDeviceUpdater.setPrefContext(mContext); mBluetoothDeviceUpdater.setPrefContext(mContext);
} }