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

@@ -56,6 +56,7 @@ import com.android.internal.util.ArrayUtils;
import com.android.settings.Settings.WifiSettingsActivity;
import com.android.settings.backup.BackupSettingsActivity;
import com.android.settings.core.gateway.SettingsGateway;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.core.instrumentation.SharedPreferencesLogger;
import com.android.settings.dashboard.DashboardContainerFragment;
import com.android.settings.dashboard.DashboardFeatureProvider;
@@ -100,6 +101,11 @@ public class SettingsActivity extends SettingsDrawerActivity
*/
public static final String EXTRA_SHOW_FRAGMENT = ":settings:show_fragment";
/**
* The metrics category constant for logging source when a setting fragment is opened.
*/
public static final String EXTRA_SOURCE_METRICS_CATEGORY = ":settings:source_metrics";
/**
* When starting this activity and using {@link #EXTRA_SHOW_FRAGMENT},
* this extra can also be specified to supply a Bundle of arguments to pass
@@ -220,6 +226,7 @@ public class SettingsActivity extends SettingsDrawerActivity
private boolean mSearchMenuItemExpanded = false;
private SearchResultsSummary mSearchResultsFragment;
private SearchFeatureProvider mSearchFeatureProvider;
private MetricsFeatureProvider mMetricsFeatureProvider;
// Categories
private ArrayList<DashboardCategory> mCategories = new ArrayList<>();
@@ -239,7 +246,7 @@ public class SettingsActivity extends SettingsDrawerActivity
@Override
public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) {
startPreferencePanel(pref.getFragment(), pref.getExtras(), -1, pref.getTitle(),
startPreferencePanel(caller, pref.getFragment(), pref.getExtras(), -1, pref.getTitle(),
null, 0);
return true;
}
@@ -350,6 +357,7 @@ public class SettingsActivity extends SettingsDrawerActivity
mDashboardFeatureProvider = factory.getDashboardFeatureProvider(this);
mSearchFeatureProvider = factory.getSearchFeatureProvider();
mMetricsFeatureProvider = factory.getMetricsFeatureProvider();
// Should happen before any call to getIntent()
getMetaData();
@@ -748,8 +756,8 @@ public class SettingsActivity extends SettingsDrawerActivity
* @param resultRequestCode If resultTo is non-null, this is the caller's
* request code to be received with the result.
*/
public void startPreferencePanel(String fragmentClass, Bundle args, int titleRes,
CharSequence titleText, Fragment resultTo, int resultRequestCode) {
public void startPreferencePanel(Fragment caller, String fragmentClass, Bundle args,
int titleRes, CharSequence titleText, Fragment resultTo, int resultRequestCode) {
String title = null;
if (titleRes < 0) {
if (titleText != null) {
@@ -760,7 +768,7 @@ public class SettingsActivity extends SettingsDrawerActivity
}
}
Utils.startWithFragment(this, fragmentClass, args, resultTo, resultRequestCode,
titleRes, title, mIsShortcut);
titleRes, title, mIsShortcut, mMetricsFeatureProvider.getMetricsCategory(caller));
}
/**
@@ -775,8 +783,8 @@ public class SettingsActivity extends SettingsDrawerActivity
* @param titleText Optional text of the title of this fragment.
* @param userHandle The user for which the panel has to be started.
*/
public void startPreferencePanelAsUser(String fragmentClass, Bundle args, int titleRes,
CharSequence titleText, UserHandle userHandle) {
public void startPreferencePanelAsUser(Fragment caller, String fragmentClass,
Bundle args, int titleRes, CharSequence titleText, UserHandle userHandle) {
// This is a workaround.
//
// Calling startWithFragmentAsUser() without specifying FLAG_ACTIVITY_NEW_TASK to the intent
@@ -788,7 +796,7 @@ public class SettingsActivity extends SettingsDrawerActivity
// another check here to call startPreferencePanel() instead of startWithFragmentAsUser()
// when we're calling it as the same user.
if (userHandle.getIdentifier() == UserHandle.myUserId()) {
startPreferencePanel(fragmentClass, args, titleRes, titleText, null, 0);
startPreferencePanel(caller, fragmentClass, args, titleRes, titleText, null, 0);
} else {
String title = null;
if (titleRes < 0) {
@@ -799,8 +807,8 @@ public class SettingsActivity extends SettingsDrawerActivity
title = "";
}
}
Utils.startWithFragmentAsUser(this, fragmentClass, args,
titleRes, title, mIsShortcut, userHandle);
Utils.startWithFragmentAsUser(this, fragmentClass, args, titleRes, title,
mIsShortcut, mMetricsFeatureProvider.getMetricsCategory(caller), userHandle);
}
}