Use MetricsFeatureProvider for logging in Settings.

Bug: 31664539
Test: make RunSettingsRoboTests for regression
Test: adb logcat -b events | egrep "(sysui_|notification_)" for
      verifying log

Change-Id: Id944be7c4ff9911aebee481c2df485542f1318f0
This commit is contained in:
Fan Zhang
2016-09-22 10:43:12 -07:00
parent f91cf3cfa7
commit aa71afe597
28 changed files with 204 additions and 125 deletions

View File

@@ -27,22 +27,22 @@ import android.provider.Settings;
import android.support.v14.preference.SwitchPreference; import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.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;
public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListener { public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListener {
private static final int EVENT_SERVICE_STATE_CHANGED = 3;
private final Context mContext; private final Context mContext;
private final SwitchPreference mSwitchPref;
private final MetricsFeatureProvider mMetricsFeatureProvider;
private PhoneStateIntentReceiver mPhoneStateReceiver; private PhoneStateIntentReceiver mPhoneStateReceiver;
private final SwitchPreference mSwitchPref;
private static final int EVENT_SERVICE_STATE_CHANGED = 3;
private Handler mHandler = new Handler() { private Handler mHandler = new Handler() {
@Override @Override
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
@@ -61,10 +61,12 @@ public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListene
} }
}; };
public AirplaneModeEnabler(Context context, SwitchPreference airplaneModeSwitchPreference) { public AirplaneModeEnabler(Context context, SwitchPreference airplaneModeSwitchPreference,
MetricsFeatureProvider metricsFeatureProvider) {
mContext = context; mContext = context;
mSwitchPref = airplaneModeSwitchPreference; mSwitchPref = airplaneModeSwitchPreference;
mMetricsFeatureProvider = metricsFeatureProvider;
airplaneModeSwitchPreference.setPersistent(false); airplaneModeSwitchPreference.setPersistent(false);
@@ -92,7 +94,7 @@ public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListene
private void setAirplaneModeOn(boolean enabling) { private void setAirplaneModeOn(boolean enabling) {
// Change the system setting // Change the system setting
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON,
enabling ? 1 : 0); enabling ? 1 : 0);
// Update the UI to reflect system setting // Update the UI to reflect system setting
mSwitchPref.setChecked(enabling); mSwitchPref.setChecked(enabling);
@@ -119,11 +121,11 @@ public class AirplaneModeEnabler implements Preference.OnPreferenceChangeListene
*/ */
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
if (Boolean.parseBoolean( if (Boolean.parseBoolean(
SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) { SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
// In ECM mode, do not update database at this point // In ECM mode, do not update database at this point
} else { } else {
Boolean value = (Boolean) newValue; Boolean value = (Boolean) newValue;
MetricsLogger.action(mContext, MetricsEvent.ACTION_AIRPLANE_TOGGLE, value); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_AIRPLANE_TOGGLE, value);
setAirplaneModeOn(value); setAirplaneModeOn(value);
} }
return true; return true;

View File

@@ -21,19 +21,15 @@ import android.app.ActivityManagerNative;
import android.app.AlertDialog.Builder; import android.app.AlertDialog.Builder;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Handler;
import android.os.RemoteException; import android.os.RemoteException;
import android.text.format.DateUtils;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.CheckedTextView; import android.widget.CheckedTextView;
import android.widget.RadioButton;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.overlay.FeatureFactory;
public class BugreportPreference extends CustomDialogPreference { public class BugreportPreference extends CustomDialogPreference {
@@ -87,11 +83,12 @@ public class BugreportPreference extends CustomDialogPreference {
final Context context = getContext(); final Context context = getContext();
if (mFullTitle.isChecked()) { if (mFullTitle.isChecked()) {
Log.v(TAG, "Taking full bugreport right away"); Log.v(TAG, "Taking full bugreport right away");
MetricsLogger.action(context, MetricsEvent.ACTION_BUGREPORT_FROM_SETTINGS_FULL); FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context,
MetricsEvent.ACTION_BUGREPORT_FROM_SETTINGS_FULL);
takeBugreport(ActivityManager.BUGREPORT_OPTION_FULL); takeBugreport(ActivityManager.BUGREPORT_OPTION_FULL);
} else { } else {
Log.v(TAG, "Taking interactive bugreport right away"); Log.v(TAG, "Taking interactive bugreport right away");
MetricsLogger.action(context, FeatureFactory.getFactory(context).getMetricsFeatureProvider().action(context,
MetricsEvent.ACTION_BUGREPORT_FROM_SETTINGS_INTERACTIVE); MetricsEvent.ACTION_BUGREPORT_FROM_SETTINGS_INTERACTIVE);
takeBugreport(ActivityManager.BUGREPORT_OPTION_INTERACTIVE); takeBugreport(ActivityManager.BUGREPORT_OPTION_INTERACTIVE);
} }

View File

@@ -19,11 +19,9 @@ package com.android.settings;
import android.app.Activity; import android.app.Activity;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.UiModeManager; import android.app.UiModeManager;
import android.app.WallpaperManager;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.ComponentName;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
@@ -46,7 +44,6 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import com.android.internal.app.NightDisplayController; import com.android.internal.app.NightDisplayController;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.internal.view.RotationPolicy; import com.android.internal.view.RotationPolicy;
import com.android.settings.accessibility.ToggleFontSizePreferenceFragment; import com.android.settings.accessibility.ToggleFontSizePreferenceFragment;
@@ -61,13 +58,11 @@ import java.util.List;
import static android.provider.Settings.Secure.CAMERA_GESTURE_DISABLED; import static android.provider.Settings.Secure.CAMERA_GESTURE_DISABLED;
import static android.provider.Settings.Secure.DOUBLE_TAP_TO_WAKE; import static android.provider.Settings.Secure.DOUBLE_TAP_TO_WAKE;
import static android.provider.Settings.Secure.DOZE_ENABLED;
import static android.provider.Settings.Secure.WAKE_GESTURE_ENABLED; import static android.provider.Settings.Secure.WAKE_GESTURE_ENABLED;
import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;
import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL; import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
public class DisplaySettings extends SettingsPreferenceFragment implements public class DisplaySettings extends SettingsPreferenceFragment implements
@@ -194,7 +189,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean locked = Integer.parseInt((String) newValue) != 0; final boolean locked = Integer.parseInt((String) newValue) != 0;
MetricsLogger.action(getActivity(), MetricsEvent.ACTION_ROTATION_LOCK, mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_ROTATION_LOCK,
locked); locked);
RotationPolicy.setRotationLock(activity, locked); RotationPolicy.setRotationLock(activity, locked);
return true; return true;
@@ -437,7 +432,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
@Override @Override
public boolean onPreferenceTreeClick(Preference preference) { public boolean onPreferenceTreeClick(Preference preference) {
if (preference == mDozePreference) { if (preference == mDozePreference) {
MetricsLogger.action(getActivity(), MetricsEvent.ACTION_AMBIENT_DISPLAY); mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_AMBIENT_DISPLAY);
} }
return super.onPreferenceTreeClick(preference); return super.onPreferenceTreeClick(preference);
} }

View File

@@ -50,7 +50,6 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.HelpUtils; import com.android.settingslib.HelpUtils;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
/** /**
* Base class for Settings fragments, with some helper functions and dialog management. * Base class for Settings fragments, with some helper functions and dialog management.

View File

@@ -39,7 +39,6 @@ import android.widget.TextView;
import com.android.ims.ImsConfig; import com.android.ims.ImsConfig;
import com.android.ims.ImsManager; import com.android.ims.ImsManager;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.internal.telephony.Phone; import com.android.internal.telephony.Phone;
import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBar;
@@ -335,9 +334,9 @@ public class WifiCallingSettings extends SettingsPreferenceFragment
int wfcMode = ImsManager.getWfcMode(context); int wfcMode = ImsManager.getWfcMode(context);
updateButtonWfcMode(context, wfcEnabled, wfcMode); updateButtonWfcMode(context, wfcEnabled, wfcMode);
if (wfcEnabled) { if (wfcEnabled) {
MetricsLogger.action(getActivity(), getMetricsCategory(), wfcMode); mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), wfcMode);
} else { } else {
MetricsLogger.action(getActivity(), getMetricsCategory(), -1); mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), -1);
} }
} }
@@ -390,7 +389,7 @@ public class WifiCallingSettings extends SettingsPreferenceFragment
if (buttonMode != currentMode) { if (buttonMode != currentMode) {
ImsManager.setWfcMode(context, buttonMode); ImsManager.setWfcMode(context, buttonMode);
mButtonWfcMode.setSummary(getWfcModeSummary(context, buttonMode)); mButtonWfcMode.setSummary(getWfcModeSummary(context, buttonMode));
MetricsLogger.action(getActivity(), getMetricsCategory(), buttonMode); mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode);
} }
} }
return true; return true;

View File

@@ -234,7 +234,8 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
RestrictedPreference androidBeam = (RestrictedPreference) findPreference( RestrictedPreference androidBeam = (RestrictedPreference) findPreference(
KEY_ANDROID_BEAM_SETTINGS); KEY_ANDROID_BEAM_SETTINGS);
mAirplaneModeEnabler = new AirplaneModeEnabler(activity, mAirplaneModePreference); mAirplaneModeEnabler = new AirplaneModeEnabler(activity, mAirplaneModePreference,
mMetricsFeatureProvider);
mNfcEnabler = new NfcEnabler(activity, nfc, androidBeam); mNfcEnabler = new NfcEnabler(activity, nfc, androidBeam);
mButtonWfc = (PreferenceScreen) findPreference(KEY_WFC_SETTINGS); mButtonWfc = (PreferenceScreen) findPreference(KEY_WFC_SETTINGS);

View File

@@ -16,7 +16,6 @@
package com.android.settings.accessibility; package com.android.settings.accessibility;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
public class FontSizePreferenceFragmentForSetupWizard public class FontSizePreferenceFragmentForSetupWizard
@@ -31,7 +30,7 @@ public class FontSizePreferenceFragmentForSetupWizard
public void onStop() { public void onStop() {
// Log the final choice in value if it's different from the previous value. // Log the final choice in value if it's different from the previous value.
if (mCurrentIndex != mInitialIndex) { if (mCurrentIndex != mInitialIndex) {
MetricsLogger.action(getContext(), MetricsEvent.SUW_ACCESSIBILITY_FONT_SIZE, mMetricsFeatureProvider.action(getContext(), MetricsEvent.SUW_ACCESSIBILITY_FONT_SIZE,
mCurrentIndex); mCurrentIndex);
} }

View File

@@ -41,7 +41,7 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard
public void onStop() { public void onStop() {
// Log the final choice in value if it's different from the previous value. // Log the final choice in value if it's different from the previous value.
if (mToggleSwitch.isChecked() != mToggleSwitchWasInitiallyChecked) { if (mToggleSwitch.isChecked() != mToggleSwitchWasInitiallyChecked) {
MetricsLogger.action(getContext(), mMetricsFeatureProvider.action(getContext(),
MetricsEvent.SUW_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION, MetricsEvent.SUW_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION,
mToggleSwitch.isChecked()); mToggleSwitch.isChecked());
} }

View File

@@ -18,7 +18,6 @@ package com.android.settings.accessibility;
import android.os.Bundle; import android.os.Bundle;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
public class ToggleScreenReaderPreferenceFragmentForSetupWizard public class ToggleScreenReaderPreferenceFragmentForSetupWizard
@@ -41,7 +40,7 @@ public class ToggleScreenReaderPreferenceFragmentForSetupWizard
public void onStop() { public void onStop() {
// Log the final choice in value if it's different from the previous value. // Log the final choice in value if it's different from the previous value.
if (mToggleSwitch.isChecked() != mToggleSwitchWasInitiallyChecked) { if (mToggleSwitch.isChecked() != mToggleSwitchWasInitiallyChecked) {
MetricsLogger.action(getContext(), mMetricsFeatureProvider.action(getContext(),
MetricsEvent.SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER, mToggleSwitch.isChecked()); MetricsEvent.SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER, mToggleSwitch.isChecked());
} }

View File

@@ -24,13 +24,12 @@ import android.content.IntentFilter;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.provider.Settings; import android.provider.Settings;
import android.util.Log;
import android.widget.Switch; import android.widget.Switch;
import android.widget.Toast; import android.widget.Toast;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.search.Index; import com.android.settings.search.Index;
import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBar;
import com.android.settingslib.WirelessUtils; import com.android.settingslib.WirelessUtils;
@@ -43,9 +42,10 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager;
* preference reflects the current state. * preference reflects the current state.
*/ */
public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener { public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener {
private final Switch mSwitch;
private final SwitchBar mSwitchBar;
private final MetricsFeatureProvider mMetricsFeatureProvider;
private Context mContext; private Context mContext;
private Switch mSwitch;
private SwitchBar mSwitchBar;
private boolean mValidListener; private boolean mValidListener;
private final LocalBluetoothAdapter mLocalAdapter; private final LocalBluetoothAdapter mLocalAdapter;
private final IntentFilter mIntentFilter; private final IntentFilter mIntentFilter;
@@ -76,8 +76,10 @@ public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener
} }
}; };
public BluetoothEnabler(Context context, SwitchBar switchBar) { public BluetoothEnabler(Context context, SwitchBar switchBar,
MetricsFeatureProvider metricsFeatureProvider) {
mContext = context; mContext = context;
mMetricsFeatureProvider = metricsFeatureProvider;
mSwitchBar = switchBar; mSwitchBar = switchBar;
mSwitch = switchBar.getSwitch(); mSwitch = switchBar.getSwitch();
mValidListener = false; mValidListener = false;
@@ -187,7 +189,7 @@ public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener
switchView.setChecked(false); switchView.setChecked(false);
} }
MetricsLogger.action(mContext, MetricsEvent.ACTION_BLUETOOTH_TOGGLE, isChecked); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_BLUETOOTH_TOGGLE, isChecked);
if (mLocalAdapter != null) { if (mLocalAdapter != null) {
boolean status = mLocalAdapter.setBluetoothEnabled(isChecked); boolean status = mLocalAdapter.setBluetoothEnabled(isChecked);

View File

@@ -40,7 +40,7 @@ import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.LinkifyUtils; import com.android.settings.LinkifyUtils;
import com.android.settings.R; import com.android.settings.R;
@@ -146,7 +146,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
final SettingsActivity activity = (SettingsActivity) getActivity(); final SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar(); mSwitchBar = activity.getSwitchBar();
mBluetoothEnabler = new BluetoothEnabler(activity, mSwitchBar); mBluetoothEnabler = new BluetoothEnabler(activity, mSwitchBar, mMetricsFeatureProvider);
mBluetoothEnabler.setupSwitchBar(); mBluetoothEnabler.setupSwitchBar();
} }
@@ -248,19 +248,22 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
switch (item.getItemId()) { switch (item.getItemId()) {
case MENU_ID_SCAN: case MENU_ID_SCAN:
if (mLocalAdapter.getBluetoothState() == BluetoothAdapter.STATE_ON) { if (mLocalAdapter.getBluetoothState() == BluetoothAdapter.STATE_ON) {
MetricsLogger.action(getActivity(), MetricsEvent.ACTION_BLUETOOTH_SCAN); mMetricsFeatureProvider.action(getActivity(),
MetricsEvent.ACTION_BLUETOOTH_SCAN);
startScanning(); startScanning();
} }
return true; return true;
case MENU_ID_RENAME_DEVICE: case MENU_ID_RENAME_DEVICE:
MetricsLogger.action(getActivity(), MetricsEvent.ACTION_BLUETOOTH_RENAME); mMetricsFeatureProvider.action(getActivity(),
MetricsEvent.ACTION_BLUETOOTH_RENAME);
new BluetoothNameDialogFragment().show( new BluetoothNameDialogFragment().show(
getFragmentManager(), "rename device"); getFragmentManager(), "rename device");
return true; return true;
case MENU_ID_SHOW_RECEIVED: case MENU_ID_SHOW_RECEIVED:
MetricsLogger.action(getActivity(), MetricsEvent.ACTION_BLUETOOTH_FILES); mMetricsFeatureProvider.action(getActivity(),
MetricsEvent.ACTION_BLUETOOTH_FILES);
Intent intent = new Intent(BTOPP_ACTION_OPEN_RECEIVED_FILES); Intent intent = new Intent(BTOPP_ACTION_OPEN_RECEIVED_FILES);
getActivity().sendBroadcast(intent); getActivity().sendBroadcast(intent);
return true; return true;

View File

@@ -15,14 +15,18 @@
*/ */
package com.android.settings.core.instrumentation; package com.android.settings.core.instrumentation;
import android.content.Context;
import com.android.settings.DialogCreatable; import com.android.settings.DialogCreatable;
import com.android.settings.core.lifecycle.ObservableDialogFragment; import com.android.settings.core.lifecycle.ObservableDialogFragment;
import com.android.settings.overlay.FeatureFactory;
public abstract class InstrumentedDialogFragment extends ObservableDialogFragment public abstract class InstrumentedDialogFragment extends ObservableDialogFragment
implements Instrumentable { implements Instrumentable {
protected final DialogCreatable mDialogCreatable; protected final DialogCreatable mDialogCreatable;
protected int mDialogId; protected int mDialogId;
protected MetricsFeatureProvider mMetricsFeatureProvider;
public InstrumentedDialogFragment() { public InstrumentedDialogFragment() {
this(null /* parentFragment */, 0 /* dialogId */); this(null /* parentFragment */, 0 /* dialogId */);
@@ -37,4 +41,10 @@ public abstract class InstrumentedDialogFragment extends ObservableDialogFragmen
mLifecycle.addObserver(new VisibilityLoggerMixin(getMetricsCategory())); mLifecycle.addObserver(new VisibilityLoggerMixin(getMetricsCategory()));
} }
@Override
public void onAttach(Context context) {
super.onAttach(context);
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
}
} }

View File

@@ -27,11 +27,11 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto; import com.android.internal.logging.MetricsProto;
import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedFragment;
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.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settings.overlay.SupportFeatureProvider; import com.android.settings.overlay.SupportFeatureProvider;
import com.android.settings.widget.RtlCompatibleViewPager; import com.android.settings.widget.RtlCompatibleViewPager;
@@ -73,7 +73,7 @@ public final class DashboardContainerFragment extends InstrumentedFragment {
getChildFragmentManager(), mViewPager); getChildFragmentManager(), mViewPager);
mViewPager.setAdapter(mPagerAdapter); mViewPager.setAdapter(mPagerAdapter);
mViewPager.addOnPageChangeListener( mViewPager.addOnPageChangeListener(
new TabChangeListener((SettingsActivity) getActivity())); new TabChangeListener((SettingsActivity) getActivity(), mMetricsFeatureProvider));
// check if support tab needs to be selected // check if support tab needs to be selected
final String selectedTab = getArguments(). final String selectedTab = getArguments().
@@ -157,9 +157,12 @@ public final class DashboardContainerFragment extends InstrumentedFragment {
implements RtlCompatibleViewPager.OnPageChangeListener { implements RtlCompatibleViewPager.OnPageChangeListener {
private final SettingsActivity mActivity; private final SettingsActivity mActivity;
private final MetricsFeatureProvider mMetricsFeatureProvider;
public TabChangeListener(SettingsActivity activity) { public TabChangeListener(SettingsActivity activity,
MetricsFeatureProvider metricsFeatureProvider) {
mActivity = activity; mActivity = activity;
mMetricsFeatureProvider = metricsFeatureProvider;
} }
@Override @Override
@@ -176,12 +179,12 @@ public final class DashboardContainerFragment extends InstrumentedFragment {
public void onPageSelected(int position) { public void onPageSelected(int position) {
switch (position) { switch (position) {
case INDEX_SUMMARY_FRAGMENT: case INDEX_SUMMARY_FRAGMENT:
MetricsLogger.action( mMetricsFeatureProvider.action(
mActivity, MetricsProto.MetricsEvent.ACTION_SELECT_SUMMARY); mActivity, MetricsProto.MetricsEvent.ACTION_SELECT_SUMMARY);
mActivity.setDisplaySearchMenu(true); mActivity.setDisplaySearchMenu(true);
break; break;
case INDEX_SUPPORT_FRAGMENT: case INDEX_SUPPORT_FRAGMENT:
MetricsLogger.action( mMetricsFeatureProvider.action(
mActivity, MetricsProto.MetricsEvent.ACTION_SELECT_SUPPORT_FRAGMENT); mActivity, MetricsProto.MetricsEvent.ACTION_SELECT_SUPPORT_FRAGMENT);
mActivity.setDisplaySearchMenu(false); mActivity.setDisplaySearchMenu(false);
break; break;

View File

@@ -31,12 +31,10 @@ import com.android.settings.R;
import com.android.settings.Settings; import com.android.settings.Settings;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedFragment;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.dashboard.conditional.Condition; import com.android.settings.dashboard.conditional.Condition;
import com.android.settings.dashboard.conditional.ConditionAdapterUtils; import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
import com.android.settings.dashboard.conditional.ConditionManager; import com.android.settings.dashboard.conditional.ConditionManager;
import com.android.settings.dashboard.conditional.FocusRecyclerView; import com.android.settings.dashboard.conditional.FocusRecyclerView;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.SuggestionParser; import com.android.settingslib.SuggestionParser;
import com.android.settingslib.drawer.DashboardCategory; import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.SettingsDrawerActivity; import com.android.settingslib.drawer.SettingsDrawerActivity;

View File

@@ -33,11 +33,12 @@ import android.util.AttributeSet;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.Checkable; import android.widget.Checkable;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.CustomDialogPreference; import com.android.settings.CustomDialogPreference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.overlay.FeatureFactory;
import java.util.List; import java.util.List;
@@ -110,7 +111,9 @@ public class CellDataPreference extends CustomDialogPreference implements Templa
@Override @Override
protected void performClick(View view) { protected void performClick(View view) {
MetricsLogger.action(getContext(), MetricsEvent.ACTION_CELL_DATA_TOGGLE, !mChecked); final Context context = getContext();
FeatureFactory.getFactory(context).getMetricsFeatureProvider()
.action(context, MetricsEvent.ACTION_CELL_DATA_TOGGLE, !mChecked);
if (mChecked) { if (mChecked) {
final SubscriptionInfo currentSir = mSubscriptionManager.getActiveSubscriptionInfo( final SubscriptionInfo currentSir = mSubscriptionManager.getActiveSubscriptionInfo(
mSubId); mSubId);

View File

@@ -19,12 +19,11 @@ import android.net.INetworkPolicyListener;
import android.net.NetworkPolicyManager; import android.net.NetworkPolicyManager;
import android.os.Handler; import android.os.Handler;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager;
import android.util.Log;
import android.util.SparseIntArray; import android.util.SparseIntArray;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.overlay.FeatureFactory;
import java.util.ArrayList; import java.util.ArrayList;
@@ -37,6 +36,7 @@ public class DataSaverBackend {
private static final String TAG = "DataSaverBackend"; private static final String TAG = "DataSaverBackend";
private final Context mContext; private final Context mContext;
private final MetricsFeatureProvider mMetricsFeatureProvider;
private final Handler mHandler = new Handler(); private final Handler mHandler = new Handler();
private final NetworkPolicyManager mPolicyManager; private final NetworkPolicyManager mPolicyManager;
@@ -48,6 +48,7 @@ public class DataSaverBackend {
// TODO: Staticize into only one. // TODO: Staticize into only one.
public DataSaverBackend(Context context) { public DataSaverBackend(Context context) {
mContext = context; mContext = context;
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
mPolicyManager = NetworkPolicyManager.from(context); mPolicyManager = NetworkPolicyManager.from(context);
} }
@@ -72,7 +73,8 @@ public class DataSaverBackend {
public void setDataSaverEnabled(boolean enabled) { public void setDataSaverEnabled(boolean enabled) {
mPolicyManager.setRestrictBackground(enabled); mPolicyManager.setRestrictBackground(enabled);
MetricsLogger.action(mContext, MetricsEvent.ACTION_DATA_SAVER_MODE, enabled ? 1 : 0); mMetricsFeatureProvider.action(
mContext, MetricsEvent.ACTION_DATA_SAVER_MODE, enabled ? 1 : 0);
} }
public void refreshWhitelist() { public void refreshWhitelist() {
@@ -84,7 +86,8 @@ public class DataSaverBackend {
mPolicyManager.setUidPolicy(uid, policy); mPolicyManager.setUidPolicy(uid, policy);
mUidPolicies.put(uid, policy); mUidPolicies.put(uid, policy);
if (whitelisted) { if (whitelisted) {
MetricsLogger.action(mContext, MetricsEvent.ACTION_DATA_SAVER_WHITELIST, packageName); mMetricsFeatureProvider.action(
mContext, MetricsEvent.ACTION_DATA_SAVER_WHITELIST, packageName);
} }
} }
@@ -122,7 +125,8 @@ public class DataSaverBackend {
mPolicyManager.setUidPolicy(uid, policy); mPolicyManager.setUidPolicy(uid, policy);
mUidPolicies.put(uid, policy); mUidPolicies.put(uid, policy);
if (blacklisted) { if (blacklisted) {
MetricsLogger.action(mContext, MetricsEvent.ACTION_DATA_SAVER_BLACKLIST, packageName); mMetricsFeatureProvider.action(
mContext, MetricsEvent.ACTION_DATA_SAVER_BLACKLIST, packageName);
} }
} }

View File

@@ -16,7 +16,6 @@
package com.android.settings.display; package com.android.settings.display;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
public class ScreenZoomPreferenceFragmentForSetupWizard public class ScreenZoomPreferenceFragmentForSetupWizard
@@ -31,8 +30,8 @@ public class ScreenZoomPreferenceFragmentForSetupWizard
public void onStop() { public void onStop() {
// Log the final choice in value if it's different from the previous value. // Log the final choice in value if it's different from the previous value.
if (mCurrentIndex != mInitialIndex) { if (mCurrentIndex != mInitialIndex) {
MetricsLogger.action(getContext(), MetricsEvent.SUW_ACCESSIBILITY_DISPLAY_SIZE, mMetricsFeatureProvider.action(
mCurrentIndex); getContext(), MetricsEvent.SUW_ACCESSIBILITY_DISPLAY_SIZE, mCurrentIndex);
} }
super.onStop(); super.onStop();

View File

@@ -21,7 +21,6 @@ import android.annotation.Nullable;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.app.DialogFragment;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.content.ActivityNotFoundException; import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;
@@ -40,8 +39,8 @@ import android.os.Handler;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.Preference.OnPreferenceClickListener;
import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import android.support.v7.preference.Preference.OnPreferenceClickListener;
import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceGroup;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import android.support.v7.preference.PreferenceViewHolder; import android.support.v7.preference.PreferenceViewHolder;
@@ -60,16 +59,15 @@ import android.widget.EditText;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.ChooseLockGeneric; import com.android.settings.ChooseLockGeneric;
import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.ChooseLockSettingsHelper;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.HelpUtils;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import java.util.List; import java.util.List;
@@ -594,7 +592,7 @@ public class FingerprintSettings extends SubSettings {
if (DEBUG) { if (DEBUG) {
Log.v(TAG, "rename " + name + " to " + newName); Log.v(TAG, "rename " + name + " to " + newName);
} }
MetricsLogger.action(getContext(), mMetricsFeatureProvider.action(getContext(),
MetricsEvent.ACTION_FINGERPRINT_RENAME, MetricsEvent.ACTION_FINGERPRINT_RENAME,
mFp.getFingerId()); mFp.getFingerId());
FingerprintSettingsFragment parent FingerprintSettingsFragment parent
@@ -639,7 +637,7 @@ public class FingerprintSettings extends SubSettings {
private void onDeleteClick(DialogInterface dialog) { private void onDeleteClick(DialogInterface dialog) {
if (DEBUG) Log.v(TAG, "Removing fpId=" + mFp.getFingerId()); if (DEBUG) Log.v(TAG, "Removing fpId=" + mFp.getFingerId());
MetricsLogger.action(getContext(), MetricsEvent.ACTION_FINGERPRINT_DELETE, mMetricsFeatureProvider.action(getContext(), MetricsEvent.ACTION_FINGERPRINT_DELETE,
mFp.getFingerId()); mFp.getFingerId());
FingerprintSettingsFragment parent FingerprintSettingsFragment parent
= (FingerprintSettingsFragment) getTargetFragment(); = (FingerprintSettingsFragment) getTargetFragment();

View File

@@ -39,7 +39,6 @@ import android.support.v7.preference.PreferenceScreen;
import android.support.v7.preference.PreferenceViewHolder; import android.support.v7.preference.PreferenceViewHolder;
import android.view.View; import android.view.View;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.utils.ManagedServiceSettings.Config; import com.android.settings.utils.ManagedServiceSettings.Config;
@@ -109,7 +108,7 @@ public class ZenModeAutomationSettings extends ZenModeSettingsBase {
new ZenRuleNameDialog(mContext, null) { new ZenRuleNameDialog(mContext, null) {
@Override @Override
public void onOk(String ruleName) { public void onOk(String ruleName) {
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_ADD_RULE_OK); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_ADD_RULE_OK);
AutomaticZenRule rule = new AutomaticZenRule(ruleName, ri.serviceComponent, AutomaticZenRule rule = new AutomaticZenRule(ruleName, ri.serviceComponent,
ri.defaultConditionId, NotificationManager.INTERRUPTION_FILTER_PRIORITY, ri.defaultConditionId, NotificationManager.INTERRUPTION_FILTER_PRIORITY,
true); true);
@@ -129,7 +128,8 @@ public class ZenModeAutomationSettings extends ZenModeSettingsBase {
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_DELETE_RULE_OK); mMetricsFeatureProvider.action(mContext,
MetricsEvent.ACTION_ZEN_DELETE_RULE_OK);
removeZenRule(ruleId); removeZenRule(ruleId);
} }
}) })
@@ -173,7 +173,7 @@ public class ZenModeAutomationSettings extends ZenModeSettingsBase {
p.setOnPreferenceClickListener(new OnPreferenceClickListener() { p.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override @Override
public boolean onPreferenceClick(Preference preference) { public boolean onPreferenceClick(Preference preference) {
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_ADD_RULE); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_ADD_RULE);
showAddRuleDialog(); showAddRuleDialog();
return true; return true;
} }

View File

@@ -27,7 +27,6 @@ import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import android.util.Log; import android.util.Log;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.search.Indexable; import com.android.settings.search.Indexable;
@@ -64,7 +63,8 @@ public class ZenModePrioritySettings extends ZenModeSettingsBase implements Inde
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
if (mDisableListeners) return true; if (mDisableListeners) return true;
final boolean val = (Boolean) newValue; final boolean val = (Boolean) newValue;
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_REMINDERS, val); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_REMINDERS,
val);
if (DEBUG) Log.d(TAG, "onPrefChange allowReminders=" + val); if (DEBUG) Log.d(TAG, "onPrefChange allowReminders=" + val);
savePolicy(getNewPriorityCategories(val, Policy.PRIORITY_CATEGORY_REMINDERS), savePolicy(getNewPriorityCategories(val, Policy.PRIORITY_CATEGORY_REMINDERS),
mPolicy.priorityCallSenders, mPolicy.priorityMessageSenders, mPolicy.priorityCallSenders, mPolicy.priorityMessageSenders,
@@ -79,7 +79,7 @@ public class ZenModePrioritySettings extends ZenModeSettingsBase implements Inde
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
if (mDisableListeners) return true; if (mDisableListeners) return true;
final boolean val = (Boolean) newValue; final boolean val = (Boolean) newValue;
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_EVENTS, val); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_EVENTS, val);
if (DEBUG) Log.d(TAG, "onPrefChange allowEvents=" + val); if (DEBUG) Log.d(TAG, "onPrefChange allowEvents=" + val);
savePolicy(getNewPriorityCategories(val, Policy.PRIORITY_CATEGORY_EVENTS), savePolicy(getNewPriorityCategories(val, Policy.PRIORITY_CATEGORY_EVENTS),
mPolicy.priorityCallSenders, mPolicy.priorityMessageSenders, mPolicy.priorityCallSenders, mPolicy.priorityMessageSenders,
@@ -98,7 +98,7 @@ public class ZenModePrioritySettings extends ZenModeSettingsBase implements Inde
final boolean allowMessages = val != SOURCE_NONE; final boolean allowMessages = val != SOURCE_NONE;
final int allowMessagesFrom = final int allowMessagesFrom =
val == SOURCE_NONE ? mPolicy.priorityMessageSenders : val; val == SOURCE_NONE ? mPolicy.priorityMessageSenders : val;
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_MESSAGES, val); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_MESSAGES, val);
if (DEBUG) Log.d(TAG, "onPrefChange allowMessages=" + allowMessages if (DEBUG) Log.d(TAG, "onPrefChange allowMessages=" + allowMessages
+ " allowMessagesFrom=" + ZenModeConfig.sourceToString(allowMessagesFrom)); + " allowMessagesFrom=" + ZenModeConfig.sourceToString(allowMessagesFrom));
savePolicy( savePolicy(
@@ -118,7 +118,7 @@ public class ZenModePrioritySettings extends ZenModeSettingsBase implements Inde
final int val = Integer.parseInt((String) newValue); final int val = Integer.parseInt((String) newValue);
final boolean allowCalls = val != SOURCE_NONE; final boolean allowCalls = val != SOURCE_NONE;
final int allowCallsFrom = val == SOURCE_NONE ? mPolicy.priorityCallSenders : val; final int allowCallsFrom = val == SOURCE_NONE ? mPolicy.priorityCallSenders : val;
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_CALLS, val); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_CALLS, val);
if (DEBUG) Log.d(TAG, "onPrefChange allowCalls=" + allowCalls if (DEBUG) Log.d(TAG, "onPrefChange allowCalls=" + allowCalls
+ " allowCallsFrom=" + ZenModeConfig.sourceToString(allowCallsFrom)); + " allowCallsFrom=" + ZenModeConfig.sourceToString(allowCallsFrom));
savePolicy(getNewPriorityCategories(allowCalls, Policy.PRIORITY_CATEGORY_CALLS), savePolicy(getNewPriorityCategories(allowCalls, Policy.PRIORITY_CATEGORY_CALLS),
@@ -137,7 +137,8 @@ public class ZenModePrioritySettings extends ZenModeSettingsBase implements Inde
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
if (mDisableListeners) return true; if (mDisableListeners) return true;
final boolean val = (Boolean) newValue; final boolean val = (Boolean) newValue;
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_REPEAT_CALLS, val); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_REPEAT_CALLS,
val);
if (DEBUG) Log.d(TAG, "onPrefChange allowRepeatCallers=" + val); if (DEBUG) Log.d(TAG, "onPrefChange allowRepeatCallers=" + val);
int priorityCategories = getNewPriorityCategories(val, int priorityCategories = getNewPriorityCategories(val,
NotificationManager.Policy.PRIORITY_CATEGORY_REPEAT_CALLERS); NotificationManager.Policy.PRIORITY_CATEGORY_REPEAT_CALLERS);

View File

@@ -39,7 +39,6 @@ import android.view.View;
import android.widget.Switch; import android.widget.Switch;
import android.widget.Toast; import android.widget.Toast;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
@@ -163,7 +162,7 @@ public abstract class ZenModeRuleSettingsBase extends ZenModeSettingsBase
if (mDisableListeners) return; if (mDisableListeners) return;
final boolean enabled = isChecked; final boolean enabled = isChecked;
if (enabled == mRule.isEnabled()) return; if (enabled == mRule.isEnabled()) return;
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_ENABLE_RULE, enabled); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_ENABLE_RULE, enabled);
if (DEBUG) Log.d(TAG, "onSwitchChanged enabled=" + enabled); if (DEBUG) Log.d(TAG, "onSwitchChanged enabled=" + enabled);
mRule.setEnabled(enabled); mRule.setEnabled(enabled);
setZenRule(mId, mRule); setZenRule(mId, mRule);
@@ -207,7 +206,7 @@ public abstract class ZenModeRuleSettingsBase extends ZenModeSettingsBase
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
if (DEBUG) Log.d(TAG, "onOptionsItemSelected " + item.getItemId()); if (DEBUG) Log.d(TAG, "onOptionsItemSelected " + item.getItemId());
if (item.getItemId() == R.id.delete) { if (item.getItemId() == R.id.delete) {
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_DELETE_RULE); mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_DELETE_RULE);
showDeleteRuleDialog(); showDeleteRuleDialog();
return true; return true;
} }
@@ -241,7 +240,8 @@ public abstract class ZenModeRuleSettingsBase extends ZenModeSettingsBase
.setPositiveButton(R.string.zen_mode_delete_rule_button, new OnClickListener() { .setPositiveButton(R.string.zen_mode_delete_rule_button, new OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_DELETE_RULE_OK); mMetricsFeatureProvider.action(mContext,
MetricsEvent.ACTION_ZEN_DELETE_RULE_OK);
mDeleting = true; mDeleting = true;
removeZenRule(mId); removeZenRule(mId);
} }

View File

@@ -18,23 +18,15 @@ package com.android.settings.notification;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.app.NotificationManager.Policy; import android.app.NotificationManager.Policy;
import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.provider.SearchIndexableResource;
import android.support.v14.preference.SwitchPreference; import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen; import android.support.v7.preference.PreferenceScreen;
import android.util.Log; import android.util.Log;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.R; import com.android.settings.R;
import java.util.Arrays;
import java.util.List;
public class ZenModeVisualInterruptionSettings extends ZenModeSettingsBase { public class ZenModeVisualInterruptionSettings extends ZenModeSettingsBase {
private static final String KEY_SCREEN_OFF = "screenOff"; private static final String KEY_SCREEN_OFF = "screenOff";
@@ -64,7 +56,8 @@ public class ZenModeVisualInterruptionSettings extends ZenModeSettingsBase {
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
if (mDisableListeners) return true; if (mDisableListeners) return true;
final boolean val = (Boolean) newValue; final boolean val = (Boolean) newValue;
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_WHEN_SCREEN_OFF, val); mMetricsFeatureProvider.action(mContext,
MetricsEvent.ACTION_ZEN_ALLOW_WHEN_SCREEN_OFF, val);
if (DEBUG) Log.d(TAG, "onPrefChange suppressWhenScreenOff=" + val); if (DEBUG) Log.d(TAG, "onPrefChange suppressWhenScreenOff=" + val);
savePolicy(getNewSuppressedEffects(val, Policy.SUPPRESSED_EFFECT_SCREEN_OFF)); savePolicy(getNewSuppressedEffects(val, Policy.SUPPRESSED_EFFECT_SCREEN_OFF));
return true; return true;
@@ -77,7 +70,8 @@ public class ZenModeVisualInterruptionSettings extends ZenModeSettingsBase {
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
if (mDisableListeners) return true; if (mDisableListeners) return true;
final boolean val = (Boolean) newValue; final boolean val = (Boolean) newValue;
MetricsLogger.action(mContext, MetricsEvent.ACTION_ZEN_ALLOW_WHEN_SCREEN_ON, val); mMetricsFeatureProvider.action(mContext,
MetricsEvent.ACTION_ZEN_ALLOW_WHEN_SCREEN_ON, val);
if (DEBUG) Log.d(TAG, "onPrefChange suppressWhenScreenOn=" + val); if (DEBUG) Log.d(TAG, "onPrefChange suppressWhenScreenOn=" + val);
savePolicy(getNewSuppressedEffects(val, Policy.SUPPRESSED_EFFECT_SCREEN_ON)); savePolicy(getNewSuppressedEffects(val, Policy.SUPPRESSED_EFFECT_SCREEN_ON));
return true; return true;

View File

@@ -32,7 +32,6 @@ import android.view.View;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.TextView; import android.widget.TextView;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto; import com.android.internal.logging.MetricsProto;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -78,7 +77,7 @@ public final class SupportDisclaimerDialogFragment extends InstrumentedDialogFra
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
if (which == Dialog.BUTTON_NEGATIVE) { if (which == Dialog.BUTTON_NEGATIVE) {
MetricsLogger.action(getContext(), mMetricsFeatureProvider.action(getContext(),
MetricsProto.MetricsEvent.ACTION_SUPPORT_DISCLAIMER_CANCEL); MetricsProto.MetricsEvent.ACTION_SUPPORT_DISCLAIMER_CANCEL);
return; return;
} }
@@ -89,7 +88,8 @@ public final class SupportDisclaimerDialogFragment extends InstrumentedDialogFra
FeatureFactory.getFactory(activity).getSupportFeatureProvider(activity); FeatureFactory.getFactory(activity).getSupportFeatureProvider(activity);
supportFeatureProvider.setShouldShowDisclaimerDialog(getContext(), !doNotShow.isChecked()); supportFeatureProvider.setShouldShowDisclaimerDialog(getContext(), !doNotShow.isChecked());
final Bundle bundle = getArguments(); final Bundle bundle = getArguments();
MetricsLogger.action(activity, MetricsProto.MetricsEvent.ACTION_SUPPORT_DISCLAIMER_OK); mMetricsFeatureProvider.action(activity,
MetricsProto.MetricsEvent.ACTION_SUPPORT_DISCLAIMER_OK);
supportFeatureProvider.startSupport(getActivity(), supportFeatureProvider.startSupport(getActivity(),
bundle.getParcelable(EXTRA_ACCOUNT), bundle.getInt(EXTRA_TYPE)); bundle.getParcelable(EXTRA_ACCOUNT), bundle.getInt(EXTRA_TYPE));
} }
@@ -97,7 +97,7 @@ public final class SupportDisclaimerDialogFragment extends InstrumentedDialogFra
@Override @Override
public void onCancel(DialogInterface dialog) { public void onCancel(DialogInterface dialog) {
super.onCancel(dialog); super.onCancel(dialog);
MetricsLogger.action(getContext(), mMetricsFeatureProvider.action(getContext(),
MetricsProto.MetricsEvent.ACTION_SUPPORT_DISCLAIMER_CANCEL); MetricsProto.MetricsEvent.ACTION_SUPPORT_DISCLAIMER_CANCEL);
} }

View File

@@ -24,7 +24,6 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto; import com.android.internal.logging.MetricsProto;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -76,7 +75,7 @@ public final class SupportPhoneDialogFragment extends InstrumentedDialogFragment
.queryIntentActivities(intent, 0) .queryIntentActivities(intent, 0)
.isEmpty(); .isEmpty();
if (canDial) { if (canDial) {
MetricsLogger.action(getActivity(), mMetricsFeatureProvider.action(getActivity(),
MetricsProto.MetricsEvent.ACTION_SUPPORT_DIAL_TOLLED); MetricsProto.MetricsEvent.ACTION_SUPPORT_DIAL_TOLLED);
getActivity().startActivity(intent); getActivity().startActivity(intent);
} }

View File

@@ -34,14 +34,15 @@ import android.widget.LinearLayout;
import android.widget.Switch; import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import com.android.internal.logging.MetricsLogger;
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.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import java.util.ArrayList; import java.util.ArrayList;
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedChangeListener, public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedChangeListener,
View.OnClickListener { View.OnClickListener {
@@ -55,6 +56,7 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
void onSwitchChanged(Switch switchView, boolean isChecked); void onSwitchChanged(Switch switchView, boolean isChecked);
} }
private MetricsFeatureProvider mMetricsFeatureProvider;
private final TextAppearanceSpan mSummarySpan; private final TextAppearanceSpan mSummarySpan;
private ToggleSwitch mSwitch; private ToggleSwitch mSwitch;
@@ -130,6 +132,8 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
// Default is hide // Default is hide
setVisibility(View.GONE); setVisibility(View.GONE);
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
} }
public void setMetricsTag(String tag) { public void setMetricsTag(String tag) {
@@ -230,7 +234,7 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (mDisabledByAdmin) { if (mDisabledByAdmin) {
MetricsLogger.count(mContext, mMetricsTag + "/switch_bar|restricted", 1); mMetricsFeatureProvider.count(mContext, mMetricsTag + "/switch_bar|restricted", 1);
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, mEnforcedAdmin); RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, mEnforcedAdmin);
} else { } else {
final boolean isChecked = !mSwitch.isChecked(); final boolean isChecked = !mSwitch.isChecked();
@@ -248,7 +252,7 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (mLoggingIntialized) { if (mLoggingIntialized) {
MetricsLogger.count(mContext, mMetricsTag + "/switch_bar|" + isChecked, 1); mMetricsFeatureProvider.count(mContext, mMetricsTag + "/switch_bar|" + isChecked, 1);
} }
mLoggingIntialized = true; mLoggingIntialized = true;
propagateChecked(isChecked); propagateChecked(isChecked);

View File

@@ -32,9 +32,9 @@ import android.provider.Settings;
import android.widget.Switch; import android.widget.Switch;
import android.widget.Toast; import android.widget.Toast;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.search.Index; import com.android.settings.search.Index;
import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBar;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
@@ -44,12 +44,16 @@ import com.android.settingslib.WirelessUtils;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
public class WifiEnabler implements SwitchBar.OnSwitchChangeListener { public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
private final SwitchBar mSwitchBar;
private final WifiManager mWifiManager;
private final MetricsFeatureProvider mMetricsFeatureProvider;
private Context mContext; private Context mContext;
private SwitchBar mSwitchBar;
private boolean mListeningToOnSwitchChange = false; private boolean mListeningToOnSwitchChange = false;
private AtomicBoolean mConnected = new AtomicBoolean(false); private AtomicBoolean mConnected = new AtomicBoolean(false);
private final WifiManager mWifiManager;
private boolean mStateMachineEvent; private boolean mStateMachineEvent;
private final IntentFilter mIntentFilter; private final IntentFilter mIntentFilter;
private final BroadcastReceiver mReceiver = new BroadcastReceiver() { private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@@ -89,10 +93,11 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
} }
}; };
public WifiEnabler(Context context, SwitchBar switchBar) { public WifiEnabler(Context context, SwitchBar switchBar,
MetricsFeatureProvider metricsFeatureProvider) {
mContext = context; mContext = context;
mSwitchBar = switchBar; mSwitchBar = switchBar;
mMetricsFeatureProvider = metricsFeatureProvider;
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
@@ -226,7 +231,7 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
if (mayDisableTethering(isChecked)) { if (mayDisableTethering(isChecked)) {
mWifiManager.setWifiApEnabled(null, false); mWifiManager.setWifiApEnabled(null, false);
} }
MetricsLogger.action(mContext, mMetricsFeatureProvider.action(mContext,
isChecked ? MetricsEvent.ACTION_WIFI_ON : MetricsEvent.ACTION_WIFI_OFF); isChecked ? MetricsEvent.ACTION_WIFI_ON : MetricsEvent.ACTION_WIFI_OFF);
if (!mWifiManager.setWifiEnabled(isChecked)) { if (!mWifiManager.setWifiEnabled(isChecked)) {
// Error // Error

View File

@@ -57,7 +57,6 @@ import android.widget.TextView;
import android.widget.TextView.BufferType; import android.widget.TextView.BufferType;
import android.widget.Toast; import android.widget.Toast;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.LinkifyUtils; import com.android.settings.LinkifyUtils;
import com.android.settings.R; import com.android.settings.R;
@@ -308,7 +307,7 @@ public class WifiSettings extends RestrictedSettingsFragment
*/ */
/* package */ WifiEnabler createWifiEnabler() { /* package */ WifiEnabler createWifiEnabler() {
final SettingsActivity activity = (SettingsActivity) getActivity(); final SettingsActivity activity = (SettingsActivity) getActivity();
return new WifiEnabler(activity, activity.getSwitchBar()); return new WifiEnabler(activity, activity.getSwitchBar(), mMetricsFeatureProvider);
} }
@Override @Override
@@ -411,7 +410,7 @@ public class WifiSettings extends RestrictedSettingsFragment
showDialog(WPS_PIN_DIALOG_ID); showDialog(WPS_PIN_DIALOG_ID);
return true; return true;
case MENU_ID_SCAN: case MENU_ID_SCAN:
MetricsLogger.action(getActivity(), MetricsEvent.ACTION_WIFI_FORCE_SCAN); mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_WIFI_FORCE_SCAN);
mWifiTracker.forceScan(); mWifiTracker.forceScan();
return true; return true;
case MENU_ID_ADVANCED: case MENU_ID_ADVANCED:
@@ -847,7 +846,7 @@ public class WifiSettings extends RestrictedSettingsFragment
} }
/* package */ void forget() { /* package */ void forget() {
MetricsLogger.action(getActivity(), MetricsEvent.ACTION_WIFI_FORGET); mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_WIFI_FORGET);
if (!mSelectedAccessPoint.isSaved()) { if (!mSelectedAccessPoint.isSaved()) {
if (mSelectedAccessPoint.getNetworkInfo() != null && if (mSelectedAccessPoint.getNetworkInfo() != null &&
mSelectedAccessPoint.getNetworkInfo().getState() != State.DISCONNECTED) { mSelectedAccessPoint.getNetworkInfo().getState() != State.DISCONNECTED) {
@@ -870,12 +869,12 @@ public class WifiSettings extends RestrictedSettingsFragment
} }
protected void connect(final WifiConfiguration config) { protected void connect(final WifiConfiguration config) {
MetricsLogger.action(getActivity(), MetricsEvent.ACTION_WIFI_CONNECT); mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_WIFI_CONNECT);
mWifiManager.connect(config, mConnectListener); mWifiManager.connect(config, mConnectListener);
} }
protected void connect(final int networkId) { protected void connect(final int networkId) {
MetricsLogger.action(getActivity(), MetricsEvent.ACTION_WIFI_CONNECT); mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_WIFI_CONNECT);
mWifiManager.connect(networkId, mConnectListener); mWifiManager.connect(networkId, mConnectListener);
} }
@@ -883,7 +882,7 @@ public class WifiSettings extends RestrictedSettingsFragment
* Called when "add network" button is pressed. * Called when "add network" button is pressed.
*/ */
/* package */ void onAddNetworkPressed() { /* package */ void onAddNetworkPressed() {
MetricsLogger.action(getActivity(), MetricsEvent.ACTION_WIFI_ADD_NETWORK); mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_WIFI_ADD_NETWORK);
// No exact access point is selected. // No exact access point is selected.
mSelectedAccessPoint = null; mSelectedAccessPoint = null;
showDialog(null, WifiConfigUiBase.MODE_CONNECT); showDialog(null, WifiConfigUiBase.MODE_CONNECT);

View File

@@ -0,0 +1,66 @@
/*
* 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.os.Bundle;
import com.android.settings.TestConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.util.FragmentTestUtil;
import static com.google.common.truth.Truth.assertThat;
@RunWith(RobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class InstrumentedDialogFragmentTest {
public static class TestDialogFragment extends InstrumentedDialogFragment {
static final int TEST_METRIC = 1234;
public MetricsFeatureProvider getMetricsFeatureProvider() {
return mMetricsFeatureProvider;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
assertThat(mMetricsFeatureProvider).isNotNull();
}
@Override
public int getMetricsCategory() {
return TEST_METRIC;
}
}
@Test
public void runThroughFragmentLifecycles_shouldHaveMetricsFeatureProviderOnAttach() {
final TestDialogFragment fragment = new TestDialogFragment();
// Precondition: no metrics feature
assertThat(fragment.getMetricsFeatureProvider()).isNull();
FragmentTestUtil.startFragment(fragment);
// Verify: has metrics feature
assertThat(fragment.getMetricsFeatureProvider()).isNotNull();
}
}