Merge "Wire up geotz metrics to the real metrics code" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
2c08b5e642
@@ -51,6 +51,9 @@ import static android.util.MathUtils.constrain;
|
|||||||
import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR;
|
import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.DATA_USAGE_BYTES_TRANSFER__OPPORTUNISTIC_DATA_SUB__NOT_OPPORTUNISTIC;
|
import static com.android.internal.util.FrameworkStatsLog.DATA_USAGE_BYTES_TRANSFER__OPPORTUNISTIC_DATA_SUB__NOT_OPPORTUNISTIC;
|
||||||
import static com.android.internal.util.FrameworkStatsLog.DATA_USAGE_BYTES_TRANSFER__OPPORTUNISTIC_DATA_SUB__OPPORTUNISTIC;
|
import static com.android.internal.util.FrameworkStatsLog.DATA_USAGE_BYTES_TRANSFER__OPPORTUNISTIC_DATA_SUB__OPPORTUNISTIC;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.TIME_ZONE_DETECTOR_STATE__DETECTION_MODE__GEO;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.TIME_ZONE_DETECTOR_STATE__DETECTION_MODE__MANUAL;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.TIME_ZONE_DETECTOR_STATE__DETECTION_MODE__TELEPHONY;
|
||||||
import static com.android.server.am.MemoryStatUtil.readMemoryStatFromFilesystem;
|
import static com.android.server.am.MemoryStatUtil.readMemoryStatFromFilesystem;
|
||||||
import static com.android.server.stats.pull.IonMemoryUtil.readProcessSystemIonHeapSizesFromDebugfs;
|
import static com.android.server.stats.pull.IonMemoryUtil.readProcessSystemIonHeapSizesFromDebugfs;
|
||||||
import static com.android.server.stats.pull.IonMemoryUtil.readSystemIonHeapSizeFromDebugfs;
|
import static com.android.server.stats.pull.IonMemoryUtil.readSystemIonHeapSizeFromDebugfs;
|
||||||
@@ -185,6 +188,8 @@ import com.android.server.stats.pull.netstats.NetworkStatsExt;
|
|||||||
import com.android.server.stats.pull.netstats.SubInfo;
|
import com.android.server.stats.pull.netstats.SubInfo;
|
||||||
import com.android.server.storage.DiskStatsFileLogger;
|
import com.android.server.storage.DiskStatsFileLogger;
|
||||||
import com.android.server.storage.DiskStatsLoggingService;
|
import com.android.server.storage.DiskStatsLoggingService;
|
||||||
|
import com.android.server.timezonedetector.MetricsTimeZoneDetectorState;
|
||||||
|
import com.android.server.timezonedetector.TimeZoneDetectorInternal;
|
||||||
|
|
||||||
import libcore.io.IoUtils;
|
import libcore.io.IoUtils;
|
||||||
|
|
||||||
@@ -410,6 +415,7 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
private final Object mBuildInformationLock = new Object();
|
private final Object mBuildInformationLock = new Object();
|
||||||
private final Object mRoleHolderLock = new Object();
|
private final Object mRoleHolderLock = new Object();
|
||||||
private final Object mTimeZoneDataInfoLock = new Object();
|
private final Object mTimeZoneDataInfoLock = new Object();
|
||||||
|
private final Object mTimeZoneDetectionInfoLock = new Object();
|
||||||
private final Object mExternalStorageInfoLock = new Object();
|
private final Object mExternalStorageInfoLock = new Object();
|
||||||
private final Object mAppsOnExternalStorageInfoLock = new Object();
|
private final Object mAppsOnExternalStorageInfoLock = new Object();
|
||||||
private final Object mFaceSettingsLock = new Object();
|
private final Object mFaceSettingsLock = new Object();
|
||||||
@@ -644,6 +650,10 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
synchronized (mTimeZoneDataInfoLock) {
|
synchronized (mTimeZoneDataInfoLock) {
|
||||||
return pullTimeZoneDataInfoLocked(atomTag, data);
|
return pullTimeZoneDataInfoLocked(atomTag, data);
|
||||||
}
|
}
|
||||||
|
case FrameworkStatsLog.TIME_ZONE_DETECTOR_STATE:
|
||||||
|
synchronized (mTimeZoneDetectionInfoLock) {
|
||||||
|
return pullTimeZoneDetectorStateLocked(atomTag, data);
|
||||||
|
}
|
||||||
case FrameworkStatsLog.EXTERNAL_STORAGE_INFO:
|
case FrameworkStatsLog.EXTERNAL_STORAGE_INFO:
|
||||||
synchronized (mExternalStorageInfoLock) {
|
synchronized (mExternalStorageInfoLock) {
|
||||||
return pullExternalStorageInfoLocked(atomTag, data);
|
return pullExternalStorageInfoLocked(atomTag, data);
|
||||||
@@ -849,6 +859,7 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
registerBuildInformation();
|
registerBuildInformation();
|
||||||
registerRoleHolder();
|
registerRoleHolder();
|
||||||
registerTimeZoneDataInfo();
|
registerTimeZoneDataInfo();
|
||||||
|
registerTimeZoneDetectorState();
|
||||||
registerExternalStorageInfo();
|
registerExternalStorageInfo();
|
||||||
registerAppsOnExternalStorageInfo();
|
registerAppsOnExternalStorageInfo();
|
||||||
registerFaceSettings();
|
registerFaceSettings();
|
||||||
@@ -3254,6 +3265,57 @@ public class StatsPullAtomService extends SystemService {
|
|||||||
return StatsManager.PULL_SUCCESS;
|
return StatsManager.PULL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void registerTimeZoneDetectorState() {
|
||||||
|
int tagId = FrameworkStatsLog.TIME_ZONE_DETECTOR_STATE;
|
||||||
|
mStatsManager.setPullAtomCallback(
|
||||||
|
tagId,
|
||||||
|
null, // use default PullAtomMetadata values
|
||||||
|
DIRECT_EXECUTOR,
|
||||||
|
mStatsCallbackImpl
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
int pullTimeZoneDetectorStateLocked(int atomTag, List<StatsEvent> pulledData) {
|
||||||
|
final long token = Binder.clearCallingIdentity();
|
||||||
|
try {
|
||||||
|
TimeZoneDetectorInternal timeZoneDetectorInternal =
|
||||||
|
LocalServices.getService(TimeZoneDetectorInternal.class);
|
||||||
|
MetricsTimeZoneDetectorState metricsState =
|
||||||
|
timeZoneDetectorInternal.generateMetricsState();
|
||||||
|
pulledData.add(FrameworkStatsLog.buildStatsEvent(atomTag,
|
||||||
|
metricsState.isTelephonyDetectionSupported(),
|
||||||
|
metricsState.isGeoDetectionSupported(),
|
||||||
|
metricsState.isUserLocationEnabled(),
|
||||||
|
metricsState.getAutoDetectionEnabledSetting(),
|
||||||
|
metricsState.getGeoDetectionEnabledSetting(),
|
||||||
|
convertToMetricsDetectionMode(metricsState.getDetectionMode()),
|
||||||
|
metricsState.getDeviceTimeZoneIdOrdinal(),
|
||||||
|
metricsState.getLatestManualSuggestionProtoBytes(),
|
||||||
|
metricsState.getLatestTelephonySuggestionProtoBytes(),
|
||||||
|
metricsState.getLatestGeolocationSuggestionProtoBytes()
|
||||||
|
));
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
Slog.e(TAG, "Getting time zone detection state failed: ", e);
|
||||||
|
return StatsManager.PULL_SKIP;
|
||||||
|
} finally {
|
||||||
|
Binder.restoreCallingIdentity(token);
|
||||||
|
}
|
||||||
|
return StatsManager.PULL_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int convertToMetricsDetectionMode(int detectionMode) {
|
||||||
|
switch (detectionMode) {
|
||||||
|
case MetricsTimeZoneDetectorState.DETECTION_MODE_MANUAL:
|
||||||
|
return TIME_ZONE_DETECTOR_STATE__DETECTION_MODE__MANUAL;
|
||||||
|
case MetricsTimeZoneDetectorState.DETECTION_MODE_GEO:
|
||||||
|
return TIME_ZONE_DETECTOR_STATE__DETECTION_MODE__GEO;
|
||||||
|
case MetricsTimeZoneDetectorState.DETECTION_MODE_TELEPHONY:
|
||||||
|
return TIME_ZONE_DETECTOR_STATE__DETECTION_MODE__TELEPHONY;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("" + detectionMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void registerExternalStorageInfo() {
|
private void registerExternalStorageInfo() {
|
||||||
int tagId = FrameworkStatsLog.EXTERNAL_STORAGE_INFO;
|
int tagId = FrameworkStatsLog.EXTERNAL_STORAGE_INFO;
|
||||||
mStatsManager.setPullAtomCallback(
|
mStatsManager.setPullAtomCallback(
|
||||||
|
|||||||
@@ -16,6 +16,21 @@
|
|||||||
|
|
||||||
package com.android.server.timezonedetector.location;
|
package com.android.server.timezonedetector.location;
|
||||||
|
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__CERTAIN;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__DESTROYED;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__INITIALIZING;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__PERM_FAILED;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__STOPPED;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__UNCERTAIN;
|
||||||
|
import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__UNKNOWN;
|
||||||
|
import static com.android.server.timezonedetector.location.LocationTimeZoneProvider.ProviderState.PROVIDER_STATE_DESTROYED;
|
||||||
|
import static com.android.server.timezonedetector.location.LocationTimeZoneProvider.ProviderState.PROVIDER_STATE_PERM_FAILED;
|
||||||
|
import static com.android.server.timezonedetector.location.LocationTimeZoneProvider.ProviderState.PROVIDER_STATE_STARTED_CERTAIN;
|
||||||
|
import static com.android.server.timezonedetector.location.LocationTimeZoneProvider.ProviderState.PROVIDER_STATE_STARTED_INITIALIZING;
|
||||||
|
import static com.android.server.timezonedetector.location.LocationTimeZoneProvider.ProviderState.PROVIDER_STATE_STARTED_UNCERTAIN;
|
||||||
|
import static com.android.server.timezonedetector.location.LocationTimeZoneProvider.ProviderState.PROVIDER_STATE_STOPPED;
|
||||||
|
import static com.android.server.timezonedetector.location.LocationTimeZoneProvider.ProviderState.PROVIDER_STATE_UNKNOWN;
|
||||||
|
|
||||||
import android.annotation.IntRange;
|
import android.annotation.IntRange;
|
||||||
|
|
||||||
import com.android.internal.util.FrameworkStatsLog;
|
import com.android.internal.util.FrameworkStatsLog;
|
||||||
@@ -37,6 +52,28 @@ public class RealProviderMetricsLogger implements ProviderMetricsLogger {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onProviderStateChanged(@ProviderStateEnum int stateEnum) {
|
public void onProviderStateChanged(@ProviderStateEnum int stateEnum) {
|
||||||
// TODO(b/172934905): Implement once the atom has landed.
|
FrameworkStatsLog.write(FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED,
|
||||||
|
mProviderIndex,
|
||||||
|
metricsProviderState(stateEnum));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int metricsProviderState(@ProviderStateEnum int stateEnum) {
|
||||||
|
switch (stateEnum) {
|
||||||
|
case PROVIDER_STATE_STARTED_INITIALIZING:
|
||||||
|
return LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__INITIALIZING;
|
||||||
|
case PROVIDER_STATE_STARTED_UNCERTAIN:
|
||||||
|
return LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__UNCERTAIN;
|
||||||
|
case PROVIDER_STATE_STARTED_CERTAIN:
|
||||||
|
return LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__CERTAIN;
|
||||||
|
case PROVIDER_STATE_STOPPED:
|
||||||
|
return LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__STOPPED;
|
||||||
|
case PROVIDER_STATE_DESTROYED:
|
||||||
|
return LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__DESTROYED;
|
||||||
|
case PROVIDER_STATE_PERM_FAILED:
|
||||||
|
return LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__PERM_FAILED;
|
||||||
|
case PROVIDER_STATE_UNKNOWN:
|
||||||
|
default:
|
||||||
|
return LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED__STATE__UNKNOWN;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user