Refine metrics log in infrastructure

- Add interfaces to set/get metrics category in BasePreferenceController
  for descendants having a chance to get it.
- Set metrics category in DashboardFragment
- Automatically log metrics in onPreferenceChange of
  TogglePreferenceController
- Add support for TwoStateButtonPreference in TogglePreferenceController
  to make the preference generic

Bug: 137559984
Test: robotest
Change-Id: Ia7e0d24a3db1991b18e0286d9894570fa71247a3
This commit is contained in:
Jason Chiu
2020-04-01 15:40:47 +08:00
parent 9266fe32f7
commit 819abf7f87
10 changed files with 53 additions and 38 deletions

View File

@@ -113,6 +113,14 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
}
});
// Set metrics category for BasePreferenceController.
final int metricCategory = getMetricsCategory();
mControllers.forEach(controller -> {
if (controller instanceof BasePreferenceController) {
((BasePreferenceController) controller).setMetricsCategory(metricCategory);
}
});
mPlaceholderPreferenceController =
new DashboardTilePlaceholderPreferenceController(context);
mControllers.add(mPlaceholderPreferenceController);