From d4e467ed4ac8566ad9fde8e0e68908577173d834 Mon Sep 17 00:00:00 2001 From: songferngwang Date: Thu, 13 Jun 2024 22:54:11 +0000 Subject: [PATCH] Add metricsCategory for dualsim and apnEdit Bug: 347091697 Test: Build pass Change-Id: I783a45269112d91d79c00af41c0052ba488603d2 --- .../network/apn/ApnEditPageProvider.kt | 2 + .../settings/spa/SettingsSpaEnvironment.kt | 3 +- .../instrumentation/SpaLogMetricsProvider.kt | 62 +++++++++++++++++++ .../network/NetworkCellularGroupProvider.kt | 3 +- 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 src/com/android/settings/spa/core/instrumentation/SpaLogMetricsProvider.kt diff --git a/src/com/android/settings/network/apn/ApnEditPageProvider.kt b/src/com/android/settings/network/apn/ApnEditPageProvider.kt index 71fe4d6f981..099e2faa357 100644 --- a/src/com/android/settings/network/apn/ApnEditPageProvider.kt +++ b/src/com/android/settings/network/apn/ApnEditPageProvider.kt @@ -16,6 +16,7 @@ package com.android.settings.network.apn +import android.app.settings.SettingsEnums import android.net.Uri import android.os.Bundle import android.provider.Telephony @@ -62,6 +63,7 @@ const val INSERT_URL = "insertUrl" object ApnEditPageProvider : SettingsPageProvider { override val name = "ApnEdit" + override val metricsCategory = SettingsEnums.APN_EDITOR const val TAG = "ApnEditPageProvider" override val parameter = listOf( diff --git a/src/com/android/settings/spa/SettingsSpaEnvironment.kt b/src/com/android/settings/spa/SettingsSpaEnvironment.kt index 5dbc8dc7099..54efa041bbc 100644 --- a/src/com/android/settings/spa/SettingsSpaEnvironment.kt +++ b/src/com/android/settings/spa/SettingsSpaEnvironment.kt @@ -42,6 +42,7 @@ import com.android.settings.spa.app.specialaccess.TurnScreenOnAppsAppListProvide import com.android.settings.spa.app.specialaccess.UseFullScreenIntentAppListProvider import com.android.settings.spa.app.specialaccess.WifiControlAppListProvider import com.android.settings.spa.app.storage.StorageAppListPageProvider +import com.android.settings.spa.core.instrumentation.SpaLogMetricsProvider import com.android.settings.spa.core.instrumentation.SpaLogProvider import com.android.settings.spa.development.UsageStatsPageProvider import com.android.settings.spa.development.compat.PlatformCompatAppListPageProvider @@ -125,6 +126,6 @@ open class SettingsSpaEnvironment(context: Context) : SpaEnvironment(context) { override val logger = if (FeatureFlagUtils.isEnabled( context, FeatureFlagUtils.SETTINGS_ENABLE_SPA_METRICS ) - ) SpaLogProvider + ) SpaLogMetricsProvider // ToDo: Implement 'SpaLogProvider' for SPA settings. else object : SpaLogger {} } diff --git a/src/com/android/settings/spa/core/instrumentation/SpaLogMetricsProvider.kt b/src/com/android/settings/spa/core/instrumentation/SpaLogMetricsProvider.kt new file mode 100644 index 00000000000..acfb9577692 --- /dev/null +++ b/src/com/android/settings/spa/core/instrumentation/SpaLogMetricsProvider.kt @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2024 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.settings.spa.core.instrumentation + +import android.app.settings.SettingsEnums +import android.os.Bundle +import android.util.Log +import com.android.settings.overlay.FeatureFactory.Companion.featureFactory +import com.android.settingslib.spa.framework.common.LOG_DATA_METRICS_CATEGORY +import com.android.settingslib.spa.framework.common.LogCategory +import com.android.settingslib.spa.framework.common.LogEvent +import com.android.settingslib.spa.framework.common.SpaLogger + +/** + * To receive the events from spa framework and logging the these events. + */ +object SpaLogMetricsProvider : SpaLogger { + override fun event(id: String, event: LogEvent, category: LogCategory, extraData: Bundle) { + val metricsFeatureProvider = featureFactory.metricsFeatureProvider + val metricsCategoryOfPage = extraData.getInt(LOG_DATA_METRICS_CATEGORY) + Log.d("SpaLogMetricsProvider", "${event} page ${metricsCategoryOfPage}") + + if (metricsCategoryOfPage == SettingsEnums.PAGE_UNKNOWN) { + return + } + + when (event) { + LogEvent.PAGE_ENTER -> { + metricsFeatureProvider.visible( + null, + SettingsEnums.PAGE_UNKNOWN, + metricsCategoryOfPage, + 0 + ) + } + + LogEvent.PAGE_LEAVE -> { + metricsFeatureProvider.hidden( + null, + metricsCategoryOfPage, + 0 + ) + } + + else -> return + } + } +} diff --git a/src/com/android/settings/spa/network/NetworkCellularGroupProvider.kt b/src/com/android/settings/spa/network/NetworkCellularGroupProvider.kt index 68869d8e903..6afd2ace3fa 100644 --- a/src/com/android/settings/spa/network/NetworkCellularGroupProvider.kt +++ b/src/com/android/settings/spa/network/NetworkCellularGroupProvider.kt @@ -16,6 +16,7 @@ package com.android.settings.spa.network +import android.app.settings.SettingsEnums import android.content.Context import android.content.IntentFilter import android.os.Bundle @@ -77,7 +78,7 @@ import kotlinx.coroutines.withContext */ open class NetworkCellularGroupProvider : SettingsPageProvider { override val name = fileName - + override val metricsCategory = SettingsEnums.MOBILE_NETWORK_LIST private val owner = createSettingsPage() var defaultVoiceSubId: Int = SubscriptionManager.INVALID_SUBSCRIPTION_ID