diff --git a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerService.java b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerService.java index b23f11aa85976..36ab111dfccb7 100644 --- a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerService.java +++ b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerService.java @@ -281,15 +281,7 @@ public class LocationTimeZoneManagerService extends Binder { LocationTimeZoneProvider primary = mPrimaryProviderConfig.createProvider(); LocationTimeZoneProvider secondary = mSecondaryProviderConfig.createProvider(); LocationTimeZoneProviderController.MetricsLogger metricsLogger = - new LocationTimeZoneProviderController.MetricsLogger() { - @Override - public void onStateChange( - @LocationTimeZoneProviderController.State String state) { - // TODO b/200279201 - wire this up to metrics code - // No-op. - } - }; - + new RealControllerMetricsLogger(); boolean recordStateChanges = mServiceConfigAccessor.getRecordStateChangesForTests(); LocationTimeZoneProviderController controller = new LocationTimeZoneProviderController(mThreadingDomain, metricsLogger, diff --git a/services/core/java/com/android/server/timezonedetector/location/RealControllerMetricsLogger.java b/services/core/java/com/android/server/timezonedetector/location/RealControllerMetricsLogger.java new file mode 100644 index 0000000000000..9cb36efb86792 --- /dev/null +++ b/services/core/java/com/android/server/timezonedetector/location/RealControllerMetricsLogger.java @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2021 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.server.timezonedetector.location; + +import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__CERTAIN; +import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__DESTROYED; +import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__FAILED; +import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__INITIALIZING; +import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__PROVIDERS_INITIALIZING; +import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__STOPPED; +import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__UNCERTAIN; +import static com.android.internal.util.FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__UNKNOWN; +import static com.android.server.timezonedetector.location.LocationTimeZoneProviderController.STATE_CERTAIN; +import static com.android.server.timezonedetector.location.LocationTimeZoneProviderController.STATE_DESTROYED; +import static com.android.server.timezonedetector.location.LocationTimeZoneProviderController.STATE_FAILED; +import static com.android.server.timezonedetector.location.LocationTimeZoneProviderController.STATE_INITIALIZING; +import static com.android.server.timezonedetector.location.LocationTimeZoneProviderController.STATE_PROVIDERS_INITIALIZING; +import static com.android.server.timezonedetector.location.LocationTimeZoneProviderController.STATE_STOPPED; +import static com.android.server.timezonedetector.location.LocationTimeZoneProviderController.STATE_UNCERTAIN; +import static com.android.server.timezonedetector.location.LocationTimeZoneProviderController.STATE_UNKNOWN; + +import com.android.internal.util.FrameworkStatsLog; +import com.android.server.timezonedetector.location.LocationTimeZoneProviderController.State; + +/** + * The real implementation of {@link LocationTimeZoneProviderController.MetricsLogger} which logs + * using {@link FrameworkStatsLog}. + */ +final class RealControllerMetricsLogger + implements LocationTimeZoneProviderController.MetricsLogger { + + RealControllerMetricsLogger() { + } + + @Override + public void onStateChange(@State String state) { + FrameworkStatsLog.write( + FrameworkStatsLog.LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED, + metricsState(state)); + } + + private static int metricsState(@State String state) { + switch (state) { + case STATE_PROVIDERS_INITIALIZING: + // Disable lint check (line length) for generated long constant name. + // CHECKSTYLE:OFF Generated code + return LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__PROVIDERS_INITIALIZING; + // CHECKSTYLE:ON Generated code + case STATE_STOPPED: + return LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__STOPPED; + case STATE_INITIALIZING: + return LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__INITIALIZING; + case STATE_CERTAIN: + return LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__CERTAIN; + case STATE_UNCERTAIN: + return LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__UNCERTAIN; + case STATE_DESTROYED: + return LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__DESTROYED; + case STATE_FAILED: + return LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__FAILED; + case STATE_UNKNOWN: + default: + return LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED__STATE__UNKNOWN; + } + } +} diff --git a/services/core/java/com/android/server/timezonedetector/location/RealProviderMetricsLogger.java b/services/core/java/com/android/server/timezonedetector/location/RealProviderMetricsLogger.java index e19ec8472e0a8..fe543adf63026 100644 --- a/services/core/java/com/android/server/timezonedetector/location/RealProviderMetricsLogger.java +++ b/services/core/java/com/android/server/timezonedetector/location/RealProviderMetricsLogger.java @@ -41,12 +41,12 @@ import com.android.server.timezonedetector.location.LocationTimeZoneProvider.Pro * The real implementation of {@link ProviderMetricsLogger} which logs using * {@link FrameworkStatsLog}. */ -public class RealProviderMetricsLogger implements ProviderMetricsLogger { +final class RealProviderMetricsLogger implements ProviderMetricsLogger { @IntRange(from = 0, to = 1) private final int mProviderIndex; - public RealProviderMetricsLogger(@IntRange(from = 0, to = 1) int providerIndex) { + RealProviderMetricsLogger(@IntRange(from = 0, to = 1) int providerIndex) { mProviderIndex = providerIndex; }