Log source with visibility change

- Add a method in VisibilityLoggerMixin to log visible event using
  LogMaker, which allows logging additional FIELD_CONTEXT field.
- In Utils.startFragment, add current page's metricsCategory as an extra
  to next page.
- In next page's onResume(), extract the previous page's metricsCategory
  and send it to VisibilityLoggerMixin.visible()
- Update all caller with additional paramters

Change-Id: I8e1f2597fa465b7d3aa16fa1d21c052a3219694a
Fix: 35359289
Test: RunSettingsRoboTests
This commit is contained in:
Fan Zhang
2017-02-14 15:02:35 -08:00
parent 358eab0fff
commit c6ca314c0b
64 changed files with 347 additions and 215 deletions

View File

@@ -45,6 +45,7 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.settings.core.PreferenceController;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.core.lifecycle.LifecycleObserver;
import com.android.settings.core.lifecycle.events.OnPause;
import com.android.settings.core.lifecycle.events.OnResume;
@@ -89,6 +90,7 @@ public class AccountPreferenceController extends PreferenceController
private int mAccountProfileOrder = ORDER_ACCOUNT_PROFILES;
private AccountRestrictionHelper mHelper;
private DashboardFeatureProvider mDashboardFeatureProvider;
private MetricsFeatureProvider mMetricsFeatureProvider;
/**
* Holds data related to the accounts belonging to one profile.
@@ -135,8 +137,9 @@ public class AccountPreferenceController extends PreferenceController
if (mAuthorities != null) {
mAuthoritiesCount = mAuthorities.length;
}
mDashboardFeatureProvider =
FeatureFactory.getFactory(mContext).getDashboardFeatureProvider(mContext);
final FeatureFactory featureFactory = FeatureFactory.getFactory(mContext);
mDashboardFeatureProvider = featureFactory.getDashboardFeatureProvider(mContext);
mMetricsFeatureProvider = featureFactory.getMetricsFeatureProvider();
mIAEnabled = mDashboardFeatureProvider.isEnabled();
mHelper = helper;
}
@@ -235,7 +238,7 @@ public class AccountPreferenceController extends PreferenceController
if (preference == profileData.managedProfilePreference) {
Bundle arguments = new Bundle();
arguments.putParcelable(Intent.EXTRA_USER, profileData.userInfo.getUserHandle());
((SettingsActivity) mParent.getActivity()).startPreferencePanel(
((SettingsActivity) mParent.getActivity()).startPreferencePanel(mParent,
ManagedProfileSettings.class.getName(), arguments,
R.string.managed_profile_settings_title, null, null, 0);
return true;
@@ -446,7 +449,7 @@ public class AccountPreferenceController extends PreferenceController
UserHandle userHandle) {
final String[] accountTypes = helper.getEnabledAccountTypes();
final ArrayList<AccountTypePreference> accountTypePreferences =
new ArrayList<AccountTypePreference>(accountTypes.length);
new ArrayList<>(accountTypes.length);
for (int i = 0; i < accountTypes.length; i++) {
final String accountType = accountTypes[i];
@@ -489,7 +492,8 @@ public class AccountPreferenceController extends PreferenceController
titleResId);
fragmentArguments.putParcelable(EXTRA_USER, userHandle);
accountTypePreferences.add(new AccountTypePreference(
prefContext, account.name, titleResPackageName, titleResId, label,
prefContext, mMetricsFeatureProvider.getMetricsCategory(mParent),
account.name, titleResPackageName, titleResId, label,
AccountDetailDashboardFragment.class.getName(), fragmentArguments, icon));
}
} else if (skipToAccount) {
@@ -499,8 +503,9 @@ public class AccountPreferenceController extends PreferenceController
fragmentArguments.putParcelable(EXTRA_USER, userHandle);
accountTypePreferences.add(new AccountTypePreference(
prefContext, label, titleResPackageName,
titleResId, AccountSyncSettings.class.getName(), fragmentArguments, icon));
prefContext, mMetricsFeatureProvider.getMetricsCategory(mParent),
label, titleResPackageName, titleResId, AccountSyncSettings.class.getName(),
fragmentArguments, icon));
} else {
final Bundle fragmentArguments = new Bundle();
fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE, accountType);
@@ -509,9 +514,9 @@ public class AccountPreferenceController extends PreferenceController
fragmentArguments.putParcelable(EXTRA_USER, userHandle);
accountTypePreferences.add(new AccountTypePreference(
prefContext, label, titleResPackageName,
titleResId, ManageAccountsSettings.class.getName(), fragmentArguments, icon));
prefContext, mMetricsFeatureProvider.getMetricsCategory(mParent), label,
titleResPackageName, titleResId, ManageAccountsSettings.class.getName(),
fragmentArguments, icon));
}
helper.preloadDrawableForType(mContext, accountType);
}

View File

@@ -24,6 +24,7 @@ import android.os.Bundle;
import android.os.UserHandle;
import android.support.v7.preference.Preference;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.Utils;
import com.android.settings.core.PreferenceController;
@@ -53,7 +54,7 @@ public class AccountSyncPreferenceController extends PreferenceController {
args.putParcelable(AccountSyncSettings.ACCOUNT_KEY, mAccount);
args.putParcelable(EXTRA_USER, mUserHandle);
Utils.startWithFragment(mContext, AccountSyncSettings.class.getName(), args, null, 0, -1,
mAccount.name);
mAccount.name, MetricsProto.MetricsEvent.ACCOUNT);
return true;
}

View File

@@ -65,15 +65,18 @@ public class AccountTypePreference extends Preference implements OnPreferenceCli
*/
private final Bundle mFragmentArguments;
public AccountTypePreference(Context context, CharSequence title, String titleResPackageName,
int titleResId, String fragment, Bundle fragmentArguments, Drawable icon) {
this(context, title, titleResPackageName, titleResId, null, fragment, fragmentArguments,
icon);
private final int mMetricsCategory;
public AccountTypePreference(Context context, int metricsCategory, CharSequence title,
String titleResPackageName, int titleResId, String fragment, Bundle fragmentArguments,
Drawable icon) {
this(context, metricsCategory, title, titleResPackageName, titleResId, null, fragment,
fragmentArguments, icon);
}
public AccountTypePreference(Context context, CharSequence title, String titleResPackageName,
int titleResId, CharSequence summary, String fragment, Bundle fragmentArguments,
Drawable icon) {
public AccountTypePreference(Context context, int metricsCategory, CharSequence title,
String titleResPackageName, int titleResId, CharSequence summary, String fragment,
Bundle fragmentArguments, Drawable icon) {
super(context);
mTitle = title;
mTitleResPackageName = titleResPackageName;
@@ -81,6 +84,7 @@ public class AccountTypePreference extends Preference implements OnPreferenceCli
mSummary = summary;
mFragment = fragment;
mFragmentArguments = fragmentArguments;
mMetricsCategory = metricsCategory;
setWidgetLayoutResource(R.layout.account_type_preference);
setTitle(title);
@@ -105,7 +109,7 @@ public class AccountTypePreference extends Preference implements OnPreferenceCli
}
Utils.startWithFragment(getContext(), mFragment, mFragmentArguments,
null /* resultTo */, 0 /* resultRequestCode */, mTitleResPackageName,
mTitleResId, null /* title */);
mTitleResId, null /* title */, mMetricsCategory);
return true;
}
return false;

View File

@@ -229,7 +229,7 @@ public class AccountTypePreferenceLoader {
@Override
public boolean onPreferenceClick(Preference preference) {
((SettingsActivity) mFragment.getActivity()).startPreferencePanel(
((SettingsActivity) mFragment.getActivity()).startPreferencePanel(mFragment,
mClass, null, mTitleRes, null, null, 0);
// Hack: announce that the Google account preferences page is launching the location
// settings

View File

@@ -158,7 +158,7 @@ public class ManageAccountsSettings extends AccountPreferenceBase
Bundle args = new Bundle();
args.putParcelable(AccountSyncSettings.ACCOUNT_KEY, acctPref.getAccount());
args.putParcelable(EXTRA_USER, mUserHandle);
((SettingsActivity) getActivity()).startPreferencePanel(
((SettingsActivity) getActivity()).startPreferencePanel(this,
AccountSyncSettings.class.getCanonicalName(), args,
R.string.account_sync_settings_title, acctPref.getAccount().name,
this, REQUEST_SHOW_SYNC_SETTINGS);